Релиз LiveStreet 0.5

LiveStreet
Новые возможности:
— Стандартные шаблоны переведены на jQuery, в текущей версии еще осталась поддержка MooTools;
— В ядро добавлен функционал ORM (active record), огромное спасибо Ajaxy;
— Новый вид топика — топик-фотосет
— Новый раздел «Лента», можно формировать поток контента из блогов и авторов
— Новый раздел «Активность», слежение за активностью пользователей
— Функционал настраиваемых полей в профиле пользователя
— Переработан механизм ajax обработчиков, все ответы теперь в JSON
— Настройка парсера (jevix) теперь в отдельном конфиге, поддержка iframe
— Постраничный вывод комментариев с использованием nested set
— Обновлен Smarty 3.0.8, TinyMCE 4.3, MooTools 1.2.5
— Автозагрузка классов теперь через spl_autoload_register
— Переписан весь js код для jQuery
— Фиксы безопасности
— Огромное количество баг-фиксов и мелких изменений/дополнений

livestreetcms.com/download/

Как-ниб, на недели обновлюсь. Шаблон клевый, все быстро работает, но зачем-то по умолчанию его сделали фиксированным, а не резиновым. Как хабр. Когда-то Хабр был норм, а теперь как массовые-шаблоны-газеты, под унылые офисные мониторы.

LiveStreet 0.5 будет няшная

LiveStreet
Скоро, не будет, ниибически длинных постов, из-за 10-50 img. Да.
Неужели мне придется, переделать все прошлые?
И первьюшки, наконец будут нормальные. Неужели, придется, переписать html теги, у всех img?

Ad units

LiveStreet
Плагин «Ad units»
Рекламные блоки для LS


Добавляет пользователям возможность размещать на сайте рекламные блоки на страницах своих блогов и топиков в виде ссылок, банеров, медиа контента.
для управления рекламными блоками переходим в настройки профиля и добавляем свою рекламу или по ссылке _ваш_сайт_/settings/adunits/

/plugins/localflv/config/config.php:
/* включение/отключение возможности размещать рекламу всем пользователям: all - для всех, admin - только для админов*/
    Config::Set('config.adunits.permit.user', 'all');


При успешной акитивации в БД добавится таблица prefix_adunits из /plugins/adunits/dump.sql
в противном случае выполните sql-запрос из файла /plugins/adunits/dump.sql
CREATE TABLE `prefix_adunits` (
    `adunits_id` int(11) NOT NULL auto_increment,
    `user_id` int(11) NOT NULL,
    `adunits_code` longtext character set utf8,
    `adunits_setting` text character set utf8,
    `adunits_setting_more` longtext character set utf8,
    `adunits_date_add` datetime NOT NULL,
    `adunits_date_edit` datetime NOT NULL,
    PRIMARY KEY  (`adunits_id`)
  ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Скачать: 2me.be/z/adunits.zip

Еще немного иногда полезных плагинов

LiveStreet
Добавление возможности голосовать гостям в опросах.
Поддерживается голосование, как зарегистрированных так и анонимных пользователей. Анонимные пользователи могут голосовать раз в сутки.
Скачать и активировать: 2me.be/z/questions.zip

Проверка грамотности при помощи Yandex spell API
Позволяет проверять корректность текстов топиков при помощи яндекса. В данной версии выводит специальный блок, в правой части экрана, при нажатии на нем осуществляется проверка грамотности написания топика.
Скачать и активировать: 2me.be/z/empyandexspeller.zip

Список топиков из этого же блога, под постом.
Данный плагин выводит после текста топика, список топиков из этого же блога и переключаться между ними. Что бы им воспользоваться нужно будет поменять файл topic.tpl
найти
<li class="author"><a href="{$oUser->getUserWebPath()}" rel="nofollow">{$oUser->getLogin()}</a></li>
</ul>

после добавить
{hook run='topic_after_tags' oTopic=$oTopic} 

После этого скачать и активировать: 2me.be/z/emptopiclist.zip

Feedback (Обратная связь)
Обратную связь по сути можно и не делать :) Но если кому-то, хочется, Отдельной Формочкой, как по старинке.
Умеет: анти-флуд контроль; возможность отображени обратной связи для гостей в закрытом режиме работы сайта; возможность вывода ссылки на обратную связь в формы регистрации и авторизации; возможность вывода ссылки на обратную связь в главное меню сайта; возможность замены текстового поля «Тема письма» выпадающим списком; возможность указывать несколько ящиков, на которые будут приходить письма.
Входящий адресс(а) указывается в файле: \plugins\feedback\config\config.php
Все настройки находятся в файле: \plugins\feedback\config\config.php
Добавить элементы в выпадающий список тем можно в файле: \plugins\feedback\templates\language\язык.php
Шаблон письма можно отредактировать в файле: \plugins\feedback\templates\skin\скин\notify\язык\notify.feedback.tpl
Скачать и активировать: 2me.be/z/Feedback_1.2.rar

