Собственно ссылка на описание
По многочисленным просьбам выкладываю подробное описание моего доклада с картинками.
В Новосибирске состоится первое DrupalCafe.
Ждем всех желающих выступить с докладом и поучаствовать в обсуждении актуальных тем.
Предварительная обязательная
">регистрация
г.Новосибирск, Академгородок, ул. Инженерная 20, Технопарк, конференцзал на 3 этаже
Начало: 25 февраля в 12:00
Окончание: 25 февраля в 15:00
Помощь в подготовке докладов Роман Чижиков: skype: roman.chizhikov
Организационные вопросы: Павел Прищепа: skype: prischepa.p
info@drupalsib.ru
тел.офиса (383) 233-27-00
Скачать модуль: yandex_weather.zip
На прошлой неделе на сайте drupal.ru я увидел активное обсуждение топиков «Яндекс сервисы в одном проекте» и «Встреча по поддержке и продвижению Яндекс-сервисов в Drupal». В представленном списке существующих модулей для интеграции с сервисами Яндекса я не обнаружил модуля про погоду. Я доработал свой модуль, исправил ошибки, дописал дополнительный функционал и решил выложить на сайт для обсуждения сообществом.
Вот так выглядит блок с информером погоды от Яндекса в дефолтной теме.
В настройках блока можно:
Текстовые сообщения модуля написаны на английском языке и переведены на русский язык.
Если данный модуль вызовет интерес, то можно переписать его и для Drupal 7. Буду благодарен за любые конструктивные комментарии.
Скачать модуль: yandex_weather.zip
Прикрепленный файлРазмер yandex_weather.zip9.37 кбФиналист масштабного проекта Филиппа Киркорова и Ани Лорак - Шоу № 1. Модель Louis Vuitton в Японии. Вошёл в 30-ку лучших артистов Украины 2010 года. Полуфиналист европейского песенного конкурса "Eurovision 2011".
maxim-novitskiy_com.png.pngМы начинаем набор на вторую школу Друпал в Москве. По результатам первой проведенной школы, мы можем с уверенностью сказать, что программа занятий оптимальна для начинающих и среднего уровня подготовки.
На занятиях каждый построит сайт для своего дела, бизнеса или хобби.
Всем привет!
Мы собираемся провести следующий DrupalConf 25-26 мая 2012.
Но вот вопрос:
Attached poll "какой формат будет для всех удобней ?".Всем привет!
22 декабря 2011 года произошла встречи инициативной группы по созданию Российской Друпал ассоциации. От сообщества присутствовали: kostin, gagaga, axel, Даша Богуцкая, Андрей Постников и Паньков Артем.
Итак, промежуточные итоги встречи:
1. Маркетинг.
Маркетинг признал одним из важнейших направлений деятельности Ассоциации. На данном промежуточном этапе приоритетными задачами стали:
- участие Ассоциации в круглых столах, конференциях, выставках;
- увеличение числа публикаций в оффлайн журналах, статей, блогов и мнений экспертов;
- интенсивное освещения Drupal в смежных отраслях, а не на ресурсах, связанных с Drupal;
- создание промо-ролика о Drupal;
- разработку презентационных материалов;
- освещение лучших русских проектов на Drupal;
- привлечение новичков к Drupal;
2. Вопросы требующие дальнейшей проработки и обсуждения:
- сертификация специалистов и подбор персонала Ассоциацией;
- доработка сборок;
- консалтинг.
3. Организационно правовая форма Друпал Ассоциации.
Вопрос ОПФ будет прорабатываться в части целесообразности регистрации юридического лицо со сложной организационно-правовой формой(по сути, это создаст нагрузку на бухгалтерию, в том числе пересылку бумажных документов, как минимум 15 000*12 = 180 000, что в условиях неясности финансирования вызывает вопросы). Какое-то время мы еще будем консультироваться с юристами.
Вопрос, как я понимаю, больной и актуальный для многих. Мы думаем над тем, как принять взвешенное решение, которое устроит всех.
4. С Drupal.ru будет осуществляться взаимодействие и сотрудничество в рамках маркетинговых вопросов. Общее мнение состоит в том, что это разные ресурсы.
На данный момент в разработке находится сайт ассоциации и мы надеемся, что мы представим его не позднее середины-конца февраля. А пока инициативная группа начнет проработку оставшихся вопросов.
День добрый.
Портировал Inner poll для Drupal 7, для моего любимого www.drupal.ru. Прикрепляйте опросы к любому документу ;).
При портировании кое-где немного изменил логику и вывел количество воздержавшихся.
Поля в БД совместимы с версией для Drupal 6, только добавились новые индексы.
Перевод модуля содержится в архиве модуля.
Ищу тех кто поможет разместить модуль на drupal.org.
Особенности модуля
Пояснение к пунктам 5 и 6. Они нужны для того, чтобы авторы не вносили кардинальных изменений в опрос тогда, когда другие юзеры уже отдали в них свои голоса. Например, был опрос "Любите ли вы клубнику", на который получены ответы "Да" — 95%, "Нет" — 5%, а затем ушлый автор сменил вопрос на "Смотрите ли вы порнографию".
Примечания
Загрузка
Альтернативная ссылка: Inner poll для Drupal 7.
Прикрепленный файлРазмер inner_poll.zip21.54 кбПродолжение комментария http://www.drupal.ru/node/74274?page=1#comment-435564
Компания Яндекс заинтересована в продвижении и повышении уровня интеграции своих сервисов с Drupal.
Предлагается провести встречу по вопросам разработки, встреча ориентирована преимущественно на разработчиков.
Яндекс интересует:
Так же я считаю, что будет нелишним подготовить вопросы и предложения по использованию API
Будут вноситься коррективы
В четверг, 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/)
Мы наконец-то выложили обещанное и долгожданное видео докладов с DrupalCamp! Спасибо Петру Козаченко, Владимиру Колосу и Александру Даниленко за съемку и обработку. Результат их совместной работы вы можете увидеть здесь http://www.youtube.com/user/DrupalCampDonetsk.
Мы также выложили слайды презентаций сюда http://slideshare.net/DrupalCampDN, А еще, мы прикрепили эти видео и слайды к темам докладов на нашем сайте: http://donetsk.drupal.ua/ru/program/session-schedule. Пожалуйста, оставляйте ваши отзывы!
Всех со "старым" Новым Годом :)
Мы все такие разные, но давайте быть терпимее, добрее и лучше ;)
А у Вас уже наступил? )))
p.s.: и всё таки Drupal рулит!
Друзья! Наша инициативная группа рада объявить о выходе в свет нового, открытого, русскоязычного электронного журнала - Drup’n’Roll!
На его страницах вы сможете найти много полезной информации для разработчиков и администраторов сайтов и прочих веб-приложений, созданных на базе нашей любимой CMF Drupal.
В первом номере вы найдёте статьи об особенностях построения процессов разработки вместе с модулем Features и инструментом Drush, прочитаете материалы об относительно новом течении в создании графических тем — Responsive design, сможете
ознакомиться с последними новостями из жизни Drupal-сообщества и мероприятиями по всему миру.
Для чего мы это делаем? Самая главная цель, которую мы ставим перед собой — популяризация CMF Drupal среди
разработчиков и потребителей их услуг. Будем учиться и работать вместе!
Прошу модераторов прикрепить этот пост на главной
Для тех, кто не знает языки программирования, но хочет научиться создавать сайты.
Иными словами, для самых начинающих.
Важное условие: уверенный пользователь ПК.
Участники во время Школы получат знания, необходимые для создания простых и сложных сайтов. Поймут специфику создания сайтов на Drupal. Каждый будет работать над своим собственным проектом, и на выходе получит работающий полноценный сайт.
Программа
Блок 1. 11.00-14.00
В первую очередь семинар рассчитан на веб-дизайнеров, которые хотят начать рисовать современные макеты и имеют начальный уровень пользования программой.
Будут рассмотрены
Введение в систему электронного документооборота (СЭД)
Для тех, кто ничего не знает о СЭД, но хочет разобраться.
Программа:
• Привет, СЭД! Для чего ты нам?
• Как понять, что Компании нужен документооборот?
• Что может дать документооборот?
• Каковы его преимущества со стороны руководителя предприятия, руководителя среднего звена и менеджера?
Стоимость 500 рублей
Предлагаю обсудить возможность объединить все Яндекс сервисы в одном проекте. На текущий момент на д.о. есть несколько различных модулей для интеграции с яндекс сервисами.
Поиск по сайту дал следующие результаты:
Если что то забыл, поправьте.
Вот мои причины, для чтобы собрать все сервисы в один проект:
История из разряда "Новая жизнь старых вещей". Точнее - новая "шуба" для привычного элемента форм radios. В случаях, когда элемент radios строится из модуля.
Собственно, началось всё с того, что искал способ отобразить в форме модуля некую таблицу символов с возможностью выбора любого одного символа. Символы должны быть достаточно крупные (шрифт где-то 18-20px). Для начала попытался приспособить обычный select, но не понравилось: во-первых, список слишком длинный и выбирать неудобно, а во-вторых, добиться единообразного отображения (размер шрифта, padding, выравнивание и т.д.) в разных браузерах оказалось совсем непросто.
В общем, нужно было искать более компактное решение, при котором таблица была бы именно таблицей. В процессе разных тестов случайно обнаружил, что метки (label) для элемента radios в большинстве браузеров обрабатывают клики как и родительский (связанный с меткой) сам radios-control (кружочек, по которому мы тыкаем мышкой). То есть - по клику на метку элемент устанавливается в состояние checked, как если б мы кликали на сам кружочек. Не бог весть какое открытие, но беглый поиск аналогичных развитых решений с использованием меток в гугле ничего не дал. И я приступил к работе.
После ряда тычков в неверных направлениях было выведено более-менее унифицированное и кроссбраузерное решение (CSS + jQuery). Я его назвал Radios Select. Вот он, со скромной гордостью и удовлетворением представляю своё детище:
А вот что происходит по клику на элементе:
Код, формирующий вывод:
<?phpСобственно, Radios Select можно использовать не только, как таблицу символов, а для выбора любого значения: строки, числа. Родилась идея сделать модуль-хук, который бы темизировал элементы radios как Radios Select, если у элементов установлен соответствующий параметр, а иначе - выводил бы стандартный radios. В процессе работы над модулем элемент Radios Select "оброс" рядом параметров, позволяющих кастомизировать вывод этого псевдо-элемента (это действительно скорее псевдо-элемент, поскольку по факту строится обычный radios и последующая обработка в submit'е - типичная для radios).
Например, можно изменить свойства шрифта элемента:
А вот и вариант для искомой таблицы символов:
Можно "подкрасить" оформление элемента (выбирается также светлая или тёмная стрелка):
Или убрать фон выбранного элемента и объединить с селектором (так называемый hollow-режим):
А можно и вставить картинки в селектор, причём выровнять по желанию - либо по верху (по умолчанию), либо по низу (как в этом примере):
Другой вариант с картинками - выравнивание "в ряд" с текстом метки (можно также задать произвольный vertical-align для изображения, как обычно в CSS, здесь, в примере - просто смещение от базовой линии):
А можно упорядочить метки в колонки (любое количество колонок):
<?phpНаконец, труъ-программисты могут полностью изменить вид Radios Select с помощью CSS (стили аттачатся "на лету", при создании элемента):
Все эти примеры (рабочие и с исходным кодом) доступны из 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 кбХочу поделиться с комьюнити модулем 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. Пример как все это дело работает можно найти в самом модуле.
Надеюсь, понятно описал, если есть вопросы, спрашивайте!
Пример 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 появится сообщение о том на какой чекбокс мы кликнули.