mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-05-21 18:28:17 +03:00
Оптимизация блогов
This commit is contained in:
parent
845f83a983
commit
211a492dcd
|
@ -683,14 +683,14 @@ class ActionAjax extends Action {
|
|||
* Голосует за свой блог?
|
||||
*/
|
||||
if ($oBlog->getOwnerId()==$this->oUserCurrent->getId()) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_vote_error_self'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.vote.notices.error_self'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Уже голосовал?
|
||||
*/
|
||||
if ($oBlogVote=$this->Vote_GetVote($oBlog->getId(),'blog',$this->oUserCurrent->getId())) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_vote_error_already'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.vote.notices.error_already'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
}
|
||||
/**
|
||||
|
@ -712,7 +712,7 @@ class ActionAjax extends Action {
|
|||
if ($this->Vote_AddVote($oBlogVote) and $this->Blog_UpdateBlog($oBlog)) {
|
||||
$this->Viewer_AssignAjax('iCountVote',$oBlog->getCountVote());
|
||||
$this->Viewer_AssignAjax('iRating',$oBlog->getRating());
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_vote_ok'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('vote.notices.success'),$this->Lang_Get('attention'));
|
||||
/**
|
||||
* Добавляем событие в ленту
|
||||
*/
|
||||
|
@ -727,13 +727,13 @@ class ActionAjax extends Action {
|
|||
}
|
||||
break;
|
||||
case ModuleACL::CAN_VOTE_BLOG_ERROR_CLOSE:
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_vote_error_close'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.vote.notices.error_close'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
break;
|
||||
|
||||
default:
|
||||
case ModuleACL::CAN_VOTE_BLOG_FALSE:
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_vote_error_acl'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.vote.notices.error_acl'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
@ -1292,7 +1292,7 @@ class ActionAjax extends Action {
|
|||
}
|
||||
$this->Viewer_AssignAjax('aBlogs',$aResult);
|
||||
} else {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_by_category_empty'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.categories.empty'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ class ActionBlog extends Action {
|
|||
* Загружаем в шаблон JS текстовки
|
||||
*/
|
||||
$this->Lang_AddLangJs(array(
|
||||
'blog_join','blog_leave'
|
||||
'blog.join.join','blog.join.leave'
|
||||
));
|
||||
}
|
||||
/**
|
||||
|
@ -179,7 +179,7 @@ class ActionBlog extends Action {
|
|||
/**
|
||||
* Устанавливаем title страницы
|
||||
*/
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_create'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog.add.title'));
|
||||
/**
|
||||
* Меню
|
||||
*/
|
||||
|
@ -196,7 +196,7 @@ class ActionBlog extends Action {
|
|||
* Проверяем хватает ли рейтинга юзеру чтоб создать блог
|
||||
*/
|
||||
if (!$this->ACL_CanCreateBlog($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_create_acl'),$this->Lang_Get('error'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.add.alerts.acl'),$this->Lang_Get('error'));
|
||||
return Router::Action('error');
|
||||
}
|
||||
$this->Hook_Run('blog_add_show');
|
||||
|
@ -235,7 +235,7 @@ class ActionBlog extends Action {
|
|||
if ($sPath=$this->Blog_UploadBlogAvatar($_FILES['avatar'],$oBlog)) {
|
||||
$oBlog->setAvatar($sPath);
|
||||
} else {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_avatar_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.avatar.error'),$this->Lang_Get('error'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -322,7 +322,7 @@ class ActionBlog extends Action {
|
|||
* Устанавливаем title страницы
|
||||
*/
|
||||
$this->Viewer_AddHtmlTitle($oBlog->getTitle());
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_edit'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('common.edit'));
|
||||
|
||||
$this->Viewer_Assign('oBlogEdit',$oBlog);
|
||||
/**
|
||||
|
@ -375,7 +375,7 @@ class ActionBlog extends Action {
|
|||
if ($sPath=$this->Blog_UploadBlogAvatar($_FILES['avatar'],$oBlog)) {
|
||||
$oBlog->setAvatar($sPath);
|
||||
} else {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_avatar_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.avatar.error'),$this->Lang_Get('error'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -494,7 +494,7 @@ class ActionBlog extends Action {
|
|||
$oBlogUser->setUserRole(ModuleBlog::BLOG_USER_ROLE_GUEST);
|
||||
}
|
||||
$this->Blog_UpdateRelationBlogUser($oBlogUser);
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_admin_users_submit_ok'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.admin.alerts.submit_success'));
|
||||
}
|
||||
$this->Blog_UpdateBlog($oBlog);
|
||||
}
|
||||
|
@ -524,7 +524,7 @@ class ActionBlog extends Action {
|
|||
* Устанавливаем title страницы
|
||||
*/
|
||||
$this->Viewer_AddHtmlTitle($oBlog->getTitle());
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_admin'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog.admin.title'));
|
||||
|
||||
$this->Viewer_Assign('oBlogEdit',$oBlog);
|
||||
$this->Viewer_Assign('aBlogUsers',$aBlogUsers);
|
||||
|
@ -563,7 +563,7 @@ class ActionBlog extends Action {
|
|||
* Проверяем есть ли название блога
|
||||
*/
|
||||
if (!func_check(getRequestStr('blog_title'),'text',2,200)) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_title_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.title.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
} else {
|
||||
/**
|
||||
|
@ -571,7 +571,7 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
if ($oBlogExists=$this->Blog_GetBlogByTitle(getRequestStr('blog_title'))) {
|
||||
if (!$oBlog or $oBlog->getId()!=$oBlogExists->getId()) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_title_error_unique'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.title.error_unique'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
}
|
||||
|
@ -584,7 +584,7 @@ class ActionBlog extends Action {
|
|||
$blogUrl=preg_replace("/\s+/",'_',getRequestStr('blog_url'));
|
||||
$_REQUEST['blog_url']=$blogUrl;
|
||||
if (!func_check(getRequestStr('blog_url'),'login',2,50)) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_url_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.url.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
}
|
||||
|
@ -592,7 +592,7 @@ class ActionBlog extends Action {
|
|||
* Проверяем на счет плохих УРЛов
|
||||
*/
|
||||
if (in_array(getRequestStr('blog_url'),$this->aBadBlogUrl)) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_url_error_badword').' '.join(',',$this->aBadBlogUrl),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.url.error_badword').' '.join(',',$this->aBadBlogUrl),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
|
@ -600,7 +600,7 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
if ($oBlogExists=$this->Blog_GetBlogByUrl(getRequestStr('blog_url'))) {
|
||||
if (!$oBlog or $oBlog->getId()!=$oBlogExists->getId()) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_url_error_unique'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.url.error_unique'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
}
|
||||
|
@ -608,21 +608,21 @@ class ActionBlog extends Action {
|
|||
* Проверяем есть ли описание блога
|
||||
*/
|
||||
if (!func_check(getRequestStr('blog_description'),'text',10,3000)) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_description_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.description.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
* Проверяем доступные типы блога для создания
|
||||
*/
|
||||
if (!$this->Blog_IsAllowBlogType(getRequestStr('blog_type'))) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_type_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.type.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
* Преобразуем ограничение по рейтингу в число
|
||||
*/
|
||||
if (!func_check(getRequestStr('blog_limit_rating_topic'),'float')) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_rating_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.rating.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
|
@ -634,13 +634,13 @@ class ActionBlog extends Action {
|
|||
* Проверяем есть ли у этой категории дочернии
|
||||
*/
|
||||
if (Config::Get('module.blog.category_only_children') and $this->Blog_GetCategoriesByPid($oCategory->getId())) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_category_error_only_children'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.category.error_only_children'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
} else {
|
||||
$_REQUEST['blog_category']=null;
|
||||
if (!Config::Get('module.blog.category_allow_empty')) {
|
||||
$this->Message_AddError($this->Lang_Get('blog_create_category_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('blog.add.fields.category.error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
}
|
||||
|
@ -922,9 +922,9 @@ class ActionBlog extends Action {
|
|||
)
|
||||
)
|
||||
) {
|
||||
$bCloseBlog=true;
|
||||
$bPrivateBlog=true;
|
||||
} else {
|
||||
$bCloseBlog=false;
|
||||
$bPrivateBlog=false;
|
||||
}
|
||||
/**
|
||||
* Меню
|
||||
|
@ -939,7 +939,7 @@ class ActionBlog extends Action {
|
|||
$this->Viewer_SetHtmlCanonical($oBlog->getUrlFull().$sShowType.'/');
|
||||
}
|
||||
|
||||
if (!$bCloseBlog) {
|
||||
if (!$bPrivateBlog) {
|
||||
/**
|
||||
* Получаем список топиков
|
||||
*/
|
||||
|
@ -1007,7 +1007,7 @@ class ActionBlog extends Action {
|
|||
$this->Viewer_Assign('iCountBlogModerators',$aBlogModeratorsResult['count']);
|
||||
$this->Viewer_Assign('iCountBlogAdministrators',$aBlogAdministratorsResult['count']+1);
|
||||
$this->Viewer_Assign('oBlog',$oBlog);
|
||||
$this->Viewer_Assign('bCloseBlog',$bCloseBlog);
|
||||
$this->Viewer_Assign('bPrivateBlog',$bPrivateBlog);
|
||||
/**
|
||||
* Устанавливаем title страницы
|
||||
*/
|
||||
|
@ -1415,7 +1415,7 @@ class ActionBlog extends Action {
|
|||
$aResult[]=array(
|
||||
'bStateError'=>true,
|
||||
'sMsgTitle'=>$this->Lang_Get('error'),
|
||||
'sMsg'=>$this->Lang_Get('blog_user_invite_add_self')
|
||||
'sMsg'=>$this->Lang_Get('blog.invite.notices.add_self')
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -1446,10 +1446,11 @@ class ActionBlog extends Action {
|
|||
$aResult[]=array(
|
||||
'bStateError'=>false,
|
||||
'sMsgTitle'=>$this->Lang_Get('attention'),
|
||||
'sMsg'=>$this->Lang_Get('blog_user_invite_add_ok',array('login'=>htmlspecialchars($sUser))),
|
||||
'sMsg'=>$this->Lang_Get('blog.invite.notices.add',array('login'=>htmlspecialchars($sUser))),
|
||||
'sUserLogin'=>htmlspecialchars($sUser),
|
||||
'sUserWebPath'=>$oUser->getUserWebPath(),
|
||||
'sUserAvatar48'=>$oUser->getProfileAvatarPath(48)
|
||||
'sUserAvatar48'=>$oUser->getProfileAvatarPath(48),
|
||||
'iUserId'=>$oUser->getId()
|
||||
);
|
||||
$this->SendBlogInvite($oBlog,$oUser);
|
||||
} else {
|
||||
|
@ -1467,13 +1468,13 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
switch (true) {
|
||||
case ($aBlogUsers[$oUser->getId()]->getUserRole()==ModuleBlog::BLOG_USER_ROLE_INVITE):
|
||||
$sErrorMessage=$this->Lang_Get('blog_user_already_invited',array('login'=>htmlspecialchars($sUser)));
|
||||
$sErrorMessage=$this->Lang_Get('blog.invite.notices.already_invited',array('login'=>htmlspecialchars($sUser)));
|
||||
break;
|
||||
case ($aBlogUsers[$oUser->getId()]->getUserRole()>ModuleBlog::BLOG_USER_ROLE_GUEST):
|
||||
$sErrorMessage=$this->Lang_Get('blog_user_already_exists',array('login'=>htmlspecialchars($sUser)));
|
||||
$sErrorMessage=$this->Lang_Get('blog.invite.notices.already_joined',array('login'=>htmlspecialchars($sUser)));
|
||||
break;
|
||||
case ($aBlogUsers[$oUser->getId()]->getUserRole()==ModuleBlog::BLOG_USER_ROLE_REJECT):
|
||||
$sErrorMessage=$this->Lang_Get('blog_user_already_reject',array('login'=>htmlspecialchars($sUser)));
|
||||
$sErrorMessage=$this->Lang_Get('blog.invite.notices.reject',array('login'=>htmlspecialchars($sUser)));
|
||||
break;
|
||||
default:
|
||||
$sErrorMessage=$this->Lang_Get('system_error');
|
||||
|
@ -1538,7 +1539,7 @@ class ActionBlog extends Action {
|
|||
$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$oUser->getId());
|
||||
if ($oBlogUser->getUserRole()==ModuleBlog::BLOG_USER_ROLE_INVITE) {
|
||||
$this->SendBlogInvite($oBlog,$oUser);
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_user_invite_add_ok',array('login'=>$oUser->getLogin())),$this->Lang_Get('attention'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.invite.notices.add',array('login'=>$oUser->getLogin())),$this->Lang_Get('attention'));
|
||||
} else {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||
}
|
||||
|
@ -1591,7 +1592,7 @@ class ActionBlog extends Action {
|
|||
* Удаляем связь/приглашение
|
||||
*/
|
||||
$this->Blog_DeleteRelationBlogUser($oBlogUser);
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_user_invite_remove_ok',array('login'=>$oUser->getLogin())),$this->Lang_Get('attention'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.invite.notices.remove',array('login'=>$oUser->getLogin())),$this->Lang_Get('attention'));
|
||||
} else {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||
}
|
||||
|
@ -1605,7 +1606,7 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
protected function SendBlogInvite($oBlog,$oUser) {
|
||||
$sTitle=$this->Lang_Get(
|
||||
'blog_user_invite_title',
|
||||
'blog.invite.email.title',
|
||||
array(
|
||||
'blog_title'=>$oBlog->getTitle()
|
||||
)
|
||||
|
@ -1624,7 +1625,7 @@ class ActionBlog extends Action {
|
|||
);
|
||||
|
||||
$sText=$this->Lang_Get(
|
||||
'blog_user_invite_text',
|
||||
'blog.invite.email.text',
|
||||
array(
|
||||
'login'=>$this->oUserCurrent->getLogin(),
|
||||
'accept_path'=>$aPath['accept'],
|
||||
|
@ -1687,7 +1688,7 @@ class ActionBlog extends Action {
|
|||
return $this->EventNotFound();
|
||||
}
|
||||
if($oBlogUser->getUserRole()>ModuleBlog::BLOG_USER_ROLE_GUEST) {
|
||||
$sMessage=$this->Lang_Get('blog_user_invite_already_done');
|
||||
$sMessage=$this->Lang_Get('blog.invite.alerts.already_joined');
|
||||
$this->Message_AddError($sMessage,$this->Lang_Get('error'),true);
|
||||
Router::Location(Router::GetPath('talk'));
|
||||
return ;
|
||||
|
@ -1712,13 +1713,13 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
$oBlog->setCountUser($oBlog->getCountUser()+1);
|
||||
$this->Blog_UpdateBlog($oBlog);
|
||||
$sMessage=$this->Lang_Get('blog_user_invite_accept');
|
||||
$sMessage=$this->Lang_Get('blog.invite.alerts.accepted');
|
||||
/**
|
||||
* Добавляем событие в ленту
|
||||
*/
|
||||
$this->Stream_write($oBlogUser->getUserId(), 'join_blog', $oBlog->getId());
|
||||
} else {
|
||||
$sMessage=$this->Lang_Get('blog_user_invite_reject');
|
||||
$sMessage=$this->Lang_Get('blog.invite.alerts.rejected');
|
||||
}
|
||||
$this->Message_AddNotice($sMessage,$this->Lang_Get('attention'),true);
|
||||
/**
|
||||
|
@ -1756,7 +1757,7 @@ class ActionBlog extends Action {
|
|||
switch ($bAccess) {
|
||||
case ModuleACL::CAN_DELETE_BLOG_EMPTY_ONLY :
|
||||
if(is_array($aTopics) and count($aTopics)) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_not_empty'),$this->Lang_Get('error'),true);
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.remove.alerts.not_empty'),$this->Lang_Get('error'),true);
|
||||
Router::Location($oBlog->getUrlFull());
|
||||
}
|
||||
break;
|
||||
|
@ -1769,14 +1770,14 @@ class ActionBlog extends Action {
|
|||
*/
|
||||
if($sBlogIdNew=getRequestStr('topic_move_to') and ($sBlogIdNew!=-1) and is_array($aTopics) and count($aTopics)) {
|
||||
if(!$oBlogNew = $this->Blog_GetBlogById($sBlogIdNew)){
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_error'),$this->Lang_Get('error'),true);
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.remove.alerts.move_error'),$this->Lang_Get('error'),true);
|
||||
Router::Location($oBlog->getUrlFull());
|
||||
}
|
||||
/**
|
||||
* Если выбранный блог является персональным, возвращаем ошибку
|
||||
*/
|
||||
if($oBlogNew->getType()=='personal') {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_admin_delete_move_personal'),$this->Lang_Get('error'),true);
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.remove.alerts.move_personal_error'),$this->Lang_Get('error'),true);
|
||||
Router::Location($oBlog->getUrlFull());
|
||||
}
|
||||
/**
|
||||
|
@ -1794,7 +1795,7 @@ class ActionBlog extends Action {
|
|||
$this->Hook_Run('blog_delete_before', array('sBlogId'=>$sBlogId));
|
||||
if($this->Blog_DeleteBlog($sBlogId)) {
|
||||
$this->Hook_Run('blog_delete_after', array('sBlogId'=>$sBlogId));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_admin_delete_success'),$this->Lang_Get('attention'),true);
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.remove.alerts.success'),$this->Lang_Get('attention'),true);
|
||||
Router::Location(Router::GetPath('blogs'));
|
||||
} else {
|
||||
Router::Location($oBlog->getUrlFull());
|
||||
|
@ -1830,7 +1831,7 @@ class ActionBlog extends Action {
|
|||
* если блог персональный — возвращаем текущий языковой эквивалент
|
||||
*/
|
||||
if ($sBlogId==0) {
|
||||
$sText = $this->Lang_Get('blogs_personal_description');
|
||||
$sText = $this->Lang_Get('blog.personal_description');
|
||||
}
|
||||
$this->Viewer_AssignAjax('sText',$sText);
|
||||
}
|
||||
|
@ -1863,7 +1864,7 @@ class ActionBlog extends Action {
|
|||
* Проверяем тип блога
|
||||
*/
|
||||
if (!in_array($oBlog->getType(),array('open','close'))) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_join_error_invite'),$this->Lang_Get('error'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.join.notices.error_invite'),$this->Lang_Get('error'));
|
||||
return;
|
||||
}
|
||||
/**
|
||||
|
@ -1887,7 +1888,7 @@ class ActionBlog extends Action {
|
|||
$bResult = $this->Blog_AddRelationBlogUser($oBlogUserNew);
|
||||
}
|
||||
if ($bResult) {
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_join_ok'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.join.notices.join_success'),$this->Lang_Get('attention'));
|
||||
$this->Viewer_AssignAjax('bState',true);
|
||||
/**
|
||||
* Увеличиваем число читателей блога
|
||||
|
@ -1905,13 +1906,13 @@ class ActionBlog extends Action {
|
|||
$this->Userfeed_subscribeUser($this->oUserCurrent->getId(), ModuleUserfeed::SUBSCRIBE_TYPE_BLOG, $oBlog->getId());
|
||||
} else {
|
||||
$sMsg=($oBlog->getType()=='close')
|
||||
? $this->Lang_Get('blog_join_error_invite')
|
||||
? $this->Lang_Get('blog.join.notices.error_invite')
|
||||
: $this->Lang_Get('system_error');
|
||||
$this->Message_AddErrorSingle($sMsg,$this->Lang_Get('error'));
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog_join_error_self'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('blog.join.notices.error_self'),$this->Lang_Get('attention'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1920,7 +1921,7 @@ class ActionBlog extends Action {
|
|||
* Покидаем блог
|
||||
*/
|
||||
if ($this->Blog_DeleteRelationBlogUser($oBlogUser)) {
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog_leave_ok'),$this->Lang_Get('attention'));
|
||||
$this->Message_AddNoticeSingle($this->Lang_Get('blog.join.notices.leave_success'),$this->Lang_Get('attention'));
|
||||
$this->Viewer_AssignAjax('bState',false);
|
||||
/**
|
||||
* Уменьшаем число читателей блога
|
||||
|
|
|
@ -34,7 +34,7 @@ class ActionBlogs extends Action {
|
|||
* Загружаем в шаблон JS текстовки
|
||||
*/
|
||||
$this->Lang_AddLangJs(array(
|
||||
'blog_join','blog_leave'
|
||||
'blog.join.join','blog.join.leave'
|
||||
));
|
||||
$this->sPageRoot=Router::GetPath('blogs');
|
||||
/**
|
||||
|
|
|
@ -325,9 +325,9 @@ class ModuleBlog extends Module {
|
|||
public function CreatePersonalBlog(ModuleUser_EntityUser $oUser) {
|
||||
$oBlog=Engine::GetEntity('Blog');
|
||||
$oBlog->setOwnerId($oUser->getId());
|
||||
$oBlog->setTitle($this->Lang_Get('blogs_personal_title').' '.$oUser->getLogin());
|
||||
$oBlog->setTitle($this->Lang_Get('blog.personal_title').' '.$oUser->getLogin());
|
||||
$oBlog->setType('personal');
|
||||
$oBlog->setDescription($this->Lang_Get('blogs_personal_description'));
|
||||
$oBlog->setDescription($this->Lang_Get('blog.personal_description'));
|
||||
$oBlog->setDateAdd(date("Y-m-d H:i:s"));
|
||||
$oBlog->setLimitRatingTopic(-1000);
|
||||
$oBlog->setUrl(null);
|
||||
|
|
|
@ -414,7 +414,17 @@ $config['block']['rule_profile'] = array(
|
|||
)
|
||||
)
|
||||
);
|
||||
|
||||
$config['block']['rule_blog'] = array(
|
||||
'action' => array('blog' => array('{blog}')),
|
||||
'blocks' => array(
|
||||
'right' => array(
|
||||
'blocks/block.blogActions.tpl' => array('priority'=>300),
|
||||
'blocks/block.blogUsers.tpl' => array('priority'=>300),
|
||||
'blocks/block.blogAdmins.tpl' => array('priority'=>300)
|
||||
)
|
||||
),
|
||||
'clear' => true
|
||||
);
|
||||
|
||||
|
||||
$config['head']['default']['js'] = array(
|
||||
|
|
|
@ -16,18 +16,62 @@ ls.blog = (function ($) {
|
|||
/**
|
||||
* Дефолтные опции
|
||||
*
|
||||
* @member {Object}
|
||||
* @private
|
||||
*/
|
||||
var _defaults = {
|
||||
// Роутеры
|
||||
oRouters: {
|
||||
|
||||
routers: {
|
||||
join: aRouter['blog'] + 'ajaxblogjoin/',
|
||||
categories: aRouter['ajax'] + 'blogs/get-by-category/',
|
||||
info: aRouter['blog'] + 'ajaxbloginfo/',
|
||||
search: aRouter['blogs'] + 'ajax-search/',
|
||||
invite: {
|
||||
add: aRouter['blog'] + 'ajaxaddbloginvite/',
|
||||
remove: aRouter['blog'] + 'ajaxremovebloginvite/',
|
||||
repeat: aRouter['blog'] + 'ajaxrebloginvite/',
|
||||
}
|
||||
},
|
||||
|
||||
// Селекторы
|
||||
selectors: {
|
||||
addBlogSelectType: '.js-blog-add-type'
|
||||
addBlogSelectType: '.js-blog-add-type',
|
||||
toggle_join: '.js-blog-join',
|
||||
users_number: '.js-blog-users-number',
|
||||
info: '.js-blog-info',
|
||||
blog_add_type_note: '#blog_type_note',
|
||||
invite: {
|
||||
form: {
|
||||
self: '.js-blog-invite-form',
|
||||
users: '.js-blog-invite-form-users',
|
||||
submit: '.js-blog-invite-form-submit',
|
||||
},
|
||||
container: '.js-blog-invite-container',
|
||||
user_list: '.js-blog-invite-users',
|
||||
user: '.js-blog-invite-user',
|
||||
user_remove: '.js-blog-invite-user-remove',
|
||||
user_repeat: '.js-blog-invite-user-repeat',
|
||||
},
|
||||
nav: {
|
||||
categories: '.js-blog-nav-categories',
|
||||
blogs: '.js-blog-nav-blogs',
|
||||
submit: '.js-blog-nav-submit',
|
||||
}
|
||||
},
|
||||
|
||||
// HTML
|
||||
html: {
|
||||
invite_item: function(iBlogId, aUser) {
|
||||
return '<li class="user-list-small-item js-blog-invite-user" data-blog-id="' + iBlogId + '" data-user-id="' + aUser.iUserId + '">' +
|
||||
'<div class="user-item">' +
|
||||
'<a href="' + aUser.sUserWebPath + '" class="user-item-avatar-link"><img src="' + aUser.sUserAvatar48 + '" class="user-item-avatar" width="24" /></a> ' +
|
||||
'<a href="' + aUser.sUserWebPath + '" class="user-item-name">' + aUser.sUserLogin + '</a> ' +
|
||||
'</div>' +
|
||||
'<div class="user-list-small-item-actions">' +
|
||||
'<a href="#" class="icon-repeat js-blog-invite-user-repeat" title=""></a> ' +
|
||||
'<a href="#" class="icon-remove js-blog-invite-user-remove" title=""></a>' +
|
||||
'</div>' +
|
||||
'</li>';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -37,219 +81,201 @@ ls.blog = (function ($) {
|
|||
* @param {Object} options Опции
|
||||
*/
|
||||
this.init = function(options) {
|
||||
var self = this;
|
||||
var _this = this;
|
||||
|
||||
this.options = $.extend({}, _defaults, options);
|
||||
|
||||
this.elements = {
|
||||
invite: {
|
||||
form: {
|
||||
self: $(this.options.selectors.invite.form.self),
|
||||
users: $(this.options.selectors.invite.form.users),
|
||||
submit: $(this.options.selectors.invite.form.submit),
|
||||
},
|
||||
container: $(this.options.selectors.invite.container),
|
||||
user_list: $(this.options.selectors.invite.user_list),
|
||||
user: $(this.options.selectors.invite.user),
|
||||
},
|
||||
nav: {
|
||||
categories: $(this.options.selectors.nav.categories),
|
||||
blogs: $(this.options.selectors.nav.blogs),
|
||||
submit: $(this.options.selectors.nav.submit),
|
||||
},
|
||||
info: $(this.options.selectors.info),
|
||||
toggle_join: $(this.options.selectors.toggle_join),
|
||||
blog_add_type_note: $(this.options.selectors.blog_add_type_note),
|
||||
};
|
||||
|
||||
// Подгрузка информации о выбранном типе блога при создании блога
|
||||
$(this.options.selectors.addBlogSelectType).on('change', function (e) {
|
||||
ls.blog.loadInfoType($(this).val());
|
||||
_this.loadInfoType($(this).val());
|
||||
});
|
||||
|
||||
// Вступить/покинуть блог
|
||||
this.elements.toggle_join.on('click', function (e) {
|
||||
_this.toggleJoin($(this), $(this).data('blog-id'));
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
/**
|
||||
* Инвайты
|
||||
*/
|
||||
|
||||
// Добавить инвайт
|
||||
this.elements.invite.form.self.on('submit', function (e) {
|
||||
_this.invite.add($(this).data('blog-id'), _this.elements.invite.form.users.val());
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
// Удалить инвайт
|
||||
$(document).on('click', this.options.selectors.invite.user_remove, function (e) {
|
||||
var oElement = $(this).closest(_this.options.selectors.invite.user);
|
||||
|
||||
_this.invite.remove(oElement.data('user-id'), oElement.data('blog-id'));
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
// Повторно отправить инвайт
|
||||
$(document).on('click', this.options.selectors.invite.user_repeat, function (e) {
|
||||
var oElement = $(this).closest(_this.options.selectors.invite.user);
|
||||
|
||||
_this.invite.repeat(oElement.data('user-id'), oElement.data('blog-id'));
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
/**
|
||||
* Блок навигации по категориям и блогам
|
||||
*/
|
||||
|
||||
// Подгрузка блогов из выбранной категории
|
||||
this.elements.nav.categories.on('change', function (e) {
|
||||
_this.loadBlogsByCategory($(this).val());
|
||||
});
|
||||
|
||||
// Переход на страницу выбранного блога
|
||||
this.elements.nav.submit.on('click', function (e) {
|
||||
_this.navigatorGoSelectBlog();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Вступить или покинуть блог
|
||||
*/
|
||||
this.toggleJoin = function(obj, idBlog){
|
||||
var url = aRouter['blog']+'ajaxblogjoin/';
|
||||
var params = {idBlog: idBlog};
|
||||
* Вступить или покинуть блог
|
||||
*/
|
||||
this.toggleJoin = function(oToggle, iIdBlog) {
|
||||
var sUrl = this.options.routers.join,
|
||||
oParams = { idBlog: iIdBlog };
|
||||
|
||||
oToggle.addClass(ls.options.classes.states.loading);
|
||||
|
||||
ls.hook.marker('toggleJoinBefore');
|
||||
ls.ajax.load(url,params,function(result) {
|
||||
|
||||
ls.ajax.load(sUrl, oParams, function(result) {
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
obj = $(obj);
|
||||
ls.msg.notice(null, result.sMsg);
|
||||
|
||||
var text = result.bState
|
||||
? ls.lang.get('blog_leave')
|
||||
: ls.lang.get('blog_join')
|
||||
;
|
||||
oToggle.empty().text( result.bState ? ls.lang.get('blog.join.leave') : ls.lang.get('blog.join.join') ).toggleClass('button-primary');
|
||||
$(this.options.selectors.users_number + '[data-blog-id=' + iIdBlog + ']').text(result.iCountUser);
|
||||
|
||||
obj.empty().text(text);
|
||||
obj.toggleClass('active');
|
||||
|
||||
$('#blog_user_count_'+idBlog).text(result.iCountUser);
|
||||
ls.hook.run('ls_blog_toggle_join_after',[idBlog,result],obj);
|
||||
ls.hook.run('ls_blog_toggle_join_after', [iIdBlog, result], oToggle);
|
||||
}
|
||||
});
|
||||
|
||||
oToggle.removeClass(ls.options.classes.states.loading);
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Отправляет приглашение вступить в блог
|
||||
*/
|
||||
this.addInvite = function(idBlog) {
|
||||
var sUsers = $('#blog_admin_user_add').val();
|
||||
if(!sUsers) return false;
|
||||
$('#blog_admin_user_add').val('');
|
||||
* Отображение информации о блоге
|
||||
*/
|
||||
this.loadInfo = function(iBlogId) {
|
||||
var url = this.options.routers.info,
|
||||
params = { idBlog: iBlogId };
|
||||
|
||||
var url = aRouter['blog']+'ajaxaddbloginvite/';
|
||||
var params = {users: sUsers, idBlog: idBlog};
|
||||
this.elements.info.empty().addClass(ls.options.classes.states.loading);
|
||||
|
||||
ls.hook.marker('loadInfoBefore');
|
||||
|
||||
ls.hook.marker('addInviteBefore');
|
||||
ls.ajax.load(url, params, function(result) {
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
$.each(result.aUsers, function(index, item) {
|
||||
if(item.bStateError){
|
||||
ls.msg.error(null, item.sMsg);
|
||||
} else {
|
||||
if($('#invited_list').length == 0) {
|
||||
$('#invited_list_block').append($('<ul class="list" id="invited_list"></ul>'));
|
||||
}
|
||||
var listItem = $('<li><a href="'+item.sUserWebPath+'" class="user">'+item.sUserLogin+'</a></li>');
|
||||
$('#invited_list').append(listItem);
|
||||
$('#blog-invite-empty').hide();
|
||||
ls.hook.run('ls_blog_add_invite_user_after',[idBlog,item],listItem);
|
||||
}
|
||||
});
|
||||
ls.hook.run('ls_blog_add_invite_after',[idBlog,sUsers,result]);
|
||||
}
|
||||
});
|
||||
this.elements.info.removeClass(ls.options.classes.states.loading).html(result.sText);
|
||||
|
||||
return false;
|
||||
ls.hook.run('ls_blog_load_info_after', [iBlogId, result], this.elements.info);
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Повторно отправляет приглашение
|
||||
*/
|
||||
this.repeatInvite = function(idUser,idBlog) {
|
||||
var url = aRouter['blog']+'ajaxrebloginvite/';
|
||||
var params = {idUser: idUser, idBlog: idBlog};
|
||||
|
||||
ls.hook.marker('repeatInviteBefore');
|
||||
ls.ajax.load(url, params, function(result){
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
ls.msg.notice(null, result.sMsg);
|
||||
ls.hook.run('ls_blog_repeat_invite_after',[idUser,idBlog,result]);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Удаляет приглашение в блог
|
||||
* Отображение информации о типе блога
|
||||
*/
|
||||
this.removeInvite = function(idUser,idBlog) {
|
||||
var url = aRouter['blog']+'ajaxremovebloginvite/';
|
||||
var params = {idUser: idUser, idBlog: idBlog};
|
||||
|
||||
ls.hook.marker('removeInviteBefore');
|
||||
ls.ajax.load(url, params, function(result){
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
$('#blog-invite-remove-item-'+idBlog+'-'+idUser).remove();
|
||||
ls.msg.notice(null, result.sMsg);
|
||||
if ($('#invited_list li').length == 0) $('#blog-invite-empty').show();
|
||||
ls.hook.run('ls_blog_remove_invite_after',[idUser,idBlog,result]);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Отображение информации о блоге
|
||||
*/
|
||||
this.loadInfo = function(idBlog) {
|
||||
var url = aRouter['blog']+'ajaxbloginfo/';
|
||||
var params = {idBlog: idBlog};
|
||||
var block = $('#block_blog_info');
|
||||
|
||||
block.empty().addClass('loading');
|
||||
|
||||
ls.hook.marker('loadInfoBefore');
|
||||
ls.ajax.load(url, params, function(result){
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
block.removeClass('loading').html(result.sText);
|
||||
ls.hook.run('ls_blog_load_info_after',[idBlog,result],block);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Отображение информации о типе блога
|
||||
*/
|
||||
this.loadInfoType = function(type) {
|
||||
$('#blog_type_note').text(ls.lang.get('blog_create_type_' + type + '_notice'));
|
||||
this.elements.blog_add_type_note.text(ls.lang.get('blog.add.fields.type.note_' + type));
|
||||
};
|
||||
|
||||
/**
|
||||
* Поиск блогов
|
||||
*/
|
||||
this.searchBlogs = function(form) {
|
||||
var url = aRouter['blogs']+'ajax-search/';
|
||||
var inputSearch=$('#'+form).find('input');
|
||||
inputSearch.addClass('loader');
|
||||
this.searchBlogs = function(sFormSelector) {
|
||||
var url = ls.blog.options.routers.search,
|
||||
oInputSearch = $(sFormSelector).find('input'),
|
||||
oOriginalContainer = $('#blogs-list-original'),
|
||||
oSearchContainer = $('#blogs-list-search');
|
||||
|
||||
oInputSearch.addClass(ls.options.classes.states.loading);
|
||||
|
||||
ls.hook.marker('searchBlogsBefore');
|
||||
ls.ajax.submit(url, form, function(result){
|
||||
inputSearch.removeClass('loader');
|
||||
|
||||
ls.ajax.submit(url, sFormSelector, function(result) {
|
||||
oInputSearch.removeClass(ls.options.classes.states.loading);
|
||||
|
||||
if (result.bStateError) {
|
||||
$('#blogs-list-search').hide();
|
||||
$('#blogs-list-original').show();
|
||||
oSearchContainer.hide();
|
||||
oOriginalContainer.show();
|
||||
} else {
|
||||
$('#blogs-list-original').hide();
|
||||
$('#blogs-list-search').html(result.sText).show();
|
||||
ls.hook.run('ls_blog_search_blogs_after',[form, result]);
|
||||
oOriginalContainer.hide();
|
||||
oSearchContainer.html(result.sText).show();
|
||||
|
||||
ls.hook.run('ls_blog_search_blogs_after', [sFormSelector, result]);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Показать подробную информацию о блоге
|
||||
*/
|
||||
this.toggleInfo = function() {
|
||||
$('#blog-more-content').slideToggle();
|
||||
var more = $('#blog-more');
|
||||
more.toggleClass('expanded');
|
||||
|
||||
if(more.hasClass('expanded')) {
|
||||
more.html(ls.lang.get('blog_fold_info'));
|
||||
} else {
|
||||
more.html(ls.lang.get('blog_expand_info'));
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Подгружает блоги из категории
|
||||
*
|
||||
* @param {String} id ID категории
|
||||
*/
|
||||
this.loadBlogsByCategory = function(id) {
|
||||
var url = aRouter['ajax'] + 'blogs/get-by-category/',
|
||||
params = {id: id},
|
||||
$blogs = $('#blog-navigator-blog').empty().prop('disabled', true),
|
||||
$button = $('#blog-navigator-button').prop('disabled', true);
|
||||
this.loadBlogsByCategory = function(iId) {
|
||||
var url = this.options.routers.categories,
|
||||
params = { id: iId };
|
||||
|
||||
this.elements.nav.blogs.empty().prop('disabled', true),
|
||||
this.elements.nav.submit.prop('disabled', true).addClass(ls.options.classes.states.loading);
|
||||
|
||||
ls.hook.marker('loadBlogsByCategoryBefore');
|
||||
|
||||
if (id !== '0') {
|
||||
ls.ajax.load(url, params, function(result){
|
||||
if (iId !== '0') {
|
||||
ls.ajax.load(url, params, function(result) {
|
||||
if (result.bStateError) {
|
||||
$blogs.append('<option>' + result.sMsg + '</option>');
|
||||
this.elements.nav.blogs.append('<option>' + result.sMsg + '</option>');
|
||||
} else {
|
||||
$(result.aBlogs).each(function(k,v){
|
||||
$('<option value="' + v.id + '" data-url="' + v.url_full + '">' + v.title+'</option>').appendTo($blogs);
|
||||
});
|
||||
$($.map(result.aBlogs, function(value, index) {
|
||||
return '<option value="' + value.id + '" data-url="' + value.url_full + '">' + value.title + '</option>';
|
||||
}).join('')).appendTo(this.elements.nav.blogs);
|
||||
|
||||
$blogs.prop('disabled', false);
|
||||
$button.prop('disabled', false);
|
||||
this.elements.nav.blogs.prop('disabled', false);
|
||||
this.elements.nav.submit.prop('disabled', false).removeClass(ls.options.classes.states.loading);
|
||||
|
||||
ls.hook.run('ls_blog_load_blogs_by_category_after', [id, result]);
|
||||
ls.hook.run('ls_blog_load_blogs_by_category_after', [iId, result]);
|
||||
}
|
||||
});
|
||||
|
||||
this.elements.nav.submit.removeClass(ls.options.classes.states.loading);
|
||||
}.bind(this));
|
||||
} else {
|
||||
$blogs.append('<option>' + ls.lang.get('blog') + '</option>');
|
||||
this.elements.nav.submit.removeClass(ls.options.classes.states.loading);
|
||||
this.elements.nav.blogs.html('<option>' + ls.lang.get('blog.blog') + '</option>');
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -257,12 +283,108 @@ ls.blog = (function ($) {
|
|||
* Переход на страницу выбранного блога
|
||||
*/
|
||||
this.navigatorGoSelectBlog = function() {
|
||||
var $sel = $('#blog-navigator-blog').find('option:selected');
|
||||
|
||||
if ($sel.length) {
|
||||
window.location.href = $sel.data('url');
|
||||
}
|
||||
window.location.href = this.elements.nav.blogs.find('option:selected').data('url') || '';
|
||||
};
|
||||
|
||||
/**
|
||||
* Приглашения
|
||||
*/
|
||||
this.invite = function(_this) {
|
||||
/**
|
||||
* Отправляет приглашение вступить в блог
|
||||
*/
|
||||
this.add = function(iBlogId, sUsers) {
|
||||
if( ! sUsers ) return false;
|
||||
|
||||
var sUrl = _this.options.routers.invite.add,
|
||||
oParams = { users: sUsers, idBlog: iBlogId };
|
||||
|
||||
_this.elements.invite.form.submit.prop('disabled', true).addClass(ls.options.classes.states.loading);
|
||||
_this.elements.invite.form.users.autocomplete('disable');
|
||||
|
||||
ls.hook.marker('addInviteBefore');
|
||||
|
||||
ls.ajax.load(sUrl, oParams, function(result) {
|
||||
_this.elements.invite.form.submit.prop('disabled', false).removeClass(ls.options.classes.states.loading);
|
||||
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
_this.elements.invite.form.users.val('');
|
||||
|
||||
$($.map(result.aUsers, function(value, index) {
|
||||
if (value.bStateError) {
|
||||
ls.msg.error(null, value.sMsg);
|
||||
} else {
|
||||
ls.msg.notice(null, value.sMsg);
|
||||
_this.elements.invite.container.show();
|
||||
|
||||
var oItem = _this.options.html.invite_item(iBlogId, value);
|
||||
|
||||
ls.hook.run('ls_blog_add_invite_user_after', [iBlogId, value], oItem);
|
||||
|
||||
return oItem;
|
||||
}
|
||||
}).join('')).appendTo(_this.elements.invite.user_list);
|
||||
|
||||
ls.hook.run('ls_blog_add_invite_after', [iBlogId, sUsers, result]);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Удаляет приглашение в блог
|
||||
*/
|
||||
this.remove = function(iUserId, iBlogId) {
|
||||
var sUrl = _this.options.routers.invite.remove,
|
||||
oParams = { idUser: iUserId, idBlog: iBlogId };
|
||||
|
||||
ls.hook.marker('removeInviteBefore');
|
||||
|
||||
ls.ajax.load(sUrl, oParams, function(result) {
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
ls.msg.notice(null, result.sMsg);
|
||||
|
||||
$(this.options.selectors.invite.user + '[data-user-id=' + iUserId + ']').fadeOut('slow', function() {
|
||||
$(this).remove();
|
||||
if ($(_this.options.selectors.invite.user).length === 0) _this.elements.invite.container.hide();
|
||||
|
||||
ls.hook.run('ls_blog_remove_invite_after', [iUserId, iBlogId, result]);
|
||||
});
|
||||
}
|
||||
}.bind(_this));
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Повторно отправляет приглашение
|
||||
*/
|
||||
this.repeat = function(iUserId,iBlogId) {
|
||||
var sUrl = _this.options.routers.invite.repeat,
|
||||
oParams = { idUser: iUserId, idBlog: iBlogId };
|
||||
|
||||
ls.hook.marker('repeatInviteBefore');
|
||||
|
||||
ls.ajax.load(sUrl, oParams, function(result) {
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
ls.msg.notice(null, result.sMsg);
|
||||
|
||||
ls.hook.run('ls_blog_repeat_invite_after', [iUserId, iBlogId, result]);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
return this;
|
||||
}.call({}, this);
|
||||
|
||||
return this;
|
||||
}).call(ls.blog || {},jQuery);
|
|
@ -66,6 +66,8 @@ ls.topic = (function ($) {
|
|||
$(this.options.selectors.addTopicTitle).on('change', function (e) {
|
||||
ls.blog.loadInfo($(this).val());
|
||||
});
|
||||
|
||||
ls.blog.loadInfo($(this.options.selectors.addTopicTitle).val());
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -21,76 +21,312 @@
|
|||
* Содержит все текстовки движка.
|
||||
*/
|
||||
return array(
|
||||
'common' => array(
|
||||
'add' => 'Добавить',
|
||||
'remove' => 'Удалить',
|
||||
'edit' => 'Редактировать',
|
||||
'save' => 'Сохранить',
|
||||
'create' => 'Создать',
|
||||
),
|
||||
|
||||
/**
|
||||
* Голосование
|
||||
*/
|
||||
'vote' => array(
|
||||
'up' => 'Нравится',
|
||||
'down' => 'Не нравится',
|
||||
'count' => 'Всего проголосовало',
|
||||
'rating' => 'Рейтинг',
|
||||
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
'success' => 'Ваш голос учтен',
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Избранное
|
||||
*/
|
||||
'favourite' => array(
|
||||
'add' => 'Добавить в избранное',
|
||||
'remove' => 'Удалить из избранного',
|
||||
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Поиск
|
||||
*/
|
||||
'search' => array(
|
||||
'search' => 'Поиск',
|
||||
'find' => 'Найти',
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'empty' => 'Поиск не дал результатов',
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Сортировка
|
||||
*/
|
||||
'sort' => array(
|
||||
'label' => 'Сортировать',
|
||||
'by_name' => 'по имени',
|
||||
'by_date' => 'по дате',
|
||||
'by_rating' => 'по рейтингу',
|
||||
),
|
||||
|
||||
/**
|
||||
* Блог
|
||||
*/
|
||||
'blog' => array(
|
||||
'blog' => 'Блог',
|
||||
'blogs' => 'Блоги',
|
||||
'readers_declension' => 'читатель;читателя;читателей',
|
||||
'administrators' => 'Администраторы',
|
||||
'moderators' => 'Модераторы',
|
||||
'owner' => 'Создатель',
|
||||
'create_blog' => 'Создать блог',
|
||||
'can_add' => 'Вы можете создать свой блог!',
|
||||
'cant_add' => 'Для возможности создавать блоги, ваш рейтинг должен быть больше %%rating%%.',
|
||||
'private' => 'Закрытый блог',
|
||||
'personal_prefix' => 'Блог им.',
|
||||
'personal_description' => 'Это ваш персональный блог.',
|
||||
'topics_total' => 'Топиков',
|
||||
'date_created' => 'Дата создания',
|
||||
'rating_limit' => 'Ограничение на постинг',
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'private' => 'Это закрытый блог, у вас нет прав на просмотр контента',
|
||||
'banned' => 'Вы забанены в этом блоге',
|
||||
'empty' => 'Список блогов пуст',
|
||||
),
|
||||
|
||||
|
||||
/**
|
||||
* Поиск
|
||||
*/
|
||||
'search' => array(
|
||||
'placeholder' => 'Поиск по названию',
|
||||
),
|
||||
|
||||
/**
|
||||
* Приглашения
|
||||
*/
|
||||
'invite' => array(
|
||||
'invite_users' => 'Пригласить пользователей',
|
||||
'users_title' => 'Список приглашенных',
|
||||
'repeat' => 'Повторить',
|
||||
'empty' => 'Нет приглашенных пользователей',
|
||||
|
||||
// Форма добавления
|
||||
'form' => array(
|
||||
'users_label' => 'Список пользователей',
|
||||
),
|
||||
|
||||
// Письмо с приглашением
|
||||
'email' => array(
|
||||
'title' => "Приглашение стать читателем блога '%%blog_title%%'",
|
||||
'text' => "Пользователь %%login%% приглашает вас стать читателем закрытого блога '%%blog_title%%'.<br/><br/><a href='%%accept_path%%'>Принять</a> - <a href='%%reject_path%%'>Отклонить</a>"
|
||||
),
|
||||
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
'add' => 'Пользователю %%login%% отправлено приглашение',
|
||||
'add_self' => 'Нельзя отправить инвайт самому себе',
|
||||
'already_invited' => 'Пользователю %%login%% уже отправлен инвайт',
|
||||
'already_joined' => 'Пользователь %%login%% уже состоит в блоге',
|
||||
'remove' => 'Приглашение для пользователя %%login%% удалено',
|
||||
'reject' => 'Пользователь %%login%% отклонил инвайт',
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'already_joined' => 'Вы уже являетесь пользователем этого блога',
|
||||
'accepted' => 'Приглашение принято',
|
||||
'rejected' => 'Приглашение отклонено',
|
||||
)
|
||||
),
|
||||
|
||||
/**
|
||||
* Страница добавления/редактирования блога
|
||||
*/
|
||||
'add' => array(
|
||||
'title' => 'Создание нового блога',
|
||||
|
||||
// Поля
|
||||
'fields' => array(
|
||||
'title' => array(
|
||||
'label' => 'Название блога',
|
||||
'note' => 'Название блога должно быть наполнено смыслом, чтобы можно было понять, о чем будет блог.',
|
||||
'error' => 'Название блога должно быть от 2 до 200 символов',
|
||||
'error_unique' => 'Блог с таким названием уже существует',
|
||||
),
|
||||
'url' => array(
|
||||
'label' => 'URL блога',
|
||||
'note' => 'URL блога, по которому он будет доступен. Может содержать только буквы латинского алфавита, цифры, дефис; пробелы будут заменены на "_". По смыслу URL должен совпадать с названием блога, после его создания редактирование этого параметра будет недоступно',
|
||||
'error' => 'URL блога должен быть от 2 до 50 символов и только на латинице + цифры и знаки "-", "_"',
|
||||
'error_badword' => 'URL блога должен отличаться от:',
|
||||
'error_unique' => 'Блог с таким URL уже существует',
|
||||
),
|
||||
'category' => array(
|
||||
'label' => 'Категория блога',
|
||||
'note' => 'Блогу можно назначить категорию, что позволяет более глубоко структурировать сайт',
|
||||
'error' => 'Не удалось найти категорию блога',
|
||||
'error_only_children' => 'Можно выбрать только конечную категорию (без дочерних)',
|
||||
),
|
||||
'type' => array(
|
||||
'label' => 'Тип блога',
|
||||
'note_open' => 'Открытый — к этому блогу может присоединиться любой желающий, топики видны всем',
|
||||
'note_close' => 'Закрытый — присоединиться можно только по приглашению администрации блога, топики видят только подписчики',
|
||||
'value_open' => 'Открытый',
|
||||
'value_close' => 'Закрытый',
|
||||
'error' => 'Неизвестный тип блога',
|
||||
),
|
||||
'description' => array(
|
||||
'label' => 'Описание блога',
|
||||
'error' => 'Текст описания блога должен быть от 10 до 3000 символов',
|
||||
),
|
||||
'rating' => array(
|
||||
'label' => 'Ограничение по рейтингу',
|
||||
'note' => 'Рейтинг, который необходим пользователю, чтобы написать в этот блог',
|
||||
'error' => 'Значение ограничения рейтинга должно быть числом',
|
||||
),
|
||||
'avatar' => array(
|
||||
'label' => 'Аватар',
|
||||
'error' => 'Не удалось загрузить аватар',
|
||||
),
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'acl' => 'Вы еще не достаточно окрепли, чтобы создавать свой блог', // TODO: Remove?
|
||||
)
|
||||
),
|
||||
|
||||
/**
|
||||
* Страница удаления блога
|
||||
*/
|
||||
'remove' => array(
|
||||
'title' => 'Удаление блога',
|
||||
'remove_topics' => 'Удалить топики',
|
||||
'move_to' => 'Переместить топики в блог',
|
||||
'confirm' => 'Вы уверены, что хотите удалить блог?',
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'success' => 'Блог успешно удален',
|
||||
'not_empty' => 'Вы не можете удалить блок с записями. Предварительно удалите из блога все записи.',
|
||||
'move_error' => 'Не удалось переместить топики из удаляемого блога',
|
||||
'move_personal_error' => 'Нельзя перемещать топики в персональный блог', // TODO: Remove?
|
||||
)
|
||||
),
|
||||
|
||||
/**
|
||||
* Управление блогом
|
||||
*/
|
||||
'admin' => array(
|
||||
'title' => 'Редактирование блога',
|
||||
'role_administrator' => 'Администратор',
|
||||
'role_moderator' => 'Модератор',
|
||||
'role_reader' => 'Читатель',
|
||||
'role_banned' => 'Забаненный',
|
||||
|
||||
// Навигация
|
||||
'nav' => array(
|
||||
'profile' => 'Профиль',
|
||||
'users' => 'Пользователи',
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'empty' => 'В блоге никто не состоит', // TODO: Remove?
|
||||
'submit_success' => 'Права сохранены', // TODO: Remove?
|
||||
)
|
||||
),
|
||||
|
||||
/**
|
||||
* Голосование
|
||||
*/
|
||||
'vote' => array(
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
'error_already' => 'Вы уже голосовали за этот блог!',
|
||||
'error_self' => 'Вы не можете голосовать за свой блог!',
|
||||
'error_acl' => 'У вас не хватает рейтинга для голосования!',
|
||||
'error_close' => 'Вы не можете голосовать за закрытый блог',
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Вступить / покинуть блог
|
||||
*/
|
||||
'join' => array(
|
||||
'join' => 'Вступить',
|
||||
'leave' => 'Покинуть',
|
||||
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
'join_success' => 'Вы вступили в блог',
|
||||
'leave_success' => 'Вы покинули блог',
|
||||
'error_invite' => 'Присоединиться к этому блогу можно только по приглашению!', // Remove?
|
||||
'error_self' => 'Зачем вы хотите вступить в этот блог? Вы и так его хозяин!', // Remove?
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Категории
|
||||
*/
|
||||
'categories' => array(
|
||||
'category' => 'Категория',
|
||||
'categories' => 'Категории',
|
||||
'empty' => 'В данной категории нет блогов',
|
||||
),
|
||||
|
||||
/**
|
||||
* Список пользователей
|
||||
*/
|
||||
'users' => array(
|
||||
'readers' => 'Читатели',
|
||||
'readers_all' => 'Все читатели блога',
|
||||
'readers_total' => 'Читателей',
|
||||
'empty' => 'Нет читателей',
|
||||
),
|
||||
|
||||
/**
|
||||
* Сортировка
|
||||
*/
|
||||
'sort' => array(
|
||||
'by_users' => 'по кол-ву читателей',
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* Блоги
|
||||
*/
|
||||
'blog' => 'Блог',
|
||||
'blogs' => 'Блоги',
|
||||
'blog_category' => 'Категория',
|
||||
'blog_categories' => 'Категории',
|
||||
'blogs_search_title_hint' => 'Поиск по названию',
|
||||
'blogs_search_empty' => 'Поиск не дал результатов',
|
||||
'blogs_title' => 'Название',
|
||||
'blogs_readers' => 'Читателей',
|
||||
'blogs_rating' => 'Рейтинг',
|
||||
'blogs_owner' => 'Смотритель',
|
||||
'blogs_personal_title' => 'Блог им.',
|
||||
'blogs_personal_description' => 'Это ваш персональный блог.',
|
||||
'blog_closed' => 'Закрытый блог',
|
||||
'blog_no_topic' => 'Сюда еще никто не успел написать',
|
||||
'blog_rss' => 'RSS лента',
|
||||
'blog_rating' => 'Рейтинг',
|
||||
'blog_vote_count' => 'голосов',
|
||||
'blog_about' => 'О блоге',
|
||||
'blog_expand_info' => 'Подробнее ↓',
|
||||
'blog_fold_info' => 'Свернуть ↑',
|
||||
'blog_by_category_empty' => 'В данной категории нет блогов',
|
||||
'blog_add' => 'Создать блог',
|
||||
'blog_can_add' => 'Вы можете создать свой блог!',
|
||||
'blog_cant_add' => 'Для возможности создавать блоги, ваш рейтинг должен быть больше %%rating%%.',
|
||||
|
||||
/**
|
||||
* Поиск
|
||||
*/
|
||||
'search_submit' => 'Найти',
|
||||
'search_results' => 'Результаты поиска',
|
||||
'search_results_empty' => 'Удивительно, но поиск не дал результатов',
|
||||
'search_results_count_topics' => 'топиков',
|
||||
'search_results_count_comments' => 'комментариев',
|
||||
|
||||
|
||||
/**
|
||||
* Declensions
|
||||
*/
|
||||
'reader_declension' => 'читатель;читателя;читателей',
|
||||
|
||||
'topic_declension' => 'топик;топика;топиков',
|
||||
'draft_declension' => 'черновик;черновика;черновиков',
|
||||
/**
|
||||
* Популярные блоги
|
||||
*/
|
||||
'blog_popular' => 'Популярные блоги',
|
||||
'blog_popular_rating' => 'Рейтинг',
|
||||
'blog_popular_all' => 'все блоги',
|
||||
/**
|
||||
* Пользователи блога
|
||||
*/
|
||||
'blog_user_count' => 'подписчиков',
|
||||
'blog_user_administrators' => 'Администраторы',
|
||||
'blog_user_moderators' => 'Модераторы',
|
||||
'blog_user_moderators_empty' => 'Модераторов здесь не замечено',
|
||||
'blog_user_readers' => 'Читатели',
|
||||
'blog_user_readers_all' => 'Все читатели блога',
|
||||
'blog_user_readers_empty' => 'Читателей здесь не замечено',
|
||||
/**
|
||||
* Голосование за блог
|
||||
*/
|
||||
'blog_vote_up' => 'нравится',
|
||||
'blog_vote_down' => 'не нравится',
|
||||
'blog_vote_count_text' => 'всего проголосовавших:',
|
||||
'blog_vote_error_already' => 'Вы уже голосовали за этот блог!',
|
||||
'blog_vote_error_self' => 'Вы не можете голосовать за свой блог!',
|
||||
'blog_vote_error_acl' => 'У вас не хватает рейтинга и силы для голосования!',
|
||||
'blog_vote_error_close' => 'Вы не можете голосовать за закрытый блог',
|
||||
'blog_vote_ok' => 'Ваш голос учтен',
|
||||
/**
|
||||
* Вступление и выход из блога
|
||||
*/
|
||||
'blog_join' => 'вступить в блог',
|
||||
'blog_join_ok' => 'Вы вступили в блог',
|
||||
'blog_join_error_invite' => 'Присоединиться к этому блогу можно только по приглашению!',
|
||||
'blog_join_error_self' => 'Зачем вы хотите вступить в этот блог? Вы и так его хозяин!',
|
||||
'blog_leave' => 'покинуть блог',
|
||||
'blog_leave_ok' => 'Вы покинули блог',
|
||||
'blog_join_leave' => 'Вступить/Покинуть',
|
||||
/**
|
||||
* Меню блогов
|
||||
*/
|
||||
|
@ -115,87 +351,8 @@ return array(
|
|||
'blog_menu_top_period_30d' => 'За 30 дней',
|
||||
'blog_menu_top_period_all' => 'За все время',
|
||||
'blog_menu_create' => 'Блог',
|
||||
/**
|
||||
* Создание/редактирование блога
|
||||
*/
|
||||
'blog_edit' => 'Редактировать',
|
||||
'blog_delete' => 'Удалить',
|
||||
'blog_create' => 'Создание нового блога',
|
||||
'blog_create_acl' => 'Вы еще не достаточно окрепли, чтобы создавать свой блог',
|
||||
'blog_create_category' => 'Категория блога',
|
||||
'blog_create_category_notice' => 'Блогу можно назначить категорию, что позволяет более глубоко структурировать сайт',
|
||||
'blog_create_category_error' => 'Не удалось найти категорию блога',
|
||||
'blog_create_category_error_only_children' => 'Можно выбрать только конечную категорию (без дочерних)',
|
||||
'blog_create_title' => 'Название блога',
|
||||
'blog_create_title_notice' => 'Название блога должно быть наполнено смыслом, чтобы можно было понять, о чем будет блог.',
|
||||
'blog_create_title_error' => 'Название блога должно быть от 2 до 200 символов',
|
||||
'blog_create_title_error_unique' => 'Блог с таким названием уже существует',
|
||||
'blog_create_url' => 'URL блога',
|
||||
'blog_create_url_notice' => 'URL блога, по которому он будет доступен. Может содержать только буквы латинского алфавита, цифры, дефис; пробелы будут заменены на "_". По смыслу URL должен совпадать с названием блога, после его создания редактирование этого параметра будет недоступно',
|
||||
'blog_create_url_error' => 'URL блога должен быть от 2 до 50 символов и только на латинице + цифры и знаки "-", "_"',
|
||||
'blog_create_url_error_badword' => 'URL блога должен отличаться от:',
|
||||
'blog_create_url_error_unique' => 'Блог с таким URL уже существует',
|
||||
'blog_create_description' => 'Описание блога',
|
||||
'blog_create_description_notice' => 'Между прочим, можно использовать html-теги',
|
||||
'blog_create_description_error' => 'Текст описания блога должен быть от 10 до 3000 символов',
|
||||
'blog_create_type' => 'Тип блога',
|
||||
'blog_create_type_open' => 'Открытый',
|
||||
'blog_create_type_close' => 'Закрытый',
|
||||
'blog_create_type_open_notice' => 'Открытый — к этому блогу может присоединиться любой желающий, топики видны всем',
|
||||
'blog_create_type_close_notice' => 'Закрытый — присоединиться можно только по приглашению администрации блога, топики видят только подписчики',
|
||||
'blog_create_type_error' => 'Неизвестный тип блога',
|
||||
'blog_create_rating' => 'Ограничение по рейтингу',
|
||||
'blog_create_rating_notice' => 'Рейтинг, который необходим пользователю, чтобы написать в этот блог',
|
||||
'blog_create_rating_error' => 'Значение ограничения рейтинга должно быть числом',
|
||||
'blog_create_avatar' => 'Аватар',
|
||||
'blog_create_avatar_error' => 'Не удалось загрузить аватар',
|
||||
'blog_create_avatar_delete' => 'удалить',
|
||||
'blog_create_submit' => 'Создать',
|
||||
'blog_create_update' => 'Сохранить изменения',
|
||||
'blog_create_submit_notice' => 'После нажатия на кнопку «Сохранить» блог будет создан',
|
||||
/**
|
||||
* Управление блогом
|
||||
*/
|
||||
'blog_admin' => 'Управление блогом',
|
||||
'blog_admin_not_authorization' => 'Для того, чтобы изменить блог, сначала нужно войти под своим аккаунтом.',
|
||||
'blog_admin_profile' => 'Профиль',
|
||||
'blog_admin_users' => 'Пользователи',
|
||||
'blog_admin_users_administrator' => 'администратор',
|
||||
'blog_admin_users_moderator' => 'модератор',
|
||||
'blog_admin_users_reader' => 'читатель',
|
||||
'blog_admin_users_bun' => 'забаненный',
|
||||
'blog_admin_users_current_administrator' => 'это вы — настоящий администратор!',
|
||||
'blog_admin_users_empty' => 'в блоге никто не состоит',
|
||||
'blog_admin_users_submit' => 'сохранить',
|
||||
'blog_admin_users_submit_notice' => 'После нажатия на кнопку «Сохранить» права пользователей будут сохранены',
|
||||
'blog_admin_users_submit_ok' => 'Права сохранены',
|
||||
'blog_admin_users_submit_error' => 'Что-то не так',
|
||||
'blog_admin_delete_title' => 'Удаление блога',
|
||||
'blog_admin_delete_confirm' => 'Вы уверены, что хотите удалить блог?',
|
||||
'blog_admin_delete_move' => 'Переместить топики в блог',
|
||||
'blog_delete_clear' => 'Удалить топики',
|
||||
'blog_admin_delete_success' => 'Блог успешно удален',
|
||||
'blog_admin_delete_not_empty' => 'Вы не можете удалить блок с записями. Предварительно удалите из блога все записи.',
|
||||
'blog_admin_delete_move_error' => 'Не удалось переместить топики из удаляемого блога',
|
||||
'blog_admin_delete_move_personal' => 'Нельзя перемещать топики в персональный блог',
|
||||
'blog_admin_user_add_label' => 'Добавить пользователей',
|
||||
'blog_admin_user_invited' => 'Список приглашенных',
|
||||
'blog_admin_user_add_header' => 'Пригласить пользователей',
|
||||
'blog_admin_user_add_empty' => 'Нет приглашенных пользователей',
|
||||
'blog_close_show' => 'Это закрытый блог, у вас нет прав на просмотр контента',
|
||||
'blog_user_invite_add_self' => 'Нельзя отправить инвайт самому себе',
|
||||
'blog_user_invite_add_ok' => 'Пользователю %%login%% отправлено приглашение',
|
||||
'blog_user_invite_remove_ok' => 'Приглашение для пользователя %%login%% удалено',
|
||||
'blog_user_already_invited' => 'Пользователю %%login%% уже отправлен инвайт',
|
||||
'blog_user_already_exists' => 'Пользователь %%login%% уже состоит в блоге',
|
||||
'blog_user_already_reject' => 'Пользователь %%login%% отклонил инвайт',
|
||||
'blog_user_invite_title' => "Приглашение стать читателем блога '%%blog_title%%'",
|
||||
'blog_user_invite_text' => "Пользователь %%login%% приглашает вас стать читателем закрытого блога '%%blog_title%%'.<br/><br/><a href='%%accept_path%%'>Принять</a> - <a href='%%reject_path%%'>Отклонить</a>",
|
||||
'blog_user_invite_already_done' => 'Вы уже являетесь пользователем этого блога',
|
||||
'blog_user_invite_accept' => 'Приглашение принято',
|
||||
'blog_user_invite_reject' => 'Приглашение отклонено',
|
||||
'blog_user_invite_readd' => 'повторить',
|
||||
'blog_user_invite_remove' => 'удалить',
|
||||
|
||||
|
||||
/**
|
||||
* Топики
|
||||
*/
|
||||
|
@ -330,6 +487,7 @@ return array(
|
|||
*/
|
||||
'topic_vote_up' => 'нравится',
|
||||
'topic_vote_down' => 'не нравится',
|
||||
'topic_vote_abstain' => 'Воздержаться от голосования и посмотреть рейтинг',
|
||||
'topic_vote_error_already' => 'Вы уже голосовали за этот топик!',
|
||||
'topic_vote_error_self' => 'Вы не можете голосовать за свой топик!',
|
||||
'topic_vote_error_guest' => 'для голосования необходимо авторизоваться',
|
||||
|
@ -451,6 +609,8 @@ return array(
|
|||
'user_search_empty' => 'Поиск не дал результатов',
|
||||
'user_status_online' => 'Онлайн',
|
||||
'user_status_offline' => 'Оффлайн',
|
||||
'user_status_was_online_male' => 'Заходил',
|
||||
'user_status_was_online_female' => 'Заходила',
|
||||
/**
|
||||
* Меню профиля пользователя
|
||||
*/
|
||||
|
@ -755,15 +915,6 @@ return array(
|
|||
'block_blog_navigator_button' => 'Смотреть',
|
||||
'site_history_back' => 'Вернуться назад',
|
||||
'site_go_main' => 'перейти на главную',
|
||||
/**
|
||||
* Поиск
|
||||
*/
|
||||
'search' => 'Поиск',
|
||||
'search_submit' => 'Найти',
|
||||
'search_results' => 'Результаты поиска',
|
||||
'search_results_empty' => 'Удивительно, но поиск не дал результатов',
|
||||
'search_results_count_topics' => 'топиков',
|
||||
'search_results_count_comments' => 'комментариев',
|
||||
/**
|
||||
* Почта
|
||||
*/
|
||||
|
@ -1081,17 +1232,6 @@ return array(
|
|||
'favourite_form_tags_button_save' => 'Сохранить',
|
||||
'favourite_form_tags_button_cancel' => 'Отмена',
|
||||
'favourite_form_tags_button_show' => 'изменить свои теги',
|
||||
/**
|
||||
* Инфо-блоки
|
||||
*/
|
||||
'infobox_blog_create' => 'Создан',
|
||||
'infobox_blog_topics' => 'Топиков',
|
||||
'infobox_blog_users' => 'Подписчиков',
|
||||
'infobox_blog_rating' => 'Рейтинг',
|
||||
'infobox_blog_limit_rating' => 'Ограничение на постинг',
|
||||
'infobox_blog_topic_last' => 'Последний топик',
|
||||
'infobox_blog_url' => 'Читать блог',
|
||||
'infobox_blog_rss' => 'Подписаться на RSS',
|
||||
/**
|
||||
* Создание
|
||||
*/
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
* TODO: Вынести rangelength в конфиг
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_options'}
|
||||
{block 'layout_options'}
|
||||
{$bNoSidebar = true}
|
||||
|
||||
{if $sEvent == 'edit'}
|
||||
|
@ -13,17 +13,17 @@
|
|||
{/if}
|
||||
{/block}
|
||||
|
||||
{block name='layout_page_title'}
|
||||
{block 'layout_page_title'}
|
||||
{if $sEvent == 'add'}
|
||||
{$aLang.blog_create}
|
||||
{$aLang.blog.add.title}
|
||||
{else}
|
||||
{$aLang.blog_admin}: <a href="{$oBlogEdit->getUrlFull()}">{$oBlogEdit->getTitle()|escape:'html'}</a>
|
||||
{$aLang.blog.admin.title}: <a href="{$oBlogEdit->getUrlFull()}">{$oBlogEdit->getTitle()|escape}</a>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block name='layout_content'}
|
||||
{block 'layout_content'}
|
||||
{* Подключение редактора *}
|
||||
{include file='forms/editor.init.tpl' sEditorType='comment'}
|
||||
{include 'forms/editor.init.tpl' sEditorType='comment'}
|
||||
|
||||
|
||||
<form method="post" enctype="multipart/form-data" class="js-form-validate">
|
||||
|
@ -31,19 +31,19 @@
|
|||
|
||||
|
||||
{* Название блога *}
|
||||
{include file='forms/fields/form.field.text.tpl'
|
||||
{include 'forms/fields/form.field.text.tpl'
|
||||
sFieldName = 'blog_title'
|
||||
sFieldRules = 'required="true" rangelength="[2,200]"'
|
||||
sFieldNote = $aLang.blog_create_title_notice
|
||||
sFieldLabel = $aLang.blog_create_title}
|
||||
sFieldNote = $aLang.blog.add.fields.title.note
|
||||
sFieldLabel = $aLang.blog.add.fields.title.label}
|
||||
|
||||
{* URL блога *}
|
||||
{include file='forms/fields/form.field.text.tpl'
|
||||
{include 'forms/fields/form.field.text.tpl'
|
||||
sFieldName = 'blog_url'
|
||||
sFieldRules = 'required="true" type="alphanum" rangelength="[2,50]"'
|
||||
bFieldIsDisabled = $_aRequest.blog_id && ! $oUserCurrent->isAdministrator()
|
||||
sFieldNote = $aLang.blog_create_url_notice
|
||||
sFieldLabel = $aLang.blog_create_url}
|
||||
sFieldNote = $aLang.blog.add.fields.url.note
|
||||
sFieldLabel = $aLang.blog.add.fields.url.label}
|
||||
|
||||
|
||||
{* Категория блога *}
|
||||
|
@ -59,10 +59,10 @@
|
|||
]}
|
||||
{/foreach}
|
||||
|
||||
{include file='forms/fields/form.field.select.tpl'
|
||||
{include 'forms/fields/form.field.select.tpl'
|
||||
sFieldName = 'blog_category'
|
||||
sFieldLabel = $aLang.blog_create_category
|
||||
sFieldNote = $aLang.blog_create_category_notice
|
||||
sFieldLabel = $aLang.blog.add.fields.category.label
|
||||
sFieldNote = $aLang.blog.add.fields.category.note
|
||||
sFieldClasses = 'width-200'
|
||||
aFieldItems = $aBlogCategoriesCustom
|
||||
sFieldSelectedValue = $_aRequest.blog_category}
|
||||
|
@ -71,40 +71,40 @@
|
|||
|
||||
{* Тип блога *}
|
||||
{$aBlogsType = [
|
||||
[ 'value' => 'open', 'text' => $aLang.blog_create_type_open ],
|
||||
[ 'value' => 'close', 'text' => $aLang.blog_create_type_close ]
|
||||
[ 'value' => 'open', 'text' => $aLang.blog.add.fields.type.value_open ],
|
||||
[ 'value' => 'close', 'text' => $aLang.blog.add.fields.type.value_close ]
|
||||
]}
|
||||
|
||||
{include file='forms/fields/form.field.select.tpl'
|
||||
{include 'forms/fields/form.field.select.tpl'
|
||||
sFieldName = 'blog_type'
|
||||
sFieldLabel = $aLang.blog_create_type
|
||||
sFieldNote = $aLang.blog_create_type_open_notice
|
||||
sFieldLabel = $aLang.blog.add.fields.type.label
|
||||
sFieldNote = $aLang.blog.add.fields.type.note_open
|
||||
sFieldClasses = 'width-200 js-blog-add-type'
|
||||
aFieldItems = $aBlogsType
|
||||
sFieldSelectedValue = $_aRequest.blog_type}
|
||||
|
||||
|
||||
{* Описание блога *}
|
||||
{include file='forms/fields/form.field.textarea.tpl'
|
||||
{include 'forms/fields/form.field.textarea.tpl'
|
||||
sFieldName = 'blog_description'
|
||||
sFieldRules = 'required="true" rangelength="[10,3000]"'
|
||||
sFieldLabel = $aLang.blog_create_description
|
||||
sFieldLabel = $aLang.blog.add.fields.description.label
|
||||
sFieldClasses = 'width-full js-editor'}
|
||||
|
||||
{* Если визуальный редактор отключен выводим справку по разметке для обычного редактора *}
|
||||
{if ! $oConfig->GetValue('view.wysiwyg')}
|
||||
{include file='forms/editor.help.tpl' sTagsTargetId='blog_description'}
|
||||
{include 'forms/editor.help.tpl' sTagsTargetId='blog_description'}
|
||||
{/if}
|
||||
|
||||
|
||||
{* Ограничение по рейтингу *}
|
||||
{include file='forms/fields/form.field.text.tpl'
|
||||
{include 'forms/fields/form.field.text.tpl'
|
||||
sFieldName = 'blog_limit_rating_topic'
|
||||
sFieldRules = 'required="true" type="number"'
|
||||
sFieldValue = '0'
|
||||
sFieldClasses = 'width-100'
|
||||
sFieldNote = $aLang.blog_create_rating_notice
|
||||
sFieldLabel = $aLang.blog_create_rating}
|
||||
sFieldNote = $aLang.blog.add.fields.rating.note
|
||||
sFieldLabel = $aLang.blog.add.fields.rating.label}
|
||||
|
||||
|
||||
{* Аватар *}
|
||||
|
@ -113,27 +113,28 @@
|
|||
{if $iSize}<img src="{$oBlogEdit->getAvatarPath({$iSize})}">{/if}
|
||||
{/foreach}
|
||||
|
||||
{include file='forms/fields/form.field.checkbox.tpl' sFieldName='avatar_delete' bFieldNoMargin=true sFieldValue='on' sFieldLabel=$aLang.blog_create_avatar_delete}
|
||||
{include 'forms/fields/form.field.checkbox.tpl' sFieldName='avatar_delete' bFieldNoMargin=true sFieldValue='on' sFieldLabel=$aLang.common.remove}
|
||||
{/if}
|
||||
|
||||
{include file='forms/fields/form.field.file.tpl'
|
||||
{include 'forms/fields/form.field.file.tpl'
|
||||
sFieldName = 'avatar'
|
||||
sFieldLabel = $aLang.blog_create_avatar}
|
||||
sFieldLabel = $aLang.blog.add.fields.avatar.label}
|
||||
|
||||
|
||||
{hook run='form_add_blog_end'}
|
||||
|
||||
|
||||
{* Скрытые поля *}
|
||||
{include file='forms/fields/form.field.hidden.security_key.tpl'}
|
||||
{include 'forms/fields/form.field.hidden.security_key.tpl'}
|
||||
|
||||
|
||||
{* Кнопки *}
|
||||
{if $sEvent == 'add'}
|
||||
{$sSubmitInputText = $aLang.blog_create_submit}
|
||||
{$sSubmitInputText = $aLang.common.create}
|
||||
{else}
|
||||
{$sSubmitInputText = $aLang.topic_create_submit_update}
|
||||
{$sSubmitInputText = $aLang.common.save}
|
||||
{/if}
|
||||
{include file='forms/fields/form.field.button.tpl' sFieldName='submit_blog_add' sFieldText=$sSubmitInputText sFieldStyle='primary'}
|
||||
|
||||
{include 'forms/fields/form.field.button.tpl' sFieldName='submit_blog_add' sFieldText=$sSubmitInputText sFieldStyle='primary'}
|
||||
</form>
|
||||
{/block}
|
|
@ -1,30 +1,35 @@
|
|||
{**
|
||||
* Управление пользователями блога
|
||||
*
|
||||
* @param object oBlogEdit Блог
|
||||
* @param array aBlogUsers Список пользователей
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_options'}
|
||||
{if $oBlogEdit->getType() != 'close'}
|
||||
{$bNoSidebar = true}
|
||||
{/if}
|
||||
|
||||
{block name='layout_options'}
|
||||
{$sNav = 'blog.edit'}
|
||||
{/block}
|
||||
|
||||
{block name='layout_page_title'}
|
||||
{$aLang.blog_admin}: <a href="{$oBlogEdit->getUrlFull()}">{$oBlogEdit->getTitle()|escape:'html'}</a>
|
||||
{block 'layout_page_title'}
|
||||
{$aLang.blog.admin.title}: <a href="{$oBlogEdit->getUrlFull()}">{$oBlogEdit->getTitle()|escape}</a>
|
||||
{/block}
|
||||
|
||||
{block name='layout_content'}
|
||||
{block 'layout_content'}
|
||||
{if $aBlogUsers}
|
||||
<form method="post" enctype="multipart/form-data" class="mb-20">
|
||||
<input type="hidden" name="security_ls_key" value="{$LIVESTREET_SECURITY_KEY}" />
|
||||
|
||||
<table class="table table-users">
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="cell-name">{$aLang.blog_admin_users}</th>
|
||||
<th class="ta-c">{$aLang.blog_admin_users_administrator}</th>
|
||||
<th class="ta-c">{$aLang.blog_admin_users_moderator}</th>
|
||||
<th class="ta-c">{$aLang.blog_admin_users_reader}</th>
|
||||
<th class="ta-c">{$aLang.blog_admin_users_bun}</th>
|
||||
<th class="cell-name"></th>
|
||||
<th class="ta-c">{$aLang.blog.admin.role_administrator}</th>
|
||||
<th class="ta-c">{$aLang.blog.admin.role_moderator}</th>
|
||||
<th class="ta-c">{$aLang.blog.admin.role_reader}</th>
|
||||
<th class="ta-c">{$aLang.blog.admin.role_banned}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
@ -34,28 +39,31 @@
|
|||
|
||||
<tr>
|
||||
<td class="cell-name">
|
||||
<a href="{$oUser->getUserWebPath()}"><img src="{$oUser->getProfileAvatarPath(24)}" alt="avatar" class="avatar" /></a>
|
||||
<a href="{$oUser->getUserWebPath()}">{$oUser->getDisplayName()}</a>
|
||||
{include 'user_item.tpl' oUser=$oUser}
|
||||
</td>
|
||||
|
||||
{if $oUser->getId()==$oUserCurrent->getId()}
|
||||
<td colspan="10" class="ta-c">{$aLang.blog_admin_users_current_administrator}</td>
|
||||
{if $oUser->getId() == $oUserCurrent->getId()}
|
||||
<td colspan="10" class="ta-c">—</td>
|
||||
{else}
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="administrator" {if $oBlogUser->getIsAdministrator()}checked{/if} /></td>
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="moderator" {if $oBlogUser->getIsModerator()}checked{/if} /></td>
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="reader" {if $oBlogUser->getUserRole()==$BLOG_USER_ROLE_USER}checked{/if} /></td>
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="ban" {if $oBlogUser->getUserRole()==$BLOG_USER_ROLE_BAN}checked{/if} /></td>
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="reader" {if $oBlogUser->getUserRole() == $BLOG_USER_ROLE_USER}checked{/if} /></td>
|
||||
<td class="ta-c"><input type="radio" name="user_rank[{$oUser->getId()}]" value="ban" {if $oBlogUser->getUserRole() == $BLOG_USER_ROLE_BAN}checked{/if} /></td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button type="submit" name="submit_blog_admin" class="button button-primary">{$aLang.blog_admin_users_submit}</button>
|
||||
{* Скрытые поля *}
|
||||
{include 'forms/fields/form.field.hidden.security_key.tpl'}
|
||||
|
||||
{* Кнопки *}
|
||||
{include 'forms/fields/form.field.button.tpl' sFieldName='submit_blog_admin' sFieldText=$aLang.common.save sFieldStyle='primary'}
|
||||
</form>
|
||||
|
||||
{include file='pagination.tpl' aPaging=$aPaging}
|
||||
{include 'pagination.tpl' aPaging=$aPaging}
|
||||
{else}
|
||||
{$aLang.blog_admin_users_empty}
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.admin.alerts.empty sAlertStyle='empty'}
|
||||
{/if}
|
||||
{/block}
|
|
@ -1,183 +1,103 @@
|
|||
{**
|
||||
* Блог
|
||||
*
|
||||
* bCloseBlog true если блог закрытый
|
||||
* @param object $oBlog Блог
|
||||
* @param array $aBlogUsers Читатели блога
|
||||
* @param array $aBlogModerators Модераторы блога
|
||||
* @param array $aBlogAdministrators Администраторы блога
|
||||
* @param integer $iCountBlogUsers Кол-во читателей
|
||||
* @param integer $iCountBlogModerators Кол-во модераторов
|
||||
* @param integer $iCountBlogAdministrators Кол-во администраторов
|
||||
* @param boolean $bPrivateBlog Закрытый блог или нет
|
||||
*
|
||||
* @styles css/blog.css
|
||||
* @scripts <framework>/js/livestreet/blog.js
|
||||
*
|
||||
* TODO: Fix alerts
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_content'}
|
||||
{$oUserOwner = $oBlog->getOwner()}
|
||||
{$oVote = $oBlog->getVote()}
|
||||
|
||||
<script>
|
||||
jQuery(function($){
|
||||
ls.lang.load({lang_load name="blog_fold_info,blog_expand_info"});
|
||||
});
|
||||
</script>
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{* Подключаем модальное окно удаления блога если пользователь админ *}
|
||||
{if $oUserCurrent and $oUserCurrent->isAdministrator()}
|
||||
{include file='modals/modal.blog_delete.tpl'}
|
||||
{include 'modals/modal.blog_delete.tpl'}
|
||||
{/if}
|
||||
|
||||
|
||||
<div class="blog">
|
||||
<header class="blog-header">
|
||||
{* Голосование за блог *}
|
||||
<div data-vote-type="blog"
|
||||
data-vote-id="{$oBlog->getId()}"
|
||||
class="vote js-vote
|
||||
{if $oBlog->getRating() > 0}
|
||||
vote-count-positive
|
||||
{elseif $oBlog->getRating() < 0}
|
||||
vote-count-negative
|
||||
{/if}
|
||||
|
||||
{if $oVote}
|
||||
voted
|
||||
|
||||
{if $oVote->getDirection() > 0}
|
||||
voted-up
|
||||
{elseif $oVote->getDirection() < 0}
|
||||
voted-down
|
||||
{/if}
|
||||
{/if}">
|
||||
<div class="vote-label">{$aLang.blog_rating}</div>
|
||||
<a href="#" class="vote-up js-vote-up"><i></i></a>
|
||||
<a href="#" class="vote-down js-vote-down"><i></i></a>
|
||||
<div class="vote-count count js-vote-rating" title="{$aLang.blog_vote_count}: {$oBlog->getCountVote()}">{if $oBlog->getRating() > 0}+{/if}{$oBlog->getRating()}</div>
|
||||
</div>
|
||||
|
||||
{* Аватар *}
|
||||
<img src="{$oBlog->getAvatarPath(48)}" alt="avatar" class="avatar" />
|
||||
{* Голосование *}
|
||||
{include 'vote.tpl' sVoteType='blog' sVoteStyle='large' oVoteObject=$oBlog bVoteShowLabel=true}
|
||||
|
||||
{* Заголовок *}
|
||||
<h2 class="page-header blog-title">
|
||||
{if $oBlog->getType() == 'close'}
|
||||
<i title="{$aLang.blog_closed}" class="icon icon-lock"></i>
|
||||
{/if}
|
||||
|
||||
{$oBlog->getTitle()|escape:'html'}
|
||||
{if $oBlog->getType() == 'close'}<i title="{$aLang.blog.private}" class="icon icon-lock"></i>{/if}
|
||||
{$oBlog->getTitle()|escape}
|
||||
</h2>
|
||||
|
||||
{* Управление *}
|
||||
<ul class="actions">
|
||||
<li><a href="{router page='rss'}blog/{$oBlog->getUrl()}/" class="rss">RSS</a></li>
|
||||
|
||||
{* Вступить/покинуть блог *}
|
||||
{if $oUserCurrent and $oUserCurrent->getId() != $oBlog->getOwnerId()}
|
||||
<li>
|
||||
<a href="#" onclick="ls.blog.toggleJoin(this,{$oBlog->getId()}); return false;" class="link-dotted">
|
||||
{if $oBlog->getUserIsJoin()}
|
||||
{$aLang.blog_leave}
|
||||
{else}
|
||||
{$aLang.blog_join}
|
||||
{/if}
|
||||
</a>
|
||||
</li>
|
||||
{/if}
|
||||
|
||||
{* Администрирование *}
|
||||
{if $oUserCurrent and ($oUserCurrent->getId() == $oBlog->getOwnerId() or $oUserCurrent->isAdministrator() or $oBlog->getUserIsAdministrator() )}
|
||||
<li>
|
||||
<a href="{router page='blog'}edit/{$oBlog->getId()}/" title="{$aLang.blog_edit}" class="edit">{$aLang.blog_edit}</a>
|
||||
</li>
|
||||
|
||||
{if $oUserCurrent->isAdministrator()}
|
||||
<li><a href="#" title="{$aLang.blog_delete}" data-type="modal-toggle" data-modal-target="modal-blog-delete" class="delete">{$aLang.blog_delete}</a></li>
|
||||
{else}
|
||||
<li><a href="{router page='blog'}delete/{$oBlog->getId()}/?security_ls_key={$LIVESTREET_SECURITY_KEY}"
|
||||
title="{$aLang.blog_delete}"
|
||||
onclick="return confirm('{$aLang.blog_admin_delete_confirm}');" >{$aLang.blog_delete}</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
</ul>
|
||||
</header>
|
||||
|
||||
|
||||
{* Информация о блоге *}
|
||||
<div class="blog-content" id="blog-more-content" style="display: none;">
|
||||
<div class="blog-description text">
|
||||
{$oBlog->getDescription()}
|
||||
</div>
|
||||
<div class="blog-content">
|
||||
{* Описание *}
|
||||
<div class="blog-description text">{$oBlog->getDescription()}</div>
|
||||
|
||||
{* Информация *}
|
||||
{$aBlogInfo = [
|
||||
$aLang.blog.date_created => "{date_format date=$oBlog->getDateAdd() hours_back='12' minutes_back='60' now='60' day='day H:i' format='j F Y'}",
|
||||
$aLang.blog.topics_total => $oBlog->getCountTopic(),
|
||||
$aLang.blog.rating_limit => $oBlog->getLimitRatingTopic()
|
||||
]}
|
||||
|
||||
<div class="blog-info">
|
||||
{hook run='blog_info_begin' oBlog=$oBlog}
|
||||
|
||||
<strong>{$aLang.blog_user_administrators} ({$iCountBlogAdministrators}):</strong>
|
||||
|
||||
{* Создатель блога *}
|
||||
<a href="{$oUserOwner->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUserOwner->getDisplayName()}</a>
|
||||
|
||||
{* Список администраторов блога *}
|
||||
{if $aBlogAdministrators}
|
||||
{foreach $aBlogAdministrators as $oBlogUser}
|
||||
{$oUser = $oBlogUser->getUser()}
|
||||
|
||||
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getDisplayName()}</a>
|
||||
{/foreach}
|
||||
{/if}
|
||||
<br />
|
||||
|
||||
|
||||
{* Список модераторов блога *}
|
||||
<strong>{$aLang.blog_user_moderators} ({$iCountBlogModerators}):</strong>
|
||||
|
||||
{if $aBlogModerators}
|
||||
{foreach $aBlogModerators as $oBlogUser}
|
||||
{$oUser = $oBlogUser->getUser()}
|
||||
|
||||
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getDisplayName()}</a>
|
||||
{/foreach}
|
||||
{else}
|
||||
{$aLang.blog_user_moderators_empty}
|
||||
{/if}
|
||||
<br />
|
||||
|
||||
|
||||
{* Список подписавшихся пользователей *}
|
||||
<strong>{$aLang.blog_user_readers} ({$iCountBlogUsers}):</strong>
|
||||
|
||||
{if $aBlogUsers}
|
||||
{foreach $aBlogUsers as $oBlogUser}
|
||||
{$oUser = $oBlogUser->getUser()}
|
||||
|
||||
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getDisplayName()}</a>
|
||||
{/foreach}
|
||||
|
||||
{* Если пользователей слишком много, то показываем ссылку на страницу со всеми пользователями *}
|
||||
{if count($aBlogUsers) < $iCountBlogUsers}
|
||||
<br /><a href="{$oBlog->getUrlFull()}users/">{$aLang.blog_user_readers_all}</a>
|
||||
{/if}
|
||||
{else}
|
||||
{$aLang.blog_user_readers_empty}
|
||||
{/if}
|
||||
|
||||
{hook run='blog_info_end' oBlog=$oBlog}
|
||||
</div>
|
||||
<ul class="blog-info">
|
||||
{foreach $aBlogInfo as $aBlogInfoItem}
|
||||
<li class="blog-info-item">
|
||||
<span class="blog-info-item-label">{$aBlogInfoItem@key}:</span>
|
||||
<strong class="blog-info-item-content">{$aBlogInfoItem@value}</strong>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
{* Кнопка показывающая/скрывающая информацию о блоге *}
|
||||
<footer class="blog-footer">
|
||||
<a href="#" class="get-more" id="blog-more" onclick="return ls.blog.toggleInfo()">{$aLang.blog_expand_info}</a>
|
||||
</footer>
|
||||
{* Управление *}
|
||||
{if $oUserCurrent && ($oUserCurrent->getId() == $oBlog->getOwnerId() || $oUserCurrent->isAdministrator() || $oBlog->getUserIsAdministrator() )}
|
||||
<ul class="actions">
|
||||
<li>
|
||||
<i class="icon-edit icon-white"></i>
|
||||
<a href="{router page='blog'}edit/{$oBlog->getId()}/">{$aLang.common.edit}</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<i class="icon-trash icon-white"></i>
|
||||
|
||||
{if $oUserCurrent->isAdministrator()}
|
||||
<a href="#" data-type="modal-toggle" data-modal-target="modal-blog-delete">{$aLang.common.remove}</a>
|
||||
{else}
|
||||
<a href="{router page='blog'}delete/{$oBlog->getId()}/?security_ls_key={$LIVESTREET_SECURITY_KEY}" class="js-blog-remove">{$aLang.common.remove}</a>
|
||||
{/if}
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{hook run='blog_info' oBlog=$oBlog}
|
||||
|
||||
{* Сообщение для забаненного пользователя *}
|
||||
{* TODO: Вывод сообщения о бане *}
|
||||
{if false}
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.alerts.banned sAlertStyle='error'}
|
||||
{/if}
|
||||
|
||||
{* Навигация по топикам блога *}
|
||||
<div class="nav-group">
|
||||
{include file='navs/nav.topics.sub.tpl'}
|
||||
{include 'navs/nav.topics.sub.tpl'}
|
||||
</div>
|
||||
|
||||
{if $bCloseBlog}
|
||||
{$aLang.blog_close_show}
|
||||
{* Список топиков *}
|
||||
{if $bPrivateBlog}
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.alerts.private sAlertStyle='error'}
|
||||
{else}
|
||||
{include file='topics/topic_list.tpl'}
|
||||
{include 'topics/topic_list.tpl'}
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,16 @@
|
|||
{**
|
||||
* Кнопка Вступить / Покинуть блог
|
||||
*
|
||||
* @param object $oBlog Блог
|
||||
* @param object $oUserCurrent Текущий пользователь
|
||||
*
|
||||
* @scripts <framework>/js/livestreet/blog.js
|
||||
*}
|
||||
|
||||
{if $oUserCurrent && $oUserCurrent->getId() != $oBlog->getOwnerId() && $oBlog->getType() == 'open'}
|
||||
{include 'forms/fields/form.field.button.tpl'
|
||||
sFieldAttributes = "data-blog-id=\"{$oBlog->getId()}\""
|
||||
sFieldClasses = 'js-blog-join'
|
||||
sFieldText = ($oBlog->getUserIsJoin()) ? $aLang.blog.join.leave : $aLang.blog.join.join
|
||||
sFieldStyle = ($oBlog->getUserIsJoin()) ? false : 'primary'}
|
||||
{/if}
|
|
@ -2,12 +2,12 @@
|
|||
* Список топиков только из коллективных блогов
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_options'}
|
||||
{block 'layout_options'}
|
||||
{$sNav = 'topics'}
|
||||
{/block}
|
||||
|
||||
{block name='layout_content'}
|
||||
{include file='topics/topic_list.tpl'}
|
||||
{block 'layout_content'}
|
||||
{include 'topics/topic_list.tpl'}
|
||||
{/block}
|
|
@ -2,22 +2,21 @@
|
|||
* Топик
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_content'}
|
||||
{include file='topics/topic.tpl'}
|
||||
{include
|
||||
file='comments/comment_tree.tpl'
|
||||
iTargetId=$oTopic->getId()
|
||||
iAuthorId=$oTopic->getUserId()
|
||||
sAuthorNotice=$aLang.topic_author
|
||||
sTargetType='topic'
|
||||
iCountComment=$oTopic->getCountComment()
|
||||
sDateReadLast=$oTopic->getDateRead()
|
||||
bAllowNewComment=$oTopic->getForbidComment()
|
||||
sNoticeNotAllow=$aLang.topic_comment_notallow
|
||||
sNoticeCommentAdd=$aLang.topic_comment_add
|
||||
bAllowSubscribe=true
|
||||
oSubscribeComment=$oTopic->getSubscribeNewComment()
|
||||
aPagingCmt=$aPagingCmt}
|
||||
{block 'layout_content'}
|
||||
{include 'topics/topic.tpl'}
|
||||
{include 'comments/comment_tree.tpl'
|
||||
iTargetId = $oTopic->getId()
|
||||
iAuthorId = $oTopic->getUserId()
|
||||
sAuthorNotice = $aLang.topic_author
|
||||
sTargetType = 'topic'
|
||||
iCountComment = $oTopic->getCountComment()
|
||||
sDateReadLast = $oTopic->getDateRead()
|
||||
bAllowNewComment = $oTopic->getForbidComment()
|
||||
sNoticeNotAllow = $aLang.topic_comment_notallow
|
||||
sNoticeCommentAdd = $aLang.topic_comment_add
|
||||
bAllowSubscribe = true
|
||||
oSubscribeComment = $oTopic->getSubscribeNewComment()
|
||||
aPagingCmt = $aPagingCmt}
|
||||
{/block}
|
|
@ -2,23 +2,13 @@
|
|||
* Список пользователей которые подключены к блогу
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_page_title'}
|
||||
{$aLang.blog_user_readers_all} ({$iCountBlogUsers}):
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape:'html'}</a>
|
||||
{block'layout_page_title'}
|
||||
{$aLang.blog.users.readers_all} ({$iCountBlogUsers}):
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape}</a>
|
||||
{/block}
|
||||
|
||||
{block name='layout_content'}
|
||||
{if $aBlogUsers}
|
||||
{$aUsersList = []}
|
||||
|
||||
{foreach $aBlogUsers as $oBlogUser}
|
||||
{$aUsersList[] = $oBlogUser->getUser()}
|
||||
{/foreach}
|
||||
|
||||
{include file='user_list.tpl' aUsersList=$aUsersList bUsersUseOrder=true sUsersRootPage=$sUsersRootPage}
|
||||
{else}
|
||||
{$aLang.blog_user_readers_empty}
|
||||
{/if}
|
||||
{block'layout_content'}
|
||||
{include 'user_list.tpl' aUsersList=$aBlogUsers bUsersUseOrder=true sUsersRootPage=$sUsersRootPage}
|
||||
{/block}
|
|
@ -1,94 +1,64 @@
|
|||
{**
|
||||
* Список блогов
|
||||
*
|
||||
* @styles css/tables.css
|
||||
* @styles css/blog.css
|
||||
* @scripts <frontend>/common/js/blog.js
|
||||
*}
|
||||
|
||||
<table class="table table-blogs">
|
||||
{if $bBlogsUseOrder}
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="cell-name"><a href="{$sBlogsRootPage}?order=blog_title&order_way={if $sBlogOrder=='blog_title'}{$sBlogOrderWayNext}{else}{$sBlogOrderWay}{/if}" {if $sBlogOrder=='blog_title'}class="{$sBlogOrderWay}"{/if}>{$aLang.blogs_title}</a></th>
|
||||
|
||||
{if $oUserCurrent}
|
||||
<th class="cell-join">{$aLang.blog_join_leave}</th>
|
||||
{/if}
|
||||
{* Список блогов *}
|
||||
{if $aBlogs}
|
||||
{* Сортировка *}
|
||||
{include 'sort.tpl'
|
||||
sSortName = 'sort-blog-list'
|
||||
aSortList = [ [ name => 'blog_title', text => $aLang.sort.by_name ],
|
||||
[ name => 'blog_count_user', text => $aLang.blog.sort.by_users ],
|
||||
[ name => 'blog_rating', text => $aLang.sort.by_rating ] ]
|
||||
sSortUrl = $sBlogsRootPage
|
||||
sSortOrder = $sBlogOrder
|
||||
sSortOrderWay = $sBlogOrderWay}
|
||||
|
||||
<th class="cell-readers">
|
||||
<a href="{$sBlogsRootPage}?order=blog_count_user&order_way={if $sBlogOrder=='blog_count_user'}{$sBlogOrderWayNext}{else}{$sBlogOrderWay}{/if}" {if $sBlogOrder=='blog_count_user'}class="{$sBlogOrderWay}"{/if}>{$aLang.blogs_readers}</a>
|
||||
</th>
|
||||
<th class="cell-rating align-center"><a href="{$sBlogsRootPage}?order=blog_rating&order_way={if $sBlogOrder=='blog_rating'}{$sBlogOrderWayNext}{else}{$sBlogOrderWay}{/if}" {if $sBlogOrder=='blog_rating'}class="{$sBlogOrderWay}"{/if}>{$aLang.blogs_rating}</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{* Список блогов *}
|
||||
<ul class="object-list object-list-actions blog-list">
|
||||
{foreach $aBlogs as $oBlog}
|
||||
<li class="object-list-item">
|
||||
{* Аватар *}
|
||||
<a href="{$oBlog->getUrlFull()}">
|
||||
<img src="{$oBlog->getAvatarPath(100)}" width="100" height="100" alt="{$oBlog->getTitle()|escape}" class="object-list-item-image" />
|
||||
</a>
|
||||
|
||||
{* Заголовок *}
|
||||
<h2 class="object-list-item-title">
|
||||
{if $oBlog->getType() == 'close'}
|
||||
<i title="{$aLang.blog.private}" class="icon-lock"></i>
|
||||
{/if}
|
||||
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape}</a>
|
||||
</h2>
|
||||
|
||||
{* Описание *}
|
||||
<p class="object-list-item-description">{$oBlog->getDescription()|strip_tags|truncate:120}</p>
|
||||
|
||||
{* Информация *}
|
||||
<ul class="object-list-item-info">
|
||||
<li>{$aLang.blog.users.readers_total}: <strong class="js-blog-users-number" data-blog-id="{$oBlog->getId()}">{$oBlog->getCountUser()}</strong></li>
|
||||
<li>{$aLang.vote.rating}: <strong>{$oBlog->getRating()}</strong></li>
|
||||
<li>{$aLang.blog.topics_total}: <strong>{$oBlog->getCountTopic()}</strong></li>
|
||||
</ul>
|
||||
|
||||
{* Действия *}
|
||||
<div class="object-list-item-actions">
|
||||
{* Вступить/покинуть блог *}
|
||||
{include 'actions/ActionBlog/button_join.tpl'}
|
||||
</div>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{else}
|
||||
{* TODO: Fix error message *}
|
||||
{if $sBlogsEmptyList}
|
||||
{$sBlogsEmptyList}
|
||||
{else}
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="cell-name">{$aLang.blogs_title}</th>
|
||||
|
||||
{if $oUserCurrent}
|
||||
<th class="cell-join">{$aLang.blog_join_leave}</th>
|
||||
{/if}
|
||||
|
||||
<th class="cell-readers">{$aLang.blogs_readers}</th>
|
||||
<th class="cell-rating align-center">{$aLang.blogs_rating}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.alerts.empty sAlertStyle='empty'}
|
||||
{/if}
|
||||
|
||||
|
||||
<tbody>
|
||||
{if $aBlogs}
|
||||
{foreach $aBlogs as $oBlog}
|
||||
{$oUserOwner = $oBlog->getOwner()}
|
||||
|
||||
<tr>
|
||||
<td class="cell-name">
|
||||
<a href="{$oBlog->getUrlFull()}">
|
||||
<img src="{$oBlog->getAvatarPath(48)}" width="48" height="48" alt="avatar" class="avatar" />
|
||||
</a>
|
||||
|
||||
<h4>
|
||||
{if $oBlog->getType() == 'close'}
|
||||
<i title="{$aLang.blog_closed}" class="icon-lock"></i>
|
||||
{/if}
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape:'html'}</a>
|
||||
</h4>
|
||||
<p>{$oBlog->getDescription()|strip_tags|truncate:120}</p>
|
||||
</td>
|
||||
|
||||
{if $oUserCurrent}
|
||||
<td class="cell-join">
|
||||
{if $oUserCurrent->getId() != $oBlog->getOwnerId() and $oBlog->getType() == 'open'}
|
||||
<a href="#" onclick="ls.blog.toggleJoin(this, {$oBlog->getId()}); return false;" class="button">
|
||||
{if $oBlog->getUserIsJoin()}
|
||||
{$aLang.blog_leave}
|
||||
{else}
|
||||
{$aLang.blog_join}
|
||||
{/if}
|
||||
</a>
|
||||
{else}
|
||||
—
|
||||
{/if}
|
||||
</td>
|
||||
{/if}
|
||||
|
||||
<td class="cell-readers" id="blog_user_count_{$oBlog->getId()}">{$oBlog->getCountUser()}</td>
|
||||
<td class="cell-rating align-center">{$oBlog->getRating()}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{else}
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
{* TODO: Fix error message *}
|
||||
{if $sBlogsEmptyList}
|
||||
{$sBlogsEmptyList}
|
||||
{/if}
|
||||
|
||||
{if !$aBlogs && !$sBlogsEmptyList}
|
||||
{$aLang.blog_by_category_empty}
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
{/if}
|
|
@ -2,16 +2,16 @@
|
|||
* Список блогов
|
||||
*}
|
||||
|
||||
{extends file='layouts/layout.base.tpl'}
|
||||
{extends 'layouts/layout.base.tpl'}
|
||||
|
||||
{block name='layout_options'}
|
||||
{block 'layout_options'}
|
||||
{$sMenuHeadItemSelect = 'blogs'}
|
||||
{/block}
|
||||
|
||||
{block name='layout_page_title'}{$aLang.blogs}{/block}
|
||||
{block 'layout_page_title'}{$aLang.blog.blogs}{/block}
|
||||
|
||||
{block name='layout_content'}
|
||||
{include file='forms/form.search.blogs.tpl'}
|
||||
{block 'layout_content'}
|
||||
{include 'forms/form.search.blogs.tpl'}
|
||||
|
||||
<div id="blogs-list-search" style="display:none;"></div>
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
|||
{router page='blogs' assign=sBlogsRootPage}
|
||||
{/if}
|
||||
|
||||
{include file='actions/ActionBlogs/blog_list.tpl' bBlogsUseOrder=true sBlogsRootPage=$sBlogsRootPage}
|
||||
{include file='pagination.tpl' aPaging=$aPaging}
|
||||
{include 'actions/ActionBlogs/blog_list.tpl' bBlogsUseOrder=true sBlogsRootPage=$sBlogsRootPage}
|
||||
{include 'pagination.tpl' aPaging=$aPaging}
|
||||
</div>
|
||||
{/block}
|
|
@ -1,22 +0,0 @@
|
|||
{**
|
||||
* Содержимое поповера с информацией о блоге
|
||||
*}
|
||||
|
||||
{$aLang.infobox_blog_create} — {$oBlog->getDateAdd()}<br/>
|
||||
{$aLang.infobox_blog_topics} — {$oBlog->getCountTopic()}<br/>
|
||||
{$aLang.infobox_blog_users} — {$oBlog->getCountUser()}<br/>
|
||||
{$aLang.infobox_blog_rating} — {$oBlog->getRating()}<br/>
|
||||
{$aLang.infobox_blog_limit_rating} — {$oBlog->getLimitRatingTopic()}<br/>
|
||||
|
||||
{if $oTopicLast}
|
||||
<br />
|
||||
{$aLang.infobox_blog_topic_last}:<br/>
|
||||
<a href="{$oTopicLast->getUrl()}">{$oTopicLast->getTitle()|escape:'html'}</a>
|
||||
|
||||
<br />
|
||||
{/if}
|
||||
|
||||
<br />
|
||||
|
||||
<a href="{$oBlog->getUrlFull()}">{$aLang.infobox_blog_url}</a><br/>
|
||||
<a href="{router page='rss'}blog/{$oBlog->getUrl()}/">{$aLang.infobox_blog_rss}</a><br/>
|
|
@ -14,13 +14,13 @@
|
|||
*
|
||||
* @template blocks/block.aside.base.tpl
|
||||
*/
|
||||
.block { background: #fff; margin-bottom: 30px; border-top: 3px solid #AC90DF; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); }
|
||||
.block { background: #fff; margin-bottom: 30px; }
|
||||
.block:last-child { margin-bottom: 0; }
|
||||
|
||||
.block .text { font-size: 13px; line-height: 18px; }
|
||||
.block .max-height-200 { overflow: auto; max-height: 200px; position: relative; }
|
||||
.block .loading { min-height: 100px; background-image: url(../images/loader.gif); background-position: 50% 45px; }
|
||||
.block .search-form { padding: 0; margin-bottom: 20px; }
|
||||
.block .text { font-size: 13px; line-height: 18px; }
|
||||
.block .max-height-200 { overflow: auto; max-height: 200px; position: relative; }
|
||||
.block .search-form { padding: 0; margin-bottom: 20px; }
|
||||
.block .block-content.loading { min-height: 100px; background-image: url(../images/loader.gif); background-position: 50% 45px; }
|
||||
|
||||
/* Шапка */
|
||||
.block-header { padding: 18px 20px 0; position: relative; }
|
||||
|
@ -38,7 +38,7 @@
|
|||
.block-footer { border-top: 1px solid #eee; padding: 15px 20px; font-size: 12px; }
|
||||
|
||||
/* Кнопка обновления блока */
|
||||
.block-update {
|
||||
.block-update {
|
||||
position: absolute;
|
||||
top: 19px;
|
||||
right: 15px;
|
||||
|
@ -98,17 +98,28 @@
|
|||
.block-type-blog-navigation .blog-navigator-categories option:first-child { color: #aaa; }
|
||||
|
||||
|
||||
/**
|
||||
* Информация о блоге
|
||||
*
|
||||
* @modifier blog-actions
|
||||
* @template blocks/block.blogActions.tpl
|
||||
*/
|
||||
.block.block-type-blog-actions .block-content { padding: 0; }
|
||||
.block.block-type-blog-actions .avatar { min-width: 100%; vertical-align: top; }
|
||||
.block.block-type-blog-actions .block-footer { text-align: center; }
|
||||
|
||||
|
||||
/**
|
||||
* Фото пользователя
|
||||
*
|
||||
* @modifier profile
|
||||
* @template blocks/block.profilePhoto.tpl
|
||||
*/
|
||||
.block-type-profile-photo { text-align: center; }
|
||||
.block-type-profile-photo .profile-photo-wrapper { position: relative; min-height: 50px; display: inline-block; }
|
||||
.block-type-profile-photo .profile-photo { vertical-align: top; }
|
||||
.block-type-profile-photo .block-content { padding: 0; }
|
||||
.block-type-profile-photo .profile-photo-wrapper { position: relative; min-width: 100%; min-height: 50px; display: inline-block; }
|
||||
.block-type-profile-photo .profile-photo { vertical-align: top; min-width: 100%; }
|
||||
|
||||
.block-type-profile-photo .status { position: absolute; top: 10px; left: 0; padding: 4px 9px; }
|
||||
.block-type-profile-photo .status { position: absolute; top: 20px; left: 0; padding: 12px 15px; font: 300 16px/1em 'Open Sans'; }
|
||||
.block-type-profile-photo .status.status-online { background: #b7bc1c; background: rgba(183, 188, 28, .8); color: #fff; }
|
||||
.block-type-profile-photo .status.status-offline { background: #333; background: rgba(0, 0, 0, .6); color: #fff; }
|
||||
|
||||
|
@ -139,9 +150,11 @@
|
|||
* @modifier profile-actions
|
||||
* @template blocks/block.profileActions.tpl
|
||||
*/
|
||||
.block-type-profile-actions .block-content { padding: 10px 15px; }
|
||||
.block-type-profile-actions ul li { margin-bottom: 5px; }
|
||||
.block-type-profile-actions ul li:last-child { margin-bottom: 0; }
|
||||
.block-type-profile-actions { border: none; }
|
||||
.block-type-profile-actions .block-content { padding: 0; }
|
||||
.block-type-profile-actions ul li { margin-bottom: 0; }
|
||||
.block-type-profile-actions ul li a { display: block; padding: 10px 15px; }
|
||||
.block-type-profile-actions ul li a:hover { background: #fafafa; }
|
||||
.block-type-profile-actions ul li a.followed { color: #f00; }
|
||||
|
||||
|
||||
|
|
|
@ -9,28 +9,34 @@
|
|||
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
||||
*/
|
||||
|
||||
.blog { margin-bottom: 15px; overflow: hidden; }
|
||||
.blog {
|
||||
width: 100%;
|
||||
padding: 40px;
|
||||
margin: -40px 0 15px -40px;
|
||||
overflow: hidden;
|
||||
background: #222;
|
||||
color: rgba(255, 255, 255, .7);
|
||||
}
|
||||
|
||||
/* Хидер */
|
||||
.blog-header { position: relative; padding: 0 130px 15px 68px; }
|
||||
.blog-header { position: relative; padding: 0 0 15px 0; }
|
||||
|
||||
.blog-header .blog-title { margin-bottom: 7px; }
|
||||
.blog-header .blog-title { margin-bottom: 7px; color: #fff; }
|
||||
.blog-header .blog-title i { position: relative; top: -2px; vertical-align: middle; }
|
||||
|
||||
.blog-header .avatar { position: absolute; top: 4px; left: 0; }
|
||||
.blog-header .vote { position: absolute; top: -15px; right: 0; }
|
||||
|
||||
.blog-header .vote { position: absolute; top: 0; right: 0; }
|
||||
.blog-header .vote .vote-count { padding-left: 25px; display: block; color: #333; }
|
||||
.blog-header .vote .vote-up { position: absolute; top: 22px; left: 0; }
|
||||
.blog-header .vote .vote-down { position: absolute; top: 35px; left: 0; }
|
||||
.blog-header .vote.vote-count-positive .vote-count { color: #5055B2; }
|
||||
.blog-header .vote-label { text-transform: uppercase; text-align: right; font-size: 11px; color: #aaa; }
|
||||
.blog-header .count { font-size: 34px; line-height: 1em; font-weight: bold; text-align: right; }
|
||||
.blog .actions { margin-bottom: 0; background: #444; border-color: #555; margin-top: 30px; margin-bottom: 0; }
|
||||
.blog .actions a { color: #ddd; }
|
||||
|
||||
.blog-header .actions { margin-bottom: 0; }
|
||||
.blog-description { margin-bottom: 20px; }
|
||||
|
||||
/* Информация о блоге */
|
||||
.blog-info { padding: 15px 0; line-height: 20px; }
|
||||
.blog-info-item { margin-bottom: 5px; }
|
||||
.blog-info-item:last-child { margin-bottom: 0; }
|
||||
.blog-info-item-label { opacity: .6; }
|
||||
|
||||
/* Кнопка показывающая/скрывающая информацию о блоге */
|
||||
.blog .get-more { margin-top: 0; }
|
||||
|
||||
/**
|
||||
* Список блогов
|
||||
*/
|
||||
.blog-list-item-join { position: absolute; top: 0; right: 0; }
|
|
@ -171,6 +171,12 @@ jQuery(document).ready(function($){
|
|||
ls.editor.init();
|
||||
|
||||
|
||||
/**
|
||||
* Blog
|
||||
*/
|
||||
ls.blog.init();
|
||||
|
||||
|
||||
/**
|
||||
* Topic
|
||||
*/
|
||||
|
@ -190,12 +196,6 @@ jQuery(document).ready(function($){
|
|||
ls.pagination.init();
|
||||
|
||||
|
||||
/**
|
||||
* Blog
|
||||
*/
|
||||
ls.blog.init();
|
||||
|
||||
|
||||
/**
|
||||
* Избраноое
|
||||
*/
|
||||
|
|
|
@ -4,32 +4,28 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_options'}
|
||||
{block 'block_options'}
|
||||
{$oBlog = $oTopic->getBlog()}
|
||||
{/block}
|
||||
|
||||
{if $oTopic && $oBlog->getType() != 'personal'}
|
||||
{block name='block_title'}<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape:'html'}</a>{/block}
|
||||
{block name='block_class'}block-type-blog{/block}
|
||||
{block 'block_title'}<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape}</a>{/block}
|
||||
{block 'block_class'}block-type-blog{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
{block 'block_content'}
|
||||
<span id="blog_user_count_{$oBlog->getId()}">{$oBlog->getCountUser()}</span>
|
||||
{$oBlog->getCountUser()|declension:$aLang.reader_declension}<br />
|
||||
{$oBlog->getCountUser()|declension:$aLang.blog.readers_declension}<br />
|
||||
{$oBlog->getCountTopic()} {$oBlog->getCountTopic()|declension:$aLang.topic_declension}
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
{if $oUserCurrent and $oUserCurrent->getId() != $oBlog->getOwnerId()}
|
||||
<button type="submit"
|
||||
class="button button-primary {if $oBlog->getUserIsJoin()}active{/if}"
|
||||
id="blog-join"
|
||||
data-only-text="1"
|
||||
onclick="ls.blog.toggleJoin(this,{$oBlog->getId()}); return false;">{if $oBlog->getUserIsJoin()}{$aLang.blog_leave}{else}{$aLang.blog_join}{/if}</button>
|
||||
{/if}
|
||||
{* Подписаться через RSS *}
|
||||
<a href="{router page='rss'}blog/{$oBlog->getUrl()}/" class="button">RSS</a>
|
||||
|
||||
<a href="{router page='rss'}blog/{$oBlog->getUrl()}/" class="rss">RSS</a>
|
||||
{* Вступить / Покинуть блог *}
|
||||
{include 'actions/ActionBlog/button_join.tpl'}
|
||||
{/block}
|
||||
{/if}
|
|
@ -0,0 +1,24 @@
|
|||
{**
|
||||
* Список пользователей блога
|
||||
*
|
||||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block 'block_type'}blog-actions{/block}
|
||||
|
||||
{block 'block_content'}
|
||||
<a href="{$oBlog->getUrlFull()}">
|
||||
{* TODO: Fix avatar size *}
|
||||
<img src="{$oBlog->getAvatarPath(100)}" alt="{$oBlog->getTitle()|escape}" class="avatar" />
|
||||
</a>
|
||||
{/block}
|
||||
|
||||
{block 'block_footer'}
|
||||
{* Подписаться через RSS *}
|
||||
<a href="{router page='rss'}blog/{$oBlog->getUrl()}/" class="button">RSS</a>
|
||||
|
||||
{* Вступить / Покинуть блог *}
|
||||
{include 'actions/ActionBlog/button_join.tpl'}
|
||||
{/block}
|
|
@ -4,24 +4,24 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_type'}blog-add{/block}
|
||||
{block 'block_type'}blog-add{/block}
|
||||
|
||||
{block name='block_options'}
|
||||
{block 'block_options'}
|
||||
{if ! $oUserCurrent}
|
||||
{$bBlockNotShow = true}
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
{block 'block_content'}
|
||||
{if $oUserCurrent and ($oUserCurrent->getRating() > {cfg name='acl.create.blog.rating'} or $oUserCurrent->isAdministrator())}
|
||||
<p>{$aLang.blog_can_add}</p>
|
||||
<p>{$aLang.blog.can_add}</p>
|
||||
|
||||
<a href="{router page='blog'}add/" class="button button-primary button-large">{$aLang.blog_add}</a>
|
||||
<a href="{router page='blog'}add/" class="button button-primary button-large">{$aLang.blog.create_blog}</a>
|
||||
{else}
|
||||
<p>{$aLang.blog_cant_add|ls_lang:"rating%%`$oConfig->get('acl.create.blog.rating')`"}</p>
|
||||
<p>{$aLang.blog.cant_add|ls_lang:"rating%%`$oConfig->get('acl.create.blog.rating')`"}</p>
|
||||
|
||||
<button class="button button-primary button-large" disabled>{$aLang.blog_add}</button>
|
||||
<button class="button button-primary button-large" disabled>{$aLang.blog.create_blog}</button>
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,41 @@
|
|||
{**
|
||||
* Список управляющих блога
|
||||
*
|
||||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block 'block_title'}{$aLang.blog.administrators}{/block}
|
||||
{block 'block_type'}blog-admins{/block}
|
||||
|
||||
{block 'block_content'}
|
||||
{**
|
||||
* Функции
|
||||
*}
|
||||
|
||||
{* Список пользователей *}
|
||||
{function blog_user_list}
|
||||
{if $aUsers}
|
||||
<h3>{$sTitle}</h3>
|
||||
|
||||
<ul class="user-list-small">
|
||||
{foreach $aUsers as $oUser}
|
||||
{if $oUser->getUser()}{$oUser = $oUser->getUser()}{/if}
|
||||
|
||||
<li class="user-list-small-item">{include 'user_item.tpl' oUser=$oUser}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
|
||||
|
||||
{* Создатель *}
|
||||
{blog_user_list sTitle="{$aLang.blog.owner}" aUsers=[ $oBlog->getOwner() ]}
|
||||
|
||||
{* Администраторы *}
|
||||
{blog_user_list sTitle="{$aLang.blog.administrators} ({$iCountBlogAdministrators})" aUsers=$aBlogAdministrators}
|
||||
|
||||
{* Модераторы *}
|
||||
{blog_user_list sTitle="{$aLang.blog.moderators} ({$iCountBlogModerators})" aUsers=$aBlogModerators}
|
||||
{/block}
|
|
@ -4,31 +4,31 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.block_category_blog}{/block}
|
||||
{block name='block_type'}blog-categories{/block}
|
||||
{block 'block_title'}{$aLang.block_category_blog}{/block}
|
||||
{block 'block_type'}blog-categories{/block}
|
||||
|
||||
{block name='block_header_end'}
|
||||
{block 'block_header_end'}
|
||||
{if $oUserCurrent and $oUserCurrent->isAdministrator()}
|
||||
<a href="{router page="admin"}blogcategory/" title="{$aLang.admin_list_blogcategory}" class="icon-cog blog-categories-admin"></a>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
{block 'block_content'}
|
||||
{if $aBlogCategories}
|
||||
<ul class="nested-list">
|
||||
<li class="nested-list-item {if !$oBlogCategoryCurrent}active{/if}">
|
||||
<li class="nested-list-item {if ! $oBlogCategoryCurrent}active{/if}">
|
||||
<a href="{router page='blogs'}">{$aLang.block_category_blog_all} ({$iCountBlogsAll})</a>
|
||||
</li>
|
||||
|
||||
{foreach $aBlogCategories as $oCategory}
|
||||
<li class="nested-list-item {if $oBlogCategoryCurrent and $oBlogCategoryCurrent->getId()==$oCategory->getId()}active{/if}">
|
||||
<a style="margin-left: {$oCategory->getLevel()*20}px;" href="{$oCategory->getUrlWeb()}">{$oCategory->getTitle()|escape} ({$oCategory->getCountBlogs()})</a>
|
||||
<li class="nested-list-item {if $oBlogCategoryCurrent && $oBlogCategoryCurrent->getId() == $oCategory->getId()}active{/if}">
|
||||
<a style="margin-left: {$oCategory->getLevel() * 20}px;" href="{$oCategory->getUrlWeb()}">{$oCategory->getTitle()|escape} ({$oCategory->getCountBlogs()})</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{else}
|
||||
No categories {* TODO: Language *}
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.categories.empty sAlertStyle='empty'}
|
||||
{/if}
|
||||
{/block}
|
|
@ -4,16 +4,10 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.block_blog_info}{/block}
|
||||
{block name='block_content'}
|
||||
{* Загрузка описания блога *}
|
||||
<script>
|
||||
jQuery(document).ready(function($){
|
||||
ls.blog.loadInfo($('#blog_id').val());
|
||||
});
|
||||
</script>
|
||||
|
||||
<p id="block_blog_info" class="text"></p>
|
||||
{block 'block_title'}{$aLang.block_blog_info}{/block}
|
||||
|
||||
{block 'block_content'}
|
||||
<p class="text js-blog-info"></p>
|
||||
{/block}
|
|
@ -4,7 +4,7 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.block_blog_info_note}{/block}
|
||||
{block name='block_content'}{$aLang.block_blog_info_note_text}{/block}
|
||||
{block 'block_title'}{$aLang.block_blog_info_note}{/block}
|
||||
{block 'block_content'}{$aLang.block_blog_info_note_text}{/block}
|
|
@ -5,41 +5,39 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.blog_admin_user_add_header}{/block}
|
||||
{block name='block_type'}blog-invite{/block}
|
||||
{block 'block_title'}{$aLang.blog.invite.invite_users}{/block}
|
||||
{block 'block_type'}blog-invite{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
<form onsubmit="return ls.blog.addInvite({$oBlogEdit->getId()});">
|
||||
<p>
|
||||
<label for="blog_admin_user_add">{$aLang.blog_admin_user_add_label}:</label>
|
||||
<input type="text" id="blog_admin_user_add" name="add" class="input-text width-full autocomplete-users-sep" />
|
||||
</p>
|
||||
{block 'block_content'}
|
||||
{* Форма добавления *}
|
||||
<form class="js-blog-invite-form mb-20" data-blog-id="{$oBlogEdit->getId()}">
|
||||
{include 'forms/fields/form.field.text.tpl'
|
||||
sFieldName = 'add'
|
||||
sFieldClasses = 'width-full autocomplete-users-sep js-blog-invite-form-users'
|
||||
sFieldLabel = $aLang.blog.invite.form.users_label}
|
||||
|
||||
{include 'forms/fields/form.field.button.tpl' sFieldText=$aLang.common.add sFieldStyle='primary' sFieldClasses='js-blog-invite-form-submit'}
|
||||
</form>
|
||||
|
||||
<br />
|
||||
<h3>{$aLang.blog_admin_user_invited}:</h3>
|
||||
{* Список приглашенных *}
|
||||
<div class="js-blog-invite-container" {if ! $aBlogUsersInvited}style="display: none"{/if}>
|
||||
<h3>{$aLang.blog.invite.users_title}</h3>
|
||||
|
||||
<div id="invited_list_block">
|
||||
{if $aBlogUsersInvited}
|
||||
<ul id="invited_list">
|
||||
{foreach $aBlogUsersInvited as $oBlogUser}
|
||||
{$oUser = $oBlogUser->getUser()}
|
||||
<ul class="user-list-small js-blog-invite-users">
|
||||
{foreach $aBlogUsersInvited as $oBlogUser}
|
||||
{$oUser = $oBlogUser->getUser()}
|
||||
|
||||
<li class="user-list-small-item js-blog-invite-user" data-blog-id="{$oBlogEdit->getId()}" data-user-id="{$oUser->getId()}">
|
||||
{include 'user_item.tpl' oUser=$oUser}
|
||||
|
||||
<li id="blog-invite-remove-item-{$oBlogEdit->getId()}-{$oUser->getId()}">
|
||||
<a href="{$oUser->getUserWebPath()}" class="user">{$oUser->getDisplayName()}</a> -
|
||||
<a href="#" onclick="return ls.blog.repeatInvite({$oUser->getId()}, {$oBlogEdit->getId()});">{$aLang.blog_user_invite_readd}</a>
|
||||
<a href="#" onclick="return ls.blog.removeInvite({$oUser->getId()}, {$oBlogEdit->getId()});">{$aLang.blog_user_invite_remove}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
{include file='alert.tpl'
|
||||
mAlerts = $aLang.user_note_list_empty
|
||||
sAlertStyle = 'info'
|
||||
bAlertVisible = ! count($aBlogUsersInvited)
|
||||
sAlertAttributes = 'id="blog-invite-empty"'}
|
||||
<div class="user-list-small-item-actions">
|
||||
<a href="#" class="icon-repeat js-blog-invite-user-repeat" title="{$aLang.blog.invite.repeat}"></a>
|
||||
<a href="#" class="icon-remove js-blog-invite-user-remove" title="{$aLang.common.remove}"></a>
|
||||
</div>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/block}
|
|
@ -1,34 +1,34 @@
|
|||
{**
|
||||
{**
|
||||
* Навигация по блогам с возможностью выбрать категорию и блог из этой категории
|
||||
*
|
||||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.block_blog_navigator}{/block}
|
||||
{block name='block_type'}blog-navigation{/block}
|
||||
{block 'block_title'}{$aLang.block_blog_navigator}{/block}
|
||||
{block 'block_type'}blog-navigation{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
{block 'block_content'}
|
||||
{if $aNavigatorBlogCategories}
|
||||
<p><select id="blog-navigator-category" class="width-full blog-navigator-categories" onchange="ls.blog.loadBlogsByCategory($(this).val());">
|
||||
<option value="0">{$aLang.blog_category}</option>
|
||||
<p><select class="width-full js-blog-nav-categories">
|
||||
<option value="0">{$aLang.blog.categories.category}</option>
|
||||
|
||||
{foreach $aNavigatorBlogCategories as $oCategoryItem}
|
||||
<option style="margin-left: {$oCategoryItem->getLevel()*20}px;" value="{$oCategoryItem->getId()}">{$oCategoryItem->getTitle()|escape:'html'}</option>
|
||||
<option style="margin-left: {$oCategoryItem->getLevel()*20}px;" value="{$oCategoryItem->getId()}">{$oCategoryItem->getTitle()|escape}</option>
|
||||
{/foreach}
|
||||
</select></p>
|
||||
|
||||
<p><select id="blog-navigator-blog" class="width-full" disabled>
|
||||
<option value="0">{$aLang.blog}</option>
|
||||
<p><select class="width-full js-blog-nav-blogs" disabled>
|
||||
<option value="0">{$aLang.blog.blog}</option>
|
||||
|
||||
{foreach $aNavigatorBlogs as $oBlogItem}
|
||||
<option value="{$oBlogItem->getId()}" data-url="{$oBlogItem->getUrlFull()}">{$oBlogItem->getTitle()|escape:'html'}</option>
|
||||
<option value="{$oBlogItem->getId()}" data-url="{$oBlogItem->getUrlFull()}">{$oBlogItem->getTitle()|escape}</option>
|
||||
{/foreach}
|
||||
</select></p>
|
||||
|
||||
<button onclick="ls.blog.navigatorGoSelectBlog();" class="button" id="blog-navigator-button" disabled>{$aLang.block_blog_navigator_button}</button>
|
||||
{include 'forms/fields/form.field.button.tpl' sFieldText=$aLang.block_blog_navigator_button sFieldClasses='js-blog-nav-submit' bFieldIsDisabled=true}
|
||||
{else}
|
||||
No categories {* TODO: Language *}
|
||||
{include 'alert.tpl' mAlerts=$aLang.blog.categories.empty sAlertStyle='empty'}
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,25 @@
|
|||
{**
|
||||
* Список пользователей блога
|
||||
*
|
||||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block 'block_title'}
|
||||
{$iUsersCount = count($aBlogUsers)}
|
||||
|
||||
<a href="{$oBlog->getUrlFull()}users/">
|
||||
{if $iUsersCount}
|
||||
{$iUsersCount} {$iUsersCount|declension:$aLang.blog.readers_declension:'russian'}
|
||||
{else}
|
||||
{$aLang.blog.users.empty}
|
||||
{/if}
|
||||
</a>
|
||||
{/block}
|
||||
|
||||
{block 'block_type'}blog-users{/block}
|
||||
|
||||
{block 'block_content'}
|
||||
{include 'user_list_avatar.tpl' aUsersList=$aBlogUsers}
|
||||
{/block}
|
|
@ -4,12 +4,12 @@
|
|||
* @styles css/blocks.css
|
||||
*}
|
||||
|
||||
{extends file='blocks/block.aside.base.tpl'}
|
||||
{extends 'blocks/block.aside.base.tpl'}
|
||||
|
||||
{block name='block_title'}{$aLang.block_blogs}{/block}
|
||||
{block name='block_type'}blogs{/block}
|
||||
{block 'block_title'}{$aLang.block_blogs}{/block}
|
||||
{block 'block_type'}blogs{/block}
|
||||
|
||||
{block name='block_nav'}
|
||||
{block 'block_nav'}
|
||||
<ul class="nav nav-pills js-block-nav" data-type="tabs">
|
||||
<li data-type="tab" data-tab-url="{router page='ajax'}blogs/top" data-tab-target="js-tab-pane-blogs" class="active"><a href="#">{$aLang.block_blogs_top}</a></li>
|
||||
|
||||
|
@ -20,12 +20,12 @@
|
|||
</ul>
|
||||
{/block}
|
||||
|
||||
{block name='block_content'}
|
||||
{block 'block_content'}
|
||||
<div id="js-tab-pane-blogs">
|
||||
{$sBlogsTop}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name='block_footer'}
|
||||
{block 'block_footer'}
|
||||
<a href="{router page='blogs'}">{$aLang.block_blogs_all}</a>
|
||||
{/block}
|
|
@ -8,12 +8,12 @@
|
|||
<ul class="item-list">
|
||||
{foreach $aBlogs as $oBlog}
|
||||
<li>
|
||||
<a href="{$oBlog->getUrlFull()}"><img src="{$oBlog->getAvatarPath(48)}" alt="avatar" class="avatar" /></a>
|
||||
<a href="{$oBlog->getUrlFull()}"><img src="{$oBlog->getAvatarPath(48)}" alt="{$oBlog->getTitle()|escape}" class="avatar" /></a>
|
||||
|
||||
{if $oBlog->getType()=='close'}<i title="{$aLang.blog_closed}" class="icon icon-lock"></i>{/if}
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape:'html'}</a>
|
||||
{if $oBlog->getType() == 'close'}<i title="{$aLang.blog.private}" class="icon icon-lock"></i>{/if}
|
||||
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape}</a>
|
||||
|
||||
<p>{$aLang.blog_rating}: <strong>{$oBlog->getRating()}</strong></p>
|
||||
<p>{$aLang.vote.rating}: <strong>{$oBlog->getRating()}</strong></p>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
|
@ -75,7 +75,7 @@
|
|||
|
||||
<script>
|
||||
ls.lang.load({json var = $aLangJs});
|
||||
ls.lang.load({lang_load name="blog, talk_favourite_add, talk_favourite_del, topic_question_create_answers_error_max, geo_select_city, geo_select_region, blog_create_type_open_notice, blog_create_type_close_notice"});
|
||||
ls.lang.load({lang_load name="blog.blog, favourite.add, favourite.remove, topic_question_create_answers_error_max, geo_select_city, geo_select_region, blog.add.fields.type.note_open, blog.add.fields.type.note_close"});
|
||||
|
||||
ls.registry.set('comment_max_tree', {json var=$oConfig->Get('module.comment.max_tree')});
|
||||
ls.registry.set('block_stream_show_tip', {json var=$oConfig->Get('block.stream.show_tip')});
|
||||
|
@ -192,7 +192,7 @@
|
|||
{/if}
|
||||
|
||||
<form action="{router page='search'}topics/" class="search-form">
|
||||
<input type="text" placeholder="{$aLang.search}" maxlength="255" name="q" class="search-form-input width-full">
|
||||
<input type="text" placeholder="{$aLang.search.search}" maxlength="255" name="q" class="search-form-input width-full">
|
||||
<input type="submit" value="" title="{$aLang.search_submit}" class="search-form-submit icon-search">
|
||||
</form>
|
||||
</nav>
|
||||
|
@ -218,7 +218,7 @@
|
|||
<nav class="grid-row grid-role-nav">
|
||||
<ul class="nav nav-main">
|
||||
<li {if $sMenuHeadItemSelect=='blog'}class="active"{/if}><a href="{cfg name='path.root.web'}">{$aLang.topic_title}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='blogs'}class="active"{/if}><a href="{router page='blogs'}">{$aLang.blogs}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='blogs'}class="active"{/if}><a href="{router page='blogs'}">{$aLang.blog.blogs}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='people'}class="active"{/if}><a href="{router page='people'}">{$aLang.people}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='stream'}class="active"{/if}><a href="{router page='stream'}">{$aLang.stream_menu}</a></li>
|
||||
|
||||
|
|
Loading…
Reference in a new issue