Файл: system/controllers/admin/actions/widgets_update.php
Строк: 53
<?php
class actionAdminWidgetsUpdate extends cmsAction {
public function run() {
if (!$this->request->isAjax()) {
return cmsCore::error404();
}
$template_name = $this->request->get('template', '');
$widget_id = $this->request->get('id', 0);
if (!$template_name || !$widget_id) {
return cmsCore::error404();
}
$tpls = cmsCore::getTemplates();
if (!in_array($template_name, $tpls)) {
$template_name = cmsConfig::get('template');
}
$widgets_model = cmsCore::getModel('widgets');
$widget = $widgets_model->getWidgetBinding($widget_id);
if (!$widget) {
return cmsCore::error404();
}
// Чтобы ланг файлы шаблона подгрузились
$template = new cmsTemplate($template_name);
cmsCore::loadTemplateLanguage($template->getInheritNames());
$widget_object = cmsCore::getWidgetObject($widget);
$form = $this->getWidgetOptionsForm($widget['name'], $widget['controller'], $widget['options'], $template_name, $widget_object->isAllowCacheableOption());
$widget_event_name = 'widget_' . ($widget['controller'] ? $widget['controller'] . '_' : '') . $widget['name'] . '_form';
list($form, $widget, $widget_object, $template_name) = cmsEventsManager::hook(['widget_form', $widget_event_name], [$form, $widget, $widget_object, $template_name], null, $this->request);
$widget = $form->parse($this->request, true);
$errors = $form->validate($this, $widget);
if (!$errors) {
$widgets_model->updateWidgetBinding($widget_id, $widget);
$widget = $widgets_model->getWidgetBinding($widget_id);
if ($widget['device_types'] && $widget['device_types'] !== array(0) && count($widget['device_types']) < 3) {
foreach ($widget['device_types'] as $dt) {
$device_types[] = string_lang('LANG_' . $dt . '_DEVICES');
}
} else {
$device_types = false;
}
$widget['device_type_names'] = $widget['device_types'];
$widget['device_types'] = $device_types;
return $this->cms_template->renderJSON([
'errors' => false,
'callback' => 'widgetUpdated',
'widget' => $widget,
'success_text' => LANG_CP_SAVE_SUCCESS
]);
}
return $this->cms_template->renderJSON([
'errors' => $errors
]);
}
}