• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2022-01-22T04:15:05+09:00","default:kanateko","kanateko")
#author("2022-01-23T05:06:19+09:00","default:kanateko","kanateko")
#tag(プラグイン,自作,追加)

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

#contentsx

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

そのページに添付されたファイルの名前、ファイルサイズ、アップロード日時を表で一覧表示する。
キャッシュ機能付きのため2回目以降の表示は高速化される。
また、チェックボックスで添付されたファイルの一括操作((v0.4現在では一括削除のみ対応))が可能。
また、チェックボックスで添付されたファイルの一括操作((v0.5現在では一括削除のみ対応))が可能。

:このプラグインでできること|
-添付ファイルの名前、ファイルサイズ、アップロード日時を表にして一覧表示する
--ファイルサイズの表記をKBかBかで選択可能
--2回目以降の表示はキャッシュを利用するため高速化する((キャッシュ機能を使うためにはattachプラグインの改造が必要))
-添付ファイルをチェックボックスで選択して一括操作できる
--v0.4現在は削除のみ対応
--v0.5現在は削除のみ対応
--一括操作は管理者のみが使用可能

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

|~日付|~バージョン|~備考|h
|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フォルダに入れる

**添付画面に組み込む場合 [#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|キャッシュ機能を利用するかどうか。デフォルトはfalse。有効化する場合は上を参考にattachプラグインを改造する必要あり
:ATTACHLIST_CACHE_DIR|キャッシュを保存するディレクトリ
:ATTACHLIST_DISPLAY_BYTE|ファイルサイズをバイトで表示する。デフォルトはfalse (キロバイト表示)

*使用方法 [#x782d41f]
 #attachlist

基本的にアップロード画面に組み込んで使うことを想定しているが、ブロック型プラグインとしてページに表示することもできる。

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

v0.4現在、一括操作は削除のみ対応。
v0.5現在、一括操作は削除のみ対応。
選択画面では添付ファイルの一覧から任意のファイルをチェックボックスでマークする。
その後画面下の「削除」を押すと確認画面が表示され、管理者パスワードを入力すると選択されたファイルの削除を行う。

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




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

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


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

*備考 [#pce650c6]
-表のソート機能などは別途それ用のプラグインを組み込んでおり、配布版にこの機能はないので注意。
-ついでに複数ファイルの一括アップロードを可能にしたい場合は[[このページ>プラグインの変更箇所/attach.inc.php]]で解説しているので参考にどうぞ。
*コメント [#d0888ec3]
#pcomment(,10,above,reply)