アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 18:29

5.4.0.5から5.4.1.1までアップグレードの際、トラブルが発生しました。
元々のサイトはレイアウトを使いましたが、レイアウトを使った部分がすべて消去されてしまいました(http://www.shirayuki-ice.com)。

原因を調べていくと、
5.4.0.5の場合/concrete/models/layout.php 53行目

public function getLayoutNameTxt(){ return t('Layout'); }

5.4.1.1の場合は以下のように変わってしまいます。
public function getLayoutNameTxt(){ return 'Layout'; }


このような場合、54行 getLayoutNameおよび249行 $this->getCellAreaHandle()などに影響を与えてしまうようです。このままだと、データーベースからエリアを取る際、異常が発生します。

私の解決方法は、データベースをエクスポートし、エディタを使ってsqlファイルの
Main : レイアウト X : Cell X
から
Main : Layout X : Cell X
に全部書き換えました。
そして書き換えたデータをデータベースにインポートしました。これで5.4.1.1のgetCellAreaHandleはエリアを正しく取り出すことができます。

もうひとつの方法としては、5.4.1.1をt('Layout')に変更してレイアウトを「日本語」に変えることもできると思います。けれども、cssのclassに日本語が現れる(62行 $layoutNameClass)のは良くないと思います。

Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 19:42
あ、これやばい。
これ、対処します。
 

Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 19:48
ああ・・・そうか・・・。そういうこともありましたね・・・。コレは、ちょっと、あれですね。

自動アップグレードの更新をストップします
 

Re: Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:00
迅速な対応ありがとうございます。お正月早々すみません。
 

Re: Re: Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:16
いえいえ、かえって、正月にリリースしたのが不幸中の幸いでしたね。
こんな正月に、アップグレードしてくださって、ありがとうございます。

t('Layout'); に戻す事が、一番手っ取り早いですが、おっしゃるとおり、日本語が入るとは倍ので・・・

アップグレードスクリプトを書き換える必要があるので、ちょっと時間がかかりそう。
メンバーの中に、レイアウト機能を使っている人間が少ないんで、今度からベータテストをきっちりしないと・・・。

というか、次回から、よろしければ、お暇であれば、テストの協力をお願いします〜 m(_ _)m
 

Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:21
あ、これ、俺ら日本語チームで、t() を外したんだ・・・。
本家ではまだ、普通に t() 使ってるな・・・。

なんとかせねば。
 

Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:40
日本チームがt()を外したことは間違ってないと思います。そうじゃないと、他言語t('Layout')を翻訳する時、このまま翻訳するのが通常です。でも、翻訳後、cssのレイアウト部分のクラスが日本語になってしまう問題が生じます。だからt()がない方が問題や誤解が生じないと思います。

5.4.0.5日本語版では、t('Layout')は翻訳しないほうがいいと思います(英語のまま)。
 

Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 21:20
日本語だけ独自路線を行き過ぎるのは、まずいです。

また、英語だけではなく、concrete5 は他の言語にも訳されています。特に多言語サイトの場合は、言語を変えた途端にレイアウトが消えちゃいますからね。なので、これは、本家にも仰がないといけません。

http://www.concrete5.org/developers/bugs/5-4-1-1/andquotlayoutandquot-naming-issue/

に、バグレポートを書き、国際化スレッドでも

http://www.concrete5.org/community/forums/internationalization/naming-of-layout-for-multi-language-problem/

でスレを立てて様子を見ます。例えば、違うアプローチを考えられるんだったら、そうしたらいいですしね。
 

Re: Re: Re: Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:25
お役に立てる範囲があれば喜んでやらせてもらいますよ。
 

Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 20:40
ここまで来ると、一旦、じっくり考えます。
他のメンバーも正月休み取りたいだろうし。
私の場合は、仕事が溜まってる(涙)
 

Re: Re: アップグレードの際、レイアウトをすべて消去されてしまった

2011年1月1日 at 22:53
syzlmrさんの意見に賛成です。
cssのクラス名に日本語が入るのは避けた方が良いと思います。

その為に、このt()を外しました。(リリースノートに書き忘れた...)

なので、アップグレード時にデータベース内の「レイアウト」を「layout」に書き換えて、cssのクラス名に日本語が入らない様にした方が良いと思います。