Wiki source code of Create a new blog post
Last modified by Jan Rhebergen on 2022/03/12 10:00
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 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"}} | ||
![]() |
3.1 | 9 | #set($name = "$!request.entryTitle.trim()") |
![]() |
2.1 | 10 | #set($title = $name) |
![]() |
1.1 | 11 | #if($name == '') |
12 | ## 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! | ||
13 | #if ("$!request.form_token" != '') | ||
14 | {{error}}$services.localization.render('blog.post.titleEmptyError'){{/error}} | ||
15 | |||
16 | #end | ||
17 | ## First step, display the create form | ||
18 | #if($hasEdit) | ||
19 | $xwiki.jsx.use($blogScriptsDocumentName)## | ||
20 | #set($space = "$!request.entrySpace") | ||
21 | #if($space == '') | ||
22 | #set($space = $doc.space) | ||
23 | #end | ||
24 | <form action='$doc.getURL()' method="post" class="xformInline newBlogPostForm"> | ||
25 | <div> | ||
26 | <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> | ||
27 | <input type="hidden" name="entrySpace" value="$!{escapetool.xml($services.rendering.escape($space,$doc.syntax))}"/> | ||
28 | #if($doc.getObject($blogCategoryClassname)) | ||
29 | <input type="hidden" name="category" value="$services.rendering.escape(${escapetool.xml(${doc.fullName})}, $doc.syntax)"/> | ||
30 | #end | ||
31 | $services.icon.renderHTML('add')<label class="createPost" for="entryTitle">$services.localization.render('blog.post.createpost') </label> | ||
32 | <input type="text" id="entryTitle" name="entryTitle" size="30" placeholder="$services.localization.render('blog.post.title')"/> <span class="buttonwrapper"> | ||
33 | <input type="submit" value="${escapetool.xml($services.localization.render('blog.post.create'))}" class="btn btn-success button"/></span> | ||
34 | </div> | ||
35 | </form> | ||
36 | #elseif("$!request.entryTitle" != '')## !hasEdit && form submitted | ||
37 | #template('accessdenied.vm') | ||
38 | #end## hasEdit | ||
39 | #else | ||
40 | ## Second step, form submitted, create the document | ||
41 | #set($space = "$!request.entrySpace") | ||
42 | #getBlogPostsLocation($space $blogPostsLocation) | ||
43 | #if($blogPostsLocation == '') | ||
44 | #set($blogPostsLocation = 'Main') | ||
45 | #end | ||
46 | ## Since XWiki 12.0RC1 it is possible to use a naming strategy at wiki level and the blog application should respect it. | ||
47 | #if("$!services.modelvalidation" != '' && $services.modelvalidation.configuration.useTransformation()) | ||
48 | #set($name = $services.modelvalidation.transformName($name)) | ||
49 | #else | ||
50 | ## Remove . and : from the document name, as they have a special meaning in XWiki document names | ||
51 | #set($name = $name.replaceAll('[.:]', '')) | ||
52 | #end | ||
![]() |
3.1 | 53 | #set($blogPostsLocationReference = $services.model.resolveSpace($blogPostsLocation)) |
54 | #set($postDocRef = $services.model.createDocumentReference($name, $blogPostsLocationReference)) | ||
![]() |
1.1 | 55 | ## Make sure blog name is new |
![]() |
3.1 | 56 | #if($xwiki.exists($postDocRef)) |
57 | #set($name = $xwiki.getUniquePageName($blogPostsLocation, $name)) | ||
58 | #set($postDocRef = $services.model.createDocumentReference($name, $blogPostsLocationReference)) | ||
![]() |
1.1 | 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)}") | ||
![]() |
2.1 | 63 | #set($title = "$!{escapetool.url($title)}") |
![]() |
1.1 | 64 | #set($category = "") |
65 | #if("$!request.category" != '') | ||
66 | #set($category = "&${blogPostClassname}_${blogPostObjectNumber}_category=${escapetool.url(${request.category})}") | ||
67 | #end | ||
![]() |
3.1 | 68 | $response.sendRedirect($xwiki.getURL($postDocRef, 'edit', "template=${blogPostTemplate}&parent=${parent}&title=${title}&${blogPostClassname}_0_title=${title}$!{category}&form_token=$!{request.getParameter('form_token')}")) |
![]() |
1.1 | 69 | #end## name == '' |
70 | {{/html}} | ||
71 | {{/velocity}} |