タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

Dreamweaver風チェックアウト機構を実現する Checkoutプラグイン

Movable Type Advent Calendar 2013 2日目の記事のネタのためにプラグイン作りました。


会社など複数人で更新を行っていると、自分がこれから編集する記事は他の人が編集中ではないのか、また自分が編集した内容を他の人が上書きしてしまわないか、不安になることがあります。

プロ御用達のWebオーサリングソフト「Dreamweaver」では、このための機構としてチェックアウトを備えています。

ファイルをチェックアウトする操作は、「今このファイルを操作しているので触らないこと!」と宣言することと同じです。ファイルがチェックアウトされると、ファイルパネル内にチェックアウトした人の名前が表示され、赤色のチェックマーク(他のチームメンバーがファイルをチェックアウトした場合)または緑色のチェックマーク(本人がファイルをチェックアウトした場合)がそのファイルのアイコンの隣に表示されます。

Dreamweaver / ファイルのチェックインとチェックアウト

MovableTypeでもチェックアウトしたくなったので、作りました。

チェックアウトされている記事を上書き更新.png

需要皆無のニッチ機能な気がしますが、無償公開します。

注意事項

  • これはフリーウェアです。従ってご利用は自己責任となります。作者はサポートの義務も、責任ももちません。
  • 一括編集および削除、Data API経由の更新はチェックアウトによるブロックが効きません(version 0.1時点)

動作環境

機能

  • ブログ記事/ウェブページのチェックアウト・チェックイン
  • 一覧でチェックアウト状態をアイコン表示
  • 記事一覧から、複数記事を一括チェックアウト・チェックイン
  • 一覧でのチェックアウト状態でのフィルタリング対応(クイック&任意の条件)

将来実装したい機能

  • ダッシュボードウィジェットでチェックアウト状態の記事を一覧表示
  • テンプレートチェックアウト
    • MTでサイト構築の仕事をしていて、元々こちらの方が欲しかった

基本的な使い方

記事を作成するとき

通常通り記事を作成してください。特別な操作は不要です。

記事を保存すると、自動的にチェックアウト状態になるので、編集を完了したらチェックアウトの取消(チェックイン)をします。

記事を更新するとき

更新作業の流れは以下の通りです。

  1. チェックアウト
  2. 編集・保存
  3. チェックアウト取消(チェックイン)

チェックアウト

記事編集ページを開くと、上部にチェックアウト状態を示すメッセージが表示されます。

編集画面.png

まだ誰もチェックアウトしていない場合「まだチェックアウトされていません」というメッセージと共に、チェックアウトを促すリンクが表示されます。

リンクをクリックすると、チェックアウト操作が行われ、他のユーザによる更新操作がロックされます。

なお、すでにチェックアウトしている場合、それが自身によるものか他人のものかによって、以下のメッセージが表示されます。

編集画面チェックアウト済.png

編集画面チェックアウト済(他者).png

編集・保存

通常通り編集作業を行ってください。

チェックアウト取消(チェックイン)

操作完了後は、上部に表示されているメッセージより「チェックアウトの取消」を選択すれば、チェックイン完了です。

チェックアウト状態

チェックアウトされている記事は、一覧で記事タイトルの前にチェックマークが付きます。

自分がチェックアウトしているものはcheckout1.png他人がチェックアウトしているものはcheckout2.pngで示します。

記事一覧.png

こんなときは

どれをチェックアウトしたか忘れた

クイックフィルタ「チェックアウトされた記事」を提供しています。 このフィルタを使用すると、自分がチェックアウトしている記事で絞り込むことができます。

システムフィルタ.png

チェックアウトユーザー名で探したいときは、新しいフィルタで「チェックアウトユーザー」を使用します。

フィルタ.png

誰がチェックアウトしているか調べたい

一覧の「表示オプション」より「チェックアウトユーザー」を選択すると、リストにユーザー名が表示されます。

まとめてチェックイン・チェックアウトしたい

一覧で対象を選択してアクションドロップダウンより、選択したものに対してまとめて操作を行えます。

プラグインアクション.png

選択可能なアクションは以下の通り。

  • チェックアウト
    • 選択対象の中から、未チェックアウトのもののみチェックアウトします。
  • チェックアウトの取り消し
    • 選択対象の中から、自身がチェックアウトしているもののチェックアウトを取り消します。
  • チェックアウト(上書きを許可)
    • 選択対象について、チェックアウト状態を無視して、すべて自分のチェックアウトとします。
  • チェックアウトの取り消し(強制)
    • 選択対象について、他人のものも含めてすべてのチェックアウトを取り消します。

保存と同時にチェックインしたい

チェックアウトしている記事の更新ボタンの上に「チェックイン」チェックボックスが表示されます。

更新と同時にチェックイン.png

チェックして「更新」を押すと、保存後自動的にチェックアウトの取消を行ってくれます。

上書きの危険が無いことがわかってるから、チェックアウトとかせずにそのまま更新したい

未チェックアウトの記事の更新ボタンの上に「チェックアウトせずに更新」チェックボックスが表示されます。

チェックアウトせずに更新.png

チェックして「更新」を押すと、保存時のチェックアウト状態のチェックをスキップできます。(ご利用は計画的に)

ダウンロード

https://github.com/uzuki05/mt-plugin-Checkout


明日は @usualoma さんです。