* @link http://www.netcommons.org NetCommons Project * @license http://www.netcommons.org/license.txt NetCommons License * @property NetCommonsWorkflow $NetCommonsWorkflow * @property PaginatorComponent $Paginator * @property BlogEntry $BlogEntry * @property BlogCategory $BlogCategory * @property NetCommonsComponent $NetCommons */ class BlogEntriesEditController extends BlogsAppController { /** * @var array use models */ public $uses = array( 'Blogs.BlogEntry', 'Categories.Category', 'Workflow.WorkflowComment', ); /** * Components * * @var array */ public $components = array( 'NetCommons.Permission' => array( //アクセスの権限 'allow' => array( 'add,edit,delete' => 'content_creatable', ), ), 'Workflow.Workflow', 'Categories.Categories', //'Blogs.BlogEntryPermission', 'NetCommons.NetCommonsTime', ); /** * @var array helpers */ public $helpers = array( 'NetCommons.BackTo', 'NetCommons.NetCommonsForm', 'Workflow.Workflow', 'NetCommons.NetCommonsTime', 'NetCommons.TitleIcon', //'Likes.Like', ); /** * add method * * @return void */ public function add() { $this->set('isEdit', false); $this->_prepare(); $blogEntry = $this->BlogEntry->getNew(); $this->set('blogEntry', $blogEntry); if ($this->request->is('post')) { $this->BlogEntry->create(); $this->request->data['BlogEntry']['blog_key'] = $this->_blogSetting['BlogSetting']['blog_key']; // set status $status = $this->Workflow->parseStatus(); $this->request->data['BlogEntry']['status'] = $status; // set block_id $this->request->data['BlogEntry']['block_id'] = Current::read('Block.id'); // set language_id $this->request->data['BlogEntry']['language_id'] = Current::read('Language.id'); if (($result = $this->BlogEntry->saveEntry($this->request->data))) { $url = NetCommonsUrl::actionUrl( array( 'controller' => 'blog_entries', 'action' => 'view', 'block_id' => Current::read('Block.id'), 'frame_id' => Current::read('Frame.id'), 'key' => $result['BlogEntry']['key']) ); return $this->redirect($url); } $this->NetCommons->handleValidationError($this->BlogEntry->validationErrors); } else { $this->request->data = $blogEntry; $this->request->data['Tag'] = array(); } $this->view = 'form'; } /** * edit method * * @return void */ public function edit() { $this->set('isEdit', true); //$key = $this->request->params['named']['key']; $key = $this->params['key']; // keyのis_latstを元に編集を開始 $this->BlogEntry->recursive = 0; $blogEntry = $this->BlogEntry->getWorkflowContents('first', array( 'recursive' => 0, 'conditions' => array( 'BlogEntry.key' => $key ) )); if (empty($blogEntry)) { return $this->throwBadRequest(); } if ($this->BlogEntry->canEditWorkflowContent($blogEntry) === false) { return $this->throwBadRequest(); } $this->_prepare(); if ($this->request->is(array('post', 'put'))) { $this->BlogEntry->create(); $this->request->data['BlogEntry']['blog_key'] = $this->_blogSetting['BlogSetting']['blog_key']; // set status $status = $this->Workflow->parseStatus(); $this->request->data['BlogEntry']['status'] = $status; // set block_id $this->request->data['BlogEntry']['block_id'] = Current::read('Block.id'); // set language_id $this->request->data['BlogEntry']['language_id'] = Current::read('Language.id'); $data = $this->request->data; unset($data['BlogEntry']['id']); // 常に新規保存 if ($this->BlogEntry->saveEntry($data)) { $url = NetCommonsUrl::actionUrl( array( 'controller' => 'blog_entries', 'action' => 'view', 'frame_id' => Current::read('Frame.id'), 'block_id' => Current::read('Block.id'), 'key' => $data['BlogEntry']['key'] ) ); return $this->redirect($url); } $this->NetCommons->handleValidationError($this->BlogEntry->validationErrors); } else { $this->request->data = $blogEntry; } $this->set('blogEntry', $blogEntry); $this->set('isDeletable', $this->BlogEntry->canDeleteWorkflowContent($blogEntry)); $comments = $this->BlogEntry->getCommentsByContentKey($blogEntry['BlogEntry']['key']); $this->set('comments', $comments); $this->view = 'form'; } /** * delete method * * @throws InternalErrorException * @return void */ public function delete() { $this->request->allowMethod('post', 'delete'); $key = $this->request->data['BlogEntry']['key']; $blogEntry = $this->BlogEntry->getWorkflowContents('first', array( 'recursive' => 0, 'conditions' => array( 'BlogEntry.key' => $key ) )); // 権限チェック if ($this->BlogEntry->canDeleteWorkflowContent($blogEntry) === false) { return $this->throwBadRequest(); } if ($this->BlogEntry->deleteEntryByKey($key) === false) { throw new InternalErrorException(__d('net_commons', 'Internal Server Error')); } return $this->redirect( NetCommonsUrl::actionUrl( array( 'controller' => 'blog_entries', 'action' => 'index', 'frame_id' => Current::read('Frame.id'), 'block_id' => Current::read('Block.id') ) ) ); } }