+1.09
Рейтинг
3.29
Сила

Создание плагина. От идеи до публикации. Часть 1.

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

Приступим
В начале создадим в папке plugins папку для нашего плагина с именем carousel и в нем файл plugin.xml c описанием создаваемого плагина (см. картинку ниже).


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

Брендирование персональных и коллективных блогов, а так же профилей пользователей

Поискал по сайту, но нашел темы не удовлетворяющие мои требования.

Требуется модуль для «брендирования» персональных и коллективных блогов, а так же профилей пользователей.

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

Модуль должен выполнять следующие функции:
Для пользователя:
— замена бэкфона сайта на картинку;
— выбор цвета заливки под этим фоном;
— настройка отступа шапки сайта от верхней части браузера с возможностью настройки максимального значения до 700 пикселей;
— замена отображения имени пользователя на выделенное цветом;
— в случае покупки должна быть соответствующая кнопка в блоге/профиле;
— в случае покупки, настройка периодов и цен в настройках блога/профиля;
Для админа:
— настройка платности/бесплатности функции;
— возможность включения/выключения функции для любого блога/профиля вне зависимости от включенной платности функции.

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

Желательна поддержка LS 0,5 и 1.хх

Если будут желающие на совместный заказ и желающие на изготовление, готов к обсуждению.

Примеры подобного брендирования:
promodj.com/respectime
promodj.com/R-Tem
promodj.com/tesla

Участники коллективного заказа:
ARM
emilzo
CheDesign
iManiac
peholod
antweb
Varhal
Goodluckov
Coffe

Разработка плагина (модуля) для livestreet 1.0

Доброго времени.
Сверстал шаблон, адаптировал под живую улицу версии 1.
осталось мелочь… написать плагин
посмотрел
тут
тут
тут
тут

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

Плагин "LSPurse (Личный счет пользователя)" for LS1.0

Плагин организует на сайте личный счет пользователя который можно пополнить автоматически из платежных систем (плагин Payment).


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

Sape на LS1.0

Кто-нибудь сталкивался с проблемой при установке. Если как 0.5.1 вставляю код в шаблон, то ошибка получается и все ложится. Не знаете как нужно ставить? В чем отличие теперь? Заранее спасибо!

Новое в LiveStreet 1.0 для разработчиков

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

Список:
  1. Модуль GEO, теперь в своих плагинах с помощью него можно делать географические привязки различных объектов
  2. Модуль Subscribe, организация подписок пользователей на различные события и рассылка по ним. Например, через него реализован механизм подписки на комментарии к топикам
  3. js вынесены за пределы шаблона в библиотеки, теперь в шаблонах достаточно только переопределить необходимый функционал
  4. Механизм валидации данных, подробнее — livestreet.ru/blog/dev_documentation/10221.html
  5. Возможность в тулбар добавлять свои элементы через стандартных механизм блоков
  6. Консоль для автоматической генерации каркаса плагина
  7. Переопределять настройки редактора стало проще, теперь они находятся в ls.settings
  8. Класс Object переименован в LsObject, позволит избежать проблем с некоторыми IDE и подключить автоподстановку методов
  9. Доработан модуль Image, теперь для сохранения изображения на другой сервер, достаточно переопределить методы SaveFile() и RemoveFile()
  10. Каптча вынесена в блочный хук {hookb run=«popup_registration_captcha»}, что позволит ее переопределить
  11. Возможность делать всплывающие подсказки через poshytip или infobox.js (с погрузкой данных через ajax)
  12. Появился модуль Tools, сейчас в нем только один метод — формирование облака тегов
  13. Шаблоны блоков перенесены в отдельный каталог /blocks/
  14. При ручном определении сеттеров в сущностях теперь следует возвращать данные как return $this->_getDataOne('blog_id'); — это позволит избежать проблемы с Notice ошибками
  15. Прямой эфир теперь автоматически группирует вкладки, если их много, в выпадающий список
  16. Смена приоритетов при загрузке блоков — теперь блоки из конфига загружаются после блоков, объявленных в коде экшенов, соответственно блоки из конфига имеют более высокий приоритет. Это позволит применять правила к блокам после окончательного определения экшена/евента, которые можно переопределить в ходе выполнения логики экшена/хуков.
  17. Возможность делать именованные евенты и управлять блоками из конфига о их именам. Например для евента на основе регулярно выражения можно задать имя и его использовать в правилах блоков. Если имя не задать, то оно автоматически определится как имя метода евента.
  18. Теперь все текстовки плагинов помещаются в пространство 'plugin.name', например, Get_Lang('plugin.page.admin_title');


Если есть вопросы, то отвечу более подробно.

Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx

Возможно, этот гайд даже кому-нибудь понадобится.

0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
# nano /etc/apt/sources.list

дописываем в конец файла
deb http://packages.dotdeb.org stable all

Далее импортируем ключ dotdeb'а:
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | sudo apt-key add -

Обновляем список пакетов
# apt-get update

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

Как создать свой вид топика, используя систему плагинов

3 года назад было написано Руководство: Как создать свой вид топика на LiveStreet. В то время ещё не было системы плагинов, и всё делалось «топорно», что в последствии затрудняло обновление движка, т.к. приходилось свои куски кода вставлять опять. С появлением системы плагинов LiveStreet стал более гибким и легко обновляемым. Передо мной встала задача создать новый вид топика, и я решил сделать это плагином. Но в процессе выяснилось, что то ли я чего-то не знаю, толи этого нет.

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

"Принудительно вывести на главную" - решено

Задача — добавить модераторам кнопку «принудительно вывести на главную»,
которая доступна только глобальному администратору. Поюзав поиск нашел решение.
В skin\new-jquery\actions\ActionTopic\add.tpl находим
{if $oUserCurrent->isAdministrator()}
		<p><label for="topic_publish_index"><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
		{$aLang.topic_create_publish_index}</label><br />
		<span class="note">{$aLang.topic_create_publish_index_notice}</span></p>
	{/if}

меняем на
{if $oUserCurrent->isAdministrator() or ($oUserCurrent and $oUserCurrent->getLogin()=='ermmod')}
		<p><label for="topic_publish_index"><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
		{$aLang.topic_create_publish_index}</label><br />
		<span class="note">{$aLang.topic_create_publish_index_notice}</span></p>
	{/if}

Все работает. Но прописывать каждый раз имена модераторов в коде, разумеется, не дело. Долго и муторно фантазировал на тему
{if $oUserCurrent->isAdministrator() or ($oUserCurrent and $oBlog->getUserIsModerator())}

Но ничего не получается. Помогите плз

Да, это еще не все. До сих пор мы только отобразили чекбокс. Чтобы он заработал нам нужно открыть \classes\modules\ACL.class.php и найти
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
        
		if ($oUser->isAdministrator()) {
			return true;
		}
        
        return false;
	}

Соответственно в иф добавляем
if ($oUser->isAdministrator() or ($oUser and $oUser->getLogin()=='ermmod'))
и все работает.

пысы. 'ermmod' — логин модератора.
подскажите как не прописывать его в коде, пожалуйста!