Профиль пользователя: как запретить редактировать поле?

  • 17 Ответов
  • 2547 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

oazis

  • ***
  • 97
  • + 2 -
Здравствуйте,
подскажите пожалуйста, как в стандартном профиле пользователя Joomla 3.0 сделать недоступное поле для редактирования (по аналогии с полем логин). Чтобы пользователь зайдя в профиль не мог редактировать это поле но видел его визуально? необходимо запретить редактировать поле "имя пользователя".

Благодарю.

*

kreker92

  • ****
  • 392
  • + 16 -
$("input[name='name']").attr('disabled', 'false');
Все вопросы и предложения на почту.

*

kreker92

  • ****
  • 392
  • + 16 -
Код
$("input[name='name']").attr('disabled', 'false');


Или же найти шаблон и прописать там этот атрибут.
Все вопросы и предложения на почту.

*

Fedor Vlasenko

  • ********
  • 3799
  • + 698 -
  • Все начинается с Value
kreker92 это не решение. Js я смогу легко отключить и отредактировать поле.
Для решения нужно писать плагин группы user в котором нужно обрабатывать два события
onUserBeforeSave возвращать старое имя (для тех кто попытается его изменить) и сделать поле не редактируемым
Код: php-brief
function onContentPrepareForm($form, $data){
    if (!($form instanceof JForm)) {
        $this->_subject->setError('JERROR_NOT_A_FORM');

        return false;
    }
    if ($form->getName() =='com_users.profile')
    {
        $form->setFieldAttribute('name', 'readonly', 'true', null);
    }
}

*

varX

  • ******
  • 1591
  • + 104 -
  • разработка компонентов
kreker92 это не решение. Js я смогу легко отключить и отредактировать поле.
Для решения нужно писать плагин группы user в котором нужно обрабатывать два события
onUserBeforeSave возвращать старое имя (для тех кто попытается его изменить) и сделать поле не редактируемым

Зачем такие сложности? Функцию unset() никто не отменял.

*

Fedor Vlasenko

  • ********
  • 3799
  • + 698 -
  • Все начинается с Value
Цитировать
Функцию unset() никто не отменял
необходимо запретить редактировать поле "имя пользователя".
lcd25 где здесь взаимосвязь? и при чем здесь unset?

*

varX

  • ******
  • 1591
  • + 104 -
  • разработка компонентов
lcd25 где здесь взаимосвязь? и при чем здесь unset?
Это же элементарно:
if(JRequest::getCmd('view', '')=='profile')unset($_REQUEST['name']);
Можно даже в шаблоне написать сверху, чтобы обновляться. зачем тут плагины плодить?

*

Fedor Vlasenko

  • ********
  • 3799
  • + 698 -
  • Все начинается с Value
и дальше что, что будет при обновлении записи, что вы запишите пользователю в поле name?
Что будет мешать добавить его обратно туда(к примеру я модулем вывожу форму)?

*

varX

  • ******
  • 1591
  • + 104 -
  • разработка компонентов
Цитировать
и дальше что, что будет при обновлении записи, что вы запишите пользователю в поле name?
Задача в том и заключается, чтобы туда ничего не записалось.

Цитировать
Что будет мешать добавить его обратно туда(к примеру я модулем вывожу форму)?
Почитайте спецификацию функции unset. очень рекомендую вообще читать спецификации.

*

Fedor Vlasenko

  • ********
  • 3799
  • + 698 -
  • Все начинается с Value
Цитировать
Задача в том и заключается, чтобы туда ничего не записалось.
Таким образом вы не сможете изменить профиль пользователя. Может тогда вообще не выводить форму редактирования.
lcd25 не зацикливайтесь на unset //$form->removeField('name');. Это не решение.

Цитата: oazis от 04.10.2013, 23:15:45
необходимо запретить редактировать поле "имя пользователя".
и каким же вы образом запретили.
И иногда стоит признавать ошибки. Ибо все мы ошибаемся. А вот зацикливаться не стоит. Без хаков это только плагин. Запретили редактирование имени и при записи вернули оригинальные.

