Сборщик RSS-лент

Доклад Рамиля Кинзябулатова «Разработка интернет магазина на Drupal 7 и 1С»

drupal.ru - 21 час 36 минут ago

Собственно ссылка на описание
По многочисленным просьбам выкладываю подробное описание моего доклада с картинками.

Категории: ру drupal планета

DrupalCafe №1 в Новосибирске

drupal.ru - Пт, 2012/02/17 - 11:37


В Новосибирске состоится первое DrupalCafe.
Ждем всех желающих выступить с докладом и поучаствовать в обсуждении актуальных тем.
Предварительная обязательная ">регистрация
г.Новосибирск, Академгородок, ул. Инженерная 20, Технопарк, конференцзал на 3 этаже
Начало: 25 февраля в 12:00
Окончание: 25 февраля в 15:00
Помощь в подготовке докладов Роман Чижиков: skype: roman.chizhikov
Организационные вопросы: Павел Прищепа: skype: prischepa.p
info@drupalsib.ru
тел.офиса (383) 233-27-00

Attached poll "Прийдете ли вы на первое DrupalCafe в Новосибирске?".
Register or login to poll
Results:
да: 1 голос
нет: 2 голоса
Категории: ру drupal планета

Модуль Яндекс.Погода для Drupal 6

drupal.ru - Вс, 2012/02/12 - 21:14

Скачать модуль: yandex_weather.zip

На прошлой неделе на сайте drupal.ru я увидел активное обсуждение топиков «Яндекс сервисы в одном проекте» и «Встреча по поддержке и продвижению Яндекс-сервисов в Drupal». В представленном списке существующих модулей для интеграции с сервисами Яндекса я не обнаружил модуля про погоду. Я доработал свой модуль, исправил ошибки, дописал дополнительный функционал и решил выложить на сайт для обсуждения сообществом.

Вот так выглядит блок с информером погоды от Яндекса в дефолтной теме.

В настройках блока можно:

  • указать город по умолчанию;
  • разрешить/запретить отображать форму выбора города в блоке;
  • выбирать размер информера.

Текстовые сообщения модуля написаны на английском языке и переведены на русский язык.

Если данный модуль вызовет интерес, то можно переписать его и для Drupal 7. Буду благодарен за любые конструктивные комментарии.

Скачать модуль: yandex_weather.zip

Прикрепленный файлРазмер yandex_weather.zip9.37 кб
Категории: ру drupal планета

Сайт Максима Новицкого, певца и композитора.

Финалист масштабного проекта Филиппа Киркорова и Ани Лорак - Шоу № 1. Модель Louis Vuitton в Японии. Вошёл в 30-ку лучших артистов Украины 2010 года. Полуфиналист европейского песенного конкурса "Eurovision 2011".

maxim-novitskiy_com.png.png
Категории: ру drupal планета

Вторая школа Drupal в Москве

11, 18 ,19 февраля 2012 Изображение: 

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

На занятиях каждый построит сайт для своего дела, бизнеса или хобби.

читать далее

Категории: ру drupal планета

DrupalConf 2012 - дата проведения

drupal.ru - Пт, 2012/02/03 - 18:26

Всем привет!

Мы собираемся провести следующий DrupalConf 25-26 мая 2012.

Но вот вопрос:

Attached poll "какой формат будет для всех удобней ?".
Register or login to poll
Results:
1 день - 2 потока - суббота (26 мая): 6 голосов
2 дня - 1 поток - пятница, суббота (25-26 мая): 5 голосов
Категории: ру drupal планета

Результаты встречи 22.12.2011 - ассоциация

drupal.ru - Чт, 2012/01/26 - 09:51

Всем привет!

22 декабря 2011 года произошла встречи инициативной группы по созданию Российской Друпал ассоциации. От сообщества присутствовали: kostin, gagaga, axel, Даша Богуцкая, Андрей Постников и Паньков Артем.

Итак, промежуточные итоги встречи:
1. Маркетинг.
Маркетинг признал одним из важнейших направлений деятельности Ассоциации. На данном промежуточном этапе приоритетными задачами стали:
- участие Ассоциации в круглых столах, конференциях, выставках;
- увеличение числа публикаций в оффлайн журналах, статей, блогов и мнений экспертов;
- интенсивное освещения Drupal в смежных отраслях, а не на ресурсах, связанных с Drupal;
- создание промо-ролика о Drupal;
- разработку презентационных материалов;
- освещение лучших русских проектов на Drupal;
- привлечение новичков к Drupal;

2. Вопросы требующие дальнейшей проработки и обсуждения:
- сертификация специалистов и подбор персонала Ассоциацией;
- доработка сборок;
- консалтинг.

