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 .
'' . $this->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;
}
}
}