「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
記事/ウェブページ/テンプレートの同時編集を防ぐプラグインβ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) { 編集中状態の解除に失敗した時の処理 } });
なお、編集中状態の解除は、編集中にしたユーザーか、ブログ管理者権限のあるユーザーのみ行うことができます。
編集中にしたユーザー(かつブログ管理者権限がないユーザー)の場合は、鍵が一致している必要があります。
一方、ブログ管理者権限のあるユーザーの場合、鍵が一致していなくても、強制的に編集中状態を解除します。