3. Организационно правовая форма Друпал Ассоциации.
Вопрос ОПФ будет прорабатываться в части целесообразности регистрации юридического лицо со сложной организационно-правовой формой(по сути, это создаст нагрузку на бухгалтерию, в том числе пересылку бумажных документов, как минимум 15 000*12 = 180 000, что в условиях неясности финансирования вызывает вопросы). Какое-то время мы еще будем консультироваться с юристами.
Вопрос, как я понимаю, больной и актуальный для многих. Мы думаем над тем, как принять взвешенное решение, которое устроит всех.

4. С Drupal.ru будет осуществляться взаимодействие и сотрудничество в рамках маркетинговых вопросов. Общее мнение состоит в том, что это разные ресурсы.

На данный момент в разработке находится сайт ассоциации и мы надеемся, что мы представим его не позднее середины-конца февраля. А пока инициативная группа начнет проработку оставшихся вопросов.

Категории: ру drupal планета

Inner poll для Drupal 7. Прикрепляйте опросы к любому документу ;)

drupal.ru - Сб, 2012/01/21 - 18:53

День добрый.

Портировал Inner poll для Drupal 7, для моего любимого www.drupal.ru. Прикрепляйте опросы к любому документу ;).

При портировании кое-где немного изменил логику и вывел количество воздержавшихся.
Поля в БД совместимы с версией для Drupal 6, только добавились новые индексы.
Перевод модуля содержится в архиве модуля.

Ищу тех кто поможет разместить модуль на drupal.org.

Особенности модуля

  1. Все действия пользователей сохраняются без перезагрузки страницы (хмм, возможно, пора уже перестать считать AJAX фишкой);
  2. автор опроса может разрешить (или не разрешить) пользователям отменять свои голоса голоса;
  3. автор опроса может открывать/закрывать опрос, а так же устанавливать дату автоматического закрытия опроса;
  4. автор опроса может разрешить/запретить множественный выбор;
  5. автор опроса, если он не является модератором, может править вопрос опроса только до тех пор, пока в опросе нет ни одного голоса;
  6. автор опроса, если он не является модератором, может править ответ на вопрос только до тех пор, пока за этот ответ нет ни одного голоса;
  7. опрос может содержать до 999 вариантов ответа;
  8. пользователи не могут просматривать результаты опроса до тех пор пока не проголосуют, для неопределившихся с решением есть кнопка "Воздержаться", после нажатия которой будут показаны результаты, но при этом пользователь потеряет возможность голосовать в этом опросе;
  9. администратор сайта может раздавать права на голосование, создание опросов, редактирование опросов, редактирование опросов даже в случае если в них уже есть голоса;

Пояснение к пунктам 5 и 6. Они нужны для того, чтобы авторы не вносили кардинальных изменений в опрос тогда, когда другие юзеры уже отдали в них свои голоса. Например, был опрос "Любите ли вы клубнику", на который получены ответы "Да" — 95%, "Нет" — 5%, а затем ушлый автор сменил вопрос на "Смотрите ли вы порнографию".

Примечания

  1. Не стал прикручивать кэш, так как в кэш можно класть всю страницу сторонними средствами при необходимости (обработка AJAX живёт на своих URL).
  2. Не реализован файл тестов, если кто напишет, буду благодарен.
  3. Отсутствует шаблон вывода контента так как количество выводимых данных мало и многое можно темизировать с помощью *.css.

Загрузка

Альтернативная ссылка: Inner poll для Drupal 7.

Прикрепленный файлРазмер inner_poll.zip21.54 кб
Категории: ру drupal планета

Встреча по поддержке и продвижению Яндекс-сервисов в Drupal

drupal.ru - Ср, 2012/01/18 - 13:47

Продолжение комментария http://www.drupal.ru/node/74274?page=1#comment-435564
Компания Яндекс заинтересована в продвижении и повышении уровня интеграции своих сервисов с Drupal.
Предлагается провести встречу по вопросам разработки, встреча ориентирована преимущественно на разработчиков.
Яндекс интересует:

  • Время встречи - 24 января, вторник, 19 часов. Будет забронирована переговорная комната.
  • Встреча будет проходить в офисе Яндекса
  • Количество участников (сколько будет людей очно на встрече, сколько будет удаленно). Товарищи, желающие присутствовать удалённо - отпишитесь, пожалуйста, в комментариях.

Так же я считаю, что будет нелишним подготовить вопросы и предложения по использованию API
Будут вноситься коррективы

Категории: ру drupal планета

DrupalCafé №3 в Харькове - 26.01.2012

drupal.ru - Пнд, 2012/01/16 - 16:38


В четверг, 26 января, в 19:00, в Харькове пройдет третье по счету DrupalCafe.
Место проведения - по прежнему Выставочный центр «РАДМИР ЭКСПОХОЛЛ», по адресу ул. Академика Павлова 271 (м. Академика Павлова).

