baserCMS 4.1.1 ブログ・固定ページ等のタイトルに特殊文字(アポストロフィ『’』)を使うと管理画面にエラーが出る

Masamichi > baserCMS 4.1.1 ブログ・固定ページ等のタイトルに特殊文字(アポストロフィ『’』)を使うと管理画面にエラーが出る @ 2018/5/20 17:02
お世話になります。

表題の件ですが、4.1.0.1ではエラーは出ません。

【発生箇所および条件】

管理画面のコンテンツ一覧をツリー表示をさせた状態。

ブログ及び固定ページのタイトルにアポストロフィ『 ' 』を使うと発生します。
(半角 Shift+7 WindowsPC)他の特殊文字でも発生する事を確認。『¥エンマーク』

例)ブログのタイトルを『 M's Blog 』とする。



アイコンが崩れ、並べ替えも出来なくなります。

右クリックから編集しようとすると下記のようなエラーが出ます。

Notice (8): Undefined index: content_id [CORE/Baser/Controller/ContentsController.php, line 320]
Code Context
        $this->pageTitle = __d('baser', 'コンテンツ編集');
        if(!$this->request->data) {
            $this->request->data = $this->Content->find('first', ['conditions' => ['Content.id' => $this->request->params['named']['content_id']]]);
ContentsController::admin_edit() - CORE/Baser/Controller/ContentsController.php, line 320
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 491
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 163


また、並べ替えようとするとこの様になります。



詳細
Notice (8): Undefined index: currentId [CORE/Baser/Controller/ContentsController.php, line 660]
Code Context
            $this->ajaxError(500, __d('baser', '無効な処理です。'));
        }
        $this->Content->id = $this->request->data['currentId'];
ContentsController::admin_ajax_move() - CORE/Baser/Controller/ContentsController.php, line 660
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 491
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 163


Warning (2): Cannot modify header information - headers already sent by (output started at /home/*********/public_html/newmfs/lib/Cake/Utility/Debugger.php:795) [CORE/Baser/Controller/BcAppController.php, line 1534]
Code Context
 */
    public function ajaxError($errorNo = 500, $message = '') {
        header('HTTP/1.1 ' . $errorNo);
$errorNo = (int) 500
$message = 'データが存在しません。'
header - [internal], line ??
BcAppController::ajaxError() - CORE/Baser/Controller/BcAppController.php, line 1534
ContentsController::admin_ajax_move() - CORE/Baser/Controller/ContentsController.php, line 662
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 491
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167
[main] - ROOT/index.php, line 163


原因を探っていった所、下記の修正・変更がございました。

lib/Baser/View/Elements/admin/contents/index_list_tree.php



分かりやすく見比べてみると・・



該当部分を書き換えた所、正常に表示・編集出来るようになりました。

書き換え後のコード(詳しくありませんし脆弱性の問題に対応できているかどうかもわかりませんm(_ _)m)

66行目の 
"contentTitle":"<?php echo addslashes(strip_tags($data['Content']['title'])) ?>",
を下記のように書き換えました。

	"contentId":"<?php echo $data['Content']['id'] ?>",
	"contentParentId":"<?php echo $parentId ?>",
	"contentEntityId":"<?php echo $data['Content']['entity_id'] ?>",
	"contentSiteId":"<?php echo $data['Content']['site_id'] ?>",
	"contentFullUrl":"<?php echo $fullUrl ?>",
	"contentType":"<?php echo $type ?>",
	"contentAliasId":"<?php echo $data['Content']['alias_id'] ?>",
	"contentPlugin":"<?php echo $data['Content']['plugin'] ?>",
66 → "contentTitle":"<?php echo addslashes(h($data['Content']['title'])) ?>",
	"contentSiteRoot":"<?php echo (bool) $data['Content']['site_root'] ?>",
	"editDisabled":"<?php echo $editDisabled ?>",
	"manageDisabled":"<?php echo $manageDisabled ?>"
}'<?php if($open): ?> class="jstree-open"<?php endif ?>>
			<span><?php echo h($data['Content']['title']) ?></span>
			<?php if(!empty($data['children'])): ?>
				<?php $this->BcBaser->element('admin/contents/index_list_tree', ['datas' => $data['children']]) ?>
			<?php endif ?>
		</li>
	<?php endforeach ?>
</ul>


ひとまずこれで運用してみますが、改善要望として投稿させて頂きます。

どうぞ宜しくお願い致します。

■ BaserCMS: 2.1.2〜4.1.1
■ サーバー名: mixhost・heteml・さくら・ロリポップ
■ スマートURLの利用: [共に]
■ 設置フォルダ: [共に]
■ データーベース MySQL5.6
■ PHPスキル[C]

seto > Re: baserCMS 4.1.1 ブログ・固定ページ等のタイトルに特殊文字(アポストロフィ『’』)を使うと管理画面にエラーが出る @ 2018/5/21 10:28
こんにちは

バグ報告と解決案の投稿ありがとうございます。
以下にてチケットの作成を致しましたのでご報告です。

http://project.e-catchup.jp/issues/21837
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
30 人のユーザが現在オンラインです。 (30 人のユーザが フォーラム を参照しています。)

登録ユーザ: 1
ゲスト: 29