• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2022-05-29T18:57:19+09:00;2022-05-28T02:09:11+09:00","default:kanateko","kanateko")
#author("2022-06-12T14:07:13+09:00;2022-05-28T02:09:11+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加);

CENTER:#ref(attachlist2.jpg,center,wrap,400x0)

#contentsx

*添付ファイルの一覧表示と一括操作プラグイン [#i0279b82]
#infobox(plugin){{
name=attachlist
pukiwiki=1.5.3
ver=1.1
update=2022-05-18
}}

そのページに添付されたファイルの名前、ファイルサイズ、アップロード日時を表で一覧表示する。
キャッシュ機能付きのため2回目以降の表示は高速化される。
また、チェックボックスで添付されたファイルの一括削除・凍結・解凍が可能。

:このプラグインでできること|
-アップロード画面にそのページに添付されているファイルを一覧表示する
--名前、ファイルサイズ、アップロード日時を表にして表示
--ファイルサイズの表記をKBかBかで選択可能
--2回目以降の表示はキャッシュを利用するため高速化する
---キャッシュはアップロードフォルダ (attach) に変更があった場合に自動で更新される
-添付ファイルをチェックボックスで選択して一括操作できる
--一括削除・凍結・解凍が可能
---凍結中のファイルは一括操作画面にマーク付きで表示される
--操作するファイルの一括選択/解除が可能
--一括操作には管理者パスワードが必要

*ダウンロード [#e789ebf9]
最新: [[GitHub>https://github.com/kanateko/pukiwiki-plugin]]

|~日付|~バージョン|~備考|h
|2022-05-18|1.1|#ul(PukiWiki 1.5.4のURLカスタマイズに対応)|
|2022-01-26|1.0|#ul(attachプラグインを改造しなくても動作するように仕様を変更,設定のキャッシュ利用の許可をデフォルトでtrueに変更,一括操作に凍結・解凍を追加,一括操作ボタンを左上に移動,一括操作画面で凍結されたファイルにマーク (*) を追加,全選択/解除用スクリプトを簡略化)|
|2022-01-23|0.5|#ul(全てのキャッシュを削除する機能を追加,添付ファイルの削除に失敗した場合の処理を追加,一括操作画面に全選択/解除ボタンを追加)|
|2022-01-21|0.4|#ul(添付ファイルの一括削除機能を追加,添付ファイルのリンクを修正)|
|~|0.3|#ul(キャッシュの削除機能を追加)|
|~|0.2|#ul(キャッシュ機能を追加)|
|2022-01-20|0.1|#ul(初版作成)|

*セットアップ [#w0c581bc]
+GitHubにある「attachlist.inc.php」をダウンロードしてpluginフォルダに入れる
+「添付」のリンクをattachからattachlistに変更するため、libフォルダ内にある「html.php」の以下の部分を変更する

#prism(diff-php diff-highlight){{
-	$_LINK['upload']   = "$script?plugin=attach&pcmd=upload&page=$r_page";
+	$_LINK['upload']   = "$script?plugin=attachlist&pcmd=upload&page=$r_page";
}}


#null{{{{
// ############ v0.5以前 ############
**添付画面に組み込む場合 [#v4f6b8db]
#ac(h){{{
アップロード用フォームの下に添付ファイル一覧を表示したい場合はattach.inc.phpに以下を加える。

-define群の下、plugin_attach_convert()の上あたり
#prism(diff-php diff-highlight){{
// mime-typeを記述したページ
 define('PLUGIN_ATTACH_CONFIG_PAGE_MIME', 'plugin/attach/mime-type');

+require_once('attachlist.inc.php');

 //-------- convert
 function plugin_attach_convert()
 {
 	 global $vars;
}}

-アップロード用フォームの出力部分
#prism(diff-php diff-highlight){{
// アップロードフォームの出力
 function attach_form($page)
 {
	 global $vars, $_attach_messages;

	 $script = get_base_uri();
	 $r_page = rawurlencode($page);
	 $s_page = htmlsc($page);
+	 $list = plugin_attachlist_convert();

   <input type="submit" value="{$_attach_messages['btn_upload']}" />
  </div>
 </form>
+$list
 EOD;
}
}}
}}}

**キャッシュ機能を利用する場合 [#tb981143]
#ac(h){{{
キャッシュ機能を利用する場合、ファイルのアップロード、削除、名前変更時にキャッシュを更新できるよう、attachプラグインに以下を追加する。
簡潔に説明すれば、各機能のreturnの前にキャシュを削除する機能を差し込む。

-define群の下、plugin_attach_convert()の上あたり
※既に上で追加している場合は必要なし
#prism(diff-php diff-highlight){{
// mime-typeを記述したページ
 define('PLUGIN_ATTACH_CONFIG_PAGE_MIME', 'plugin/attach/mime-type');

+require_once('attachlist.inc.php');

 //-------- convert
 function plugin_attach_convert()
 {
 	 global $vars;
}}