Темы докладов:
1. "Уровень абстракции баз данных и ее преимущества" (Бабченко Виталий)

2. "Принципы безопасной разработки сайтов на Drupal" (Иванченко Александр)

В процессе доклада будет рассмотрено:
-Безопасные принципы работы с БД средствами Drupal
-Принципы работы с пользователями и пользовательскими данными
-Как избежать XSS и CSRF атак
-Общие рекомендации для безопасной разработки

3. "Темизация Drupal 7" (Литвиненко Сергей)

Архитектурные и принципиальне отличия тем для Drupal 7 от Drupal 6. Краткий обзор RDFa и работы с рендер массивами.

Участие бесплатное, в программе как обычно кофе+плюшки.
Желательно предварительная регистрация, всем желающим - отпишите в комментарии или в контакты ниже.
https://docs.google.com/spreadsheet/viewform?formkey=dERVTEhMVEdZMVdIVlk...

По всем вопросам можно обращаться:
+38(099)3525316 - Алексей Гайдабура, gaydabura@gmail.com skype: alexey.gaydabura
+38(067)2802207 - Иван Мосев, i.k.mosev@gmail.com, skype: i.k.mosev
Спонсор - WDG (http://wdg-company.com/)

Категории: ру drupal планета

Видео и слайды с DrupalCamp Donetsk 2011

drupal.ru - Сб, 2012/01/14 - 00:05

Мы наконец-то выложили обещанное и долгожданное видео докладов с DrupalCamp! Спасибо Петру Козаченко, Владимиру Колосу и Александру Даниленко за съемку и обработку. Результат их совместной работы вы можете увидеть здесь http://www.youtube.com/user/DrupalCampDonetsk.

Мы также выложили слайды презентаций сюда http://slideshare.net/DrupalCampDN, А еще, мы прикрепили эти видео и слайды к темам докладов на нашем сайте: http://donetsk.drupal.ua/ru/program/session-schedule. Пожалуйста, оставляйте ваши отзывы!

Категории: ру drupal планета

С Новым Годом!

drupal.ru - Пт, 2012/01/13 - 22:14

Всех со "старым" Новым Годом :)

Мы все такие разные, но давайте быть терпимее, добрее и лучше ;)

А у Вас уже наступил? )))

p.s.: и всё таки Drupal рулит!

Категории: ру drupal планета

Новый PDF журнал о Друпале!

drupal.ru - Пт, 2012/01/13 - 11:44

Друзья! Наша инициативная группа рада объявить о выходе в свет нового, открытого, русскоязычного электронного журнала - Drup’n’Roll!
На его страницах вы сможете найти много полезной информации для разработчиков и администраторов сайтов и прочих веб-приложений, созданных на базе нашей любимой CMF Drupal.

В первом номере вы найдёте статьи об особенностях построения процессов разработки вместе с модулем Features и инструментом Drush, прочитаете материалы об относительно новом течении в создании графических тем — Responsive design, сможете
ознакомиться с последними новостями из жизни Drupal-сообщества и мероприятиями по всему миру.

Для чего мы это делаем? Самая главная цель, которую мы ставим перед собой — популяризация CMF Drupal среди
разработчиков и потребителей их услуг. Будем учиться и работать вместе!

http://drupnroll.ru/

Прошу модераторов прикрепить этот пост на главной

Категории: ру drupal планета

Школа Drupal в Москве

Начало 21 января в 11:00, окончание: 28 января в 18:00 Изображение: 

Для тех, кто не знает языки программирования, но хочет научиться создавать сайты.
Иными словами, для самых начинающих.
Важное условие: уверенный пользователь ПК.

Участники во время Школы получат знания, необходимые для создания простых и сложных сайтов. Поймут специфику создания сайтов на Drupal. Каждый будет работать над своим собственным проектом, и на выходе получит работающий полноценный сайт.
Программа

21 января, суббота

Блок 1. 11.00-14.00

читать далее

Категории: ру drupal планета

Photoshop для веб-дизайнеров

17 января, вторник, 19:30 - 22:00 Изображение: 

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

Будут рассмотрены

читать далее

Категории: ру drupal планета

Мастер-классы по системе электронного документооборота (СЭД)

24 января, вторник, 19.30 – 21.30 Изображение: 

Введение в систему электронного документооборота (СЭД)

Для тех, кто ничего не знает о СЭД, но хочет разобраться.

Программа:
• Привет, СЭД! Для чего ты нам?
• Как понять, что Компании нужен документооборот?
• Что может дать документооборот?
• Каковы его преимущества со стороны руководителя предприятия, руководителя среднего звена и менеджера?

Стоимость 500 рублей

читать далее

Категории: ру drupal планета

Яндекс сервисы в одном проекте

