Show toolbar tooltips with access keys for buttons without description.
[redakcja.git] / src / redakcja / static / js / wiki / view_editor_wysiwyg.js
index 3ec4f70..517c878 100644 (file)
     }
 
 
+    function addReference(){
+        var selection = window.getSelection();
+        var n = selection.rangeCount;
+
+        if (n == 0) {
+            window.alert("Nie zaznaczono żadnego obszaru");
+            return false;
+        }
+
+        // for now allow only 1 range
+        if (n > 1) {
+            window.alert("Zaznacz jeden obszar");
+            return false;
+        }
+
+        // remember the selected range
+        var range = selection.getRangeAt(0);
+
+        if (!verifyTagInsertPoint(range.endContainer)) {
+            window.alert("Nie można wstawić w to miejsce przypisu.");
+            return false;
+        }
+
+        var tag = $('<span></span>');
+        range.collapse(false);
+        range.insertNode(tag[0]);
+
+        xml2html({
+            xml: '<ref href=""/>',
+            success: function(text){
+                var t = $(text);
+                tag.replaceWith(t);
+                openForEdit(t);
+            },
+            error: function(){
+                tag.remove();
+                alert('Błąd przy dodawaniu referncji:' + errors);
+            }
+        })
+    }
+
+
+
+    
     /* Insert theme using current selection */
 
     function addTheme(){
                                 spoint.insertNode(btag[0])
                                 btag.replaceWith(text);
                                 selection.removeAllRanges();
-                                openForEdit($('.motyw[theme-class=' + id + ']'));
+                                openForEdit($('.motyw[theme-class="' + id + '"]'));
                             }
                         });
                     }
             }
             
             tableContent += "</tr>";                                   
-            $("#content").append(specialCharsContainer);
+            $("body").append(specialCharsContainer);
             
             
              // localStorage for recently used characters - reading
                 x = 100;
             }
         }
+        if ($origin.is('.reference-inline-box')) {
+            w = 400;
+            h = 32;
+            y -= 32;
+            x = Math.min(
+                x,
+                $('.htmlview div').offset().left + $('.htmlview div').width() - 400
+            );
+        }
 
         // start edition on this node
         var $overlay = $('<div class="html-editarea"><button class="accept-button">Zapisz</button><button class="delete-button">Usuń</button><button class="tytul-button akap-edit-button">tytuł dzieła</button><button class="wyroznienie-button akap-edit-button">wyróżnienie</button><button class="slowo-button akap-edit-button">słowo obce</button><button class="znak-button akap-edit-button">znak spec.</button><textarea></textarea></div>').css({
         }).appendTo($box[0].offsetParent || $box.parent()).show();
         
 
-        if ($origin.is('.motyw')) {
+        if ($origin.is('*[x-edit-no-format]')) {
            $('.akap-edit-button').remove();
-            withThemes(function(canonThemes){
-                $('textarea', $overlay).autocomplete(canonThemes, {
-                    autoFill: true,
-                    multiple: true,
-                    selectFirst: true,
-                    highlight: false
-                });
-            })
+        }
+        
+        if ($origin.is('.motyw')) {
+            $.themes.autocomplete($('textarea', $overlay));
         }
 
         if ($origin.is('.motyw')){
             $('.delete-button', $overlay).click(function(){
-                if (window.confirm("Czy jesteś pewien, że chcesz usunąć ten motyw ?")) {
-                    $('[theme-class=' + $origin.attr('theme-class') + ']').remove();
+                if (window.confirm("Czy jesteś pewien, że chcesz usunąć ten motyw?")) {
+                    $('[theme-class="' + $origin.attr('theme-class') + '"]').remove();
                     $overlay.remove();
                     $(document).unbind('click.blur-overlay');
                     return false;
                 };
             });
         }
-        else if($box.is('*[x-annotation-box]')) {
+        else if($box.is('*[x-annotation-box]') || $origin.is('*[x-edit-attribute]')) {
             $('.delete-button', $overlay).click(function(){
                 if (window.confirm("Czy jesteś pewien, że chcesz usunąć ten przypis?")) {
                     $origin.remove();
 
         var serializer = new XMLSerializer();
 
+        if($box.attr("x-edit-attribute")) {
+            source = $('<span x-pass-thru="true"/>');
+            source.text($box.attr("data-wlf-" + $box.attr("x-edit-attribute")));
+            source = source[0];
+        } else {
+            source = $box[0];
+        }
+        
         html2text({
-            element: $box[0],
+            element: source,
             stripOuter: true,
             success: function(text){
                 $('textarea', $overlay).val($.trim(text));
                         insertedText = insertedText.replace(/,\s*$/, '');
                     }
 
+                    if($box.attr("x-edit-attribute")) {
+                        xml = '<' + nodeName + ' ' + $box.attr("x-edit-attribute") + '="' + insertedText + '"/>';
+                    } else {
+                        xml = '<' + nodeName + '>' + insertedText + '</' + nodeName + '>';
+                    }
+
+                    
                     xml2html({
-                        xml: '<' + nodeName + '>' + insertedText + '</' + nodeName + '>',
+                        xml: xml,
                         success: function(element){
                             if (nodeName == 'out-of-flow-text') {
                                 $(element).children().insertAfter($origin);
                                 $origin.remove()
                             }
+                            else if ($box.attr('x-edit-attribute')) {
+                                $(element).insertAfter($origin);
+                                $origin.remove();
+                            }
                             else {
                                 $origin.html($(element).html());
                             }
         });
     }
 
+
     function VisualPerspective(options){
 
         var old_callback = options.callback;
                     }
                 });
 
+                $('#insert-reference-button').click(function(){
+                    addReference();
+                    return false;
+                });
+
                 $('#insert-annotation-button').click(function(){
                     addAnnotation();
                     return false;
                     return false;
                 });            
 
-                $('.edit-button').live('click', function(event){
+                $(document).on('click', '.edit-button', function(event){
                     event.preventDefault();
                     openForEdit($(this).parent());
                 });
 
             }
 
-            $('.motyw').live('click', function(){
+            $(document).on('click', '.motyw', function(){
                 selectTheme($(this).attr('theme-class'));
             });
 
 
         xml2html({
             xml: this.doc.text,
+            base: this.doc.getBase(),
             success: function(element){
                 var htmlView = $('#html-view');
                 htmlView.html(element);