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
Commentaire de modification :
Import
Résumé
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,0 +1,1 @@ 1 +#if($doc.fullName=='AppWithinMinutes.LiveTableEditSheet')LiveTable Edit Sheet#{else}#evaluate($doc.title)#end - Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +XWiki.Admin - Syntaxe
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki 2. 11 +XWiki 2.0 - Contenu
-
... ... @@ -1,313 +5,178 @@ 1 -{{include reference="XWiki.TemplateProviderMacros" /}} 2 - 3 -{{include reference="AppWithinMinutes.VelocityMacros" /}} 4 - 5 5 {{velocity output="false"}} 6 -#macro (listAvailableColumns $classReference) 2 +#macro(listAvailableColumns) 3 + {{html}} 7 7 <select id="availableColumns"> 8 - #set ($classFields = $xwiki.getDocument($classReference).getxWikiClass().properties) 9 - #if ($classFields.size() > 0) 10 - <optgroup label="$escapetool.xml($services.localization.render( 11 - 'platform.appwithinminutes.liveTableEditorClassFieldColumnGroupLabel'))" id="classFields"> 12 - #foreach ($field in $classFields) 5 + #set($className = "$!liveTableObj.getProperty('class').value") 6 + #set($classFields = $xwiki.getDocument($className).getxWikiClass().properties) 7 + #set($discard = $services.localization.use('document', "$stringtool.removeEnd($className, 'Class')Translations")) 8 + #if($classFields.size() > 0) 9 + <optgroup label="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorClassFieldColumnGroupLabel'))" id="classFields"> 10 + #foreach($field in $classFields) 13 13 <option value="$field.name">$escapetool.xml($field.translatedPrettyName)</option> 14 14 #end 15 15 </optgroup> 16 16 #end 17 - <optgroup label="$escapetool.xml($services.localization.render( 18 - 'platform.appwithinminutes.liveTableEditorGenericColumnGroupLabel'))"> 19 - #foreach ($entry in $genericColumns.entrySet()) 20 - <option value="$entry.key" title="$escapetool.xml($entry.value.get(1))"> 21 - $escapetool.xml($entry.value.get(0)) 22 - </option> 15 + <optgroup label="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorGenericColumnGroupLabel'))"> 16 + #foreach($entry in $genericColumns.entrySet()) 17 + <option value="$entry.key" title="$escapetool.xml($entry.value.get(1))">$escapetool.xml($entry.value.get(0))</option> 23 23 #end 24 24 </optgroup> 25 25 </select> 26 - <a href="#addColumn" class="addColumn" title="$services.localization.render( 27 - 'platform.appwithinminutes.liveTableEditorAddColumnHint')">$services.icon.renderHTML('add')</a> 21 + {{/html}} 28 28 #end 29 29 30 -#macro (displayHelpPanel) 31 - #set ($genericColumns = { 32 - 'doc.title': [ 33 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnName'), 34 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnDescription') 35 - ], 36 - 'doc.name': [ 37 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnName'), 38 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnDescription') 39 - ], 40 - 'doc.location': [ 41 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocLocationColumnName'), 42 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocLocationColumnDescription') 43 - ], 44 - 'doc.author': [ 45 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnName'), 46 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnDescription') 47 - ], 48 - 'doc.creator': [ 49 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnName'), 50 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnDescription') 51 - ], 52 - 'doc.date': [ 53 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnName'), 54 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnDescription') 55 - ], 56 - 'doc.creationDate': [ 57 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnName'), 58 - $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnDescription') 59 - ], 60 - '_actions': [ 61 - $services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnName'), 62 - $services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnDescription') 63 - ], 64 - '_attachments': [ 65 - $services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnName'), 66 - $services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnDescription') 67 - ], 68 - '_images': [ 69 - $services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnName'), 70 - $services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnDescription') 71 - ] 24 +#macro(displayHelpPanel) 25 + #set($genericColumns = { 26 + 'doc.title': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnDescription')], 27 + 'doc.name': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnDescription')], 28 + 'doc.author': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnDescription')], 29 + 'doc.creator': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnDescription')], 30 + 'doc.date': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnDescription')], 31 + 'doc.creationDate': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnDescription')], 32 + '_actions': [$services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnDescription')], 33 + '_attachments': [$services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnDescription')], 34 + '_images': [$services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnDescription')] 72 72 }) 73 - <div class="wizard-help"> 74 - <p> 75 - <strong>$services.localization.render('platform.appwithinminutes.liveTableEditorHelpTitle')</strong> 76 - $services.localization.render('platform.appwithinminutes.liveTableEditorHelpDescription') 77 - </p> 78 - <dl> 79 - #foreach ($columnId in ['doc.title', 'doc.location', 'doc.date', 'doc.author', '_actions']) 80 - <dt>$genericColumns.get($columnId).get(0)</dt> 81 - <dd>$genericColumns.get($columnId).get(1)</dd> 82 - #end 83 - </dl> 84 - </div> 36 + (% class="wizard-help" %) 37 + ((( 38 + **$services.localization.render('platform.appwithinminutes.liveTableEditorHelpTitle')** $services.localization.render('platform.appwithinminutes.liveTableEditorHelpDescription') 39 + 40 + #foreach($columnId in ['doc.name', 'doc.date', 'doc.author', '_actions']) 41 + ; {{{$genericColumns.get($columnId).get(0)}}} 42 + : {{{$genericColumns.get($columnId).get(1)}}} 43 + #end 44 + ))) 85 85 #end 86 86 87 -#macro (displayFormFields) 88 - <div class="hidden"> 47 +#macro(displayFormFields) 48 + {{html wiki="true"}} 49 + (% class="hidden" %) 50 + ((( 89 89 ## Make sure that only the sheet content is rendered when the class is saved using AJAX. 90 90 <input type="hidden" name="xpage" value="plain" /> 91 - ## We prevent the class name and the data space from being edited directly. They can be specified in the URL. 92 - #getAppClassReference($doc) 93 - <input type="hidden" name="AppWithinMinutes.LiveTableClass_0_class" 94 - value="$escapetool.xml($services.model.serialize($classReference, 'local'))" /> 95 - #displayPropertyValue('dataSpace', 'hidden') 53 + ## We prevent the class name from being edited directly. The class name can be specified in the URL. 54 + $doc.display('class', 'hidden') 96 96 ## We have to pass the list of available columns to the JavaScript code. 97 - #listAvailableColumns($classReference) 98 - </div> 99 - <dl> 100 - <dt> 101 - <label for="xwikidoctitleinput">$services.localization.render('core.editors.content.titleField.label')</label> 102 - <span class="xHint">$services.localization.render('platform.appwithinminutes.liveTableEditorTitleHint')</span> 103 - </dt> 104 - <dd><input id="xwikidoctitleinput" type="text" name="title" value="$escapetool.xml($doc.title)"/></dd> 105 - <dt> 106 - <label for="AppWithinMinutes.LiveTableClass_0_description"> 107 - $doc.displayPrettyName('description', false, false) 108 - </label> 109 - <span class="xHint"> 110 - $services.localization.render('platform.appwithinminutes.liveTableEditorDescriptionHint') 111 - </span> 112 - </dt> 113 - <dd>#displayPropertyValue('description')</dd> 114 - <dt> 115 - <label for="AppWithinMinutes.LiveTableClass_0_columns">$doc.displayPrettyName('columns', false, false)</label> 116 - <span class="xHint">$services.localization.render('platform.appwithinminutes.liveTableEditorColumnsHint')</span> 117 - </dt> 118 - <dd>#displayPropertyValue('columns')</dd> 119 - </dl> 56 + #listAvailableColumns() 57 + ))) 58 + ; <label for="AppWithinMinutes.LiveTableClass_0_description">$doc.displayPrettyName('description', false, false)</label>## 59 + (% class="xHint" %)$services.localization.render('platform.appwithinminutes.liveTableEditorDescriptionHint') 60 + : $doc.display('description') 61 + ; <label for="AppWithinMinutes.LiveTableClass_0_columns">$doc.displayPrettyName('columns', false, false)</label>## 62 + (% class="xHint" %)$services.localization.render('platform.appwithinminutes.liveTableEditorColumnsHint') 63 + : $doc.display('columns') 64 + {{/html}} 120 120 #end 121 121 122 -#macro getApplicationIcon$classReference)123 - # set($applicationIcon = '')124 - ##Lookforthecorresponding UI extension.125 - # set($uixPointId='org.xwiki.platform.panels.Applications')126 - #set($uixObject = $doc.getObject('XWiki.UIExtensionClass', 'extensionPointId', $uixPointId))127 - #set($uixId=$uixObject.getValue('name'))128 - # foreach($uix in $services.uix.getExtensions($uixPointId))129 - #if($uix.id==$uixId)130 - # set ($applicationIcon = $uix.parameters.icon)67 +#macro(displayIcon) 68 + #if($services.uix) 69 + #set($icon = 'icon:application') 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 75 + #end 131 131 #end 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}} 132 132 #end 133 - #if ("$!applicationIcon" == '') 134 - ## Fallback on the entry icon. 135 - #set ($templateProviderReference = $services.model.createDocumentReference( 136 - "$stringtool.removeEnd($classReference.name, 'Class')TemplateProvider", 137 - $classReference.parent 138 - )) 139 - #set ($entryIcon = $xwiki.getDocument($templateProviderReference).getValue('icon')) 140 - #if ("$!entryIcon" != '') 141 - #set ($applicationIcon = "icon:$entryIcon") 142 - #else 143 - #set ($applicationIcon = 'icon:application') 144 - #end 145 - #end 146 146 #end 147 147 148 -#macro (displayIcon) 149 - #if ($services.uix) 150 - #getApplicationIcon($classReference) 151 - <dl> 152 - <dt> 153 - <label for="applicationIcon"> 154 - $services.localization.render('platform.appwithinminutes.liveTableEditorIcon') 155 - </label> 156 - <span class="xHint"> 157 - $services.localization.render('platform.appwithinminutes.liveTableEditorIconHintWithPicker', 158 - [$xwiki.getSkinFile('icons/silk/index_abc.png')]) 159 - </span> 160 - </dt> 161 - <dd> 162 - <input id="applicationIcon" name="applicationIcon" type="text" size="10" 163 - value="$!escapetool.xml($applicationIcon)" /> 164 - </dd> 165 - </dl> 166 - #end 167 -#end 86 +#macro(doEdit) 87 + #set($liveTableObj = $doc.getObject('AppWithinMinutes.LiveTableClass', true)) 88 + #set($discard = $doc.use($liveTableObj)) 89 + #set($discard = $xwiki.jsfx.use('js/scriptaculous/dragdrop.js')) 90 + #set($discard = $xwiki.ssx.use('AppWithinMinutes.LiveTableEditSheet')) 91 + #set($discard = $xwiki.jsx.use('AppWithinMinutes.LiveTableEditSheet')) 92 + #if("$!request.wizard" == 'true') 93 + #appWizardHeader(3) 168 168 169 -#macro (doEdit) 170 - {{html clean="false"}} 171 - #set ($liveTableObj = $doc.getObject('AppWithinMinutes.LiveTableClass', true)) 172 - #set ($discard = $doc.use($liveTableObj)) 173 - #set ($discard = $xwiki.jsfx.use('js/scriptaculous/effects.js')) 174 - #set ($discard = $xwiki.jsfx.use('js/scriptaculous/dragdrop.js')) 175 - #set ($discard = $xwiki.ssx.use('AppWithinMinutes.LiveTableEditSheet')) 176 - #set ($discard = $xwiki.jsx.use('AppWithinMinutes.LiveTableEditSheet')) 177 - #if ("$!request.wizard" == 'true') 178 - #appWizardHeader('presentation') 179 179 #end 180 180 #displayHelpPanel() 181 - <div class="form-body"> 97 + (% class="form-body" %) 98 + ((( 182 182 #displayFormFields() 100 + 183 183 #displayIcon() 184 - #if ("$!request.wizard" == 'true') 185 - #appWizardFooter('presentation') 186 - #end 187 - </div> 188 - <div class="clearfloats"></div> 189 - {{/html}} 190 190 191 - {{iconPicker id="applicationIcon" prefix="icon:" /}} 103 + #if("$!request.wizard" == 'true') 104 + 105 + #appWizardFooter(3) 106 + #end 107 + ))) 108 + {{html}}<div class="clearfloats"></div>{{/html}} 192 192 #end 193 193 194 -#macro (maybeGrantSpaceAdminRight $spaceRef) 195 - ## Grant space administration rights only if the space is new. Don't overwrite existing space preferences. 196 - #set ($spaceHomeRef = $services.model.resolveDocument('', 'default', $spaceRef)) 197 - #set ($spacePrefsRef = $services.model.resolveDocument('WebPreferences', 'explicit', $spaceRef)) 198 - #if (!$xwiki.exists($spaceHomeRef) && !$xwiki.exists($spacePrefsRef)) 199 - #set ($spacePrefsDoc = $xwiki.getDocument($spacePrefsRef)) 200 - #set ($discard = $spacePrefsDoc.use($spacePrefsDoc.getObject('XWiki.XWikiGlobalRights', true))) 201 - #set ($discard = $spacePrefsDoc.set('allow', 1)) 202 - #set ($discard = $spacePrefsDoc.set('levels', 'admin')) 203 - #set ($discard = $spacePrefsDoc.set('users', $services.model.serialize($xcontext.userReference, 'default'))) 204 - #set ($discard = $spacePrefsDoc.setTitle('$services.localization.render(''admin.preferences.title'')')) 205 - #set ($discard = $spacePrefsDoc.setParent($services.model.serialize($spaceHomeRef, 'default'))) 206 - #set ($discard = $spacePrefsDoc.setHidden(true)) 207 - #set ($discard = $spacePrefsDoc.saveWithProgrammingRights($services.localization.render( 208 - 'platform.appwithinminutes.grantSpaceAdminRightsSaveComment'))) 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 209 209 #end 210 210 #end 211 211 212 -#macro (maybeGrantSpaceAdminRights) 213 - ## Application space 214 - #set ($appReference = $doc.documentReference.parent) 215 - #maybeGrantSpaceAdminRight($appReference) 216 - ## Code space (if it's not nested inside the application space) 217 - #set ($className = $request.get('AppWithinMinutes.LiveTableClass_0_class')) 218 - #set ($classReference = $services.model.resolveDocument($className)) 219 - #if (!$classReference.hasParent($appReference)) 220 - #maybeGrantSpaceAdminRight($classReference.parent) 130 +#macro(updateAndSaveLiveTable) 131 + #set($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass')) 132 + #set($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator')) 133 + #set($discard = $doc.setContent($doc.getRenderedContent($liveTableGeneratorDoc.content, $liveTableGeneratorDoc.syntax.toIdString(), 'plain/1.0'))) 134 + #set($minorEdit = "$!request.minorEdit" != '') 135 + #set($comment = $request.comment) 136 + #if("$!comment" == '') 137 + #set($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment')) 221 221 #end 139 + #set($discard = $doc.save($comment, $minorEdit)) 222 222 #end 223 223 224 -#macro (updateAndSaveLiveTable) 225 - #set ($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass')) 226 - #set ($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator')) 227 - 228 - ## Generate the LiveTable by displaying the LiveTableGenerator document in the context of the current document. 229 - #set ($displayParameters = $services.display.createDocumentDisplayerParameters()) 230 - #set ($discard = $displayParameters.setExecutionContextIsolated(false)) 231 - #set ($discard = $displayParameters.setContentTranslated(true)) 232 - #set ($generatedLiveTableContent = $services.display.content($liveTableGeneratorDoc, { 233 - 'outputSyntaxId': 'plain/1.0', 234 - 'displayerParameters': $displayParameters 235 - })) 236 - 237 - ## Use the generated LiveTable content for the data home page. 238 - #set ($dataSpaceReference = $services.model.resolveSpace($doc.getValue('dataSpace'))) 239 - #set ($dataSpaceHomeReference = $services.model.resolveDocument('', 'default', $dataSpaceReference)) 240 - #if ($dataSpaceHomeReference.equals($doc.documentReference) || !$xwiki.exists($dataSpaceHomeReference)) 241 - ## Either the application space and the data space are one and the same or this is a new application and we don't 242 - ## want to promote the data space anymore. 243 - #set ($dataHomePage = $doc) 244 - #else 245 - ## The application data is stored in a different space. 246 - #set ($dataHomePage = $xwiki.getDocument($dataSpaceHomeReference)) 247 - #set ($discard = $dataHomePage.setHidden(true)) 248 - #set ($escapedAppName = $doc.documentReference.parent.name.toLowerCase().replace("'", "''")) 249 - #set ($discard = $dataHomePage.setTitle("${escapetool.d}services.localization.render('${escapedAppName}.dataSpace.title')")) 250 - 251 - ## Update the home page content. 252 - #set ($homePageContent = '') 253 - #if ("$!generatedLiveTableContent" != '') 254 - ## Include the entries live table in the application home page. 255 - #set ($escapedReference = $services.model.serialize($dataSpaceHomeReference).replaceAll('([~"])', '~$1')) 256 - #set ($homePageContent = "{{include reference=""$escapedReference"" /}}") 257 - #end 258 - #set ($discard = $doc.setContent($homePageContent)) 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'))) 259 259 #end 260 - #set ($discard = $dataHomePage.setContent($generatedLiveTableContent)) 261 - ## We assume for now that the output produced by the live table generator uses the same syntax as the code of the live 262 - ## table generator. We have to set the syntax because the default wiki syntax (used when creating new wiki pages) 263 - ## could be different than the one used by the live table generator. 264 - #set ($discard = $dataHomePage.setSyntax($liveTableGeneratorDoc.syntax)) 265 - 266 - #set ($minorEdit = "$!request.minorEdit" != '') 267 - #set ($comment = $request.comment) 268 - #if ("$!comment" == '') 269 - #set ($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment')) 270 - #end 271 - 272 - #if ($dataHomePage != $doc) 273 - ## Save the data home page. 274 - #set ($discard = $dataHomePage.save($comment, $minorEdit)) 275 - #end 276 - 277 - ## Save the application home page. 278 - #set ($discard = $doc.save($comment, $minorEdit)) 279 279 #end 280 280 281 -#macro (updateAndSaveIcon) 282 - #set ($uix = $doc.getObject('XWiki.UIExtensionClass', true)) 283 - #set ($discard = $uix.set('name', "platform.panels.${doc.space}Application")) 284 - #set ($discard = $uix.set('extensionPointId', 'org.xwiki.platform.panels.Applications')) 285 - #set ($uixParams = [ 286 - "label=$doc.plainTitle", 287 - "target=$doc.fullName", 288 - "icon=$request.applicationIcon" 289 - ]) 290 - #set ($discard = $uix.set('parameters', $stringtool.join($uixParams, $util.newline))) 291 - #set ($hasWikiAdminRights = $services.security.authorization.hasAccess('admin', $doc.documentReference.wikiReference)) 292 - #set ($discard = $uix.set('scope', "#if ($hasWikiAdminRights)wiki#{else}user#end")) 293 - #set ($discard = $doc.save('Updated application icon', true)) 154 +#macro(updateAndSaveIcon) 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}")) 159 + #set($discard = $doc.save('Updated application icon', true)) 294 294 #end 295 295 296 -#macro 162 +#macro(doSave) 297 297 #maybeGrantSpaceAdminRights() 298 298 #updateAndSaveLiveTable() 165 + #maybeCreateLiveTableResultsPage() 299 299 #updateAndSaveIcon() 300 - #if ($action == 'save') 301 - #if ($errorMessage) 302 - {{html clean="false"}} 303 - <div class="box errormessage">$errorMessage</div> 304 - {{/html}} 167 + #if($action == 'save') 168 + #if($errorMessage) 169 + {{error}}{{html}}$errorMessage{{/html}}{{/error}} 305 305 #else 306 306 ## Redirect to view mode. 307 307 $response.sendRedirect($doc.getURL()) 308 308 #end 309 309 #else 310 - #if 175 + #if($errorMessage) 311 311 $response.sendError(400, $errorMessage) 312 312 #else 313 313 $response.setStatus(204) ... ... @@ -317,27 +317,27 @@ 317 317 {{/velocity}} 318 318 319 319 {{velocity}} 320 -#if 321 - {{include reference="AppWithinMinutes.WizardStep" /}}185 +#if("$!request.wizard" == 'true') 186 + {{include document="AppWithinMinutes.WizardStep" /}} 322 322 #end 323 323 {{/velocity}} 324 324 325 325 {{velocity}} 326 326 ## Determine the action button that triggered the request 327 -#set xcontext.action)328 -#foreach 329 - #if 330 - #set 192 +#set($action = $context.action) 193 +#foreach($paramName in $request.getParameterMap().keySet()) 194 + #if($paramName.startsWith('xaction_')) 195 + #set($action = $paramName.substring(8)) 331 331 #break 332 332 #end 333 333 #end 334 -#if 199 +#if($action == 'edit') 335 335 #doEdit() 336 -#elseif 337 - #if 201 +#elseif($action == 'save' || $action == 'saveandcontinue') 202 + #if($services.csrf.isTokenValid($request.form_token)) 338 338 #doSave() 339 339 #else 340 - $response.sendRedirect($services.csrf.getResubmissionURL()) 205 + $response.sendRedirect($services.csrf.getResubmissionURL()); 341 341 #end 342 342 #end 343 343 {{/velocity}}
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -61,7 +61,7 @@ 61 61 this.columnsSelect = $('availableColumns'); 62 62 this.columnsSelect.selectedIndex = -1; 63 63 64 - var addButton = t his.columnsSelect.next('a.addColumn');64 + var addButton = new Element('input', {type: 'image', src: '$xwiki.getSkinFile('icons/silk/add.png')', alt: '$escapetool.javascript($services.localization.render('platform.appwithinminutes.liveTableEditorAddColumnHint'))'}); 65 65 addButton.observe('click', this._onAddColumn.bindAsEventListener(this)); 66 66 67 67 var picker = new Element('div', {'class': 'columnPicker'}).insert(this.columnsSelect).insert(addButton); ... ... @@ -126,16 +126,16 @@ 126 126 if (!form) { 127 127 return false; 128 128 } 129 - // Let the sheet handle the form submit. The form is submitted by default to the preview action which dispatches the130 - // requestto thesave actionifthe savebuttonisdetectedonthe requestparameters.Bysubmittingtothedit131 - // action the edit sheetsevaluatedandthusitcanhandlethesavebyitself.132 - form.action = XWiki.currentDocument.getURL('edit');129 + // Let the sheet handle the form submit. 130 + // NOTE: The code that handles Save&Continue uses this URL to make the AJAX request and Firefox 3.6 doesn't resolve 131 + // the empty string to the current page URL so we have to explicitly specify it. 132 + form.action = window.location.href; 133 133 134 134 // Apply the vertical form layout standard. 135 135 form.addClassName('xform'); 136 136 137 137 // Remove the preview button. 138 - form.down("input[name='action_preview']").remove(); 138 + form.down("input[name='action_preview']").up().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,7 +3,6 @@ 3 3 font-size: 90%; 4 4 list-style: none outside none; 5 5 margin: 0; 6 - padding: 0; 7 7 } 8 8 9 9 #inline .hList li { ... ... @@ -52,9 +52,9 @@ 52 52 width: auto; 53 53 } 54 54 55 -.columnPicker a.addColumn{56 - margin: 0 .5em;57 - padding:0;54 +.columnPicker input[type=image] { 55 + margin-left: 2px; 56 + vertical-align: text-bottom; 58 58 } 59 59 60 60 .form-body {