Предлагаю рейтинговую систему на сайте

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

Источник: http://www.drupal.ru/node/86649

Plugin Detector – каталог и рейтинг плагинов jQuery

Всем привет.

Последние полтора месяца в основном занимался разработкой нового проекта – Plugin Detector.

скриншот:

Идея проекта – помочь разработчику (менеджеру, заказчику) определиться с выбором плагина для сайта. Вторая задача – показать новые и интересные плагины jQuery, которых возможно многие еще не видели и не знают о их существовании. На сайте есть как новые креативные плагины, так и заезжаные «ветераны» плагиностроения, типа Tablesorter, Lava lamp menu, попапы и д.р.

Сайт задумывался как очень узкоспециализированный, но с качественными материалами и продуманными выборками.

Идеи реализованные на сайте не новы. Решения, показавшиеся мне уместными, взяты и адаптированы под конкретную задачу.

Технические детали:

Версия друпала – 7

Рецензии
Вместо модуля nodereview были использованы обычные комментарии d7, расширенные дополнительными полями CCK, благо теперь на семерке это сделать не проблема.

Скриншот формы добавления рецензии:

примечание. форма выглядит брутально, но это временно

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

Особенность рецензии в том, что пользователь может оставить только одну рецензию для плагина. Поэтому нужно было сделать ограничение кол-ва комментариев к ноде. Для того чтобы ограничить количество отзывов, пробовал использовать модуль Comment Limit, но он работал с ошибкой, запрещая редактировать отзыв (коммент). Модуль почему-то думал что нажимая кнопку сабмит (при редактировании коммента), пользователь пытается засабмитить второй коммент, и блокировал это действие. Его пришлось отключить и реализовать ограничение ручками.

Пока что комментариев на сайте нет. В будущем возможно сделаю (пока не уверен что они нужны). Т.к. обычные комменты уже заняты, нашел модуль commentfield, реализующий очень простые комменты (без древовидного обсуждения, без прикрепления полей и файлов к ним).

Голосования
Rate – голосование за ноду (up/down)
Поля в рецензиях с помощью CCK (Content Construction Kit), который в семерке в ядре (4 селекта для оценок и 3 текстовых поля)

скриншот CCK полей коммента (рецензии):

Сначала, голосование за ноду сделал на Fivestar. Звездочки меня уже утомили, их пихают везде с поводом, и без повода. Поэтому решил сделать что-то креативное, а-ля логотипы jquery вместо звездочек:

Однако в процессе последующей разработки было решено отказаться от логотипов jquery вместо звездочек, т.к. многие люди (дизайнеры, менеджеры и заказчики) просто не знают что это лого jquery и не способны не только оценить фишки, но что хуже – вообще теряются и не знают что делать с этим элементом. Звездочки я исключил, поэтому остался up/down, реализовал который я с помощью модуля rate.

С оценками в рецензиях все просто. При сохранении, удалении или редактировании комментария, вызываются соответствующие хуки (например hook_comment_insert), которые перехватывают системные действия, и привязывают к таким событиям мой произвольный код. Я сделал при вставлении и редактировании рецензии – вычисление общей оценки плагина. Сначала с помощью функции avg() в SQL запросе я узнаю среднее арифметическое для каждого критерия оценки (для всех рецензий, относящихся к одной ноде). Запрос выглядит примерно так:

SELECT avg(field_value) FROM field_table INNER JOIN comment...

потом таким выражением узнаю общую оценку плагина: ( a + b + c + d ) / 4

Вот хуки, которые вызываются при добавлении рецензии (или изменении ее оценок)

<?php
function mymodule_comment_insert($comment) {
}

function mymodule_comment_delete($comment) {
}

function mymodule_comment_update($comment) {
}
?>

Похожие плагины
SQL запрос от xandeadx: http://xandeadx.ru/blog/drupal/234

Пользовательский ввод
Для оформления контента плагинов:
СKeditor (из wysiwyg) + One click upload + Image resize filter

Не используются (выключенные модули):
menu
block
locale
views

Так как я не использую модуль menu, чтобы выделять текущий пункт меню, сделал примитивную функцию:

<?php

function lcustom($alias, $link_title ) {
        
    if($alias == arg(0)) {
        if($_GET['q'] == 'best' && isset($_GET['page'])){
            echo '<a href="/'.$alias.'">'.$link_title.'</a>';
    } else {
            echo $link_title;
        }    
    } else {
        echo '<a href="/'.$alias.'">'.$link_title.'</a>';
    } 
    
}
?>

Подобной функцией пользуюсь уже не на первом проекте. Вызов функции выглядит так:

<?php
<div class="fooerMenu">
    <span><?php lcustom('submit', 'Предложить плагин'); ?></span>
    <span><?php lcustom('flagged', 'Помеченные ссылки'); ?></span>
    <span><?php lcustom('reviews', 'Рецензии'); ?></span>
</div>
?>

Хостинг
IT-patrol – просто летает. Отклик в 50 мс – это вещь. Сервак отрабатывает очень быстро. Особенно заметно внутри админки – на служебных страницах, предыдущий хост тупил.

jQuery
Чтобы воспользоваться файлом jQuery, который использует ядро друпала, удалось найти такое решение. Все скрипты jquery, написанные для сайта, нужно завернуть в такую конструкцию:

(function ($) { ... })(jQuery);

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

jQuery, используемое в демках, в основном грузится с Google CDN

