1.0.18Jベータです

プログラム(機能)関連の開発の話題
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月21日(金) 19:17

コード: 全て選択

<@IF:[*id:is([*id@uparent*])*]>
abcde
<@ENDIF>

上記のように記述した場合に正しく判定を行なえないため修正しました。入れ子になった[*id@uparent*]の部分が0か1どちらかの値に変換されてしまうためです。
その他、諸々の不具合修正です
添付ファイル
modx-1.0.18J-b1.zip
(1.59 MiB) ダウンロード数: 601 回
ryocka
メンバー
メンバー
記事: 46
登録日時: 2014年4月28日(月) 00:06

1.0.18Jベータです

投稿記事by ryocka » 2016年10月24日(月) 21:27

こんばんは、お世話になります。
[*id@uparent*]の件の修正ご対応、ありがとうございました。

mojiraさんが投稿された「1.0.18Jベータのエラー」と同じものが、当方の環境でも表示されます(ローカルテスト中です)。

------

もう1件ございます。

[!test:is(`2016`):then(`
今年です。
`)!]

上記のようなフォーマットの改行
かつ
スニペット結果をisモディファイアで判定している部分につきまして、
スニペットの結果として「2016」が返ってくる場合に
「今年です。」という表示ではなく「2016」と表示されます。

※おそらく1.0.17J以降でこの現象が発生していると思います。
↑1.0.17Jに一部のソースを上書きし、この補足は確実ではないかもしれませんので取り消します。
※スニペットキャッシュの有効/無効は関係なく、この現象になります。
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月25日(火) 15:16

http://161025151418-14377.evo.demo.modx.jp/
古いバージョンでサンプルを作ってみましたが同様でした。後ほど修正します
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月25日(火) 15:50

ryocka さんが書きました:Source of the post [!test:is(`2016`):then(`
今年です。
`)!]

修正しました。パラメータを持たないスニペットコールでモディファイアを接続した場合、モディファイアのオプションに含まれる改行を、スニペットコールのスニペット名・パラメータの区切り文字として誤認識してしまうのが原因でした。
今回のバージョンより大規模サイト対応を行ないます。20万ページ構成のサイトでテスト運用をしていますが、パフォーマンスを落とさずページを表示できています。
(サイトの規模がレスポンスに影響を与えないようにしています)
添付ファイル
modx-1.0.18J-b2.zip
(1.59 MiB) ダウンロード数: 571 回
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月25日(火) 20:19

管理画面リソースツリーが表示されない不具合があったため修正しました
添付ファイル
modx-1.0.18J-b3.zip
(1.59 MiB) ダウンロード数: 572 回
ryocka
メンバー
メンバー
記事: 46
登録日時: 2014年4月28日(月) 00:06

1.0.18Jベータです

投稿記事by ryocka » 2016年10月26日(水) 04:43

こんばんは。
1.0.18J-b3 を運用サイトのローカル複製にてテストしてみました。
当方の環境ではプレビュー時のエラー表示は出なくなりました。

------

以下の条件が重なると同様の現象が発生するようです。

・スニペットコール最終行の先頭を半角スペースでインデントしている (最終行以外は特に影響はなさそうです)
・thenの内容に半角括弧「(」「)」が含まれる

コード: 全て選択

  [!test:is(`2016`):then(`
  今年です(真)。
  `)!]
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月26日(水) 22:29

該当部分の処理を整理しました。これで修正できていると思いますがどうでしょうか?
添付ファイル
modx-1.0.18J-b4.zip
(1.59 MiB) ダウンロード数: 573 回
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月27日(木) 11:00

コード: 全て選択

<@IF:[*電話番号*]>電話番号が入力されていれば表示する<@ENDIF>

上記のように書いた場合、たとえば電話番号が「03-1234-5678」だとしたら、「3-1234-5678」という数式として処理されて値が「-6909」という負の数字であると見なされ、電話番号が入力されているにも関わらず結果的には「負」と判定され表示されない問題がありました。これを先日調整したところですが、同じ原因を持つ他の問題があることが分かりました。さらに調整を加えると処理が複雑になって、新しい不具合が発生する可能性も高まりますので、

コード: 全て選択

<@IF:[*電話番号:isnt(''):then(1)*]>電話番号が入力されていれば表示する<@ENDIF>

