0.00
Рейтинг
0.73
Сила

Подсветка кода средствами JavaScript

В новой версии LiveStreet 0.3 было решено отказаться от использования Geshi для подсветки исходного кода в публикациях. Теперь эта функция переложена на клиентов с помощью JavaScript.
Это позволит избежать «мусора» в БД и более корректно обрабатывать вставку кода.
Пример:
/**
	 * Парсинг текста с помощью Jevix
	 *
	 * @param string $sText
	 * @param array $aError
	 * @return string
	 */
	public function JevixParser($sText,&$aError=null) {
		$sResult=$this->oJevix->parse($sText,$aError);
		return $sResult;
	}


Более «живой» пример работы можно посмотреть здесь — new.livestreet.ru/blog/909.html

Приветственный мессадж для новых пользователей

Чтобы Ваш сайт засверкал и засиял доброжелательностью и человеколюбием, вы можете организовать рассылку приветсвенного сообщения в инбокс (private message) каждому вновь зарегистрированному пользователю, где можете написать все что хотите, от радостного «Привет %username%!» до маленького экскурса по всем фичам и секретам работы сайта.

Хак сделан LS мафией (Benone & Lora GT) :)
Демо смотрите на "Новой Музыке".
Читать дальше →

Подборка MooTools плагинов

Поиски плагинов для mootolls продолжатся уже второй день.
Раз ort выбрал эту библиотеку, то нужно собрать как можно больше дополнений, чтобы в перспективе было легко найти то или иное решение…

Собственно список моих находок с кратким описанием и примерами.

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

Рейтинг - Профиль, Комментарий, Блог, Статья

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

Суть: в яве я не бум, бум поэтому вопрос. Как сделать голосования — Профиль, Комментарий, Блог, Статья в старом шаблоне таким как у нового? Нужно ли менять яву? Кто то делал уже?

Пример кода в старом шаблоне:

<span class="userinfo_karma">
<nobr>
<span id="user_vote_self_3" style="display: none;" >
<img src="http://localhost/templates/skin/habra/img/vote_up_gray.gif" width="16" height="16" alt="нравится" title="нельзя голосовать за себя" />
<span id="user_rating_self_3" style="color: #008000;">0.00</span>
<img src="http://localhost/templates/skin/habra/img/vote_down_gray.gif" width="16" height="16" alt="не нравится" title="нельзя голосовать за себя" />
</span>
<span id="user_vote_anonim_3" style="display: none;" >
<img src="http://localhost/templates/skin/habra/img/vote_up_gray.gif" width="16" height="16" alt="нравится" title="для голосования необходимо авторизоваться" />
<span id="user_rating_anonim_3" style="color: #008000;">0.00</span>
<img src="http://localhost/templates/skin/habra/img/vote_down_gray.gif" width="16" height="16" alt="не нравится" title="для голосования необходимо авторизоваться" />
</span>
<span id="user_vote_is_vote_down_3" style="display: none;" >
<img src="http://localhost/templates/skin/habra/img/vote_up_gray.gif" width="16" height="16" alt="нравится" title="вы уже голосовали за этого пользователя" />
<span id="user_rating_is_vote_down_3" style="color: #008000;">0.00</span>
<img src="http://localhost/templates/skin/habra/img/vote_down.gif" width="16" height="16" alt="не нравится" title="вы уже голосовали за этого пользователя" />
</span>
<span id="user_vote_is_vote_up_3" style="display: none;" >
<img src="http://localhost/templates/skin/habra/img/vote_up.gif" width="16" height="16" alt="нравится" title="вы уже голосовали за этого пользователя" />
<span id="user_rating_is_vote_up_3" style="color: #008000;">0.00</span>
<img src="http://localhost/templates/skin/habra/img/vote_down_gray.gif" width="16" height="16" alt="не нравится" title="вы уже голосовали за этого пользователя" />
</span>
<span id="user_vote_ok_3" style="display: none;" >
<a href="#" onclick="ajaxVoteUser(3,1); return false;"><img src="http://localhost/templates/skin/habra/img/vote_up.gif" width="16" height="16" alt="нравится" title="нравится" /></a>
<span id="user_rating_ok_3" style="color: #008000;">0.00</span>
<a href="#" onclick="ajaxVoteUser(3,-1); return false;"><img src="http://localhost/templates/skin/habra/img/vote_down.gif" width="16" height="16" alt="не нравится" title="не нравится" /></a>
</span>


Пример кода в новом шаблоне:

<div class="voting positive guest ">
<div class="clear">Рейтинг</div>
					
<a href="#" class="plus" onclick="lsVote.vote(1,this,1,'user'); return false;"></a>
<div class="total">0.00</div>
<a href="#" class="minus" onclick="lsVote.vote(1,this,-1,'user'); return false;"></a>
					
<div class="clear"></div>
<div class="text">голосов:</div><div class="count">0</div>
</div>

