Wiki source code of Delete Application

Last modified by superadmin on 2022/05/03 16:55

Hide last authors
admin 1.1 1 {{velocity output="false"}}
2 #**
3 * Retrieve the list of pages that contain application data.
4 *#
5 #macro (getApplicationDataPages $classReference $pageReferences)
6 #set ($statement = ', BaseObject as obj where doc.fullName = obj.name and ' +
7 'obj.className = :class and doc.fullName <> :template')
8 #set ($query = $services.query.hql($statement))
9 #set ($classLocalReference = $services.model.serialize($classReference, 'local'))
10 #set ($discard = $query.bindValue('class', $classLocalReference))
11 #set ($discard = $query.bindValue('template', "$stringtool.removeEnd($classLocalReference, 'Class')Template"))
12 #foreach ($entryLocalReference in $query.execute())
13 #set ($discard = $pageReferences.add($services.model.resolveDocument($entryLocalReference)))
14 #end
15 #end
16
17 #**
18 * Retrieve the list of pages that contain application code.
19 *#
20 #macro (getApplicationCodePages $appReference $classReference $pageReferences)
21 #set ($discard = $pageReferences.add($appReference))
22 #if (!$classReference.hasParent($appReference))
23 ## The code pages are outside of the application page tree.
24 #set ($discard = $pageReferences.add($classReference.parent))
25 #end
26 #end
27
28 #macro (bulkDelete $entities)
29 #set ($errorLog = $NULL)
30 #set ($deleteJob = $services.refactoring.delete($entities))
31 #try()
32 #set ($discard = $deleteJob.join())
33 #set ($deleteJobStatus = $services.job.getJobStatus($deleteJob.request.id))
34 #set ($errorLog = $deleteJobStatus.logTail.getFirstLogEvent('ERROR'))
35 #end
36 #end
37
38 #macro (askForDeleteConfirmation $appReference $scope)
39 ## Confirmation dialog
40 #set ($appTitle = $xwiki.getDocument($appReference).plainTitle)
41 #if ($scope == 'entries')
42 #set ($confirmationMessage = $services.localization.render(
43 'platform.appwithinminutes.deleteAppEntriesConfirmation', [$escapetool.xml($appTitle)]))
44 #else
45 #set ($confirmationMessage = $services.localization.render('platform.appwithinminutes.deleteAppConfirmation',
46 [$escapetool.xml($appTitle)]))
47 #end
48 #set ($cancelURL = $doc.getURL())
49 #set ($confirmParams = {
50 'appName': $services.model.serialize($appReference, 'local'),
51 'resolve': true,
52 'scope': $scope,
53 'confirm': 1,
54 'form_token': $services.csrf.token
55 })
56 #if ("$!request.xredirect" != '')
57 #set ($cancelURL = $request.xredirect)
58 #set ($confirmParams.xredirect = $cancelURL)
59 #end
60 #set ($confirmURL = $doc.getURL($xcontext.action, $escapetool.url($confirmParams)))
61 {{html}}
62 #xwikimessagebox($services.localization.render('core.delete') $confirmationMessage $confirmURL
63 $escapetool.xml($cancelURL) $services.localization.render('yes') $services.localization.render('no'))
64 {{/html}}
65 #end
66 {{/velocity}}
67
68 {{velocity}}
69 #if ("$!request.appName" != '')
70 #set ($displayDocExtra = false)
71 #if ($request.resolve == 'true')
72 #set ($appReference = $services.model.resolveSpace($request.appName))
73 #else
74 #set ($appReference = $services.model.createSpaceReference($request.appName,
75 $doc.documentReference.wikiReference))
76 #end
77 #set ($appHomeReference = $services.model.resolveDocument('', 'default', $appReference))
78 #set ($scope = $request.scope)
79 ## Make sure a valid application name has been passed, otherwise stop here.
80 #set ($appDescriptor = $xwiki.getDocument($appReference).getObject('AppWithinMinutes.LiveTableClass'))
81 #if ($appDescriptor)
82 #if ($request.confirm == '1')
83 ## CSRF protection.
84 #if(!$services.csrf.isTokenValid($request.form_token))
85 $response.sendRedirect($services.csrf.getResubmissionURL())
86 #stop
87 #end
88 ##
89 #set ($classLocalReference = $appDescriptor.getValue('class'))
90 #set ($classReference = $services.model.resolveDocument($classLocalReference, 'explicit', $appHomeReference))
91 ##
92 #set ($pageReferences = [])
93 #getApplicationDataPages($classReference $pageReferences)
94 #if ($scope != 'entries')
95 #getApplicationCodePages($appReference $classReference $pageReferences)
96 #end
97 #bulkDelete($pageReferences)
98 ##
99 #if ($errorLog)
100 {{error}}$errorLog{{/error}}
101 #elseif ($request.xredirect)
102 ## If requested, redirect the UI after the work is complete.
103 $response.sendRedirect($request.xredirect)
104 #end
105 #else
106 #askForDeleteConfirmation($appReference $scope)
107 #end
108 #else
109 ## Unusable application name.
110 #if (!$xwiki.exists($appHomeReference))
111 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppDoesNotExistError'){{/error}}
112 #else
113 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppInvalidAppError'){{/error}}
114 #end
115 #end
116 #else
117 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppNotSpecifiedError'){{/error}}
118 #end
119 {{/velocity}}
120
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 13.10.5 - Documentation