concrete5のバージョン管理機能
Posted by admin at 8:01 日時 2013/08/05
concrete5のバージョン管理機能についてご紹介しようと思います。CMSにはありがちな編集履歴機能ですが、concrete5の履歴管理は履歴に含まれる範囲が広く、なかなか優れていると思います。
concrete5では、各ページの編集ドロップダウンメニューから「バージョン」リンクをクリックすることで編集履歴を確認することができます。
ページバージョンウィンドウ
バージョン履歴の表示はこのように一覧で表示されます。太字で示されたバージョンが承認されているバージョン、つまり非ログインユーザーに見えているページバージョンになります。
それぞれのバージョンには、編集を保存した際に入力したコメントが表示されています。コメントをクリックするとウィンドウが開き、その時点の完全なページをプレビューすることができます。また、それぞれのページバージョンの作成者と承認者、作成日時が表示されています。ページバージョンごとに誰が作成し、誰が承認したかを記録されることは、複数人で管理するウェブサイトの場合は重要な機能です。
右上に並んだボタンからは、バージョンに対する様々な操作を行うことができます。
比べる:チェックした2つ以上のバージョンが並べて表示され、どこが変更されたのか確認することができます。とはいえ、バージョンコメントはきちんと入れておいたほうがいいでしょう。
承認:選択したバージョンを承認します。この操作で過去のバージョンを承認すると、公開されているページの状態が承認したバージョンの時点に戻ります(ロールバック機能)。
バージョンをコピー:選択したバージョンを複製し、新たなバージョンを作成します。過去のバージョンを元に編集したいときに使います。
バージョンの削除:選択したバージョンを削除します。確認なしに削除されるので注意してください。
ページバージョンで管理されるデータ
では、concrete5のページバージョンでは、どこまでのデータが管理されるのでしょうか。それを読み解くには、データベース構造を読み解くのが最適です。
concrete5のページはPagesテーブルに格納されています。ところが、Pagesテーブルにはコンテンツは含まれていません。ページとしての付加情報(親ページのIDや、キャッシュを許可するかどうか、など)のみ格納されています。
concrete5のPageクラスはCollectionクラスを継承しています。コレクションというのはconcrete5の根本的な思想で、ブロックを組み合わせてウェブページを作成するconcrete5では、ページ内の最小単位は各ブロックになります。そしてそのブロックを集めてひとまとまりにしたものがコレクション、すなわちページということになります(正確には違いますがそういうイメージと思ってください)。
それでは、ページバージョンはどのテーブルに格納されているかというと、CollectionVersionsテーブルになります。このテーブルにはページ名、URLスラッグ、説明、バージョンコメント、作成したユーザー、承認したユーザー、テーマが含まれますので、これらの情報はそれぞれのバージョンで個別に保存されていることになります。ページバージョンに含まれないデータとしては、追加URLがあります。このCollectionVersionsテーブルにもやはりコンテンツは含まれません。
ではいったいコンテンツはどこに入ってるのかというと、さらにCollectionVersionBlocksテーブルにそれぞれのページバージョンに含まれるブロックはどれかと言う情報が記録されており、それぞれのブロックの付加情報はBlocksテーブルに記録されていて、各ブロックのコンテンツはさらにブロックごとに独立したテーブル(記事ブロックであればbtContentLocalテーブル)に格納されています。図に表すとこのようになります。
この図でもページ属性については省いていますので、実際はさらに複雑な構造になっています。
まとめ
長々と見て来ましたが、concrete5ではほぼ全てのページにまつわるデータが抽象化されてデータベースに保存されているため、ページに関連するほぼ全てのデータの履歴管理を実現できているというわけです。そのため、他のCMSとはバージョン管理の扱いが異なることもありますので、ご注意ください。
特に、WordPressに慣れている方はつい、過去のバージョンを承認するとコンテンツのみが戻ると思ってしまいがちですが、concrete5ではコンテンツだけでなくページのタイトルやURL、テーマの変更、カスタム属性も含めて過去のバージョンの完全な状態に戻りますので、うっかりタイトルが古いものに戻っているのに気づかないということがあります。
concrete5ではファイルマネージャーにアップロードしたファイルについても編集履歴機能がついています。ファイルマネージャーについてはまた改めてご紹介したいと思います。