Добавляем ссылку на пользователя.

Добавим в комментариях к записи возможность оставить ссылку на профиль любого пользователя.



1. В файле /classes/modules/sys_text/Test.class.php



В строке (51):

		$this->oJevix->cfgAllowTags(array('cut','a', 'img', 'i', 'b', 'u', 's', 'video', 'em',  'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'sub', 'acronym', 'h4', 'h5', 'h6', 'br', 'hr', 'pre', 'code', 'object', 'param', 'embed'));


добавляем в конце:


, 'user'


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

Доработка RSS потока

В RSS до cut

Почти сразу, как поставил движок, передо мной встал вопрос: как отдавать в rss долько до кут? Не хотелось мне отдавать полные топики в ленту, т.к. материалы можно почитать на сайте, а школьникам лентяям отрезать возможность что-то полезное оттуда грабить.

Теперь это решение кажется уже довольно простым. Достаточно в экшене ActionRss.class.php в одной из функций (например RssGood) изменить одну строку на:

$item['description']=$oTopic->getTextShort();


Последние материалы блога в rss

Тут же вылезла проблема, что прочитав анонс пользователю ну совершенно некуда кликнуть. Что согласитесь — форменный бардак. Решил, что нужны «читать далее» и «последние посты топика». Теперь в rss канале футер анонса выглядит так:



Тут порядок такой. В том же файле в той же функции вставлем после:

foreach ($aTopics as $oTopic){


Этот код:

$aFooter="";
$aMyBlogId=$oTopic->getBlogId();
$aMyResult=$this->Topic_GetTopicsByBlogGood($this->Blog_GetBlogById($aMyBlogId),0,1,3);
$aMyTopics=$aMyResult['collection'];
foreach ($aMyTopics as $oMyTopic){
  $aFooter=$aFooter.'<li><a href='.$oTopic->getUrl().'>'.$oMyTopic->getTitle().'</a></li>';
}


А ту переменную, что мы уже меняли выше, заменяем на:

$item['description']=$oTopic->getTextShort().'

<a href='.$oTopic->getUrl().'>читать полностью</a>

<b>Последнее из блога:</b> <a href='.$oTopic->getBlogUrlFull().'>'.$oTopic->getBlogTitle().'</a><br /><br /><ul>'.$aFooter.'</ul>';


Вот собственно и все. У кого есть мысли по поводу развития темы дополнений в rss, пишите — обсудим.

Рабочий пример как обычно можно увидеть на TechFuture RSS — в данном случае в rss хороших топиков.

UPD: Исправлены ошибки, дополнен код.

Последние топики автора (доработка блока "Данные автора топика")

Первая статья — Блок с данными автора на странице топика

Одним из пунктов, что я себе ставил задумывая этот блок — это список последних постов автора. Собственно сегодня тот день, когда это реализовалось.


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

Ссылка Новые, Выбор вида Топа

1. Её стоит выводить, только если есть контент а если нет то и не выводить вовсе. В шаблоне нужно добавить проверку {if ($iCountTopicsNew)>0} новые {/if})

2. То же самое касается и мест, таких как, например вывод топа топиков(комментов) за 7 дней 30 дней… если их нет то и выбирать не нужно давать

UPD
Решение 2-го открываем
\classes\actions\ActionTop.class.php
добавляем в EventTopic() строки


/**
* Получаем число топиков за каждый из периодов
*/			

$sDate24h=date("Y-m-d H:00:00",time()-$this->GetTimeByPeriod('24h'));
		$aTopics24h=$this->Topic_GetTopicsRatingByDate($sDate24h,1);

$sDate7d=date("Y-m-d H:00:00",time()-$this->GetTimeByPeriod('7d'));
		$aTopics7d=$this->Topic_GetTopicsRatingByDate($sDate7d,1);
		
$sDate30d=date("Y-m-d H:00:00",time()-$this->GetTimeByPeriod('30d'));
		$aTopics30d=$this->Topic_GetTopicsRatingByDate($sDate30d,1);

$aCountTopics[0] = count($aTopics24h);
$aCountTopics[1] = count($aTopics7d);
$aCountTopics[2] = count($aTopics30d);

/**
* Загружаем в шаблон
*/			
$this->Viewer_Assign('aCountTopics',$aCountTopics);

Добавляем в шаблон проверку(на примере 24 часов )

{if $aCountTopics[0]!=0}
<a href="">{$aLang.blog_menu_top_period_24h}</a>
{/if}

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

связка с картой

3. навигация по блогам через google.maps api или yandex map api

Есть идея выводить сообщения пользователей на карту, это будет удобно для некоторых проектов.

Реализовать возможность привязки сообщения к определенному месту на карте,

Вывод значков и кратких описаний сообщений из опред блога на карту,

Вывод сообщений пользователя на карту из личного блога.

Фильтры: тока новые сообщения, за последний месяц, год.

кто реализует ???