X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/6da718d80af13cf081d63b39f4240df1f1e53424..07689901a9bf30daeccf8a1ceb7193fe771eb3ac:/redakcja/static/js/wiki/view_editor_wysiwyg.js?ds=inline

diff --git a/redakcja/static/js/wiki/view_editor_wysiwyg.js b/redakcja/static/js/wiki/view_editor_wysiwyg.js
index 5fcca87e..4e0bdee8 100644
--- a/redakcja/static/js/wiki/view_editor_wysiwyg.js
+++ b/redakcja/static/js/wiki/view_editor_wysiwyg.js
@@ -44,7 +44,7 @@
     }
 
     /* Convert HTML fragment to plaintext */
-    var ANNOT_FORBIDDEN = ['pt', 'pa', 'pr', 'pe', 'begin', 'end', 'theme'];
+    var ANNOT_FORBIDDEN = ['pt', 'pa', 'pr', 'pe', 'begin', 'end', 'motyw'];
 
     function html2plainText(fragment){
         var text = "";
@@ -288,11 +288,8 @@
         else {
             $box = $origin;
         }
-
-        /* always stick to the left to avoid interfering with gallery */
-        var x = 20;
-        var y = $origin.offset().top + $("#html-view").scrollTop();
-        
+        var x = $box[0].offsetLeft;
+        var y = $box[0].offsetTop;        
         
         var w = $box.outerWidth();
         var h = $box.innerHeight();
@@ -300,25 +297,33 @@
         if ($origin.is(".annotation-inline-box")) {
             w = Math.max(w, 400);
             h = Math.max(h, 60);
+            if($('.htmlview div').offset().left + $('.htmlview div').width() > ($('.vsplitbar').offset().left - 480)){
+                x = -(Math.max($origin.offset().left, $origin.width())); 
+            } else {
+                x = 100;
+            }
         }
 
         // 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,
             top: y,
             width: w
-        }).appendTo($('#html-view')).show();  /* appending outside of the document structure */
+        }).appendTo($box[0].offsetParent || $box.parent()).show();
         
 
         if ($origin.is('.motyw')) {
-            $('textarea', $overlay).autocomplete('/themes', {
-                autoFill: true,
-                multiple: true,
-                selectFirst: true,
-                highlight: false
-            });
+	    $('.akap-edit-button').remove();
+            withThemes(function(canonThemes){
+                $('textarea', $overlay).autocomplete(canonThemes, {
+                    autoFill: true,
+                    multiple: true,
+                    selectFirst: true,
+                    highlight: false
+                });
+            })
         }
 
         if ($origin.is('.motyw')){
@@ -342,7 +347,14 @@
             });
         }
         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;
+                };
+            });
         }
 
 
@@ -369,7 +381,13 @@
                     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){
@@ -377,8 +395,49 @@
                             alert('Błąd! ' + 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);
+                    $("#save-button").css({border: '2px solid #801000', backgroundColor: '#E1C1C1'});
+                    $('#base .saveNotify').fadeOut(7000, function(){
+                        $(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();
                 });
@@ -388,7 +447,6 @@
                         return;
                     }
                     save();
-
                     $(document).unbind('click.blur-overlay');
                 });
 
@@ -484,12 +542,11 @@
                 $('#html-view').html(element);
                 _finalize(success);
             },
-            error: function(text){
-                /* only basic error message */
-                var errorArray = text.split("\n");
-                var errorLocation = errorArray[2].split(":")[0];
-                text = errorLocation;
-                $('#html-view').html('<p class="error">Wystąpił błąd: '+ text + '</p>');
+            error: function(text, source){
+                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);
             }
         });