このように書くことにしたいと思います。モディファイアを使って、1か0のどちらかが出力されるようにします。1や0でなくとも、負の数値やHTMLタグを含む文字列にならなければ問題ありません。@IF構文自体には高度な判定機能を持たせず、モディファイアやスニペットを利用して値を単純化した上で@IF構文に判定させるという仕様です。

コード: 全て選択

<@IF:[*電話番号:isNotEmpty*]>電話番号が入力されていれば表示する<@ENDIF>

また、isNotEmptyという新しいモディファイアを追加して上記のように書けるようにします。
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年10月27日(木) 16:08

isEmpty・isNotEmptyモディファイアを追加しました。それぞれ、値が空であるかどうかに応じて0または1を返します。電話番号や郵便番号など、数式と判定されやすい文字列はこれらのモディファイアを通してください。HTMLタグを含む値を判定する際に@IFタグの取得処理が誤作動する問題も解決できます。
添付ファイル
modx-1.0.18J-b5.zip
(1.59 MiB) ダウンロード数: 584 回
ryocka
メンバー
メンバー
記事: 46
登録日時: 2014年4月28日(月) 00:06

1.0.18Jベータです

投稿記事by ryocka » 2016年10月29日(土) 16:49

こんにちは。
ローカル環境で 1.0.18J-b5 の新規インストールにてテストしようとしましたが
viewtopic.php?f=32&t=1708
でpalmaさんが報告されている「Error while inserting event log into database.」
と同じエラー表示が出てインストールが完了しませんでした。

1.0.18Jの過去のベータ版からのアップデートはできました。

------

スニペット/isモディファイアの件ですが、運用サイト(ローカルの複製)の方ではもっと複雑な記述をしており
やはり同様の現象が解消されない箇所があります。
発生条件が特定できていませんので、分かり次第あらためて投稿いたします。
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年11月01日(火) 09:45

新規インストール時のエラーを修正しました
スニペットコールのスニペット名・パラメータの区切り文字に半角スペースを使う場合に誤動作していたため修正しました

コード: 全て選択

[[スニペット名 &パラメータ]]
[[ス ニ ペ ッ ト 名?パラメータ]]
[[スニペット名
    &パラメータA
    &パラメータB
    &パラメータC
]]
いずれも動作します
添付ファイル
modx-1.0.18J-b6.zip
(1.59 MiB) ダウンロード数: 573 回
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年11月02日(水) 14:09

異なる条件で「Error while inserting event log into database.」が表示されてログインできなくなることがあるため修正しました。
2016-11-02.png

大規模サイト対応のためのキャッシュ設定をグローバル設定に追加しました。古いキャッシュ方式を無効にすることで大規模サイト対応となります
添付ファイル
modx-1.0.18J-b7.zip
(1.59 MiB) ダウンロード数: 577 回
ryocka
メンバー
メンバー
記事: 46
登録日時: 2014年4月28日(月) 00:06

1.0.18Jベータです

投稿記事by ryocka » 2016年11月02日(水) 22:01

こんばんは。

1.0.18J-b7 の新規インストール・上書きインストールをテストしました。
「Error while inserting event log into database.」のエラーは出ておりません。
修正ありがとうございました。

------

スニペット/isモディファイアの件ですが、以下の結果は7・8・11・12
のパターンの場合に正しく表示されず、スニペット結果の2016がそのまま出力されます。

コード: 全て選択

[!test:is(`2016`):then(`

`)!]

[!test:is(`2016`):then(`
(2
`)!]

[!test:is(`2016`):then(`
3)
`)!]

[!test:is(`2016`):then(`
(4)
`)!]

[!test:is(`2016`):then(`

  `)!]

[!test:is(`2016`):then(`
(6
  `)!]

[!test:is(`2016`):then(`
7)
  `)!]

[!test:is(`2016`):then(`
(8)
  `)!]

  [!test:is(`2016`):then(`
  9
  `)!]

  [!test:is(`2016`):then(`
  (10
  `)!]

  [!test:is(`2016`):then(`
  11)
  `)!]

  [!test:is(`2016`):then(`
  (12)
  `)!]
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年11月04日(金) 12:08

具体的なテスト助かります。修正できたと思いますので確認をお願いします
処理の整理を行なったので、サイトの構成によってはページの表示が軽くなると思います
添付ファイル
modx-1.0.18J-b8.zip
(1.59 MiB) ダウンロード数: 570 回
noka
メンバー
メンバー
記事: 83
登録日時: 2013年6月19日(水) 10:02

