Actions
Bug(バグ) #1955
open管理画面のナビゲーションフォームでナビゲーションのURLとして想定しない文字列が入力された場合、エラーメッセージを表示するように対処する
Start date:
2011-03-17
Due date:
% Done:
0%
Estimated time:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Description
Updated by Shinichi Urabe over 13 years ago
- Subject changed from ナビゲーションでナビゲーションとして想定しない文字列が入力された場合、エラーメッセージを表示するように対処する to 管理画面のナビゲーションフォームでナビゲーションのURLとして想定しない文字列が入力された場合、エラーメッセージを表示するように対処する
Updated by Minoru Takai over 13 years ago
管理画面のナビゲーションフォームでナビゲーションのURLとして想定しない文字列がURLフィールドに入力された場合、フォーム上でエラーとならない
このことが問題視されていますが、この挙動をバグと判断する根拠が読み取れません。
OpenPNE 3.4.9.2 で簡単に実装を調べてみました。
- まず、管理画面ではどのような文字列でもURLとして設定できます。
- ナビの表示側では、「想定しない文字列」がURLに設定されていても、エラーなどは生じません。
- apps/pc_frontend/modules/default/templates/_globalNav.php
<?php if ($navs): ?> <ul> <?php foreach ($navs as $nav): ?> <?php if (op_is_accessable_url($nav->uri)): ?> <li id="globalNav_<?php echo op_url_to_id($nav->uri) ?>"><?php echo link_to($nav->caption, $nav->uri) ?></li> <?php endif; ?> <?php endforeach; ?> </ul> <?php endif; ?>
- apps/pc_frontend/modules/default/templates/_localNav.php
<?php if ($navs): ?> <ul class="<?php echo $type; ?>"> <?php foreach ($navs as $nav): ?> <?php if (isset($navId)): ?> <?php $uri = $nav->uri.'?id='.$navId; ?> <?php else: ?> <?php $uri = $nav->uri; ?> <?php endif; ?> <?php if (op_is_accessable_url($uri)): ?> <li id="<?php echo $nav->type ?>_<?php echo op_url_to_id($nav->uri) ?>"><?php echo link_to($nav->caption, $uri); ?></li> <?php endif; ?> <?php endforeach; ?> </ul> <?php endif; ?>
- lib/helper/opUtilHelper.php (op_is_accessable_url() の定義)
function op_is_accessable_url($uri) { if ('/' === $uri[0] || preg_match('#^[a-z][a-z0-9\+.\-]*\://#i', $uri)) { return true; } $info = sfContext::getInstance()->getController()->convertUrlStringToParameters($uri); if (!empty($info[0])) { return sfContext::getInstance()->getRouting()->hasRouteName($info[0]); } elseif (!empty($info[1])) { return sfContext::getInstance()->getController()->actionExists($info[1]['module'], $info[1]['action']); } }
- 余談ですが、関数名 op_is_accessable_url は不適切です。 accessable という綴りは誤りです。
ルーティング名、もしくはルーティングのURLとして存在しない文字列が入った場合エラーとするほうがよいと考えられる (表示メッセージ例:「適切なURLではありません」)
これは、「新しいナビゲーション項目の追加」か「あるひとつのナビゲーション項目の編集」をした際に op_is_accessable_url() が false を返すような場合には、そのURLを設定しようと時点で設定できないようにアラートを出したほうが親切であるという提案でしょうか。
もしそうであれば、その提案は妥当だと思いますが Bug チケットとするのは不適切だと思います。付け加えておくと、その提案は悪くはないと思いますが、わざわざアラートを表示する必要があるのか疑問です。 Enhancement チケットとする場合は対応した方がよいと考える理由についても併記頂ければと思います。
Updated by Yuma Sakata almost 13 years ago
- 3.6 で発生するか set to Yes (はい)
- 3.4 で発生するか set to Yes (はい)
Updated by Shouta Kashiwagi over 12 years ago
- Target version changed from OpenPNE 3.7.0 to 252
Updated by Shouta Kashiwagi over 12 years ago
- Target version changed from 252 to OpenPNE 3.8.x
Actions