Modifications pour le document LiveTableEditSheet
Modifié par superadmin le 2021/12/12 21:57
modifié par Administrator
sur 2013/06/04 10:06
sur 2013/06/04 10:06
modifié par Paul Libbrecht (admin)
sur 2016/07/26 22:02
sur 2016/07/26 22:02
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-appwithinminutes-ui-8.2]
Résumé
Détails
- Propriétés de la Page
-
- Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. Admin1 +XWiki.adminPolx - Contenu
-
... ... @@ -2,9 +2,8 @@ 2 2 #macro(listAvailableColumns) 3 3 {{html}} 4 4 <select id="availableColumns"> 5 - #set($className = "$!liveTableObj.get Property('class').value")5 + #set($className = "$!liveTableObj.getValue('class')") 6 6 #set($classFields = $xwiki.getDocument($className).getxWikiClass().properties) 7 - #set($discard = $services.localization.use('document', "$stringtool.removeEnd($className, 'Class')Translations")) 8 8 #if($classFields.size() > 0) 9 9 <optgroup label="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorClassFieldColumnGroupLabel'))" id="classFields"> 10 10 #foreach($field in $classFields) ... ... @@ -50,8 +50,9 @@ 50 50 ((( 51 51 ## Make sure that only the sheet content is rendered when the class is saved using AJAX. 52 52 <input type="hidden" name="xpage" value="plain" /> 53 - ## We prevent the class name from being edited directly. The c lassnamecanbe specified in the URL.52 + ## We prevent the class name and the data space from being edited directly. They can be specified in the URL. 54 54 $doc.display('class', 'hidden') 54 + $doc.display('class', 'dataSpace') 55 55 ## We have to pass the list of available columns to the JavaScript code. 56 56 #listAvailableColumns() 57 57 ))) ... ... @@ -68,18 +68,18 @@ 68 68 #if($services.uix) 69 69 #set($icon = 'icon:application') 70 70 #foreach($uix in $services.uix.getExtensions('org.xwiki.platform.panels.Applications')) 71 - #if($uix.getId() == "platform.panels.${doc.space}Application") 72 - #if("$!uix.getParameters().get('icon')" != '') 73 - #set($icon = $uix.getParameters().get('icon')) 74 - #end 71 + #if($uix.getId() == "platform.panels.${doc.space}Application" && "$!uix.getParameters().get('icon')" != '') 72 + #set($icon = $uix.getParameters().get('icon')) 75 75 #end 76 76 #end 77 77 {{html wiki="true"}} 78 - ## The icon 79 - ; <label for="applicationIcon">$services.localization.render('platform.appwithinminutes.liveTableEditorIcon')</label> 80 - (% class="xHint" %)$services.localization.render('platform.appwithinminutes.liveTableEditorIconHint', $xwiki.getSkinFile('icons/silk/index_abc.png')) 81 - : <input id="applicationIcon" name="applicationIcon" type="text" size="10" value="$!icon" /> 82 - {{/html}} 76 + ; <label for="applicationIcon">$services.localization.render('platform.appwithinminutes.liveTableEditorIcon')</label> 77 + (% class="xHint" %)$services.localization.render('platform.appwithinminutes.liveTableEditorIconHintWithPicker', 78 + [$xwiki.getSkinFile('icons/silk/index_abc.png')]) 79 + : <input id="applicationIcon" name="applicationIcon" type="text" size="10" value="$!escapetool.xml($icon)" /> 80 + {{/html}} 81 + 82 + {{iconPicker id="applicationIcon" prefix="icon:" /}} 83 83 #end 84 84 #end 85 85 ... ... @@ -108,54 +108,93 @@ 108 108 {{html}}<div class="clearfloats"></div>{{/html}} 109 109 #end 110 110 111 -#macro(maybeGrantSpaceAdminRights) 112 - #set($spaceHomeRef = $services.model.createDocumentReference($doc.wiki, $doc.space, 'WebHome')) 113 - ## Grant space administration rights only if the space is new. 114 - #if(!$xwiki.exists($spaceHomeRef)) 115 - #set($spacePrefsRef = $services.model.createDocumentReference($doc.wiki, $doc.space, 'WebPreferences')) 116 - #set($spacePrefsDoc = $xwiki.getDocument($spacePrefsRef)) 117 - ## Don't overwrite existing space preferences. 118 - #if($spacePrefsDoc.isNew()) 119 - #set($discard = $spacePrefsDoc.use($spacePrefsDoc.getObject('XWiki.XWikiGlobalRights', true))) 120 - #set($discard = $spacePrefsDoc.set('allow', 1)) 121 - #set($discard = $spacePrefsDoc.set('levels', 'admin')) 122 - #set($discard = $spacePrefsDoc.set('users', $services.model.serialize($xcontext.userReference, 'default'))) 123 - #set($discard = $spacePrefsDoc.setParent($services.model.serialize($spaceHomeRef, 'default'))) 124 - #set($discard = $spacePrefsDoc.setHidden(true)) 125 - #set($discard = $spacePrefsDoc.saveWithProgrammingRights($services.localization.render('platform.appwithinminutes.grantSpaceAdminRightsSaveComment'))) 126 - #end 111 +#macro (maybeGrantSpaceAdminRight $spaceRef) 112 + ## Grant space administration rights only if the space is new. Don't overwrite existing space preferences. 113 + #set ($spaceHomeRef = $services.model.resolveDocument('', 'default', $spaceRef)) 114 + #set ($spacePrefsRef = $services.model.resolveDocument('WebPreferences', 'explicit', $spaceRef)) 115 + #if (!$xwiki.exists($spaceHomeRef) && !$xwiki.exists($spacePrefsRef)) 116 + #set ($spacePrefsDoc = $xwiki.getDocument($spacePrefsRef)) 117 + #set ($discard = $spacePrefsDoc.use($spacePrefsDoc.getObject('XWiki.XWikiGlobalRights', true))) 118 + #set ($discard = $spacePrefsDoc.set('allow', 1)) 119 + #set ($discard = $spacePrefsDoc.set('levels', 'admin')) 120 + #set ($discard = $spacePrefsDoc.set('users', $services.model.serialize($xcontext.userReference, 'default'))) 121 + #set ($discard = $spacePrefsDoc.setTitle('$services.localization.render(''admin.preferences.title'')')) 122 + #set ($discard = $spacePrefsDoc.setParent($services.model.serialize($spaceHomeRef, 'default'))) 123 + #set ($discard = $spacePrefsDoc.setHidden(true)) 124 + #set ($discard = $spacePrefsDoc.saveWithProgrammingRights($services.localization.render( 125 + 'platform.appwithinminutes.grantSpaceAdminRightsSaveComment'))) 127 127 #end 128 128 #end 129 129 129 +#macro (maybeGrantSpaceAdminRights) 130 + ## Application space 131 + #set ($appReference = $doc.documentReference.parent) 132 + #maybeGrantSpaceAdminRight($appReference) 133 + ## Code space (if it's not nested inside the application space) 134 + #set ($className = $request.get('AppWithinMinutes.LiveTableClass_0_class')) 135 + #set ($classReference = $services.model.resolveDocument($className)) 136 + #if (!$classReference.hasParent($appReference)) 137 + #maybeGrantSpaceAdminRight($classReference.parent) 138 + #end 139 +#end 140 + 130 130 #macro(updateAndSaveLiveTable) 131 131 #set($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass')) 132 132 #set($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator')) 133 - #set($discard = $doc.setContent($doc.getRenderedContent($liveTableGeneratorDoc.content, $liveTableGeneratorDoc.syntax.toIdString(), 'plain/1.0'))) 144 + 145 + ## Generate the LiveTable by displaying the LiveTableGenerator document in the context of the current document. 146 + #set ($displayParameters = $services.display.createDocumentDisplayerParameters()) 147 + #set ($discard = $displayParameters.setExecutionContextIsolated(false)) 148 + #set ($discard = $displayParameters.setContentTranslated(true)) 149 + #set ($generatedLiveTableContent = $services.display.content($liveTableGeneratorDoc, { 'outputSyntaxId' : 'plain/1.0', 'displayerParameters' : $displayParameters })) 150 + 151 + ## Use the generated LiveTable content for the data home page. 152 + #set ($dataSpaceReference = $services.model.resolveSpace($doc.getValue('dataSpace'))) 153 + #set ($dataSpaceHomeReference = $services.model.resolveDocument('', 'default', $dataSpaceReference)) 154 + #if ($dataSpaceHomeReference.equals($doc.documentReference)) 155 + ## The application space and the data space are one and the same. 156 + #set ($dataHomePage = $doc) 157 + #else 158 + ## The application data is stored in a different space. 159 + #set ($dataHomePage = $xwiki.getDocument($dataSpaceHomeReference)) 160 + #set ($discard = $dataHomePage.setHidden(true)) 161 + #set ($escapedAppName = $doc.documentReference.parent.name.toLowerCase().replace("'", "''")) 162 + #set ($discard = $dataHomePage.setTitle("${escapetool.d}services.localization.render('${escapedAppName}.dataSpace.title')")) 163 + 164 + ## Update the home page content. 165 + #set ($homePageContent = '') 166 + #if ("$!generatedLiveTableContent" != '') 167 + ## Include the entries live table in the application home page. 168 + #set ($escapedReference = $services.model.serialize($dataSpaceHomeReference).replaceAll('([~"])', '~$1')) 169 + #set ($homePageContent = "{{include reference=""$escapedReference"" /}}") 170 + #end 171 + #set ($discard = $doc.setContent($homePageContent)) 172 + #end 173 + #set ($discard = $dataHomePage.setContent($generatedLiveTableContent)) 174 + 134 134 #set($minorEdit = "$!request.minorEdit" != '') 135 135 #set($comment = $request.comment) 136 136 #if("$!comment" == '') 137 137 #set($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment')) 138 138 #end 139 - #set($discard = $doc.save($comment, $minorEdit)) 140 -#end 141 141 142 -#macro(maybeCreateLiveTableResultsPage) 143 - #set ($className = "$!doc.getObject('AppWithinMinutes.LiveTableClass').getProperty('class').value") 144 - #set ($liveTableResultsDoc = $xwiki.getDocument("$!stringtool.removeEnd($className, 'Class')LiveTableResults")) 145 - #set ($liveTableResultsGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableResultsGenerator')) 146 - #if ($liveTableResultsDoc.isNew()) 147 - #set ($discard = $liveTableResultsDoc.setParent($doc.name)) 148 - #set ($discard = $liveTableResultsDoc.setHidden(true)) 149 - #set ($discard = $liveTableResultsDoc.setContent($doc.getRenderedContent($liveTableResultsGeneratorDoc.content, $liveTableResultsGeneratorDoc.syntax.toIdString(), 'plain/1.0'))) 150 - #set ($discard = $liveTableResultsDoc.save($services.localization.render('platform.appwithinminutes.liveTableEditorCreateLiveTableResultsComment'))) 181 + #if ($dataHomePage != $doc) 182 + ## Save the data home page. 183 + #set ($discard = $dataHomePage.save($comment, $minorEdit)) 151 151 #end 185 + 186 + ## Save the application home page. 187 + #set($discard = $doc.save($comment, $minorEdit)) 152 152 #end 153 153 154 154 #macro(updateAndSaveIcon) 155 155 #set($uix = $doc.getObject('XWiki.UIExtensionClass', true)) 156 - #set($discard = $uix.set('name', "platform.panels.${doc.space}Application")) 157 - #set($discard = $uix.set('extensionPointId', "org.xwiki.platform.panels.Applications")) 158 - #set($discard = $uix.set('parameters', "label=${doc.space}${util.newline}target=${doc.fullName}${util.newline}icon=${request.applicationIcon}")) 192 + #set($appName = $doc.documentReference.parent.name) 193 + #set($discard = $uix.set('name', "platform.panels.${appName}Application")) 194 + #set($discard = $uix.set('extensionPointId', 'org.xwiki.platform.panels.Applications')) 195 + #set($discard = $uix.set('parameters', "label=${appName}${util.newline}target=${doc.fullName}${util.newline}icon=${request.applicationIcon}")) 196 + #set ($hasWikiAdminRights = $services.security.authorization.hasAccess('admin', $doc.documentReference.wikiReference)) 197 + #set($discard = $uix.set('scope', "#if ($hasWikiAdminRights)wiki#{else}user#end")) 159 159 #set($discard = $doc.save('Updated application icon', true)) 160 160 #end 161 161 ... ... @@ -162,7 +162,6 @@ 162 162 #macro(doSave) 163 163 #maybeGrantSpaceAdminRights() 164 164 #updateAndSaveLiveTable() 165 - #maybeCreateLiveTableResultsPage() 166 166 #updateAndSaveIcon() 167 167 #if($action == 'save') 168 168 #if($errorMessage) ... ... @@ -183,13 +183,13 @@ 183 183 184 184 {{velocity}} 185 185 #if("$!request.wizard" == 'true') 186 - {{include document="AppWithinMinutes.WizardStep" /}}224 + {{include reference="AppWithinMinutes.WizardStep" /}} 187 187 #end 188 188 {{/velocity}} 189 189 190 190 {{velocity}} 191 191 ## Determine the action button that triggered the request 192 -#set($action = $context.action) 230 +#set($action = $xcontext.action) 193 193 #foreach($paramName in $request.getParameterMap().keySet()) 194 194 #if($paramName.startsWith('xaction_')) 195 195 #set($action = $paramName.substring(8))
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -135,7 +135,7 @@ 135 135 form.addClassName('xform'); 136 136 137 137 // Remove the preview button. 138 - form.down("input[name='action_preview']"). up().remove();138 + form.down("input[name='action_preview']").remove(); 139 139 140 140 // Rename the save buttons. 141 141 form.down("input[name='action_save']").name = 'xaction_save';
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -3,6 +3,7 @@ 3 3 font-size: 90%; 4 4 list-style: none outside none; 5 5 margin: 0; 6 + padding: 0; 6 6 } 7 7 8 8 #inline .hList li { ... ... @@ -52,7 +52,8 @@ 52 52 } 53 53 54 54 .columnPicker input[type=image] { 55 - margin-left: 2px; 56 + margin: 0 .5em; 57 + padding: 0; 56 56 vertical-align: text-bottom; 57 57 } 58 58