1.0.14J-r9ベータです

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

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月14日(土) 09:50

modx-1.0.14J-r9-b25.zip
(1.64 MiB) ダウンロード数: 197 回
ベータ25です。値が空の場合の内蔵PHx機能の処理を調整しました。if文などでPHxを活用している人は確認をお願いします。
アバター
min-o
メンバー
メンバー
記事: 291
登録日時: 2009年10月07日(水) 18:32

Re: 1.0.14J-r9ベータです

投稿記事by min-o » 2015年3月16日(月) 10:39

b25アップデートしました。
問題ないです。ありがとうございます! :D

アップデートについて相談です。
テストサイトは1.0.14J → r7 → r9 へ
r9からはこまめに更新していったのですが、本番はいまだ1.0.14Jです。

本番をアップデートする際、いきなりr9のフィックス版へアップデートしてしまって大丈夫でしょうか?

テストサイトを1.0.14J → r7、→ r9にアップデートした時に、それぞれ一時的にデータベースが非常に遅くなったので、本番のアップデートを中止して1.0.14Jのままで運用していました。
この時の原因はわかりませんが、データベース再起動で直りました。その後再現していません。

今回のr9アップデートで、ひっかかったphxなど(phx内に[*content*]が2回で2度展開など)はテストの修正にあわせて、すべて本番サイトも修正してあります。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月16日(月) 15:57

基本的には最新でアップデートしていただいたほうがよいと思います。何か問題が発生した場合は、今回のようなケースなら、順番にr8・r7・r6と逆戻ししていくほうが問題の切り分けがしやすいかもしれませんが、できるだけ問題部分を直接修正します。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月17日(火) 00:34

modx-1.0.14J-r9-rc3.zip
(1.64 MiB) ダウンロード数: 200 回
ようやく戻ってきました。RC3です。特に問題なければこれを正式リリースとします。
OnWebPagePrerenderイベントで追加されたMODXタグを処理できるようにしました。
内蔵PHxフィルターにおいて、判定モディファイアのみを記述した場合に1または0を判定結果として返すようにしました。

コード: 全て選択

<!--@IF:[*pagetitle:find(New)*]>
<h2>[新着] [*pagetitle*]</h2>
<!@ELSE>
<h2>[*pagetitle*]</h2>
<!@ENDIF-->
たとえばこのような記述が可能です。この場合はpagetitleに「New」という文字列が含まれる場合に「1」を返すので、「正」と判定されます。

http://www.movabletype.jp/documentation ... modifiers/
その他、MovableTypeのモディファイアをいくつか採用しました。
masco
メンバー
メンバー
記事: 107
登録日時: 2014年9月26日(金) 10:43

Re: 1.0.14J-r9ベータです

投稿記事by masco » 2015年3月17日(火) 00:48

rc3にしました。

内蔵モディファイアの「show」と「this」が使用できません。

phx.parser.class.inc.phpの該当箇所(226から230行目くらい)の最後にbreak;を追加したら機能しました。

コード: 全て選択

         case 'show':
         case 'this':
            $conditional = implode(' ',$condition);
            $isvalid = intval(eval("return ({$conditional});"));
            if (!$isvalid) { $value = NULL;}


コード: 全て選択

         case 'show':
         case 'this':
            $conditional = implode(' ',$condition);
            $isvalid = intval(eval("return ({$conditional});"));
            if (!$isvalid) { $value = NULL;}
        break;
アバター
min-o
メンバー
メンバー
記事: 291
登録日時: 2009年10月07日(水) 18:32

Re: 1.0.14J-r9ベータです

投稿記事by min-o » 2015年3月17日(火) 10:30

b25からrc3アップデート、問題ありません。

本番は最新でアップデートすることにします。
ありがとうございます。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月17日(火) 11:27

masco さんが書きました:内蔵モディファイアの「show」と「this」が使用できません。
ありがとうございます、修正しました。

modx-1.0.14J-r9-rc4.zip
(1.64 MiB) ダウンロード数: 202 回
PHx機能を任意の文字列に対して直接適用できるようにしました。

コード: 全て選択

[+@test:strtoupper+]
→ 「TEST」を表示します。

コード: 全て選択

[+@2:username+]
→ ユーザID2のユーザのログイン名を表示します。

コード: 全て選択

[+@2:lastlogin:dateformat(Y年m月d日 h時m分s秒):hanzen+]
→ ユーザID2のユーザの直近のログイン日時を全角文字で表示します。

コード: 全て選択

[+@test@example.com:spam_protect+]
→ メールアドレス文字列「test@example.com」をスパムボットに拾われにくい文字列形式に変換して表示します。

コード: 全て選択

[+@abcdefghijklmnopqrstuvwxyz:shuffle:limit(8)+]
→ パスワード候補などに使えるランダム文字列を表示します。

コード: 全て選択

[+@あいうえお<br />
かきくけこ<br />
さしすせそ:encode_html+]
→ 複数行記述可

デリミタ文字列[+@・+]はとりあえずの実装として、将来変更する可能性があります。
noka
メンバー
メンバー
記事: 83
登録日時: 2013年6月19日(水) 10:02