1.0.18Jベータです

投稿記事by noka » 2016年11月04日(金) 14:17

yamaさま

こんにちは。

/temp/public_html/
内にファイルを置いた場合に,ブラウザで当該ファイルが表示されないようです(白紙になります)。

グローバル設定で,エラーをすべて表示にチェックすると,
------------------------------
Error while inserting event log into database.
------------------------------
の1行のみが表示されました。/temp/public_html/から取り除いたページは正常に表示されます。

#1.0.17Jからの挙動のようです( 1.0.16Jでは問題がなかったと記憶しています )
masco
メンバー
メンバー
記事: 103
登録日時: 2014年9月26日(金) 10:43

1.0.18Jベータです

投稿記事by masco » 2016年11月04日(金) 15:32

yamaさま

いつもお世話になっております。
ManagerManagerのddMultipleFieldでsortableが機能していないようです。
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年11月09日(水) 16:06

諸々修正しました。ManagerManagerのddMultipleFieldの件は後ほど確認します。
モディファイアと@IF文まわりを大幅に見直しました。

コード: 全て選択

<@IF:[*id:=(1)*]>
Home
<@ENDIF>

<@IF:[*id:>(1)*]>
Other
<@ENDIF>

上記のような記述が可能です。それぞれeqモディファイアやgtモディファイアのショートハンドです。
また今回の修正により、@IF文の評価対象の変数値にhtmlタグが含まれていても誤動作しないようになりました。
今回のリリースでは他に、エクスポート機能の調整(数万件のデータでもノンストップで出力できるようにする)やセキュリティまわりの調整(トークン実装)などを行なう予定です。
添付ファイル
modx-1.0.18J-b9.zip
(1.59 MiB) ダウンロード数: 572 回
masco
メンバー
メンバー
記事: 103
登録日時: 2014年9月26日(金) 10:43

1.0.18Jベータです

投稿記事by masco » 2016年11月09日(水) 18:51

yamaさま

ddMultipleFieldの件ですが
ベータ9にアップデートしたところ問題がなくなりました
ryocka
メンバー
メンバー
記事: 46
登録日時: 2014年4月28日(月) 00:06

1.0.18Jベータです

投稿記事by ryocka » 2016年11月10日(木) 00:27

こんばんは。遅くなりまして申し訳ありません。
1.0.18J-b7 → b9 へのアップデートで動作確認いたしました。


・スニペット/isモディファイアの件は、運用サイトの複製で確認したところ、正常に表示されるようになりました。
何度もご対応いただきまして、誠にありがとうございました。

・nicesizeモディファイアの挙動につきまして

コード: 全て選択

[+@123456789:nicesize+]

のような、直接記述+nicesizeの場合は単位付きで表示されますが

コード: 全て選択

[*filename:filesize:nicesize*]

の組み合わせの場合にnicesizeが動作せず、ファイルサイズのバイト数がそのまま表示されます。

コード: 全て選択

[*id:is(19):then( index)*]

のような場合、「index」の左の半角スペースが無視されて出力されます。
先頭の半角スペースが何文字ある場合でも無視されるようです。

コード: 全て選択

(` index`)
と、クォートで囲む場合は、半角スペース込みで出力されます。

・MODX本体とは無関係ですが、prevjumpnext スニペットが正常に動作しなくなりました。
ファイル構成の変更などが理由でしょうか?
Dittoで代用できるのであれば書き直そうと思います。
アバター
yama
管理人
記事: 2866
登録日時: 2009年7月29日(水) 02:50

1.0.18Jベータです

投稿記事by yama » 2016年11月10日(木) 09:31

[*変数名:modif1:modif2*]
こう書いた時、2番目のモディファイアの末尾1文字が処理されなくて
[*変数名:modif1:modif*]
内部的にはこのようになっているみたいです。後ほど修正します。
モディファイアのオプション値をクオートで囲まない場合は、オプション値の左端・右端のホワイトスペースを削除する仕様にしてます。あまり深い意味はなかったと思いますが、そのまま出力するほうがよいですか?
prevjumpnextスニペットのコードを確認しましたが、MODXのバージョンに依存する処理は特になさそうです。PHP7に対応していない古いPHx処理が内蔵されているのが気になりますが、PHPのバージョンは分かりますか?

“開発関連の話題” へ戻る