# Wiki source code of TemplateProviderEditSheet

Last modified by Alexandru Colesnicov on 2019/03/27 19:06
Export
Office Formats
Export as PDF
Other Formats
Export as HTML

Hide last authors

author | version | line-number | content
--- | --- | --- | ---
| 1.1 | 1 | {{include reference="XWiki.TemplateProviderMacros" /}}
|  | 2 |
| 2.1 | 3 | {{include reference="AppWithinMinutes.VelocityMacros" /}}
|  | 4 |
| 1.1 | 5 | {{velocity}}
| 2.1 | 6 | #if ("$!request.wizard" == 'true')
| 1.1 | 7 | {{include reference="AppWithinMinutes.WizardStep" /}}
|  | 8 | #end
|  | 9 | {{/velocity}}
|  | 10 |
|  | 11 | {{velocity output="false"}}
|  | 12 | #set ($appDescriptorClassName = 'AppWithinMinutes.LiveTableClass')
|  | 13 |
| 2.1 | 14 | #macro (updateHiddenTemplateProviderProperties)
|  | 15 | #set ($prefix = $stringtool.removeEnd($doc.documentReference.name, 'TemplateProvider'))
| 1.1 | 16 | #set ($discard = $doc.setTitle("$prefix Template Provider"))
|  | 17 | #set ($templateProviderObj = $doc.getObject('XWiki.TemplateProviderClass'))
|  | 18 | #set ($discard = $templateProviderObj.set('name', "${prefix.toLowerCase()}.entry.name"))
|  | 19 | #set ($discard = $templateProviderObj.set('template', $stringtool.removeEnd($doc.fullName, 'Provider')))
| 2.1 | 20 | #end
|  | 21 |
|  | 22 | #macro (initVisibleTemplateProviderProperties $templateProviderObj)
| 1.1 | 23 | #getAppReference
|  | 24 | #set ($localStringAppRef = $services.model.serialize($appReference, 'local'))
|  | 25 | #set ($icon = 'application')
|  | 26 | #foreach ($uix in $services.uix.getExtensions('org.xwiki.platform.panels.Applications'))
|  | 27 | #if ($uix.id == "platform.panels.${localStringAppRef}Application" && $uix.parameters.icon.startsWith('icon:'))
|  | 28 | ## Use the application icon by default if set.
|  | 29 | #set ($icon = $stringtool.removeStart($uix.parameters.icon, 'icon:'))
|  | 30 | #end
|  | 31 | #end
|  | 32 | #set ($discard = $templateProviderObj.set('icon', $icon))
|  | 33 | #set ($homePageRef = $services.model.resolveDocument('', 'default', $appReference))
|  | 34 | ## We recommend the users to create the entries in the application space by default because:
|  | 35 | ## * for most applications it's better to keep the entries in the same place
|  | 36 | ## * if the application is not yet created the application space doesn't exist so the user cannot select it from the
|  | 37 | ## tree unless we select it by default
|  | 38 | #set ($creationRestrictions = [$services.model.serialize($appReference, 'local')])
|  | 39 | #set ($creationRestrictionsAreSuggestions = 1)
|  | 40 | #if ($xwiki.exists($homePageRef))
|  | 41 | ## We are (most probably) editing an existing application. Initialize the entry location based on the information
|  | 42 | ## stored on the application home page.
|  | 43 | #set ($dataSpace = $xwiki.getDocument($homePageRef).getValue('dataSpace'))
|  | 44 | #set ($dataSpaceReference = $services.model.resolveSpace($dataSpace, 'explicit', $appReference))
|  | 45 | #set ($creationRestrictions = [$services.model.serialize($dataSpaceReference, 'local')])
|  | 46 | #set ($creationRestrictionsAreSuggestions = 0)
|  | 47 | ## Preserve the old behavior.
|  | 48 | #set ($discard = $templateProviderObj.set('terminal', 1))
|  | 49 | #end
|  | 50 | #set ($discard = $templateProviderObj.set('creationRestrictions', $creationRestrictions))
|  | 51 | #set ($discard = $templateProviderObj.set('creationRestrictionsAreSuggestions', $creationRestrictionsAreSuggestions))
|  | 52 | #end
|  | 53 |
|  | 54 | #macro (maybeAddXRedirectToNextWizardStep)
|  | 55 | #if ("$!request.wizard" == 'true')
|  | 56 | ## Add redirect to next wizard step.
|  | 57 | #getAppReference
|  | 58 | #set ($homePageRef = $services.model.resolveDocument('', 'default', $appReference))
|  | 59 | #set ($queryString = {"wizard" : true})
|  | 60 | #if (!$xwiki.exists($homePageRef))
|  | 61 | #set ($classReference = "${stringtool.removeEnd($doc.fullName, 'TemplateProvider')}Class")
|  | 62 | #set ($wikiHomePageRef = $services.model.resolveDocument('', 'default'))
|  | 63 | #set ($wikiHomePage = $services.model.serialize($wikiHomePageRef, 'local'))
|  | 64 | #set ($discard = $queryString.putAll({
|  | 65 | 'template': 'AppWithinMinutes.LiveTableTemplate',
|  | 66 | "${appDescriptorClassName}_0_class": $classReference,
|  | 67 | 'title': $appReference.name,
|  | 68 | 'parent': $wikiHomePage
|  | 69 | }))
|  | 70 | #end
|  | 71 | #set ($queryString = $escapetool.url($queryString))
|  | 72 | <input type="hidden" name="xredirect" value="$escapetool.xml($xwiki.getURL($homePageRef, 'edit', $queryString))" />
|  | 73 | #end
|  | 74 | #end
|  | 75 |
|  | 76 | #macro (displayEditForm)
|  | 77 | #set ($discard = $xwiki.ssx.use('XWiki.TemplateProviderMacros'))
|  | 78 | #set ($discard = $xwiki.jsx.use('XWiki.TemplateProviderMacros'))
| 2.1 | 79 | #updateHiddenTemplateProviderProperties
| 1.1 | 80 | #if ($doc.isNew())
| 2.1 | 81 | #initVisibleTemplateProviderProperties($templateProviderObj)
| 1.1 | 82 | #end
|  | 83 | <div class="hidden">
|  | 84 | <input type="hidden" name="title" value="$escapetool.xml($doc.title)" />
|  | 85 | <input type="hidden" name="xhidden" value="1" />
|  | 86 | #foreach ($property in ['name', 'template', 'action'])
|  | 87 | #displayPropertyValue($property 'hidden')
|  | 88 | #end
|  | 89 | #maybeAddXRedirectToNextWizardStep
|  | 90 | </div>
|  | 91 | <div class="xform row templateProviderSheet">
|  | 92 | <div class="xHint col-xs-12">
|  | 93 | $services.icon.renderHTML('info')
|  | 94 | $services.localization.render('appWithinMinutes.templateProviderEditor.hint')
|  | 95 | </div>
|  | 96 | ##
|  | 97 | ## Left side
|  | 98 | ##
|  | 99 | <div class="col-xs-12 col-md-6">
|  | 100 | <dl>
|  | 101 | ##
|  | 102 | ## Icon
|  | 103 | ##
|  | 104 | <dt>
|  | 105 | <label for="XWiki.TemplateProviderClass_0_icon">
|  | 106 | $escapetool.xml($doc.displayPrettyName('icon'))
|  | 107 | </label>
|  | 108 | <span class="xHint">
|  | 109 | $services.localization.render('appWithinMinutes.templateProviderEditor.icon.hint')
|  | 110 | </span>
|  | 111 | </dt>
|  | 112 | <dd>#displayPropertyValue('icon')</dd>
|  | 113 | ##
|  | 114 | ## Description
|  | 115 | ##
|  | 116 | <dt>
|  | 117 | <label for="XWiki.TemplateProviderClass_0_description">
|  | 118 | $escapetool.xml($doc.displayPrettyName('description'))
|  | 119 | </label>
|  | 120 | <span class="xHint">
|  | 121 | $services.localization.render('appWithinMinutes.templateProviderEditor.description.hint')
|  | 122 | </span>
|  | 123 | </dt>
|  | 124 | <dd>#displayPropertyValue('description')</dd>
|  | 125 | ##
|  | 126 | ## Visibility Restrictions
|  | 127 | ##
|  | 128 | <dt>
|  | 129 | <label>
|  | 130 | $escapetool.xml($services.localization.render('appWithinMinutes.templateProviderEditor.visibilityRestrictions.name'))
|  | 131 | </label>
|  | 132 | <span class="xHint">
|  | 133 | $escapetool.xml($services.localization.render('appWithinMinutes.templateProviderEditor.visibilityRestrictions.hint'))
|  | 134 | </span>
|  | 135 | </dt>
|  | 136 | <dd>#displayPathsPropertyValue('visibilityRestrictions')</dd>
|  | 137 | </dl>
|  | 138 | </div>
|  | 139 | ##
|  | 140 | ## Right side
|  | 141 | ##
|  | 142 | <div class="col-xs-12 col-md-6">
|  | 143 | <dl>
|  | 144 | ##
|  | 145 | ## Creation Restrictions
|  | 146 | ##
|  | 147 | <dt>
|  | 148 | <label for="XWiki.TemplateProviderClass_0_creationRestrictions">
|  | 149 | $escapetool.xml($services.localization.render('appWithinMinutes.templateProviderEditor.creationRestrictions.name'))
|  | 150 | </label>
|  | 151 | <span class="xHint">
|  | 152 | $services.localization.render('appWithinMinutes.templateProviderEditor.creationRestrictions.hint')
|  | 153 | </span>
|  | 154 | </dt>
|  | 155 | <dd>#displayPathsPropertyValue('creationRestrictions')</dd>
|  | 156 | ##
|  | 157 | ## Creation Restrictions As Suggestions
|  | 158 | ##
|  | 159 | <dt>
|  | 160 | <label for="XWiki.TemplateProviderClass_0_creationRestrictionsAreSuggestions">
|  | 161 | #displayPropertyValue('creationRestrictionsAreSuggestions')
|  | 162 | $escapetool.xml($services.localization.render('appWithinMinutes.templateProviderEditor.creationRestrictionsAreSuggestions.name'))
|  | 163 | </label>
|  | 164 | <span class="xHint">
|  | 165 | $services.localization.render('appWithinMinutes.templateProviderEditor.creationRestrictionsAreSuggestions.hint')
|  | 166 | </span>
|  | 167 | </dt>
|  | 168 | <dd></dd>
|  | 169 | ##
|  | 170 | ## Terminal page creation - Advanced user
|  | 171 | ##
|  | 172 | #if ($isAdvancedUser || $isSuperAdmin)
|  | 173 | <dt>
|  | 174 | <label for="XWiki.TemplateProviderClass_0_terminal">
|  | 175 | $escapetool.xml($doc.displayPrettyName('terminal'))
|  | 176 | </label>
|  | 177 | <span class="xHint">
|  | 178 | $escapetool.xml($services.localization.render('appWithinMinutes.templateProviderEditor.terminal.hint'))
|  | 179 | </span>
|  | 180 | </dt>
|  | 181 | <dd>#displayPropertyValue('terminal')</dd>
|  | 182 | #else
|  | 183 | <dd>#displayPropertyValue('terminal' 'hidden')</dd>
|  | 184 | #end
|  | 185 | </dl>
|  | 186 | </div>
|  | 187 | #locationPickerModal
|  | 188 | </div>
|  | 189 | #end
|  | 190 |
|  | 191 | #macro (doEdit)
| 2.1 | 192 | #if ("$!request.wizard" == 'true')
| 1.1 | 193 | #appWizardHeader('entries')
| 2.1 | 194 | ## Compute the application title to be used as the wizard step title.
|  | 195 | #getAppTitle
| 1.1 | 196 | #end
|  | 197 | #displayEditForm
| 2.1 | 198 | #if ("$!request.wizard" == 'true')
| 1.1 | 199 | #appWizardFooter('entries')
|  | 200 | #end
|  | 201 | #end
|  | 202 | {{/velocity}}
|  | 203 |
|  | 204 | {{velocity}}
|  | 205 | #if ($doc.getObject('XWiki.TemplateProviderClass'))
| 2.1 | 206 | {{html clean="false"}}
| 1.1 | 207 | #doEdit
| 2.1 | 208 | {{/html}}
|  | 209 |
|  | 210 | {{iconPicker id="XWiki\\.TemplateProviderClass_0_icon" prefix="" /}}
| 1.1 | 211 | #end
|  | 212 | {{/velocity}}

# Applications

# Tips

You can click on the arrows next to the breadcrumb elements to quickly navigate to sibling and children pages.

# Need help?

If you need help with XWiki you can contact:

- Community Support
- Professional Support

XWiki Debian 11.5