値が無い場合のdatagrid出力フィルタの挙動について  【解決済み】

質問全般・改善要望
返信する
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

値が無い場合のdatagrid出力フィルタの挙動について

投稿記事 by noka »

yamaさま

こんばんは。

テンプレート変数ウィジェット(出力フィルタ)のData Gridは、ユーザーがエクセルからコピペで表組を出力できて、ユーザビリティを高める上で、有用なものだと思います。
こうした使い方(エクセルからコピペ)をする場合、textareaが空欄の場合には表そのものが出力されないことが望ましいことも多いかと思います。

実際、そうしたいなあと思いまして、
datagridのパラメータで、空の場合のメッセージを設定できますから、「 」を入れてみたりしたのですが、そもそも機能しませんし、機能したとしても大枠のtableは表示される仕様になっているようです。

この点、どのように考えれば良いのかわからないのですが、私見では、テンプレートで、
[*tv_datagridname*]
と記述して、空だったら本当に何も出力しない方が望ましいように思うのですが、いかがでしょうか?
何かしら空の場合に処理をしたい場合、
[*tv_datagridname:ifempty=`何かメッセージ`*]
のようにできますし。

で、そもそも機能しない理由としては、
/manager/includes/controls/datagrid.class.php の312行目あたり、
if($rowcount==0) $tblRows.= ・・・
において、ファイルやdb連携の場合は確認していませんが、$rowcountは、array_chunkされてる配列をカウントしていて、1が入るために空判定されないように見受けられます。
ので、284行目以降周辺の処理を見直す必要があると思います。

しかし、前述のとおり、個人的には、
/manager/includes/tmplvars.format.inc.php
(現在進められているstableでは、manager/includes/extenders/sub.document.parser.class.inc.php)
の、datagridが適用される処理で、

コード: 全て選択

case 'datagrid':
$o = '';
if($value !=''){
 ・
 ・
 ・
 $o = $grd->render();
}
break;
として、値が無い場合は何も出さない方がベターなような気がしますが、他の方がどのように思われるのか判断ができません。
今後アップデートがある際に、毎回カスタマイズするのも微妙な気がするという個人的な理由ではありますが、もしかしたら改善にもなるかもですので、ご検討いただけないでしょうか?

大した内容でもないのに、長々失礼しました。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 値が無い場合のdatagrid出力フィルタの挙動について

投稿記事 by yama »

https://github.com/modxcms-jp/evolution ... 1b50a9e343
このようにしてみました。いかがでしょうか?
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

Re: 値が無い場合のdatagrid出力フィルタの挙動について  【解決済み】

投稿記事 by noka »

yama 様

さっそくありがとうございます。
テンプレート変数が空の時は何も出力しない仕様、ということで良かったのですね。
先に例示した条件分岐は imageフィルタの書き方に合わせただけでした。
empty()関数は0やnullやfalseと空白をTRUEとして扱うので、困ることもあるかと思いましたが、datagridでは問題なさそうですね。

datagridのメッセージパラメータは、(確認してませんが)ファイル入力&DB連携時に有効になるという扱いで、すっきりしそうです。
#他パラメータもスタイルやjQueryで調整したい向きには微妙なところもあるので、少し改善の余地もあると思いますけれども。

失礼します。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 値が無い場合のdatagrid出力フィルタの挙動について

投稿記事 by yama »

ありがとうございます
https://github.com/modxcms-jp/evolution ... its/stable
https://github.com/modxcms-jp/evolution ... stable.zip
Datagridまわりの処理を整理しましたので、もし興味がありましたら動作テストをお願いします。
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

Re: 値が無い場合のdatagrid出力フィルタの挙動について

投稿記事 by noka »

yamaさま

ご返事が遅れてすみません。
ちょっと今時間がとれていないですが、気付いた点があればお伝えさせていただきます。
たぶん、週末になると思います。

とりいそぎ。
返信する