Чтоб ваша компания имела возможность принимать действенные действия, ей нужны тщательные маркетинговые исследования. Читать далее
Компания “СканМаркет” предлагает вам способ материализации успешного и действенного регулирования вашей структурой.
Как выбрать ПВХ окна?
Итак, вы решили заменить окна на пластиковые. Читать далее
Результаты встречи 22.12.2011 – ассоциация
Всем привет!
22 декабря 2011 года произошла встречи инициативной группы по созданию Российской Друпал ассоциации. От сообщества присутствовали: kostin, gagaga, axel, Даша Богуцкая, Андрей Постников и Паньков Артем.
Итак, промежуточные итоги встречи:
1. Маркетинг.
Маркетинг признал одним из важнейших направлений деятельности Ассоциации. На данном промежуточном этапе приоритетными задачами стали:
- участие Ассоциации в круглых столах, конференциях, выставках;
- увеличение числа публикаций в оффлайн журналах, статей, блогов и мнений экспертов;
- интенсивное освещения Drupal в смежных отраслях, а не на ресурсах, связанных с Drupal;
- создание промо-ролика о Drupal;
- разработку презентационных материалов;
- освещение лучших русских проектов на Drupal;
- привлечение новичков к Drupal;
2. Вопросы требующие дальнейшей проработки и обсуждения:
- сертификация специалистов и подбор персонала Ассоциацией;
- доработка сборок;
- консалтинг.
3. Организационно правовая форма Друпал Ассоциации.
Вопрос ОПФ будет прорабатываться в части целесообразности регистрации юридического лицо со сложной организационно-правовой формой(по сути, это создаст нагрузку на бухгалтерию, в том числе пересылку бумажных документов, как минимум 15 000*12 = 180 000, что в условиях неясности финансирования вызывает вопросы). Какое-то время мы еще будем консультироваться с юристами.
Вопрос, как я понимаю, больной и актуальный для многих. Мы думаем над тем, как принять взвешенное решение, которое устроит всех.
4. С Drupal.ru будет осуществляться взаимодействие и сотрудничество в рамках маркетинговых вопросов. Общее мнение состоит в том, что это разные ресурсы.
На данный момент в разработке находится сайт ассоциации и мы надеемся, что мы представим его не позднее середины-конца февраля. А пока инициативная группа начнет проработку оставшихся вопросов.
Источник: http://www.drupal.ru/node/75147
Автосигнализации с диалоговым кодом
В современное время большинство автовладельцев всё чаще размышляют на счёт защиты своего транспорта. Читать далее
Inner poll для Drupal 7. Прикрепляйте опросы к любому документу ;)
День добрый.
Портировал Inner poll для Drupal 7, для моего любимого www.drupal.ru. Прикрепляйте опросы к любому документу .
При портировании кое-где немного изменил логику и вывел количество воздержавшихся.
Поля в БД совместимы с версией для Drupal 6, только добавились новые индексы.
Перевод модуля содержится в архиве модуля.
Ищу тех кто поможет разместить модуль на drupal.org.
Особенности модуля
Все действия пользователей сохраняются без перезагрузки страницы (хмм, возможно, пора уже перестать считать AJAX фишкой); автор опроса может разрешить (или не разрешить) пользователям отменять свои голоса голоса; автор опроса может открывать/закрывать опрос, а так же устанавливать дату автоматического закрытия опроса; автор опроса может разрешить/запретить множественный выбор; автор опроса, если он не является модератором, может править вопрос опроса только до тех пор, пока в опросе нет ни одного голоса; автор опроса, если он не является модератором, может править ответ на вопрос только до тех пор, пока за этот ответ нет ни одного голоса; опрос может содержать до 999 вариантов ответа; пользователи не могут просматривать результаты опроса до тех пор пока не проголосуют, для неопределившихся с решением есть кнопка “Воздержаться”, после нажатия которой будут показаны результаты, но при этом пользователь потеряет возможность голосовать в этом опросе; администратор сайта может раздавать права на голосование, создание опросов, редактирование опросов, редактирование опросов даже в случае если в них уже есть голоса;Пояснение к пунктам 5 и 6. Они нужны для того, чтобы авторы не вносили кардинальных изменений в опрос тогда, когда другие юзеры уже отдали в них свои голоса. Например, был опрос “Любите ли вы клубнику”, на который получены ответы “Да” — 95%, “Нет” — 5%, а затем ушлый автор сменил вопрос на “Смотрите ли вы порнографию”.
Примечания
Не стал прикручивать кэш, так как в кэш можно класть всю страницу сторонними средствами при необходимости (обработка AJAX живёт на своих URL). Не реализован файл тестов, если кто напишет, буду благодарен. Отсутствует шаблон вывода контента так как количество выводимых данных мало и многое можно темизировать с помощью *.css.Загрузка
Ссылка: Inner poll для Drupal 7.
Источник: http://www.drupal.ru/node/74900
Веб-приложения для корпоративных порталов в «1С-Битрикс: Маркетплейс»
Веб-приложения для «1С-Битрикс: Корпоративный портал» помогут расширить возможности корпоративного портала, улучшить его, дополнить полезными сервисами и решить самые разные бизнес-задачи. Веб-приложения – это готовые разработки, которые быстро устанавливаются и легко настраиваются.
Источник: http://www.1c-bitrix-ua.com/about/life/news/384652/
Веб-приложения для корпоративных порталов в «1С-Битрикс: Маркетплейс»
Веб-приложения для «1С-Битрикс: Корпоративный портал» помогут расширить возможности корпоративного портала, улучшить его, дополнить полезными сервисами и решить самые разные бизнес-задачи. Веб-приложения – это готовые разработки, которые быстро устанавливаются и легко настраиваются.
Источник: http://www.1c-bitrix.ru/about/life/news/384652/
Встреча по поддержке и продвижению Яндекс-сервисов в Drupal
Продолжение комментария http://www.drupal.ru/node/74274?page=1#comment-435564
Компания Яндекс заинтересована в продвижении и повышении уровня интеграции своих сервисов с Drupal.
Предлагается провести встречу по вопросам разработки, встреча ориентирована преимущественно на разработчиков.
Яндекс интересует:
Так же я считаю, что будет нелишним подготовить вопросы и предложения по использованию API
Очники:
http://www.drupal.ru/username/rxb
(?) http://www.drupal.ru/username/valeratal
(?) http://www.drupal.ru/username/marygold
http://www.drupal.ru/username/stalker-g2
+1 человек с Артёмом
http://www.drupal.ru/username/irbis
http://www.drupal.ru/username/axel
Те, кто будет приходить лично приходят на главный вход в офис Яндекса и говорят, что они на встречу с Друпал сообщестом. Гостей будет встречать Вадим Францев, руководитель группы маркетинга бизнес-решений, с 19-00 до 19-10 на главном ресепшене. Опаздавшие либо к секретарям обращаются и их проводят, либо звонят по телефону +7 495 739-70-00, добавочный 4234.
Переговорка “7.Холмов”
Илья Азаров
http://www.drupal.ru/username/byuro-piyavok
Заочники:
http://www.drupal.ru/username/gagaga
http://www.drupal.ru/username/fortis
http://www.drupal.ru/user/orb
http://www.drupal.ru/username/s-f
http://www.drupal.ru/username/andypost-drupalorg
http://www.drupal.ru/username/validoll
http://www.drupal.ru/username/konstantinkomelin-drupalorg
http://www.drupal.ru/username/restyler
http://www.drupal.ru/username/dd-85
http://www.drupal.ru/username/gde
http://www.drupal.ru/username/enemy
http://www.drupal.ru/username/scotty
http://www.drupal.ru/username/yexel
http://www.drupal.ru/username/cyber
http://www.drupal.ru/username/marygold
http://www.drupal.ru/username/seaji
http://www.drupal.ru/username/higor1968
http://www.drupal.ru/username/plazik
http://www.drupal.ru/username/aleks-84
http://www.drupal.ru/username/lomalkin
http://www.drupal.ru/username/insime
http://www.drupal.ru/username/eagle
http://www.drupal.ru/username/direqtor
http://www.drupal.ru/username/forest-run
http://www.drupal.ru/username/arcadaisb
http://www.drupal.ru/username/glu2006
http://www.drupal.ru/username/splash
Те, кто участвуют удаленно: в 19-10 по МСК должны зайти по адресу http://yandex.adobeconnect.com/drupal/ – здесь будет трансляция, а также чат (вопросы/ответы).
Хотят запись:
http://www.drupal.ru/username/enemy
http://www.drupal.ru/username/softovick
http://www.drupal.ru/username/mak-vardugin
http://www.drupal.ru/username/andruxa
http://www.drupal.ru/username/orion76
http://www.drupal.ru/username/saltan
http://www.drupal.ru/username/6run0
Будут вноситься коррективы
Источник: http://www.drupal.ru/node/74730
DrupalCafé №3 в Харькове – 26.01.2012
В четверг, 26 января, в 19:00, в Харькове пройдет третье по счету DrupalCafe.
Место проведения – по прежнему Выставочный центр «РАДМИР ЭКСПОХОЛЛ», по адресу ул. Академика Павлова 271 (м. Академика Павлова).
Темы докладов:
1. “Уровень абстракции баз данных и ее преимущества” (Бабченко Виталий)
“Задачи прототипов и их решения.” (Андрей Кошкин)
Краткий обзор модулей и их конфигурации описывающий создание функционального прототипа E-comerce и SocialComunity систем
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/)
Источник: http://www.drupal.ru/node/74622
Schneider Electric – современное электрооборудование
Schneider Electric – современное электрооборудование
Оборудование компании Schneider Electric стоит разделить по следующим группам . Читать далее
Видео и слайды с DrupalCamp Donetsk 2011
Мы наконец-то выложили обещанное и долгожданное видео докладов с DrupalCamp! Спасибо Петру Козаченко, Владимиру Колосу и Александру Даниленко за съемку и обработку. Результат их совместной работы вы можете увидеть здесь http://www.youtube.com/user/DrupalCampDonetsk.
Мы также выложили слайды презентаций сюда http://slideshare.net/DrupalCampDN, А еще, мы прикрепили эти видео и слайды к темам докладов на нашем сайте: http://donetsk.drupal.ua/ru/program/session-schedule. Пожалуйста, оставляйте ваши отзывы!
Источник: http://www.drupal.ru/node/74516
С Новым Годом!
Всех со “старым” Новым Годом
Мы все такие разные, но давайте быть терпимее, добрее и лучше
А у Вас уже наступил? )))
p.s.: и всё таки Drupal рулит!
Источник: http://www.drupal.ru/node/74510
Новый PDF журнал о Друпале!
Друзья! Наша инициативная группа рада объявить о выходе в свет нового, открытого, русскоязычного электронного журнала – Drup’n’Roll!
На его страницах вы сможете найти много полезной информации для разработчиков и администраторов сайтов и прочих веб-приложений, созданных на базе нашей любимой CMF Drupal.
В первом номере вы найдёте статьи об особенностях построения процессов разработки вместе с модулем Features и инструментом Drush, прочитаете материалы об относительно новом течении в создании графических тем — Responsive design, сможете
ознакомиться с последними новостями из жизни Drupal-сообщества и мероприятиями по всему миру.
Для чего мы это делаем? Самая главная цель, которую мы ставим перед собой — популяризация CMF Drupal среди
разработчиков и потребителей их услуг. Будем учиться и работать вместе!
http://drupnroll.ru/
Прошу модераторов прикрепить этот пост на главной
Источник: http://www.drupal.ru/node/74474
Яндекс сервисы в одном проекте
Предлагаю обсудить возможность объединить все Яндекс сервисы в одном проекте. На текущий момент на д.о. есть несколько различных модулей для интеграции с яндекс сервисами.
Поиск по сайту дал следующие результаты:
Яндекс.маркет — 6.x. Яндекс.маркет — 6.x и 7.x(dev). Яндекс.маркет — в песочнице. Яндекс.видео — 7.x(dev) new! Яндекс.метрика — 6.x и 7.x. Яндекс.метрика — в песочнице. Яндекс.вакансии — обсуждается. Яндекс.новости — 6.x(dev) и 7.x(dev). Яндекс.карты — 6.x(dev). Яндекс.деньги — 5.x платёжный шлюз для уберкарт. Яндекс.сервер — в песочнице. Яндекс.поделиться — в песочнице. Яндекс.спеллер — в песочнице. Яндекс.почта — обсуждается. Яндекс.карты — почти готов. Яндекс.карты — во вложении. Site verification — 6.x и 7.x. Яндекс.маркет — во вложении. Быстрый заказ — обсуждается. Яндекс.погода — во вложении.Если что то забыл, поправьте.
Вот мои причины, для чтобы собрать все сервисы в один проект:
На данный момент большинство из этих модулей находятся «в стадии разработки», а многие попросту брошены без особых шансов получить стабильный релиз для D6 и D7. Я думаю ситуация измениться, если у проекта будет несколько разработчиков. Это поможет устранить дублирования проектов. Например, в приведённом списке представлено сразу 4 модуля для интеграции с Яндекс.маркет. Думаю, лучше всё таки будет объединить усилия. Помощь новым разработчикам. Несколько модулей находятся в песочницах из-за того, что некому сделать review кода. На д.о. яндекс мало кому интересен… Для многих яндекс сервисов интеграция с Друпалом полностью отсутствует. В том числе для самого главного, на мой взгляд сервиса — Яндекс.xml. Для одного общего проекта, легче найти спонсоров.Attached poll “Нужно ли объединять все яндекс.модули в один проект?”.
Register or login to poll
Results:
Да: 43 голоса
Нет: 27 голосов
Источник: http://www.drupal.ru/node/74274
Вот такая штукенция получилась. Radios Select для Drupal 7.
История из разряда “Новая жизнь старых вещей”. Точнее – новая “шуба” для привычного элемента форм 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).
Например, можно изменить свойства шрифта элемента:
$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.'),
);
?>
А вот и вариант для искомой таблицы символов:
$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.'),
);
?>
Можно “подкрасить” оформление элемента (выбирается также светлая или тёмная стрелка):
$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-режим):
$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.'),
);
?>
А можно и вставить картинки в селектор, причём выровнять по желанию – либо по верху (по умолчанию), либо по низу (как в этом примере):
$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, здесь, в примере – просто смещение от базовой линии):
$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 (стили аттачатся “на лету”, при создании элемента):
$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 Explorer.В IE, как обычно, всё “не как у людей”. Начнём с того, что все “красивые” закругления в нём отсутствуют. Попытки прицепить JS-библиотеки типа PIE, curved-corner и пр. положительного результата не дали – эти надстройки ломают разметку inline-элементов.
Вторая проблема – IE единственный из браузеров, который не захотел “понимать” клики по меткам. Пришлось специально для него сделать эмуляцию клика по радиокнопке при клике на метке.
Ещё одна особенность конкретно IE6 – курсор почему-то не устанавливается в “hand” (pointer) при hover’е над метками, даже если явно указывать для него правило в CSS.
В общем, базовый функционал в IE всё же обеспечен (по крайней мере версии IE6, IE7, IE8 с Radios Select работают нормально). Но выглядит в нем всё чуть менее красиво.
Поведение при noscript.При выключенном JS происходит следующее:
1. Скрывается контейнер выбранного (текущего) элемента – тот, который со стрелкой справа.
2. Делается видимым контейнер селектора (который содержит все элементы).
3. Становятся видимыми сами радиокнопки (слева от каждого элемента), таким образом пользователь может выбрать нужный пункт традиционным для radios образом – щёлкнув на элементе.
4. Таким образом, форматирование/оформление Radios Select в основном сохраняется, добавляются только input’ы.
Примечание: IE и здесь ведёт себя несколько отлично от других браузеров. При выключенном JS он не “признаёт” клики на вложенных в метку картинках (IMG) как клики на метке. Только если пользователь кликнул на текст метки или непосредственно на круглый элемент-радиокнопку.
Примечание: при выключенном JS input’ам присваивается свойство float: left (с тем, чтобы сохранить разметку и равные ширины при использовании колонок. Как следствие радиокнопка “уходит” с базовой линии контейнера и автоматически начинает позиционироваться от верха. Это в общем-то никак не сказывается на разных способах вывода элемента – за исключением, когда используется выравнивание по нижнему краю (как в примере с картинками выше). В этом случае кнопки будут расположены на разной высоте:
Желающие могут скачать и установить модуль. Модуль очень нуждается в тестировании под разными браузерами. Пока протестировано в GoogleChrome, Safari, Opera 11, Firefox 8, IE 6,7,8.
Если будете использовать/тестировать элемент под другими браузерами – просьба отписываться здесь о результатах (с указанием версии браузера).
Как бы и всё.
Скачать модуль Radios Select
Источник: http://www.drupal.ru/node/74267
MVC в Drupal. Внедряем Page Controller’ы.
Хочу поделиться с комьюнити модулем 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. Пример как все это дело работает можно найти в самом модуле.
Надеюсь, понятно описал, если есть вопросы, спрашивайте!
P.S. У темы появилось продолжение.
Источник: http://www.drupal.ru/node/74262
Урок один. Создаем модуль на Drupal. Как с Drupal создать форму и вывести данные из формы на этой или другой страници. Хук hook
————————
| Создаем форму |
————————
|
———————————————————————
| Выводим данные с помощью функции variable_get() |
———————————————————————-
Для этого:
Создаем модуль.
Для этого:
- создаем папку и называем ее по названию модуля, например urokone и сохраняем его в my_site/sites/all/modules
- в этой папке создаем в notepad++ два файла в формате utf-8 without BOM. Что такое BOM и где скачать notepad++ смотрим в википедии.
Создаем два файла в этой папке и называем их
urokone.info
urokone.module
; $Id$ name = Urokone description = Simple form one core = 6.x
; $Id$ //если вы будите выставлаять ваш модуль на Drupal.org то он добавит автоматически свои параметры
name = urokone // название вашего модуля
description = Simple form one //описание
core = 6.x //в нашем случае мы пишем для Drupal 6.
Минимальное содержание этого файла, для того что бы открыть страницу с модулем (с формой), это функция меню.
<?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.1 | Создаем меню |
———————————–
|
————————————————————————-
2.2. | Создаем условия доступа для различных пользователей |
————————————————————————–
|
——————–
2.3. | Создаем help |
——————–
|
—————————————————————————-
2.4. | Создаем форму |
———————–
|
———————————————————————————————-
2.5. | Выводим содержиое, которое user вбил в форму на экран (в нашем
случае в блоке)
————————————————————————————————
Для создания меню используем 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. Создаем условия доступа различных пользователей.
Используем хук hook_perm()
function urokone_perm() { return array('access urokone content', 'access administration pages'); } // function urokone_perm() 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() |
———————————————————————-
———————————————————————————————-
Используем функцию 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.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 появится сообщение о том на какой чекбокс мы кликнули.
Источник: http://www.drupal.ru/node/74258
Урок 2. Создаем модуль на Drupal. Как с помощью хука hook_form_form _ID_ alter изменить любую форму в нашем или чужом модуле.
Я буду использовать модуль, который полностью аналагечен модулю из урока один. Я хочу добавить еще один чекбокс в форму и изменить title у первой страницы.
Изменить форму можно и без использования модуля. Смотрите в комметах sas@drupal.org: Как без использования модуля изменить форму.
Код двух файлов модуля uroktwo:
uroktwo.info
uroktwo.module
<?php ;$Id$ /***************************************************** * Implements hook_menu(). *******************************************************/ function uroktwo_menu() { $items = array(); $items['uroktwo'] = array( 'title' => 'What is the correct way to create MySql database? ', 'description' => 'lesson two form', 'page callback' => 'drupal_get_form', 'page arguments' => array('forma'), 'access arguments' => array('access content'), 'type' => MENU_NORMAL_ITEM, ); return $items; } /***************************************************** * Implements hook_perm(). *******************************************************/ function uroktwo_perm() { return array('access uroktwo content', 'access administration pages'); } // function uroktwo_perm() /***************************************************** * Implements hook_help(). *******************************************************/ function uroktwo_help($path, $arg) { $output = ''; //declare your output variable switch ($path) { case "admin/help#uroktwo": $output = '<p>'. t("Displays information about site") .'</p>'; break; } return $output; } // function uroktwo_help /***************************************************** * Implements function forma *******************************************************/ function forma($form_state) { $form = array(); $form['one'] = array( '#type' => 'checkbox', '#title' => t('create.databas()'), '#default_value' => variable_get('one', false), ); $form['two'] = array( '#type' => 'checkbox', '#title' => t('mysql_create_db()'), '#default_value' => variable_get('two', false), ); $form['three'] = array( '#type' => 'checkbox', '#title' => t('create_mysql()'), '#default_value' => variable_get('three', false), ); $form['four'] = array( '#type' => 'checkbox', '#title' => t('create_d()'), '#default_value' => variable_get('four', false), ); $form ['submit'] = array ( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } // end forma /***************************************************** * Implements hook_block(). *******************************************************/ function uroktwo_block($op='list', $delta=0) { if ($op == "list") { $block = array(); $block[0]["info"] = t('uroktwo'); return $block; } else if ($op == 'view') { switch ($delta) { case 0: $block_content = ''; $block['subject'] = 'uroktwo'; $one= variable_get('one', false); $two= variable_get('two', false); $three= variable_get('three', false); if ($one or $two or $three) { if ($one) $block['content'] .= 'your answer create.database() was incorrect '; if ($two) $block['content'] .= 'your answer mysql_create_db() was correct '; if ($three) $block['content'] .= 'your answer create_mysql_db() was incorrect'; } break; } return $block; } } // end uroktwo_blockДля написания hook_form_FORM_ID_alter нам надо знать значение FORM_ID. Если это наш собственный модуль, то можно просто посмотреть на функцию формы.
function forma ($form_state)
forma в нашем случае и будет Form_ID, а hook будет называтся название_модуль_form_forma_alter. Для нашего модуля это будет uroktwo_form_forma_alter.
Второй способ найти Form_ID это посмотреть source code. Для этого я на локальном компьюторе открываю страницу с формой. В моем случае название сайта lesson. В хуке меню мы в этой строчке определили ($items['uroktwo'] = array()), что форму можно открыть, если набрать 127.0.0.1/lesson/uroktwo.
Откройте страницу с формой. Теперь в интернет эксплоурере идите Page -> view souce. С помощью ctrl – F ищим строчку в которой есть слово form. У меня это
То есть id = “forma”
Теперь собственно хук
<?phpfunction uroktwo_form_forma_alter(&$form,&$form_state) {
$form['one']["#title"] = "I do do not know";
$form['five'] = array(
'#type' => 'checkbox',
'#title' => t('create_data()'),
'#default_value' => variable_get('five', false),
);
}
?>
Получилась полностью функциональная форма, но кнопка сабмит расположенна выше нового чекбокса.
Давайте это исправим. Добавим строчку weght в хук, и у нас получится
<?phpfunction uroktwo_form_forma_alter(&$form,
&$form_state) {
$form['one']["#title"] = "I do do not know";
$form['five'] = array(
'#type' => 'checkbox',
'#title' => t('create_data()'),
'#default_value' => variable_get('five', false),
);
$form ['submit'] ['#weight'] = 1000;
}
?>
На этом все.
P.S. Создавать новые модули надо сначала на отдельном, выделенном для этого сайте, а потом уже переносить в реальный сайт.
Источник: http://www.drupal.ru/node/74214
Интервью Dries Buytaert сайту thinkdigit.com
Перевод интервью Dries Buytaert сайту thinkdigit.com:
В. Привет Дрис! Недавно прочитал, как вы упомянули в блоге, что “люди постоянно спрашивают, где найти хороших Drupal-программистов”, а вы отвечаете “не спрашивайте меня, я не знаю”. Мы часто слышим о Друпале. Правда ли платформа так недосягаема, что хороших специалистов почти не найти? Или же освоить ее достаточно просто, как вы думаете?
О. На самом деле, это хороший вопрос. Drupal часто используют для создания довольно сложных веб-сайтов, так что и устроен он несколько сложно. Это, так сказать, необходимое зло. Чтобы создавать сложные проекты корпоративного уровня, сложное программное обеспечение – необходимо. И это автоматически означает, что нужно преодолеть некоторую кривую обучения. И в то же время, с распространением Друпала, спрос на специалистов тоже растет и превышат существующее предложение. Так что, необходимо вовлечь в проект Drupal больше людей. Кроме того, для удовлетворения спроса нужно больше людей в учебных программах.
В общем, частично сложность в том, что сложна сама система, и частично – в том, что нужно больше обученных специалистов.
В. Многие заявляют, что они поиграли с Друпалом, но в итоге решили, что им приятнее другие платформы, такие как WordPress. Что вы им ответите и как планируете повысить применимость Друпала?
О. Drupal часто критикуют за то, что он немного сложнее в использовании, чем другие платформы. В то же время, как я уже сказал, Drupal используют там, где не используются другие проекты. Опять же, Enterprise-решения – отличный пример. И в то же время, мы понимаем, что это проблема и что ее можно решить. Так, если вы посмотрите, скажем, на Drupal 7, а это сейчас основная версия, то увидите, что наша работа, в основном, сосредоточена на повышении удобства для пользователя и юзабилити системы. Мы приложили немало сил, улучшили дизайн и архитектуру, чтобы сделать Drupal 7 проще в использовании. То же самое будет и с Drupal 8. В центре внимания по-прежнему останется юзабилити. Причем, не только юзабилити для пользователей, но и для разработчиков.
В. По-вашему, как лучше всего начать освоение Drupal? И есть ли планы ввести какую-нибудь систему сертификации через компанию Acquia?
О. Есть масса способов освоить Drupal. Можете обучаться платно, можете учиться иными способами. Можете учиться через участие сообществе Drupal, общаться с другими членами сообщества, учиться у них. Также есть много книг о Друпале. Наверное, более 40. В сети есть куча документации, есть видео. Вот такие разные способы изучать Друпал. Я считаю, если человек хочет изучать Drupal, у него должна быть такая возможность. А одна из прелестей open-source (Drupal) – это доступ к лучшим в мире специалистам. В сравнении с проприетарным ПО, ограничений нет. Нельзя стать экспертом с мировым именем по Sharepoint, если не работаешь в команде Sharepoint, если ты не сотрудник Microsoft. А с Друпалом действительно можно стать первым номером!
Что касается второй части вопроса про сертификацию – сейчас никакой Drupal-сертификации нет. После поездки в Индию, я понял, что многим людям сертификация нужна. Учитывая этот факт, и то, что Drupal ищет пути развития, в будущем, возможно, мы подумаем насчет сертификации.
В. Значит вы открыты для идеи программ сертификации?
О. Да я всегда был для нее открыт. Думаю, это хорошая идея. Но еще я думаю, что она хорошая только если будет хорошо реализована. Вот несколько примеров. Вот есть сертификация Cisco. Иметь такой сертификат значит очень многое. Получить его – очень сложно. Для такой сертификации я конечно открыт. С другой стороны, в некотором роде учеба в колледже – это тоже сертификация. Окончишь колледж – получишь сертификат. Так что, с академической точки зрения, я верю пользу сертификации. Но реализовать ее надо хорошо.
В. Может, посоветуете нашим читателям ресурсы, где можно найти ценную информацию о Drupal? Как вы уже упоминали, где-то есть бездонные кладези.
О. Моя компания Acquia проводит несколько вебинаров, можете их посетить. Также у нас есть документация. А клиенты получают доступ ко всем видам учебных ресурсов, в том числе и к Drupal Lullabot, где есть целые часы видео. Ну и есть Drupal.org, там ресурсов очень много.
В. А как можно внести свой вклад в сообщество?
О. Вообще, есть сотни способов. Я всегда призываю всех следовать своей страсти, потому что в конечном счете, я думаю, именно так люди развиваются. Если вы можете присоединиться и сразу писать код, то можете решить ряд существующих задач. Можете помочь нам писать модули. А если вам по душе писать документацию – найдется масса документов, требующих редакции. Также можете помочь написанием руководств. Можете помочь и другими способами, например, участвовать в организации разных мероприятий. То есть каждый может помочь по-своему. Если не знаете, с чего начать, присоединяйтесь к нам в IRC и поспрашивайте людей. Они подскажут верное направление. Канал #drupal на freenode.
В. Одна из основных проблем – если обновлять ядро до следующей версии, некоторые старые плагины перестают работать. Например, модули для 6.X обычно не работают в версии 7.X. И порой новые версии не появляются довольно долго. Видите ли вы в этом проблему? Планируете ли добавить некий уровень совместимости для облегчения задачи?
О. Хороший вопрос. Обратная совместимость – это почти философия. Какие-то проекты выбирают путь поддержки обратной совместимости, какие-то – нет. До сих под в проекте Drupal мы выбрали нарушение обратной совместимости. У обоих путей есть свои недостатки и достоинства. Очевидный недостаток – нужно обновлять модули каждый раз при выходе новой версии. Достоинство, впрочем, в том, что нам не нужно беспокоится об устаревших вещах. Мы можем изобретать их заново. Мы можем и дальше изменять Друпал в сторону наилучшей платформы. А другие платформы, для которых выбран путь обратной совместимости, с большим трудом внедряют инновации, так как вынуждены поддерживать старый код. Очевидно, у каждого пути есть свои достоинства и недостатки. Мы решили нарушить обратную совместимость. Кто знает, возможно однажды все изменится. Но я чувствую, что это верный путь, особенно для скриптовых языков, таких как РНР, где весь код должен быть загружен.
В. А возможно ли авто-обновление модулей ядра Друпала?
О. В общем-то, возможно. Мы над этим сейчас работаем. Так, в Drupal 7 есть модуль update, с помощью которого можно узнать, что нужно обновить, а также установить обновления для необходимых модулей. Ядро при этом автоматически обновить невозможно, если только вы не пользуетесь чем-нибудь вроде Gardens. Вероятно, в будущем появится и возможность прямого обновления ядра и модулей. Впрочем, это не совсем просто, да и не очень хорошо для сложных проектов. Но для проектов попроще, даже для проектов Drupal Gardens, обновлять ничего не надо. Там это делается автоматически, за вас.
В. Рассматривали ли вы возможность использования профилей (сборок), если Друпал ставят под определенный сценарий, такой как блог или сайт интернет-магазина – чтобы пользователи сразу могли работать с сайтом, а настройки проходили проще?
О. Ну, вы можете включать и выключать модули. Так вы выбираете ту или иную конфигурацию. Также сейчас активно развивается модуль Features. Он позволяет сохранять и более серьезные разновидности изменений в конфигурации. Например, внести изменения в четыре-пять модулей и сохранить их. [не получается точно понять, о чем говорит автор в оригинале - пр. graker]
В. Расскажите, какие недостатки ядра Drupal 7 вы устраняете в Drupal 8?
О. Интересно! Их много (улыбается). Мы всегда очень критичны к себе. Один из самых значительных недостатков Drupal 7 – его возросшая сложность. Когда вышел релиз Drupal 7, мы не были уверены, что все API в нем полностью готовы. Так что в Drupal 8 мы тратим немалую часть времени на чистку API. И это возможно потому что мы нарушаем обратную совместимость. А еще одним из самых важных направлений в Drupal 8 мы считаем поддержку мобильной платформы. И много еще всего. Всегда есть куча вещей, которые надо улучшить.
В. Сейчас многие говорят про HTML5. Да вы и сами проявили к нему интерес. Как думаете, как на него повлияет наличие на рынке устройств с разными форм-факторами? И как насчет оффлайн доступа к данным?
О. Интересный вопрос. Мы пока не знаем. Мы решили, что ключевым направлением развития Drupal в восьмой версии будет HTML5. Это одна из самых простых задач. Мы сосредоточились на нескольких стартовых изменениях, занимаемся ими прямо сейчас. А дойдем ли мы до оффлайн-доступа и геолокации – зависит от двух вещей. От того, сколько людей мы наберем под задачу и от совместимости браузеров. А пока мы шаг за шагом запускаем нововведения по одному и работаем с ними. В конечном счете, мы бы хотели поддерживать все новые классные возможности HTML5.
В. А при этом вы сотрудничаете с разработчиками браузеров?
О. Да, с ними созваниваемся. Вот недавно говорили с Microsoft о некоторых вещах, которые надо поправить в IE. И в последней версии IE они были поправлены. Из чего наглядно видно, какого масштаба достиг наш проект, раз мы можем сотрудничать с крупными разработчиками браузеров и влиять на них.
В. А кто решает, по какому пути будут развиваться будущие версии Друпала? Группа разработчиков ядра? Учитывается ли мнение сообщества? Или решения принимаете лично вы?
О. Для Drupal 8 в основе решения были разные факторов. Во-первых, мое собственное мнение. А мое мнение, в свою очередь, основывается на мнениях некоторых людей, с которыми я регулярно встречаюсь и общаюсь, путешествуя по всему миру. Я беседую с пользователями Друпала – как с одиночными, так и с компаниями. Беседую с разработчиками, которые создают на Друпале сайты. Беседую с самой разной публикой, пытаюсь понять, что для них важно и как нам улучшить Друпал. И у всех есть отличные идеи. А в этот раз, для Drupal 8, мы провели опрос среди разных пользователей. И я подвел итоги их требований и окончательно расставил приоритеты Drupal 8.
В. А если модуль, созданный сообществом, станет очень популярным – может он войти в ядро?
О. Да., именно так мы и делаем. Если модули становятся очень популярны и все ими пользуются, я считаю, что это часть инфраструктуры. И в подходящее время они попадут в ядро. В Drupal 7 мы поместили в ядро кучу модулей, более 60. Некоторые маленькие, другие – очень большие, как например CCK. Кроме того, в Drupal 8 есть такие инициативы как интеграция HTML5. И поэтому есть надежда, что в Drupal 8 не будет нужды в модулях поддержки HTML5. А еще в Drupal 7 есть модуль Services, в восьмой версии мы поместим его в ядро.
В. А модуль Views тоже будет интегрирован в ядро?
О. Views – интересный зверь. Модуль номер один в Друпале. И с этой точки зрения он очень важен. Но, в то же время, он все еще развивается. Плюс, сам модуль очень сложен. И принимая во внимание всю его сложность, я хотел бы чтобы Views был полностью готов до каких-либо значительных изменений.
В. Планируете ли вы поддержку нереляционных баз данных?
О. Уже поддерживаем. Разработчики крупных сайтов на Друпале уже использовали MongoDB. Можно использовать и Cassandra, и другие нереляционные базы данных.
В. Как вам известно, услуги компании Acquia довольно дороги. Планируете ли вы вводить специальные цены для рынков развивающихся стран, учитывая что именно нашего рынка ожидается большая активность в сетевом пространстве? [речь об Индии, интервью брал индус - пр. пер.]
О. Наши услуги дороги, но хочу заметить, что это – премиальные, высококачественные услуги. То есть, “лучшие” в своем роде услуги. Что до специальных цен на услуги в Индии – нужно сесть и все обдумать. Скорее всего, они будут. Путешествие в Индию открыло мне глаза, и пока я там оставался, не раз думал, что наши цены для них слишком высоки. Так что через некоторое время мы должны выработать какое-то решение.
В. Так вы намерены принять активное участие на индийском рынке?
О. О да, безусловно. Думаю, в Индии много возможностей по целому ряду причин. Здесь много талантливых инженеров, которых мы хотели бы видеть частью сообщества, чтобы помочь развивать Друпал. А мы бы хотели развивать все, что помогает Друпалу. Кроме отдельных инженеров, есть и большие компании по системной интеграции, такие как Wipro и Accenture. И они изо всех сил пытаются найти талантливых друпалеров. Мы на это смотрим как на главное направление работы в будущем. И мы хотели бы сделать здесь очень много разного.
—
Перевод был осуществлён на сайте коллективных переводов Cotranslate.Net, под чутким руководством graker. Переводчики: masdzen, xandeadx, graker, Plazik.
Источник: http://www.drupal.ru/node/74136
WordPress 3.3.1 на русском
Доступен WordPress 3.3.1. Это техническое обновление содержит исправления 15 ошибок версии 3.3, а также исправление XSS-уязвимости, о которой своевременно сообщили Джошуа Х., Хоанг Т., Стефан Циммерман, Крис К. и команда безопасности Go Daddy.
Скачайте версию 3.3.1 или воспользуйтесь автоматическим обновлением в меню «Консоль» → «Обновления».
Источник: http://ru.wordpress.org/2012/01/wordpress-3-3-1/
Перевод интервью с Дрисом Байтаертом: о Drupal 8, Open Source, бизнесе и Индии
Перевел большое интервью с Дрисом Байтаертом, опубликованное в конце декабря на портале Linux For You http://www.linuxforu.com/2011/12/dries-buytaert-interview-drupal-8-busin…
Дрис Байтаерт, создатель и руководитель проекта Drupal, недавно посетил Индию. Linux For You поговорил с ним о его планах по расширению сферы Drupal в Индиии, о Drupal 8, о компаниях, специализирующихся на Drupal и их бизнес модели, об Open Source и др.
Существует множество систем управления контентом, где именно вы позиционируете Drupal и чем вы отличаетесь?
Drupal это интересное животное, если вы присмотритесь внимательно. На нем работает два процента всех сайтов в мире. Но самое уникальное в Drupal это то, что он масштабируется от больших веб сайтов до очень маленьких. На нем работают блоги, но на нем также работают большие сайты медиа компаний. Он также уникальный в своих возможностях и функциональности. И все благодаря сообществу Drupal, в котором десятки тысяч людей развивают Drupal. У нас есть более 10 000 модулей. Поэтому мы находится в таком положении, что мы можем создать любой вид сайта на Drupal.
Полная версия перевода опубликована на Хабре http://habrahabr.ru/blogs/drupal/135646/ (как более удобной платформе для пропаганды Друпала).
Источник: http://www.drupal.ru/node/74035
Новая тема для Drupal 7 – Drupalace Theme
Всем доброго времени суток.
Хочу поделиться радостной новостью – сегодня я наконец выпустил в массы официальный релиз темы с моего блога – Drupalace Theme. Она представляет из себя блоговый шаблон с разнообразными настройками. Тема в течение пяти месяцев проходила тестирование на моём блоге и завоевала множественные симпатии со стороны посетителей. А так как я человек абсолютно не жадный, то я решил выложить тему в общественное пользование. Тема написана для седьмой версии Друпала.
Основные преимущества:
10 регионов под блоки. Есть даже регион для добавление рекламы под материалом (node bottom) Изменяемая разметка темы Возможность добавления материала в социальные сети (работает через сервис addthis) Навигация по материалам (ссылки на предыдущий и следующий материал) Логин во всплывающем окошке Настраиваемый текст для блока поиска Симпатичный дизайн Хорошая читабельность текста Тема проверялась во всех браузерах, кроме IE6 и ниже. Детальная прорисовка многих мелочей.Тема, ушедшая в релиз – это улучшенная тема с моего блога. Добавлены настройки, поддержка IE7+, дополнительные иконки.
Почитать подробнее и посмотреть скриншоты вы можете здесь.
Скачать тему можно с официальной страницы Drupalace Theme.
Всех с прошедшими и будующими праздниками!
Источник: http://www.drupal.ru/node/74022
DataLife Engine v.9.5 Final Release
Дорогие друзья,
Представляем вам новую версию нашего скрипта DataLife Engine v.9.5. В данном релизе вас ожидает существенно улучшенная система кеширования, новые возможности для дополнительных полей в публикациях, новые возможности по выводу и оформлению новостей, и многое другое, но обо всем подробнее …
Источник: http://dle-news.ru/release/1464-datalife-engine-v95-final-release.html