1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
widgetform.php
См. документацию.
1<?php
2namespace Bitrix\Report\VisualConstructor;
3use Bitrix\Main\Loader;
4use Bitrix\Main\Localization\Loc;
5use Bitrix\Report\VisualConstructor\Entity\Widget;
6use Bitrix\UI\Buttons\Button;
7use Bitrix\UI\Buttons\Color;
8use Bitrix\UI\Buttons\Size;
9
14class WidgetForm extends Form
15{
16 private $view;
17 private $widget;
18 private $reportsInWidgetCount;
19 private $boarId;
20
26 public function __construct(View $view, Widget $widget)
27 {
28 $this->setView($view);
29 $this->setWidget($widget);
30 }
31
35 public function render()
36 {
37 $view = $this->getView();
38 $view->prepareWidgetFormBeforeRender($this);
39 parent::render();
40 }
41
50 public static function build(View $view, Widget $widget, $params)
51 {
52 $boardId = $params['boardId'];
53 $action = $params['action'];
54 $saveButtonTitle = $params['saveButtonTitle'];
55
56 $form = new static($view, $widget);
57 $form->setId('report_widget_configuration_form_' . $widget->getGId());
58 $form->setAction($action);
59 $form->setBoarId($boardId);
60 $form->addDataAttribute('widget-id', $widget->getGId());
61 $form->addWidgetConfigurationFormFullContent();
62
63
64 $footerContainer = new Fields\Div();
65 $footerContainer->setKey('footer_container');
66 $footerContainer->addClass('report-widget-configuration-form-footer-container');
67 $footerContainer->addDataAttribute('role', 'footer-container');
68
69
70 $buttonsContainer = new Fields\Div();
71 $buttonsContainer->addClass('report-widget-configuration-form-action-buttons-container');
72
73 $saveButton = null;
74 $cancelButton = null;
75 if (Loader::includeModule('ui'))
76 {
77 $saveButton = Button::create([
78 'size' => Size::MEDIUM,
79 'color' => Color::SUCCESS,
80 'text' => $saveButtonTitle,
81 'dataset' => [
82 'type' => 'save-button',
83 ],
84 'air' => true,
85 ]);
86 $saveButton->addAttribute('id', 'widgetSaveConfigurations_' . $widget->getGId());
87
88 $cancelButton = Button::create([
89 'size' => Size::MEDIUM,
90 'color' => Color::LINK,
91 'text' => Loc::getMessage('SAVE_WIDGET_CONFIG_CANCEL_BUTTON'),
92 'dataset' => [
93 'type' => 'cancel-button',
94 ],
95 'air' => true,
96 ]);
97 $cancelButton->addAttribute('id', 'widgetCancelConfigurations_' . $widget->getGId());
98 }
99
100 $checkBoxContainer = new Fields\Div();
101 $checkBoxContainer->addClass('report-configuration-footer-right-container');
102
103 $isPatternCheckBox = new Fields\Valuable\CheckBox('isPattern');
104 $isPatternCheckBox->setLabel(Loc::getMessage('SAVE_WIDGET_AS_PATTERN'));
105
106 $form->add($footerContainer->start());
107 $form->add($buttonsContainer->start());
108 if ($saveButton)
109 {
110 $form->add(new Fields\Html($saveButton->render(false)));
111 }
112 if ($cancelButton)
113 {
114 $form->add(new Fields\Html($cancelButton->render(false)));
115 }
116 $form->add($buttonsContainer->end());
117 $form->add($checkBoxContainer->start());
118 $form->add($isPatternCheckBox);
119 $form->add($checkBoxContainer->end());
120 $form->add($footerContainer->end());
121
122
123
124 return $form;
125 }
126
127
128 private function addWidgetConfigurationFormFullContent()
129 {
130 $view = $this->getView();
131 $formContentContainer = new Fields\Div();
132 $formContentContainer->addClass('report-widget-configuration-form-content');
133 $formContentContainer->setKey('form_content_container');
134 $this->add($formContentContainer->start());
135 $this->addWidgetConfigurationsBlock();
136
137 $reportsConfigurationsContainerWrapper = new Fields\Div();
138 $reportsConfigurationsContainerWrapper->addClass('reports-configurations-container-wrapper');
139 $this->add($reportsConfigurationsContainerWrapper->start());
140 $this->addReportsConfigurationsBlock();
141 $this->addReportAddButtonBlock();
142 $this->add($reportsConfigurationsContainerWrapper->end());
143
144 $maxReportCountField = new Fields\Valuable\Hidden('maxReportCount');
145 $maxReportCountField->addDataAttribute('hidden-field', 'maxRenderReportCount');
146 $maxReportCountField->setValue($view::MAX_RENDER_REPORT_COUNT);
147 $this->add($maxReportCountField);
148
149 $boardIdField = new Fields\Valuable\Hidden('boardId');
150 $boardIdField->setValue($this->getBoarId());
151 $this->add($boardIdField);
152
153 $widgetIdField = new Fields\Valuable\Hidden('widgetId');
154 $widgetIdField->setValue($this->getWidget()->getGId());
155 $this->add($widgetIdField);
156
157 $categoryKeyField = new Fields\Valuable\Hidden('categoryKey');
158 $categoryKeyField->setValue($this->getWidget()->getCategoryKey());
159 $this->add($categoryKeyField);
160
161 $this->add($formContentContainer->end());
162 }
163
164 private function addWidgetConfigurationsBlock()
165 {
166 $widgetConfigurationFields = $this->getWidgetConfigurationFields();
167 $widgetConfigurationsContainer = new Fields\Div();
168 $widgetConfigurationsContainer->addClass('widgets-configurations-container');
169
170 $this->add($widgetConfigurationsContainer->start());
171 foreach ($widgetConfigurationFields as $configurationField)
172 {
173 $this->add($configurationField);
174 }
175 $this->add($widgetConfigurationsContainer->end());
176 }
177
178 private function addReportsConfigurationsBlock()
179 {
180 $reportsConfigurationFields = $this->getReportConfigurationFields();
181 $reportsConfigurationsContainer = new Fields\Div();
182 $reportsConfigurationsContainer->addClass('reports-configurations-container');
183 $reportsConfigurationsContainer->addDataAttribute('role', 'reports-configurations-container');
184 $reportsConfigurationsContainer->addDataAttribute('widget-id', $this->getWidget()->getGId());
185 $this->add($reportsConfigurationsContainer->start());
186 $this->reportsInWidgetCount = count($reportsConfigurationFields);
187 if($reportsConfigurationFields)
188 {
189 $reportConfigurationsContainer = new Fields\Div();
190 $reportConfigurationsContainer->addClass('report-configuration-container');
191 $reportConfigurationsContainer->addDataAttribute('role', 'report-configuration-container');
192 $reportConfigurationsContainer->addDataAttribute('is-pseudo', '0');
193 $reportConfigurationsContainer->addClass('report-configuration-container-visible');
194
195 $num = 0;
196 foreach ($reportsConfigurationFields as $reportGId => $reportConfiguration)
197 {
198 $num++;
199 $reportConfigurationsContainer->addDataAttribute('report-id', $reportGId);
200 $container = new Fields\Container();
201 $container->setKey('report_configurations_container_' . $num);
202 $container->addDataAttribute('role', 'report-configuration-container');
203
204
205
206 $container->addElement($reportConfigurationsContainer->start());
208 foreach ($reportConfiguration['FIELDS'] as $configurationField)
209 {
210 $container->addElement($configurationField);
211
212 }
213
214 $container->addElement($reportConfigurationsContainer->end());
215 $this->add($container);
216 }
217 }
218
219 $this->add($reportsConfigurationsContainer->end());
220 }
221
222 private function addReportAddButtonBlock()
223 {
224 $addButtonContainer = new Fields\Div();
225 $addButtonContainer->addClass('report-configuration-add-report-button-container');
226 $addButton = new Fields\Button('widgetAddReportButton_' . $this->getWidget()->getGId());
227 $addButton->addClass('add-report-to-widget-button');
228 $view = $this->getView();
229 if ($view::MAX_RENDER_REPORT_COUNT <= $this->reportsInWidgetCount)
230 {
231 $addButtonContainer->addClass('report-configuration-add-report-button-container-invisible');
232 }
233 $addButton->setLabel(Loc::getMessage('ADD_REPORT_BUTTON'));
234 $this->add($addButtonContainer->start());
235 $this->add('&#43;');
236 $this->add($addButton);
237 $this->add($addButtonContainer->end());
238 }
239
243 private function getWidgetConfigurationFields()
244 {
245 return $this->getWidget()->getWidgetHandler()->getFormElements();
246 }
247
251 private function getReportConfigurationFields()
252 {
253 $reports = $this->getWidget()->getReports();
254 $configurations = array();
255 foreach ($reports as $report)
256 {
257 $reportHandler = $report->getReportHandler();
258 $reportHandler->setView($this->view);
259 $configurations[$report->getGId()]['FIELDS'] = $reportHandler->getFormElements();
260 }
261 return $configurations;
262 }
263
267 public function getView()
268 {
269 return $this->view;
270 }
271
276 public function setView(View $view)
277 {
278 $this->view = $view;
279 }
280
284 public function getWidget()
285 {
286 return $this->widget;
287 }
288
293 public function setWidget(Widget $widget)
294 {
295 $this->widget = $widget;
296 }
297
301 public function getBoarId()
302 {
303 return $this->boarId;
304 }
305
310 public function setBoarId($boarId)
311 {
312 $this->boarId = $boarId;
313 }
314}
add($field)
Определения form.php:37
static build(View $view, Widget $widget, $params)
Определения widgetform.php:50
__construct(View $view, Widget $widget)
Определения widgetform.php:26
setWidget(Widget $widget)
Определения widgetform.php:293
static create(array $params=[])
Определения basebutton.php:68
const SUCCESS
Определения color.php:10
const LINK
Определения color.php:15
const MEDIUM
Определения size.php:8
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799