drupal.ru - Пнд, 2012/01/09 - 15:37

Предлагаю обсудить возможность объединить все Яндекс сервисы в одном проекте. На текущий момент на д.о. есть несколько различных модулей для интеграции с яндекс сервисами.

Поиск по сайту дал следующие результаты:

Если что то забыл, поправьте.

Вот мои причины, для чтобы собрать все сервисы в один проект:

  1. На данный момент большинство из этих модулей находятся «в стадии разработки», а многие попросту брошены без особых шансов получить стабильный релиз для D6 и D7. Я думаю ситуация измениться, если у проекта будет несколько разработчиков.
  2. Это поможет устранить дублирования проектов. Например, в приведённом списке представлено сразу 3 модуля для интеграции с Яндекс.маркет. Думаю, лучше всё таки будет объединить усилия.
  3. Помощь новым разработчикам. Несколько модулей находятся в песочницах из-за того, что некому сделать review кода. На д.о. яндекс мало кому интересен...
  4. Для многих яндекс сервисов интеграция с Друпалом полностью отсутствует. В том числе для самого главного, на мой взгляд сервиса — Яндекс.xml.
  5. Для одного общего проекта, легче найти спонсоров.

Attached poll "Нужно ли объединять все яндекс.модули в один проект?".
Register or login to poll
Results:
Да: 10 голосов
Нет: 2 голоса
Категории: ру drupal планета

Вот такая штукенция получилась. Radios Select для Drupal 7.

drupal.ru - Пнд, 2012/01/09 - 12:08

История из разряда "Новая жизнь старых вещей". Точнее - новая "шуба" для привычного элемента форм radios. В случаях, когда элемент radios строится из модуля.

Собственно, началось всё с того, что искал способ отобразить в форме модуля некую таблицу символов с возможностью выбора любого одного символа. Символы должны быть достаточно крупные (шрифт где-то 18-20px). Для начала попытался приспособить обычный select, но не понравилось: во-первых, список слишком длинный и выбирать неудобно, а во-вторых, добиться единообразного отображения (размер шрифта, padding, выравнивание и т.д.) в разных браузерах оказалось совсем непросто.

В общем, нужно было искать более компактное решение, при котором таблица была бы именно таблицей. В процессе разных тестов случайно обнаружил, что метки (label) для элемента radios в большинстве браузеров обрабатывают клики как и родительский (связанный с меткой) сам radios-control (кружочек, по которому мы тыкаем мышкой). То есть - по клику на метку элемент устанавливается в состояние checked, как если б мы кликали на сам кружочек. Не бог весть какое открытие, но беглый поиск аналогичных развитых решений с использованием меток в гугле ничего не дал. И я приступил к работе.

После ряда тычков в неверных направлениях было выведено более-менее унифицированное и кроссбраузерное решение (CSS + jQuery). Я его назвал Radios Select. Вот он, со скромной гордостью и удовлетворением представляю своё детище:

А вот что происходит по клику на элементе:

Код, формирующий вывод:

<?php
$values = preg_split('/[\s,\.]+/', ucwords('Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sodales congue velit. Duis commodo interdum ipsum.'));

$form['rs_example_1']['radios_select_1'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select word:'),
  '#default_value' => 1,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#description'   => t('Word to use in form.'),
);
?>

Собственно, Radios Select можно использовать не только, как таблицу символов, а для выбора любого значения: строки, числа. Родилась идея сделать модуль-хук, который бы темизировал элементы radios как Radios Select, если у элементов установлен соответствующий параметр, а иначе - выводил бы стандартный radios. В процессе работы над модулем элемент Radios Select "оброс" рядом параметров, позволяющих кастомизировать вывод этого псевдо-элемента (это действительно скорее псевдо-элемент, поскольку по факту строится обычный radios и последующая обработка в submit'е - типичная для radios).

Например, можно изменить свойства шрифта элемента:


<?php
$values = preg_split('/[\s,\.]+/', ucwords('Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sodales congue velit. Duis commodo interdum ipsum.'));

$form['rs_example_2']['radios_select_2'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select word:'),
  '#default_value' => 2,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'label'         => array(
      'font'         => 'Times New Roman',  // this sets font family (same as in CSS way)
      'font_size'    => 1.4,              // this sets font size (in "units" units)
      'font_color'   => '#339933',        // this sets font color (same as in CSS way)
      'line_height'  => 2,                // this sets line height (in "units" units)
      'units'        => 'em',             // can be em or px (default: px)
    ),
  ),
  '#description'   => t('Word to use in form.'),
);
?>

А вот и вариант для искомой таблицы символов:


<?php
$values = array();
for ($i = 33; $i < 256; $i++) {
  $values[] = '&#' . $i . ';';
}
$values = array_combine($values, $values);

