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

Хак: Ограничение доступа к части топика по рейтингу

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

<rating min="2">Виден пользователям с рейтингом большим или равным 2.</rating>

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

Игнорирование сжатия изображений (решено)

Добрый день!
Случилось следующее: изображения в топик были вставлены не через форму загрузки, а просто (насколько я понял) был скопирован html-код этих фотографий с сайта ljplus.ru. Там для изображений прописаны параметры 'width' и 'height'. В конфиге стоит сжатие изображений до 500px по ширине. Но в загруженных изображениях размеры указаны как 800x600 или 640x480 и т.п. В результате они не ужались до нужных 500px и выходят за размеры топика. Как я понимаю, эти параметры перебивают настройки конфига? Можно ли сделать обратное? Посмотреть можно здесь: http://versta.train-team.org/blog/photo/106.html

Доработка хака «Выпадающее меню стран и городов»

Переписал код ajax-запросов. Теперь нет ajax-ошибки. И есть кеш запросов. Работать стало немного быстрее вроде как… Но я сравнивал тока по ощущениям, а они могут быть обманчивы.
Сделано 2 варианта. Для 0.3.1 и для последней SVN. Смотрим, устанавливаем, проверяем, комментим.
Читать дальше →

Закрепление топика

1. Сделать запрос в базу (для создания новой строки topic_main)
ALTER TABLE prefix_topic ADD topic_main tinyint(1) default '0'

2. Открыть файл classes/modules/topic/entity/Topic.entity.class.php
а) После:
public function getTitle() {
        return $this->_aData['topic_title'];
    }
Добавить:
public function getMain() {
        return $this->_aData['topic_main'];
    }

б) В самом конце, перед
}
?>
Добавить:
public function setMain($data) {
        $this->_aData['topic_main']=$data;
    }


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

Новые функции редактора текста и короткий FAQ

Начиная с 617 ревизии SVN стандартный редактор текста Livestreet обзавелся новыми функциями. Теперь есть возможность превратить выделенный текст в заголовок h4, h5 или h6, а также в один клик оформить нумерованный или маркированный список.

Для полноценного использования этого функционала были исправлены старые баги парсера — добавление лишних отступов строк между пунктами списка и после заголовков (сделанные фиксы касаются external-библиотеки Jevix, а не только ядра).

Ввиду большого числа писем о некорректной работе этого редактора в версии 0.3.1 — под катом правила по корректному переносу.


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

Создание галереи и выравнивание изображений

Хочу чтобы картинки в LS вставлялись более удобно и была возможность их просматривать как галерею. Это просто необходимо для создания постов с галереями. В поисках решения для галереи наткнулся на проект
JonDesign's SmoothGallery
Это галерея на MooTools, которой всего то и нужно добавить скрипт в шапку, да сформировать html код вроде
<div id="myGallery">
<div class="imageElement">
<h3>Item 1 Title</h3>
<p>Item 1 Description</p>
<a href="mypage1.html" title="open image" class="open"></a>
<img src="images/brugges2006/1.jpg" class="full" />
<img src="images/brugges2006/1-mini.jpg" class="thumbnail" />
</div>
<div class="imageElement">
<h3>Item 2 Title</h3>
<p>Item 2 Description</p>
<a href="mypage2.html" title="open image" class="open"></a>
<img src="images/brugges2006/2.jpg" class="full" />
<img src="images/brugges2006/2-mini.jpg" class="thumbnail" />
</div>
</div> 

Подробней об установке

Ребят, разработчики, кто может интегрировать ее для вставки в посты? Нужно просто добавить новую кнопку для добавления галереи и чтобы она закачивала картинки, использовала встроенный в этот скрипт генератор тумбов для миниатюр и выдавала данный html.
Как вариант — slimbox. Там через LS надо будет делать миниатюрки.

