Source of file BlogFrontEndForm_BlogController.php
Size: 4,660 Bytes - Last Modified: 2021-12-24T05:16:21+00:00
/var/www/docs.ssmods.com/process/src/code/extensions/BlogFrontEndForm_BlogController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <?php class BlogFrontEndForm_BlogController extends Extension implements PermissionProvider { private static $allowed_actions = array( "post", "doSavePost" => "BLOG_FRONTENDMANAGEMENT", "FrontEndPostForm" => "BLOG_FRONTENDMANAGEMENT" ); /** * Create a new blog post */ public function post() { if (!Permission::check('BLOG_FRONTENDMANAGEMENT')) { return Security::permissionFailure(); } Requirements::css("blog-frontend/css/BlogFrontEnd.css"); $this->owner->customise(array( "Title" => _t("BlogFrontend.PostTitle", "New Blog Post"), "MetaTitle" => _t("BlogFrontend.PostMetaTitle", "New Blog Post"), "Form" => $this->FrontEndPostForm() )); $this->owner->extend("onBeforePost"); return $this ->owner ->renderWith(array( "Blog_post", "Page" )); } /** * A simple form for creating blog entries */ public function FrontEndPostForm() { if ($this->owner->request->latestParam('ID')) { $id = (int) $this->owner->request->latestParam('ID'); } else { $id = 0; } $membername = Member::currentUser() ? Member::currentUser()->getName() : ""; // Set image upload $uploadfield = UploadField::create( 'FeaturedImage', _t('BlogFrontEnd.ShareImage', "Share an image") ); $uploadfield->setCanAttachExisting(false); $uploadfield->setCanPreviewFolder(false); $uploadfield->setAllowedFileCategories('image'); $uploadfield->relationAutoSetting = false; if (BlogFrontEnd::config()->allow_wysiwyg_editing) { $content_field = TrumbowygHTMLEditorField::create( "Content", _t("BlogFrontEnd.Content") ); } else { $content_field = TextareaField::create( "Content", _t("BlogFrontEnd.Content") ); } $form = new Form( $this->owner, 'FrontEndPostForm', $fields = new FieldList( HiddenField::create("ID", "ID"), TextField::create("Title", _t('BlogFrontEnd.Title', "Title")), $uploadfield, $content_field ), $actions = new FieldList( FormAction::create( 'doSavePost', _t('BlogFrontEnd.PostEntry', 'Post Entry')) ), new RequiredFields('Title') ); $uploadfield->setForm($form); if ($this->owner->Categories()->exists()) { $fields->add(CheckboxsetField::create( "Categories", _t("BlogFrontEnd.PostUnderCategories", "Post this in a category? (optional)"), $this->owner->Categories()->map() )); } if ($this->owner->Tags()->exists()) { $fields->add(CheckboxsetField::create( "Categories", _t("BlogFrontEnd.AddTags", "Add a tag? (optional)"), $this->owner->Tags()->map() )); } if ($id && $post = BlogPost::get()->byID($id)) { $form->loadDataFrom($post); } $this->owner->extend("updateFrontEndPostForm", $form); return $form; } public function doSavePost($data, $form) { $post = false; if (isset($data['ID']) && $data['ID']) { $post = BlogPost::get()->byID($data['ID']); } if (!$post) { $post = BlogPost::create(); } $form->saveInto($post); $post->ParentID = $this->owner->ID; $this->owner->extend("onBeforeSavePost", $blogentry); $oldMode = Versioned::get_reading_mode(); Versioned::reading_stage('Stage'); $post->write(); $post->publish("Stage", "Live"); Versioned::set_reading_mode($oldMode); $this->owner->extend("onAfterSavePost", $post); $this->owner->redirect($this->owner->Link()); } public function providePermissions() { return array( "BLOG_FRONTENDMANAGEMENT" => array( 'name' => 'Frontend Blog Management', 'help' => 'Manage blog posts via the front end of the site', 'category' => 'Blog', 'sort' => 50 ) ); } } |