Re: 1.0.14J-r9ベータです

投稿記事by noka » 2015年3月17日(火) 12:26

とりいそぎご報告させていただきます。
すべてのリソース変数を試したわけではないですが、
少なくとも[*description*]については、idモディファイアがおかしな挙動をします。b24までは大丈夫です。

◯1.[*pagetitle:8*]
×2.[*description:8*]
◯3.[*description@8*]
×4.[*description:id=8*]
×5.[*description:id=`8`*]
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月17日(火) 12:52

なるほど、isEmpty関数の処理対象にidモディファイアを追加する必要がありますね。後ほど修正します
noka
メンバー
メンバー
記事: 83
登録日時: 2013年6月19日(水) 10:02

Re: 1.0.14J-r9ベータです

投稿記事by noka » 2015年3月17日(火) 12:57

もう一点、追加でご報告させていだきます。
<!--@IF:[*hoge*]-->
による条件分岐が効かなくなっているように見受けられます(そのままパースされている感じです)。
viewtopic.php?f=34&t=1504&start=130#p8327
の記法も同様です。

例えば、Dittoテンプレ内で、

コード: 全て選択

<!--@IF:[+hidemenu+]-->
<figure><img src="[+tv_img+]"></figure>
<!--@ELSE-->
<figure><a href="[~[+id+]~]"><img src="[+tv_img+]"></a></figure>
<!--@ENDIF-->
としていたものは、
ブラウザでソースを確認すると、

コード: 全て選択

<!--@IF:0-->
<figure><img src="hoge"></figure>
<!--@ELSE-->
<figure><a href="hogehoge"><img  src="hoge"></a></figure>
<!--@ENDIF-->


のようになります。

とりいそぎ。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月17日(火) 13:06

viewtopic.php?p=8327#p8327
ありがとうございます。@IF文は記述方法を変更したのですが、従来の書き方でも通用するように処理することは可能だと思います。後ほど修正します
noka
メンバー
メンバー
記事: 83
登録日時: 2013年6月19日(水) 10:02

Re: 1.0.14J-r9ベータです

投稿記事by noka » 2015年3月17日(火) 13:26

yamaさま

申しわけございません。
部分的に新しい記法も試してみてダメだったので両方ダメなのかと思って投稿してしまいました。
1ページ内に新旧記法が混在していたためにおかしなことになっていたようです。新しい記法で統一したところ、大丈夫でした。
個人的には仕様「変更」でも構わないです。


とりいそぎ。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月17日(火) 13:33

ありがとうございます。

コード: 全て選択

<!--@IF:[*isfolder*]>
    フォルダです。サブリソースがあります。
<@ELSE>
    フォルダではありません。
<@ENDIF-->
HTMLコメントの仕様は「<!」がコメント宣言とのことなので、もう少しよく考えて、最終的にこのようにしたいと思います。HTML的にはこの部分全体がコメント扱いとなることが分かりやすく、投稿画面でリッチテキストエディタを使う場合も問題が起こりにくいと思います。
soushi
管理人
記事: 223
登録日時: 2009年7月30日(木) 01:59

Re: 1.0.14J-r9ベータです

投稿記事by soushi » 2015年3月17日(火) 21:20

デモサイトに MODX 1.0.14J-r9-rc4 のパッケージを用意しました。
ご自由にお試しくださいー ;)

http://mng.demo.modx.jp/pack_list/Evolu ... 9-rc4.html

尚、今まで公開していたベータ版のパッケージは全て公開終了しました。
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月18日(水) 06:26

modx-1.0.14J-r9-rc5.zip
(1.64 MiB) ダウンロード数: 197 回
rc5です
viewtopic.php?p=8340#p8340
viewtopic.php?p=8342#p8342
上記の件、対応しました。
PHxモディファイアを複数連結した場合、書き方によっては最後のモディファイアが実行されないことがあるため修正しました。
マルチバイト文字列を正しく処理できないPHxモディファイアが複数あるため修正しました。
MovableTypeのグローバル・モディファイアをいくつか採用しました。

今日の昼頃正式リリース予定です
アバター
min-o
メンバー
メンバー
記事: 291
登録日時: 2009年10月07日(水) 18:32

Re: 1.0.14J-r9ベータです

投稿記事by min-o » 2015年3月18日(水) 11:02

rc3 → rc5 とアップデートしたところいくつかのページでエラーが出ました。
確認しましたがrc4ではでません。

エラーの出るページと同じテンプレートで、内容も同じような別ページではエラーになりません。
差はリソース名(ページタイトル)がかなり長いことくらいですが、リソース名を短くしても同じエラーでした。

エラーの出るページのテンプレートは階層化しているのですが、階層化なしのテンプレートに変更すると表示されます。
よろしくお願いします。

