Afficher les derniers auteurs
1 {{velocity output="false"}}
2 #macro(listAvailableColumns)
3 {{html}}
4 <select id="availableColumns">
5 #set($className = "$!liveTableObj.getValue('class')")
6 #set($classFields = $xwiki.getDocument($className).getxWikiClass().properties)
7 #if($classFields.size() > 0)
8 <optgroup label="$escapetool.xml($services.localization.render('platform.appwithinminutes.liveTableEditorClassFieldColumnGroupLabel'))" id="classFields">
9 #foreach($field in $classFields)
10 <option value="$field.name">$escapetool.xml($field.translatedPrettyName)</option>
11 #end
12 </optgroup>
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 #end
18 </optgroup>
19 </select>
20 {{/html}}
21 #end
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')]
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 )))
44 #end
45
46 #macro(displayFormFields)
47 {{html wiki="true"}}
48 (% class="hidden" %)
49 (((
50 ## Make sure that only the sheet content is rendered when the class is saved using AJAX.
51 <input type="hidden" name="xpage" value="plain" />
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')
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}}
65 #end
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
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 #end
84 #end
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)
94
95 #end
96 #displayHelpPanel()
97 (% class="form-body" %)
98 (((
99 #displayFormFields()
100
101 #displayIcon()
102
103 #if("$!request.wizard" == 'true')
104
105 #appWizardFooter(3)
106 #end
107 )))
108 {{html}}<div class="clearfloats"></div>{{/html}}
109 #end
110
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')))
126 #end
127 #end
128
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
141 #macro(updateAndSaveLiveTable)
142 #set($discard = $doc.updateObjectFromRequest('AppWithinMinutes.LiveTableClass'))
143 #set($liveTableGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.LiveTableGenerator'))
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
175 #set($minorEdit = "$!request.minorEdit" != '')
176 #set($comment = $request.comment)
177 #if("$!comment" == '')
178 #set($comment = $services.localization.render('platform.appwithinminutes.liveTableEditorSaveComment'))
179 #end
180
181 #if ($dataHomePage != $doc)
182 ## Save the data home page.
183 #set ($discard = $dataHomePage.save($comment, $minorEdit))
184 #end
185
186 ## Save the application home page.
187 #set($discard = $doc.save($comment, $minorEdit))
188 #end
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}"))
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))
199 #end
200
201 #macro(doSave)
202 #maybeGrantSpaceAdminRights()
203 #updateAndSaveLiveTable()
204 #updateAndSaveIcon()
205 #if($action == 'save')
206 #if($errorMessage)
207 {{error}}{{html}}$errorMessage{{/html}}{{/error}}
208 #else
209 ## Redirect to view mode.
210 $response.sendRedirect($doc.getURL())
211 #end
212 #else
213 #if($errorMessage)
214 $response.sendError(400, $errorMessage)
215 #else
216 $response.setStatus(204)
217 #end
218 #end
219 #end
220 {{/velocity}}
221
222 {{velocity}}
223 #if("$!request.wizard" == 'true')
224 {{include reference="AppWithinMinutes.WizardStep" /}}
225 #end
226 {{/velocity}}
227
228 {{velocity}}
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))
234 #break
235 #end
236 #end
237 #if($action == 'edit')
238 #doEdit()
239 #elseif($action == 'save' || $action == 'saveandcontinue')
240 #if($services.csrf.isTokenValid($request.form_token))
241 #doSave()
242 #else
243 $response.sendRedirect($services.csrf.getResubmissionURL());
244 #end
245 #end
246 {{/velocity}}
This wiki is licensed under a Creative Commons 2.0 license
XWiki 13.10 - Documentation - Conditions