// Replace Soft Hyphen symbol (­) by non-breaking space
// (this symbol produces row break in Firefox and Opera)
$values['­'] = ' ';

$form['rs_example_3']['radios_select_3'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select symbol:'),
  '#default_value' => '©',
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'label'          => array(
      'width'          => 2,      // sets label width (in "units" units)
      'height'         => 2,      // sets label height (in "units" units)
      'line_height'    => 2,
      'padding_x'      => '3px',  // horizontal padding (we use px instead of units)
      'padding_y'      => '3px',  // vertical padding (we use px instead of units)
      'units'          => 'em',
    ),
  ),
  '#description'   => t('Symbol to use in form.'),
);
?>

Можно "подкрасить" оформление элемента (выбирается также светлая или тёмная стрелка):


<?php
$values = array_merge(range('A', 'Z'), range('a', 'z'));

$form['rs_example_4']['radios_select_4_1'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select character:'),
  '#default_value' => 2,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'element'        => array(
      'frame_color'    => '#d4d0c8', // this sets frame color
      'dark_arrow'     => TRUE,      // this sets dark arrow for this element
     ),
    'label'          => array(
      'width'          => 2,
      'height'         => 2,
      'padding_x'      => '3px',
      'padding_y'      => '3px',
      'units'          => 'em',
     ),
   ),
  '#description'   => t('Character to use in form.'),
);
?>

Или убрать фон выбранного элемента и объединить с селектором (так называемый hollow-режим):


<?php
$values = array_merge(range('A', 'Z'), range('a', 'z'));

$form['rs_example_4']['radios_select_4_2'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select character:'),
  '#default_value' => 2,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'element'         => array(
      'hollow'          => TRUE,   // this sets hollow mode
     ),
    'label'         => array(
      'width'           => 2,
      'height'          => 2,
      'padding_x'       => '3px',
      'padding_y'       => '3px',
      'units'           => 'em',
     ),
   ),
  '#description'   => t('Character to use in form.'),
);
?>

А можно и вставить картинки в селектор, причём выровнять по желанию - либо по верху (по умолчанию), либо по низу (как в этом примере):


<?php
$module_path = url(drupal_get_path('module', 'radios_select'));
$images_path = $module_path . '/examples/images/';

$values = array(
  '<img src="' . $images_path . 'image1.png" /><br />Some image 1',
  '<img src="' . $images_path . 'image2.png" /><br />Some image 2',
  '<img src="' . $images_path . 'image3.png" /><br />Some image 3',
  '<img src="' . $images_path . 'image1.png" /><br />Some image 4',
  '<img src="' . $images_path . 'image2.png" /><br />Some image 5',
  '<img src="' . $images_path . 'image3.png" /><br />Some image 6',
);

$form['rs_example_5']['radios_select_5_1'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select image:'),
  '#default_value' => 0,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'label'         => array(
      'valign'        => 'bottom', // this sets vertical alignment of labels to bottom
      'font_size'     => 12,
      'line_height'   => 14,
      'padding_x'     => 4,
      'padding_y'     => 4,
     ),
   ),
  '#description'   => t('Select horizontal or vertical image.'),
);
?>

Другой вариант с картинками - выравнивание "в ряд" с текстом метки (можно также задать произвольный vertical-align для изображения, как обычно в CSS, здесь, в примере - просто смещение от базовой линии):


<?php
$module_path = url(drupal_get_path('module', 'radios_select'));
$images_path = $module_path . '/examples/images/';

$values = array(
  '<img src="' . $images_path . 'ru.png" /> Russian Federation',
  '<img src="' . $images_path . 'us.png" /> USA',
  '<img src="' . $images_path . 'ca.png" /> Canada',
  '<img src="' . $images_path . 'fr.png" /> France',
  '<img src="' . $images_path . 'de.png" /> Germany',
  '<img src="' . $images_path . 'it.png" /> Italy',
  '<img src="' . $images_path . 'gb.png" /> United Kingdom',
  '<img src="' . $images_path . 'gr.png" /> Greece',
  '<img src="' . $images_path . 'tr.png" /> Turkey',
  '<img src="' . $images_path . 'ua.png" /> Ukraine',
  '<img src="' . $images_path . 'no.png" /> Norway',
);

$form['rs_example_5']['radios_select_5_2'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select country:'),
  '#default_value' => 0,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'label'         => array(
      'img_valign'    => '-4px',        // sets vertical alignment of images
      'nowrap'        => 'TRUE',        // disables word wrapping for text in labels
     ),
   ),
  '#description'   => t('Country from where you are.'),
);
?>

А можно упорядочить метки в колонки (любое количество колонок):

<?php
$module_path = url(drupal_get_path('module', 'radios_select'));
$images_path = $module_path . '/examples/images/';

