Modifications pour le document LiveTableEditSheet
Modifié par superadmin le 2021/12/12 21:57
<
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/13.10]
Résumé
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,0 @@ 1 -#if($doc.fullName=='AppWithinMinutes.LiveTableEditSheet')LiveTable Edit Sheet#{else}#evaluate($doc.title)#end - Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.admin Polx1 +XWiki.superadmin - Syntaxe
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki 2. 01 +XWiki 2.1 - Contenu
-
... ... @@ -1,111 +1,194 @@ 1 +{{include reference="XWiki.TemplateProviderMacros" /}} 2 + 3 +{{include reference="AppWithinMinutes.VelocityMacros" /}} 4 + 1 1 {{velocity output="false"}} 2 -#macro(listAvailableColumns) 3 - {{html}} 6 +#macro (listAvailableColumns $classReference) 4 4 <select id="availableColumns"> 5 - #set($class Name ="$!liveTableObj.getValue('class')")6 - # set($classFields= $xwiki.getDocument($className).getxWikiClass().properties)7 - #if($classFields.size() > 0)8 - <optgrouplabel="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorClassFieldColumnGroupLabel'))" id="classFields">9 - #foreach($field in $classFields) 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) 10 10 <option value="$field.name">$escapetool.xml($field.translatedPrettyName)</option> 11 11 #end 12 12 </optgroup> 13 13 #end 14 - <optgroup label="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorGenericColumnGroupLabel'))"> 15 - #foreach($entry in $genericColumns.entrySet()) 16 - <option value="$entry.key" title="$escapetool.xml($entry.value.get(1))">$escapetool.xml($entry.value.get(0))</option> 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> 17 17 #end 18 18 </optgroup> 19 19 </select> 20 - {{/html}} 26 + <a href="#addColumn" class="addColumn" title="$services.localization.render( 27 + 'platform.appwithinminutes.liveTableEditorAddColumnHint')">$services.icon.renderHTML('add')</a> 21 21 #end 22 22 23 -#macro(displayHelpPanel) 24 - #set($genericColumns = { 25 - 'doc.title': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocTitleColumnDescription')], 26 - 'doc.name': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocNameColumnDescription')], 27 - 'doc.author': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocAuthorColumnDescription')], 28 - 'doc.creator': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreatorColumnDescription')], 29 - 'doc.date': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocDateColumnDescription')], 30 - 'doc.creationDate': [$services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorDocCreationDateColumnDescription')], 31 - '_actions': [$services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorActionsColumnDescription')], 32 - '_attachments': [$services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorAttachmentsColumnDescription')], 33 - '_images': [$services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnName'), $services.localization.render('platform.appwithinminutes.liveTableEditorImagesColumnDescription')] 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 + ] 34 34 }) 35 - (% class="wizard-help" %) 36 - ((( 37 - **$services.localization.render('platform.appwithinminutes.liveTableEditorHelpTitle')** $services.localization.render('platform.appwithinminutes.liveTableEditorHelpDescription') 38 - 39 - #foreach($columnId in ['doc.name', 'doc.date', 'doc.author', '_actions']) 40 - ; {{{$genericColumns.get($columnId).get(0)}}} 41 - : {{{$genericColumns.get($columnId).get(1)}}} 42 - #end 43 - ))) 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> 44 44 #end 45 45 46 -#macro(displayFormFields) 47 - {{html wiki="true"}} 48 - (% class="hidden" %) 49 - ((( 87 +#macro (displayFormFields) 88 + <div class="hidden"> 50 50 ## Make sure that only the sheet content is rendered when the class is saved using AJAX. 51 51 <input type="hidden" name="xpage" value="plain" /> 52 52 ## We prevent the class name and the data space from being edited directly. They can be specified in the URL. 53 - $doc.display('class', 'hidden') 54 - $doc.display('class', 'dataSpace') 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') 55 55 ## We have to pass the list of available columns to the JavaScript code. 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}} 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> 65 65 #end 66 66 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" && "$!uix.getParameters().get('icon')" != '') 72 - #set($icon = $uix.getParameters().get('icon')) 73 - #end 122 +#macro (getApplicationIcon $classReference) 123 + #set ($applicationIcon = '') 124 + ## Look for the corresponding 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) 74 74 #end 75 - {{html wiki="true"}} 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 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 84 84 #end 85 85 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) 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 94 94 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') 95 95 #end 96 96 #displayHelpPanel() 97 - (% class="form-body" %) 98 - ((( 181 + <div class="form-body"> 99 99 #displayFormFields() 100 - 101 101 #displayIcon() 102 - 103 - #if("$!request.wizard" == 'true') 104 - 105 - #appWizardFooter(3) 184 + #if ("$!request.wizard" == 'true') 185 + #appWizardFooter('presentation') 106 106 #end 107 - ))) 108 - {{html}}<div class="clearfloats"></div>{{/html}} 187 + </div> 188 + <div class="clearfloats"></div> 189 + {{/html}} 190 + 191 + {{iconPicker id="applicationIcon" prefix="icon:" /}} 109 109 #end 110 110 111 111 #macro (maybeGrantSpaceAdminRight $spaceRef) ... ... @@ -138,21 +138,25 @@ 138 138 #end 139 139 #end 140 140 141 -#macro(updateAndSaveLiveTable) 142 - #set($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass')) 143 - #set($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator')) 224 +#macro (updateAndSaveLiveTable) 225 + #set ($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass')) 226 + #set ($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator')) 144 144 145 145 ## Generate the LiveTable by displaying the LiveTableGenerator document in the context of the current document. 146 146 #set ($displayParameters = $services.display.createDocumentDisplayerParameters()) 147 147 #set ($discard = $displayParameters.setExecutionContextIsolated(false)) 148 148 #set ($discard = $displayParameters.setContentTranslated(true)) 149 - #set ($generatedLiveTableContent = $services.display.content($liveTableGeneratorDoc, { 'outputSyntaxId' : 'plain/1.0', 'displayerParameters' : $displayParameters })) 232 + #set ($generatedLiveTableContent = $services.display.content($liveTableGeneratorDoc, { 233 + 'outputSyntaxId': 'plain/1.0', 234 + 'displayerParameters': $displayParameters 235 + })) 150 150 151 151 ## Use the generated LiveTable content for the data home page. 152 152 #set ($dataSpaceReference = $services.model.resolveSpace($doc.getValue('dataSpace'))) 153 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. 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. 156 156 #set ($dataHomePage = $doc) 157 157 #else 158 158 ## The application data is stored in a different space. ... ... @@ -171,11 +171,15 @@ 171 171 #set ($discard = $doc.setContent($homePageContent)) 172 172 #end 173 173 #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)) 174 174 175 - #set($minorEdit = "$!request.minorEdit" != '') 176 - #set($comment = $request.comment) 177 - #if("$!comment" == '') 178 - #set($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment')) 266 + #set ($minorEdit = "$!request.minorEdit" != '') 267 + #set ($comment = $request.comment) 268 + #if ("$!comment" == '') 269 + #set ($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment')) 179 179 #end 180 180 181 181 #if ($dataHomePage != $doc) ... ... @@ -184,33 +184,39 @@ 184 184 #end 185 185 186 186 ## Save the application home page. 187 - #set($discard = $doc.save($comment, $minorEdit)) 278 + #set ($discard = $doc.save($comment, $minorEdit)) 188 188 #end 189 189 190 -#macro(updateAndSaveIcon) 191 - #set($uix = $doc.getObject('XWiki.UIExtensionClass', true)) 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}")) 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))) 196 196 #set ($hasWikiAdminRights = $services.security.authorization.hasAccess('admin', $doc.documentReference.wikiReference)) 197 - #set($discard = $uix.set('scope', "#if ($hasWikiAdminRights)wiki#{else}user#end")) 198 - #set($discard = $doc.save('Updated application icon', true)) 292 + #set ($discard = $uix.set('scope', "#if ($hasWikiAdminRights)wiki#{else}user#end")) 293 + #set ($discard = $doc.save('Updated application icon', true)) 199 199 #end 200 200 201 -#macro(doSave) 296 +#macro (doSave) 202 202 #maybeGrantSpaceAdminRights() 203 203 #updateAndSaveLiveTable() 204 204 #updateAndSaveIcon() 205 - #if($action == 'save') 206 - #if($errorMessage) 207 - {{error}}{{html}}$errorMessage{{/html}}{{/error}} 300 + #if ($action == 'save') 301 + #if ($errorMessage) 302 + {{html clean="false"}} 303 + <div class="box errormessage">$errorMessage</div> 304 + {{/html}} 208 208 #else 209 209 ## Redirect to view mode. 210 210 $response.sendRedirect($doc.getURL()) 211 211 #end 212 212 #else 213 - #if($errorMessage) 310 + #if ($errorMessage) 214 214 $response.sendError(400, $errorMessage) 215 215 #else 216 216 $response.setStatus(204) ... ... @@ -220,7 +220,7 @@ 220 220 {{/velocity}} 221 221 222 222 {{velocity}} 223 -#if("$!request.wizard" == 'true') 320 +#if ("$!request.wizard" == 'true') 224 224 {{include reference="AppWithinMinutes.WizardStep" /}} 225 225 #end 226 226 {{/velocity}} ... ... @@ -227,20 +227,20 @@ 227 227 228 228 {{velocity}} 229 229 ## Determine the action button that triggered the request 230 -#set($action = $xcontext.action) 231 -#foreach($paramName in $request.getParameterMap().keySet()) 232 - #if($paramName.startsWith('xaction_')) 233 - #set($action = $paramName.substring(8)) 327 +#set ($action = $xcontext.action) 328 +#foreach ($paramName in $request.getParameterMap().keySet()) 329 + #if ($paramName.startsWith('xaction_')) 330 + #set ($action = $paramName.substring(8)) 234 234 #break 235 235 #end 236 236 #end 237 -#if($action == 'edit') 334 +#if ($action == 'edit') 238 238 #doEdit() 239 -#elseif($action == 'save' || $action == 'saveandcontinue') 240 - #if($services.csrf.isTokenValid($request.form_token)) 336 +#elseif ($action == 'save' || $action == 'saveandcontinue') 337 + #if ($services.csrf.isTokenValid($request.form_token)) 241 241 #doSave() 242 242 #else 243 - $response.sendRedirect($services.csrf.getResubmissionURL()) ;340 + $response.sendRedirect($services.csrf.getResubmissionURL()) 244 244 #end 245 245 #end 246 246 {{/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 = new Element('input', {type: 'image',src: '$xwiki.getSkinFile('icons/silk/add.png')', alt: '$escapetool.javascript($services.localization.render('platform.appwithinminutes.liveTableEditorAddColumnHint'))'});64 + var addButton = this.columnsSelect.next('a.addColumn'); 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,10 +126,10 @@ 126 126 if (!form) { 127 127 return false; 128 128 } 129 - // Let the sheet handle the form submit. 130 - // NOTE: Thecodethat handlesSave&ContinueusesthisURLto make theAJAXrequest and Firefox 3.6doesn'tresolve131 - // the e mptystringtothecurrentpageURL so wehavetoexplicitlyspecify it.132 - form.action = window.location.href;129 + // Let the sheet handle the form submit. The form is submitted by default to the preview action which dispatches the 130 + // request to the save action if the save button is detected on the request parameters. By submitting to the edit 131 + // action the edit sheet is evaluated and thus it can handle the save by itself. 132 + form.action = XWiki.currentDocument.getURL('edit'); 133 133 134 134 // Apply the vertical form layout standard. 135 135 form.addClassName('xform');
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -52,10 +52,9 @@ 52 52 width: auto; 53 53 } 54 54 55 -.columnPicker input[type=image]{55 +.columnPicker a.addColumn { 56 56 margin: 0 .5em; 57 57 padding: 0; 58 - vertical-align: text-bottom; 59 59 } 60 60 61 61 .form-body {