Добавление к посту, ссылки на источник.
Пойдет тем, кто прямо батхерит, когда их копипастят через rss или граберами всякими. Теперь копипастится будет и ссылка на исходный пост ;)
Скачать и активировать: 2me.be/z/empmakesource.zip

Редактирование id

LiveStreet
Если вам, все же, приспичило страдать хуетой.

То для редактирования Людей, или там Комментариев, есть два плагина.

Редактирование людей
Плагин позволяет админам редактировать все поля в профиле любого пользователя. Плюс дополнительно админ может регить пользователей, например это можно использовать для регистрации ботов если это нужно. Но думаю что больше этот пагин будет полезен разработчикам, например для тестирования своих наработок после установки чистого дистрибутива движка.
Скачать: 2me.be/z/people.zip

Редактирование комментариев +TinyMCE

Для конфигурации доступны параметры условий возможности редактирования комментария для пользователя: срок, прошедший с момента публикации, уровень комментария в древе, роль пользователя на сайте, тип комментируемого топика.
Так же в конфиге есть возможность включить использование редактора TinyMCE в комментах. Для этого в таблице prefix_comment создается дополнительное поле comment_text_source.
Скачать и активировать: 2me.be/z/Plugin_Ls-Cmtedit-1.6.zip

НО, если все же что-то не так. (у меня не на всех стилях работало)
То делайте вот это.
comment_tree.tpl
на второй строчке, сразу после
<script ... src=".../comments.js"></script>

вставить
{include file='cmtedit_form.tpl'}

comment.tpl
перед кнопкой удаления коммента:
{if !$oComment->getDelete() and $oUserCurrent and $oUserCurrent->isAdministrator()}

вставить
{include file='cmtedit_button.tpl'}

в том же comment.tpl
найти
<div class="text">
        {if $oComment->isBad()}
                <div style="display: none;" id="comment_text_{$oComment->getId()}">
                {$oComment->getText()}
                </div>
                 <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';$(this).style.display='none';return false;">{$aLang.comment_bad_open}</a>
        {else}  
                {$oComment->getText()}
        {/if}                                                           
</div>

заменить на:
<div class="text" id="comment_text_{$oComment->getId()}" {if $oComment->isBad()}style="display: none;"{/if}>
        {$oComment->getText()}
</div>                          
{if $oComment->isBad()}
        <div class="text-more">
                <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';this.parentNode.style.display='none';return false;">{$aLang.comment_bad_open}</a>
        </div>
{/if}
{if $oComment->getCommentDateEdit()}
        <div class="text-more edit-info">
                {$oComment->getEditInfo()}
        </div>
{/if}

Отправка подписки через jabber

LiveStreet
Все последующие шаги можно делать только если вы добавили поле jabber'а в профиль! :)
Например плагином Социальные контакты.

Берем необходимые файлики, копируем каталоги /classes/, /config/ и /template/languages/ соответственно в каталоги classes/ config/ и languages/ на хосте, где установлен LS.
Потребуется замена файла Notify.class.php

