/*! * Piwik - free/libre analytics platform * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ /** * Usage: *
*/ (function () { angular.module('piwikApp').directive('piwikWidgetPreview', piwikWidgetPreview); piwikWidgetPreview.$inject = ['piwik', '$window']; function piwikWidgetPreview(piwik, $window){ function getEmbedUrl(parameters, exportFormat) { var copyParameters = {}; for (var variableName in parameters) { copyParameters[variableName] = parameters[variableName]; } copyParameters['moduleToWidgetize'] = parameters['module']; copyParameters['actionToWidgetize'] = parameters['action']; delete copyParameters['action']; delete copyParameters['module']; var sourceUrl; sourceUrl = $window.location.protocol + '//' + $window.location.hostname + ($window.location.port == '' ? '' : (':' + $window.location.port)) + $window.location.pathname + '?'; sourceUrl += "module=Widgetize" + "&action=" + exportFormat + "&" + piwik.helper.getQueryStringFromParameters(copyParameters) + "&idSite=" + piwik.idSite + "&period=" + piwik.period + "&date=" + piwik.broadcast.getValueFromUrl('date') + "&disableLink=1&widget=1"; return sourceUrl; } return { restrict: 'A', controller: function () { var self = this; this.getInputFormWithHtml = function (inputId, htmlEmbed) { return '
' + this.htmlentities(htmlEmbed) + '
'; }; this.htmlentities = function (s) { return piwik.helper.escape(piwik.helper.htmlEntities(s)); }; this.callbackAddExportButtonsUnderWidget = function (widgetUniqueId, loadedWidgetElement) { widgetsHelper.getWidgetObjectFromUniqueId(widgetUniqueId, function(widget) { var widgetParameters = widget['parameters']; var exportButtonsElement = $(''); var urlIframe = getEmbedUrl(widgetParameters, "iframe"); // We first build the HTML code that will load the widget in an IFRAME var widgetIframeHtml = '
' + '' + '
'; // Add the input field containing the widget in an Iframe $(exportButtonsElement).append( '
' + '' + '
' + self.getInputFormWithHtml('iframeEmbed', widgetIframeHtml) + '
' + '
' + '
' + '' + '
' ); // Finally we append the content to the parent widget DIV $(loadedWidgetElement) .parent() .append(exportButtonsElement); piwik.helper.compileAngularComponents(exportButtonsElement); }); } }, compile: function (element, attrs) { return function (scope, element, attrs, controller) { element.widgetPreview({ onPreviewLoaded: controller.callbackAddExportButtonsUnderWidget }); }; } }; } })();