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

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

1.仕様

認証した状態でlistEntries等のメソッドを実行し、その際にfieldsパラメータに「lock_info」を指定すると、記事等の個々のオブジェクトにlock_infoフィールドが追加されます。
lock_infoフィールドには、「locking」と「author」というプロパティがあります。
編集中の記事等では、lockingプロパティの値が1になり、author.displayNameプロパティに編集中のユーザーの名前が入ります。
一方、編集中でない記事等では、lockingプロパティの値は0になり、authorプロパティは追加されません。

2.例

以下のリストは、listEntriesメソッドで記事一覧を取得して、そのタイトルと編集中のユーザーを、IDがresultのtable要素に流し込む例です。
なお、変数apiにはData APIのオブジェクトが代入されていて、なおかつ認証の処理も済んでいるものとします。

api.listEntries(サイトID, { fields: 'title,lock_info' }, function(response) {
  if (response.error) {
    エラー処理
  }
  var tbl = jQuery('#result');
  var entries = response.items;
  for (var i = 0; i < entries.length; i++) {
    var html = '<tr>';
    html += '<td>' + entries[i].title + '</td>';
    html += '<td>';
    if (entries[i].lock_info.locking) {
      html += entries[i].lock_info.author.displayName;
    }
    html += '</td></tr>';
    tbl.append(html);
  }
});