1 function highlightRange(range) { 2 var newNode = document.createElement('mark2'); 3 range.surroundContents(newNode); 4 } 5 // Function to get the Selected Text 6 function getSelectedText() { 7 var selectedText = ''; 8 selectedText = window.getSelection(); 9 console.log(selectedText); 10 // window.getSelection 11 12 if (window.getSelection) { 13 selectedText = window.getSelection(); 14 for(var i = 0; i < selectedText.rangeCount; i++) { 15 highlightRange(selectedText.getRangeAt(i)); 16 } 17 } 18 // document.getSelection 19 else if (document.getSelection) { 20 selectedText = document.getSelection(); 21 } 22 // document.selection 23 else if (document.selection) { 24 selectedText = document.selection.createRange().text; 25 } else return; 26 // To write the selected text into the textarea 27 if (document.getElementsByTagName("title")[1] !=null){ 28 var papertitle = document.getElementsByTagName("title")[1].textContent; 29 }else{ 30 var papertitle = url; 31 } 32 // document.testform.selectedtext.value += selectedText +"\n"; 33 if (document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value == ""){ 34 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "====== "+papertitle+" ====== \r\n [["+url+"|" + papertitle + "]] [[?do=highlight2wiki&ur="+url+"|✍Highlight]]--"+timestamp+"\r\n\n"; 35 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag> }}\r\n\n"; //add tag syntax 36 } 37 38 let selectedTextString = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 39 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += selectedTextString + selectedText + "\n\n"; 40 } 41 42 function markjs(){ 43 let selectedText = window.getSelection(); 44 selectedTextString = selectedText.toString(); 45 var instance = new Mark(document.getElementById("wanttext")); 46 47 var lines = selectedTextString.split('\n'); // lines is an array of strings 48 for (var j = 0; j < lines.length; j++) { 49 instance.mark(lines[j], { 50 "element": "mark2", 51 "acrossElements": true, 52 "separateWordSearch": false, 53 "diacritics": false}); 54 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += lines[j] + "\n\n"; 55 56 } 57 } 58 59function loadmarkjs(){ 60var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 61 62var lines = textArea.split('\n\n'); // lines is an array of strings 63var instance2 = new Mark(document.getElementById("wanttext")); 64// Loop through all lines 65for (var j = 0; j < lines.length; j++) { 66 // highlight(lines[j]); 67 console.log(lines[j]); 68 69 instance2.mark(lines[j], { 70 "element": "mark2", 71 "acrossElements": true, 72 "separateWordSearch": false, 73 "diacritics": false}); 74 75} 76 77} 78 79function loadmarkjsfr(){ 80var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 81 82var lines = textArea.split('\n\n'); // lines is an array of strings 83var instance2 = new Mark(document.getElementById("wanttext")); 84// Loop through all lines 85for (var j = 0; j < lines.length; j++) { 86 // highlight(lines[j]); 87 console.log(lines[j]); 88 89 instance2.mark(lines[j], { 90 "element": "markfr", 91 "acrossElements": true, 92 "separateWordSearch": false, 93 "diacritics": false}); 94 95} 96 97} 98 99 100 101 102 103 function highlight_2(){ 104 let selectedText = window.getSelection(); 105 selectedText = selectedText.toString(); 106 107 console.log(selectedText); 108 highlight(selectedText); 109 110 111 } 112 113 114 115function highlight(text) { 116 117 //document.documentElement.innerHTML = document.documentElement.innerHTML.replace(new RegExp(text + '(?!([^<]+)?<)', 'gi'),'<mark2>$&</mark2>');; 118 var inputText = document.getElementById("wanttext"); 119 var innerHTML = inputText.innerHTML; 120 var index = innerHTML.indexOf(text); 121 console.log(index); 122 if (index >= 0) { 123 innerHTML = innerHTML.substring(0,index) + "<mark2>" + innerHTML.substring(index,index+text.length) + "</mark2>" + innerHTML.substring(index + text.length); 124 inputText.innerHTML = innerHTML; 125 } 126} 127 128 129 130 131 132 133function loadhighlight(){ // load the hightlight text from dokuwiki textarea 134var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 135 136var lines = textArea.split('\n\n'); // lines is an array of strings 137 138// Loop through all lines 139for (var j = 0; j < lines.length; j++) { 140 highlight(lines[j]); 141 console.log(lines[j]); 142 //document.testform.selectedtext.value += lines[j]; 143} 144} 145 146 147function loadhighlightrevision(){ 148var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 149 150var lines = textArea.split('\n\n'); // lines is an array of strings 151 152// Loop through all lines 153for (var j = 0; j < lines.length; j++) { 154 highlight2(lines[j]); 155 console.log(lines[j]); 156 //document.testform.selectedtext.value += lines[j]; 157} 158} 159 160 161function highlight2(text) { 162 // hightlight for revision 163 //document.documentElement.innerHTML = document.documentElement.innerHTML.replace(new RegExp(text + '(?!([^<]+)?<)', 'gi'),'<mark2>$&</mark2>');; 164 var inputText = document.getElementById("wanttext"); 165 var innerHTML = inputText.innerHTML; 166 var index = innerHTML.indexOf(text); 167 console.log(index); 168 if (index >= 0) { 169 innerHTML = innerHTML.substring(0,index) + "<markfr>" + innerHTML.substring(index,index+text.length) + "</markfr>" + innerHTML.substring(index + text.length); 170 inputText.innerHTML = innerHTML; 171 } 172} 173 174 175 176 177function edittag(){ 178 var newtagselection = window.getSelection(); 179 var newtagcomponent = newtagselection.toString(); 180 newtagcomponent =newtagcomponent.trim(); 181 if(newtagcomponent.match(/\s/)){ 182 newtagcomponent = "\""+newtagcomponent+"\""; 183 } 184 console.log(newtagcomponent.toString()); 185 var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value; 186 var newtextArea; 187 if(textArea.match(/\{{tag>(.+?)\}}/i)!=null){ 188 console.log("not null"); 189 var textareamatch = textArea.match(/\{{tag>(.+?)\}}/i); 190 console.log(textareamatch[1]+" "+ newtagcomponent.toString()); 191 newtextArea = textArea.replace(/\{{tag>(.*)\}}/i,"{{tag>"+textareamatch[1]+" "+ newtagcomponent.toString()+"}}"); 192 console.log(newtextArea); 193 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value = newtextArea; 194 195 196 197 198 }else{ 199 console.log("null"); 200 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag>" + newtagcomponent.toString() + "}}\r\n\n"; 201 } 202 } 203 204 205 206 207 208 209function loadH2WFunc(){ 210 jQuery('#wanttext *').removeAttr('height width sizes style alt sizes'); 211 jQuery('#wanttext *').removeClass(); 212 jQuery('#wanttext link').remove(); 213 jQuery('#wanttext textarea').remove(); 214 jQuery('#wanttext input').remove(); 215 jQuery('#wanttext button').remove(); 216 217 //add host root to img src 218 url_hostns =stripTrailingSlash(url_host); 219 jQuery('#wanttext img').each(function(key,value) { 220 if(jQuery(this).attr('src')!=null){ 221 if (jQuery(this).attr('src').includes('http')){ 222 //console.log('completed url:'+jQuery(this).attr('src')); 223 }else{ 224 //console.log('image src link broken:'+jQuery(this).attr('src')); 225 var scrurl= url_hostns + jQuery(this).attr('src'); 226 jQuery(this).attr('src', scrurl); 227 //console.log('addedhostroot:'+jQuery(this).attr('src')); 228 } 229 230 //convert data-src to src 231 if(jQuery(this).attr('data-src')!=null){ 232 //console.log('datasrc:'+jQuery(this).attr('data-src')); 233 jQuery(this).attr('src', jQuery(this).attr('data-src')); 234 //console.log('src change to '+ jQuery(this).attr('src')); 235 } 236 } 237 }); 238 239 jQuery('#wanttext *').each(function(key,value) { 240 if(jQuery(this).attr('href')!=null){ 241 if (jQuery(this).attr('href').includes('http')){ 242 //console.log('link complete url:'+jQuery(this).attr('href')); 243 }else{ 244 //console.log('link broken:'+jQuery(this).attr('href')); 245 var scrurl= url_hostns + jQuery(this).attr('href'); 246 jQuery(this).attr('href', scrurl); 247 //console.log('link hostroot added:'+jQuery(this).attr('href')); 248 } 249 } 250 }); 251 252 253 254 255 256 257 258 259 260 if (document.getElementsByTagName("title")[1] !=null){ 261 var papertitle = document.getElementsByTagName("title")[1].textContent; 262 }else{ 263 var papertitle = url; 264 } 265 if (document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value == ""){ 266 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "====== "+papertitle+" ====== \r\n [["+url+"|" + papertitle + "]] [[?do=highlight2wiki&ur="+url+"|✍Highlight]]--"+timestamp+"\r\n\n"; 267 document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag> }}\r\n\n"; //add tag syntax 268 } 269 270 271jQuery('#wanttext').append('<input type="button" class="unibutton" value="Clean!" onpointerdown="cleanorphantext()" > '); 272 273} 274 275function cleanorphantext(){ 276jQuery('wanttext').contents().filter(function(){return this.nodeType != 1;}).remove(); 277alert('orphan text cleared'); 278} 279 280 281function HLdarkmode(){ 282 283 jQuery('div').toggleClass("dark-mode"); 284 285} 286 287 288function stripTrailingSlash(str){ 289 if(str.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);} 290 return str 291} 292