No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
plugins/daaah
README.md

README.md

「DAAAH」(DiffAndApprovalAndHistory) ver0.5

「DAAAH」はMODXにはなかった履歴と承認と差分表示の機能を追加する モジュール&プラグインです。 次のような機能があります。

  • 更新履歴の管理
  • 現在のデータと更新前データの差分表示(Diff機能)
  • いじって保存してしまったデータを更新前データへ復帰(ロールバック機能)
  • 一般公開のための承認ワークフロー

eZ Publishのような気合の入ったロールバック&ワークフロー機能ではないですが、MODXをビジネスベースで使う場合の不満点だった機能を一応補完できます。

※動作テストは1.0.4Jで行っていますが、たぶん0.9系でも使用できると思います。

下記の点にご注意ください。

  • 管理する履歴は編集操作ごとの履歴ではなく承認ごとの履歴です。そのため承認する人がいないと履歴は追加されません。
  • MODXのキャッシュ機能は使えません。オンにしていても無効になります。
  • 他リソースの情報を出力できるスニペット(Wayfinder・Ditto)を利用している場合は改造が必要(インストールマニュアルに詳しく書いてあります)
  • 【重要】承認すると、投稿画面設定で非公開にしていても自動的に公開になります。
  • 公開日の予約([pub_date])はできなくなります。
  • 承認待ち投稿の一覧や投稿・編集時にPMを送信する機能はありません。メールなどで連絡を取り合って承認を求める必要があります。

■インストール

※XAMMPの場合は「for_xampp」の中のファイルを使ってください。

1.「DAAAH.sql」をphpMyAdmin等を使用して、MODXのDBへ投入 (phpMyAdminならSQLのフォームを開いて、コピー&ペースト、「実行」で投入できます。)

2.モジュールを新規作成、必ずモジュール名は「DAAAH」と名付けてください。

3.モジュールのフォームへ「module_DAAAH.php」の中身をコピー&ペーストして保存してください。

4.プラグインを新規作成、プラグイン名称はなんでもいいですが「DAAAH」が分かりやすいかも。

5.プラグインのフォームへ「plugin_DAAAH.php」の中身をコピー&ペーストして保存してください。

6.プラグインのシステムイベントは 「OnDocFormSave」「OnDocFormRender」「OnLoadWebPageCache」 「OnLoadWebDocument」「OnDocFormDelete」に設定してください。

7.「plugins」-「daaah」フォルダにある「config.inc.php」を使用環境に合わせて、設定してください。※設定方法は後述

8.「plugins」-「daaah」フォルダを/assets/plugins/に配置してください。

9.使用できるようになりました。ひとまず、admin権限でログインし、トップページの編集画面を開き、画面下部の承認のドロップダウンを操作してワークフローのすべてで「承認する」を選択して保存してください。 トップページの一般公開の承認を行うことができました。

※dittoとWayfinderを使用している場合、承認済みコンテンツの内容をみるため使用するテーブルを変更するようにしてください。  (ホントはそういうのはアレなのは分かっていますが、とりあえず現バージョンでは、勘弁してください。)

Wayfinder(ver2.0)の場合

/assets/snippets/wayfinder/wayfinder.inc.php
$modx->getFullTableName("site_content");
 ↓
$modx->getFullTableName("approvaled_site_content");

$modx->getFullTableName("site_tmplvar_contentvalues");
 ↓
$modx->getFullTableName("approvaled_site_tmplvar_contentvalues");

Ditto(ver2.1.0)の場合

/assets/snippets/ditto/classes/ditto.class.inc.php
$modx->getFullTableName("site_content");
 ↓
$modx->getFullTableName("approvaled_site_content");

$modx->getFullTableName("site_content");
 ↓
$modx->getFullTableName("approvaled_site_content");

$modx->getFullTableName("site_tmplvar_contentvalues");
 ↓
$modx->getFullTableName("approvaled_site_tmplvar_contentvalues");