Копируем файлы из каталога templates/skin/new/notify в соответствующий каталог используемой вами темы.
Выполняем sql запрос: (на всякий не забывайте делать бекапы sql, при любой работе с sql, ибо если там что-то накосячится, то это геморой)
alter table prefix_user add user_settings_notice_method enum('mail', 'jabber') not null default 'mail' after user_profile_foto;

Находим в файле /classes/actions/ActionSettings.class.php
if (isset($_REQUEST['submit_settings_tuning'])) {
    $this->Security_ValidateSendForm();

и после этого добавляем:
$sNoticeMethod = getRequest('settings_notice_method');
            if ($sNoticeMethod == "jabber" && is_null($this->oUserCurrent->getProfileJabber())) {
                $this->Message_AddErrorSingle($this->Lang_Get('settings_tuning_no_jid'));
                return;
            }
            $this->oUserCurrent->setSettingsNoticeMethod( $sNoticeMethod );


Находим
$this->oUserCurrent->setProfileJabber(null);
и добавляем после этого:
$this->oUserCurrent->setSettingsNoticeMethod('mail');


в файле: /classes/modules/user/entity/User.entity.class.php находим:
return $this->_aData['user_profile_foto'];
    }

и добавляем после этого:
public function getSettingsNoticeMethod() {
        return $this->_aData['user_settings_notice_method'];
    }

находим:
$this->_aData['user_profile_foto']=$data;
    }

и добавляем после этого:
public function setSettingsNoticeMethod($data) {
        $this->_aData['user_settings_notice_method']=$data;
    }


в файле: /classes/modules/user/mapper/User.mapper.class.php находим:
user_profile_foto = ? ,

и добавляем следом:
user_settings_notice_method = ? ,

находим:
$oUser->getProfileFoto(),

и добавляем следом:
$oUser->getSettingsNoticeMethod(),


в файле /templates/skin/<ваша-тема>/actions/ActionSettings/tuning.tpl находим:
<label for=""><input {if $oUserCurrent->getSettingsNoticeNewFriend()}checked{/if} type="checkbox" id="settings_notice_new_friend" name="settings_notice_new_friend" value="1" class="checkbox" /> — {$aLang.settings_tuning_notice_new_friend}</label>


и после этого добавляем:
<br />
    <select name="settings_notice_method" style="width: 200px;">
        <option value="mail" {if $oUserCurrent->getSettingsNoticeMethod()=='mail'}selected{/if}>{$aLang.settings_tuning_notice_method_mail}</option>
        <option value="jabber" {if $oUserCurrent->getSettingsNoticeMethod()=='jabber'}selected{/if}>{$aLang.settings_tuning_notice_method_jabber}</option>
    </select>


конфиг /config/modules/jabber/config.php надо исправить в соответствии со своими настройками, указав jid от имени которого будут рассылаться уведомления.

Создание каких-то любых рассылок, по критериям из профиля юзеров

LiveStreet
Создание рассылок.
Говно хосты, или vps с лимитами на отправку исходящего — не получится. Даже не пытайтесь.

  • Есть возможность фильтра получателей по свойству «Пол» («мужчины», «женщины», «не указан»)
  • Можно посмотреть список рассылок и статус хода рассылки
  • В списке рассылок можно приостановить начатую рассылку или возобновить приостановленную
  • Можно выбирать стартовать или не стартовать рассылку сразу после её сохранения
  • Рассылка производится не сразу, а пачками по 20 писем (количество можно менять в конфиге). Для этого нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php
  • Отправленные сообщения не отображаются в вашем списке сообщений до тех пор пока пользователь не ответит на это сообщение (вам ведь важна обратная связь с пользователями?).

Для того, чтобы сообщения отправлялись нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php. У нас он запускается каждые 5ть минут:
*/5 * * * * /var/www/domain.ru/www/plugins/mailing/include/cron/send-mail.php

*http://ru.wikipedia.org/wiki/Cron

сайт.ru/mailing/ Рассылка сообщений
сайт.ru/mailing/list Список рассылок

Скачать и активировать: 2me.be/z/ls-mailing-v0.1.zip