Crisis banners
[wolnelektury.git] / src / wolnelektury / static / js / book_text / references.js
index 1460675..fa4a35a 100644 (file)
             leftoffset = x - margin;
         } else {
             right = '';
-        
-            // default position.
-            leftoffset = 40;
+
             leftoffset = $elem.data('default-leftoffset');
+            if (leftoffset === undefined) {
+                leftoffset = $elem.width() / 2;
+            }
             
             nx = x - leftoffset;
 
 
             // Do we need to move away from the right?
             if (nx + boxwidth > maxx) {
-                // ACTUALLY CALCULATE STUFF
-                // if maxx - minx < 470 px -- daj z lewej do prawej i już!
-                
                 right = '';
                 let d = nx + boxwidth - maxx;
-                //if (leftoffset + d > $elem.width() - 10) d = $elem.width() - leftoffset - 10;
                 nx -= d;
                 leftoffset += d;
             }
             left: nx,
             right: right
         });
+        $elem.css({
+            display: "block"
+        });
         if (!$elem.data('attach-bottom')) {
             ny = y - $elem.height() - 10;
         } else {
             left: leftoffset - 6
         });
 
-        $elem.css({
-            display: "block"
-        });
     }
 
     function closeNoteBox() {
         if ($(this).parents('#footnotes').length) return;
         event.preventDefault();
 
-
-
-        let x = $(this).width() / 2, y = 0;
-        let elem = $(this);
-        while (elem.attr('id') != 'book-text') {
-            let p = $(elem).position();
-            x += p.left;
-            y += p.top;
-            elem = elem.parent();
-        }
         href = $(this).attr('href').substr(1);
         content = $("[name='" + href + "']").next().next().html();
         if (!content) return;
         $("#annotation-content").html(content);
         $("#footnote-link").attr('href', '#' + href)
 
-        
         putNoteAt($('#annotation-box'), this);
         event.stopPropagation();
     });
             let text = window.location.protocol + '//' +
                 window.location.host +
                 window.location.pathname;
-            if (anchor) text += anchor;
+            if (anchor) text += '#' + anchor;
             navigator.clipboard.writeText(text);
             
             this.hideCopied();
     });
 
     $('a.anchor').on('click', function(e) {
+        // Workaround for bad TOC markers.
+        if ($(this).closest('#toc').length) return;
+        if ($(this).closest('#wltoc').length) return;
         e.preventDefault();
 
         let sel = window.getSelection();
         let range = document.createRange();
 
         let $p = $(this).nextAll('.paragraph').first()
-        range.selectNode($p[0]);
+        range.selectNodeContents($p[0]);
         sel.addRange(range);
         
         qbox.showForSelection(sel);