■設定ファイル「config.inc.php」の記述方法

このファイルでは承認機能(ワークフロー)部分の設定を記述します。

1.単純設定

結局、差分と履歴管理しか使う必要のない場合や、結局、1つのアカウントしか 使わない場合は下記のように設定します。

$approval_level = 1;
$level_and_role [ 1 ] = "1";
$level_and_mes [ 1 ] = "承認";
$a_approval_string [ 0 ] = "承認しない";
$a_approval_string [ 1 ] = "承認する";

2.ワークフロー設定1

各部門に上長がいて、ページを編集するユーザーと公開承認を行う上長ユーザーが いる場合は下記のようになります。 まず、「ユーザー」-「ロール管理」で2つのロールを作ります。 1つのロールは「ページ編集ユーザー」で「ページの公開」の公開を外してください。 もう1つのロールは「上長ユーザー」で「ページの公開」の公開をつけてください。 「上長ユーザー」のロールIDが3の場合、次のような記述になります。

$approval_level = 1;
$level_and_role [ 1 ] = "1/3"; // 3は上長ユーザーのロールID(1はadmin)
$level_and_mes [ 1 ] = "承認";
$a_approval_string [ 0 ] = "承認しない";
$a_approval_string [ 1 ] = "承認する";

各部門で編集できるページはMODX標準の「ユーザー」-「管理画面のアクセス許可」で設定してください。 各部門の編集ユーザーと上長は、同じページをアクセスできるように設定してください。 これにより各部門ごとに編集できるページを設定することができます。 各部門ごとに編集できるページを設定することで、各部門の上長が公開許可を出すことが可能なページを細かく設定できます。

3.ワークフロー設定2(実は推奨設定)

各部門に上長がいて、ページを編集するユーザーと公開承認を行う上長ユーザーがいる場合、かつ、Web管理の総括部門として総務部等がある場合では、下記のようになります。 まず、「ユーザー」-「ロール管理」で3つのロールを作ります。 1つのロールは「ページ編集ユーザー」で「ページの公開」の公開を外してください。 もう1つのロールは「上長ユーザー」で「ページの公開」の公開をつけてください。 最後のロールは「総務ユーザー」で「ページの公開」の公開をつけてください。 「上長ユーザー」のロールIDが3、「総務ユーザー」のロールIDが4の場合、 次のような記述になります。

$approval_level = 1;
$level_and_role [ 1 ] = "1/3"; // 3は上長ユーザーのロールID(1はadmin)
$level_and_role [ 2 ] = "1/4"; // 4は総務ユーザーのロールID(1はadmin)
$level_and_mes [ 1 ] = "部門承認";
$level_and_mes [ 2 ] = "Web総括承認";

$a_approval_string [ 0 ] = "承認しない";
$a_approval_string [ 1 ] = "承認する";

■使い方

ページの編集画面の下部に承認操作と差分確認を行うことができるインタフェース が表示されます。

上長が承認したいときは、この編集画面から「承認する」を選択して、保存してください。 すべての人が「承認する」を選択したとき、承認データとして更新履歴とともに記録され、 一般公開されます。

その後、ページの内容を改変した場合は再び全員が「承認する」を選択しない限り、 承認時点の内容で表示されます。

ページの編集画面の下部「編集中ドキュメントの更新履歴/差分表示」ボタンを押すと 編集中のページと以前承認を受けたページとの差分を表示できます。 (PEARのText/Diffを利用しています。)

タブを操作して、様々な機能を利用できます。 中でも「編集内容を戻す」は、編集内容を昔の状態へ戻すことが可能です。 ようはロールバック機能なので、これだけでも利用価値はあるのかなと思っていたりします。

■ライセンスについて

当然ながらMODXのGPLに則り、「DAAAH」モジュール&プラグインはGPLで公開します。 よって、利用に関して特別な費用は発生しません。 自由に使ってください。 ただし、利用に関して生じる不具合につきましては、当方で責任を持つことはできかねます。