1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 03:30:48 +03:00

Настройки перенесены в компонент user

This commit is contained in:
Denis Shakhov 2014-08-07 23:55:18 +07:00
parent bd10e52632
commit 2787f4cccc
12 changed files with 448 additions and 364 deletions

View file

@ -61,7 +61,7 @@ class ActionSettings extends Action {
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu'));
$this->Viewer_AddHtmlTitle($this->Lang_Get('user.settings.title'));
}
/**
* Регистрация евентов
@ -157,7 +157,7 @@ class ActionSettings extends Action {
$this->sMenuItemSelect='settings';
$this->sMenuSubItemSelect='tuning';
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_tuning'));
$this->Viewer_AddHtmlTitle($this->Lang_Get('user.settings.nav.tuning'));
$aTimezoneList=array('-12','-11','-10','-9.5','-9','-8','-7','-6','-5','-4.5','-4','-3.5','-3','-2','-1','0','1','2','3','3.5','4','4.5','5','5.5','5.75','6','6.5','7','8','8.75','9','9.5','10','10.5','11','11.5','12','12.75','13','14');
$this->Viewer_Assign('aTimezoneList',$aTimezoneList);
/**
@ -181,7 +181,7 @@ class ActionSettings extends Action {
*/
$this->Hook_Run('settings_tuning_save_before', array('oUser'=>$this->oUserCurrent));
if ($this->User_Update($this->oUserCurrent)) {
$this->Message_AddNoticeSingle($this->Lang_Get('settings_tuning_submit_ok'));
$this->Message_AddNoticeSingle($this->Lang_Get('common.success.save'));
$this->Hook_Run('settings_tuning_save_after', array('oUser'=>$this->oUserCurrent));
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
@ -208,7 +208,7 @@ class ActionSettings extends Action {
$this->sMenuItemSelect='invite';
$this->sMenuSubItemSelect='';
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_invite'));
$this->Viewer_AddHtmlTitle($this->Lang_Get('user.settings.nav.invites'));
/**
* Если отправили форму
*/
@ -220,14 +220,14 @@ class ActionSettings extends Action {
* Есть права на отправку инфайтов?
*/
if (!$this->ACL_CanSendInvite($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
$this->Message_AddError($this->Lang_Get('settings_invite_available_no'),$this->Lang_Get('error'));
$this->Message_AddError($this->Lang_Get('user.settings.invites.available_no'),$this->Lang_Get('error'));
$bError=true;
}
/**
* Емайл корректен?
*/
if (!func_check(getRequestStr('invite_mail'),'mail')) {
$this->Message_AddError($this->Lang_Get('settings_invite_mail_error'),$this->Lang_Get('error'));
$this->Message_AddError($this->Lang_Get('user.settings.invites.fields.email.notices.error'),$this->Lang_Get('error'));
$bError=true;
}
/**
@ -240,7 +240,7 @@ class ActionSettings extends Action {
if (!$bError) {
$oInvite=$this->User_GenerateInvite($this->oUserCurrent);
$this->Notify_SendInvite($this->oUserCurrent,getRequestStr('invite_mail'),$oInvite);
$this->Message_AddNoticeSingle($this->Lang_Get('settings_invite_submit_ok'));
$this->Message_AddNoticeSingle($this->Lang_Get('user.settings.invites.notices.success'));
$this->Hook_Run('settings_invate_send_after', array('oUser'=>$this->oUserCurrent));
}
}
@ -255,7 +255,7 @@ class ActionSettings extends Action {
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_profile'));
$this->Viewer_AddHtmlTitle($this->Lang_Get('user.settings.nav.account'));
$this->sMenuSubItemSelect='account';
/**
* Если нажали кнопку "Сохранить"
@ -310,7 +310,7 @@ class ActionSettings extends Action {
*/
if (!$bError) {
if ($this->User_Update($this->oUserCurrent)) {
$this->Message_AddNoticeSingle($this->Lang_Get('settings_account_submit_ok'));
$this->Message_AddNoticeSingle($this->Lang_Get('common.success.save'));
/**
* Подтверждение смены емайла
*/
@ -339,7 +339,7 @@ class ActionSettings extends Action {
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_profile'));
$this->Viewer_AddHtmlTitle($this->Lang_Get('user.settings.nav.profile'));
$this->Viewer_Assign('aUserFields',$this->User_getUserFields(''));
$this->Viewer_Assign('aUserFieldsContact',$this->User_getUserFields(array('contact','social')));
/**
@ -473,7 +473,7 @@ class ActionSettings extends Action {
}
}
}
$this->Message_AddNoticeSingle($this->Lang_Get('settings_profile_submit_ok'));
$this->Message_AddNoticeSingle($this->Lang_Get('common.success.save'));
$this->Hook_Run('settings_profile_save_after', array('oUser'=>$this->oUserCurrent));
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));

View file

@ -1206,6 +1206,7 @@ return array(
/**
* Пользователь
* !user
*/
'user' => array(
'user' => 'Пользователь',
@ -1382,6 +1383,125 @@ return array(
'none' => '___user.gender.none___'
),
// Настройки
'settings' => array(
'title' => 'Настройки',
// Меню
'nav' => array(
'profile' => '___user.profile.title___',
'account' => 'Аккаунт',
'tuning' => 'Настройки сайта',
'invites' => 'Инвайты',
),
// Настройки профиля
'profile' => array(
'generic' => 'Основная информация',
'contact' => '___user.profile.contact___',
'fields' => array(
'name' => array(
'label' => 'Имя',
),
'sex' => array(
'label' => '___user.gender.gender___',
),
'birthday' => array(
'label' => '___user.profile.personal.birthday___',
),
'place' => array(
'label' => '___user.profile.personal.place___',
),
'about' => array(
'label' => '___user.profile.about.title___',
),
),
),
// Настройки аккаунта
'account' => array(
'account' => 'Настройки аккаунта',
'password' => 'Пароль',
'password_note' => 'Оставьте поля пустыми если не хотите изменять пароль.',
'fields' => array(
'email' => array(
'label' => 'E-mail',
'note' => 'Ваш реальный почтовый адрес, на него будут приходить уведомления',
'notices' => array(
'settings_profile_mail_error' => 'Неверный формат e-mail',
'settings_profile_mail_error_used' => 'Этот емайл уже занят',
'settings_profile_mail_change_from_notice' => 'На вашу старую почту отправлено подтверждение для смены емайла',
'settings_profile_mail_change_to_notice' => 'Спасибо! <br/> На ваш новый емайл адрес отправлено подтверждение для смены старого емайла.',
'settings_profile_mail_change_ok' => 'Ваш емайл изменен на <b>%%mail%%</b>',
)
),
'password' => array(
'label' => '___auth.labels.password___',
'notices' => array(
'settings_profile_password_current' => 'Текущий пароль',
'settings_profile_password_current_error' => 'Неверный текущий пароль',
'settings_profile_password_new' => 'Новый пароль',
'settings_profile_password_new_error' => 'Неверный пароль, допустим от 5 символов',
'settings_profile_password_confirm' => 'Еще раз новый пароль',
'settings_profile_password_confirm_error' => 'Пароли не совпадают',
)
),
'password_new' => array(
'label' => 'Новый пароль',
),
'password_confirm' => array(
'label' => '___auth.registration.form.fields.password_confirm.label___',
),
),
),
// Настройки сайта
'tuning' => array(
'email_notices' => 'Уведомления на e-mail',
'general' => 'Общие настройки',
'fields' => array(
'new_topic' => 'При новом топике в блоге',
'new_comment' => 'При новом комментарии в топике',
'new_talk' => 'При новом личном сообщении',
'reply_comment' => 'При ответе на комментарий',
'new_friend' => 'При добавлении вас в друзья',
'timezone' => array(
'label' => 'Часовой пояс'
),
)
),
// Инвайты
'invites' => array(
'note' => 'Вы можете пригласить на сайт своих друзей и знакомых, для этого просто укажите их e-mail и нажмите кнопку',
'available' => 'Доступно',
'available_no' => 'У вас пока нет доступных инвайтов',
'used' => 'Использовано',
'many' => 'много',
'fields' => array(
'email' => array(
'label' => 'Пригласить по e-mail адресу',
'note' => 'На этот e-mail будет выслано приглашение для регистрации',
'notices' => array(
'error' => 'Неверный формат e-mail'
)
),
'submit' => array(
'text' => 'Отправить приглашение',
),
),
'notices' => array(
'success' => 'Приглашение отправлено'
)
),
),
// Сообщения
'notices' => array(
'empty' => '___common.empty___',
@ -1393,36 +1513,6 @@ return array(
/**
* Настройки
*/
'settings_profile_edit' => 'Изменение профиля',
'settings_profile_section_base' => 'Основная информация',
'settings_profile_section_contacts' => 'Контакты',
'settings_profile_name' => 'Имя',
'settings_profile_name_notice' => 'Длина имени не может быть меньше 2 и больше 20 символов.',
'settings_profile_mail' => 'E-mail',
'settings_profile_mail_error' => 'Неверный формат e-mail',
'settings_profile_mail_error_used' => 'Этот емайл уже занят',
'settings_profile_mail_notice' => 'Ваш реальный почтовый адрес, на него будут приходить уведомления',
'settings_profile_mail_change_from_notice' => 'На вашу старую почту отправлено подтверждение для смены емайла',
'settings_profile_mail_change_to_notice' => 'Спасибо! <br/> На ваш новый емайл адрес отправлено подтверждение для смены старого емайла.',
'settings_profile_mail_change_ok' => 'Ваш емайл изменен на <b>%%mail%%</b>',
'settings_profile_sex' => 'Пол',
'settings_profile_sex_man' => 'мужской',
'settings_profile_sex_woman' => 'женский',
'settings_profile_sex_other' => 'не скажу',
'settings_profile_birthday' => 'Дата рождения',
'settings_profile_country' => 'Страна',
'settings_profile_city' => 'Город',
'settings_profile_icq' => 'ICQ',
'settings_profile_site' => 'Сайт',
'settings_profile_site_url' => 'URL сайта',
'settings_profile_site_name' => 'название сайта',
'settings_profile_about' => 'О себе',
'settings_profile_password_current' => 'Текущий пароль',
'settings_profile_password_current_error' => 'Неверный текущий пароль',
'settings_profile_password_new' => 'Новый пароль',
'settings_profile_password_new_error' => 'Неверный пароль, допустим от 5 символов',
'settings_profile_password_confirm' => 'Еще раз новый пароль',
'settings_profile_password_confirm_error' => 'Пароли не совпадают',
'settings_profile_avatar' => 'Аватар',
'settings_profile_avatar_error' => 'Не удалось загрузить аватар',
'settings_profile_avatar_delete' => 'Удалить',
@ -1430,51 +1520,14 @@ return array(
'settings_profile_avatar_upload' => 'Загрузить аватар',
'settings_profile_avatar_resize_title' => 'Выбор области',
'settings_profile_avatar_resize_apply' => 'Применить',
'settings_profile_foto' => 'Фото',
'settings_profile_foto_error' => 'Не удалось загрузить фото',
'settings_profile_foto_delete' => 'Удалить',
'settings_profile_photo_change' => 'Изменить фотографию',
'settings_profile_photo_upload' => 'Загрузить фотографию',
'settings_profile_field_error_max' => 'Нельзя добавить больше %%count%% одинаковых контактов',
'settings_profile_submit' => 'Сохранить',
'settings_profile_submit_ok' => 'Профиль успешно сохранён',
'settings_invite' => 'Управление приглашениями',
'settings_invite_notice' => 'Вы можете пригласить на сайт своих друзей и знакомых, для этого просто укажите их e-mail и нажмите кнопку',
'settings_invite_available' => 'Доступно',
'settings_invite_available_no' => 'У вас пока нет доступных инвайтов',
'settings_invite_used' => 'Использовано',
'settings_invite_mail' => 'Пригласить по e-mail адресу',
'settings_invite_mail_error' => 'Неверный формат e-mail',
'settings_invite_mail_notice' => 'На этот e-mail будет выслано приглашение для регистрации',
'settings_invite_many' => 'много',
'settings_invite_submit' => 'отправить приглашение',
'settings_invite_submit_ok' => 'Приглашение отправлено',
'settings_tuning' => 'Настройки сайта',
'settings_tuning_notice' => 'Уведомления на e-mail',
'settings_tuning_notice_new_topic' => 'При новом топике в блоге',
'settings_tuning_notice_new_comment' => 'При новом комментарии в топике',
'settings_tuning_notice_new_talk' => 'При новом личном сообщении',
'settings_tuning_notice_reply_comment' => 'При ответе на комментарий',
'settings_tuning_notice_new_friend' => 'При добавлении вас в друзья',
'settings_tuning_general' => 'Общие настройки',
'settings_tuning_general_timezone' => 'Часовой пояс',
'settings_tuning_submit' => 'сохранить настройки',
'settings_tuning_submit_ok' => 'Настройки успешно сохранены',
'settings_account' => 'Настройки акаунта',
'settings_account_password' => 'Пароль',
'settings_account_password_notice' => 'Оставьте поля пустыми если не хотите изменять пароль.',
'settings_account_submit_ok' => 'Аккаунт сохранен',
/**
* Меню настроек
*/
'settings_menu' => 'Настройки',
'settings_menu_profile' => 'Профиль',
'settings_menu_tuning' => 'Настройки сайта',
'settings_menu_invite' => 'Инвайты',
'settings_menu_account' => 'Аккаунт',
/**
* Избранные теги

View file

@ -5,62 +5,5 @@
{extends 'layouts/layout.user.settings.tpl'}
{block 'layout_content' append}
{hook run='settings_account_begin'}
<form method="post" enctype="multipart/form-data" class="js-form-validate">
{hook run='form_settings_account_begin'}
<fieldset>
<legend>{$aLang.settings_account}</legend>
{* E-mail *}
{include 'components/field/field.text.tpl'
sName = 'mail'
aRules = [ 'required' => true, 'type'=> 'email' ]
sValue = $oUserCurrent->getMail()|escape
sNote = $aLang.settings_profile_mail_notice
sLabel = $aLang.settings_profile_mail}
</fieldset>
<fieldset>
<legend>{$aLang.settings_account_password}</legend>
<small class="note mb-20">{$aLang.settings_account_password_notice}</small>
{* Текущий пароль *}
{include 'components/field/field.text.tpl'
sName = 'password_now'
sType = 'password'
sInputClasses = 'width-200'
sLabel = $aLang.settings_profile_password_current}
{* Новый пароль *}
{include 'components/field/field.text.tpl'
sName = 'password'
aRules = [ 'rangelength' => '[5,20]' ]
sType = 'password'
sInputClasses = 'width-200'
sLabel = $aLang.settings_profile_password_new}
{* Повторить овый пароль *}
{include 'components/field/field.text.tpl'
sName = 'password_confirm'
aRules = [ 'rangelength' => '[5,20]', 'equalto' => '.js-input-password' ]
sType = 'password'
sInputClasses = 'width-200'
sLabel = $aLang.settings_profile_password_confirm}
</fieldset>
{hook run='form_settings_account_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_account_edit' sMods='primary' sText=$aLang.settings_profile_submit}
</form>
{hook run='settings_account_end'}
{include 'components/user/settings/account.tpl' user=$oUserCurrent}
{/block}

View file

@ -5,32 +5,5 @@
{extends 'layouts/layout.user.settings.tpl'}
{block 'layout_content' append}
<small class="note mb-20">{$aLang.settings_invite_notice} "{$aLang.settings_invite_submit}"</small>
{hook run='settings_invite_begin'}
<form action="" method="POST" enctype="multipart/form-data">
{hook run='form_settings_invite_begin'}
<p>
{$aLang.settings_invite_available}: <strong>{if $oUserCurrent->isAdministrator()}{$aLang.settings_invite_many}{else}{$iCountInviteAvailable}{/if}</strong><br />
{$aLang.settings_invite_used}: <strong>{$iCountInviteUsed}</strong>
</p>
{* E-mail *}
{include 'components/field/field.text.tpl'
sName = 'invite_mail'
sNote = $aLang.settings_invite_mail_notice
sLabel = $aLang.settings_invite_mail}
{hook run='form_settings_invite_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_invite' sMods='primary' sText=$aLang.settings_invite_submit}
</form>
{hook run='settings_invite_end'}
{include 'components/user/settings/invite.tpl' user=$oUserCurrent}
{/block}

View file

@ -7,130 +7,5 @@
{extends 'layouts/layout.user.settings.tpl'}
{block 'layout_content' append}
<script type="text/javascript">
jQuery(document).ready(function($){
ls.geo.initSelect();
ls.userfield.iCountMax='{cfg name="module.user.userfield_max_identical"}';
});
</script>
{* Шаблон пользовательского поля (userfield) *}
{function name=userfield}
<div class="form-field js-user-field-item" {if ! $oField}id="profile_user_field_template" style="display:none;"{/if}>
<select name="profile_user_field_type[]" onchange="ls.userfield.changeFormField(this);">
{foreach $aUserFieldsContact as $oFieldAll}
<option value="{$oFieldAll->getId()}" {if $oField && $oFieldAll->getId() == $oField->getId()}selected{/if}>{$oFieldAll->getTitle()|escape:'html'}</option>
{/foreach}
</select>
<input type="text" name="profile_user_field_value[]" value="{if $oField}{$oField->getValue()|escape}{/if}" class="width-200">
<a class="icon-remove" title="{$aLang.user_field_delete}" href="#" onclick="return ls.userfield.removeFormField(this);"></a>
</div>
{/function}
{* Скрытое пользовательское поле для вставки через js *}
{call userfield oField=false}
{hook run='settings_profile_begin'}
<form method="post" enctype="multipart/form-data" class="js-form-validate">
{hook run='form_settings_profile_begin'}
{* Основная информация *}
<fieldset>
<legend>{$aLang.settings_profile_section_base}</legend>
{* Имя *}
{include 'components/field/field.text.tpl'
sName = 'profile_name'
aRules = [ 'rangelength' => "[2,{Config::Get('module.user.name_max')}]" ]
bInline = true
sValue = $oUserCurrent->getProfileName()|escape
sNote = $aLang.settings_profile_name_notice
sLabel = $aLang.settings_profile_name}
{* Пол *}
{$aSex = [
[ 'value' => 'man', 'text' => $aLang.settings_profile_sex_man ],
[ 'value' => 'woman', 'text' => $aLang.settings_profile_sex_woman ],
[ 'value' => 'other', 'text' => $aLang.settings_profile_sex_other ]
]}
{include 'components/field/field.select.tpl'
sName = 'profile_sex'
bInline = true
sLabel = $aLang.settings_profile_sex
aItems = $aSex
sSelectedValue = $oUserCurrent->getProfileSex()}
{* Дата рождения *}
{include 'components/field/field.date.tpl'
sName = 'profile_birthday'
aItems = $oUserCurrent->getProfileBirthday()
bInline = true
sLabel = $aLang.settings_profile_birthday}
{* Местоположение *}
{include 'components/field/field.geo.tpl'
sName = 'geo'
bInline = true
sLabel = $aLang.profile_place
oFieldGeoTarget = $oGeoTarget}
{* О себе *}
{include 'components/field/field.textarea.tpl'
sName = 'profile_about'
aRules = [ 'rangelength' => '[1,3000]' ]
bInline = true
iRows = 5
sValue = $oUserCurrent->getProfileAbout()|escape
sLabel = $aLang.settings_profile_about}
{* Пользовательские поля *}
{$aUserFieldValues = $oUserCurrent->getUserFieldValues(false, '')}
{foreach $aUserFieldValues as $oField}
{include 'components/field/field.text.tpl'
sName = "profile_user_field_`$oField->getId()`"
bInline = true
sValue = $oField->getValue()|escape
sLabel = $oField->getTitle()|escape}
{/foreach}
</fieldset>
{* Контакты *}
<fieldset>
<legend>{$aLang.settings_profile_section_contacts}</legend>
{$aUserFieldContactValues = $oUserCurrent->getUserFieldValues(true,array('contact','social'))}
{* Список пользовательских полей, шаблон определен в начале файла *}
<div id="user-field-contact-contener">
{foreach $aUserFieldContactValues as $oField}
{call userfield oField=$oField}
{/foreach}
</div>
{if $aUserFieldsContact}
<button type="button" class="button" onclick="return ls.userfield.addFormField();">{$aLang.user_field_add}</button>
{/if}
</fieldset>
{hook run='form_settings_profile_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_profile_edit' sMods='primary' sText=$aLang.settings_profile_submit}
</form>
{hook run='settings_profile_end'}
{include 'components/user/settings/profile.tpl' user=$oUserCurrent}
{/block}

View file

@ -5,69 +5,5 @@
{extends 'layouts/layout.user.settings.tpl'}
{block 'layout_content' append}
{hook run='settings_tuning_begin'}
<form action="{router page='settings'}tuning/" method="POST" enctype="multipart/form-data">
{hook run='form_settings_tuning_begin'}
{include 'components/field/field.hidden.security_key.tpl'}
<fieldset>
<legend>{$aLang.settings_tuning_notice}</legend>
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_topic'
bChecked = $oUserCurrent->getSettingsNoticeNewTopic() != 0
bNoMargin = true
sLabel = $aLang.settings_tuning_notice_new_topic}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_comment'
bChecked = $oUserCurrent->getSettingsNoticeNewComment() != 0
bNoMargin = true
sLabel = $aLang.settings_tuning_notice_new_comment}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_talk'
bChecked = $oUserCurrent->getSettingsNoticeNewTalk() != 0
bNoMargin = true
sLabel = $aLang.settings_tuning_notice_new_talk}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_reply_comment'
bChecked = $oUserCurrent->getSettingsNoticeReplyComment() != 0
bNoMargin = true
sLabel = $aLang.settings_tuning_notice_reply_comment}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_friend'
bChecked = $oUserCurrent->getSettingsNoticeNewFriend() != 0
bNoMargin = true
sLabel = $aLang.settings_tuning_notice_new_friend}
</fieldset>
<fieldset>
<legend>{$aLang.settings_tuning_general}</legend>
{foreach $aTimezoneList as $sTimezone}
{$aTimezones[] = [
'value' => $sTimezone,
'text' => $aLang.timezone_list[$sTimezone]
]}
{/foreach}
{include 'components/field/field.select.tpl'
sName = 'settings_general_timezone'
sLabel = $aLang.settings_tuning_general_timezone
sClasses = 'width-500 js-topic-add-title'
aItems = $aTimezones
sSelectedValue = $_aRequest.settings_general_timezone}
</fieldset>
{hook run='form_settings_tuning_end'}
{include 'components/button/button.tpl' sName='submit_settings_tuning' sText=$aLang.settings_profile_submit sMods='primary'}
</form>
{hook run='settings_tuning_end'}
{include 'components/user/settings/tuning.tpl' user=$oUserCurrent}
{/block}

View file

@ -0,0 +1,64 @@
{**
* Настройки аккаунта (емэйл, пароль)
*}
{$user = $smarty.local.user}
{hook run='settings_account_begin'}
<form method="post" enctype="multipart/form-data" class="js-form-validate">
{hook run='form_settings_account_begin'}
<fieldset>
<legend>{lang name='user.settings.account.account'}</legend>
{* E-mail *}
{include 'components/field/field.text.tpl'
sName = 'mail'
aRules = [ 'required' => true, 'type'=> 'email' ]
sValue = $user->getMail()|escape
sNote = {lang name='user.settings.account.fields.email.note'}
sLabel = {lang name='user.settings.account.fields.email.label'}}
</fieldset>
<fieldset>
<legend>{lang name='user.settings.account.password'}</legend>
<small class="note mb-20">{lang name='user.settings.account.password_note'}</small>
{* Текущий пароль *}
{include 'components/field/field.text.tpl'
sName = 'password_now'
sType = 'password'
sInputClasses = 'width-200'
sLabel = {lang name='user.settings.account.fields.password.label'}}
{* Новый пароль *}
{include 'components/field/field.text.tpl'
sName = 'password'
aRules = [ 'rangelength' => '[5,20]' ]
sType = 'password'
sInputClasses = 'width-200'
sLabel = {lang name='user.settings.account.fields.password_new.label'}}
{* Повторить овый пароль *}
{include 'components/field/field.text.tpl'
sName = 'password_confirm'
aRules = [ 'rangelength' => '[5,20]', 'equalto' => '.js-input-password' ]
sType = 'password'
sInputClasses = 'width-200'
sLabel = {lang name='user.settings.account.fields.password_confirm.label'}}
</fieldset>
{hook run='form_settings_account_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_account_edit' sMods='primary' sText=$aLang.common.save}
</form>
{hook run='settings_account_end'}

View file

@ -0,0 +1,42 @@
{**
* Управление инвайтами
*}
<small class="note mb-20">
{lang name='user.settings.invites.note'}
</small>
{hook run='settings_invite_begin'}
<form action="" method="POST" enctype="multipart/form-data">
{hook run='form_settings_invite_begin'}
<p>
{lang name='user.settings.invites.available'}:
<strong>
{if $oUserCurrent->isAdministrator()}
{lang name='user.settings.invites.many'}
{else}
{$iCountInviteAvailable}
{/if}
</strong><br />
{lang name='user.settings.invites.used'}: <strong>{$iCountInviteUsed}</strong>
</p>
{* E-mail *}
{include 'components/field/field.text.tpl'
sName = 'invite_mail'
sNote = {lang name='user.settings.invites.fields.email.note'}
sLabel = {lang name='user.settings.invites.fields.email.label'}}
{hook run='form_settings_invite_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_invite' sMods='primary' sText={lang name='user.settings.invites.fields.submit.text'}}
</form>
{hook run='settings_invite_end'}

View file

@ -0,0 +1,131 @@
{**
* Настройки профиля
*}
{$user = $smarty.local.user}
<script type="text/javascript">
jQuery(document).ready(function($){
ls.geo.initSelect();
ls.userfield.iCountMax='{cfg name="module.user.userfield_max_identical"}';
});
</script>
{* Шаблон пользовательского поля (userfield) *}
{function name=userfield}
<div class="form-field js-user-field-item" {if ! $field}id="profile_user_field_template" style="display:none;"{/if}>
<select name="profile_user_field_type[]" onchange="ls.userfield.changeFormField(this);">
{foreach $aUserFieldsContact as $fieldAll}
<option value="{$fieldAll->getId()}" {if $field && $fieldAll->getId() == $field->getId()}selected{/if}>{$fieldAll->getTitle()|escape}</option>
{/foreach}
</select>
<input type="text" name="profile_user_field_value[]" value="{if $field}{$field->getValue()|escape}{/if}" class="width-200">
<a class="icon-remove" title="{$aLang.user_field_delete}" href="#" onclick="return ls.userfield.removeFormField(this);"></a>
</div>
{/function}
{* Скрытое пользовательское поле для вставки через js *}
{call userfield field=false}
{hook run='settings_profile_begin'}
<form method="post" enctype="multipart/form-data" class="js-form-validate">
{hook run='form_settings_profile_begin'}
{* Основная информация *}
<fieldset>
<legend>{lang name='user.settings.profile.generic'}</legend>
{* Имя *}
{include 'components/field/field.text.tpl'
sName = 'profile_name'
aRules = [ 'rangelength' => "[2,{Config::Get('module.user.name_max')}]" ]
bInline = true
sValue = $user->getProfileName()|escape
sLabel = {lang name='user.settings.profile.fields.name.label'}}
{* Пол *}
{$aSex = [
[ 'value' => 'man', 'text' => {lang name='user.gender.male'} ],
[ 'value' => 'woman', 'text' => {lang name='user.gender.female'} ],
[ 'value' => 'other', 'text' => {lang name='user.gender.none'} ]
]}
{include 'components/field/field.select.tpl'
sName = 'profile_sex'
bInline = true
sLabel = {lang name='user.settings.profile.fields.sex.label'}
aItems = $aSex
sSelectedValue = $user->getProfileSex()}
{* Дата рождения *}
{include 'components/field/field.date.tpl'
sName = 'profile_birthday'
aItems = $user->getProfileBirthday()
bInline = true
sLabel = {lang name='user.settings.profile.fields.birthday.label'}}
{* Местоположение *}
{include 'components/field/field.geo.tpl'
sName = 'geo'
bInline = true
sLabel = {lang name='user.settings.profile.fields.place.label'}
fieldGeoTarget = $oGeoTarget}
{* О себе *}
{include 'components/field/field.textarea.tpl'
sName = 'profile_about'
aRules = [ 'rangelength' => '[1,3000]' ]
bInline = true
iRows = 5
sValue = $user->getProfileAbout()|escape
sLabel = {lang name='user.settings.profile.fields.about.label'}}
{* Пользовательские поля *}
{$userfields = $user->getUserFieldValues(false, '')}
{foreach $userfields as $field}
{include 'components/field/field.text.tpl'
sName = "profile_user_field_`$field->getId()`"
bInline = true
sValue = $field->getValue()|escape
sLabel = $field->getTitle()|escape}
{/foreach}
</fieldset>
{* Контакты *}
<fieldset>
<legend>{lang name='user.settings.profile.contact'}</legend>
{$contacts = $user->getUserFieldValues( true, array('contact', 'social') )}
{* Список пользовательских полей, шаблон определен в начале файла *}
<div id="user-field-contact-contener">
{foreach $contacts as $contact}
{call userfield field=$contact}
{/foreach}
</div>
{if $aUserFieldsContact}
<button type="button" class="button" onclick="return ls.userfield.addFormField();">{$aLang.user_field_add}</button>
{/if}
</fieldset>
{hook run='form_settings_profile_end'}
{* Скрытые поля *}
{include 'components/field/field.hidden.security_key.tpl'}
{* Кнопки *}
{include 'components/button/button.tpl' sName='submit_profile_edit' sMods='primary' sText=$aLang.common.save}
</form>
{hook run='settings_profile_end'}

View file

@ -0,0 +1,69 @@
{**
* Настройка уведомлений
*}
{hook run='settings_tuning_begin'}
<form action="{router page='settings'}tuning/" method="POST" enctype="multipart/form-data">
{hook run='form_settings_tuning_begin'}
{include 'components/field/field.hidden.security_key.tpl'}
<fieldset>
<legend>{lang name='user.settings.tuning.email_notices'}</legend>
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_topic'
bChecked = $oUserCurrent->getSettingsNoticeNewTopic() != 0
bNoMargin = true
sLabel = {lang name='user.settings.tuning.fields.new_topic'}}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_comment'
bChecked = $oUserCurrent->getSettingsNoticeNewComment() != 0
bNoMargin = true
sLabel = {lang name='user.settings.tuning.fields.new_comment'}}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_talk'
bChecked = $oUserCurrent->getSettingsNoticeNewTalk() != 0
bNoMargin = true
sLabel = {lang name='user.settings.tuning.fields.new_talk'}}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_reply_comment'
bChecked = $oUserCurrent->getSettingsNoticeReplyComment() != 0
bNoMargin = true
sLabel = {lang name='user.settings.tuning.fields.reply_comment'}}
{include 'components/field/field.checkbox.tpl'
sName = 'settings_notice_new_friend'
bChecked = $oUserCurrent->getSettingsNoticeNewFriend() != 0
bNoMargin = true
sLabel = {lang name='user.settings.tuning.fields.new_friend'}}
</fieldset>
<fieldset>
<legend>{lang name='user.settings.tuning.general'}</legend>
{foreach $aTimezoneList as $sTimezone}
{$aTimezones[] = [
'value' => $sTimezone,
'text' => $aLang.timezone_list[$sTimezone]
]}
{/foreach}
{include 'components/field/field.select.tpl'
sName = 'settings_general_timezone'
sLabel = {lang name='user.settings.tuning.fields.timezone.label'}
sClasses = 'width-500 js-topic-add-title'
aItems = $aTimezones
sSelectedValue = $_aRequest.settings_general_timezone}
</fieldset>
{hook run='form_settings_tuning_end'}
{include 'components/button/button.tpl' sName='submit_settings_tuning' sText=$aLang.common.save sMods='primary'}
</form>
{hook run='settings_tuning_end'}

View file

@ -25,6 +25,4 @@
{else}
{include 'components/alert/alert.tpl' mAlerts=$sUserListEmpty|default:{lang name='user.notices.empty'} sMods='empty'}
{/if}
{/if}

View file

@ -7,8 +7,8 @@
sActiveItem = $sMenuSubItemSelect
sMods = 'pills'
aItems = [
[ 'url' => "{router page='settings'}profile/", 'text' => $aLang.settings_menu_profile, 'name' => 'profile' ],
[ 'url' => "{router page='settings'}account/", 'text' => $aLang.settings_menu_account, 'name' => 'account' ],
[ 'url' => "{router page='settings'}tuning/", 'text' => $aLang.settings_menu_tuning, 'name' => 'tuning' ],
[ 'url' => "{router page='settings'}invite/", 'text' => $aLang.settings_menu_invite, 'name' => 'invite', 'is_enabled' => Config::Get('general.reg.invite') ]
[ 'url' => "{router page='settings'}profile/", 'text' => {lang name='user.settings.nav.profile'}, 'name' => 'profile' ],
[ 'url' => "{router page='settings'}account/", 'text' => {lang name='user.settings.nav.account'}, 'name' => 'account' ],
[ 'url' => "{router page='settings'}tuning/", 'text' => {lang name='user.settings.nav.tuning'}, 'name' => 'tuning' ],
[ 'url' => "{router page='settings'}invite/", 'text' => {lang name='user.settings.nav.invites'}, 'name' => 'invite', 'is_enabled' => Config::Get('general.reg.invite') ]
]}