84 lines
3.7 KiB
JavaScript
84 lines
3.7 KiB
JavaScript
/*!
|
|
* Piwik - Web Analytics
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
/**
|
|
* @constructor
|
|
*/
|
|
function widgetize() {
|
|
var self = this;
|
|
|
|
this.getInputFormWithHtml = function (inputId, htmlEmbed) {
|
|
return '<input class="formEmbedCode" id="' + inputId + '" value="' + htmlEmbed.replace(/"/g, '"') + '" onclick="javascript:document.getElementById(\'' + inputId + '\').focus();document.getElementById(\'' + inputId + '\').select();" readonly="true" type="text" />';
|
|
};
|
|
|
|
this.getEmbedUrl = function (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 = document.location.protocol + '//' + document.location.hostname + (document.location.port == '' ? '' : (':' + document.location.port)) + document.location.pathname + '?';
|
|
sourceUrl += "module=Widgetize" +
|
|
"&action=" + exportFormat +
|
|
"&" + piwikHelper.getQueryStringFromParameters(copyParameters) +
|
|
"&idSite=" + piwik.idSite +
|
|
"&period=" + piwik.period +
|
|
"&date=" + broadcast.getValueFromUrl('date') +
|
|
"&disableLink=1&widget=1";
|
|
return sourceUrl;
|
|
};
|
|
|
|
this.htmlentities = function (s) {
|
|
return s.replace(/[<>&]/g, function (m) { return "&" + m.charCodeAt(0) + ";"; });
|
|
};
|
|
|
|
this.callbackAddExportButtonsUnderWidget = function (widgetUniqueId, loadedWidgetElement) {
|
|
var widget = widgetsHelper.getWidgetObjectFromUniqueId(widgetUniqueId);
|
|
var widgetParameters = widget['parameters'];
|
|
|
|
var exportButtonsElement = $('<span id="exportButtons">');
|
|
|
|
var urlIframe = self.getEmbedUrl(widgetParameters, "iframe");
|
|
// We first build the HTML code that will load the widget in an IFRAME
|
|
var widgetIframeHtml = '<div id="widgetIframe">' +
|
|
'<iframe width="100%" height="350" src="' +
|
|
urlIframe +
|
|
'" scrolling="no" frameborder="0" marginheight="0" marginwidth="0">' +
|
|
'</iframe>' +
|
|
'</div>';
|
|
|
|
// Add the input field containing the widget in an Iframe
|
|
$(exportButtonsElement).append(
|
|
'<div id="embedThisWidgetIframe">' +
|
|
'<label for="embedThisWidgetIframeInput">› Embed Iframe</label>' +
|
|
'<span id="embedThisWidgetIframeInput">' +
|
|
self.getInputFormWithHtml('iframeEmbed', widgetIframeHtml) +
|
|
'</span>' +
|
|
'</div>' +
|
|
'<div> <label for="embedThisWidgetDirectLink">› Direct Link</label>' +
|
|
'<span id="embedThisWidgetDirectLink"> ' + self.getInputFormWithHtml('directLinkEmbed', urlIframe) + ' - <a href="' + urlIframe + '" target="_blank">' + _pk_translate('Widgetize_OpenInNewWindow') + '</a></span>'
|
|
+ '</div>'
|
|
);
|
|
|
|
// We then replace the div iframeDivToExport with the actual Iframe html
|
|
$('#iframeDivToExport')
|
|
.html(widgetIframeHtml);
|
|
|
|
// Finally we append the content to the parent widget DIV
|
|
$(loadedWidgetElement)
|
|
.parent()
|
|
.append(exportButtonsElement);
|
|
|
|
// JS is buggy at least on IE
|
|
//var widgetJS = '<script type="text/javascript" src="'+ getEmbedUrl(pluginId, actionId, "js") +'"></scr'+'ipt>';
|
|
//divEmbedThisWidget.append('<br />Embed JS: '+ getInputFormWithHtml('javascriptEmbed', widgetJS));
|
|
}
|
|
}
|