Доработка LS, написание плагинов

Недавно запустил свой первый проект на LS, изначально CMS меня почти устраивала. Знал, что из коробки получить нужный мне функционал не реально не в одной CMS. Много лет работал с DLE, всем хороша, постоянные уязвимости и черезмерная шаблонность, извечные проблемы этой системы. Хотел было уже Drupal взять, но во время остановился прикинув бюджет и поговорив с разработчиками, которые меня сами отговаривали делать всё на Drupal. Примерно та же история была и с WP.
Так я пришёл к LS, которая меня порадовала многим и многим же разочаровала, а именно не особо большим комьюнити, малым количеством плагинов и медленным развитием системы.

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

Написание топиков

Как бы ни ругали вконтакт — ребята очень крутые. Они умеют думать и думают на несколько шагов вперед.
Я восхищаюсь их решениями, которые просты и изящны. Некоторые моменты нужно брать и копировать.

О чем идет речь?

1. Написание топика.
Обратите внимание, что у вконтакта есть один базовый элемент: текстовое поле.
К нему же можно прикрутить картиночку, песенку, видео ролик, опрос, если это необходимо.


Попробуйте набрать текст в топике и переключитесь на фотосет. У вас все сбросится. Добиться запланированого эффекта — это уже не такая простая задача.

Да, я понимаю, что это все из-за архитектуры. Но пользователи всегда выбирают простоту работы. И если мы не предложим им простоту и удобство — они уйдут.

2. Картинка.
Второй момент, на котором хочется остановиться.
Сам столкнулся с такой бедой, что некоторые пользователи, могут написать топик, но не в силах вставить в него картинку. Это были люди 20 — 30 лет. Не тупая школота. Абсолютно сознательные люди.
И ребята из вконтакта поняли и побороли эту проблему. Они просто вставляют картинку в самое начало не задавая лишних вопросов. Это достаточно эффективное решение, потому что картинка вставляется в 90% случаев в начало топика (я сужу по своему проекту).

Многообещающим был плагин «Типы топиков: TopicCCK». К сожалению, этот момент там не проработан.

3. Написать быстро.
Уже не вконтакт. Замечание или пожелание от себя. Буквально 15 минут назад захотел написать в этот блог. Пришлось запомнить точное название блога, вступить в него. Нажать кнопку «Создать», выбрать «Топик», выбрать нужный блог. Долго и сложно.
В каждом блоге должна быть кнопка «Написать в этот блог». Нажимаешь ее — и в поле «в какой блог писать» — подставился нужный блог. Берешь и пишешь. Быстро и легко.

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

Собственно, по этому вопросу пока все. Очень жду и хочу изменений. Надеюсь, что когда-нибудь livestreet все-таки станет юзерфрендли и гибкой в настройках. С удовольствием бы все это реализовал, если бы хоть что-то понимал в программировании. Удачи вам в ваших проектах!

Делаем плагин "causeedit" более красивым.

Заходим в плагин и находим два шаблона topic.form_end.tpl и topic.show_end.tpl.

Открвываем topic.form_end.tpl и заменям весь код на:


{if $aCauses}
<div class="editdate">
    {foreach from=$aCauses item=aCause name=c key=k}
		Отредактировал {$aCause.user_login} - {date_format date=$aCause.date}
		
Причина: {$aCause.text}
	{if $oUserCurrent and $oUserCurrent->isAdministrator()}
                <a href="#" onclick="deleteCause('{$iTopicId}', '{$k}', this); return false;" class="delete">{$aLang.topic_delete}</a>
        {/if}<br /><br />
	{/foreach}
	</div>
  
{/if}
<p>
    <label for="topic_cause_edit">{$aLang.plugin.causeedit.cause_title}:</label>
    <input type="text" id="topic_cause_edit" name="topic_cause_edit" value="{$_aRequest.topic_cause_edit}" class="input-text input-width-full" />
</p>



Открвываем topic.show_end.tpl и заменям весь код на:


{assign var="aCauses" value=$oTopic->getCauseArray()}
{if $aCauses}
<br />
<div class="editdate">
    {foreach from=$aCauses item=aCause name=c key=k}
		Отредактировал {$aCause.user_login} - {date_format date=$aCause.date}
		
