Dear reader,
Version: XWiki/XE 2.2.4
I gave the Office importer some treatment to make it work conform expectations. Maybe
interesting for others?
Whats weird is, that in IE7 it proposes an ugly document name, something like: c-fakepath
etc. So I modified XWiki.OfficeImporterResults to strip everything in front of the actual
documentname:
#set($fileName=$fileUpload.getFileName("filePath").replaceAll("^.*[\\]",""))
Then, I added a check for an empty spacename (otherwise you'll end-up with a document
in the XWiki space, which is probably not what you want), and also strip any considered
'dangerous' character from the documentname (such as &^@, accents, etc):
###########################
## Validate Target Space ##
###########################
#if(! $request.targetSpace)
{{error}}$msg.get("xe.officeimporter.results.missingspace",
[$goBack]){{/error}}
#else
#if( $request.targetSpace == "" )
{{error}}$msg.get("xe.officeimporter.results.missingspace",
[$goBack]){{/error}}
#else
## #set($targetSpace=$request.targetSpace.replaceAll("[:/&=+?#]",
"-"))
##
#set($targetSpace=$request.targetSpace.replaceAll("[^a-zA-Z0-9-_~]","_").replaceAll("
\\.\\/", "").replaceAll('"',""))
#set($targetSpace=$request.targetSpace.replaceAll(" \\.\\/",
"").replaceAll("[\=\&\(a)'\\/()]","-").replaceAll('"',"").replaceAll("[^a-zA-Z0-9-_~]","_"))
#end
#end
##########################
## Validate Target Page ##
##########################
#if(! $request.targetPage)
{{error}}$msg.get("xe.officeimporter.results.missingpage",
[$goBack]){{/error}}
#else
## #set($targetPage=$request.targetPage)
##
#set($targetPage=$request.targetPage.replaceAll("[^a-zA-Z0-9-_~]","_").replaceAll("/",
"-").replaceAll('"',""))
#set($targetPage=$request.targetPage.replaceAll("[\=\&\@'\\/()]",
"-").replaceAll('"',"").replaceAll("[^a-zA-Z0-9-_~]","_"))
#end
Finally, I did not want to present the menu option at all for users who have no rights to
create documents:
In: templates/menuview.vm
## #if($canImport) (original)
#if($canImport && $hasCreatePage)
#submenuitem($xwiki.getURL('XWiki.OfficeImporter', 'view')
$msg.get('core.menu.create.pageFromOffice') 'tmActionImport')
#end
More of this to follow, hopefully useful for others!
Regards,
Wouter