1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
type.php
См. документацию.
1<?php
8
9namespace Bitrix\Rest\UserField;
10
11
12use Bitrix\Main\Text\HtmlFilter;
13use Bitrix\Main\UserField\TypeBase;
14use Bitrix\Rest\Api\UserFieldType;
15use Bitrix\Rest\PlacementTable;
16
17class Type extends TypeBase
18{
19 const USER_TYPE_ID = 'rest';
20
21 public static function getDBColumnType()
22 {
24 $helper = $connection->getSqlHelper();
25 return $helper->getColumnTypeByField(new \Bitrix\Main\ORM\Fields\TextField('x'));
26 }
27
28 public static function getPublicView($arUserField, $arAdditionalParameters = array())
29 {
30 $value = static::getFieldValue($arUserField, $arAdditionalParameters);
31
32 $arUserField['VALUE'] = $value;
33
34 return static::getApplication($arUserField, array(), 'view');
35 }
36
37 public static function getPublicEdit($arUserField, $arAdditionalParameters = array())
38 {
39 $fieldName = static::getFieldName($arUserField, $arAdditionalParameters);
40 $value = static::getFieldValue($arUserField, $arAdditionalParameters);
41
42 $arUserField['VALUE'] = $value;
43
44 return static::getApplication($arUserField, array(
45 'NAME' => $fieldName
46 ), 'edit');
47 }
48
49 function getEditFormHTML($arUserField, $arHtmlControl)
50 {
51 return static::getApplication($arUserField, $arHtmlControl, 'edit');
52 }
53
54 function getEditFormHTMLMulty($arUserField, $arHtmlControl)
55 {
56 return static::getApplication($arUserField, $arHtmlControl, 'edit');
57 }
58
59 protected static function getApplication($arUserField, $arHtmlControl, $mode = 'edit')
60 {
61 global $APPLICATION;
62
63 $fieldName = $arHtmlControl['NAME'];
64 $value = static::normalizeFieldValue($arUserField['VALUE']);
65
66 $placementHandlerList = PlacementTable::getHandlersList(UserFieldType::PLACEMENT_UF_TYPE);
67 $currentPlacementHandler = null;
68 foreach($placementHandlerList as $placementInfo)
69 {
70 if($arUserField['USER_TYPE_ID'] === Callback::getUserTypeId($placementInfo))
71 {
72 $currentPlacementHandler = $placementInfo;
73 break;
74 }
75 }
76
77 $placementOptions = [
78 'MODE' => $mode,
79 'ENTITY_ID' => $arUserField['ENTITY_ID'],
80 'FIELD_NAME' => $arUserField['FIELD_NAME'],
81 'ENTITY_VALUE_ID' => $arUserField['ENTITY_VALUE_ID'],
82 'VALUE' => $arUserField['MULTIPLE'] === 'N' ? $value[0] : $value,
83 'MULTIPLE' => $arUserField['MULTIPLE'],
84 'MANDATORY' => $arUserField['MANDATORY'],
85 'XML_ID' => $arUserField['XML_ID'],
86 ];
87
88 $event = new \Bitrix\Main\Event('rest', 'OnUserFieldPlacementPrepareParams', [
89 $arUserField,
90 &$placementOptions,
91 ]);
92 $event->send();
93
94 $html = '';
95 if($currentPlacementHandler !== null)
96 {
97 ob_start();
98
99 if($mode === 'edit'):
100?>
101<div style="display: none;" id="uf_rest_value_<?=$arUserField['FIELD_NAME']?>">
102<?
103 foreach($value as $res):
104?>
105 <input type="hidden" name="<?=$fieldName?>" value="<?=HtmlFilter::encode($res)?>" />
106<?
108 endif;
109?>
110</div>
111<?
112 $placementSid = $APPLICATION->includeComponent(
113 'bitrix:app.layout',
114 '',
115 array(
116 'ID' => $currentPlacementHandler['APP_ID'],
117 'PLACEMENT_ID' => $currentPlacementHandler['ID'],
118 'PLACEMENT' => UserFieldType::PLACEMENT_UF_TYPE,
119 'SHOW_LOADER' => 'N',
120 'SET_TITLE' => 'N',
121 'PLACEMENT_OPTIONS' => $placementOptions,
122 'PARAM' => array(
123 'FRAME_HEIGHT' => '200px',
124 )
125 ),
126 null,
127 array('HIDE_ICONS' => 'Y')
128 );
129?>
130<script>
131 (function(){
132 'use strict';
133
134 new BX.rest.UserField('<?=$placementSid?>', {
135 value: <?=\CUtil::phpToJsObject($arUserField['VALUE'])?>,
136 callback: function(value)
137 {
138<?
139 if($mode === 'edit'):
140?>
141 if(!BX.type.isArray(value))
142 {
143 value = [value];
144 }
145
146 var html = '';
147 for(var i = 0; i < value.length; i++)
148 {
149 html += '<input type="hidden" name="<?=$fieldName?>" value="'+BX.util.htmlspecialchars(value[i])+'" />';
150 }
151
152 BX('uf_rest_value_<?=$arUserField['FIELD_NAME']?>').innerHTML = html;
153
154 var input = BX('uf_rest_value_<?=$arUserField['FIELD_NAME']?>').firstChild;
155 if(input)
156 {
157 BX.fireEvent(input, 'change');
158 }
159<?
160 endif;
161?>
162 }
163 });
164
165 })();
166</script>
167
168<?
169 $html = ob_get_clean();
170 }
171
172 \CJSCore::init(array('rest_userfield'));
173
174 return static::getHelper()->wrapDisplayResult($html);
175
176 }
177
178 function prepareSettings($arUserField){}
179 function getSettingsHTML($arUserField, $arHtmlControl, $bVarsFromForm){}
180 function getFilterHTML($arUserField, $arHtmlControl){}
181 function getFilterData($arUserField, $arHtmlControl){}
182 function getAdminListViewHTML($arUserField, $arHtmlControl){}
183 function getAdminListViewHTMLMulty($arUserField, $arHtmlControl){}
184 function getAdminListEditHTML($arUserField, $arHtmlControl){}
185 function getAdminListEditHTMLMulty($arUserField, $arHtmlControl){}
186}
$connection
Определения actionsdefinitions.php:38
global $APPLICATION
Определения include.php:80
static getConnection($name="")
Определения application.php:638
static $helper
Определения typebase.php:13
static getHandlersList($placement, $skipInstallCheck=false, int $userId=null)
Определения placement.php:266
static getUserTypeId($userTypeInfo)
Определения callback.php:88
getFilterHTML($arUserField, $arHtmlControl)
Определения type.php:180
prepareSettings($arUserField)
Определения type.php:178
static getPublicView($arUserField, $arAdditionalParameters=array())
Определения type.php:28
getFilterData($arUserField, $arHtmlControl)
Определения type.php:181
getSettingsHTML($arUserField, $arHtmlControl, $bVarsFromForm)
Определения type.php:179
getAdminListViewHTMLMulty($arUserField, $arHtmlControl)
Определения type.php:183
getEditFormHTMLMulty($arUserField, $arHtmlControl)
Определения type.php:54
static getApplication($arUserField, $arHtmlControl, $mode='edit')
Определения type.php:59
const USER_TYPE_ID
Определения type.php:19
getAdminListViewHTML($arUserField, $arHtmlControl)
Определения type.php:182
getEditFormHTML($arUserField, $arHtmlControl)
Определения type.php:49
static getPublicEdit($arUserField, $arAdditionalParameters=array())
Определения type.php:37
getAdminListEditHTMLMulty($arUserField, $arHtmlControl)
Определения type.php:185
getAdminListEditHTML($arUserField, $arHtmlControl)
Определения type.php:184
static getDBColumnType()
Определения type.php:21
$bVarsFromForm
Определения file_edit.php:44
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
endif
Определения csv_new_setup.php:990
$event
Определения prolog_after.php:141
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
Определения prolog_main_admin.php:255
font style
Определения invoice.php:442
case callback
Определения wrapper_popup.php:31