English     Dutch     French     German     Spanish

Wiki source code of Delete Application

Last modified by superadmin on 2023/10/06 17:56

Show last authors
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 #getSanitizedURLAttributeValue('a','href',$request.xredirect,$doc.getURL(),$cancelURL)
58 ## We don't sanitize those parameters as the sanitation will be handled server side.
59 #set ($confirmParams.xredirect = $request.xredirect)
60 #end
61 #set ($confirmURL = $doc.getURL($xcontext.action, $escapetool.url($confirmParams)))
62 {{html}}
63 #xwikimessagebox($services.localization.render('core.delete') $confirmationMessage $confirmURL
64 $escapetool.xml($cancelURL) $services.localization.render('yes') $services.localization.render('no'))
65 {{/html}}
66 #end
67 {{/velocity}}
68
69 {{velocity}}
70 #if ("$!request.appName" != '')
71 #set ($displayDocExtra = false)
72 #if ($request.resolve == 'true')
73 #set ($appReference = $services.model.resolveSpace($request.appName))
74 #else
75 #set ($appReference = $services.model.createSpaceReference($request.appName,
76 $doc.documentReference.wikiReference))
77 #end
78 #set ($appHomeReference = $services.model.resolveDocument('', 'default', $appReference))
79 #set ($scope = $request.scope)
80 ## Make sure a valid application name has been passed, otherwise stop here.
81 #set ($appDescriptor = $xwiki.getDocument($appReference).getObject('AppWithinMinutes.LiveTableClass'))
82 #if ($appDescriptor)
83 #if ($request.confirm == '1')
84 ## CSRF protection.
85 #if(!$services.csrf.isTokenValid($request.form_token))
86 $response.sendRedirect($services.csrf.getResubmissionURL())
87 #stop
88 #end
89 ##
90 #set ($classLocalReference = $appDescriptor.getValue('class'))
91 #set ($classReference = $services.model.resolveDocument($classLocalReference, 'explicit', $appHomeReference))
92 ##
93 #set ($pageReferences = [])
94 #getApplicationDataPages($classReference $pageReferences)
95 #if ($scope != 'entries')
96 #getApplicationCodePages($appReference $classReference $pageReferences)
97 #end
98 #bulkDelete($pageReferences)
99 ##
100 #if ($errorLog)
101 {{error}}$errorLog{{/error}}
102 #elseif ($request.xredirect)
103 ## If requested, redirect the UI after the work is complete.
104 $response.sendRedirect($request.xredirect)
105 #end
106 #else
107 #askForDeleteConfirmation($appReference $scope)
108 #end
109 #else
110 ## Unusable application name.
111 #if (!$xwiki.exists($appHomeReference))
112 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppDoesNotExistError'){{/error}}
113 #else
114 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppInvalidAppError'){{/error}}
115 #end
116 #end
117 #else
118 {{error}}$services.localization.render('platform.appwithinminutes.deleteAppNotSpecifiedError'){{/error}}
119 #end
120 {{/velocity}}
(c) Eniris, 2024