Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Реализация popup-админки для компонента

00 голосов
6
Доброго времени суток.

Создал компонент, и теперь пытаюсь сделать админскую часть для него...
В файле .description.php компонента использовал ключ "AREA_BUTTONS" => array(...), здесь заметил что есть возможность указать URL кнопки, но не ожидал что по нажатию на нее произойдет переход на новую страницу.
Как-то это не правильно, пришлось выдумать "хак", т.к. перерыв документацию другого способа не нашел, что вообще странно, описал кнопку следующим образом:

Код
$arComponentDescription = array(
   ...,
   "AREA_BUTTONS" => array(
      array(
         'URL' => "javascript:jsPopup.ShowDialog('/bitrix/components/demo/citizen.select/admin.php?id=...",
         'SRC' => '',
         'TITLE' => "Изменить",
      ),
   ),
   ...,
);


В файле admin.php компонента реализовал форму, обращение к базе и т.д.

1. Вот прошу кого-нибудь подсказать как концептуально правильно реализовать popup-админку компонента, ибо найденный способ очевидно костыль?
2. Не смог найти, как в админ-форме использовать wysiwyg-редактор?

Спасибо за внимание.
спросил 25 Фев, 13 от j2009 (200 баллов)

6 Ответы

00 голосов
Цитата
Сергей Попов пишет:
1. Вот прошу кого-нибудь подсказать как концептуально правильно реализовать popup-админку компонента, ибо найденный способ очевидно костыль?

Хм, а чем вам не нравится текущее? Если не изменяет память, то именно так и делается в Битриксе.

2.
Код
      CFileMan::AddHTMLEditorFrame(
         "SOME_TEXT",
         "",
         "SOME_TEXT_TYPE",
         "text",
         array(
            'height' => 450,
            'width' => '100%'
         ),
         "N",
         0,
         "",
         "",
         "ru"//это язык
      );
ответил 25 Фев, 13 от Arn4 (2,140 баллов)
00 голосов
Антон, респект.

1. В стандартных компонентах, например, у новости нажимаешь "Добавить новость" и всплывает попап, в виде "окошка". Т.е. попап админка новостей, очевидно, подключает некую стандартную обертку. Что нужно подключать? Может кто из разработчиков подскажет где почитать про это?

Насчет того что не нравится, что не нашел документации по сабжу. Имхо, это безобразие какое-то. Хорошо если просто я туплю - исправлюсь, так ведь ищу уже 2 недели!
Архитектурно не нравится:
a. писать в описании компонента каждый раз фразу "javascript:jsPopup.ShowDialog", от многословия глаза мылятся, да и смотрится js-код в описании компонента как-то не к месту..
b. можно было изначально продумать попап-админки компонентов так, чтобы система оборачивала вывод этим окошком.
Впрочем это преодолимо, а руководство бы очень не помешало.

2. Спасибо, Антон! Работает =) Не совсем понял что какие поля обозначают, понял что первый параметр это имя поля, второй - значение, хотелось бы еще сделать по-умолчанию чтобы html-редактор включался.
ответил 15 Март, 13 от j2009 (200 баллов)
00 голосов
1. Честно, давно последний раз такие связки писал, подзабыл уже. Советую посмотреть как работают компоненты из коробки. Та же лента новостей.

2.
Код
function AddHTMLEditorFrame(
      $strTextFieldName,//имя поля
      $strTextValue,//значение поля (заполняется в редактор)
      $strTextTypeFieldName, // тип поля *
      $strTextTypeValue,// значение типа поля *
      $arSize = Array("height"=>350), // массив размеров (шириа/высота)
      $CONVERT_FOR_WORKFLOW="N", //хм.. что-то с документооборотом связано :)
      $WORKFLOW_DOCUMENT_ID=0,// то же
      $NEW_DOCUMENT_PATH="",// не сталкивался
      $textarea_field="",// тоже
      $site = false,// сайт, для админки false
      $bWithoutPHP = true,// не обрабатывать PHP
      $arTaskbars = false,// какие панели
      $arAdditionalParams = Array() // **
   )

* - strTextTypeFieldName и strTextTypeValue те самые радио-баттоны с переключением html/text
** - их много, dontusecookie, dontshowta, limit_php_access

Советую поэкспериментировать. Я просто глянул в код, не разбирался.

Цитата
Сергей Попов пишет:
хотелось бы еще сделать по-умолчанию чтобы html-редактор включался.

Если в Битриксе ничего не изменилось, то состояние редактора хранится в сессии. То есть, если мы сохранили страницу с включенным редактором, то он в дальнейшем сразу и откроется, НО при условии что strTextTypeValue будет как раз html.

Дерзайте :)
ответил 18 Апр, 13 от Arn4 (2,140 баллов)
00 голосов
1. У меня компоненты оптимайзером зашифрованы, исходники пытался найти, да не вышло =( видать бдят разработчики... так что этот путь для меня заказан =((

2. Вы сначала приводили пример вызова AddHTMLEditorFrame() где 10-й параметр отвечал за язык, а во втором примере (исходники?) "// сайт, для админки false".

Второй вариант реалистичнее, попробовал 13-й параметр array('dontshowta' => 'Y'), получилось забавно - вывелась только перключалка текст/html а редактор канул =) интересно зачем ввели такую опцию? O_o

УВАЖАЕМЫЕ РАЗРАБОТЧИКИ: Пожалуйста, дайте линк на документацию по разработке админской части компонентов. Обучаться без исходников и документации не улыбает, а метод тыка очень накладный по времени.
ответил 12 Авг, 13 от j2009 (200 баллов)
00 голосов
Цитата
Сергей Попов пишет:
УВАЖАЕМЫЕ РАЗРАБОТЧИКИ: Пожалуйста, дайте линк на документацию по разработке админской части компонентов. Обучаться без исходников и документации не улыбает, а метод тыка очень накладный по времени.

Поддерживаю!
ответил 13 Ноя, 13 от Artful (100 баллов)
00 голосов
К примеру - jsDebugWindow )
---
Тоже поддерживаю.
ответил 21 Фев, 14 от ledyNEXUS (420 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
3 ответов
спросил 22 Май, 13 от SpioN (160 баллов)
0 голосов
8 ответов
0 голосов
3 ответов
спросил 11 Март, 14 от Yrizer (200 баллов)