mirror of
https://github.com/espocrm/espocrm.git
synced 2026-06-28 06:56:05 +00:00
formula ui 1
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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>
|
||||
@@ -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'));
|
||||
},
|
||||
|
||||
102
client/src/views/admin/entity-manager/modals/edit-formula.js
Normal file
102
client/src/views/admin/entity-manager/modals/edit-formula.js
Normal 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));
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
44
client/src/views/admin/entity-manager/record/edit-formula.js
Normal file
44
client/src/views/admin/entity-manager/record/edit-formula.js
Normal 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');
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user