X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/5913c54d19b8f6775633176032161d49f9b2f1aa..2421e92f4731766547e99bf3ccae992f7b6411ff:/src/redakcja/static/js/wiki/view_editor_source.js

diff --git a/src/redakcja/static/js/wiki/view_editor_source.js b/src/redakcja/static/js/wiki/view_editor_source.js
index 547456f0..988d23ca 100644
--- a/src/redakcja/static/js/wiki/view_editor_source.js
+++ b/src/redakcja/static/js/wiki/view_editor_source.js
@@ -1,90 +1,60 @@
-/* COMMENT */
 (function($) {
 
-	function CodeMirrorPerspective(options)
-	{
-		var old_callback = options.callback;
+    function CodeMirrorPerspective(options) {
+	var old_callback = options.callback;
         options.callback = function(){
-			var self = this;
-
-			this.codemirror = CodeMirror.fromTextArea('codemirror_placeholder', {
-				parserfile: 'parsexml.js',
-				path: STATIC_URL + "js/lib/codemirror-0.8/",
-				stylesheet: STATIC_URL + "css/xmlcolors_20100906.css",
-				parserConfig: {
-					useHTMLKludges: false
-				},
-				iframeClass: 'xml-iframe',
-				textWrapping: true,
-				lineNumbers: true,
-				width: "100%",
-				height: "100%",
-				tabMode: 'default',
-				indentUnit: 0,
-				readOnly: CurrentDocument.readonly || false,
-				initCallback: function(){
-
-					self.codemirror.grabKeys(function(event) {
-						if (event.button) {
-							$(event.button).trigger('click');
-							event.button = null;
-						}
-					}, function(keycode, event) {
-						if(!event.altKey)
-							return false;
-
-						var c = String.fromCharCode(keycode).toLowerCase();
-						var button = $("#source-editor button[data-ui-accesskey='"+c+"']");
-						if(button.length == 0)
-							return false;
-
-						/* it doesn't matter which button we pick - all do the same */
-						event.button = button[0];
-						return true;
-					});
-
-					$('#source-editor .toolbar').toolbarize({
-					    actionContext: self.codemirror
-					});
-
-					console.log("Initialized CodeMirror");
-
-					// textarea is no longer needed
-					$('codemirror_placeholder').remove();
-
-					old_callback.call(self);
-				}
-			});
-		};
-
-		$.wiki.Perspective.call(this, options);
-	};
-
-
-	CodeMirrorPerspective.prototype = new $.wiki.Perspective();
-
-	CodeMirrorPerspective.prototype.freezeState = function() {
-		this.config().position = this.codemirror.win.scrollY || 0;
-	};
-
-	CodeMirrorPerspective.prototype.unfreezeState = function () {
-		this.codemirror.win.scroll(0, this.config().position || 0);
-	};
+	    var self = this;
+
+	    this.codemirror = CodeMirror.fromTextArea($(
+                '#codemirror_placeholder').get(0), {
+                    mode: 'xml',
+                    lineWrapping: true,
+		    lineNumbers: true,
+		    readOnly: CurrentDocument.readonly || false,
+                    identUnit: 0,
+                });
+
+
+	    $('#source-editor').keydown(function(event) {
+		if(!event.altKey)
+		    return;
+
+		var c = event.key;
+		var button = $("#source-editor button[data-ui-accesskey='"+c+"']");
+		if(button.length == 0)
+		    return;
+                button.get(0).click();
+                event.preventDefault();
+	    });
+
+	    $('#source-editor .toolbar').toolbarize({
+		actionContext: self.codemirror
+	    });
+
+	    // textarea is no longer needed
+	    $('#codemirror_placeholder').remove();
+	    old_callback.call(self);
+	}
 
-	CodeMirrorPerspective.prototype.onEnter = function(success, failure) {
-		$.wiki.Perspective.prototype.onEnter.call(this);
+        $.wiki.Perspective.call(this, options);
+    };
 
-		console.log('Entering', this.doc);
-		this.codemirror.setCode(this.doc.text);
 
-		/* fix line numbers bar */
-		var $nums = $('.CodeMirror-line-numbers');
-	    var barWidth = $nums.width();
+    CodeMirrorPerspective.prototype = new $.wiki.Perspective();
 
-		$(this.codemirror.frame.contentDocument.body).css('padding-left', barWidth);
-		// $nums.css('left', -barWidth);
+    CodeMirrorPerspective.prototype.freezeState = function() {
+        this.config().position =  this.codemirror.getScrollInfo().top;
+    };
+
+    CodeMirrorPerspective.prototype.unfreezeState = function () {
+        this.codemirror.scrollTo(0, this.config().position || 0);
+    };
+
+	CodeMirrorPerspective.prototype.onEnter = function(success, failure) {
+		$.wiki.Perspective.prototype.onEnter.call(this);
+
+		this.codemirror.setValue(this.doc.text);
 
-		$(window).resize();
 		this.unfreezeState(this._uistate);
 
 		if(success) success();
@@ -94,14 +64,13 @@
 		this.freezeState();
 
 		$.wiki.Perspective.prototype.onExit.call(this);
-		console.log('Exiting', this.doc);
-		this.doc.setText(this.codemirror.getCode());
+	    this.doc.setText(this.codemirror.getValue());
 
-        if ($('.vsplitbar').hasClass('active') && $('#SearchPerspective').hasClass('active')) {
-            $.wiki.switchToTab('#ScanGalleryPerspective');
-        }
+            if ($('.vsplitbar').hasClass('active') && $('#SearchPerspective').hasClass('active')) {
+                $.wiki.switchToTab('#ScanGalleryPerspective');
+            }
 
-		if(success) success();
+	    if(success) success();
 	}
 
 	$.wiki.CodeMirrorPerspective = CodeMirrorPerspective;