5 часов ждать не хочу, так что публикую тут одну доработку.
Выравнивание по-центру несправедливо не было добавлено. Исправляем.
1 Открываем в шаблоне window_load_img.tpl
Добавляем после
<option value="right">{$aLang.uploadimg_align_right}</option>

строку
<option value="center">{$aLang.uploadimg_align_center}</option>


2 Открываем /engine/modules/image/Image.class.php
Меняем
if (isset($aParams['align']) and in_array($aParams['align'],array('left','right'))) {
			$sText.=' align="'.htmlspecialchars($aParams['align']).'" ';

На
if (isset($aParams['align']) and in_array($aParams['align'],array('left','right','center'))) {
			$sText.=' class="'.htmlspecialchars($aParams['align']).'" ';		


3 В файле
После
'uploadimg_align_right' => 'справа',

Побавить
'uploadimg_align_center' => 'по центру',


4 В css шаблона добавляем классы
.center {margin:0 auto !important;display:block;}
.left {float:left;}
.right {float:right;}


5 А теперь небольшое вмешательство в движок. Нужно настроить парсинг текста, так как стандартно тег class запрещен, но мы сделаем возможность использования его вместо align
Откроем
/engine/modules/text/Text.class.php

Заменим
'align' => array('right', 'left', 'center'),

На
'class' => array('right', 'left', 'center'),

Хак «Редактирование комментариев»

Возможность редактирования комментариев пользователей(для админов) + возможность редактирования комментариев пользователем в течении определенного времени, а то сильно раздражает когда ошибку допустил или что-то глуппое ляпнул — а изменить уже никак :(
В общем пользуемся на здоровье :)
Как обычно пример можете посмотреть на: ecovoice.ru (просьба не флудить и писать осмысленно)
Линк на модуль: livestreet.ru/addons/105/ (пока на модерации)

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

похожие темы через sphinx

Дело, было как обычно вечером :) И лежало на мне уже давно задание — добавить «похожие темы» к проекту, но ввиду приоритетов откладывалось оно на потом постоянно. Полазил по LS, нашел уже готовый бесплатный модуль: livestreet.ru/blog/2053.html
Но незадача :( нужен fulltext для InnoDB… уже хотел похерить задание и отложить опять до лучших времен, но что-то дернуло меня все-таки покопаться чуток. А именно, вспомнил я про уже готовый fulltext поиск реализованный на sphinx'e в дефолтной сборке LS. Там как раз есть тайтл + текст, так что впринципе больше и не надо :)
В общем, пришлось чуток модифицировать имеющийся модуль + добавить ф-цию в Sphinx.class.php
К действиям:
1) берем имеющийся модуль
2) удаляем папку и ее содержимое /classes/modules/similartopics/mapper
3) заменяем полностью содержимое файла(/classes/modules/similartopics/SimilarTopics.class.php) на:
<?php
##### [hack] similar_topics_sphinx #####
class LsSimilarTopics extends Module {
	public function Init() {
	}
	public function GetSimilarTopics($oTopic){
	    $sTitleTags=$oTopic->getTags();
	    $aTopics=array();
	    $data=$this->Sphinx_FindSimilarTopics($sTitleTags,SIMILARTOPICS_COUNT+1);
	    if(is_array($data['matches']) && sizeof($data['matches'])>0){
		foreach($data['matches'] as $k=>$v) if($k!=$oTopic->getId()) $aTopics[]=$this->Topic_GetTopicById($k);
		return $aTopics;
	    }else return false;
	}
}
##### [hack] similar_topics_sphinx #####
?>