エラー
イベントID 34407
ソース Parser - $value = $this->$this->substr($
日付 2015/03/18 10:47:31
« MODX Parse Error »
MODX encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error : Object of class PHx could not be converted to string
ErrorType[num] : RECOVERABLE ERROR[4096]
File : /home/****/www/test02.****.co.jp/html/manager/includes/extenders/phx.parser.class.inc.php
Line : 348
Source : $value = $this->$this->substr($value,0,$limit);
Basic info
REQUEST_URI : /code/4544859788888/gamecard/
Resource : [983]pagetitle
Referer : http://test02.****.jp/manager/index.php?a=1&f=tree
User Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
IP : 61.45.201.25
Benchmarks
MySQL : 0.0375 s (35 Requests)
PHP : 0.1896 s
Total : 0.2271 s
Memory : 11.77 MB

Backtrace
1 $modx->executeParser()
index.php on line 159
2 $modx->prepareResponse()
manager/includes/document.parser.class.inc.php on line 387
3 $modx->parseDocumentSource()
manager/includes/document.parser.class.inc.php on line 484
4 $modx->mergeDocumentContent()
manager/includes/document.parser.class.inc.php on line 2089
5 PHx->phxFilter()
manager/includes/document.parser.class.inc.php on line 1308
6 PHx->parsePhx()
manager/includes/extenders/phx.parser.class.inc.php on line 32
7 PHx->Filter()
manager/includes/extenders/phx.parser.class.inc.php on line 118
8 PHx->getValueFromPreset()
manager/includes/extenders/phx.parser.class.inc.php on line 157


イベントID 34408
ソース MODxMailer debug information
日付 2015/03/18 10:47:31

CharSet = ISO-2022-JP
Encoding = 7bit
mb_language = Japanese
encode_header_method = mb_encode_mimeheader
send_mode = mb
Subject = Error mail from =?ISO-2022-JP?B?GyRCJTUlJCVQITwlLCU4JSclQyVIGyhC?=

Date: Wed, 18 Mar 2015 10:47:32 0900
Return-Path:
From: =?ISO-2022-JP?B?GyRCJTUlJCVQITwlLCU4JSclQyVIGyhC?=
Message-ID: <258624eeb363863e036e073c93c5eac8@test02.****.co.jp>
X-Priority: 3
X-Mailer: PHPMailer (https://github.com/PHPMailer/PHPMailer/)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=ISO-2022-JP

[URL] http://test02.****.co.jp/code/4544859788888/gamecard/
[Source] Parser - $value = $this->$this->substr($
[IP] 61.45.201.25
[Host name] 61-45-201-25.cust.bit-drive.ne.jp
アバター
min-o
メンバー
メンバー
記事: 291
登録日時: 2009年10月07日(水) 18:32

Re: 1.0.14J-r9ベータです

投稿記事by min-o » 2015年3月18日(水) 11:18

viewtopic.php?f=34&t=1504&p=8348#p8348
の件解決しそうです。

リソース名が非常に長いページはパンくずリスト用に
メニュータイトルに
[*pagetitle:limit=`35`*]…
または
[*phx:if=`[*pagetitle:len*]`:gt=`105`:then=`[*pagetitle:limit=`35`*]…`:else=`[*pagetitle*]`*]

といれてありました。
これを外したら、エラーなく表示されるようになりました。

TopicPath上で文字数制御ってできますか?
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月18日(水) 12:00

コード: 全て選択

[Source] Parser - $value = $this->$this->substr($

不具合ですね。日本語の文字ひとつを3文字とカウントする問題を修正したのですが、その関係のようです。
manager/includes/extenders/phx.parser.class.inc.php
上記ファイル内に$this->$this->substrという文字列があるはずなので、これを$this->substrに変更していただけますでしょうか?
アバター
yama
管理人
記事: 2929
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.14J-r9ベータです

投稿記事by yama » 2015年3月18日(水) 12:15

余談ですが

コード: 全て選択

[*phx:if=`[*pagetitle:len*]`:gt=`105`:then=`[*pagetitle:limit=`35`*]…`:else=`[*pagetitle*]`*]
上記の記述は

コード: 全て選択

[*pagetitle:len:gt(105):then([*pagetitle:limit(35)*]):else([*pagetitle*])*]

コード: 全て選択

[*pagetitle:limit(35):setvar(短いタイトル)*]
[*pagetitle:len:gt(105):then([+短いタイトル+]):else([*pagetitle*])*]

コード: 全て選択

<!--@IF:[*pagetitle:len:gt(105)>
  [*pagetitle:limit(35)*]
<@ELSE>
  [*pagetitle*]
<@ENDIF-->
こう書くこともできると思います。
アバター
min-o
メンバー
メンバー
記事: 291
登録日時: 2009年10月07日(水) 18:32

Re: 1.0.14J-r9ベータです

投稿記事by min-o » 2015年3月18日(水) 12:40

yamaさま

manager/includes/extenders/phx.parser.class.inc.php 修正でエラーはでなくなりました。
ありがとうございます。

コード: 全て選択

[*pagetitle:len:gt(105):then([*pagetitle:limit(35)*]…):else([*pagetitle*])*]

にして、一部入れ替えてみました。うまくいっています。

現状個々のリソースのタイトルが長いものに手動で、メニュータイトルに入れているので、
TopicPathテンプレートの[+topics+]プレースフォルダか、TopicPathのパラメーターで設定できると便利だと思います。