Next Generation CMS - Управляйте контентом без границ!
Создавай
Развивай
Управляй
Актуальная v.0.9.7
Плагин uprofile

Плагин uprofile

Плагин обеспечивает функционал просмотра и редактирования профиля пользователей.
За данные функции отвечают следующие шаблоны:

users.tpl - просмотр профиля пользователя (как чужого так и своего)
profile.tpl - страница редактирования собственного профиля

[TWIG] users.tpl
------------------------------------------------
Шаблон используется для просмотра профиля любого пользователя (а также своего в
режиме "как меня видят другие")

Некоторые переменные оставлены в шаблоне в целях совместимости с предыдущими версиями.

Список переменных:
* user - массив с данными пользователя, взятыми из таблицы БД users
* id - ID пользователя
* name - логин пользователя
* news - кол-во новостей пользователя
* com - кол-во комментариев пользователя
* status - наименование группы пользователя
* last - дата/время последнего посещения
* reg - дата/время регистрации
* from - Поле "откуда"
* info - Поле "информация обо мне"
* flags - Массив с признаками/флагами
* hasAvatar - Флаг: у пользователя есть аватарка
* isOwnProfile - Флаг: пользователь просматривает _собственный_ профиль
* token - Токен безопасности для передачи в RPC функцию plugin.uprofile.editForm

HINT: Переменные из плагина xfields (доп. поля) доступны в ветке p.xfields.
Интересующиеся могут выполнить {{ debugValue(p.xfields) }} и посмотреть какую именно информацию
предоставляет xfields в данный шаблон.

Для "перехода" из режима "просмотра собственного профиля" в его редактирование можно использовать
следующую конструкцию.
Необходимые предыдущие шаги:
* в шаблоне создана ссылка с текстом "редактировать профиль" и событием onclick = "ng_uprofile_editCall(); return false"
* всё содержимое шаблона users.tpl помещено в div с ID "uprofileReplaceForm"

Код:
{% if (user.flags.isOwnProfile) %}
<script type="text/javascript" language="javascript">
function ng_uprofile_editCall() {
$.post('/engine/rpc.php', { json : 1, methodName : 'plugin.uprofile.editForm', rndval: new Date().getTime(), params : json_encode({ 'token' : '{{ token }}' }) }, function(data) {
// Try to decode incoming data
try {
resTX = eval('('+data+')');
} catch (err) { alert('Error parsing JSON output. Result: '+linkTX.response); }
if (!resTX['status']) {
ngNotifyWindow('Error ['+resTX['errorCode']+']: '+resTX['errorText'], 'ERROR');
} else {
$('#uprofileReplaceForm').html(resTX['data']);
}
}).error(function() { ngNotifyWindow('HTTP error during request', 'ERROR'); });

}
</script>
{% endif %}

[TWIG] profile.tpl
------------------------------------------------
Шаблон для редактирования собственного профиля
Шаблон используется для просмотра профиля любого пользователя (а также своего в
режиме "как меня видят другие")

* user - массив с данными пользователя, взятыми из таблицы БД users
* id - ID пользователя
* name - логин пользователя
* news - кол-во новостей пользователя
* com - кол-во комментариев пользователя
* status - наименование группы пользователя
* last - дата/время последнего посещения
* reg - дата/время регистрации
* email - email пользователя
* from - Поле "откуда"
* info - Поле "информация обо мне"
* flags - Массив с признаками/флагами
* hasAvatar - Флаг: у пользователя есть аватарка
* flags - Набор глобальных флагов
* avatarAllowed - Флаг: пользователям разрешено иметь аватары
* info_sizelimit_text - текстовое сообщение для выдачи пользователю при превышении размера поля "обо мне" (info)
* info_sizelimit - ограничение (в символах) на максимальный размер поля "обо мне" (info)
* form_action - URL формы, на который необходимо отправлять пользователя для сохранения профиля
* token - Токен безопасности для изменения профиля пользователя

Для сохранения настроек профиля необходимо создать форму, отправляющую POST запрос на URL {{ form_action }}.
При этом необходимо добавить следующие невидимые (hidden) поля:
* token со значением {{ token }}

Информация передаётся в следующих полях:
* editemail - для {{ user.email }}
* editfrom - для {{ user.from }}
* editabout - для {{ user.about }}
* editpassword - для задания нового пароля
* oldpass - для указания старого пароля (требуется только при попытке смены пароля)
* newavatar - тип "file", для заливки новой аватарки
* delavatar - тип "checkbox", для отметки "удалить аватарку"


Для вывода аватара можно использовать конструкцию:
Код:
{% if (flags.avatarAllowed) %}
<input type="file" name="newavatar" size="40" /><br />
{% if (user.flags.hasAvatar) %}
<img src="{{ user.avatar }}" style="margin: 5px; border: 0px; alt=""/><br/>
<input type="checkbox" name="delavatar" id="delavatar" class="check" /> 
<label for="delavatar">{{ lang.uprofile['delete'] }}</label>
{% endif %}
{% else %}
{{ lang.uprofile['avatars_denied'] }}
{% endif %}

Скачать:uprofile.zip

Гостям запрещено оставлять комментарии.
Вам надо авторизироваться или зарегистрироваться на сайте.
up