Wiki-Quellcode von CreateTaskTemplateEndpoint

Zuletzt geändert von Daniel Herrmann am 2026/03/08 12:48

Verstecke letzte Bearbeiter
Daniel Herrmann 1.1 1 {{velocity wiki="false"}}
2 #if($xcontext.action == 'get')
3 #set ($discard = $response.setContentType('application/json'))
4 ## Get template and provider names
5 #set ($templateName = $request.templateName)
6 #if ("$!templateName" != '')
7 #set ($templateDoc = $xwiki.getDocument("TaskManager.TaskManagerTemplates.$!{templateName}Template"))
8 #set ($providerDoc = $xwiki.getDocument("TaskManager.TaskManagerTemplates.$!{templateName}TemplateProvider"))
9 #set ($templateExists = $xwiki.exists($templateDoc.getDocumentReference()))
10 #set ($providerExists = $xwiki.exists($providerDoc.getDocumentReference()))
11 #set ($responseJSON = {
12 'templateDocument': {'reference': "$templateDoc", 'exists': $templateExists},
13 'providerDocument': {'reference': "$providerDoc", 'exists': $providerExists}
14 })
15 #if ($providerExists)
16 $response.setStatus(409)
17 $jsontool.serialize($responseJSON)
18 #elseif ($templateDoc.hasAccessLevel('edit') && $providerDoc.hasAccessLevel('edit'))
19 #if (!$templateExists)
20 #set ($discard = $templateDoc.createNewObject('TaskManager.TaskManagerClass'))
21 #set ($discard = $templateDoc.setHidden(true))
22 #set ($discard = $templateDoc.save('Create template', true))
23 #end
24 ## If provider doesn't exist, copy the base provider and configure it
25 #if (!$providerExists)
26 #if ($xwiki.exists('TaskManager.TaskManagerTemplates.TaskManagerTemplateProvider'))
27 #set ($discard = $xwiki.copyDocument(
28 $xwiki.getDocument('TaskManager.TaskManagerTemplates.TaskManagerTemplateProvider').getDocumentReference(),
29 $providerDoc.getDocumentReference(),
30 null, true, false
31 ))
32 ## Reload the document to update its isNew() status.
33 #set ($providerDoc = $xwiki.getDocument("TaskManager.TaskManagerTemplates.$!{templateName}TemplateProvider"))
34 #else
35 #set ($discard = $responseJSON.get('providerDocument').put('exists', 'noProvider'))
36 #end
37 #set ($providerObj = $providerDoc.getObject('XWiki.TemplateProviderClass'))
38 #set ($discard = $providerDoc.setHidden(true))
39 #if ("$!providerObj" == '')
40 #set ($discard = $providerDoc.createNewObject('XWiki.TemplateProviderClass'))
41 #set ($providerObj = $providerDoc.getObject('XWiki.TemplateProviderClass'))
42 ## Hardcoded defaults
43 #set ($discard = $providerObj.set('action', 'Edit'))
44 #set ($discard = $providerObj.set('terminal', 1))
45 #set ($discard = $providerObj.set('icon', 'application_view_list'))
46 #set ($discard = $providerObj.set('creationRestrictions', 'TaskManager'))
47 #set ($discard = $providerObj.set('creationRestrictionsAsSuggestions', 0))
48 #end
49 #set ($discard = $providerObj.set('name', $templateName))
50 #set ($discard = $providerObj.set('template', $templateDoc.getFullName()))
51 #set ($discard = $providerDoc.save('Create template provider', true))
52 #end
53 #set ($discard = $response.setStatus(200))
54 $jsontool.serialize($responseJSON)
55 #else
56 #set ($discard = $response.setStatus(401))
57 #end
58 #else
59 #set ($discard = $response.setStatus(400))
60 #end
61 #end
62 {{/velocity}}