#959: going through whole repository was a huge performance hog
[redakcja.git] / redakcja / static / js / wiki / view_editor_wysiwyg.js
index 42d91ca..4e0bdee 100644 (file)
         }
 
         // start edition on this node
         }
 
         // start edition on this node
-        var $overlay = $('<div class="html-editarea"><button class="accept-button">Zapisz</button><button class="delete-button">Usuń</button><textarea></textarea></div>').css({
+        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><textarea></textarea></div>').css({
             position: 'absolute',
             height: h,
             left: x,
             position: 'absolute',
             height: h,
             left: x,
         
 
         if ($origin.is('.motyw')) {
         
 
         if ($origin.is('.motyw')) {
+           $('.akap-edit-button').remove();
             withThemes(function(canonThemes){
                 $('textarea', $overlay).autocomplete(canonThemes, {
                     autoFill: true,
             withThemes(function(canonThemes){
                 $('textarea', $overlay).autocomplete(canonThemes, {
                     autoFill: true,
             });
         }
         else {
             });
         }
         else {
-            $('.delete-button', $overlay).hide();
+            $('.delete-button', $overlay).html("Anuluj");
+            $('.delete-button', $overlay).click(function(){
+                if (window.confirm("Czy jesteś pewien, że chcesz anulować zmiany?")) {
+                    $overlay.remove();
+                    $(document).unbind('click.blur-overlay');
+                    return false;
+                };
+            });
         }
 
 
         }
 
 
                     xml2html({
                         xml: '<' + nodeName + '>' + insertedText + '</' + nodeName + '>',
                         success: function(element){
                     xml2html({
                         xml: '<' + nodeName + '>' + insertedText + '</' + nodeName + '>',
                         success: function(element){
-                            $origin.html($(element).html());
+                            if (nodeName == 'out-of-flow-text') {
+                                $(element).children().insertAfter($origin);
+                                $origin.remove()
+                            }
+                            else {
+                                $origin.html($(element).html());
+                            }
                             $overlay.remove();
                         },
                         error: function(text){
                             $overlay.remove();
                         },
                         error: function(text){
                     
                     var msg = $("<div class='saveNotify'><p>Twoje zmiany zostały naniesione na tekst źródłowy. Pamiętaj, że aby zmiany zostały utrwalone <span>należy je zapisać</span>!</p><p class='notifyTip'>Ta wiadomość zostanie automatycznie zamknięta za 6 sekund.</p></div>");
                     $("#base").prepend(msg);
                     
                     var msg = $("<div class='saveNotify'><p>Twoje zmiany zostały naniesione na tekst źródłowy. Pamiętaj, że aby zmiany zostały utrwalone <span>należy je zapisać</span>!</p><p class='notifyTip'>Ta wiadomość zostanie automatycznie zamknięta za 6 sekund.</p></div>");
                     $("#base").prepend(msg);
-                    $("#save-button").css({border: '5px solid red'});
-                    $('#base .saveNotify').fadeOut(6000, function(){
+                    $("#save-button").css({border: '2px solid #801000', backgroundColor: '#E1C1C1'});
+                    $('#base .saveNotify').fadeOut(7000, function(){
                         $(this).remove(); 
                         $("#save-button").css({border: '1px solid black'});
                     });
                 }
 
                         $(this).remove(); 
                         $("#save-button").css({border: '1px solid black'});
                     });
                 }
 
+               $('.akap-edit-button', $overlay).click(function(){
+                       var textAreaOpened = $('textarea', $overlay)[0];
+                       var startTag = "";
+                       var endTag = "";
+                       var buttonName = this.innerHTML;
+
+                       if(buttonName == "słowo obce") {
+                               startTag = "<slowo_obce>";
+                               endTag = "</slowo_obce>";
+                       } else if (buttonName == "wyróżnienie") {
+                               startTag = "<wyroznienie>";
+                               endTag = "</wyroznienie>";
+                       } else if (buttonName == "tytuł dzieła") {
+                               startTag = "<tytul_dziela>";
+                               endTag = "</tytul_dziela>";
+                       }
+                       var myField = textAreaOpened;                   
+                        
+                       //IE support
+                       if (document.selection) {
+                           textAreaOpened.focus();
+                           sel = document.selection.createRange();
+                           sel.text = startTag + sel.text + endTag;
+                       }
+                       //MOZILLA/NETSCAPE support
+                       else if (textAreaOpened.selectionStart || textAreaOpened.selectionStart == '0') {
+                           var startPos = textAreaOpened.selectionStart;
+                           var endPos = textAreaOpened.selectionEnd;
+                           textAreaOpened.value = textAreaOpened.value.substring(0, startPos)
+                                 + startTag + textAreaOpened.value.substring(startPos, endPos) + endTag + textAreaOpened.value.substring(endPos, textAreaOpened.value.length);
+                       }
+               });
+
                 $('.accept-button', $overlay).click(function(){
                     save();
                 });
                 $('.accept-button', $overlay).click(function(){
                     save();
                 });
                 _finalize(success);
             },
             error: function(text, source){
                 _finalize(success);
             },
             error: function(text, source){
-                $('#html-view').html('<p class="error">Wystąpił błąd:</p><p>'+text+'</p><pre>'+source.replace(/&/g, '&amp;').replace(/</g, '&lt;')+'</pre>');
+                err = '<p class="error">Wystąpił błąd:</p><p>'+text+'</p>';
+                if (source)
+                    err += '<pre>'+source.replace(/&/g, '&amp;').replace(/</g, '&lt;')+'</pre>'
+                $('#html-view').html(err);
                 _finalize(failure);
             }
         });
                 _finalize(failure);
             }
         });