четверг, 8 декабря 2011 г.

Редактирование элементов всеми пользователями через компонент iblock.element.add.form

Срочно понадобилось исправить компонент iblock.element.add.form. Дело в том, что при редактировании элементов ему нужна обязательная привязка к пользователю. По создателю или через свойство элемента, но привязка обязательна, что не позволяет редактировать созданный элемент другим пользователям.

Итак, чтобы разрешить всем пользователям редактировать элементы в компоненте  iblock.element.add.form, в коде компонента (component.php) ищем строки:


// check type of user association to iblock elements and add user association to filter
if ($arParams["ELEMENT_ASSOC"] == "PROPERTY_ID" && strlen($arParams["ELEMENT_ASSOC_PROPERTY"]) && is_array($arResult["PROPERTY_LIST_FULL"][$arParams["ELEMENT_ASSOC_PROPERTY"]]))
{
if ($USER->GetID())
$arFilter["PROPERTY_".$arParams["ELEMENT_ASSOC_PROPERTY"]] = $USER->GetID();
else
$arFilter["ID"] = -1;
}
elseif ($USER->GetID())
{
$arFilter["CREATED_BY"] = $USER->GetID();
}


В коде меняем $USER->GetID() на null. Получится:


elseif ($USER->GetID())
{
$arFilter["CREATED_BY"] = null;
}


В настройках компонента ставим привязку по пользователю.
Всё. Теперь редактировать элементы смогут все.

2 комментария:

  1. И при следующем обновлении битрикса все наши изменения успешно исчезают...

    ОтветитьУдалить
  2. может я не так что-то делаю, но у меня все равно стоит ограничение доступа.
    хотя строку заменил, и в параметрах компонента установил привязку к пользователю - по создателю. Не подскажете в чем может быть проблема?

    ОтветитьУдалить