ブラウザによっては通知が消えない??!
-
ソースコードを見させていただきましたが、「minecraftjp_flash」というcookieを使用しているようで、ページを推移、リログ、などをしても、「Minecraft.jpアカウントのリンクに成功しました。」などの通知が消えることはありませんでした。
そこで、cookieではなく、sessionを使用したらどうかと思いますが、
Controller.phpに、public function __construct() { add_action('init', array(&$this, 'init_sessions')); // 追加 // $this->baseDir ~~~~(略) } // 追加 public function init_sessions() { if (!session_id()) { session_start(); } if (!is_array($_SESSION[App::NAME . '_flash'])) { $_SESSION[App::NAME . '_flash'] = array(); } } public function setFlash($message, $element = 'default', $params = array()) { // 削除$messages = isset($_COOKIE[App::NAME . '_flash']) ? json_decode($_COOKIE[App::NAME . '_flash'], true) : array(); // 変更 $_SESSION[App::NAME . '_flash'][] = array( 'message' => $message, 'element' => $element, 'params' => $params, ); // 削除 setcookie(App::NAME . '_flash', json_encode($messages), time() + 3600, '/'); }
という風にsessionを書き込むように変更し、
AdminController.phpに、public function actionAdminNotices() { // 削除 $name = App::NAME . '_flash'; // 削除 $messages = isset($_COOKIE[$name]) ? json_decode(stripcslashes($_COOKIE[$name]), true) : array(); // 変更 foreach ($_SESSION[App::NAME . '_flash'] as $message) { $class = isset($message['params']['class']) ? $message['params']['class'] : 'updated'; print <<<_HTML_ <div class="{$class}"> <p><strong>{$message['message']}</strong></p> </div> _HTML_; } // 追加 $_SESSION[App::NAME . '_flash'] = array(); // 削除 setcookie($name, '', time() - 3600, '/'); }
UserController.phpに
public function filterLoginMessage($loginMessage) { // 削除 $name = \WPMinecraftJP\App::NAME . '_flash'; // 削除 $messages = isset($_COOKIE[$name]) ? json_decode(stripcslashes($_COOKIE[$name]), true) : array(); // 削除 setcookie($name, '', time() - 3600, '/'); // 変更 foreach ($_SESSION[App::NAME . '_flash'] as $message) { $class = isset($message['params']['class']) ? $message['params']['class'] : 'updated'; $loginMessage .= <<<_HTML_ <div id="login_error"> <p><strong>{$message['message']}</strong></p> </div> _HTML_; } // 追加 $_SESSION[App::NAME . '_flash'] = array(); return $loginMessage; }
というように変更を加えるとうまくいきました。
参考になれば幸いです。
Minecraft.jpを応援しています!
- The topic ‘ブラウザによっては通知が消えない??!’ is closed to new replies.