14a476730SSchplurtz le DéboulonnéjQuery(function() { 24a476730SSchplurtz le Déboulonné // Copyright (C) 2020 Schplurtz le Déboulonné. 34a476730SSchplurtz le Déboulonné // Free to use for any purpose except dismantle the sky. 44a476730SSchplurtz le Déboulonné if(!navigator.clipboard) 54a476730SSchplurtz le Déboulonné return; 64a476730SSchplurtz le Déboulonné var messageBox=function( id, txt ) { 74a476730SSchplurtz le Déboulonné const body=document.getElementsByTagName('body')[0]; 84a476730SSchplurtz le Déboulonné const msg=document.createElement('div'); 94a476730SSchplurtz le Déboulonné msg.setAttribute('id', id ); 104a476730SSchplurtz le Déboulonné msg.classList.add('cp2clipmsg'); 114a476730SSchplurtz le Déboulonné const content = document.createTextNode(txt); 124a476730SSchplurtz le Déboulonné msg.appendChild(content); 134a476730SSchplurtz le Déboulonné body.appendChild(msg); 144a476730SSchplurtz le Déboulonné window.setTimeout(function() { 154a476730SSchplurtz le Déboulonné jQuery("#"+id).fadeTo(500, 0).slideUp(500, function(){ 164a476730SSchplurtz le Déboulonné jQuery(this).remove(); 174a476730SSchplurtz le Déboulonné }); 184a476730SSchplurtz le Déboulonné }, 1500); 1995208031SSchplurtz le Déboulonné }; 20*eeae6715SSchplurtz le Déboulonné var response=async function(event) { 21*eeae6715SSchplurtz le Déboulonné try { 22*eeae6715SSchplurtz le Déboulonné let text='' 23*eeae6715SSchplurtz le Déboulonné let lis=event.target.parentElement.getElementsByTagName('li'); 24*eeae6715SSchplurtz le Déboulonné if( lis.length ) { 25*eeae6715SSchplurtz le Déboulonné for( let li of lis ) { 26*eeae6715SSchplurtz le Déboulonné text += li.textContent + '\n'; 27*eeae6715SSchplurtz le Déboulonné } 28*eeae6715SSchplurtz le Déboulonné } 29*eeae6715SSchplurtz le Déboulonné else { 30*eeae6715SSchplurtz le Déboulonné text = event.target.parentElement.textContent; 31*eeae6715SSchplurtz le Déboulonné } 32*eeae6715SSchplurtz le Déboulonné // Why replace ??? geshi adds an NBSP on each empty line. This is an issue 33*eeae6715SSchplurtz le Déboulonné // with python, perl... when you want to run copied code, you get a 34*eeae6715SSchplurtz le Déboulonné // syntax error "unexpected \xC2 character" or similar... So remove this 35*eeae6715SSchplurtz le Déboulonné // crap. And yes it could remove a legitimate NBSP ; chances are low though. 36*eeae6715SSchplurtz le Déboulonné text = text.replace(/^\u00A0$/gm, ""); 37*eeae6715SSchplurtz le Déboulonné await navigator.clipboard.writeText(text); 38*eeae6715SSchplurtz le Déboulonné // event.target.textContent = 'Copied to clipboard' 39*eeae6715SSchplurtz le Déboulonné console.log( "copié >>>" + text + "<<<" ); 40*eeae6715SSchplurtz le Déboulonné messageBox('cp2clipok', LANG.plugins.copy2clipboard.copied); 41*eeae6715SSchplurtz le Déboulonné } catch (err) { 42*eeae6715SSchplurtz le Déboulonné console.error('Failed to copy!', err); 43*eeae6715SSchplurtz le Déboulonné messageBox('cp2clipnok', LANG.plugins.copy2clipboard.error); 44*eeae6715SSchplurtz le Déboulonné } 45*eeae6715SSchplurtz le Déboulonné }; 46*eeae6715SSchplurtz le Déboulonné 474a476730SSchplurtz le Déboulonné document.querySelectorAll('pre.code,pre.file').forEach(function(elem) { 484a476730SSchplurtz le Déboulonné elem.classList.add('cp2clip'); 494a476730SSchplurtz le Déboulonné let cp = document.createElement('button'); 504a476730SSchplurtz le Déboulonné cp.setAttribute( 'title', LANG.plugins.copy2clipboard.title); 514a476730SSchplurtz le Déboulonné //cp.appendChild(document.createTextNode('Copy to clipboard')) ; 524a476730SSchplurtz le Déboulonné cp.classList.add('cp2clip'); 534a476730SSchplurtz le Déboulonné elem.appendChild(cp); // pre.appendChild 54*eeae6715SSchplurtz le Déboulonné cp.addEventListener('click', response) 554a476730SSchplurtz le Déboulonné }) 5695208031SSchplurtz le Déboulonné}); 574a476730SSchplurtz le Déboulonné 58