Модуль Loader - управление js и css файлами

Суть проблемы:

В шаблоне new на каждой странице выводиться 18 js файлов и 6 css. Достаточно много, особенно если учесть, что на многих страницах не нужна и половина из них. Хотелось бы избавиться от ненужного баласта. Но… Файлы жестко прописаны в template, поэтому стандартными средствами с этим трудно бороться.

Решение проблемы:

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

Модуль Loader предоставляет вам возможность просто управлять совокупностью подключаемых к странице css и js файлов, используя шаблоны адресов или непосредственно из кода Action`a.

Скачать модуль. (в данный момент на модерации).

Используя модуль вы можете:

1) задать набор файлов, выводимых по умолчанию. Стартовый default-набор состоит из файлов подключаемых в скине new версии livestreet 0.3.1
2) создавать правила включения и\или исключения некоторых (или всех) файлов для путей любого вида.
3) подключать или удалять файлы прямо из кода Action`a

О том, как установить модуль — в readme.txt файле (это совсем не сложно). Как пользоваться — под катом.

Читать дальше →

Ruby On Rails - best practices

Прошел где-то месяц, после того как я начал изучать Ruby On Rails. Так как Livestreet потихоньку движется в сторону framework'a (чему я сильно рад), хочу поделиться с разработчиками livestreet чего же такого там есть, чего сильно упрощает жизнь при разработке.

Вообще, ruby on rails позиционируется как фреймворк, который максимально упрощает разработку и в то же время структурирует систему.
В то же самое время, livestreet сильно подходит для высоконагруженных проектов (больше чем rails).

Читать дальше →

Разработка на Livestreet

Всем привет.
Мы предлагаем свои услуги по разработке сайтов на livestreet, имеем опыт в следующих направлениях:

Установка livestreet на сервер, установка любых модулей
Создание шаблона для livestreet
Написание индивидуальных модулей
Перенос контента с существующих сайтов

Несколько примеров наших работ на базе ls:
1.Тамбовский городской портал
Что было сделано:
Создание индивидуального шаблона, реализация модуля компании+работа, реализация модуля связки пользователей, компаний и событий с Google картами (в то время пришлось еще и сами карты забирать с другого сервера, т.к. на google не было снимков города Тамбов должного качества).

2. online-журнал бизнеса в сети
Что было сделано:
Создание индивидуального шаблона, установка дополнительных модулей, перенос контента с существующего сайта (статьи, пользователи, комментарии и т.д.)

3. Коридор — биржа исполнителейЧто было сделано:
Разделение пользователей на исполниетелй и заказчиков, возможность комментировать исполнителя, разделение прав пользователей, мелкие доработки (например рейтинг исполниетелей, облако тегов по специализациям исполнителей и т.д.), индивидуальный шаблон.

4. Социальная сеть экстремалов
Что было сделано:
Тут дело ограничилось только шаблоном

 

 
Другие работы, контактную информацию и т.д. можно найти у нас на сайте.

 
UPDТак же приняли участие в некоторых проектах только на стадии верcтки или программирования, написан маленький бесплатный модуль QR-коды, и вообще мы хорошие ребята ;)

Переезд SVN проекта

Сегодня SVN и Trac проекта LiveStreet перенесены с хостинга Assembla на новый сервер разработок — lsdev.ru
Теперь все работы по LiveStreet и сопутствующими проектами нами будут проводится на собственном сервере.
Новый адрес SVN репозитория — trac.lsdev.ru/svn/livestreet/, Trac доступен по адресу — trac.lsdev.ru/livestreet

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

Автоматическое составление сложных запросов в mapper`ах

Этот пост — совет/подсказка разработчикам, которые трудятся над модулями во имя развития проекта :)

Суть проблемы.

Работая над модулем «Объявления» я столкнулся с необходимостью сделать достаточно сложный запрос к базе данных. Сложный не в плане SQL, а в том, что мы заранее не знаем каким он получиться. Такая ситуация возникла при создании пользовательского фильтра.

Технически задача заключается в следующем — есть три таблицы: объявления, категории объявлений — отсюда мы получаем название категории, пользователи — отсюда мы «дергаем» логин пользователя. Необходимо реализовать выборку по следующим условиям:
— категория или массив категорий (дочерние),
— ID пользователя или логин,
— статус (опубликовано или нет — для администратора),
— актуально объявление или нет,
— минимальная и/или максимальная цена,
— есть привилегии или нет,
Учесть при этом составную сортировку (по одному или двум полям), а также не забывать, что результат фильтрации нужно показывать с разбивкой на страницы. Сложности в это все добавляет то, что логин пользователя тянется из другой таблицы, поэтому необходимо использовать HAVING, а не WHERE.

Решение проблемы.

Читать дальше →

Подключение кастомных стилей и скриптов

Пример: сейчас в Админпанели много всего выводится на экран. Вывод надо как-то оформлять, и приходится либо в шаблоны встраивать объявления стилей, либо вообще инлайнить. Что совсем не есть гуд. Хотелось бы вынести все это хозяйство в отдельный файл и подключать на тех страницах, которые модуль выводит.

Например, так:

$this->Viewer_AddHeadCss('admin.css');// в заголовке хтмл-страницы будет подключен 
                                      // файл admin.css из активного скина - все пути и
                                      // оформление тега, как положено по спецификации,
                                      // Viewer задаст автоматом

$this->Viewer_AddHeadJs('admin.js'); // в заголовке хтмл-страницы будет подключен 
                                     // файл admin.js из активного скина

$this->Viewer_AddHead($text);      // в заголовок хтмл-страницы будет вставлен текст,
                                   // это может быть css-объявление, код javascript, 
                                   // ссылка на js-файл из гугловского репозиария и 
                                   // т.д. - т.е. любой текст; и тут, конечно, уже
                                   // правильность оформления тегов и проч. - на 
                                   // программере модуля

Грабинг новостных лент.

Хочеться узнать возможность и стоимость разработки.
Модуль должен:
Грабить новостные ленты.
Постить от имени заданных пользователей.
Постить разные ленты в разные блоги.
Возможность ставить в тело поста ссылку на источник или неставить.
Возможность брать картинки и сохранять у себя вставляя в пост.
Одна лента один блог или несколько лент в один блог. вобщем аналог вордпресовских плагов.

Так же готов выслушать заинтересованных в разработке =)

Свой расчет рейтинга

Я понимаю, что есть, навеное, какие-то типовые схемы расчета рейтинга в подобных системах, которые были опробованы уже на различных ресурсах. Но время от времени вспыхивают дискуссии о том, что «я бы считал не так» или «я хочу ввести еще один параметр» и т.д. Отсюда предложение:

Желательно предусмотреть некий стандартный механизм, позволяющий подключать пользовательские модули расчета рейтинга (без использования «грязных хаков»). Или, как минимум, вынести коэффициенты расчета в некий конфиг. Тогда можно было бы, при желании, хотя бы этими коэффициентами играть, не влезая в исходники.