id = self::UNIQUE_ID_PREFIX . self::$unique_id; $this->content = (string) $content; $this->type = $type; } /** * Get the classes for the notice * * @param string[] $classes Additional classes * * @return string */ protected function get_notice_classes($classes = array()) { if (is_string($classes)) { $classes = explode(' ', $classes); } elseif (is_array($classes)) { } else { $classes = array(); } if ($this->is_dismissible) { $classes[] = 'is-dismissible'; } $result = array_merge(array('notice', $this->type), $classes); return trim(implode(' ', $result)); } /** * Initialize the message * * @param bool $jsBodyAppend If true, the message will be appended to the body tag * * @return void */ public function initMessage($jsBodyAppend = false) { $classes = array(); if ($this->hide_on_init) { $classes[] = 'no_display'; } $this->wrap_tag = empty($this->wrap_tag) ? 'p' : $this->wrap_tag; $result = '
' . '<' . $this->wrap_cont_tag . ' class="msg-content">' . $this->content . 'wrap_cont_tag . '>' . '
'; if ($jsBodyAppend) { echo '$("body").append(' . SnapJson::jsonEncode($result) . ');'; } else { echo $result; } } /** * Update the message content * * @param string $jsVarName Name of the variable containing the new content * @param bool $echo If true, the result will be echoed * * @return string */ public function updateMessage($jsVarName, $echo = true) { $result = 'jQuery("#' . $this->id . ' > .msg-content").html(' . $jsVarName . ');'; if ($echo) { echo $result; return ''; } else { return $result; } } /** * Show the message * * @param bool $echo If true, the result will be echoed * * @return string */ public function showMessage($echo = true) { $callStr = (strlen($this->callback_on_show) ? $this->callback_on_show . ';' : ''); $result = 'jQuery("body, html").animate({ scrollTop: 0 }, 500 );'; $result .= 'jQuery("#' . $this->id . '").fadeIn( "slow", function() { jQuery(this).removeClass("no_display");' . $callStr . ' });'; if ($this->auto_hide_delay > 0) { $result .= 'setTimeout(function () { ' . $this->hideMessage(false) . ' }, ' . $this->auto_hide_delay . ');'; } if ($echo) { echo $result; return ''; } else { return $result; } } /** * Hide the message * * @param bool $echo If true, the result will be echoed * * @return string */ public function hideMessage($echo = true) { $callStr = (strlen($this->callback_on_hide) ? $this->callback_on_hide . ';' : ''); $result = 'jQuery("#' . $this->id . '").fadeOut( "slow", function() { jQuery(this).addClass("no_display");' . $callStr . ' });'; if ($echo) { echo $result; return ''; } else { return $result; } } }