Wiki source code of Create a new blog post
Last modified by Jan Rhebergen on 2022/03/12 10:00
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.trim()") | ||
| 10 | #set($title = $name) | ||
| 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 | ||
| 53 | #set($blogPostsLocationReference = $services.model.resolveSpace($blogPostsLocation)) | ||
| 54 | #set($postDocRef = $services.model.createDocumentReference($name, $blogPostsLocationReference)) | ||
| 55 | ## Make sure blog name is new | ||
| 56 | #if($xwiki.exists($postDocRef)) | ||
| 57 | #set($name = $xwiki.getUniquePageName($blogPostsLocation, $name)) | ||
| 58 | #set($postDocRef = $services.model.createDocumentReference($name, $blogPostsLocationReference)) | ||
| 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($title)}") | ||
| 64 | #set($category = "") | ||
| 65 | #if("$!request.category" != '') | ||
| 66 | #set($category = "&${blogPostClassname}_${blogPostObjectNumber}_category=${escapetool.url(${request.category})}") | ||
| 67 | #end | ||
| 68 | $response.sendRedirect($xwiki.getURL($postDocRef, '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}} |