Hi, here’s something interesting to note :
Let’s say I have an app created with AWM called procedures and this app has a property called EQUIPE which is a Static List with Display Type ‘select’.
If you edit the class procedures.Code.proceduresClass, under the EQUIPE settings, you’ll find a field “Custom Display”. The usual way to use this field is by adding something like this
{{velocity}}
#if ($type == 'view')
$value
#elseif ($type == 'edit')
[...]
#end
{{/velocity}}
i tried to put something in it without any condition (some code I found here. Here’s what I put in the field first :
#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('Space.DocWith_XWiki.TranslationDocumentClass_Object.Empty') + "'>" + $services.localization.render('Space.DocWith_XWiki.TranslationDocumentClass_Object.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
#end
As a result, every document in my app now has a drop-down list displayed all the time, even in view mode. here’s what it looks like :
Now I can click the “Edit” button, chose something in the drop-down list, save it as a change request, approve the request and it will effectively modify the page.
The thing is, if i add a condition to my “Custom Display” field, like this :
{{velocity}}
#if ($type == 'view')
$value
#else
#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('Space.DocWith_XWiki.TranslationDocumentClass_Object.Empty') + "'>" + $services.localization.render('Space.DocWith_XWiki.TranslationDocumentClass_Object.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
#end
{{/velocity}}
Then the behavior becomes the same as if I had left the field empty → I can never edit the property, because I am considered to be in “view” mode even after clicking the “Edit” button. With an admin account though, I get the drop-down list as expected.
So :
- As an admin, I enter edit mode after clicking “Edit”. This can be seen is a URL showing “…/xwiki/bin/edit/…”
- As a user, I stay in view mode after clicking “Edit”, but the URL show “…/xwiki/bin/editcr/…”
I don’t know if it helps, but I thought it was worth sharing.