*

varX

  • ******
  • 1591
  • + 104 -
  • разработка компонентов
Цитировать
Таким образом вы не сможете изменить профиль пользователя. Может тогда вообще не выводить форму редактирования.
lcd25 не зацикливайтесь на unset //$form->removeField('name');. Это не решение.
С чего вы взяли, что не будет меняться профиль пользователя? Не будет меняться только имя пользователя самим пользователем, чего и требовалось добиться.

Цитировать
И иногда стоит признавать ошибки. Ибо все мы ошибаемся. А вот зацикливаться не стоит. Без хаков это только плагин. Запретили редактирование имени и при записи вернули оригинальные.
Без хаков, действительно, понадобится плагин. Увы, это большой недостаток Joomla - в ней теряется гибкость и динамичность PHP. Но если проблема обновлений не стоит, то гораздо проще добавить unset($data['name']); в модель com_users/models/profile.php
« Последнее редактирование: 05.10.2013, 06:50:42 от lcd25 »

*

oazis

  • ***
  • 97
  • + 2 -
Друзья,

приятно видеть, что мой вопрос вызвал бурную дискуссию, но, можете посоветовать решение. А то из прочитанного я так ничего не понял. ^-^ На сайте нет свободной регистрации, все "учетные записи" (акки) создаются вручную администраторами.

Задача: чтобы пользователь не мог изменять в своем профиле поле 'name', по аналогии с полем логин. Плохо, что в Joomla 3.0 не предусмотрено запрещать или разрешать менять это поле.

Буду благодарен за помощь в решении задачи.

*

varX

  • ******
  • 1591
  • + 104 -
  • разработка компонентов
oazis, думаю, вам стоит воспользоваться советом Fedor Vlasenko и заказать разработку плагина. Но если это ваш сайт, и обновлять его вы не планируете, то можно воспользоваться моим советом - именно, прописать unset($data['name']); в функцию save() в модель com_users/models/profile.php. При этом, чтобы не вводить пользователя в заблуждение, также добавить в шаблон 'disabled', как советовал kreker92 выше.

*

oazis

  • ***
  • 97
  • + 2 -
Fedor Vlasenko, вы как разработчик можете подсказать, сколько будет стоить разработка плагина?

*

s0042

Здравствуйте нужен плагин или компонент, который может создавать профиль в профиле пользователя. Другими словами создав свой профиль, пользователь может создать другой профиль, из своего кабинета, о другом пользователе, с указанием области города, ФИО, года рождения, выбор пола и прикрепить фото, с возможностью комментировать этого человека всеми кто его найдет. Сколько будет стоить сие чудо?) и кто сможет взяться за эту работу?

*

kreker92

  • ****
  • 392
  • + 16 -
Создайте отдельную тему в коммерческом разделе.
Все вопросы и предложения на почту.

*

Hishchnik

  • ****
  • 254
  • + 18 -
  • ©
Мож кому и пригодится:
readonly="true" в XML файле формы ни кто не отменял, при этом создается и отображается строка, но имеет атрибут "readonly"
Пример:
Код: xml
<field name="name" type="text" description="Название метки" label="Описание" readonly="true" size="30" />
также есть disabled="true" - тоже не дает изменить, но уже и в форму не передает данные...
« Последнее редактирование: 15.05.2014, 04:58:27 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.

*

EndVal

  • ***
  • 53
  • + 9 -
Здравствуйте нужен плагин или компонент, который может создавать профиль в профиле пользователя. Другими словами создав свой профиль, пользователь может создать другой профиль, из своего кабинета, о другом пользователе, с указанием области города, ФИО, года рождения, выбор пола и прикрепить фото, с возможностью комментировать этого человека всеми кто его найдет. Сколько будет стоить сие чудо?) и кто сможет взяться за эту работу?
Посмотри здесь, может подойдет
http://www.adsmirny.ru/kontakty