-アップロード時
#prism(diff-php diff-highlight){{
 // ファイルアップロード
 // $pass = NULL : パスワードが指定されていない
 // $pass = TRUE : アップロード許可
 function attach_upload($file, $page, $pass = NULL)
 {
	 global $_attach_messages, $notify, $notify_subject;



+	 attachlist_delete_cache($page);

	 return array(
		 'result'=>TRUE,
		 'msg'=>$_attach_messages['msg_uploaded']);
 }
}}

-削除時
#prism(diff-php diff-highlight){{
 // 削除
 function attach_delete()
 {
 	 global $vars, $_attach_messages;



+	 attachlist_delete_cache($refer);

	 return $obj->delete($pass);
 }
}}

-名前変更時
#prism(diff-php diff-highlight){{
 // リネーム
 function attach_rename()
 {
 	 global $vars, $_attach_messages;



+	 attachlist_delete_cache($refer);

	 return $obj->rename($pass, $newname);
 }
}}

attachプラグインの変更を終えたら、最後にattachlistプラグインのキャッシュ機能を有効化しておく。
#prism(php){{
// キャッシュ利用の許可
// 要attach.inc.phpの改変
define('ATTACHLIST_ALLOW_CACHE', true);
}}
}}}
// ########################
}}}}

*プラグインの設定 [#y0def2d1]
:ATTACHLIST_ALLOW_CACHE|キャッシュ機能を利用するかどうか。デフォルトはtrue。
:ATTACHLIST_CACHE_DIR|キャッシュを保存するディレクトリ
:ATTACHLIST_DISPLAY_BYTE|ファイルサイズをバイトで表示する。デフォルトはfalse (キロバイト表示)

*使用方法 [#x782d41f]
ページ上部の「添付」を押すとアップロード画面 + ファイル一覧が表示される。

**添付ファイルの一括操作 [#e24d9af6]
#fig(manage.jpg,center,cap=一括操作の流れ,theme=light)
添付ファイル一覧の左上に表示される「ファイルの一括操作」のリンクから操作画面に移ることができる。
この機能を利用する場合、ファイルの選択画面に行く前とファイル操作の最終確認画面で各1回ずつ、計2回管理者パスワードの入力が求められる。

選択画面では添付ファイルの一覧から任意のファイルをチェックボックスでマークする。
その後画面下の「削除」「凍結」「解凍」のいずれかを押すと確認画面が表示され、管理者パスワードを入力すると選択されたファイルの削除を行う。
凍結されているファイルがある場合、ファイル名の後ろにアスタリスク (*) がつく。

**キャッシュのクリア [#d4d107a6]
アクション型で以下のように入力して使うと、添付ファイル一覧のキャッシュを全て削除する。
 ?cmd=attchlist
削除を実行するには管理者パスワードが必要。




*使用例 [#pd23c0fc]
一覧表示に関しては[[このページ>https://jpngamerswiki.com/back4blood/?plugin=attachlist&pcmd=upload&page=:image/active]]などを参考に。

一括操作の画面に関しては自身で導入して確認を。


*追加したい機能 [#p5860edc]
-添付ファイルの一覧作成にもattachのクラスが使えそう。
-%%一括凍結・解凍%%
--%%自分自身ファイルの凍結・解凍は使ったことがないためニーズがあるのかどうか。%%
%%一応機能を追加できるようには作ってある (と思う) ので気が向いたら取り掛かるつもり。%%
v1.0で実装
-%%キャッシュの能動的削除%%
%%何らかの理由でキャッシュを能動的に削除したい場合にプラグインの操作で消せたら楽かなと思う。%%
v0.5で実装

*備考 [#pce650c6]
-v0.5以前はattachプラグインをいくらか改造する必要があったが、v1.0からはhtml.phpの1行を変更するのみで良くなった。v0.5からバージョンアップする際にattachプラグインを元の状態に戻すのを忘れずに。
-表のソート機能などは別途それ用のプラグインを組み込んでおり、配布版にこの機能はないので注意。
-ついでに複数ファイルの一括アップロードを可能にしたい場合は[[このページ>プラグインの変更箇所/attach.inc.php]]で解説しているので参考にどうぞ。
*コメント [#d0888ec3]
#pcomment(,10,above,reply)