Добавление комментариев авторизованными пользователями

#
Добавление комментариев авторизованными пользователями

Добрый день,

Логично не заставлять авторизованных пользователей, после того как они залогинились, не вводить имя и емейл при добавлении комментария. Это как то реализовано? Сейчас в процессе эвалюейшена возможностей бесплатной версии, собираюсь приобрести версию с полным фаршем, поэтому проверить не могу.

Заранее спасибо,
Евгений
#
Re: Добавление комментариев авторизованными пользователями
Да, это можно реализовать(в коммерческой редакции, в которой есть модуль "Пользователи сайта". Есть стандартный метод класса "Пользователи сайта", возвращающий текущего пользователя. Зная идентификатор текущего пользователя, можно подставлять его имя и e-mail в форму.
#
Re: Добавление комментариев авторизованными пользователями
Ага, спасибо.
Я новенький в это й системе.

Я правильно понимаю, что можно не только подставлять в форму информацию пользователя, но и просто убрать поля для ввода имени и емейла, и просто передать их куда нужно?

Если не сложно приведите соответсвующие объяснения на уровне кода. Спасибо!
#
Re: Добавление комментариев авторизованными пользователями
Если подразумевается форма, созданная при помощи модуля "Формы"(например, форма обратной связи),то реализацию можно осуществить так: в типовой динамической странице для формы эл. адрес получается из данных, пришедших после отправки формы:
if (isset($_POST['Submit']))
{
   /* 0 - html, 1- plain text */
   $param['type'] = to_int($GLOBALS['LA']['TypeMail']);

   if (!empty($GLOBALS['LA']['EmailFieldName']) && !empty($_POST[to_str($GLOBALS['LA']['EmailFieldName'])]))
   {
      $param['e-mail'] = to_str($_POST[to_str($GLOBALS['LA']['EmailFieldName'])]);
   }
...
}
Для определения эл. адреса текущего пользователя необходимо данный блок  
заменить на:
if (isset($_POST['Submit']))
{
   /* 0 - html, 1- plain text */
   $param['type'] = to_int($GLOBALS['LA']['TypeMail']);

$SiteUsers = new SiteUsers();
$user_id = $SiteUsers->GetCurrentSiteUser();

$mas = $SiteUsers->GetSiteUser($user_id);
$param['e-mail'] = $mas['site_users_email'];
...
}
В разделе "Формы" необходимо отредактировать нужную форму и убрать у нее поля для ввода эл. адреса.
А если обратиться к Вашему первому вопросу: "как не вводить имя и емейл при добавлении комментария?", то при добавлении комментария к инфоэлементу пользователю сайта, несмотря на то, что он вводит свой эл. адрес, письмо по умолчанию не отправляется. И это поле можно убрать(необходимо вносить изменения в XSL-шаблон для вывода подробной информации об инфоэлементе).
#
Re: Добавление комментариев авторизованными пользователями
помогите разобраться с тип. дин. страницей публикации информ. системы

как можно при создании в структуре сайта узла с типовой динамической страницей "Информационная система" добавить ему свойство "Комментарии только зарегистрированным" типа checkbox? соответственно если оно отмечено для залогиненных пользователей на сайте появляется окошко "добавить комментарий" с окном ввода текста, имя и мэйл берутся из информации о пользователе, а незалогиненным комментарии оставлять нельзя, только читать.
Знакомство с тип дин страницами проходит трудно(
#
Re: Добавление комментариев авторизованными пользователями
В разделе "Типовые динамические страницы" переходите в папку "Информационные системы", далее для тип. дин. страницы "Информационная система" нажимаете на пиктограмму "Параметры страницы" и добавляете параметр:
Название - "Комментарии только зарегистрированным"
Название переменной - "CommentOnlySiteUsers"
Тип - "флажок"
После этого при редактировании узлов структуры с тип. дин. страницей "Информационная система" будет отображаться этот параметр. А значение этого параметра в самой тип. дин. странице "Информационная система" будет доступно через переменную $GLOBALS['LA']['CommentOnlySiteUsers']. В этой тип. дин. странице(перед вызовом метода показа элемента ShowInformationSystemItem) следует добавить проверку значения этого флажка(т.е. переменной $GLOBALS['LA']['CommentOnlySiteUsers']), и если это значение равно 1, то следует выяснять текущего пользователя методом GetCurrentSiteUser и при его наличии передавать в метод ShowInformationSystemItem параметр, сигнализирующий о необходимости показывать форму добавления комментария(имя и э-маил можно взять методом GetSiteUser и также через внешние параметры передать в XSL-шаблон).

#
Re: Добавление комментариев авторизованными пользователями
с типовой дин. страницей Инф.системы все получилось
данные берутся из xml

<input type="hidden" name="comment_autor" value="{/document/username/site_users_surname} {/document/username/site_users_name} {/document/username/site_users_patronymic} ({/document/username/site_users_login})"/>
<input type="hidden" name="comment_email" value="{/document/username/site_users_email}"/>
<input type="text" size="50" name="comment_subject" value=""/>


а как быть с тип. дин. странице для вопросов-ответов и гостевой?
как в этом фрагменте
   
<td>ФИО:</td>
   <td><input type="text" name="fio" size="50" value="<?=htmlspecialchars(to_str($_POST["fio"]))?>"></td>
   </tr>
   <tr>
   <td>E-mail:</td>
   <td><input type="text" name="email" size="50" value="<?=htmlspecialchars(to_str($_POST["email"]))?>"></td>

вытащить имя фамилию, логин и почту, метод GetCurrentSiteUser возвращает сразу массив всех параметров о пользователе
#
Re: Добавление комментариев авторизованными пользователями
Да, конечно метод GetCurrentSiteUser возвращает массив со всеми параметрами пользователя, но есть возможность обратиться к любому интересующему параметру. Например эл. адрес, логин и фамилия:  
$mas = $SiteUsers->GetSiteUser($user_id);
$param['e-mail'] = $mas['site_users_email'];
$param['login'] = $mas['site_users_login'];
$param['surname'] = $mas['site_users_surname'];
Авторизация