> > I create MyClass/Sheet/Template and in > another AnotherClass I add a Page type property with: > > - Display Type : select > > - XWiki Class Name: MyClass > > - Id Field Name: doc.fullName > > - Value Field Name : doc.name > > > > My purpose is to > display a list of page (with MyClass object): this point is > working well but ... > > > > > I want that the user > select in my select list: one page OR nothing. > ... > in > order to add this item to a Page > (actually DatabaseList) property you > have to > write a custom displayer. Another solution may be to create
Here I created a nice custom displayer in MyClass: Property type: Page (or database list) It's filtered hidden doc and add one Empty entry in select list. - Display Type : select Hibernate Query (to filter hidden doc because http://jira.xwiki.org/browse/XWIKI-12031 issue): select distinct doc.name from XWikiDocument as doc, BaseObject as obj where doc.fullName=obj.name and obj.className='FormSMQ.EAClass' and doc.space='FormSMQ' and doc.hidden=false Custom Display: {{velocity}} #if ($type == 'edit') #set($MyClass=$object.getxWikiClass()) #set($list=$MyClass.get($name).getListValues()) #set ($MySelectList="<select id='" + "${prefix}_${name}" + "' size='1' name='" + $prefix + ${name} + "'>") #set ($Selected="") #if ($!value=='') #set ($Selected=" selected='selected'") #end #set ($MySelectList=$MySelectList + "<option value=''" + $!Selected + " label='" + $services.localization.render('FormSMQ.PiacJ2Class.Empty') + "'>" + $services.localization.render('FormSMQ.PiacJ2Class.Empty') + "</option>") #foreach($listitem in $list) #if ($listitem==$value) #set ($Selected=" selected='selected'") #else #set ($Selected="") #end #set ($MySelectList=$MySelectList + "<option value='" + $listitem + "'" + $!Selected + " label='" + $listitem + "'>" + $listitem + "</option>") #end #set ($MySelectList=$MySelectList + "</select>") #set ($MySelectList=$MySelectList + "<input type='hidden' value='' name='" + ${prefix} + ${name} +"'>") {{html clean=false}} $MySelectList {{/html}} #elseif (($type == 'view') && ($!value!='')) [[$value]] #else $value #end {{/velocity}} Use $object.getxWikiClass().get($name).getMapValues() with XWiki Class Name: MyClass +Id Field Name: doc.fullName + Value Field Name : doc.name First I used this awfull code (to forget of course): #if ($type == 'edit') #set ($propertyClass = $object.getxWikiClass().get($name)) #set ($MySelectList = $doc.displayEdit($propertyClass, $prefix, $object)) #set ($Empty=$services.localization.render('FormSMQ.PiacJ2Class.Empty')) #if ($!value!='') ## if not empty, add "Empty" "option value" #set($EmptyValueAdded='<option value="" label=' + $Empty + '>' + $Empty + '</option><option value=') #set ($MySelectList = $stringtool.replaceOnce($MySelectList, '<option value=', $EmptyValueAdded)) #else ## if empty, add SELECTED "Empty" "option value" #set($EmptyValueAdded="<option selected='selected' value='' label='" + $Empty + "'>" + $Empty + "</option>") #set ($MySelectList = $stringtool.replaceOnce($MySelectList, "<option selected='selected' value='' label=''></option>", $EmptyValueAdded)) #end Thxs for your help. Pascal B _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
