Your suggestions sounds good (but may be you should have used
$util.clearName() for cleaning names). Anyway, you should create a JIRA
issue at
under officeimporter component and attach your
suggestions as a patch. I'll review the patch and apply it.
Thanks.
- Asiri
On Tue, May 11, 2010 at 1:45 AM, Wouter Boasson <Wouter.Boasson(a)rivm.nl>wrote;wrote:
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
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users