+1.42
Рейтинг
0.62
Сила

Олег

всплывающая панель "share"


Кнопки для добавления топиков в соц.сети — нужная вещь. Вот только официальные кнопки сервисов довольно крупные и все разного размера, а самое неприятное это то, что скрипты кнопок иногда тормозят сайт. Поэтому я решил не только использовать «свои» кнопки, но и спрятать их под одну ссылку сэкономив место. Возможно, этот быстрохак пригодится кому то и в других целях, главное включить фантазию.
Итак делюсь:

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

Как отключить Jevix на «статичных страницах»? (РЕШЕНО)

Не могу понять как/где можно отключить обработчик Jevix на «статичных страницах»

Вроде всё посмотрел, но так и не догадался где нужную кнопку нажать.

Хотя я разобрался с Jevix-ом который обрабатывает «топики»…

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

Предлагаю обозначить денежный спрос на плагины

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

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

С моей стороны:
1. Каталог 0.4.2 — 1500р.
2. Галерея с разбиением фотографий альбома на страницы, выбором числа фотографий на странице и выводом блока с самым популярным (по рейтингу) фото дня/недели/месяца — 3000р.
3. Редактирование комментариев в 0.4.2 — 1000р.
4. Импорт RSS в выбранный блог — 500р.
5. Возможность исключить выбранный блог из основной ленты постов, прямого эфира (доступность только при прямом открытии блога) — 500р.

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

Форматирование дат (На сайте: 1 год 5 месяцев 6 дней )

Хочу поделится хаком, как выводить дату в таком формате. Для этого необходимо в файл \engine\modules\viewer\plugs\function.date_format.php в function smarty_function_date_format вставить:

if(isset($aParams['day_back'])) {
		require_once('modifier.declension.php');
		$iTimeDelta = round((time()- $iDate)/(60*60*24));
		$year=floor($iTimeDelta/365);
		$mouth=floor(($iTimeDelta%365)/30);
		$day=($iTimeDelta%365)%30;
		$r = "";
		if($year>0) $r = smarty_modifier_declension(
						$year,
						$oEngine->Lang_Get('date_year_back',array('year'=>$year)),
						$oEngine->Lang_GetLang()
					);
		if($mouth>0) $r.= smarty_modifier_declension(
						$mouth,
						$oEngine->Lang_Get('date_mouth_back',array('mouth'=>$mouth)),
						$oEngine->Lang_GetLang()
					); 	
		if($day>0)	$r.= smarty_modifier_declension(
						$day,
						$oEngine->Lang_Get('date_day_back',array('day'=>$day)),
						$oEngine->Lang_GetLang()
					);	
		if($r!=""){
			return $r;
		}
		else return $oEngine->Lang_Get('date_day_back_less');
			
		
	}

В файл \templates\language\russian.php

'date_day_back' => '%%day%% день; %%day%% дня; %%day%% дней',
'date_mouth_back' => '%%mouth%% месяц; %%mouth%% месяца; %%mouth%% месяцев',
'date_year_back' => '%%year%% год; %%year%% года; %%year%% лет',

И при выводе даты прописать {date_format date=$oUserProfile->getDateRegister() day_back=«1»}

Проблемка при установке livestreet в поддиректорию

Прописал в конфиге:

$config['path']['root']['web']        = 'http://'.$_SERVER['HTTP_HOST'].'/forum';     // полный WEB адрес сайта
$config['path']['root']['server']     = $_SERVER['DOCUMENT_ROOT'].'/forum';  


Эффект при заходе на страницу localhost/forum/:

Warning: require_once(S:\home\localhost\www/engine/classes/Engine.class.php) [function.require-once]: failed to open stream: No such file or directory in S:\home\localhost\www\forum\index.php on line 28

Fatal error: require_once() [function.require]: Failed opening required 'S:\home\localhost\www/engine/classes/Engine.class.php' (include_path='.;/usr/local/php5/PEAR;S:\home\localhost\www\forum') in S:\home\localhost\www\forum\index.php on line 28

Где-то что-то нужно еще поправить?

Логины на кириллице

Возникла потребность сделать возможность пользователям обзываться по-русски.
Казалось бы, UTF-8, все дела — но нет: то ли из-за потенциальной возможности сделать каждому по поддомену, то ли еще почему-то, логины можно делать только латиницей.

Мне поддомены не нужны, поэтому вот решение:
В файле /classes/actions/ActionProfile.class.php в функции RegisterEvent дополняем в регэкспах \w сочетанием \p{L}
$this->AddEventPreg('/^[\w\p{L}\-\_]+$/i','/^(whois)?$/i','EventWhois');				
$this->AddEventPreg('/^[\w\p{L}\-\_]+$/i','/^favourites$/i','/^comments$/i','/^(page(\d+))?$/i','EventFavouriteComments');			
$this->AddEventPreg('/^[\w\p{L}\-\_]+$/i','/^favourites$/i','/^(page(\d+))?$/i','EventFavourite');

\w — любой строковый символ, но не юникодовский (и не кириллица)
\p{L} — любая буква юникода, конструкции друг друга отлично дополняют.

Следующий этап: правка функции проверки логина на валидность.
Находится она в файле /engine/includes/function.php и обзывается func_check()
Там тоже регулярные выражения, которые правим аналогично предыдущему файлу.

Во время тестирования регистрации я столкнулся с другим глюком: логин передавался в cp1251, а обрабатывался в юникоде. Конечно, валидатор его не понимал! Для этого лезем в файл /classes/actions/ActionRegistration.class.php и правим там функцию EventIndex(), переписав проверку логина так:
/**
 * Проверка логина
 */
$utf8 = false;
if (!func_check(getRequest('login'),'login',3,30)) {
if (!func_check(iconv('windows-1251', 'utf-8', getRequest('login')),'login',3,30)) {
	$this->Message_AddError($this->Lang_Get('registration_login_error'),$this->Lang_Get('error'));
	$bError=true; // Маленький обходной маневр для поддержки кириллицы в логинах
	} else $_REQUEST['login'] = iconv('windows-1251', 'utf-8', getRequest('login'));
}

В случае, если проверка логина провалилась, мы его проверяем еще раз в UTF. Если проверка удалась, то в _REQUEST меняем login из cp1251 в utf-8, чтоб потом не заморачиваться.

В общем, теперь можно наслаждаться кириллическими именами пользователя. И заводить тему в FAQ'е под названием «Не могу войти»;)