привет всем!
можно ли сделать выпадающий список select с чекбоксами?
пробовал это https://code.google.com/p/dropdown-check-list/ что то не вяжется с webform (((
может кто то делал подобное?
привет всем!
можно ли сделать выпадающий список select с чекбоксами?
пробовал это https://code.google.com/p/dropdown-check-list/ что то не вяжется с webform (((
может кто то делал подобное?
Комментарии
А зачем? если нужно улучшить юзабилити попробуйте вот это https://drupal.org/project/chosen
по дизайну должно быть так
спасибо, есть ли альтернативные варианты только с чекбоксами?
Использую данный плагин в своих проектах - никаких проблем не ощущаю.
пожалуйста дайте направление, что, где и как.
я в html.tpl прописал пути к js и css
в скрипте изменил id на селектовкий id
может что то еще ?
Ну так а инициализировать плагин?
Берём пример с офсайта:
$("#select_id").dropdownchecklist();
В своём js файле оборачиваем в
// тут ваш код
}(jQuery));
Меняем селектор #select_id на свой. Подключаем файл к сайту.
в своем js файле просто прописать:
(function ($) {
$("#id").dropdownchecklist();
}(jQuery));
и в html.tpl подключить его?
Да, но только файлы принято подключать, например, через info-файл в своей теме.
подключил через инфо , файрбаг пишет TypeError: $(...).dropdownchecklist is not a function
и ничего не изменилось
Строкой выше туда же прописать сам плагин. Расположить его в папке темы.
я прописал так
scripts[] = js/jquery-1.6.1.min.js
scripts[] = js/jquery-ui-1.8.13.custom.min.js
scripts[] = js/ui.dropdownchecklist-1.4-min.js
scripts[] = js/ui.dropdownchecklist.js
scripts[] = js/myfunct.js
стили тоже подключил
Можно обойтись тем, что есть в ядре, но тогда придётся скачать плагин версии 1.3.
Зачем 2 раза?
Попробуйте сделать вот так:
scripts[] = /misc/ui/jquery.ui.core.min.js
scripts[] = /misc/ui/jquery.ui.widget.min.js
scripts[] = js/ui.dropdownchecklist-1.3-min.js
scripts[] = js/myfunct.js
Если всё ок, то можно будет заняться стилями.
P. S. В идеале это всё делается иначе: нужно создавать свой модуль и в hook_library прописывать плагин, указывать его зависимость от ui.widget... А потом уже подключать к нужным страницам через drupal_add_library(). Я просто думаю, что Вы не сможете это всё сделать пока, поэтому пойдём путём выше.
Кому интересен вариант со своим модулем - вот он:
<?php
/**
* Implements hook_library().
*/
function MODULE-NAME_library() {
$libraries['ui.dropdownchecklist'] = array(
'title' => 'Dropdown Check List',
'website' => 'http://code.google.com/p/dropdown-check-list/',
'version' => '1.4',
'js' => array(
drupal_get_path('module', 'MODULE-NAME') . '/ui.dropdownchecklist-1.4-min.js' => array(),
),
'dependencies' => array(
array('system', 'ui.widget'),
),
);
return $libraries;
}
?>
Использование:
<?php
drupal_add_library('MODULE-NAME', 'ui.dropdownchecklist');
?>
И, соответственно, для версии 1.4 нужен jquery повыше - ставим модуль jquery update и выбираем в нём версию минимум 1.7.
да, пока модули писать не умею.
сделал как вы написали, 1,3 версию скачал залил, по-прежнему все так же (((
Блин, принудительно в начало пути добавляется путь к теме.
Ок, тогда в теме создавайте файл template.php и пропишите там, так будет даже лучше:
<?php
function ИМЯ_ТЕМЫ_preprocess_node(&$variables) {
if ($variables['type'] == 'webform') {
drupal_add_library('system', 'ui.widget');
drupal_add_js(drupal_get_path('theme', 'ИМЯ_ТЕМЫ') . '/js/ui.dropdownchecklist-1.3-min.js');
drupal_add_js(drupal_get_path('theme', 'ИМЯ_ТЕМЫ') . '/js/myfunct.js');
}
}
?>
Из info-файла наши строчки удаляем. Кэш очищаем.
в исходном коде путь валидный
src="http://site/sites/all/themes/zen/theme/js/myfunct.js?mnrwfm">
только почему то в конце .js вот это появляется ?mnrwfm
ps. я использую темизатор zen
Гм, у меня в чистом друпале это не так.
В общем, всё равно используйте совет выше, так правильнее - файлы будут подключаться только для нод с веб-формой. Изначально бы так советовал, но не хотелось мучить Вас
Это нормально. Чтобы при очистке кэша браузер внёс в свой кэш файл, который типа станет с новым именем.
кстати у меня форма в colorbox-е выводиться )))
я прописал в template.php моей субтемы код написанный вами выше, поменял название на название субтемы, итог белый лист )
Тогда if ($variables['type'] == 'webform') { нужно убирать. А если вызывается это всё не из ноды - ещё и функцию нужно менять на preprocess_page.
Прописанный Вами код процитируйте, плиз.
субтема у меня так и называется theme ))
Не нравится мне название Вашей темы... Вдруг конфликт какой идёт. Раз белый лист - посмотрите логи сервера - что там за ошибку пишет. Или если какие страницы сайта работают - в журнале есть что-то?
извините, отсутствовал.
нет конфликтов нет, применил другой скрипт, все равно не меняется вид select
Что-то делаете не так.
по-моему проблема в инициализации скрипта, т.к и тут файрбаг ругается TypeError: $.widget is not a function
$(document).ready(function(){
$("#edit-submitted-country").multiselect();
});
Сделайте так, как я написал выше, получите свой белый лист и приведите мне цитату с логов сервера.
Третий раз уже прошу, между прочим. Больше не буду просто.
отправил в ЛС
а если пойти путем своего модуля, то хватит ли того кода, который вы давали в теме для успешной реализации проблемы?
Я извиняюсь - забыл добавить, что код должен выполняться, когда DOM готов:
$(document).ready(function () {
$('select').dropdownchecklist();
});
}(jQuery));
Так работает.
спасибо, я по другому добился работы скрипта. ваш вариант так же попробую), ибо он более корректен
Спасибо за тему !! Все получилось, только скажите, а как его можно сразу открытым сделать, код скрипта смотрю, пока не получается...