diff --git a/annogen.py b/annogen.py index bbe7fa047af183f76e620a6c91528c8f14f66134..fc40df798eb2fc8003d4b84dccff55b6901a5b6a 100755 --- a/annogen.py +++ b/annogen.py @@ -1361,8 +1361,8 @@ def bookmarkJS(): # toolset_string more complete below. # (ondblclick won't work on phones, so we have to do it # ourselves by setting timers etc.) - bookmarkOnclick = r"'+(ssb_local_annotator.isDevMode()?'onclick=\"if(((typeof ssb_local_annotator_dblTap==\\'undefined\\')?null:ssb_local_annotator_dblTap)==null) ssb_local_annotator_dblTap=setTimeout(function(){"+bookmarkLink0.replace("'",r"\\'")+r";ssb_local_annotator_dblTap=null},500); else { clearTimeout(ssb_local_annotator_dblTap);document.getElementById(\\'ssb_local_annotator_css\\').innerHTML+=\\'ruby:not([title]){border:thin blue solid}\\';ssb_local_annotator.alert(\\'\\',\\'Developer mode: words without glosses boxed in blue\\');ssb_local_annotator_dblTap=null}return false\" ':'')+'" - copyOnclick = r"'+(ssb_local_annotator.isDevMode()?'onclick=\"if(((typeof ssb_local_annotator_dblTap2==\\'undefined\\')?null:ssb_local_annotator_dblTap2)==null) ssb_local_annotator_dblTap2=setTimeout(function(){"+copyLink0+r";ssb_local_annotator_dblTap2=null},500); else { clearTimeout(ssb_local_annotator_dblTap2);document.body.innerHTML=document.body.parentElement.outerHTML.replace(/&/g,\\'&\\'+\\'amp;\\').replace(/</g,\\'&\\'+\\'lt;\\').replace(/\\\\n/g,\\'<br>\\').replace(/([&]lt;!--.*?-->)/g,\\'<font color=purple>$1</font>\\').replace(/([&]lt;[A-Za-z/].*?>)/g,\\'<font color=green>$1</font>\\');ssb_local_annotator.alert(\\'\\',\\'Developer mode: show DOM\\');ssb_local_annotator_dblTap2=null}return false\" ':'')+'" # Note: outerHTML requires Chrome 33 (which Android 4.4 has, but may be a bit buggy) + bookmarkOnclick = r"'+(ssb_local_annotator.isDevMode()?'onclick=\"if(((typeof ssb_local_annotator_dblTap==\\'undefined\\')?null:ssb_local_annotator_dblTap)==null) window.ssb_local_annotator_dblTap=setTimeout(function(){if(window.ssb_local_annotator_dblTap){"+bookmarkLink0.replace("'",r"\\'")+r";window.ssb_local_annotator_dblTap=null}},500); else { clearTimeout(ssb_local_annotator_dblTap);window.ssb_local_annotator_dblTap=null;document.getElementById(\\'ssb_local_annotator_css\\').innerHTML+=\\'ruby:not([title]){border:thin blue solid}\\';ssb_local_annotator.alert(\\'\\',\\'Developer mode: words without glosses boxed in blue\\')}\" ':'')+'" + copyOnclick = r"'+(ssb_local_annotator.isDevMode()?'onclick=\"if(((typeof ssb_local_annotator_dblTap2==\\'undefined\\')?null:ssb_local_annotator_dblTap2)==null) window.ssb_local_annotator_dblTap2=setTimeout(function(){if(ssb_local_annotator_dblTap2){"+copyLink0+r";window.ssb_local_annotator_dblTap2=null}},500); else { clearTimeout(ssb_local_annotator_dblTap2);window.ssb_local_annotator_dblTap2=null;document.body.innerHTML=document.body.parentElement.outerHTML.replace(/&/g,\\'&\\'+\\'amp;\\').replace(/</g,\\'&\\'+\\'lt;\\').replace(/\\\\n/g,\\'<br>\\').replace(/([&]lt;!--.*?-->)/g,\\'<font color=purple>$1</font>\\').replace(/([&]lt;[A-Za-z/].*?>)/g,\\'<font color=green>$1</font>\\');ssb_local_annotator.alert(\\'\\',\\'Developer mode: show DOM\\')}\" ':'')+'" # Note: outerHTML requires Chrome 33 (which Android 4.4 has, but may be a bit buggy) else: bookmarkOnclick = copyOnclick = "" emoji_supported = "(function(){var c=document.createElement('canvas');if(!c.getContext)return;c=c.getContext('2d');if(!c.fillText)return;c.textBaseline='top';c.font='32px Arial';c.fillText('\ud83d\udd16',0,0);return c.getImageData(16,16,1,1).data[0]})()" # these emoji are typically supported on Android 4.4 but not on Android 4.1 bookmarks_emoji = r"""'>\ud83d\udd16</a> <a """+copyOnclick+r"""href=\"'+copyLink+'\">\ud83d\udccb</a> """ @@ -1377,7 +1377,7 @@ def bookmarkJS(): # Highlighting function, currently depending on android_print (calls canPrint, and currently no other way to save highlights, TODO: figure out how we can save the highlights in a manner that's stable against document changes and annotation changes with newer app versions) if android_print: unconditional_inject += r""";ssb_local_annotator_highlightSel=function(colour){var r=window.getSelection().getRangeAt(0);var s=document.getElementsByTagName('ruby'),i,d=0;for(i=0;i < s.length && !r.intersectsNode(s[i]); i++);for(;i < s.length && r.intersectsNode(s[i]); i++){d=1;s[i].setAttribute('style','background:'+colour+'!important');if(!window.doneWarnHighl){window.doneWarnHighl=true;ssb_local_annotator.alert('','This app cannot yet SAVE your highlights. They may be lost when you leave.'+(ssb_local_annotator.canPrint()?' Save as PDF to keep them.':''))}}if(!d)ssb_local_annotator.alert('','This tool can highlight only annotated words. Select at least one annotated word and try again.')};if(!document.gotSelChg){document.gotSelChg=true;document.addEventListener('selectionchange',function(){var i=document.getElementById('ssb_local_annotator_HL');if(window.getSelection().isCollapsed || document.getElementsByTagName('ruby').length < 9) i.style.display='none'; else i.style.display='block'})}function doColour(c){return '<span style=\"background:'+c+' !important\" onclick=\"ssb_local_annotator_highlightSel("'+c+'")\">'+(ssb_local_annotator_toolE?'\u270f':'M')+'</span>'}return '<button id=\"ssb_local_annotator_HL\" style=\"display: none; position: fixed !important; background: white !important; border: red solid !important; color: black !important; right: 0px; top: 3em; """+site_css_overrides+r"""\">'+doColour('yellow')+doColour('cyan')+doColour('pink')+doColour('inherit')+'</button>'""" unconditional_inject = "(function(){"+unconditional_inject+"})()" - return unconditional_inject+"+("+should_show_bookmarks+"?("+show_bookmarks_string+"):("+toolset_string+"))", "var a=e.getElementsByTagName('*'),i;for(i=0;i < a.length; i++){var c=a[i].getAttribute('onclick');if(c){a[i].removeAttribute('onclick');a[i].addEventListener('click',Function(c))}else{c=a[i].getAttribute('href');if(c&&c.slice(0,11)=='javascript:')a[i].addEventListener('click',Function(c.slice(11)+';return false'))}}" + return unconditional_inject+"+("+should_show_bookmarks+"?("+show_bookmarks_string+"):("+toolset_string+"))", "var a=e.getElementsByTagName('*'),i;for(i=0;i < a.length; i++){var c=a[i].getAttribute('onclick');if(c){a[i].removeAttribute('onclick');a[i].addEventListener('click',Function('ev',c+';ev.preventDefault()'))}else{c=a[i].getAttribute('href');if(c&&c.slice(0,11)=='javascript:'){a[i].addEventListener('click',Function('ev',c.slice(11)+';ev.preventDefault()'))}}}" if bookmarks: jsAddRubyCss += "+("+bookmarkJS()[0]+")" jsAddRubyCss += ";d.body.insertBefore(e,d.body.firstChild)" if bookmarks: jsAddRubyCss += ";"+bookmarkJS()[1]