DSite CMS
DSite CMS
создано Media Programming Group
Последняя статья: Как добавить заголовок новости в Title

Поиск: 
Главная            Статьи            Форум            Новости            Описание
Обучающие ролики
Примеры сайтов на CMS DSite
Цены
Вебстудиям
Заявка на DSite
FAQ
Ссылки
Контакты
Скачать

Новости:
05.05.11 :: Обновление 4.91 (релиз)

21.04.11 :: Обновление 4.87

07.04.11 :: Обновление 4.83

04.02.11 :: Обновление от 01.02

25.06.10 :: Поиск по содержимому страниц


Логин:
Пароль:

Забыли пароль? Восстановить

Также Вы можете пройти регистрацию

25.06.2010 :: Личный кабинет пользователя

Надстройка "регистрация пользователей"  и её простое использование были описана ранее. В продолжении этой статьи хочется осветить возможности, которые нужно предоставить пользователю по изменению личных данных.

Подключая стандартную таблицу vc_users к надстройке "Каталог", возможно добавление полей и расширение возможностей личного кабинета пользователя.

К примеру, подключаем дополнительные поля:

PHONE - телефон пользователя

ADDRESS - адрес пользователя

SENDMEMAILS - возможность принимать почту

Для этого создаём форму, аналогичную описанной в статье "регистрация пользователей", но с дополнительными формами. Эти формы  могут быть отредактированы визуальным редактором, что важно для конечного пользователя (если он, конечно, захочет там покопаться).

 

Итак форма может выглядеть так:

<h1>Изменение данных пользователя {LOGIN}</h1>
<table border=0 cellspacing=5 cellpadding=0>
<form action="{action}" method="post" name="cabinet" onsubmit="return handle_form(this);"> 
  <tr><td align="right">Пароль: </td><td><input class="cutebox" title="Пароль" type="password" name="password" /></td></tr>
  <tr><td align="right">Пароль повторно: </td><td><input class="cutebox" title="Пароль повторно" type="password"  name="password2" /></td></tr> 
  <tr><td>Получать предложения по e-mail:</td><td><input class="cutebox" needed="no" name="SENDMAILS" value="1" size="40" type="checkbox"></td> 
  <tr><td align="right">Имя: </td><td><input class="cutebox" needed="no" name="NAME" type="text" value="{NAME}" size=40/></td></tr> 
  <tr><td align="right">Фамилия: </td><td><input class="cutebox" needed="no" name="SNAME" type="text" size=40 value="{SNAME}" /></td></tr> 
  <tr><td align="right">Телефон: </td><td><input class="cutebox" needed="no" name="PHONE" type="text" size=40 value="{PHONE}" /></td></tr> 
  <tr><td align="right">Адрес:</td><td><textarea class="cutebox" cols=40 rows=5 needed="no" name="ADDRESS" type="text">{ADDRESS}</textarea></td></tr> 
  <tr><td align="right">Текст вашего объявления:</td><td><textarea class="cutebox" cols=40 rows=5 needed="no" name="INFO" type="text">{INFO}</textarea></td></tr> 
  <tr><td colspan=2><input class="cutebutton" type="submit" value="Изменить" /></td></tr> 
</form> </table>

 

Функция hanfle_form может быть создана визуальным редактором или можно её вписать в таком виде (аттрибут needed добавляет визуальный редактор самостоятельно):

<script language="javascript1.2">  
<!--  function handle_form(f) {      
    var elnum = f.elements.length;
    var i = 0;      
    var str = '';      
    var newname = '';      
    var oldname = '';       
    for (i=0 ; i<elnum; i++) {           
     title = f.elements[i].title;
     str = f.elements[i].value;
     if (f.elements[i].getAttribute('needed')=='needed' && str=='') 
      {
      var message = 'Поле обязательно для заполнения' +' "'+ title +'"';
      alert(message);
      f.elements[i].focus();
      return false;
      }       
     }       
    return true;  
    }  
//-->
</script> 
 
 

 Далее можно использовать всё тот же скрипт регистрации. Единственное отличие теперь заключается в том, что пользовательские данные должны автоматически заполняться в описанную форму. Функция, которая позволяет управлять параметрами пользователя на базе шаблона называется dsRegShowAndEditParams. Описание можно найти в инструкции к DSite. 

dsRegShowAndEditParams($ru, $templ_private_room, false, array('NAME', 'SNAME', 'INFO',
 'PHONE', 'ADDRESS', 'SENDMAILS'));

Первый параметр: образец класса dsRegUserEx, далее ID страницы шаблона личного кабинета (см. выше). Третий параметр представляет больший интерес.

Если обновление параметров происходит одним и тем же скриптом, то необходимо показывать или изменять данные. Этот параметр позволяет управлять таким поведением. В данном случае мы показываем форму. Если же приходит POST запрос после вывода формы, то мы запускаем функцию с параметром true. В последнем массиве находится список переменных, которые должны быть как в форме, так и в таблице БД. Есть у этой функции ещё один необязательный параметр, в котором можно передать шаблону необходимые дополнительные переменные, что бывает очень удобно.

Для того чтобы работало обновление формы, строчкой ранее можно написать:

if (isset($_POST['password']) && isset($_POST['password2']))
    {
    $result = dsRegShowAndEditParams($ru, $templ_private_room, true, array('NAME', 'SNAME', 'INFO', 
      'PHONE', 'ADDRESS', 'SENDMAILS'));
    }

Ну вот и почти всё. Волшебная функциа dsRegShowAndEditParams сама управляет выводом и заполнением данных в форме. При этом не нужно подвязывать класс ce.inc или писать многометровые PHP обвязки.

Единственным неудобством представляется checkbox. К сожалению HTML язык не предполагает заполнения checkbox-ов засчёт VALUE, поэтому в конце формы рекомендуется добавить строчку на javascript.

<script language="javascript1.2">
<!--
if ({SENDMAILS}) document.cabinet.SENDMAILS.checked = true;
-->
</script>

 



Статьи:

1  2  » 


FAQ  Поиск на форуме
Новое сообщение
Copyright © 2017 Webmedia.ru - создание сайтов & Media Programming Group