Readers: 7
Постов: 2
Существует замечательный модуль, позволяющий подписываться на материалы сайта. По умолчанию он располагается под формой комментирования и всегда открыт, что делает форму слишком некомпактной.
Исправим форму подписки так, чтобы «Все комментарии» и «Ответы на мои комментарии» показывались в том случае, если отмечен чекбокс «Уведомлять меня о новых комментариях“, т.е. по умолчанию radio-кнопки будут не видны:
При отмеченном чекбоксе будут доступны варианты уведомлений:
В оригинальном js-файле модуля прописано всего лишь то, что при отмеченной radio-кнопке автоматически отмечается чекбокс, а нам этого недостаточно. Внесём свои поправки: всё нам нужно дописать, это небольшой кусок jQuery-кода.
Создадим в в директории с темой файл scripts.js с таким содержанием:
if (Drupal.jsEnabled) { $(document).ready(function() { $("#edit-notify-type-1-wrapper»).css(«display», «none“); $("#edit-notify-type-2-wrapper»).css(«display», «none“); $("#edit-notify“).click(function() { //$("#edit-notify“).attr('checked', false); if (this.checked) { $("#edit-notify-type-1-wrapper“).show(); $("#edit-notify-type-2-wrapper“).show(); } else { $("#edit-notify-type-1-wrapper“).hide(); $("#edit-notify-type-2-wrapper»).hide(); } }); }); }
Подключим файл scripts.js в файле темы:
; Scripts scripts[] = «scripts.js"
Работающий пример: используется на этом сайте
Конфликты с модулями: Ajax comments
P.S. Решение продублировано на drupal.org, в Issues модуля
Комментарии (8)
Сделал простым CSS — выстроил флоатом в одну строку. Чекбокс зависит от радиокнопки. Т.е. если юзер сразу щёлкает по ней, то чек автоматически активируется.
Спасибо за решение.
Пожалуйста!
За идею спасибо xandeadx, предложено было здесь.
Сэкономим пару сотен байт:
состояние чекбоксов можно менять и с клавиатуры, правильней будет вешать на change
в этой конструкции есть какой-то скрытый смысл?)
Разработчики тоже смысла в переменной Drupal.jsEnabled не нашли и, поэтому, в семёрке убрали.
И по .click меняется с клавиатуры
У меня есть несколько замечаний.
1. Сейчас нотифайер комментарев по-умолчанию включен, и дочерние комменты, я не могу изменить(вернее могу, но нужно сначала снять, галку с «Уведомлять меня…», и потом опять поставить — нелогично). Нужно делать проверку изначально на то или «Уведомлять меня…» включен.
2. С ajax_comments конфликтует(скрипты ругаются) или просто не работает? Я модифицировала код, используя Drupal.behaviors, у меня заработало с последним релизом(ajax_comments-6.x-1.8)
3.
radios = $('#edit-notify-type-1-wrapper').parent();
Не кошерно, зачем замусоривать глобальное пространство имен. У меня уже на автомате переменные иницилизируются через var
4. + я все операции делаю с jquery-объектами(через обертку $), например $(this), а не this — но это дело вкуса.
Еще какой-то грабель на этом сайте — не сохраняется состоянии подписки для нод — каждый кар приходится выставлять заново, вероятно, сие грабли модуля…