$values = array(
  '<img src="' . $images_path . 'ru.png" /> Russian Federation',
  '<img src="' . $images_path . 'us.png" /> USA',
  '<img src="' . $images_path . 'ca.png" /> Canada',
  '<img src="' . $images_path . 'fr.png" /> France',
  '<img src="' . $images_path . 'de.png" /> Germany',
  '<img src="' . $images_path . 'it.png" /> Italy',
  '<img src="' . $images_path . 'gb.png" /> United Kingdom',
  '<img src="' . $images_path . 'gr.png" /> Greece',
  '<img src="' . $images_path . 'tr.png" /> Turkey',
  '<img src="' . $images_path . 'ua.png" /> Ukraine',
  '<img src="' . $images_path . 'no.png" /> Norway',
);

$form['rs_example_6']['radios_select_6'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select country:'),
  '#default_value' => 0,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'element'         => array(
      'columns'         => 4,       // this sets ordering by 4 columns
    ),
    'label'         => array(
      'img_valign'      => -4,      // px by default, so we can skip units
      'nowrap'          => 'TRUE',
     ),
   ),
  '#description'   => t('Country from where you are.'),
);
?>

Наконец, труъ-программисты могут полностью изменить вид Radios Select с помощью CSS (стили аттачатся "на лету", при создании элемента):


<?php
$module_path = url(drupal_get_path('module', 'radios_select'));
$images_path = $module_path . '/examples/images/';

$values = array(
  '<img src="' . $images_path . 'ru.png" /> Russian Federation',
  '<img src="' . $images_path . 'us.png" /> USA',
  '<img src="' . $images_path . 'ca.png" /> Canada',
  '<img src="' . $images_path . 'fr.png" /> France',
  '<img src="' . $images_path . 'de.png" /> Germany',
  '<img src="' . $images_path . 'it.png" /> Italy',
  '<img src="' . $images_path . 'gb.png" /> United Kingdom',
  '<img src="' . $images_path . 'gr.png" /> Greece',
  '<img src="' . $images_path . 'tr.png" /> Turkey',
  '<img src="' . $images_path . 'ua.png" /> Ukraine',
  '<img src="' . $images_path . 'no.png" /> Norway',
);

$form['rs_example_7']['radios_select_7'] = array(
  '#type'          => 'radios',
  '#title'         => t('Select country:'),
  '#default_value' => 0,
  '#options'       => $values,
  '#radios_select' => TRUE,     // enables Radios Select for this radios element
  '#rs_attributes' => array(
    'element'         => array(
      'columns'         => 4,
      'css'             => array(
        'div.type-radios-current {background: #222 url("'. $images_path . 'custom_bg.png") bottom right no-repeat; border-color: #222 !important;}',
        'div.type-radios-current .inner {background: #a8a8a8;}',
        'div.type-radios-current label  {background: #ffc136 url("'. $images_path . 'custom_label_active.png") center center repeat-x !important; border: 1px solid #c35e22 !important; color: black;}',
        'div.rs_opened {background: #222 url("'. $images_path . 'custom_bg_active.png") bottom right no-repeat;}',
        'div.rs_opened .inner {background: none;}',
        'div.type-radios-select {background: #d0d0d0 url("'. $images_path . 'custom_select_bg.png") top center repeat-x !important; border-color: #222 !important;}',
        'div.type-radios-select label.selected {background: #ffc136 url("'. $images_path . 'custom_label_active.png") center center repeat-x !important; border: 1px solid #c35e22 !important; color: black;}',
        'div.type-radios-select label {background: #3a3a3a url("'. $images_path . 'custom_label.png") center center repeat-x !important; border: 1px solid #222 !important; color: white;}',
        'div.type-radios-select label:hover {background: #ffc136 url("'. $images_path . 'custom_label_active.png") center center repeat-x !important;}',
      ),
    ),
    'label'         => array(
      'img_valign'      => -4,
      'nowrap'          => 'TRUE',
     ),
   ),
  '#description'   => t('Country from where you are.'),
);
?>

Все эти примеры (рабочие и с исходным кодом) доступны из help'а модуля Radios Select (см. приложенный архив) по адресу: admin/help/radios_select

Internet Eplorer.

В IE, как обычно, всё "не как у людей". Начнём с того, что все "красивые" закругления в нём отсутствуют. Попытки прицепить JS-библиотеки типа PIE, curved-corner и пр. положительного результата не дали - эти надстройки ломают разметку inline-эелементов.

Вторая проблема - IE единственный из браузеров, который не захотел "понимать" клики по меткам. Пришлось специально для него сделать эмуляцию клика по радиокнопке при клике на метке.

В общем, базовый функционал в IE всё же обеспечен (по крайней мере версии IE6, IE7 с Radios Select работают нормально). Но выглядит в нем всё чуть менее красиво.

