[TASK] Move IRRE actions to a map and export inline 98/56098/2
authorAndreas Fernandez <a.fernandez@scripting-base.de>
Sun, 11 Mar 2018 17:55:17 +0000 (18:55 +0100)
committerMarkus Klein <markus.klein@typo3.org>
Sun, 11 Mar 2018 18:12:22 +0000 (19:12 +0100)
The possible requests done in jsfunc.inline.js are now stored in a map
that holds the method (e.g. "create") and points to a specific route for
AJAX requests.
Additionally, the inline object is made public for the time being and
explicitly marked as internal.

This allows overriding specific routes, which is required for the
upcoming "Sites" module.

Resolves: #84199
Releases: master
Change-Id: Ief9fc1382e60a6b894e2970f9349f9b03913d021
Reviewed-on: https://review.typo3.org/56098
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js

index 72ec8b4..8500e8a 100644 (file)
@@ -28,7 +28,15 @@ var inline = {
   sourcesLoaded: {},
   data: {},
   isLoading: false,
-
+  methodRequestMap: {
+    'details': 'record_inline_details',
+    'create': 'record_inline_create',
+    'synchronizelocalize': 'record_inline_synchronizelocalize',
+    'expandcollapse': 'record_inline_expandcollapse'
+  },
+  addMethod: function(method, route) {
+    this.methodRequestMap[method] = route;
+  },
   addToDataArray: function(object) {
     $.each(object, function(key, value) {
       if (!inline.data[key]) {
@@ -147,7 +155,7 @@ var inline = {
 
   getRecordDetails: function(objectId) {
     var context = this.getContext(this.parseObjectId('full', objectId, 0, 1));
-    inline.makeAjaxCall('details', [objectId], true, context);
+    inline.makeAjaxCall(this.methodRequestMap.details, [objectId], true, context);
     return false;
   },
 
@@ -157,7 +165,7 @@ var inline = {
       if (recordUid) {
         objectId += this.structureSeparator + recordUid;
       }
-      this.makeAjaxCall('create', [objectId], true, context);
+      this.makeAjaxCall(this.methodRequestMap.create, [objectId], true, context);
     } else {
       var message = TYPO3.lang['FormEngine.maxItemsAllowed'].replace('{0}', this.data.config[objectId].max);
       var matches = objectId.match(/^(data-\d+-.*?-\d+-.*?)-(.*?)$/);
@@ -172,19 +180,19 @@ var inline = {
 
   synchronizeLocalizeRecords: function(objectId, type) {
     var context = this.getContext(objectId);
-    this.makeAjaxCall('synchronizelocalize', [objectId, type], true, context);
+    this.makeAjaxCall(this.methodRequestMap.synchronizelocalize, [objectId, type], true, context);
     return false;
   },
 
   setExpandedCollapsedState: function(objectId, expand, collapse) {
     var context = this.getContext(objectId);
-    this.makeAjaxCall('expandcollapse', [objectId, expand, collapse], false, context);
+    this.makeAjaxCall(this.methodRequestMap.expandcollapse, [objectId, expand, collapse], false, context);
   },
 
   makeAjaxCall: function(method, params, lock, context) {
     var url = '', urlParams = '', options = {};
     if (method && params && params.length && this.lockAjaxMethod(method, lock)) {
-      url = TYPO3.settings.ajaxUrls['record_inline_' + method];
+      url = TYPO3.settings.ajaxUrls[method];
       urlParams = '';
       for (var i = 0; i < params.length; i++) {
         urlParams += '&ajax[' + i + ']=' + encodeURIComponent(params[i]);
@@ -1250,3 +1258,7 @@ $(function() {
     inline.toggleEvent(event);
   });
 });
+
+// Expose to public
+// @internal
+TYPO3.inline = inline;