Системные сообщения

  • 7 Ответов
  • 1085 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн kik84

Системные сообщения
« : 16.05.2015, 16:51:26 »
Подскажите, где находятся файлы системного расширения <jdoc:include type="message" />?


*

Оффлайн kik84

Re: Системные сообщения
« Ответ #2 : 27.05.2015, 15:52:13 »
Хотел удалить <h4 class="alert-heading"></h4>, переместить кнопку закрыть и т.п. Но смог найти лишь языковой файл...

*

Оффлайн motokraft

Re: Системные сообщения
« Ответ #3 : 27.05.2015, 16:01:16 »
Хотел удалить <h4 class="alert-heading"></h4>

Файл: message.php (/libraries/joomla/document/html/renderer)
Строка: 112

На всякий случай, код моего файла..
[spoiler]<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * JDocument system message renderer
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentRendererMessage extends JDocumentRenderer
{
/**
 * Renders the error stack and returns the results as a string
 *
 * @param   string  $name     Not used.
 * @param   array   $params   Associative array of values
 * @param   string  $content  Not used.
 *
 * @return  string  The output of the script
 *
 * @since   11.1
 */
public function render($name$params = array (), $content null)
{
$msgList $this->getData();
$buffer null;
$app JFactory::getApplication();
$chromePath JPATH_THEMES '/' $app->getTemplate(). '/html/message.php';
$itemOverride false;

if (file_exists($chromePath))
{
include_once $chromePath;
if (function_exists('renderMessage'))
{
$itemOverride true;
}
}

$buffer = ($itemOverride)? renderMessage($msgList) : $this->renderDefaultMessage($msgList);

return $buffer;
}

/**
 * Get and prepare system message data for output
 *
 * @return  array  An array contains system message
 *
 * @since   12.2
 */
private function getData()
{
// Initialise variables.
$lists = array();

// Get the message queue
$messages JFactory::getApplication()->getMessageQueue();

// Build the sorted message list
if (is_array($messages) && !empty($messages))
{
foreach ($messages as $msg)
{
if (isset($msg['type']) && isset($msg['message']))
{
$lists[$msg['type']][] = $msg['message'];
}
}
}

return $lists;
}

/**
 * Render the system message if no message template file found
 *
 * @param   array  $msgList  An array contains system message
 *
 * @return  string  System message markup
 *
 * @since   12.2
 */
private function renderDefaultMessage($msgList)
{
// Build the return string
$buffer '';
$buffer .= "\n<div id=\"system-message-container\">";

// If messages exist render them
if (is_array($msgList))
{
$buffer .= "\n<div id=\"system-message\">";
foreach ($msgList as $type => $msgs)
{
$buffer .= "\n<div class=\"alert alert-" $type "\">";

// This requires JS so we should add it trough JS. Progressive enhancement and stuff.
$buffer .= "<a class=\"close\" data-dismiss=\"alert\">&#215;</a>";

if (count($msgs))
{
$buffer .= "\n<h4 class=\"alert-heading\">" JText::_($type). "</h4>";
$buffer .= "\n<div>";
foreach ($msgs as $msg)
{
$buffer .= "\n\t\t<p>" $msg "</p>";
}
$buffer .= "\n</div>";
}
$buffer .= "\n</div>";
}
$buffer .= "\n</div>";
}

$buffer .= "\n</div>";

return $buffer;
}
}
[/spoiler]
...

*

Оффлайн passer

Re: Системные сообщения
« Ответ #4 : 27.05.2015, 16:09:03 »
Только скопируйте его в templates/YOUR_TEMPLATE/html/message.php и там изменяйте. Иначе есть шанс с обновлением движка снести хак.

*

Оффлайн ELLE

Re: Системные сообщения
« Ответ #5 : 27.05.2015, 16:11:28 »
можно еще так:
Код: (php) [Выделить]
<!--system messages-->
              <?php if(count(JFactory::getApplication()->getMessageQueue())):
               
