/** * Append a toolbar button */ if (window.toolbar !== undefined) { toolbar[toolbar.length] = { "type": "pluginvshare", "title": LANG['plugins']['vshare']['button'], "icon": "../../plugins/vshare/button.png", "key": "" }; } /** * Try to determine the video service, extract the ID and insert * the correct syntax */ function tb_pluginvshare(btn, props, edid) { PluginVShare.edid = edid; PluginVShare.buildSyntax(); } const PluginVShare = { edid: null, /** * Ask for URL, extract data and create syntax */ buildSyntax: function () { const text = prompt(LANG['plugins']['vshare']['prompt']); if (!text) return; for (const [site, rex] of Object.entries(JSINFO.plugins.vshare)) { const RE = new RegExp(rex, 'i'); const match = text.match(RE); if (match) { const urlparam = ''; const videoid = match[1]; PluginVShare.insert(site, videoid, urlparam); return; } } alert(LANG['plugins']['vshare']['notfound']); }, /** * Insert the syntax in the editor * * @param {string} key * @param {string} videoid * @param {string} urlparam */ insert: function (key, videoid, urlparam) { const code = '{{' + key + '>' + videoid + '?' + urlparam + '}}'; insertAtCarret(PluginVShare.edid, code); }, /** * Allow loading videos on click */ attachGDPRHandler: function () { const $videos = jQuery('div.vshare'); // add click handler $videos.on('click', function () { // create an iframe and copy over the attributes const iframe = document.createElement('iframe'); let attr; let attributes = Array.prototype.slice.call(this.attributes); while(attr = attributes.pop()) { iframe.setAttribute(attr.nodeName, attr.nodeValue); } // replace the div with the iframe this.replaceWith(iframe); }); // add info text $videos.each(function (){ const $self = jQuery(this); const info = document.createElement('p'); info.innerText = LANG.plugins.vshare.click.replace('%s', $self.data('domain')); $self.append(info); }); } }; jQuery(function () { PluginVShare.attachGDPRHandler(); });