Дизайн
Делал сам. Готовые темы не использовались. Не всё в дизайне мне нравится. Есть вещи, которые сделаны грубо (например форма добавления рецензии или некоторые попапы), и они будут со временем исправлены. Есть вещи (дизайн, функционал), над которыми я много думал, несколько раз переделывал, но так и не достиг ощущения что они работают как надо. Постепенно буду подтачивать.

Кроссбраузерность
А нет ее. Плотно смотрю в хроме и фоксе, время от времени проверяю в опере. В ИЕ не смотрел, да в общем-то и не собираюсь. Данный сайт для разработчиков, а они не пользуются ИЕ (я надеюсь!). Во всяком случае, чтобы посмотреть работоспособность демки, можно скопировать ее адрес в ИЕ, и я считаю этого достаточным минимумом.

Флаги
Я не стал использовать модуль flag, хотя давно о нем знаю. Было проще написать один аякс-запрос, добавляющий ссылку в БД, чем связываться с многофункциональным модулем, который из коробки скорее всего не подойдет под мои задачи.

Авторизация
uLogin – рульная штучка, заработало сразу все как и хотел. Был сильно удивлен фактом работы из коробки, думал что минимум день придется потратить на вкуривание манов, и еще день на то чтобы настроить его под себя. А оказалось что установка заняла минут ну отсилы 10, а подкручивание под себя еще час-два.

Конечно, я фанат аватарок, но в данном случае аватарки мне кажутся лишними, т.к. будут отвлекать от самих рецензий и оценок. Поэтому я их не настраивал, не знаю насколько сложно.

При первой авторизации создается пользователь. Это мой первый сайт с авторизацией через соц. сети, поэтому ощущения необычные.

Друпаловскую регистрацию решил отключить вообще, чтобы не было путаницы в типах аккаунтов.

Для того чтобы показывать иконку социальной сети, через которую авторизован пользователь, я делаю так:


<?php if(strpos($user->init, '_google')){ ?>
    <span class="Google" title="Вы вошли через Google аккаунт"></span>
<?php } else if (strpos($user->init, '_vkontakte')){ ?>
    <span class="Vk" title="Вы вошли через аккаунт Вконтакте"></span>
...
?>

У меня есть далеко не все аккаунты, через которые можно авторизоваться в uLogin, поэтому я протестировал только некоторые способы авторизации. Если кто-то найдет баги в тех способах авторизации, которые я не тестировал, пожалуйста сообщите.

Да, еще пара моментов. Стандартный модуль для д7, который выложен на официальном сайте ulogin вставляет виджет авторизации только на странице авторизации (user/login, и наверное регистрации), однако совсем не сложно вставить этот виджет (по факту это iframe ) в любое место страницы. В модуле я строку с iframe (который выводит виджет авторизации на странице /user/register) закомментил.

Второй момент – редирект после авторизации. Из коробки, модуль ulogin после авторизации редиректит на главную, а если ты находишься на странице и уже хочешь что-то туда написать – это просто убивает. Поэтому чтобы сделать редирект на текущую страницу, (на которой пользователь нажал кнопку авторизации), пришлось немного подправить модуль. Если интересно что и как могу написать в комментах.

Кажись это все, что вспомнилось.

Прикрепленный файл Размер screen.png 69.67 кб review_add_form.png 7.72 кб review_fields.png 17.71 кб fivestar.png 5.95 кб users_table.png 34.31 кб

Источник: http://www.drupal.ru/node/70966

Очередной рейтинг. Трофеи – головы WP, Typo3 и MODx

Для свободно распространяемых CMS главная новость года – резкий взлет популярности WordPress. Завоевавшая широкую популярность как платформа для блогов, CMS WordPress стала использоваться для создания корпоративных сайтов, промо-страниц и даже интернет-магазинов. На этом фоне Typo3, более сложная CMS, заточенная под корпоративные сайты и бизнес-процессы, потеряла две позиции и сместилась в рейтинге на пятое место. Две верхние строчки среди свободно-распространяемых систем по-прежнему остаются за CMS Joomla и Drupal, привычные профессиональным разработчикам по всей России.


http://www.ratingruneta.ru/cms/opensource
вся статья http://habrahabr.ru/blogs/about_cms/119411/

Источник: http://www.drupal.ru/node/62410

Голосуем за Drupal в Webware100

The Webware 100 – это головой рейтинг топ100 Web 2.0 приложений, который составляется на основании голосов пользователей и публикуется на CNET.com.
Drupal был в рейтинге в 2007 и 2008 годах. Теперь надо отдать свой голос за Drupal в 2009 году!

Источник: http://www.drupal.ru/node/27429

Мега-баг Vote up/down исправлен спустя год!

В память топика “в связи со случившимся на хабре…” набравшего 134 плюса в карму и послужившего поводом для искоренения пузомерки на друпл.ру
[Security-news] SA-CONTRIB-2009-017 –  Vote Up/Down – Cross-site request forgery

Ура, товарищи! Мы снова можем использовать его в своих проектах и не бояться накруток!

Версии модуля до 5.x-1.1 и 6.x-1.0-beta4 позволяют злоумышленнику легко подтасовать голосование за любой материал так, как писал  NeoChief.

Примерно год назад эта уязвимость была впервые использована на drupal.ru, вскоре после чего (в том числе и по этой причине) голосования за топики были отключены.

На моей памяти это самое долгое успешное устранение дыры в безопасности.

Источник: http://www.drupal.ru/node/26844

© 2009 Обзор CMS