記事/ウェブページ/テンプレートの同時編集を防ぐプラグインβ2(その3・Data APIでの編集中状態の設定と解除)

昨日に続き、記事/ウェブページ/テンプレートの同時編集を防ぐプラグインβ2で、JavaScriptライブラリを使って、Data APIで記事等の編集中状態を設定/解除する方法を解説します。

1.ライブラリの組み込み

当プラグインで拡張したエンドポイントに対応するために、JavaScriptのライブラリを組み込みます。
まず、Data APIのライブラリを組み込んだ後、以下のscriptタグで当プラグインのライブラリを組み込みます。

<script type="text/javascript" src="http://Movable Typeのインストール先/mt-static/plugins/ExclusiveLock/js/extension.js"></script>

そして、Data APIのオブジェクトを初期化した後、以下の行を実行します。

ExclusiveLockDataAPI.extendEndPoints(Data APIのオブジェクト);

2.編集中状態の設定

編集中状態を設定するには、認証した状態で、以下のメソッドを実行します。

オブジェクトメソッド
記事lockEntry
ウェブページlockPage
テンプレートlockTemplate

メソッドのパラメータとして、サイトID/オブジェクトのID/ダミーのオブジェクト(プロパティ/値の組み合わせは何でも良い)を渡します。
編集中状態の設定に成功すると、レスポンスのオブジェクトの「lock_key」というプロパティに、鍵が返されます。
鍵は32文字の英数字です。
この鍵は、編集中状態を解除したり、編集中状態のオブジェクトを保存/削除したりする際に使います。

例えば、記事を編集中して鍵を得るには、以下のような処理を行います。
変数lock_keyに鍵が代入されます。

api.lockEntry(サイトID, 記事のID, { dummy : 1 }, function(response) {
  if (response.error) {
    編集中状態の設定に失敗した時の処理
  }
  var lock_key = response.lock_key
});

3.編集中状態の延長

編集中状態にした記事等で、その状態を延長したい場合は、認証した状態で以下のメソッドを使います。

オブジェクトメソッド
記事relockEntry
ウェブページrelockPage
テンプレートrelockTemplate

メソッドのパラメータとして、サイトID/オブジェクトのID/鍵を表すオブジェクトを渡します。
鍵を表すオブジェクトには、「lock_key」というプロパティを作り、その値に鍵を代入します。
延長に成功すると、レスポンスのオブジェクトの「lock_key」というプロパティに、新しい鍵が返されます。

例えば、記事の編集中状態を延長して新しい鍵を得るには、以下のような処理を行います。
変数lock_keyに鍵が代入されます。

api.relockEntry(サイトID, 記事のID, { lock_key: '鍵' }, function(response) {
  if (response.error) {
    編集中状態の延長に失敗した時の処理
  }
  var lock_key = response.lock_key
});

なお、編集中状態の延長は、編集中に設定したユーザーしか行うことができません。

4.編集中状態の解除

記事等の編集中状態を解除するには、認証した状態で以下のメソッドを使います。

オブジェクトメソッド
記事unlockEntry
ウェブページunlockPage
テンプレートunlockTemplate

メソッドのパラメータとして、サイトID/オブジェクトのID/鍵を表すオブジェクトを渡します。
鍵を表すオブジェクトには、「lock_key」というプロパティを作り、その値に鍵を代入します。
解除に成功すると、レスポンスの値が「1」になります。

例えば、記事の編集中状態を解除するには、以下のような処理を行います。

api.unlockEntry(サイトID, 記事のID, { lock_key: '鍵' }, function(response) {
  if (response.error) {
    編集中状態の解除に失敗した時の処理
  }
});

なお、編集中状態の解除は、編集中にしたユーザーか、ブログ管理者権限のあるユーザーのみ行うことができます。
編集中にしたユーザー(かつブログ管理者権限がないユーザー)の場合は、鍵が一致している必要があります。
一方、ブログ管理者権限のあるユーザーの場合、鍵が一致していなくても、強制的に編集中状態を解除します。