Не могу отключить фильтр html тегов

Тема в разделе "Программирование", создана пользователем artem_prozorov, 17.11.2009.

  1. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени суток всем! Второй день долбусь над следующей проблемой - надо чтоб отредактированный в стандартном джумловском редакторе текст хранился в бд. Все работает, но какойто фильтр начисто вырезает все хтмл тэги. Если кто-нибудь знает, в чем проблема, подскажите. Код следующий:
    Функция сохранить в контроллере:
    function save()
    {
    $model = $this->getModel('vedit');

    if ($model->store($post)) {
    $msg = JText::_( 'Information Saved!' );
    } else {
    $msg = JText::_( 'Error Saving Information' );
    }

    // Check the table in so it can be edited.... we are done with it anyway
    $link = 'index.php?option=com_hello';
    $this->setRedirect($link, $msg);
    }

    Код соответствующей функции в модели:
    function store()
    {
    $row =& $this->getTable();

    $data = JRequest::get( 'post' );

    // Bind the form fields to the hello table
    if (!$row->bind($data)) {
    $this->setError($this->_db->getErrorMsg());
    return false;
    }

    // Возвращает true в любом случае
    if (!$row->check()) {
    $this->setError($this->_db->getErrorMsg());
    return false;
    }

    // Store the web link table to the database
    if (!$row->store()) {
    $this->setError( $row->getErrorMsg() );
    return false;
    }

    return true;
    }
    Код соответствующего файла таблицы:

    class TableVedit extends JTable
    {
    var $id = null;
    var $id_num = null;
    var $name = null;
    var $valuee = null;
    var $description = null;

    function TableVedit(& $db) {
    parent::__construct('#___enum_value', 'id', $db);
    }
    }

    Код хтмл шаблона:
    <form action="index.php" method="post" name="adminForm" id="adminForm">
    <div class="col100">
    <fieldset class="adminform">
    <legend><?php echo JText::_( 'Details' ); ?></legend>

    <table class="admintable" width="100%">
    <tr>
    <td width="100%">Name:
    <input class="text_area" type="text" name="name" id="name" size="32" maxlength="250" value="<?php echo $this->vedit->name;?>" />
    </td>
    </tr>
    <tr>
    <td>Value:
    <?php
    // parameters : areaname, content, hidden field, width, height, rows, cols
    editorArea( 'valuee', $this->vedit->valuee , 'valuee', '100%;', '450', '60', '20' ) ; ?>
    </td>
    </tr>
    </table>
    </fieldset>
    </div>
    <div class="clr"></div>

    <input type="hidden" name="option" value="com_hello" />
    <input type="hidden" name="id" value="<?php echo $this->vedit->id; ?>" />
    <input type="hidden" name="task" value="" />
    <input type="hidden" name="controller" value="vedit" />
    </form>
     
  2.  
  3. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    дак там в редакторе есть кнопочка HTML .... там вы можете править хмтл-код )
     
  4. Offline

    _voland_ специалист

    Регистрация:
    12.04.2008
    Сообщения:
    2 173
    Симпатии:
    102
    Пол:
    Мужской
    1) настройки плагина TinyMCE
    2) настройки безопасности
    3) сменить плагин TinyMCE на простой или FCK
     
  5. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    omfgpanda, дело в том, что все теги бездушно вырезаются. Например я прописываю в html "<b>привет, мир</b>", в бд заносится "привет, мир". Тегов как и не было.

    _voland_, это тоже не прокатило - ведь не в первом поле я не использую редактор, а результат тот же. А во-вторых, com_content работает прекрасно и там все сохраняется как надо. Эээх, придется сейчас наверное этот компонент ковырять, смотреть че у меня не так как там...
     
  6. mike84
    Offline

    mike84 Недавно здесь

    Регистрация:
    25.11.2007
    Сообщения:
    210
    Симпатии:
    15
    Пол:
    Мужской
  7. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    mike84, пробовал. ((( Тут текстовые редакторы вообще не причем.
     
  8. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    тк я варьировал с ними, переставлял, даже отключал совсем (no editor)
     
  9. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ну наконец-то... В общем я нашел решение. На случай, если кому-нибудь может это показаться полезным, надо было в контроллере добавить строчку
    $post['valuee'] = JRequest::getVar('valuee', '', 'post', 'string', JREQUEST_ALLOWRAW); // Без нее редактор работать не будет.
    а в модели дать методу store переменную $date на обработку. Теперь все работает ок,
    Спасибо всем за участие! ))
     
  10. mike84
    Offline

    mike84 Недавно здесь

    Регистрация:
    25.11.2007
    Сообщения:
    210
    Симпатии:
    15
    Пол:
    Мужской
    так это баг или фича?
    и в какой версии такая бяка наблюдается?
     
  11. Offline

    Калочелитис Антон Недавно здесь

    Регистрация:
    18.12.2009
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Привет. Всем.
    Это не Баг и не Фича. Это всего навсего криворукость. Я сам таким пострадал немного. Смысл ошибка в том, что когда ты принимаешь переменную ты должен указать к какому типу относится переменная.
    ;P
    А написал я это потому как эта статья мне очень помогла в поиске моего бага. Но тут толком не было объяснено причина ошибки. Удачи всем в программинге.
     
  12. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    artem_prozorov, А не могли бы Вы поподробнее расписать решение этой проблемы. В других цмс просто есть возможность включения и пхп и хтмл кода в страницу. Моих знаний элементарно не хватает , чтобы понять вас. Хотя если покопаться можно было бы разобраться, но боюсь на это уйдет много времени.
     
  13. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    о в менеджере материалов есть такие настройки....поторопился с созданием темы)
    Сейчас посомтрю где у них фильтр храниться.
    здесь кстати этот мегаполезный фикс:))(наверное он конечно помогает, но иногда он откровенно мещшает:) )
    http://www.whyjoomla.com/blog/further-information/74-html-filters-in-joomla-15-how-to-allow-full-embedded-html
     
  14. Kadavr
    Offline

    Kadavr специалист

    Регистрация:
    18.10.2007
    Сообщения:
    557
    Симпатии:
    39
    Пол:
    Мужской
    Плагины/Редактор TinyMCE - Очистка кода при загрузке -включить , Очистка кода при сохранении - никогда.
     
  15. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    это не помогает:(.
     
  16. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    как совсем дикий вариант можно сделать так:
    1. включить использование черного списка в менеджере материалов(в принципе он по умолчанию там работает, но для пущей убедительности).
    2. в файле libraries\joomla\filter\filterinput.php подредактировать массивы:

    tagblacklist и attrblacklist.
    хотя все равно как-то странно ведет себя джумла(видать она еще где-то режет тэги по регекспам каким-то).
    Но в этом случае можно создать допустим текстовое поле заполненное тэгами.....однако при редактировании повторном содержимое поля уже не отображается. вот такие дела=O:D
     
  17. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    еще взял и заремил функцию clean в filterinput.php.
    получилось такое:
    function clean ($source, $type='string')
    {
    return $source; //была переменная $result...короче функция выдает на выход то, что попало на вход...
    это наверное может иметь неприятный исход....посмотрим, главное соблюдать чистоту кода:)
    }
     
  18. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
  19. Kadavr
    Offline

    Kadavr специалист

    Регистрация:
    18.10.2007
    Сообщения:
    557
    Симпатии:
    39
    Пол:
    Мужской
    Мда. Вдруг возникла такая же проблема. Поборолся, плюнул и поставил редактор JCE.
     
  20. Offline

    artem_prozorov Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Друзья! Смотрите http://docs.joomla.org/Developers - там все описано. Правда на китайском, но есть очень полезная инфа, например описаны принципы работы джумлы, что к чему обращается и что за что отвечает, а так же есть примеры создания простого компонента и последующей его модификации. Надо сказать мне это очень помогло, может и вы что-нибудь полезное для себя найдете. А при большом желании можно всю эту инфу переведенной найти, я вроде бы где-то встречал, возможно даже в википедии, не помню точно
     
  21. Offline

    ValeriyGauf Недавно здесь

    Регистрация:
    20.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    спасибо...свой компонент я уже один создал...работает пока:)
    а проблему я решил установкой JUMI как рукой сняло...плюс ко всему оно очень хорошо с моим компонентом сочитается:)
     

Поделиться этой страницей

Загрузка...