burn: Блог

Главные вкладки

[Решение] Дублирование url без имени в Simplenews plain text письмах

30 июля 2009 в 17:13

При использовании модуля simplenews для рассылки писем в plain text когда в тексте встречается простой URL то он дублируется.

Краткое разбирательство прояснило что происходит двойное преобразование - сначала стандартный парсер при создании ноды делает из URL тег a href в котором текст ссылки дублируется в ее имя. Затем функция преобразования письма в plain text возвращает URL в виде $label.' '.$url что и приводит к дублированию ссылок.

Решение простое

simplenews.module, функция _simplenews_absolute_mail_urls

cтарый код:

[Решено] Модуль Simplenews. Word-wrap для формата писем plain text - не учитывается 2-байтность UTF-кодов

27 июля 2009 в 20:14

Модуль Simplenews при рассылке писем в формате Plain text в кодировке UTF-8 не учитывает 2-байтность UTF-символов при wordwrap текста письма,
в результате материалы на русском языке оказываются отбиты на ~40 символе вместо ~80-го, такие письма неудобно читать.

Копание в коде привело к выводу что письмо преобразуется в текст и отправляется ядром drupal.

в includes/mail.inc есть такая функция:

function _drupal_wrap_mail_line(&$line, $key, $values) {
  // Use soft-breaks only for purely quoted or unindented text.
  $line = wordwrap($line, 77 - $values['length'], $values['soft'] ? "  \n" : "\n");
  // Break really long words at the maximum width allowed.
  $line = wordwrap($line, 996 - $values['length'], $values['soft'] ? " \n" : "\n");
}

но ее правка на результат на выходе simplenews не влияет.

Видимо не там копаю, подскажите где это можно исправить?

Проблема с локализацией CAPTCHA

23 июля 2009 в 19:55

Сайт на Drupal двуязычный. В целом все работает как задумывалось, но странно ведет себя модуль CAPTCHA / Image Captcha.

Язык настроен следующим образом - используется префикс пути с авто-определением языка, дефолтный язык English, для обоих языков заданы префиксы пути (en и ru)

Simplenews - как сделать чтобы было одно письмо подтверждения на все темы подписок?

20 июля 2009 в 15:31

В модуле simplenews при подписке на e-mail (для незагеристрированных пользователей) отправляет запрос на подтверждение по каждой теме таксономии отдельным письмом, что есть непрвильно ибо неудобно для пользователя. Хочется чтобы это был один запрос на подтверждение и соотв. 1 письмо на все темы, которые выбрал пользователь при при отправке формы подписки. Кто нибудь решал эту проблему? Может быть есть готовое решение?

Испортил вывод названий модулей в списке Permissions

13 июля 2009 в 0:29

названия модулей в списке Permissions в админке вдруг стали выводится в виде:

Как поменять параметры создания новой ноды по умолчанию?

12 июля 2009 в 15:12

Хочется чтобы при создании ноды были другие параметры по умолчанию. В частности чтобы тизер сразу отделялся от новости, не было галочки "показывать тизер" в основной новости и вообще была возможность изменить расстановку других галочек по умолчанию.

Делал кастомную тему - пропало admin menu

8 июля 2009 в 22:22

Делал свою тему оформления, переписал page.tpl.php. Тему сделал, но обнаружил что пропало admin menu. В какой момент и когда пропало к сожалению не заметил.
Ошибок JS Firebug не показывает, просто не отображается и все. Всякие мелочи проковырял - не влияет. В любой стандартной теме - отображается.

Может кто сталкивался , что делать , в каком направлении копать ?

Умеренная кривизна в локализации модуля Archive by terms

7 июля 2009 в 22:02

Установил модуль Archive by terms на многоязычном сайте с i18n и переводом таксономии.

Функционал - то что надо, но с переводами выявился небольшой но неприятный глюк.

В блоке Archive by terms в меню выводятся непереведенные пункты из словаря таксономии. При этом на страницах архива по ссылкам меню все ок, пункты переведенные.

Стал смотреть код и вижу там такое вот интересное:

function archive_by_terms_make_menu($vid = array(1)) {
       
        $where = '';
       
        $flag = true;
        foreach ( $vid as $value ) {//first we want to build the sql where clause
        if($flag){
                $flag = false;
                $where .= 'WHERE vid = %d';
        }else{
                $where .= ' OR vid = %d';
        }
           
        }
       
        //We get all the terms that should be displayed in the block
        $sql = "SELECT tid,name FROM {term_data} ".$where;
        $result = db_query($sql, $vid);
        $out = array ();
        $i = 0;
       
        //for each term selected we get the nodes
        while ($row = db_fetch_object($result)) {
                $nid_by_year = archive_by_terms_get_years($row->tid);
                $out[$i] = array (
                        'tid' => $row->tid,
                        'name' => $row->name,
                       
                );
                //all those nodes are now ordered by year
                foreach ($nid_by_year as $el) {
                        $out[$i]['year'][format_date($el->created, 'custom', 'Y')] = 'true';
                }
                $i++;
        }
        return $out;
}

немного удивился зачем использовать прямые sql запросы, но авторам модуля наверное виднее.
естественно первым же движением было

                $out[$i] = array (
                        'tid' => $row->tid,
                        'name' => t($row->name),
                       
                );