4) добавляем в класс(classes/modules/sphinx/Sphinx.class.php):
        ##### [hack] SimilarTopics #####
        public function FindSimilarTopics($sTerms,$iLimit){
                $cacheKey=SEARCH_ENTITY_PREFIX."similartopics_{$sTerms}_{$iLimit}";
                if(false===($data=$this->Cache_Get($cacheKey))){
                        $this->oSphinx->SetMatchMode(SPH_MATCH_ANY);
                        $this->oSphinx->SetLimits(0,$iLimit);

                        if(!is_array($data=$this->oSphinx->Query($sTerms,SEARCH_ENTITY_PREFIX.'topicsIndex'))) return FALSE;

                        # no results = no cache
                        if($data['total']>0) $this->Cache_Set($data,$cacheKey,array(),60*15);
                }
                return $data;
        }
        ##### [hack] SimilarTopics #####

лично я оставил поиск по тэгам, хотя — можете добавить и по тайтлу, как было первоначально в плагине
5) все, радуемся жизни :)

п.с. должен быть настроен уже sphinx и работать поиск через sphinx
п.п.с. делаем на свой страх и риск, так что не забываем о том что надо бэкапить файлы ;)

Похожие топики на sphinx или we love InnoDB )

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

1 вопрос: Если найдётся человек который захочет взяться за разработку, пусть оговорит цену ниже.

1 момент: С деньгами напряжно, поэтому если цена будет большой, а желающих скинуться на разработку не будет, то заказ отменяется и буду разбираться сам.

UPDATE
Итак. Найден исполнитель. Это kachayev.

Пару моментов и особенностей:
а) для движка 0.4;
б) список похожих постов не храниться в базе, а запрашивается на лету (чтобы учитывались новые записи);
в) блок формируется под статьей в ответ на ajax-запрос, будет удобнее для пользователя, но для целей СЕО не подходит.
г) «срочной» реализации не будет. Т.е. будем постепенно «разгонять» систему, подбирая варианты. Может 2-3 недели уйдет на эксперименты.

Оплата: Полностью модуль будет стоить 125$. Таким образом, чем больше людей наберём — тем меньше с каждого индивидуума возьмём. Хотя, я считаю, цена и так очень и очень небольшая…

P.S. Ещё раз отпишите, кто согласен со всеми условиями и точно будет «скидываться» на модуль. Я буду постепенно вносить вас в список:
1) Собственно я.
2) aisico
3) Mmka
4) Анонимный участник №1
5) diGreez
6) Fanta
7) potboiler
8) _et
9) Daaa
10) g3n0m

Модуль "записки админа" + блок (бесплатный модуль)

Делать было нечего, дело было ночью…
Вот сделал вот такой модуль-блок…

Блок выводиться там где и все блоки (его необходимо подклчить или менеджером блоков или руками )
руками делаем так:
идем в classes/actions и поочереди открываем экшены в которых мы хотим видеть нах блок.
для главной например делаем так:
открываем classes/actions/ActionIndex.class.php
ищем
public function Init() {		
		$this->Viewer_AddBlocks('right',array('baner','stream','tags','blogs'));


и добавляем в нужное место наш блок:
public function Init() {		
		$this->Viewer_AddBlocks('right',array('baner','stream','tags','blogs','lsads'));
'lsads' — название блока.

далее заходим под админом и открываем твой_сайт.ру/lsads

ну там уже все понятно.

В блок выводяться последние три записи. настройки пока не выносил. И вобще ещё незнаю во что буду растить этот модуль… думаю вы насоветуете? =)

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

После модерации брать тут — livestreet.ru/addons/97/

UPD in 1.1:
1. Записи добавляются и выводятся с датой.
2. Добавлено поле под ссылку на полную новость (выводиться если заполнено поле ссылка)
3. Заголовок блока выводиться если определён в ленг файле (если заголовок ненужен просто удалить его в ленг файле)

Благодарности и стимуляторы принимаются на WebMoney — R281184606654 и Z936826414488

P.S.
Также готов рассматривать личные доделки модуля для желающих за вознаграждение.
Также проведу работы по установке, настройке и тд (всё для ЛС) за вознаграждение.
Настрою vds\vps (Ubuntu Server only) и тд.
Также не забываем про модуль ИмпортРСС