diff --git a/Gruntfile.js b/Gruntfile.js index f29d4936a2..8c3b0ee594 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -23,6 +23,7 @@ module.exports = function (grunt) { var jsFilesToMinify = [ 'client/lib/jquery-2.1.4.min.js', 'client/lib/underscore-min.js', + 'client/lib/es6-promise.min.js', 'client/lib/backbone-min.js', 'client/lib/handlebars.js', 'client/lib/base64.js', diff --git a/application/Espo/Resources/metadata/clientDefs/Email.json b/application/Espo/Resources/metadata/clientDefs/Email.json index 28448fb8e9..858adcf912 100644 --- a/application/Espo/Resources/metadata/clientDefs/Email.json +++ b/application/Espo/Resources/metadata/clientDefs/Email.json @@ -1,19 +1,20 @@ { "controller": "controllers/record", + "acl": "acl/email", "model": "models/email", - "views":{ - "list":"Email.List", - "detail":"Email.Detail" + "views": { + "list": "views/email/list", + "detail": "views/email/detail" }, "recordViews":{ - "list":"Email.Record.List", - "detail":"Email.Record.Detail", - "edit":"Email.Record.Edit", - "editQuick":"Email.Record.EditQuick", - "detailQuick":"Email.Record.DetailQuick" + "list": "views/email/record/list", + "detail": "views/email/record/detail", + "edit": "views/email/record/edit", + "editQuick":"views/email/record/edit-quick", + "detailQuick":"views/email/record/detail-quick" }, "modalViews": { - "detail": "Email.Modals.Detail" + "detail": "views/email/modals/detail" }, "menu": { "list": { diff --git a/frontend/client/lib/es6-promise.min.js b/frontend/client/lib/es6-promise.min.js new file mode 100644 index 0000000000..2d48351584 --- /dev/null +++ b/frontend/client/lib/es6-promise.min.js @@ -0,0 +1,9 @@ +/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE + * @version 3.0.2 + */ + +(function(){"use strict";function lib$es6$promise$utils$$objectOrFunction(x){return typeof x==="function"||typeof x==="object"&&x!==null}function lib$es6$promise$utils$$isFunction(x){return typeof x==="function"}function lib$es6$promise$utils$$isMaybeThenable(x){return typeof x==="object"&&x!==null}var lib$es6$promise$utils$$_isArray;if(!Array.isArray){lib$es6$promise$utils$$_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}else{lib$es6$promise$utils$$_isArray=Array.isArray}var lib$es6$promise$utils$$isArray=lib$es6$promise$utils$$_isArray;var lib$es6$promise$asap$$len=0;var lib$es6$promise$asap$$toString={}.toString;var lib$es6$promise$asap$$vertxNext;var lib$es6$promise$asap$$customSchedulerFn;var lib$es6$promise$asap$$asap=function asap(callback,arg){lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len]=callback;lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len+1]=arg;lib$es6$promise$asap$$len+=2;if(lib$es6$promise$asap$$len===2){if(lib$es6$promise$asap$$customSchedulerFn){lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush)}else{lib$es6$promise$asap$$scheduleFlush()}}};function lib$es6$promise$asap$$setScheduler(scheduleFn){lib$es6$promise$asap$$customSchedulerFn=scheduleFn}function lib$es6$promise$asap$$setAsap(asapFn){lib$es6$promise$asap$$asap=asapFn}var lib$es6$promise$asap$$browserWindow=typeof window!=="undefined"?window:undefined;var lib$es6$promise$asap$$browserGlobal=lib$es6$promise$asap$$browserWindow||{};var lib$es6$promise$asap$$BrowserMutationObserver=lib$es6$promise$asap$$browserGlobal.MutationObserver||lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;var lib$es6$promise$asap$$isNode=typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var lib$es6$promise$asap$$isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function lib$es6$promise$asap$$useNextTick(){return function(){process.nextTick(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useVertxTimer(){return function(){lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useMutationObserver(){var iterations=0;var observer=new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function lib$es6$promise$asap$$useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=lib$es6$promise$asap$$flush;return function(){channel.port2.postMessage(0)}}function lib$es6$promise$asap$$useSetTimeout(){return function(){setTimeout(lib$es6$promise$asap$$flush,1)}}var lib$es6$promise$asap$$queue=new Array(1e3);function lib$es6$promise$asap$$flush(){for(var i=0;i 1) { @@ -381,10 +405,9 @@ Espo.define( xhr.abort(); }, - _initUserData: function (options, callback) { + initUserData: function (options, callback) { options = options || {}; - var userIsLoaded = false; var langIsLoaded = false; @@ -445,7 +468,7 @@ Espo.define( } }, - _setupAjax: function () { + setupAjax: function () { var self = this; $.ajaxSetup({ beforeSend: function (xhr, options) { @@ -521,7 +544,6 @@ Espo.define( }, Backbone.Events); return App; - }); diff --git a/frontend/client/src/controller.js b/frontend/client/src/controller.js index f5e510742b..160511ea7f 100644 --- a/frontend/client/src/controller.js +++ b/frontend/client/src/controller.js @@ -67,6 +67,10 @@ Espo.define('controller', [], function () { initialize: function () {}, + setRouter: function (router) { + this._router = router; + }, + getConfig: function () { return this._settings; }, diff --git a/frontend/client/src/model-offline.js b/frontend/client/src/model-offline.js index 9afaf0224c..318f02df35 100644 --- a/frontend/client/src/model-offline.js +++ b/frontend/client/src/model-offline.js @@ -27,7 +27,7 @@ ************************************************************************/ -Espo.define('model-offline', 'Model', function (Model) { +Espo.define('model-offline', 'model', function (Model) { var ModelOffline = Model.extend({ diff --git a/frontend/html/main.html b/frontend/html/main.html index 120a774642..ec3d427195 100644 --- a/frontend/html/main.html +++ b/frontend/html/main.html @@ -9,6 +9,7 @@ +