marc-leopold/server/plugins/rainlab/builder/behaviors/IndexModelOperations.php

69 lines
1.9 KiB
PHP

<?php namespace RainLab\Builder\Behaviors;
use RainLab\Builder\Classes\IndexOperationsBehaviorBase;
use RainLab\Builder\Classes\ModelModel;
use Backend\Behaviors\FormController;
use ApplicationException;
use Exception;
use Request;
use Input;
/**
* Model management functionality for the Builder index controller
*
* @package rainlab\builder
* @author Alexey Bobkov, Samuel Georges
*/
class IndexModelOperations extends IndexOperationsBehaviorBase
{
protected $baseFormConfigFile = '~/plugins/rainlab/builder/classes/modelmodel/fields.yaml';
public function onModelLoadPopup()
{
$pluginCodeObj = $this->getPluginCode();
try {
$widget = $this->makeBaseFormWidget(null);
$this->vars['form'] = $widget;
$widget->model->setPluginCodeObj($pluginCodeObj);
$this->vars['pluginCode'] = $pluginCodeObj->toCode();
}
catch (ApplicationException $ex) {
$this->vars['errorMessage'] = $ex->getMessage();
}
return $this->makePartial('model-popup-form');
}
public function onModelSave()
{
$pluginCode = Request::input('plugin_code');
$model = $this->loadOrCreateBaseModel(null);
$model->setPluginCode($pluginCode);
$model->fill($_POST);
$model->save();
$result = $this->controller->widget->modelList->updateList();
$builderResponseData = [
'registryData' => [
'models' => ModelModel::getPluginRegistryData($pluginCode, null),
'pluginCode' => $pluginCode
]
];
$result['builderResponseData'] = $builderResponseData;
return $result;
}
protected function loadOrCreateBaseModel($className, $options = [])
{
// Editing model is not supported, always return
// a new object.
return new ModelModel();
}
}