formula ui 1

This commit is contained in:
yuri
2016-12-23 12:52:00 +02:00
parent 52afd6f11c
commit a11c6a23c4
8 changed files with 215 additions and 3 deletions

View File

@@ -292,5 +292,23 @@ class EntityManager extends \Espo\Core\Controllers\Base
return true;
}
public function postActionFormula($params, $data, $request)
{
if (empty($data['scope'])) {
throw new BadRequest();
}
if (!array_key_exists('data', $data)) {
throw new BadRequest();
}
$formulaData = get_object_vars($data['data']);
$this->getContainer()->get('entityManagerUtil')->setFormulaData($data['scope'], $formulaData);
$this->getContainer()->get('dataManager')->clearCache();
return true;
}
}

View File

@@ -25,15 +25,26 @@
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
************************************************************************/
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Forbidden;
class Metadata extends \Espo\Core\Controllers\Base
{
public function actionRead($params, $data)
{
return $this->getMetadata()->getAll(true);
}
public function getActionGet($params, $data, $request)
{
if (!$this->getUser()->isAdmin()) {
throw new \Forbidden();
}
$key = $request->get('key');
return $this->getMetadata()->get($key, false);
}
}

View File

@@ -730,6 +730,12 @@ class EntityManager
return true;
}
public function setFormulaData($scope, $data)
{
$this->getMetadata()->set('formula', $scope, $data);
$this->getMetadata()->save();
}
protected function processHook($methodName, $type, $name, &$params = null)
{
$hook = $this->getHook($type);

View File

@@ -27,7 +27,8 @@
"textFilterFields": "Text Filter Fields",
"audited": "Audited",
"auditedForeign": "Foreign Audited",
"statusField": "Status Field"
"statusField": "Status Field",
"beforeSaveCustomScript": "Before Save Custom Script"
},
"options": {
"type": {

View File

@@ -0,0 +1,10 @@
<div class="row">
<div data-name="beforeSaveCustomScript" class="cell col-sm-12">
<label class="control-label" data-name="beforeSaveCustomScript">
{{translate 'beforeSaveCustomScript' category='fields' scope='EntityManager'}}
</label>
<div class="field" data-name="beforeSaveCustomScript">
{{{beforeSaveCustomScript}}}
</div>
</div>
</div>

View File

@@ -48,6 +48,10 @@ Espo.define('views/admin/entity-manager/index', 'view', function (Dep) {
var scope = $(e.currentTarget).data('scope');
this.editEntity(scope);
},
'click [data-action="editFormula"]': function (e) {
var scope = $(e.currentTarget).data('scope');
this.editFormula(scope);
},
'click button[data-action="createEntity"]': function (e) {
this.createEntity();
},
@@ -157,6 +161,22 @@ Espo.define('views/admin/entity-manager/index', 'view', function (Dep) {
}.bind(this));
},
editFormula: function (scope) {
this.createView('edit', 'views/admin/entity-manager/modals/edit-formula', {
scope: scope
}, function (view) {
view.render();
this.listenTo(view, 'after:save', function () {
this.clearView('edit');
}, this);
this.listenTo(view, 'close', function () {
this.clearView('edit');
}, this);
}, this);
},
updatePageTitle: function () {
this.setPageTitle(this.getLanguage().translate('Entity Manager', 'labels', 'Admin'));
},

View File

@@ -0,0 +1,102 @@
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
Espo.define('views/admin/entity-manager/modals/edit-formula', ['views/modal', 'model'], function (Dep, Model) {
return Dep.extend({
_template: '<div class="record">{{{record}}}</div>',
data: function () {
return {
};
},
setup: function () {
this.buttonList = [
{
name: 'save',
label: 'Save',
style: 'danger'
},
{
name: 'cancel',
label: 'Cancel'
}
];
var scope = this.scope = this.options.scope || false;
this.header = this.translate('Formula', 'labels', 'EntityManager') + ': ' + this.translate(scope, 'scopeName');
var model = this.model = new Model();
model.name = 'EntityManager';
this.wait(true);
this.ajaxGetRequest('Metadata/action/get', {
key: 'formula.' + scope
}).then(function (formulaData) {
formulaData = formulaData || {};
model.set('beforeSaveCustomScript', formulaData.beforeSaveCustomScript || null);
this.createView('record', 'views/admin/entity-manager/record/edit-formula', {
el: this.getSelector() + ' .record',
model: model
});
this.wait(false);
}.bind(this));
},
actionSave: function () {
this.disableButton('save');
var data = this.getView('record').fetch();
this.model.set(data);
if (this.getView('record').validate()) return;
if (data.beforeSaveCustomScript === '') {
data.beforeSaveCustomScript = null;
}
Espo.Ui.notify(this.translate('pleaseWait', 'messages'));
this.ajaxPostRequest('EntityManager/action/formula', {
data: data,
scope: this.scope
}).then(function () {
Espo.Ui.success(this.translate('Saved'));
this.trigger('after:save');
}.bind(this)).fail(function () {
this.enableButton('save');
}.bind(this));
}
});
});

View File

@@ -0,0 +1,44 @@
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
Espo.define('views/admin/entity-manager/record/edit-formula', 'views/record/base', function (Dep) {
return Dep.extend({
template: 'admin/entity-manager/record/edit-formula',
setup: function () {
Dep.prototype.setup.call(this);
this.createField('beforeSaveCustomScript', 'views/fields/text', {
rows: 12
}, 'edit');
}
});
});