526 views

Настройки форм редактирования элементов ИБ для админов

Если один из админов настраивает форму для всех, то не затираются настройки этой формы для других админов, настроивших форму для себя ранее. Тут не спасает даже галочка «для всех» в настроке формы, т.к. она меняет форму для всех пользователей, кроме тех админов, кто ее настроил ранее под себя.

Для этого нужно выполнить запрос:

DELETE FROM b_user_option WHERE CATEGORY = 'form' AND NAME = 'form_element_#ID#' AND COMMON = 'N'

и бахнуть кеш настроек.

global $CACHE_MANAGER;
$CACHE_MANAGER->cleanDir("user_option");
Проблема решается событием:
// очищаем настройки формы по-умолчанию для всех админов
AddEventHandler('main', 'OnEndBufferContent', function (&$content) {
    if (count($_POST['p']) <= 0) {
        return;
    }
     global $APPLICATION, $DB, $CACHE_MANAGER;
     $pCfg       = array_shift($_POST['p']);
     if ($APPLICATION->GetCurPage() != '/bitrix/admin/user_options.php'
        || $pCfg['c'] != 'form' || $pCfg['d'] != 'Y'
        || !preg_match('#^form_((section)|(element))_[0-9]+$#', $pCfg['n'])
    ) {
        return;
    }
     $DB->Query("DELETE FROM b_user_option WHERE CATEGORY = 'form' AND NAME = '" . $pCfg['n'] . "' AND COMMON = 'N'");
    $CACHE_MANAGER->cleanDir("user_option");
});
This site is using the Seo Wizard wordpress plugin by www.seowizard.org.