mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 03:30:48 +03:00
Компонент talk
This commit is contained in:
parent
e3f7be3b72
commit
976898fba4
|
@ -58,7 +58,7 @@ class ActionTalk extends Action {
|
|||
*/
|
||||
$this->oUserCurrent=$this->User_GetUserCurrent();
|
||||
$this->SetDefaultEvent('inbox');
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk_menu_inbox'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk.nav.inbox'));
|
||||
|
||||
/**
|
||||
* Загружаем в шаблон JS текстовки
|
||||
|
@ -75,10 +75,11 @@ class ActionTalk extends Action {
|
|||
$this->AddEvent('add','EventAdd');
|
||||
$this->AddEvent('read','EventRead');
|
||||
$this->AddEvent('delete','EventDelete');
|
||||
$this->AddEvent('ajaxaddcomment','AjaxAddComment');
|
||||
$this->AddEvent('ajaxresponsecomment','AjaxResponseComment');
|
||||
$this->AddEvent('favourites','EventFavourites');
|
||||
$this->AddEvent('blacklist','EventBlacklist');
|
||||
|
||||
$this->AddEvent('ajaxaddcomment','AjaxAddComment');
|
||||
$this->AddEvent('ajaxresponsecomment','AjaxResponseComment');
|
||||
$this->AddEvent('ajaxaddtoblacklist', 'AjaxAddToBlacklist');
|
||||
$this->AddEvent('ajaxdeletefromblacklist', 'AjaxDeleteFromBlacklist');
|
||||
$this->AddEvent('ajaxdeletetalkuser', 'AjaxDeleteTalkUser');
|
||||
|
@ -191,8 +192,8 @@ class ActionTalk extends Action {
|
|||
if(getRequest('submit_talk_filter')) {
|
||||
$this->Message_AddNotice(
|
||||
($aResult['count'])
|
||||
? $this->Lang_Get('talk_filter_result_count',array('count'=>$aResult['count']))
|
||||
: $this->Lang_Get('talk_filter_result_empty')
|
||||
? $this->Lang_Get('talk.search.notices.result_count',array('count'=>$aResult['count']))
|
||||
: $this->Lang_Get('talk.search.notices.result_empty')
|
||||
);
|
||||
}
|
||||
/**
|
||||
|
@ -223,15 +224,15 @@ class ActionTalk extends Action {
|
|||
$aFilter['date_min']="{$y}-{$m}-{$d}";
|
||||
} else {
|
||||
$this->Message_AddError(
|
||||
$this->Lang_Get('talk_filter_error_date_format'),
|
||||
$this->Lang_Get('talk_filter_error')
|
||||
$this->Lang_Get('talk.search.notices.error_date_format'),
|
||||
$this->Lang_Get('talk.search.notices.error')
|
||||
);
|
||||
unset($_REQUEST['start']);
|
||||
}
|
||||
} else {
|
||||
$this->Message_AddError(
|
||||
$this->Lang_Get('talk_filter_error_date_format'),
|
||||
$this->Lang_Get('talk_filter_error')
|
||||
$this->Lang_Get('talk.search.notices.error_date_format'),
|
||||
$this->Lang_Get('talk.search.notices.error')
|
||||
);
|
||||
unset($_REQUEST['start']);
|
||||
}
|
||||
|
@ -246,15 +247,15 @@ class ActionTalk extends Action {
|
|||
$aFilter['date_max']="{$y}-{$m}-{$d} 23:59:59";
|
||||
} else {
|
||||
$this->Message_AddError(
|
||||
$this->Lang_Get('talk_filter_error_date_format'),
|
||||
$this->Lang_Get('talk_filter_error')
|
||||
$this->Lang_Get('talk.search.notices.error_date_format'),
|
||||
$this->Lang_Get('talk.search.notices.error')
|
||||
);
|
||||
unset($_REQUEST['end']);
|
||||
}
|
||||
} else {
|
||||
$this->Message_AddError(
|
||||
$this->Lang_Get('talk_filter_error_date_format'),
|
||||
$this->Lang_Get('talk_filter_error')
|
||||
$this->Lang_Get('talk.search.notices.error_date_format'),
|
||||
$this->Lang_Get('talk.search.notices.error')
|
||||
);
|
||||
unset($_REQUEST['end']);
|
||||
}
|
||||
|
@ -346,14 +347,14 @@ class ActionTalk extends Action {
|
|||
*/
|
||||
$this->Viewer_Assign('aPaging',$aPaging);
|
||||
$this->Viewer_Assign('aTalks',$aTalks);
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk_favourite_inbox'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk.nav.favourites'));
|
||||
}
|
||||
/**
|
||||
* Страница создания письма
|
||||
*/
|
||||
protected function EventAdd() {
|
||||
$this->sMenuSubItemSelect='add';
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk_menu_inbox_create'));
|
||||
$this->Viewer_AddHtmlTitle($this->Lang_Get('talk.nav.add'));
|
||||
/**
|
||||
* Получаем список друзей
|
||||
*/
|
||||
|
@ -377,7 +378,7 @@ class ActionTalk extends Action {
|
|||
* Проверяем разрешено ли отправлять инбокс по времени
|
||||
*/
|
||||
if (!$this->ACL_CanSendTalkTime($this->oUserCurrent)) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk_time_limit'),$this->Lang_Get('error'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk.notices.time_limit'),$this->Lang_Get('error'));
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
|
@ -470,14 +471,14 @@ class ActionTalk extends Action {
|
|||
* Проверяем есть ли заголовок
|
||||
*/
|
||||
if (!func_check(getRequestStr('talk_title'),'text',2,200)) {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_title_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.title_error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
* Проверяем есть ли содержание топика
|
||||
*/
|
||||
if (!func_check(getRequestStr('talk_text'),'text',2,3000)) {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_text_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.text_error'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
/**
|
||||
|
@ -503,7 +504,7 @@ class ActionTalk extends Action {
|
|||
str_replace(
|
||||
'login',
|
||||
$oUser->getLogin(),
|
||||
$this->Lang_Get('messages.blacklist.alerts.blocked',array('login'=>htmlspecialchars($oUser->getLogin())))
|
||||
$this->Lang_Get('talk.blacklist.notices.blocked',array('login'=>htmlspecialchars($oUser->getLogin())))
|
||||
),
|
||||
$this->Lang_Get('error')
|
||||
);
|
||||
|
@ -511,18 +512,18 @@ class ActionTalk extends Action {
|
|||
continue;
|
||||
}
|
||||
} else {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_users_error_not_found').' «'.htmlspecialchars($sUser).'»',$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.users_error_not_found').' «'.htmlspecialchars($sUser).'»',$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
$aUsersNew[]=$sUser;
|
||||
}
|
||||
if (!count($aUsersNew)) {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_users_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.users_error'),$this->Lang_Get('error'));
|
||||
$_REQUEST['talk_users']='';
|
||||
$bOk=false;
|
||||
} else {
|
||||
if (count($aUsersNew)>Config::Get('module.talk.max_users') and !$this->oUserCurrent->isAdministrator()) {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_users_error_many'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.users_error_many'),$this->Lang_Get('error'));
|
||||
$bOk=false;
|
||||
}
|
||||
$_REQUEST['talk_users']=join(',',$aUsersNew);
|
||||
|
@ -625,7 +626,7 @@ class ActionTalk extends Action {
|
|||
* Проверяем разрешено ли отправлять инбокс по времени
|
||||
*/
|
||||
if (!$this->ACL_CanPostTalkCommentTime($this->oUserCurrent)) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk_time_limit'),$this->Lang_Get('error'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk.add.notices.time_limit'),$this->Lang_Get('error'));
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
|
@ -633,7 +634,7 @@ class ActionTalk extends Action {
|
|||
*/
|
||||
$sText=getRequestStr('comment_text');
|
||||
if (!func_check($sText,'text',2,3000)) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk_comment_add_text_error'),$this->Lang_Get('error'));
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('talk.message.notices.error_text'),$this->Lang_Get('error'));
|
||||
return;
|
||||
}
|
||||
/**
|
||||
|
@ -859,7 +860,7 @@ class ActionTalk extends Action {
|
|||
if (!isset($aBlacklist[$oUserTarget->getId()])) {
|
||||
$this->Message_AddErrorSingle(
|
||||
$this->Lang_Get(
|
||||
'talk_blacklist_user_not_found',
|
||||
'talk.blacklist.notices.user_not_found',
|
||||
array('login'=>$oUserTarget->getLogin())
|
||||
),
|
||||
$this->Lang_Get('error')
|
||||
|
@ -917,7 +918,7 @@ class ActionTalk extends Action {
|
|||
if((!$oTalk=$this->Talk_GetTalkById($iTalkId))
|
||||
|| ( ($oTalk->getUserId()!=$this->oUserCurrent->getId()) && !$this->oUserCurrent->isAdministrator() ) ) {
|
||||
$this->Message_AddErrorSingle(
|
||||
$this->Lang_Get('talk_not_found'),
|
||||
$this->Lang_Get('talk.notices.not_found'),
|
||||
$this->Lang_Get('error')
|
||||
);
|
||||
return;
|
||||
|
@ -933,7 +934,7 @@ class ActionTalk extends Action {
|
|||
|| $aTalkUsers[$iUserId]->getUserActive()==ModuleTalk::TALK_USER_DELETE_BY_SELF) {
|
||||
$this->Message_AddErrorSingle(
|
||||
$this->Lang_Get(
|
||||
'talk_speaker_user_not_found',
|
||||
'talk.users.notices.user_not_found',
|
||||
array('login'=>$oUserTarget->getLogin())
|
||||
),
|
||||
$this->Lang_Get('error')
|
||||
|
@ -987,7 +988,7 @@ class ActionTalk extends Action {
|
|||
if((!$oTalk=$this->Talk_GetTalkById($idTalk))
|
||||
|| ( ($oTalk->getUserId()!=$this->oUserCurrent->getId()) && !$this->oUserCurrent->isAdministrator() ) ) {
|
||||
$this->Message_AddErrorSingle(
|
||||
$this->Lang_Get('talk_not_found'),
|
||||
$this->Lang_Get('talk.notices.not_found'),
|
||||
$this->Lang_Get('error')
|
||||
);
|
||||
return;
|
||||
|
@ -1004,7 +1005,7 @@ class ActionTalk extends Action {
|
|||
* Ограничения на максимальное число участников разговора
|
||||
*/
|
||||
if (count($aTalkUsers)>=Config::Get('module.talk.max_users') and !$this->oUserCurrent->isAdministrator()) {
|
||||
$this->Message_AddError($this->Lang_Get('talk_create_users_error_many'),$this->Lang_Get('error'));
|
||||
$this->Message_AddError($this->Lang_Get('talk.add.notices.users_error_many'),$this->Lang_Get('error'));
|
||||
return;
|
||||
}
|
||||
/**
|
||||
|
@ -1090,7 +1091,7 @@ class ActionTalk extends Action {
|
|||
$aResult[]=array(
|
||||
'bStateError'=>true,
|
||||
'sMsgTitle'=>$this->Lang_Get('error'),
|
||||
'sMsg'=>$this->Lang_Get('talk_speaker_delete_by_self',array('login'=>htmlspecialchars($sUser)))
|
||||
'sMsg'=>$this->Lang_Get('talk.users.notices.deleted',array('login'=>htmlspecialchars($sUser)))
|
||||
);
|
||||
break;
|
||||
|
||||
|
@ -1141,7 +1142,7 @@ class ActionTalk extends Action {
|
|||
$aResult[]=array(
|
||||
'bStateError'=>true,
|
||||
'sMsgTitle'=>$this->Lang_Get('error'),
|
||||
'sMsg'=>$this->Lang_Get('messages.blacklist.alerts.blocked',array('login'=>htmlspecialchars($sUser)))
|
||||
'sMsg'=>$this->Lang_Get('talk.blacklist.notices.blocked',array('login'=>htmlspecialchars($sUser)))
|
||||
);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -24,11 +24,13 @@ return array(
|
|||
'common' => array(
|
||||
'add' => 'Добавить',
|
||||
'remove' => 'Удалить',
|
||||
'remove_confirm' => 'Действительно удалить?',
|
||||
'edit' => 'Редактировать',
|
||||
'save' => 'Сохранить',
|
||||
'create' => 'Создать',
|
||||
'cancel' => 'Отменить',
|
||||
'empty' => 'Тут ничего нет',
|
||||
'send' => 'Отправить',
|
||||
'form_reset' => 'Очистить форму',
|
||||
'preview_text' => 'Предпросмотр',
|
||||
'times_declension' => 'раз;раза;раз',
|
||||
|
@ -380,7 +382,61 @@ return array(
|
|||
/**
|
||||
* Личные сообщения
|
||||
*/
|
||||
'messages' => array(
|
||||
'talk' => array(
|
||||
'title' => 'Сообщения',
|
||||
|
||||
// Меню
|
||||
'nav' => array(
|
||||
'inbox' => 'Сообщения',
|
||||
'new' => 'Только новые',
|
||||
'add' => 'Новое письмо',
|
||||
'favourites' => 'Избранное',
|
||||
'blacklist' => 'Блокировать'
|
||||
),
|
||||
|
||||
// Форма добавления
|
||||
'add' => array(
|
||||
'title' => 'Новое письмо',
|
||||
|
||||
// Поля
|
||||
'fields' => array(
|
||||
'users' => array(
|
||||
'label' => 'Кому'
|
||||
),
|
||||
'title' => array(
|
||||
'label' => 'Заголовок',
|
||||
),
|
||||
'text' => array(
|
||||
'label' => 'Сообщение',
|
||||
),
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'notices' => array(
|
||||
'users_error' => 'Необходимо указать, кому вы хотите отправить сообщение',
|
||||
'users_error_not_found' => 'У нас нет пользователя с логином', // TODO: Move to common
|
||||
'users_error_many' => 'Слишком много адресатов',
|
||||
|
||||
'title_error' => 'Заголовок сообщения должен быть от 2 до 200 символов',
|
||||
|
||||
'text_error' => 'Текст сообщения должен быть от 2 до 3000 символов',
|
||||
)
|
||||
),
|
||||
|
||||
// Сообщение
|
||||
'message' => array(
|
||||
// Сообщения
|
||||
'notices' => array(
|
||||
'error_text' => 'Текст сообщения должен быть от 2 до 3000 символов',
|
||||
)
|
||||
),
|
||||
|
||||
// Экшнбар
|
||||
'actionbar' => array(
|
||||
'read' => 'Прочитанные',
|
||||
'unread' => 'Не прочитанные',
|
||||
'mark_as_read' => 'Отметить как прочитанное',
|
||||
),
|
||||
|
||||
// Форма поиска
|
||||
'search' => array(
|
||||
|
@ -412,36 +468,51 @@ return array(
|
|||
'favourite' => array(
|
||||
'label' => 'Искать только в избранном'
|
||||
),
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'notices' => array(
|
||||
'error' => 'При поиске произошла ошибка',
|
||||
'error_date_format' => 'Указан неверный формат даты',
|
||||
'result_count' => 'Найдено писем: %%count%%',
|
||||
'result_empty' => 'По вашим критериям писем не найдено'
|
||||
)
|
||||
),
|
||||
|
||||
// Черный список
|
||||
'blacklist' => array(
|
||||
// Поля
|
||||
'fields' => array(
|
||||
'talk_blacklist_add' => array(
|
||||
'label' => 'Список пользователей',
|
||||
'note' => 'Введите один или несколько логинов'
|
||||
),
|
||||
),
|
||||
'title' => 'Черный список',
|
||||
'note' => 'Добавьте пользователей от которых вы не хотите получать сообщения',
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'blocked' => 'Пользователь <b>%%login%%</b> не принимает от вас писем'
|
||||
'notices' => array(
|
||||
'blocked' => 'Пользователь <b>%%login%%</b> не принимает от вас писем',
|
||||
'user_not_found' => 'Пользователя <b>%%login%%</b> нет в вашем black list`е',
|
||||
),
|
||||
),
|
||||
|
||||
// Всплывающие сообщения
|
||||
'notices' => array(
|
||||
// Список участников разговора
|
||||
'users' => array(
|
||||
'title' => 'Участники разговора',
|
||||
'user_not_found' => 'Пользователь не участвует в разговоре',
|
||||
|
||||
// Сообщения
|
||||
'notices' => array(
|
||||
'user_not_found' => 'Пользователь <b>%%login%%</b> не участвует в разговоре',
|
||||
'deleted' => 'Участник <b>%%login%%</b> удалил этот разговор',
|
||||
)
|
||||
),
|
||||
|
||||
// Сообщения
|
||||
'alerts' => array(
|
||||
'empty' => 'Нет писем'
|
||||
'notices' => array(
|
||||
'time_limit' => 'Вам нельзя отправлять сообщения слишком часто',
|
||||
'empty' => 'Нет писем',
|
||||
'deleted' => 'Отправитель удалил сообщение',
|
||||
'not_found' => 'Разговор не найден'
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
/**
|
||||
* Опросы
|
||||
*/
|
||||
|
@ -1021,58 +1092,6 @@ return array(
|
|||
// TODO: Удалить, используется в ActionSubscribe
|
||||
'registration_mail_error' => 'Неверный формат e-mail',
|
||||
|
||||
/**
|
||||
* Почта
|
||||
*/
|
||||
'talk_filter_error' => 'Ошибка фильтрации',
|
||||
'talk_filter_error_date_format' => 'Указан неверный формат даты',
|
||||
'talk_filter_result_count' => 'Найдено писем: %%count%%',
|
||||
'talk_filter_result_empty' => 'По вашим критериям писем не найдено',
|
||||
|
||||
'talk_user_in_blacklist' => 'Пользователь <b>%%login%%</b> не принимает от вас писем',
|
||||
'talk_blacklist_user_not_found' => 'Пользователя <b>%%login%%</b> нет в вашем black list`е',
|
||||
|
||||
'talk_favourite_inbox' => 'Избранные письма',
|
||||
|
||||
'talk_menu_inbox' => 'Сообщения',
|
||||
'talk_menu_inbox_new' => 'Только новые',
|
||||
'talk_menu_inbox_list' => 'Переписка',
|
||||
'talk_menu_inbox_create' => 'Новое письмо',
|
||||
'talk_menu_inbox_favourites' => 'Избранное',
|
||||
'talk_menu_inbox_blacklist' => 'Блокировать',
|
||||
|
||||
'talk_inbox' => 'Почтовый ящик',
|
||||
'talk_inbox_target' => 'Адресаты',
|
||||
'talk_inbox_title' => 'Тема',
|
||||
'talk_inbox_date' => 'Дата',
|
||||
'talk_inbox_make_read' => 'Отметить как прочитанное',
|
||||
'talk_inbox_delete' => 'Удалить выделенное',
|
||||
'talk_inbox_delete_confirm' => 'Действительно удалить переписку?',
|
||||
|
||||
'talk_comments' => 'Переписка',
|
||||
'talk_comment_add_text_error' => 'Текст комментария должен быть от 2 до 3000 символов',
|
||||
|
||||
'talk_create' => 'Новое письмо',
|
||||
'talk_create_users' => 'Кому',
|
||||
'talk_create_users_error' => 'Необходимо указать, кому вы хотите отправить сообщение',
|
||||
'talk_create_users_error_not_found' => 'У нас нет пользователя с логином',
|
||||
'talk_create_users_error_many' => 'Слишком много адресатов',
|
||||
'talk_create_title' => 'Заголовок',
|
||||
'talk_create_title_error' => 'Заголовок сообщения должен быть от 2 до 200 символов',
|
||||
'talk_create_text' => 'Сообщение',
|
||||
'talk_create_text_error' => 'Текст сообщения должен быть от 2 до 3000 символов',
|
||||
'talk_create_submit' => 'Отправить',
|
||||
|
||||
'talk_time_limit' => 'Вам нельзя отправлять инбоксы слишком часто',
|
||||
|
||||
'talk_speaker_title' => 'Участники разговора',
|
||||
'talk_speaker_user_not_found' => 'Пользователь <b>%%login%%</b> не участвует в разговоре',
|
||||
'talk_speaker_not_found' => 'Пользователь не участвует в разговоре',
|
||||
'talk_speaker_delete_by_self' => 'Участник <b>%%login%%</b> удалил этот разговор',
|
||||
|
||||
'talk_not_found' => 'Разговор не найден',
|
||||
'talk_deleted' => 'Отправитель удалил сообщение',
|
||||
|
||||
/**
|
||||
* Блоги
|
||||
*/
|
||||
|
|
|
@ -5,45 +5,5 @@
|
|||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{hook run='talk_add_begin'}
|
||||
|
||||
<form action="" method="POST" enctype="multipart/form-data" class="js-form-validate">
|
||||
{hook run='form_add_talk_begin'}
|
||||
|
||||
{include 'components/field/field.hidden.security_key.tpl'}
|
||||
|
||||
{* Получатели *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'talk_users'
|
||||
aRules = [ 'required' => true, 'rangetags' => '[1,99]' ]
|
||||
sLabel = $aLang.talk_create_users
|
||||
sInputClasses = 'autocomplete-users-sep js-input-talk-users'
|
||||
sNote = "<a href=\"#\" class=\"link-dotted\" data-type=\"modal-toggle\" data-modal-url=\"{router page='ajax/modal-friend-list'}\" data-param-selectable=\"true\" data-param-target=\".js-input-talk-users\">Выбрать из списка друзей</a>"}
|
||||
|
||||
{* Заголовок *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'talk_title'
|
||||
aRules = [ 'required' => true, 'rangelength' => '[2,200]' ]
|
||||
sLabel = $aLang.talk_create_title}
|
||||
|
||||
{* Текст сообщения *}
|
||||
{include 'components/editor/editor.tpl'
|
||||
sSet = 'light'
|
||||
sMediaTargetType = 'talk'
|
||||
sName = 'talk_text'
|
||||
aRules = [ 'required' => true, 'rangelength' => '[2,3000]' ]
|
||||
sLabel = $aLang.topic_create_text
|
||||
sInputClasses = 'js-editor'}
|
||||
|
||||
{* Preview *}
|
||||
<div class="text mb-20" id="text_preview" style="display: none;"></div>
|
||||
|
||||
{hook run='form_add_talk_end'}
|
||||
|
||||
{* Кнопки *}
|
||||
{include 'components/button/button.tpl' sName='submit_talk_add' sMods='primary' sText=$aLang.talk_create_submit}
|
||||
{include 'components/button/button.tpl' sName='submit_preview' sType='button' sText=$aLang.common.preview_text sAttributes='onclick="jQuery(\'#text_preview\').show(); ls.utils.textPreview($(\'#talk_text\'), $(\'#text_preview\'), false); return false;"'}
|
||||
</form>
|
||||
|
||||
{hook run='talk_add_end'}
|
||||
{include 'components/talk/add.tpl'}
|
||||
{/block}
|
|
@ -5,5 +5,5 @@
|
|||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{include 'components/user_list_add/user_list_add.tpl' sUserListAddClasses='js-user-list-add-blacklist' iUserListId=$oUserCurrent->getId() aUserList=$aUsersBlacklist}
|
||||
{include 'components/talk/blacklist.tpl' users=$aUsersBlacklist}
|
||||
{/block}
|
|
@ -5,6 +5,5 @@
|
|||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{include './talk-list.tpl'}
|
||||
{include 'components/pagination/pagination.tpl' aPaging=$aPaging}
|
||||
{include 'components/talk/talk-list.tpl'}
|
||||
{/block}
|
|
@ -9,7 +9,6 @@
|
|||
{/block}
|
||||
|
||||
{block 'layout_content'}
|
||||
{include './talk-search-form.tpl'}
|
||||
{include './talk-list.tpl' bMessageListCheckboxes=true}
|
||||
{include 'components/pagination/pagination.tpl' aPaging=$aPaging}
|
||||
{include 'components/talk/talk-search-form.tpl'}
|
||||
{include 'components/talk/talk-list.tpl' bMessageListCheckboxes=true}
|
||||
{/block}
|
|
@ -1,24 +0,0 @@
|
|||
{**
|
||||
* Первое сообщение в диалоге
|
||||
*}
|
||||
|
||||
{extends 'components/article/article.tpl'}
|
||||
|
||||
{block 'entry_options'}
|
||||
{$oEntry = $oTalk}
|
||||
{$sEntryType = 'talk'}
|
||||
{/block}
|
||||
|
||||
{block 'entry' append}
|
||||
{* Участники личного сообщения *}
|
||||
{if $oTalk->getUserId() == $oUserCurrent->getId() or $oUserCurrent->isAdministrator()}
|
||||
{include 'components/user_list_add/user_list_add.tpl'
|
||||
sUserListAddClasses = "message-users js-message-users"
|
||||
sUserListAddAttributes = "data-param-i-target-id=\"{$oTalk->getId()}\""
|
||||
aUserList = $oTalk->getTalkUsers()
|
||||
sUserListTitle = $aLang.talk_speaker_title
|
||||
aUserListSmallExcludeRemove = [ $oUserCurrent->getId() ]
|
||||
sUserItemInactiveTitle = $aLang.talk_speaker_not_found
|
||||
sUserListSmallItemPath = 'components/user_list_small/user_list_small_item.message.tpl'}
|
||||
{/if}
|
||||
{/block}
|
|
@ -5,17 +5,5 @@
|
|||
{extends 'layouts/layout.user.messages.tpl'}
|
||||
|
||||
{block 'layout_content'}
|
||||
{* Первое сообщение *}
|
||||
{include './talk-message-root.tpl'}
|
||||
|
||||
{* Вывод комментариев к сообщению *}
|
||||
{include 'components/comment/comments.tpl'
|
||||
sClasses = 'js-comments-talk'
|
||||
iTargetId = $oTalk->getId()
|
||||
sTargetType = 'talk'
|
||||
aComments = $aComments
|
||||
iCountComment = $oTalk->getCountComment()
|
||||
sDateReadLast = $oTalk->getTalkUser()->getDateLast()
|
||||
sNoticeCommentAdd = $aLang.topic_comment_add
|
||||
bShowFavourite = false}
|
||||
{include 'components/talk/talk.tpl' talk=$oTalk comments=$aComments}
|
||||
{/block}
|
45
application/frontend/skin/developer/components/talk/add.tpl
Normal file
45
application/frontend/skin/developer/components/talk/add.tpl
Normal file
|
@ -0,0 +1,45 @@
|
|||
{**
|
||||
* Форма создания личного сообщения
|
||||
*}
|
||||
|
||||
{hook run='talk_add_begin'}
|
||||
|
||||
<form action="" method="POST" enctype="multipart/form-data" class="js-form-validate">
|
||||
{hook run='form_add_talk_begin'}
|
||||
|
||||
{include 'components/field/field.hidden.security_key.tpl'}
|
||||
|
||||
{* Получатели *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'talk_users'
|
||||
aRules = [ 'required' => true, 'rangetags' => '[1,99]' ]
|
||||
sLabel = $aLang.talk.add.fields.users.label
|
||||
sInputClasses = 'autocomplete-users-sep js-input-talk-users'
|
||||
sNote = "<a href=\"#\" class=\"link-dotted\" data-type=\"modal-toggle\" data-modal-url=\"{router page='ajax/modal-friend-list'}\" data-param-selectable=\"true\" data-param-target=\".js-input-talk-users\">Выбрать из списка друзей</a>"}
|
||||
|
||||
{* Заголовок *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'talk_title'
|
||||
aRules = [ 'required' => true, 'rangelength' => '[2,200]' ]
|
||||
sLabel = $aLang.talk.add.fields.title.label}
|
||||
|
||||
{* Текст сообщения *}
|
||||
{include 'components/editor/editor.tpl'
|
||||
sSet = 'light'
|
||||
sMediaTargetType = 'talk'
|
||||
sName = 'talk_text'
|
||||
aRules = [ 'required' => true, 'rangelength' => '[2,3000]' ]
|
||||
sLabel = $aLang.talk.add.fields.text.label
|
||||
sInputClasses = 'js-editor'}
|
||||
|
||||
{* Preview *}
|
||||
<div class="text mb-20" id="text_preview" style="display: none;"></div>
|
||||
|
||||
{hook run='form_add_talk_end'}
|
||||
|
||||
{* Кнопки *}
|
||||
{include 'components/button/button.tpl' sName='submit_talk_add' sMods='primary' sText=$aLang.common.send}
|
||||
{include 'components/button/button.tpl' sName='submit_preview' sType='button' sText=$aLang.common.preview_text sAttributes='onclick="jQuery(\'#text_preview\').show(); ls.utils.textPreview($(\'#talk_text\'), $(\'#text_preview\'), false); return false;"'}
|
||||
</form>
|
||||
|
||||
{hook run='talk_add_end'}
|
|
@ -0,0 +1,12 @@
|
|||
{**
|
||||
* Черный список
|
||||
*
|
||||
* @param array $users
|
||||
*}
|
||||
|
||||
{include 'components/user_list_add/user_list_add.tpl'
|
||||
sUserListTitle = $aLang.talk.blacklist.title
|
||||
sUserListNote = $aLang.talk.blacklist.note
|
||||
sUserListAddClasses = 'js-user-list-add-blacklist'
|
||||
iUserListId = $oUserCurrent->getId()
|
||||
aUserList = $smarty.local.users}
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
{* Экшнбар *}
|
||||
{include 'components/actionbar/actionbar.item.select.tpl' sItemSelector='.js-message-list-item' assign=sMessagesSelect aItems=[
|
||||
[ 'text' => 'Прочитанные', 'filter' => ":not('.message-unread')" ],
|
||||
[ 'text' => 'Не прочитанные', 'filter' => ".message-unread" ]
|
||||
[ 'text' => $aLang.talk.actionbar.read, 'filter' => ":not('.message-unread')" ],
|
||||
[ 'text' => $aLang.talk.actionbar.unread, 'filter' => ".message-unread" ]
|
||||
]}
|
||||
|
||||
{include 'components/actionbar/actionbar.tpl' aItems=[
|
||||
[ 'html' => $sMessagesSelect ],
|
||||
[ 'icon' => 'icon-ok', 'classes' => 'js-talk-form-action', 'attributes' => 'data-action="mark_as_read"', 'text' => $aLang.talk_inbox_make_read ],
|
||||
[ 'icon' => 'icon-ok', 'classes' => 'js-talk-form-action', 'attributes' => 'data-action="mark_as_read"', 'text' => $aLang.talk.actionbar.mark_as_read ],
|
||||
[ 'icon' => 'icon-remove', 'classes' => 'js-talk-form-action', 'attributes' => 'data-action="remove"', 'text' => $aLang.common.remove ]
|
||||
]}
|
||||
|
||||
|
@ -109,5 +109,7 @@
|
|||
</table>
|
||||
</form>
|
||||
{else}
|
||||
{include 'components/alert/alert.tpl' mAlerts=$aLang.messages.alerts.empty sMods='empty'}
|
||||
{/if}
|
||||
{include 'components/alert/alert.tpl' mAlerts=$aLang.talk.alerts.empty sMods='empty'}
|
||||
{/if}
|
||||
|
||||
{include 'components/pagination/pagination.tpl' aPaging=$aPaging}
|
|
@ -0,0 +1,5 @@
|
|||
{**
|
||||
* Первое сообщение в диалоге
|
||||
*}
|
||||
|
||||
{extends 'components/article/article.tpl'}
|
|
@ -4,48 +4,48 @@
|
|||
|
||||
<div class="accordion">
|
||||
<h3 class="accordion-header" onclick="jQuery('#block_talk_search_content').toggle(); return false;">
|
||||
<span class="link-dotted">{$aLang.messages.search.title}</span>
|
||||
<span class="link-dotted">{$aLang.talk.search.title}</span>
|
||||
</h3>
|
||||
|
||||
<form action="{router page='talk'}" method="GET" name="talk_filter_form" id="block_talk_search_content" class="accordion-content" {if $_aRequest.submit_talk_filter}style="display:block;"{/if}>
|
||||
{* Отправитель *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'sender'
|
||||
sLabel = $aLang.messages.search.fields.sender.label
|
||||
sNote = $aLang.messages.search.fields.sender.note
|
||||
sLabel = $aLang.talk.search.fields.sender.label
|
||||
sNote = $aLang.talk.search.fields.sender.note
|
||||
sInputClasses = 'width-full autocomplete-users'}
|
||||
|
||||
{* Получатель *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'receiver'
|
||||
sLabel = $aLang.messages.search.fields.receiver.label
|
||||
sNote = $aLang.messages.search.fields.receiver.note
|
||||
sLabel = $aLang.talk.search.fields.receiver.label
|
||||
sNote = $aLang.talk.search.fields.receiver.note
|
||||
sInputClasses = 'width-full autocomplete-users'}
|
||||
|
||||
{* Искать в заголовке *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'keyword'
|
||||
sLabel = $aLang.messages.search.fields.keyword.label}
|
||||
sLabel = $aLang.talk.search.fields.keyword.label}
|
||||
|
||||
{* Искать в тексте *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'keyword_text'
|
||||
sLabel = $aLang.messages.search.fields.keyword_text.label}
|
||||
sLabel = $aLang.talk.search.fields.keyword_text.label}
|
||||
|
||||
{* Ограничения по дате *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'start'
|
||||
sPlaceholder = $aLang.messages.search.fields.start.placeholder
|
||||
sLabel = $aLang.messages.search.fields.start.label
|
||||
sPlaceholder = $aLang.talk.search.fields.start.placeholder
|
||||
sLabel = $aLang.talk.search.fields.start.label
|
||||
sInputClasses = 'width-200 js-date-picker'}
|
||||
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'end'
|
||||
sPlaceholder = $aLang.messages.search.fields.end.placeholder
|
||||
sPlaceholder = $aLang.talk.search.fields.end.placeholder
|
||||
sInputClasses = 'width-200 js-date-picker'}
|
||||
|
||||
{* Искать только в избранном *}
|
||||
{include 'components/field/field.checkbox.tpl' sName='favourite' sLabel=$aLang.messages.search.fields.favourite.label}
|
||||
{include 'components/field/field.checkbox.tpl' sName='favourite' sLabel=$aLang.talk.search.fields.favourite.label}
|
||||
|
||||
{* Кнопки *}
|
||||
{include 'components/button/button.tpl'
|
|
@ -14,6 +14,9 @@
|
|||
{/block}
|
||||
|
||||
{block 'components/user_list_small/user_list_small_item_actions'}
|
||||
<li class="icon-minus js-message-users-user-inactivate" title="{$aLang.common.remove}" data-user-id="{$iUserId}"></li>
|
||||
<li class="icon-plus js-message-users-user-activate" title="{$aLang.common.add}" data-user-id="{$iUserId}" data-user-login="{$oUser->getLogin()}"></li>
|
||||
{* TODO: Add local var allowManage *}
|
||||
{if $allowManage|default:true}
|
||||
<li class="icon-minus js-message-users-user-inactivate" title="{$aLang.common.remove}" data-user-id="{$iUserId}"></li>
|
||||
<li class="icon-plus js-message-users-user-activate" title="{$aLang.common.add}" data-user-id="{$iUserId}" data-user-login="{$oUser->getLogin()}"></li>
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{**
|
||||
* Участники личного сообщения
|
||||
*}
|
||||
|
||||
{include 'components/user_list_add/user_list_add.tpl'
|
||||
sUserListAddClasses = "message-users js-message-users"
|
||||
sUserListAddAttributes = "data-param-i-target-id=\"{$oTalk->getId()}\""
|
||||
aUserList = $oTalk->getTalkUsers()
|
||||
allowManage = $oTalk->getUserId() == $oUserCurrent->getId() || $oUserCurrent->isAdministrator()
|
||||
sUserListTitle = $aLang.talk.users.title
|
||||
aUserListSmallExcludeRemove = [ $oUserCurrent->getId() ]
|
||||
sUserItemInactiveTitle = $aLang.talk.users.user_not_found
|
||||
sUserListSmallItemPath = 'components/talk/talk-users-item.tpl'}
|
27
application/frontend/skin/developer/components/talk/talk.tpl
Normal file
27
application/frontend/skin/developer/components/talk/talk.tpl
Normal file
|
@ -0,0 +1,27 @@
|
|||
{**
|
||||
* Диалог
|
||||
*
|
||||
* @param object $talk
|
||||
* @param array $comments
|
||||
*}
|
||||
|
||||
{$talk = $smarty.local.talk}
|
||||
|
||||
{* Первое сообщение *}
|
||||
{include './talk-message-root.tpl' oEntry=$talk sEntryType='talk'}
|
||||
|
||||
{* Участники личного сообщения *}
|
||||
{include './talk-users.tpl'}
|
||||
|
||||
{* Вывод комментариев к сообщению *}
|
||||
{include 'components/comment/comments.tpl'
|
||||
sClasses = 'js-comments-talk'
|
||||
iTargetId = $talk->getId()
|
||||
sTargetType = 'talk'
|
||||
aComments = $smarty.local.comments
|
||||
iCountComment = $talk->getCountComment()
|
||||
sDateReadLast = $talk->getTalkUser()->getDateLast()
|
||||
bForbidAdd = $bNoComments
|
||||
sNoticeCommentAdd = $aLang.topic_comment_add
|
||||
sNoticeNotAllow = $aLang.talk.notices.deleted
|
||||
bShowFavourite = false}
|
|
@ -18,17 +18,19 @@
|
|||
{/if}
|
||||
|
||||
{* Форма добавления *}
|
||||
<form class="{$_sComponentName}-form js-{$_sComponentName}-form">
|
||||
{$sClass = "js-$_sComponentName-form-users-"|cat:rand(0, 9999)}
|
||||
{if $smarty.local.allowManage|default:true}
|
||||
<form class="{$_sComponentName}-form js-{$_sComponentName}-form">
|
||||
{$sClass = "js-$_sComponentName-form-users-"|cat:rand(0, 9999)}
|
||||
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'add'
|
||||
sInputClasses = "autocomplete-users-sep {$sClass}"
|
||||
sLabel = $aLang.user_list_add.form.fields.add.label
|
||||
sNote = "<a href=\"#\" class=\"link-dotted\" data-type=\"modal-toggle\" data-modal-url=\"{router page='ajax/modal-friend-list'}\" data-param-selectable=\"true\" data-param-target=\".{$sClass}\">Выбрать из списка друзей</a>"}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'add'
|
||||
sInputClasses = "autocomplete-users-sep {$sClass}"
|
||||
sLabel = $aLang.user_list_add.form.fields.add.label
|
||||
sNote = "<a href=\"#\" class=\"link-dotted\" data-type=\"modal-toggle\" data-modal-url=\"{router page='ajax/modal-friend-list'}\" data-param-selectable=\"true\" data-param-target=\".{$sClass}\">Выбрать из списка друзей</a>"}
|
||||
|
||||
{include 'components/button/button.tpl' sText=$aLang.common.add sMods='primary' sClasses='js-{$_sComponentName}-form-submit'}
|
||||
</form>
|
||||
{include 'components/button/button.tpl' sText=$aLang.common.add sMods='primary' sClasses='js-{$_sComponentName}-form-submit'}
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Список пользователей *}
|
||||
{* TODO: Изменить порядок вывода - сначало новые *}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
'user_url' => $oUserFrom->getUserWebPath(),
|
||||
'user_name' => $oUserFrom->getDisplayName(),
|
||||
'talk_name' => $oTalk->getTitle()|escape,
|
||||
'talk_url' => "{router page='talk'}read/{$oTalk->getId()}/#comment{$oTalkComment->getId()}",
|
||||
'talk_url' => "{router page='talk'}read/{$oTalk->getId()}/",
|
||||
'talk_text' => "{if Config::Get('sys.mail.include_talk')}{lang name='emails.common.comment_text'}:<br><em>{$oTalk->getText()}</em>{/if}"
|
||||
]}
|
||||
{/block}
|
|
@ -9,5 +9,5 @@
|
|||
{/block}
|
||||
|
||||
{block 'layout_user_page_title'}
|
||||
{$aLang.talk_menu_inbox}
|
||||
{$aLang.talk.title}
|
||||
{/block}
|
|
@ -7,9 +7,9 @@
|
|||
sActiveItem = $sMenuSubItemSelect
|
||||
sMods = 'pills'
|
||||
aItems = [
|
||||
[ 'name' => 'inbox', 'url' => "{router page='talk'}", 'text' => $aLang.talk_menu_inbox ],
|
||||
[ 'name' => 'new', 'url' => "{router page='talk'}inbox/new/", 'text' => $aLang.talk_menu_inbox_new, 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $iUserCurrentCountTalkNew ],
|
||||
[ 'name' => 'add', 'url' => "{router page='talk'}add/", 'text' => $aLang.talk_menu_inbox_create ],
|
||||
[ 'name' => 'favourites', 'url' => "{router page='talk'}favourites/", 'text' => $aLang.talk_menu_inbox_favourites, 'count' => $iCountTalkFavourite ],
|
||||
[ 'name' => 'blacklist', 'url' => "{router page='talk'}blacklist/", 'text' => $aLang.talk_menu_inbox_blacklist ]
|
||||
[ 'name' => 'inbox', 'url' => "{router page='talk'}", 'text' => $aLang.talk.nav.inbox ],
|
||||
[ 'name' => 'new', 'url' => "{router page='talk'}inbox/new/", 'text' => $aLang.talk.nav.new, 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $iUserCurrentCountTalkNew ],
|
||||
[ 'name' => 'add', 'url' => "{router page='talk'}add/", 'text' => $aLang.talk.nav.add ],
|
||||
[ 'name' => 'favourites', 'url' => "{router page='talk'}favourites/", 'text' => $aLang.talk.nav.favourites, 'count' => $iCountTalkFavourite ],
|
||||
[ 'name' => 'blacklist', 'url' => "{router page='talk'}blacklist/", 'text' => $aLang.talk.nav.blacklist ]
|
||||
]}
|
|
@ -10,6 +10,6 @@
|
|||
[ 'name' => 'favourites', 'text' => $aLang.user_menu_profile_favourites, 'url' => "{$oUserProfile->getUserWebPath()}favourites/topics/", 'count' => $iCountFavourite ],
|
||||
[ 'name' => 'friends', 'text' => $aLang.user_menu_profile_friends, 'url' => "{$oUserProfile->getUserWebPath()}friends/", 'count' => $iCountFriendsUser ],
|
||||
[ 'name' => 'stream', 'text' => $aLang.user_menu_profile_stream, 'url' => "{$oUserProfile->getUserWebPath()}stream/" ],
|
||||
[ 'name' => 'talk', 'text' => $aLang.talk_menu_inbox, 'url' => "{router page='talk'}", 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $oUserCurrent and $oUserCurrent->getId() == $oUserProfile->getId() ],
|
||||
[ 'name' => 'talk', 'text' => $aLang.talk.title, 'url' => "{router page='talk'}", 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $oUserCurrent and $oUserCurrent->getId() == $oUserProfile->getId() ],
|
||||
[ 'name' => 'settings', 'text' => $aLang.settings_menu, 'url' => "{router page='settings'}", 'is_enabled' => $oUserCurrent and $oUserCurrent->getId() == $oUserProfile->getId() ]
|
||||
]}
|
|
@ -11,7 +11,7 @@
|
|||
[ 'name' => 'favourites', 'text' => $aLang.user_menu_profile_favourites, 'url' => "{$oUserCurrent->getUserWebPath()}favourites/topics/", 'count' => $iCountFavourite ],
|
||||
[ 'name' => 'friends', 'text' => $aLang.user_menu_profile_friends, 'url' => "{$oUserCurrent->getUserWebPath()}friends/", 'count' => $iCountFriendsUser ],
|
||||
[ 'name' => 'stream', 'text' => $aLang.user_menu_profile_stream, 'url' => "{$oUserCurrent->getUserWebPath()}stream/" ],
|
||||
[ 'name' => 'talk', 'text' => $aLang.talk_menu_inbox, 'url' => "{router page='talk'}", 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $oUserCurrent && $oUserCurrent->getId() == $oUserCurrent->getId() ],
|
||||
[ 'name' => 'talk', 'text' => $aLang.talk.title, 'url' => "{router page='talk'}", 'count' => $iUserCurrentCountTalkNew, 'is_enabled' => $oUserCurrent && $oUserCurrent->getId() == $oUserCurrent->getId() ],
|
||||
[ 'name' => 'settings', 'text' => $aLang.settings_menu, 'url' => "{router page='settings'}", 'is_enabled' => $oUserCurrent && $oUserCurrent->getId() == $oUserCurrent->getId() ],
|
||||
[ 'name' => 'admin', 'text' => $aLang.admin_title, 'url' => "{router page='admin'}", 'is_enabled' => $oUserCurrent && $oUserCurrent->isAdministrator() ]
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue