ImageToElement управление правами доступа

Запись от 24.10.2016
Есть такой хороший модуль ImageToElement, который превращает набор картинок в набор элементов инфоблока с детальной картинкой.
Однако, оказалось, что модуль не поддерживает настройку прав доступа, а она как раз очень понадобилась. Исправляем! (актуально для 0.0.3, может позже разработчик добавит такую возможность)

Первым делом добавляем страницу с опциями, что бы в спике модулей у нас появилсь страница для настроек.
Добавляем страницу с настройками прав доступа:
/bitrix/modules/igima.imagetoelement/options.php
<?
IncludeModuleLangFile(__FILE__);
$module_id = 'igima.imagetoelement';

if($sModuleRight>='R'):?>

	<?
		$aTabs = Array(
			Array(
				'DIV'	=> 'edit1',
				'TAB'	=> GetMessage('MAIN_TAB_RIGHTS'),
				'TITLE'	=> GetMessage('MAIN_TAB_TITLE_RIGHTS')
			),
		);

		$tabControl = new CAdminTabControl('tabControl', $aTabs);
	?>

	<?$tabControl->Begin();?>

	<form method="post"
		  action="<?=$APPLICATION->GetCurPage()?>?mid=<?=htmlspecialcharsbx($mid)?>&lang=<?=LANGUAGE_ID?>">

		<?=bitrix_sessid_post()?>

		<?$tabControl->BeginNextTab();?>
			<?require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/admin/group_rights.php');?>
		<?$tabControl->Buttons();?>

		<script language="JavaScript">
			function RestoreDefaults() {
				if(confirm('<?=AddSlashes(GetMessage('MAIN_HINT_RESTORE_DEFAULTS_WARNING'))?>')) {
					window.location = "<?=$APPLICATION->GetCurPage()?>?RestoreDefaults=Y&lang=<?=LANGUAGE_ID?>&mid=<?=urlencode($mid)?>";
				}
			}
		</script>

		<input type="submit"
			   <?=($sModuleRight < 'W') ? 'disabled' : '';?>
			   name="Update"
			   value="<?=GetMessage('IGIMAIMAGETOELEMENT__OPT_SAVE')?>">

		<input type="hidden"
			   name="Update"
			   value="Y">

		<input type="reset"
			   name="reset"
			   value="<?=GetMessage('IGIMAIMAGETOELEMENT__OPT_RESET')?>">

		<input type="button"
			   <?=($sModuleRight < 'W') ? 'disabled' : '';?>
			   title="<?=GetMessage('MAIN_HINT_RESTORE_DEFAULTS')?>"
			   OnClick="RestoreDefaults();"
			   value="<?=GetMessage('IGIMAIMAGETOELEMENT__OPT_DEFAULTS')?>">

		<?$tabControl->End();?>
	</form>
<?endif; ?>

Этой странице нужен файл языковой версии:
/bitrix/modules/igima.imagetoelement/lang/ru/options.php
<?
$MESS['IGIMAIMAGETOELEMENT__OPT_SAVE']		= 'Сохранить';
$MESS['IGIMAIMAGETOELEMENT__OPT_RESET']		= 'Сбросить';
$MESS['IGIMAIMAGETOELEMENT__OPT_DEFAULTS']	= 'По умолчанию';

И остается поправить правила подключения кнопки в админке.
Здесь проверяем, есть ли у пользователя права доступа к модулю и затем, есть ли права на запись в открытый раздел инфоблока:
/bitrix/modules/igima.imagetoelement/interface/get_menu.php
...
$module_id = 'igima.imagetoelement';
$sModuleRight = $APPLICATION->GetGroupRight($module_id);

if (!CModule::IncludeModule('iblock') || $sModuleRight < 'R') {
	return false;
}

if (
	in_array(
		$APPLICATION->GetCurPage(),
		self::$urlPatterns[__FUNCTION__]['url']
	)
	&& intval($_REQUEST['IBLOCK_ID']) > 0
	&& CIBlockSectionRights::UserHasRightTo($_REQUEST['IBLOCK_ID'], $_REQUEST['find_section_section'], 'element_edit')
) { ...