-
Notifications
You must be signed in to change notification settings - Fork 2
Home
ワークフローに関連するプラグイン。
コンテンツのワークフロー関連で使用するコンポーネント。
const STATUS_PUBLISHED = '1';
const STATUS_APPROVED = '2';
const STATUS_IN_DRAFT = '3';
const STATUS_DISAPPROVED = '4';
登録アクションでリクエストパラメータ(request->data)からステータスをパースするメソッド
(例)
if ($this->request->isPost() || $this->request->isPut()) {
$data = $this->data;
$data['Announcement']['status'] = $this->Workflow->parseStatus();
unset($data['Announcement']['id']);
if ($this->Announcement->saveAnnouncement($data)) {
$this->redirect(NetCommonsUrl::backToPageUrl());
return;
}
$this->NetCommons->handleValidationError($this->Announcement->validationErrors);
} else {
if (! $this->request->data = $this->Announcement->getAnnouncement()) {
$this->request->data = $this->Announcement->createAll();
}
$this->request->data['Frame'] = Current::read('Frame');
}
ブロックのパーミッションを取得するメソッド。主にブロックの権限設定で使用する
後で、リンク張る
上記以外は、Workflow/Controller/Component/WorkflowComponent.phpを参照して下さい。
public $actsAs = array(
'Workflow.Workflow',
);
(使い方 例)
$conditions = array(
'FaqQuestion.faq_id' => $this->viewVars['faq']['id'],
);
if (isset($this->params['named']['category_id'])) {
$conditions['FaqQuestion.category_id'] = $this->params['named']['category_id'];
}
$faqQuestions = $this->FaqQuestion->getWorkflowContents('all', array(
'recursive' => 0,
'conditions' => $conditions
));
権限によって、コンテンツの閲覧できる条件(conditionsのみ)を取得する
(使い方 例)
$query['conditions'] = $this->BbsArticle->getWorkflowConditions(array(
'BbsArticleTree.parent_id' => null,
'BbsArticle.bbs_id' => $this->viewVars['bbs']['id'],
));
コンテンツのステータスに関するバリデーションを設定する。各プラグインは何もする必要はない。
ビヘイビアを設定したModelに対して、ワークフロー関連のフィールドのデータを更新する。各プラグインは何もする必要はない。
コンテンツの閲覧権限チェック
(使い方 例)
if (! $this->FaqQuestion->canReadWorkflowContent()) {
$this->throwBadRequest();
return false;
}
・・・コンテンツの作成権限チェック
(使い方 例)
if (! $this->FaqQuestion->canCreateWorkflowContent()) {
$this->throwBadRequest();
return false;
}
コンテンツの編集権限チェック
(使い方 例)
1.データ取得
$faqQuestion = $this->FaqQuestion->getWorkflowContents('first', array(
'recursive' => 0,
'conditions' => array(
$this->FaqQuestion->alias . '.faq_id' => $this->viewVars['faq']['id'],
$this->FaqQuestion->alias . '.key' => $faqQuestionKey
)
));
2.権限チェック
if (! $this->FaqQuestion->canEditWorkflowContent($faqQuestion)) {
$this->throwBadRequest();
return false;
}
コンテンツの削除権限チェック(※一度でも公開した場合は、公開権限があるユーザのみ削除可能とする)
(使い方 例)
1.データ取得
$faqQuestion = $this->FaqQuestion->getWorkflowContents('first', array(
'recursive' => -1,
'conditions' => array(
$this->FaqQuestion->alias . '.faq_id' => $this->data['FaqQuestion']['faq_id'],
$this->FaqQuestion->alias . '.key' => $this->data['FaqQuestion']['key']
)
));
2.権限チェック
if (! $this->FaqQuestion->canDeleteWorkflowContent($faqQuestion)) {
$this->throwBadRequest();
return false;
}
public $helpers = array(
'Workflow.Workflow',
);
(使い方 例)
<?php echo $this->Workflow->buttons('FaqQuestion.status'); ?>
(使い方 例)
1.CommentBehaviorの設定
public $actsAs = array(
'Comments.Comment',
);
2.Controllerでデータ取得
$comments = $this->FaqQuestion->getCommentsByContentKey($this->request->data['FaqQuestion']['key']);
$this->set('comments', $comments);
3.Viewファイルの指定
<?php echo $this->Workflow->comments(); ?>
(使い方 例)
1.CommentBehaviorの設定
public $actsAs = array(
'Comments.Comment',
);
2.Viewファイルの指定
<?php echo $this->Workflow->inputComment('FaqQuestion.status'); ?>
3.登録処理
CommentBehavior::beforeValidate()で入力チェックをし、CommentBehavior::afterSave()で登録する
4.keyフィールドがテーブルに必要
5.$this->reqest->data['Block']['key']が必須となる
<?php echo $this->Form->hidden('Block.key'); ?>
(使い方 例)
(使い方 例)
・・・コンテンツの編集権限チェック
(使い方 例)
・・・コンテンツの削除権限チェック(※一度でも公開した場合は、公開権限があるユーザのみ削除可能とする)
(使い方 例)