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

Denis Khomusyak

Бесплатный шаблон "Modus"

12 фото
Главная в стиле линдинг
image
Описание

Адаптивный шаблон для LiveStreet, основан на 12-и колоночной сетке. Верстался с нуля. Главная страница в стиле «линдинг» с возможностью перехода в дефолтный LS. 2 вида категории и люди, 2 слайдера с 5 темами, новый профиль, 5 видов топиков с 10 эффектами, фотосет слайдером.

Все описать наверно не получится. Главное на что можно обратить внимание ниже.


Показать все 12 фото →

Кнопка с меняющейся по клику иконкой (bootstrap)

Имеется кнопка подписки/отписки в профиле пользователя с иконкой:
<li class="follow">
    <a href="#" onclick="ls.user.followToggle(this, {$oUserProfile->getId()}); return false;" class="btn btn-xs btn-default">
        <i class="icon{if $oUserProfile->isFollow()} icon-minus{else} icon-plus{/if}></i>{if $oUserProfile->isFollow()} {$aLang.profile_user_unfollow}{else} {$aLang.profile_user_follow}{/if}
    </a>
</li>


Чуть выше прогружаютя текстовки:
<script>
    jQuery(function($){
        ls.lang.load({lang_load name="profile_user_unfollow,profile_user_follow"});
    });
</script>


Стоит задача, чтобы иконка менялась в соответствие с текущим статусом подписки.
Получается, но при подписке иконка исчезает и появляется только при перезагрузке страницы. Т.е. if-ы в классах иконки сразу не отрабатывают.

При подписке для li.follow a задется класс followed.
Это делает скрипт из user.js:
this.followToggle = function(obj, iUserId) {
    if ($(obj).hasClass('followed')) {
        ls.stream.unsubscribe(iUserId);
        $(obj).toggleClass('followed').text(ls.lang.get('profile_user_follow'));
    } else {
        ls.stream.subscribe(iUserId);
        $(obj).toggleClass('followed').text(ls.lang.get('profile_user_unfollow'));
    }
    return false;
};

Попробовал задать для li.follow a background-image с нужными координатами в спрайте, а для li.follow a.followed соответствующий background-position. Все работает как надо. Но «рушиться» bootstrap-овская кнопка и надо верстать вручную.

Вопрос: Что необходимо дописать в скрипт выше, чтобы иконке задавался соответствующий класс (icon-plus и icon-minus)?

Выносим обработку евентов в отдельный файл

В транковой версии на github.com появилась возможность выносить объемную обработку евентов из экшена в отдельные файлы.

Эти файлы размещаются в каталоге /classes/actions/[action]/Event[Name].class.php, где [action] — это название экшена, которому принадлежит евент, [Name] — название внешнего обработчика евента.

Рассмотрим более подробно.
Пусть у нас будет экшен ActionBlog.class.php:
<?php

class ActionBlog extends Action {

	public $oUserCurrent=null;

	public function Init() {
		$this->oUserCurrent=$this->User_GetUserCurrent();

		$this->SetDefaultEvent('index');
	}

	/**
	 * Регистрируем евенты
	 *
	 */
	protected function RegisterEvent() {
		/**
		 * Регистрируем внешние обработчики евентов
		 */
		$this->RegisterEventExternal('Topic','ActionBlog_EventTopic');

		$this->AddEvent('index','EventIndex');
		$this->AddEventPreg('/^topic$/i','/^(\d+)\.html$/i','/^$/i','Topic::EventShowTopic');
		$this->AddEventPreg('/^topic$/i','/^list$/i','/^$/i','Topic::EventList');
	}


	protected function EventIndex() {
		/**
		 * Устанавливаем шаблон для вывода
		 */
		$this->SetTemplateAction('index');
	}
}
?>

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

func_check

Нашел прекрасную функцию))
скажите что за параметры такие $iMin=1,$iMax=100?

function func_check($sValue,$sParam,$iMin=1,$iMax=100) {
	switch($sParam)
	{
		case 'id': if (preg_match("/^\d{".$iMin.','.$iMax."}$/",$sValue)){ return true; } break;				
		case 'float': if (preg_match("/^[\-]?\d+[\.]?\d*$/",$sValue)){ return true; } break;	
		case 'mail': if (preg_match("/^[\da-z\_\-\.]+@[\da-z_\-\.]+\.[a-z]{2,5}$/i",$sValue)){ return true; } break;
		case 'login': if (preg_match("/^[\da-z\_\-]{".$iMin.','.$iMax."}$/i",$sValue)){ return true; } break;
		case 'md5': if (preg_match("/^[\da-z]{32}$/i",$sValue)){ return true; } break;
		case 'password': if (mb_strlen($sValue,'UTF-8')>=$iMin){ return true; } break;
		case 'text': if (mb_strlen($sValue,'UTF-8')>=$iMin and mb_strlen($sValue,'UTF-8')<=$iMax){ return true; } break;
		default: 
			return false;
	}
	return false;
}