LoginSignup
1
1

More than 5 years have passed since last update.

a-blog cmsで管理ページの削除ボタンを無効化する

Posted at

a-blog cmsの管理ページ「ブログ」「カテゴリー」「ユーザー」の詳細画面は、青い「保存」ボタンのすぐ横に赤い「削除」ボタンがあります。

このボタンが「押してしまいそうで怖い」と言われたので(一応、onclickで警告は出ますが)、根幹の設定に関わる親ブログのブログ・カテゴリーの削除操作を禁止してみました。

a-blog cmsの重要な機能を封印するので、取り扱いには注意してください。

管理ページのhead要素について

管理ページのhead要素テンプレートは /themes/system/include/head/ 以下にあります。これを利用中のテーマの同じ階層に複製・編集すれば良いのですが、バージョンアップ後もコアのCSS・JSに影響を出ないよう編集するのが難しいです。

唯一問題が起きても大丈夫そうなのが、「ブログのキーカラー」のCSSを呼び出している以下のファイルです。

/themes/system/include/head/blog-color.html

ここにコードを追記することにします。

CSSを追加する

以下のとおりa-blog cmsのIFブロックとCSSを追加してください。

blog-color.html
<!-- BEGIN_IF [%{BID}/eq/1] -->
<style>
/* 管理ページ内でサイトの根幹に関わる設定の削除を禁止する */
.acms-admin-form input[name^="ACMS_"][name*="Blog_Delete:"],
.acms-admin-form input[name^="ACMS_"][name*="Category_Delete:"] {
    position: relative;
    background: #ccc none;
    color: #333;
    border-color: #999;
    opacity: .5;
    pointer-events : none;
}
</style>
<!-- END_IF -->

まず、IFブロックで封印するのはルートのブログのみとしました。
さらにフォームのボタン内のname属性を解析し、「ACMS_」ではじまり「Blog_Delete:」「Category_Delete:」を含むボタンを無効化しています。

pointer-eventsはIE11以降とモダンブラウザで有効になり、CSS側でクリックイベントを禁止します。

補足

「JavaScriptでonclick禁止とdisabled付与をすればいいのでは?」と突っ込まれそうなのですが、blog-color.htmlテンプレートはacms.jsの呼び出しよりも前に書かれているため、ACMSオブジェクトを利用することができません。

管理画面にも、head要素末尾に安全に自作テンプレートを追加できるようになればいいなと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1