コンポーザーの入力フォーム画面で権限セットを設定したい

2016年9月15日 at 0:20

みなさん、こんにちは

掲題の件につきまして、コンポーザーの入力フォームに権限のセットを追加し、
ページの公開時に権限を設定したいと考え、具体的に以下のことを行いました。

1.application/view/panels/details/page/composer.phpのformタグの中に以下のコードを挿入し、現在の権限セットを表示


<?php $c = Page::getCurrentPage(); $cat = PermissionKeyCategory::getByHandle('page');?>

<?php Loader::element('permission/lists/page', array(
'page' => $c, 'editPermissions' => $editPermissions
))?>
2.1と同じくapplication/view/panels/details/page/composer.phpを以下のように修正し、[公開]ボタンが押された際のajaxの挙動を変更
スクリプトタグ中に


savePermission: function(onComplete) {
var my = this;
my.$form.concreteAjaxForm({
url: '&cID=',
success: function(r) {
}
}).submit();
},

を追加し、

$('button[data-page-type-composer-form-btn=publish]').on('click', function() {
my.disableAutosave();
var submitSuccess = false;
my.$form.concreteAjaxForm({
url: '',
success: function(r) {
submitSuccess = true;
ConcretePageComposerDetail.savePermission();
window.location.href = r.redirectURL;
},
complete: function() {
if (!submitSuccess) {
// my.enableAutosave();
}
jQuery.fn.dialog.hideLoader();
}
}).submit();
});

として公開が成功したときのみ権限セットのパラメータをフォームで送るようにしました。


その結果、権限セットのパラメータ(pkID[1]など)をPOSTパラメータとして送信できたのですが、処理の結果当該ページの権限セットではなく、当該ページのページタイプの権限セットが変更されてしまいました。

当該ページの権限セットのみを変更したいのですが、どのようにすべきでしょうか?
ご存知の方がいらっしゃいましたら、ご教授お願いします。

以上です。よろしくお願いします。

タグ:

Re: コンポーザーの入力フォーム画面で権限セットを設定したい

2016年11月8日 at 12:37
お世話になります。
返信遅れてすいません。

これ、ハマるのですが・・・、
ページの権限を手動で設定できるようになるのは、
ページが公開された後でないといけません。

理論的には、
ページを公開完了した後まで権限のパラメータを渡して権限の設定を変更すれば良いかなーとも思ったのですが、ちょっとコアの深いところの回収が必要ですので余り現実的ではないです。

Hissy が作った Page Schedule Access Control
http://www.concrete5.org/marketplace/addons/page-schedule-access-control
もページが公開された後のみ、設定を変更できます。


よろしくお願いいたします。