[TASK] Simplify missing link browser JS implementation detection 46/44646/3
authorMarkus Klein <markus.klein@typo3.org>
Mon, 9 Nov 2015 18:10:44 +0000 (19:10 +0100)
committerBenni Mack <benni@typo3.org>
Tue, 10 Nov 2015 06:26:42 +0000 (07:26 +0100)
Instead of letting each handler check if the finalize function of the
LinkBrowser is implemented, assign a default function, which will throw
the exception.

Resolves: #71447
Releases: master
Change-Id: Id794ccf49d98a6dfdeba7c248aa8edcb8925e7fc
Reviewed-on: https://review.typo3.org/44646
Reviewed-by: Stephan GroƟberndt <stephan@grossberndt.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/recordlist/Resources/Public/JavaScript/FileLinkHandler.js
typo3/sysext/recordlist/Resources/Public/JavaScript/LinkBrowser.js
typo3/sysext/recordlist/Resources/Public/JavaScript/MailLinkHandler.js
typo3/sysext/recordlist/Resources/Public/JavaScript/PageLinkHandler.js
typo3/sysext/recordlist/Resources/Public/JavaScript/UrlLinkHandler.js

index 1436c25..0575dc9 100644 (file)
@@ -34,9 +34,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser', 'TYPO3/CMS/Backend/LegacyT
        FileLinkHandler.linkFile = function(event) {
                event.preventDefault();
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction($(this).data('file'));
        };
 
@@ -47,9 +44,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser', 'TYPO3/CMS/Backend/LegacyT
        FileLinkHandler.linkCurrent = function(event) {
                event.preventDefault();
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction(FileLinkHandler.currentLink);
        };
 
index 6bc93b2..0e2c47c 100644 (file)
@@ -30,7 +30,7 @@ define(['jquery'], function($) {
                addOnParams: '',
                linkAttributeFields: [],
                additionalLinkAttributes: {},
-               finalizeFunction: null // receives the value of the selected element as parameter (e.g. "page:<pageUid>" or "file:<uid>", etc
+               finalizeFunction: null
        };
 
        /**
@@ -83,10 +83,29 @@ define(['jquery'], function($) {
                return '&' + str.join("&");
        };
 
+       /**
+        * Set an additional attribute for the link
+        *
+        * @param {String} name
+        * @param value
+        */
        LinkBrowser.setAdditionalLinkAttribute = function(name, value) {
                LinkBrowser.additionalLinkAttributes[name] = value;
        };
 
+       /**
+        * Stores the final link
+        *
+        * This method MUST be overridden in the actual implementation of the link browser.
+        * The function is responsible for encoding the link (and possible link attributes) and
+        * returning it to the caller (e.g. FormEngine, RTE, etc)
+        *
+        * @param {String} link The select element or anything else which identifies the link (e.g. "page:<pageUid>" or "file:<uid>")
+        */
+       LinkBrowser.finalizeFunction = function(link) {
+               throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
+       };
+
        $(function() {
                var data = $('body').data();
 
index 97b349f..f4d733d 100644 (file)
@@ -38,9 +38,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser)
                                value = value.substr(7);
                        }
 
-                       if (!LinkBrowser.finalizeFunction) {
-                               throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-                       }
                        LinkBrowser.finalizeFunction('mailto:' + value);
                });
        });
index 0d69a8a..572a56a 100644 (file)
@@ -37,9 +37,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser)
                var id = $(this).data('id');
                var anchor = $(this).data('anchor');
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction('page:' + id + (anchor ? anchor : ''));
        };
 
@@ -55,9 +52,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser)
                        return;
                }
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction('page:' + value);
        };
 
@@ -68,9 +62,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser)
        PageLinkHandler.linkCurrent = function(event) {
                event.preventDefault();
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction('page:' + PageLinkHandler.currentLink);
        };
 
index 2fe35de..d18dbfa 100644 (file)
@@ -39,9 +39,6 @@ define(['jquery', 'TYPO3/CMS/Recordlist/LinkBrowser'], function($, LinkBrowser)
 
                LinkBrowser.setAdditionalLinkAttribute('data-htmlarea-external', '1');
 
-               if (!LinkBrowser.finalizeFunction) {
-                       throw 'The link browser requires the finalizeFunction to be set. Seems like you discovered a major bug.';
-               }
                LinkBrowser.finalizeFunction(value);
        };