====== 移動プラグイン ====== ---- plugin ---- description: リンク構造を維持したまま、ページ・メディアファイル・名前空間を移動する author : Michael Hamann email : michael@content-space.de type : admin, action, helper lastupdate : 2017-01-07 compatible : Hrun, Detritus, "Elenor Of Tsort" depends : conflicts : autolink2 similar : editx, pagemove tags : maintenance, move, namespace, rename downloadurl: https://github.com/michitux/dokuwiki-plugin-move/zipball/master bugtracker : https://github.com/michitux/dokuwiki-plugin-move/issues sourcerepo : https://github.com/michitux/dokuwiki-plugin-move/ donationurl: screenshot_img : ---- このプラグインはメディアファイルを含んだページと名前空間を移動し、これらのページを指している全てのリンクとメディア参照を自動的に調整します。 [[plugin:pagemove|pagemoveプラグイン]]とは違い、リンクとそれ以外とを正確に識別するために、このプラグインは DokuWiki のパーサーを使用します。 翻訳の一部、コード構造の一部、ユーザーインターフェースの一部等、このプラグインの一部は、Gary Owen・Arno Puschmann・Christoph Jähnigen の古い[[plugin:pagemove|pagemoveプラグイン]]から借用しています。 ===== インストールと注意事項 ===== このプラグインは DokuWiki の data ディレクトリ内のファイルを移動し、多くのページを自動的に変更します。 プラグインは正しくテストされているにもかかわらず、自分のケースで期待どおりに動作せず、wiki が矛盾した状態のままになる可能性が常にあります。 このプラグインはまだ新しいので、特定の場合には正しく動作しないかもしれません。 **大きな変更を加える予定の場合は特に、このプラグインを使用する前にバックアップを作成してください!** **警告**:このプラグインは ACL ルールを更新しません。 例えば、特定の wiki ページに対して読込拒否の ACL ルールがあった場合、該当のページを移動した後にはこのルールは何の効力もありません。 プラグインの最新バージョンを示す、上記のダウンロード URL と[[ja:plugin:plugin|プラグイン管理]]を利用してプラグインをインストールしてください。 プラグインを手動インストールするには、[[ja:plugins|プラグイン]]を参照して下さい。 :!: **このプラグインの既存のインストールを更新する場合、古いバージョンをアンインストールした後、新しいバージョンを再インストールする必要があるかもしれません。** 深刻な問題(例:inconsistent application menues with the old plugin screen combined with several unlogical [admin] buttons)がプラグインの更新後に発見されています。 例えば、//2014-09-29 "Hrun"// 版の DokuWiki から //2015-08-10 "Detritus"// 版の DokuWiki に更新した時 ===== 使用方法 ===== 単純なページ名変更を除き、プラグインを利用するためには[[ja:config:manager|マネージャー権限]]が必要です。 ==== 現在のページや名前空間の移動 ==== {{https://cloud.githubusercontent.com/assets/86426/2829053/251df0a6-cf9e-11e3-88d7-76c991483538.png?200 |Screenshot}} プラグインの主要機能です。 変更したいページ(または名前空間内のページ)を操作するには、管理者メニューを開け、追加プラグイン一覧から移動プラグインを選択します。 選択肢の中で現在のページか現在の名前空間を選択し、移動先を指定します。 開始をクリックすると変更内容をプレビューし、移動操作を開始できるようになります。 サブ名前空間内にページが存在し直下にはページがない名前空間を移動するには、ツリーベースの移動方法を利用して下さい。 ==== ツリー型の移動 ==== より複雑な再構築を計画するために、移動プラグインにはツリー型の移動管理が付属しています。 上記ページ内のリンクからこの画面を開きます。 {{https://cloud.githubusercontent.com/assets/86426/2829055/2e6d9ba2-cf9e-11e3-8e8c-f8f43fff468f.png |Screenshot}} ツリー型の移動管理画面では、実現しようとする移動や名称変更をすべてドラッグ&ドロップ操作でおこなうことができます。配置構造のツリーが目的のレイアウトになるまで、ページ、メディアファイル、名前空間を移動するだけで完了です。2017-01-07 のバージョンからは、チェックボックスを使用して複数のページ、メディアファイル、名前空間を選択して同時に移動できます。選択されたファイルのうちのひとつを移動すると、選択された他のファイルも同時に同じところに移動します。選択されたファイルのうちひとつでも(名前のバッティングなどで)指定の場所に移動できないとき、この複数同時移動は実行されません。 2017-01-07 のバージョンから、新規の名前空間の作成もできるようになりました。「ルート名前空間」の横に表示されている「+」アイコンをクリックして作成します。作成後に希望する位置に移動したり、リネームしたりもできます。ただし、保存されるのは中にページやメディアファイルが入っている名前空間(空でない名前空間)のみです。 ==== 単純なページ名変更 ==== {{https://cloud.githubusercontent.com/assets/86426/2829067/4b7ad5a2-cf9e-11e3-98e8-f6de80ac7277.png?150 |Screenshot}} この機能は設定管理で ''allowrename'' オプションを設定されたユーザーとグループが利用できます。 ''TEMPLATE_PAGETOOLS_DISPLAY'' イベントを実装する全てのテンプレートで自動的に有効になります。\\ 実際にはソースコード内に定義されており ''dokuwiki''・''arago''・''bootstrap3'' テンプレートだけが有効になります(''action/rename.php'' の 45 行目)。 ユーザーは、現在いるページの名前を単純に変更(または移動)できます。 {{https://cloud.githubusercontent.com/assets/86426/2829070/4ec6c932-cf9e-11e3-8583-b046bd45c081.png?250| Screenshot}} ===== 他のプラグインへの対応 ===== 移動プラグインはページやメディアファイルが移動した際に、他のプラグインが独自のデータを移動すること、その構文を調整することを可能にします。 現在、以下のプラグインが対応しています: * [[plugin:include|include プラグイン]] * [[plugin:struct|Struct プラグイン]] 明示的に互換性を記載していないプラグインはおそらく調整されていません。 ==== ユーザー向け技術解説 ==== 移動プラグインは DokuWiki の検索インデックスを利用して、移動したページやメディアファイルへのリンクを含むページを把握し、その後 DokuWiki のパーサーを使用して、移動の影響を受けるページに含まれるすべてのページやメディアファイルへのリンクを特定し、必要があれば書き換えます。ページに修正が必要なとき、そのページの新しいバージョンを作成します(しかし、これはバッチ処理として行うので、ツリーベースの移動管理画面を使ったときなど、多数のページを移動したときも、変更されるページごとのバージョン変更は1回か2回だけになります)。単純な検索・置換よりもずっと複雑な変更にも対応できます。たとえば %%[[Foo Bar]]%% というリンクの記述があったとき、もし foo_bar というページが移動されたのであれば判断対象になりますが、DokuWiki のパーサーを使うのでコードブロックやプラグインの特殊な記法などが変更されることはありません。プラグイン側からのサポートも可能で、たとえば include プラグインの記法は正しく調整されるようになっています。そうすることで安定した運用に寄与できます。個別のページは DokuWiki が内蔵する巻き戻し機能を使って以前の状態に戻すこともできます。 ページや名前空間を移動したとき、記事や記事グループ、上位の名前空間に含まれるすべての内部リンクがチェックされ、変更されるのですか? アンドゥ機能はありますか? 最終確認の「Yes/No」はありますか? はい、すべてのリンクはそのように(移動されるページに記述された相対的なリンクも、移動されるページやメディアファイルへのリンクも)調整されます。現在のところ、変更内容を先に確認する機能はありません。しかし、DokuWiki のパーサーを使用したプラグインなので、移動したページやメディアファイルへのリンク以外が変更されることはないはずです。ページが変更されるということは、そのページの新しいバージョンが作成されるということなので、後から変更内容を確認したり、必要であれば巻き戻すことも可能です。 メディアファイルなどを移動したとき、きちんと処理するために、他にどのような作業がされているのですか? ページもメディアファイルも改変があればバージョン管理がされ、古いバージョンはそれぞれ attic ディレクトリと media_attic ディレクトリに保存されます。こういったファイルも移動が必要です。ページには他のメタデータも付随します。さらに、検索インデックスにも移動先の場所で再インデックスするなどの調整が必要です。移動プラグインはユーザーがページやメディアファイルの名前を変更したり場所を移動したとき、こういった裏方仕事も全部処理します。使っているプラグインによっては、さらにこの他にも移動する必要のあるデータがあるかもしれません。移動プラグインによるページの移動にプラグインのほうで対応することも可能です。たとえば struct プラグインはページ移動があればデータベースを調整する機能を持っています。 「以前のリビジョン」や「最近の変更」はどうなりますか? 編集履歴のデータもページといっしょに移動させます(ページ移動を反映した新しい履歴も追加します)。最近の履歴として2回の変更が追加になります。以前の名前での消去と新しい名前での作成です。「最近の変更」では書くページについて1回分の変更しか表示されないので、それより前の変更は表示されません。 ==== プラグイン開発者用 ==== [[plugin:move#for_plugin_authors|For plugin authors]] を参照して下さい。 ===== 問題と機能要望 ===== バグ報告や機能要求は [[https://github.com/michitux/dokuwiki-plugin-move/issues|issue tracker]] へお願いします。