diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2015-11-25 23:12:20 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2015-11-25 23:12:20 +0300 |
commit | 2ebe6246746356bebf75b801b6765e22b4c07919 (patch) | |
tree | d3254a60d63dea3043cedb68c4faa8874dd9001a /plugins/Overlay | |
parent | 926af9c74c67afc924e60fd6619ca499d1baab58 (diff) |
make transtion and overlay row actions extendable by other plugins
Diffstat (limited to 'plugins/Overlay')
-rw-r--r-- | plugins/Overlay/javascripts/rowaction.js | 66 |
1 files changed, 40 insertions, 26 deletions
diff --git a/plugins/Overlay/javascripts/rowaction.js b/plugins/Overlay/javascripts/rowaction.js index 8f11c736d0..de063b990e 100644 --- a/plugins/Overlay/javascripts/rowaction.js +++ b/plugins/Overlay/javascripts/rowaction.js @@ -15,39 +15,47 @@ function DataTable_RowActions_Overlay(dataTable) { DataTable_RowActions_Overlay.prototype = new DataTable_RowAction; +DataTable_RowActions_Overlay.registeredReports = []; +DataTable_RowActions_Overlay.registerReport = function (handler) { + DataTable_RowActions_Overlay.registeredReports.push(handler); +} + + DataTable_RowActions_Overlay.prototype.onClick = function (actionA, tr, e) { if (!actionA.data('overlay-manipulated')) { actionA.data('overlay-manipulated', 1); var segment, link; - if (DataTable_RowActions_Transitions.isActionCustomDimensionReport(this.dataTable.param)) { - - link = this.getLabelFromTr(tr); - if (link && link.substr(0, 1) === '@') { - link = link.substr(1); + var i = 0; + for (i; i < DataTable_RowActions_Overlay.registeredReports.length; i++) { + var report = DataTable_RowActions_Overlay.registeredReports[i]; + if (report + && report.onClick + && report.isAvailableOnReport + && report.isAvailableOnReport(this.dataTable.param)) { + var result = report.onClick.apply(this, arguments); + + if (!result || !result.link) { + return; + } + + link = result.link; + if (result.segment) { + segment = result.segment; + } + break; } - - link = 'http://' + unescape(link); - - var subtable = tr.closest('table'); - if (subtable.is('.subDataTable')) { - var prev = subtable.closest('tr').prev(); - segment = prev.attr('data-segment-filter'); - } - } else { - - link = tr.find('> td:first > a').attr('href'); - link = $('<textarea>').html(link).val(); // remove html entities } + if (link) { + var href = Overlay_Helper.getOverlayLink(this.dataTable.param.idSite, 'month', 'today', segment, link); - var href = Overlay_Helper.getOverlayLink(this.dataTable.param.idSite, 'month', 'today', segment, link); - - actionA.attr({ - target: '_blank', - href: href - }); + actionA.attr({ + target: '_blank', + href: href + }); + } } return true; @@ -77,11 +85,17 @@ DataTable_RowActions_Registry.register({ return false; } - if (DataTable_RowActions_Transitions.isActionCustomDimensionReport(dataTableParams)) { - return true; + var i = 0; + for (i; i < DataTable_RowActions_Overlay.registeredReports.length; i++) { + var report = DataTable_RowActions_Overlay.registeredReports[i]; + if (report + && report.isAvailableOnReport + && report.isAvailableOnReport(dataTableParams)) { + return true; + } } - return DataTable_RowActions_Transitions.isPageUrlReport(dataTableParams.module, dataTableParams.action); + return false; }, isAvailableOnRow: function (dataTableParams, tr) { |