69 lines
1.9 KiB
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();
|
|
}
|
|
} |