PowerCMS X ブログ

2023-12-03

運用ミスを防ぐ観点から機能や設定を考える

PowerCMS Xではアセット(ファイルアップロード)機能について、ステータス管理が標準で可能になっていて、下書き(非公開)、公開、日時指定公開、時限公開(日時指定で非公開)ができます。シビアに適時開示しなければならないIR情報や事前に漏洩しては困る新商品情報などを管理するために役立ちます。

しかしながら、実際のウェブサイトの運用においては、それだけでは事足りず、色々な要求が出てきます。その一つが「記事に添付したアセットの同時公開」ですが、PowerCMS Xにはそれを実現するためのいくつかの方法が提供されています。

バイナリカラムや添付ファイルは「オブジェクトとファイルが1対1」で関連付いていてオブジェクトが公開されれば同時に公開され、削除や非公開化されると非公開になります。

問題は「UploadUtilities」プラグインの「ステータス同期」機能なのですが、添付ファイルやバイナリカラムのファイルと違い、記事アセットやページアセットなど複数のオブジェクトと関連付けされていることから、単純に参照元のオブジェクトのステータスと連動させるわけにはいきません。

そこで、「すべての参照元オブジェクトのステータスが同じ場合のみ」アセットのステータスが同期する、がこれまでの仕様でした。

しかし、実際の運用では上手くいかないケースが多発します。

  • 記事を公開したのにアセットが公開されない
  • 意図せずアセットが非公開にされた

自分としてはこのタイミングで公開されると思っていたのに、他の未公開の記事にも関連付けされていた、というケースで、この問題が起こりえます。自分がアップロードした画像が他の記事に使われていた、など、気付かないことがあるからです。

そこで、(互換性を維持した上で)機能を変更できるようにしました。

UploadUtilitiesプラグインに機能を追加

UploadUtilitiesのプラグイン設定画面

考え方としては

  • アセットとリンクしているオブジェクトがどれか一つでも公開されたら、アセットは公開される
  • 一度公開されたアセットのステータスは変更しない

というものです。後者は「一度公開されたものはインターネット上に公開されたものなのだから非公開にする意味はなかろう」という考え方によります。ただ、それはウェブサイトを運用する側のポリシーによりますから、以下のように機能追加しました。もちろん互換性を保った上で。

参照しているオブジェクトが一つでも公開されたら関連付けされているアセットは公開される

この時、オブジェクトが非公開にされたときは、参照元オブジェクトのステータスのうちのステータスの最大値になる(つまり、公開されているオブジェクトと関連付いているのなら非公開にはならない)ようにします。

公開済みのアセットは非公開にしない

もしくは、公開済みのアセットは非公開にならない「一度公開されたアセットは、参照元オブジェクトのステータス変更の影響を受けない」というものです。考え方によるのですが、「一度インターネット上に公開されたものは、非公開にしたところで意味はない」と考えれば、それはそれで合理的にも思えます。

設定の組み合わせによって、以下のようにできるようになりました。

  • 他のオブジェクトで利用されている場合、すべてのオブジェクトのステータスが一致した時のみ同期します。
  • オブジェクトの公開時はアセットのステータスを公開、非公開時は関連オブジェクトのうち終了以外の最も値の大きなステータスにセットします。
  • 他のオブジェクトで利用されている場合、すべてのオブジェクトのステータスが一致した時のみ同期します。一度公開されたアセットのステータスは変更しません。
  • オブジェクトの公開時はアセットのステータスを公開しますが、一度公開されたアセットのステータスは変更しません。

 

カテゴリー:プラグイン | サイト制作全般

投稿者:Junnama Noda

ブログ内検索

アーカイブ