Причина: {$aCause.text}
	{if $oUserCurrent and $oUserCurrent->isAdministrator()}
                <a href="#" onclick="deleteCause('{$iTopicId}', '{$k}', this); return false;" class="delete">{$aLang.topic_delete}</a>
    {/if}<br /><br />
	{/foreach}
	</div>
{/if}



Дальше открываем стили, заменям весь код на:


.editdate {
color: #84AE1B;
font-style: italic;
font-size: 0.9em;
text-align: right;
padding-right: 24px;
background: url("../images/editdate.png") no-repeat 100% 0;
margin-bottom: 15px;
}
.editdate .delete { color: red; }


Создаем папку images и загружаем туда картинку:

И что у меня получилось? А вот что:



Было:


Всех с наступающим!

Предложение по улучшению безопасности LS.

Никому ничего не хочу навязывать, просто пришла в голову идея и решил с вами ей поделится. Как вы поняли по заголовку, речь пойдет о безопасности нашего обще-любимого движка. На сколько я знаю существуют серьезные конторы занимающиеся проверкой безопасности и устранению всевозможных дырок и уязвимостей. Еще я знаю что стоит это не маленьких денег. Собственно идея в том чтобы «скинуться» всем порталом на такую проверку. Администрация может установить счетчий сбора пожертвований отдельно для этой цели на главной странице, типо как было на википедии.
P.S: Напоминаю что это всеголишь идея поэтому не нужно устраивать палемику, просто спокойно выскажите свое мнение.

Улучшение результатов поиска

Заметил, что в стандартном шаблоне (new) результатов поиска, при неуспешном поиске трудно повторить его заново — потому, что заново надо вбивать искомое слово в строку поиска. Вот такое юзабилити.

Ну и за пару минут докрутил шаблон:
\templates\skin\new\actions\ActionSearch\


<h1>{$aLang.search_results}: <span>{$aReq.q|escape:'html'}</span></h1>

<form action="{router page='search'}topics/" method="GET">
<input class="text" type="text" value="{$aReq.q|escape:'html'}" size=50 name="q" />
<input class="button" type="submit" value="Найти">
</form>


Пример на:
www.smsrostov.ru/search/topics/?q=%D0%BF%D0%BB%D0%B0%D0%BD%D1%88%D0%B5%D1%82%D1%8B

Суть действий, думаю, понятна.

Импрувмент с новыми топиками.

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

Можно ли сделать так, что если пользователь просмотрел все новые топики, то они больше не горели как новые?

Добавить социальности движку

Дорогие товарищи,
На днях у меня появились некоторые соображения, как добавить движку больше той самой социальности, которой часто не хватает.
1.К примеру, отображение ближайших дней рождений друзей пользователя.
2.Сейчас на сайте есть два поля, «В друзьях у:» и «Друзья:». Может быть создать запрос на дружбу который можно будет подтвердить?
3.Думаю, гостевая книга пользователя, в которой можно было бы писать поздравления, или обосновать оценку тоже не помешала бы.
4.Альбом уже был сделан Кириллом (benone)

Потом можно было бы добавить «Что ты сейчас делаешь?» т.е. некоего рода персональный статус пользователя.
Прошу сильно не пинать ) это только личные соображения как можно улучшить ЛС, добавить социальности и отойти от функционала хабры и на полноценность я не претендую.

Подписка на комментарии

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

Сейчас форма выглядит так:


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

Несколько предложений

Почта
Мне, например, кажется, что намного удобнее читать почту в виде переписок. Автор bigstreet неплохо это реализовал в своем движке. Т.е. нет папки входящие, где всем скопом собираются письма и сортируются по дате. Есть переписки. Переписка начинается после первого письма, и второе письмо — уже ответ на первое. В этом случае оно достраивается до текущей переписки, ну в что то вроде чата. Так удобней! =))

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

Предложения по улучшению

предлагаю
1)
заменить эти строки

/**
* Передан ли номер страницы
*/
if (preg_match("/^page(\d+)$/i",$this->getParam(0),$aMatch)) {
$iPage=$aMatch[1];
} else {
$iPage=1;
}
на

$iPage=(preg_match("/^page(\d+)$/i",$this->getParam(0),$aMatch))? $aMatch[1]: 1;

2)
соединить файлы config.db.php + config.table.php => config.db.php
не вижу смысла розносить эти данные

3)
могу предложить свой класс для работы с изображением