$message JFactory::getApplication()->getMessageQueue(); 
                
//print_r($message);
                
?>

              <div class="alert alert-<?php echo $message[0]['type']; ?>">
                  <button type="button" class="close" data-dismiss="alert">&times;</button>
                <strong><?php echo JText::_($message[0]['type']);?></strong> <?php echo $message[0]['message']; ?>
              </div>
            <?php endif;?>

вместо <jdoc:include type="message" />

*

Оффлайн SoulWolf

Re: Системные сообщения
« Ответ #6 : 05.09.2015, 04:17:25 »
Файл: message.php (/libraries/joomla/document/html/renderer)
Строка: 112

На всякий случай, код моего файла..
[spoiler]<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * JDocument system message renderer
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentRendererMessage extends JDocumentRenderer
{
/**
 * Renders the error stack and returns the results as a string
 *
 * @param   string  $name     Not used.
 * @param   array   $params   Associative array of values
 * @param   string  $content  Not used.
 *
 * @return  string  The output of the script
 *
 * @since   11.1
 */
public function render($name$params = array (), $content null)
{
$msgList $this->getData();
$buffer null;
$app JFactory::getApplication();
$chromePath JPATH_THEMES '/' $app->getTemplate(). '/html/message.php';
$itemOverride false;

if (file_exists($chromePath))
{
include_once $chromePath;
if (function_exists('renderMessage'))
{
$itemOverride true;
}
}

$buffer = ($itemOverride)? renderMessage($msgList) : $this->renderDefaultMessage($msgList);

return $buffer;
}

/**
 * Get and prepare system message data for output
 *
 * @return  array  An array contains system message
 *
 * @since   12.2
 */
private function getData()
{
// Initialise variables.
$lists = array();

// Get the message queue
$messages JFactory::getApplication()->getMessageQueue();

// Build the sorted message list
if (is_array($messages) && !empty($messages))
{
foreach ($messages as $msg)
{
if (isset($msg['type']) && isset($msg['message']))
{
$lists[$msg['type']][] = $msg['message'];
}
}
}

return $lists;
}

/**
 * Render the system message if no message template file found
 *
 * @param   array  $msgList  An array contains system message
 *
 * @return  string  System message markup
 *
 * @since   12.2
 */
private function renderDefaultMessage($msgList)
{
// Build the return string
$buffer '';
$buffer .= "\n<div id=\"system-message-container\">";

// If messages exist render them
if (is_array($msgList))
{
$buffer .= "\n<div id=\"system-message\">";
foreach ($msgList as $type => $msgs)
{
$buffer .= "\n<div class=\"alert alert-" $type "\">";

// This requires JS so we should add it trough JS. Progressive enhancement and stuff.
$buffer .= "<a class=\"close\" data-dismiss=\"alert\">&#215;</a>";

if (count($msgs))
{
$buffer .= "\n<h4 class=\"alert-heading\">" JText::_($type). "</h4>";
$buffer .= "\n<div>";
foreach ($msgs as $msg)
{
$buffer .= "\n\t\t<p>" $msg "</p>";
}
$buffer .= "\n</div>";
}
$buffer .= "\n</div>";
}
$buffer .= "\n</div>";
}

$buffer .= "\n</div>";

return $buffer;
}
}
[/spoiler]
Не могли бы Вы расшифровать Ваш код? В php пока не особо силен =)

*

Оффлайн midav

Re: Системные сообщения
« Ответ #7 : 05.09.2015, 10:01:17 »
Только скопируйте его в templates/YOUR_TEMPLATE/html/message.php и там изменяйте. Иначе есть шанс с обновлением движка снести хак.

Не надо копировать полностью весь файл из библиотеки . В файле должна быть только фукция renderMessage  , которая оформляет внешний вид выводимого сообщения .
Ответы на вопросы по CSS . Откройте для себя Firebug