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é }; 20eeae6715SSchplurtz le Déboulonné var response=async function(event) { 21eeae6715SSchplurtz le Déboulonné try { 22eeae6715SSchplurtz le Déboulonné let text='' 23eeae6715SSchplurtz le Déboulonné let lis=event.target.parentElement.getElementsByTagName('li'); 24eeae6715SSchplurtz le Déboulonné if( lis.length ) { 25eeae6715SSchplurtz le Déboulonné for( let li of lis ) { 26eeae6715SSchplurtz le Déboulonné text += li.textContent + '\n'; 27eeae6715SSchplurtz le Déboulonné } 28eeae6715SSchplurtz le Déboulonné } 29eeae6715SSchplurtz le Déboulonné else { 30eeae6715SSchplurtz le Déboulonné text = event.target.parentElement.textContent; 31eeae6715SSchplurtz le Déboulonné } 32eeae6715SSchplurtz le Déboulonné // Why replace ??? geshi adds an NBSP on each empty line. This is an issue 33eeae6715SSchplurtz le Déboulonné // with python, perl... when you want to run copied code, you get a 34eeae6715SSchplurtz le Déboulonné // syntax error "unexpected \xC2 character" or similar... So remove this 35eeae6715SSchplurtz le Déboulonné // crap. And yes it could remove a legitimate NBSP ; chances are low though. 36eeae6715SSchplurtz le Déboulonné text = text.replace(/^\u00A0$/gm, ""); 37eeae6715SSchplurtz le Déboulonné await navigator.clipboard.writeText(text); 38*f20dc62bSSchplurtz le Déboulonné // console.log( "copié >>>" + text + "<<<" ); 39eeae6715SSchplurtz le Déboulonné messageBox('cp2clipok', LANG.plugins.copy2clipboard.copied); 40eeae6715SSchplurtz le Déboulonné } catch (err) { 41*f20dc62bSSchplurtz le Déboulonné // console.error('Failed to copy!', err); 42eeae6715SSchplurtz le Déboulonné messageBox('cp2clipnok', LANG.plugins.copy2clipboard.error); 43eeae6715SSchplurtz le Déboulonné } 44eeae6715SSchplurtz le Déboulonné }; 45eeae6715SSchplurtz le Déboulonné 464a476730SSchplurtz le Déboulonné document.querySelectorAll('pre.code,pre.file').forEach(function(elem) { 474a476730SSchplurtz le Déboulonné elem.classList.add('cp2clip'); 484a476730SSchplurtz le Déboulonné let cp = document.createElement('button'); 494a476730SSchplurtz le Déboulonné cp.setAttribute( 'title', LANG.plugins.copy2clipboard.title); 504a476730SSchplurtz le Déboulonné //cp.appendChild(document.createTextNode('Copy to clipboard')) ; 514a476730SSchplurtz le Déboulonné cp.classList.add('cp2clip'); 524a476730SSchplurtz le Déboulonné elem.appendChild(cp); // pre.appendChild 53eeae6715SSchplurtz le Déboulonné cp.addEventListener('click', response) 544a476730SSchplurtz le Déboulonné }) 5595208031SSchplurtz le Déboulonné}); 564a476730SSchplurtz le Déboulonné 57