Wiki source code of Create a new blog post
Version 1.1 by Jan Rhebergen on 2021/02/27 22:16
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{include reference="Blog.BlogCode"/}} | ||
2 | |||
3 | {{velocity}} | ||
4 | ## In case this page is called from the blogPostCreate macro | ||
5 | #if ("$!targetBlogDoc" != '') | ||
6 | #set ($doc = $targetBlogDoc) | ||
7 | #end | ||
8 | {{html clean="false" wiki="true"}} | ||
9 | #set($name = "$!request.entryTitle") | ||
10 | #if($name == '') | ||
11 | ## If there's also a form_token passed it means the user has entered an empty blog post title, let the user know about it! | ||
12 | #if ("$!request.form_token" != '') | ||
13 | {{error}}$services.localization.render('blog.post.titleEmptyError'){{/error}} | ||
14 | |||
15 | #end | ||
16 | ## First step, display the create form | ||
17 | #if($hasEdit) | ||
18 | $xwiki.jsx.use($blogScriptsDocumentName)## | ||
19 | #set($space = "$!request.entrySpace") | ||
20 | #if($space == '') | ||
21 | #set($space = $doc.space) | ||
22 | #end | ||
23 | <form action='$doc.getURL()' method="post" class="xformInline newBlogPostForm"> | ||
24 | <div> | ||
25 | <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> | ||
26 | <input type="hidden" name="entrySpace" value="$!{escapetool.xml($services.rendering.escape($space,$doc.syntax))}"/> | ||
27 | #if($doc.getObject($blogCategoryClassname)) | ||
28 | <input type="hidden" name="category" value="$services.rendering.escape(${escapetool.xml(${doc.fullName})}, $doc.syntax)"/> | ||
29 | #end | ||
30 | $services.icon.renderHTML('add')<label class="createPost" for="entryTitle">$services.localization.render('blog.post.createpost') </label> | ||
31 | <input type="text" id="entryTitle" name="entryTitle" size="30" placeholder="$services.localization.render('blog.post.title')"/> <span class="buttonwrapper"> | ||
32 | <input type="submit" value="${escapetool.xml($services.localization.render('blog.post.create'))}" class="btn btn-success button"/></span> | ||
33 | </div> | ||
34 | </form> | ||
35 | #elseif("$!request.entryTitle" != '')## !hasEdit && form submitted | ||
36 | #template('accessdenied.vm') | ||
37 | #end## hasEdit | ||
38 | #else | ||
39 | ## Second step, form submitted, create the document | ||
40 | #set($space = "$!request.entrySpace") | ||
41 | #getBlogPostsLocation($space $blogPostsLocation) | ||
42 | #if($blogPostsLocation == '') | ||
43 | #set($blogPostsLocation = 'Main') | ||
44 | #end | ||
45 | ## Since XWiki 12.0RC1 it is possible to use a naming strategy at wiki level and the blog application should respect it. | ||
46 | #if("$!services.modelvalidation" != '' && $services.modelvalidation.configuration.useTransformation()) | ||
47 | #set($name = $services.modelvalidation.transformName($name)) | ||
48 | #else | ||
49 | ## Remove . and : from the document name, as they have a special meaning in XWiki document names | ||
50 | #set($name = $name.replaceAll('[.:]', '')) | ||
51 | #end | ||
52 | #set($postDocName = "${blogPostsLocation}.${name}") | ||
53 | #set($postDocName = $postDocName.trim()) | ||
54 | ## Make sure blog name is new | ||
55 | #if($xwiki.exists($postDocName)) | ||
56 | #set($postDocRef = $services.model.resolveDocument($postDocName, "currentmixed")) | ||
57 | #set($postDocPageName = $xwiki.getUniquePageName($blogPostsLocation, $postDocRef.getName())) | ||
58 | #set($postDocName = "${blogPostsLocation}.${postDocPageName}") | ||
59 | #end | ||
60 | ## Get the target blog document, to set it as the parent | ||
61 | #getBlogDocument($space $blogDoc) | ||
62 | #set($parent = "$!{escapetool.url($blogDoc.fullName)}") | ||
63 | #set($title = "$!{escapetool.url($name)}") | ||
64 | #set($category = "") | ||
65 | #if("$!request.category" != '') | ||
66 | #set($category = "&${blogPostClassname}_${blogPostObjectNumber}_category=${escapetool.url(${request.category})}") | ||
67 | #end | ||
68 | $response.sendRedirect($xwiki.getURL($postDocName, 'edit', "template=${blogPostTemplate}&parent=${parent}&title=${title}&${blogPostClassname}_0_title=${title}$!{category}&form_token=$!{request.getParameter('form_token')}")) | ||
69 | #end## name == '' | ||
70 | {{/html}} | ||
71 | {{/velocity}} |