ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月10日 at 19:54

タイトルが長くて申し訳在りません。

concrete5 5.7.4.2での(ページタイプの「出力」ボタンから設定する)デフォルトブロックについて、教えて頂けないでしょうか?

ページ属性で、「日付/時刻」型のカスタム属性を
ページタイプの「デフォルト」設定でページ属性表示ブロックを配置した際に、

「Can't convert '[開始日]' to a \DateTime」

といった、エラーが表示されます。

デバッグ設定で「エラーのデバッグ出力を表示」を有効にした所、
/concrete/vendor/punic/punic/code/Calendar.php
の93行目からのtry〜catchで例外が発生しているようです。

TimeZoneの設定に関係するエラーではないか?と予想しているのですが、
PHPの設定ファイルでも、TimeZoneの設定は行われており、
concrete5の「システムと設定」ー「基本」ー「タイムゾーン」で確認すると
「サーバータイムゾーン:」
は、[Asia/Tokyo]と成っている事を確認しました。

ただし、前述のデバッグ設定で「エラーのデバッグ出力を表示」では、
Session部の表示で
Array ( [CLIENT_REMOTE_ADDR] => 127.0.0.1 [CLIENT_HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36 [accessEntitiesUpdated] => 1439127961 [rcID] => 1 [uID] => 1 [uName] => admin [uBlockTypesSet] => [uLastOnline] => 1439207146 [uTimezone] => [uDefaultLanguage] => [uLastPasswordChange] => 2015-08-09 22:45:53 [uOnlineCheck] => 1439207223 [frontendPreviousPageID] => 1 [search/users] => Array ( ) [search/pages] => Array ( ) [editCID] => 203 [dashboardMenus] => Array (


と、uTimezone の値が設定(付与?)されていない事が原因ではないか?
と予想しているのですが、どのような設定を行う事で、
ページ属性で「日付/時刻」型で追加したカスタム属性をページ属性表示ブロックにて表示する事が可能となるか、教えて頂けないでしょうか?


尚、concrete5 5.6.3.3では、無料のアドオン「Attribute Displayer」を用いて、「日付/時刻」型のカスタム属性をデフォルトブロックとして表示できる事を確認しています。

タグ:

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月10日 at 23:03
まだ、検証が足りませんが、自己解決したので、報告しておきます。

ページ属性表示ブロックのデフォルトブロックの(日付/時刻型の)表示時の処理に誤りがありました。

/concrete/blocks/page_attribute_display/date_time.php

上記の7行目が
echo $dh->formatCustom($format, $this->controller->getContent());

と成っていますが、
この第二引数が日付型オブジェクトである必要があるのですが、デフォルトブロックの編集時は、ページ属性に指定されている名称が返却されてしまいます。
(/concrete/blocks/page_attribute_display/controller.php のgetContent()の処理)

その為、前述の7行目を
if (is_object($this->controller->getContent())) {
echo $dh->formatCustom($format, $this->controller->getContent());
} else {
echo $dh->formatCustom($format);
}

とする事で、デフォルトブロックの編集時と、通常のブロック表示時とで、処理を分岐する事で回避させました。

ただ、他の動作に影響していないか?などは、確認出来ていません。

他のソースを見ると、Stackかどうか?などで処理を分岐している記述があるので、
もう少し、スマートな分岐方法があるような気がしています。
 

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月11日 at 6:50
バグのようですね。ぜひ、バグトラッカーへ登録をお願いします wink

http://www.concrete5.org/developers/bugs/5-7-4-2/
 

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月11日 at 8:11
バグトラッカーへ登録、チャンレンジ(という言葉を使わなければ行けないところが残念ですが)してみます。
 

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月15日 at 8:14
バグトラッカーに登録した所、

5.7.5.1で修正されてたよ
と、返信頂きました。

http://www.concrete5.org/developers/bugs/5-7-4-2/date-type-custom-attributes-was-not-add-default-block/#762465
 

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月16日 at 8:30
Nice!
 

Re: ページタイプの「出力」ボタンから「デフォルト」設定時、ページ属性で「日付/時刻」型のページ属性をデフォルトブロックに加えるとエラー

2015年8月16日 at 11:15
そして、修正されたコードを読みながら、
ほう、こう修正するのね?
と、勉強させてもらっています。