QuickManagerでSQLエラー(テンプレートにblank指定時)

質問全般・改善要望
返信する
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

QuickManagerでSQLエラー(テンプレートにblank指定時)

投稿記事 by kazuike »

ソースはまだ追えてないのですが、
modx1.0.0J、MySQL5.0.45で、
QuickManagerでリソースの編集をして保存すると、以下のようなSQLのシンタックスエラーになります。

コード: 全て選択

« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' menuindex='0', searchable=1, cacheable=1, editedby=1, editedon=1252485755, ' at line 2 »
      SQL: UPDATE `hogehoge_modx`.`modx_site_content` SET introtext='', content='\r\n\r\n\r\n\r\n\r\nhumuhumu\r\n\r\n', pagetitle='dummy', longtitle='dummy', type='document', description='', alias='dummy', link_attributes='', isfolder=1, richtext=1, published=1, pub_date=0, unpub_date=0, parent=2, template=, menuindex='0', searchable=1, cacheable=1, editedby=1, editedon=1252485755, publishedon=publishedon, publishedby=publishedby, contentType='text/html', content_dispo='0', donthit='0', menutitle='', hidemenu='0' WHERE id=3; 
2009-09-10 22時頃追記:件名に「(テンプレートにblank指定時)」を加えました。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: QuickManagerでSQLエラー

投稿記事 by kazuike »

よくみると、テンプレートの指定が抜けている様子。

テンプレートの指定を「(blank)」にしていたので、
管理画面で「Minimal Template」に変更してみたら、
QuickManagerで正常に処理できました。

逆に、テンプレートの指定を「(blank)」にしているとき、QuickManagerで編集すると、
テンプレートが選べない(選択肢にあるはずのテンプレートが出ない)ですね。


テンプレートを「(blank)」にしているときの不具合を、どこかで見たような気もするのですが、
ちょっと思い出せないです。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: QuickManagerでSQLエラー

投稿記事 by kazuike »

この件、現在調査中ですが、とりあえず途中経過。

HTMLソースを見ると、テンプレートを選ぶプルダウンの箇所は

コード: 全て選択

<select id="template" name="template" class="inputBox" onchange="templateWarning();" style="width:308px">
	<option value="0">(blank)</option>
	</optgroup>
	<optgroup label="カテゴリーなし">
	<option value="3">Minimal Template</option>
	</optgroup>
</select>
ですが、
しかし、その前に

コード: 全て選択

<script type="text/javascript">jQuery.noConflict(); jQuery(document).ready(function($){$(".subTitle").hide();
var controls = "<div style=\"position:fixed;top:10px;right:-10px;z-index:1000\" id=\"qmcontrols\" class=\"actionButtons\"><ul><li><a href=\"#\" onclick=\"documentDirty=false;document.mutate.save.click();return false;\"><img src=\"media/style/MODxCarbon/images/icons/save.png\"/>保存</a></li><li><a href=\"#\" onclick=\"documentDirty=false;document.location.href='index.php?a=3&id=4&quickmanager=cancel';return false;\"><img src=\"media/style/MODxCarbon/images/icons/stop.png\"/>キャンセル</a></li></ul></div>";
$("body").prepend(controls);
$("[name=parent]").parents("tr").hide();
$("select#template option[value=3]").remove();
$("select#template option[value=0]").remove();
document.body.style.display="block";
$("#actions").hide();
});</script>
というJavascriptがあり、
この中の

コード: 全て選択

$("select#template option[value=3]").remove();
$("select#template option[value=0]").remove();
が怪しそうな気がするのですが…
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: QuickManagerでSQLエラー

投稿記事 by kazuike »

assets/plugins/qm/mcc.class.php(63行目~)

コード: 全て選択

        function hideTemplates($tpls) {
            if(is_array($tpls)) {
                foreach($tpls as $tpl) {
                    $this->hideTemplate($tpl);
                }
                $this->hideTemplate(0); // remove blank
            }
        }
なので、無条件にblankはプルダウンから消されるようになっています。
つまり、QuickManagerでは、テンプレートにblankを使っているリソースは編集できないようです。

リソースで使っているテンプレートidを渡して、そのテンプレートidが0じゃなければblankを消す。
などの判断を入れてもらえるとありがたいのですが…
ざっと見たところ、hideTemplatesは、assets/plugins/qm/qm.inc.phpの260行目でしか呼ばれていないようですので。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: QuickManagerでSQLエラー

投稿記事 by yama »

http://code.google.com/p/modx-ja/issues/detail?id=267
これ直しとかないと困る人いますよね。とりあえず備忘を兼ねてチケット起こしておきました
返信する