Ещё одно "но".

Поскольку используется jQuery, то при выключенном JS пользователь не сможет ничего выбрать - селектор просто не откроется. Это нужно учитывать. В планах есть предусмотреть какую-то возможность пользователю хоть как-то выбрать нужный пункт, но пока толкового решения не нашёл.

Желающие могут скачать и установить модуль. Модуль очень нуждается в тестировании под разными браузерами. Пока протестировано в GoogleChrome, Safari, Opera 11, Firefox 8, IE 6-7.

Если будете использовать/тестировать элемент под другими браузерами - просьба отписываться здесь о результатах (с указанием версии браузера).

Вот и всё. :-)

Прикрепленный файлРазмер radios_select.zip45.82 кб
Категории: ру drupal планета

MVC в Drupal. Внедряем Page Controller'ы.

drupal.ru - Пнд, 2012/01/09 - 08:43

Хочу поделиться с комьюнити модулем controller, который можно взять здесь. В чем смысл модуля?

Модуль позволяет для каждого УРЛа, который вы определяете в hook_menu() прописать действие контроллера. Для этого есть специальный новый элемент 'action':
<?php
/**
 * Implements hook_menu().
 */
function controller_menu() {
  $items = array();
  $items['admin/settings/controller'] = array(
    'title' => 'Controller settings',
    'action' => 'SettingsController::indexAction',
    'access arguments' => array('access administration pages'),
  );
  return $items;

?>

Здесь объявляется новый контроллер SettingsController и действие indexAction() которое будет вызывано для УРЛа 'admin/settings/controller'.

По умолчанию контроллеры должны лежать в специальной папке controllers/. Которую можно создать в папке своего модуля. Имя файла будет таким же как и прописано в 'action', однако имя класса нужно дополнять префиксом, который будет равен имени модуля после применения СamelCase нотации (с первой большой буквой). Звучит сложно, чтобы понять какие префиксы добавятся для разных модулей, несколько примеров:
foo_bar станет FooBar my станет My test_my_super станет TestMySuper и т. д.

В примере выше, в хуке меню объявлен контроллер SettingsController, имя модуля controller, значит полное имя класса будет ControllerSettingsController, а имя файла SettingsController.php. Пример как все это дело работает можно найти в самом модуле.

Надеюсь, понятно описал, если есть вопросы, спрашивайте!

Категории: ру drupal планета

Урок один. Создаем модуль на Drupal. Как с Drupal создать форму и вывести данные из формы на этой или другой страници. Хук hook

drupal.ru - Пнд, 2012/01/09 - 06:18

Пример 1. Как с Drupal создать форму и вывести данные из формы на этой или другой страници.

------------------------
| Создаем форму |
------------------------
|
---------------------------------------------------------------------
| Выводим данные с помощью функции variable_get() |
----------------------------------------------------------------------

Для этого:
Создаем модуль.
Для этого:

- создаем папку и называем ее по названию модуля, например urokone и сохраняем его в my_site/sites/all/modules

- в этой папке создаем в notepad++ два файла в формате utf-8 without BOM. Что такое BOM и где скачать notepad++ смотрим в википедии.

Создаем два файла в этой папке и называем их
urokone.info
urokone.module

1.1. Минимальное содержимое файла urokone.info

; $Id$ name = Urokone   description = Simple form one core = 6.x

; $Id$ //если вы будите выставлаять ваш модуль на Drupal.org то он добавит автоматически свои параметры
name = urokone // название вашего модуля
description = Simple form one //описание
core = 6.x //в нашем случае мы пишем для Drupal 6.

1.2. Минимальное содержимое файла urokone.module

Минимальное содержание этого файла, для того что бы открыть страницу с модулем (с формой), это функция меню.

<?php   function urokone_menu() { $items = array();   $items['urokone'] = array( 'page callback' => 'drupal_get_form', 'page arguments' => array('urokone_formone'), );   return $items; }

$items['urokone'] = array( ); // эта сторочка означает, что форму c названием (Form_ID) urokone_formone, которую я собираюсь вставить в этот модуль можно будет найти после активации если кликнуть на локальном сервере

127.0.0.1/my_site/urokone

Теперь активируем модуль
Для этого:
- кликните в администраривной панели на Administer -> modules
ваш новые модуль будет находится в разделе others. Кликаем чекбокс напроив нашего модуля.
У меня на локальном сервере это выглаядит так:


И кликаем на кнопку Save Configuration. Когда сделаем следующие изменения в модуле надо будет очистить кеш. Administer->Performance->Clear cashed data

2.2. Пишим весь модуль.

-----------------------------------
2.2.1 | Создаем меню |
-----------------------------------
|
-------------------------------------------------------------------------
2.2.2. | Создаем условия доступа для различных пользователей |
--------------------------------------------------------------------------
|
--------------------
2.2.3. | Создаем help |
--------------------
|
----------------------------------------------------------------------------

2.2.4. | Создаем форму |
-----------------------
|
----------------------------------------------------------------------------------------------
2.2.5. | Выводим содержиое, которое user вбил в форму на экран (в нашем
случае в блоке)
------------------------------------------------------------------------------------------------

2.2.1. Создаем меню.
Для создания меню используем hook - это функции дрюпала. Например hook
function hook_menu()
для нашего модуля мы должны измеить по названию нашего модуля на

function urokone_menu() { $items = array();   $items['urokone'] = array( 'title' => 'Как подтвердить факт отправленния ненулевых данных в форму?', 'description' => 'Urokone first form', 'page callback' => 'drupal_get_form', 'page arguments' => array('urokone_formone'), 'access arguments' => array('access administration pages'), 'type' => MENU_NORMAL_ITEM, );   return $items; }
2.2.2. Создаем условия доступа различных пользователей.
Используем хук hook_perm()

function urokone_perm() { return array('access urokone content', 'access administration pages'); } // function urokone_perm()

2.2.3. Создаем help
Используем хук hook_help()
function urokone_help($path, $arg) { $output = ''; //declare your output variable switch ($path) { case "admin/help#urokone": $output = '<p>'. t("Displays information about site") .'</p>'; break; } return $output; } // function urokone_help
Здесь можно сохранить модуль. Помните (Administrator-> modules -> Save configurations) и посмотреть появление строчки "Displays information about site" , если пойти Administer - > help -> urokone

Если на этой страницы кликнуть на urokone то увидим страницу со строкой "Displays information about site". Мы в хуке help можем заменить эту строку на подробное описание нашего модуля.

---------------------------------------------------------------------------------------------
Теперь нам осталось
------------------------
| Создать форму |
------------------------
|
---------------------------------------------------------------------
| Выводим данные с помощью функции variable_get() |
----------------------------------------------------------------------
----------------------------------------------------------------------------------------------

2.2.4. Создаем форму
Используем функцию urokone_formone()

Например я хочу сделать такую форму:

Для этого в Drupla мы пишем функцию urokone_formone().

function urokone_formone($form_state) { $form = array();   $form['one_one'] = array( '#type' => 'checkbox', '#title' => 'if ($_REQUEST["text"]) {echo "Data was send";}', '#default_value' => variable_get('one_one', false),   );   $form['one_two'] = array( '#type' => 'checkbox', '#title' => t('if ($_REQUEST("text")) {echo "Data was send";}'), '#default_value' => variable_get('one_two', false), );   $form['one_three'] = array( '#type' => 'checkbox', '#title' => t('if {$_REQUEST["text"]} {echo "Data was send";}'), '#default_value' => variable_get('one_three', false), );       return system_settings_form($form); } // end urokone_formoneЗаходим на 127.0.0.1/lesson/urokone

При этом в результате работы функции return system_settings_form($form); появляютя две кнопки "Save configuration" и "Reset to default"

2.2.5. Выводим содержиое, которое user вбил в форму на экран (в нашем
случае в блоке. Используем хук hook_block.

function urokone_block($op='list', $delta=0) {   if ($op == "list") { $block = array(); $block[0]["info"] = t('urokone'); return $block; } else if ($op == 'view') { switch ($delta) { case 0: $block_content = ''; $block['subject'] = 'urokone';   $one_one= variable_get('one_one', false); $one_two= variable_get('one_two', false); $one_three= variable_get('one_three', false);   if ($one_one or $one_two or $one_three) { if ($one_one) $block['content'] .= 'your answer is correct '; if ($one_two) $block['content'] .= 'your answer is not correct '; if ($one_three) $block['content'] .= 'your answer is not correct'; } break;   } return $block; } } // end urokone_blockТеперь надо активировать новый блок urokone который мы создали. Идем в Administer -> blocks.
Находим наш блок urokone в списке Disabled.

Меняю регион с "none" на другоe. Я например выбрала "Left sidebar".
И нажимаю на кнопку внизу Save blocks.

Теперь зайдем еще раз на страницу с нащей формой 127.0.0.1/lesson/urokone и кликнми на какой нибудь чекбокс. Например на вророй чекбокс с правильным ответом.
У нас слева в блоке urokone появится сообщение о том на какой чекбокс мы кликнули.

Прикрепленный файлРазмер tut1_1.png29.72 кб tut1_2.png24.68 кб tut1_3.png23.3 кб tut1_4.png47.17 кб tut1_5.png14.56 кб tut1_6.png33.72 кб tut1_7.png56.37 кб tut1_8.png40.71 кб
Категории: ру drupal планета

Страницы

Subscribe to Prospect Drupal сбор новостей