summaryrefslogtreecommitdiff
path: root/lib/scripts/editor.js
diff options
context:
space:
mode:
authorAdrian Lang <mail@adrianlang.de>2011-09-09 22:26:16 +0200
committerAdrian Lang <mail@adrianlang.de>2011-09-13 12:03:43 +0200
commit5e7a292691951a0fa0a18f06c8b9bcfb509a032d (patch)
tree5a844f42ea262883faaf5047544799e4ceb10941 /lib/scripts/editor.js
parentc62a5f5846e3477044ebc93e96f98b878d3e7a59 (diff)
downloadrpg-5e7a292691951a0fa0a18f06c8b9bcfb509a032d.tar.gz
rpg-5e7a292691951a0fa0a18f06c8b9bcfb509a032d.tar.bz2
Various JavaScript improvements, JSLint, jQuery
Diffstat (limited to 'lib/scripts/editor.js')
-rw-r--r--lib/scripts/editor.js101
1 files changed, 49 insertions, 52 deletions
diff --git a/lib/scripts/editor.js b/lib/scripts/editor.js
index 6d7f9f4a8..2009ce6af 100644
--- a/lib/scripts/editor.js
+++ b/lib/scripts/editor.js
@@ -15,11 +15,15 @@ var dw_editor = {
*/
init: function(){
var $editor = jQuery('#wiki__text');
- if(!$editor.length) return;
+ if($editor.length === 0) {
+ return;
+ }
dw_editor.initSizeCtl('#size__ctl',$editor);
- if($editor.attr('readOnly')) return;
+ if($editor.attr('readOnly')) {
+ return;
+ }
// in Firefox, keypress doesn't send the correct keycodes,
// in Opera, the default of keydown can't be prevented
@@ -40,34 +44,30 @@ var dw_editor = {
* @param selector editor the textarea to control
*/
initSizeCtl: function(ctlarea,editor){
- var $ctl = jQuery(ctlarea);
- var $textarea = jQuery(editor);
- if(!$ctl.length || !$textarea.length) return;
-
- var hgt = DokuCookie.getValue('sizeCtl');
- if(hgt){
- $textarea.css('height', hgt);
- }else{
- $textarea.css('height', '300px');
+ var $ctl = jQuery(ctlarea),
+ $textarea = jQuery(editor);
+
+ if($ctl.length === 0 || $textarea.length === 0) {
+ return;
}
+ $textarea.css('height', DokuCookie.getValue('sizeCtl') || '300px');
+
var wrp = DokuCookie.getValue('wrapCtl');
if(wrp){
dw_editor.setWrap($textarea[0], wrp);
} // else use default value
- var l = document.createElement('img');
- var s = document.createElement('img');
- var w = document.createElement('img');
- l.src = DOKU_BASE+'lib/images/larger.gif';
- s.src = DOKU_BASE+'lib/images/smaller.gif';
- w.src = DOKU_BASE+'lib/images/wrap.gif';
- jQuery(l).click(function(){dw_editor.sizeCtl(editor,100);});
- jQuery(s).click(function(){dw_editor.sizeCtl(editor,-100);});
- jQuery(w).click(function(){dw_editor.toggleWrap(editor);});
- $ctl.append(l);
- $ctl.append(s);
- $ctl.append(w);
+ jQuery.each([
+ ['larger', function(){dw_editor.sizeCtl(editor,100);}],
+ ['smaller', function(){dw_editor.sizeCtl(editor,-100);}],
+ ['wrap', function(){dw_editor.toggleWrap(editor);}],
+ ], function (_, img) {
+ jQuery(document.createElement('img'))
+ .attr('src', DOKU_BASE+'lib/images/' + img[0] + '.gif')
+ .click(img[1])
+ .appendTo($ctl);
+ });
},
/**
@@ -77,9 +77,8 @@ var dw_editor = {
* @param int val the relative value to resize in pixel
*/
sizeCtl: function(editor,val){
- var $textarea = jQuery(editor);
- var height = parseInt($textarea.css('height'));
- height += val;
+ var $textarea = jQuery(editor),
+ height = parseInt($textarea.css('height')) + val;
$textarea.css('height', height+'px');
DokuCookie.setValue('sizeCtl',$textarea.css('height'));
},
@@ -91,13 +90,10 @@ var dw_editor = {
* @param selector editor the textarea to control
*/
toggleWrap: function(editor){
- var $textarea = jQuery(editor);
- var wrap = textarea.attr('wrap');
- if(wrap && wrap.toLowerCase() == 'off'){
- dw_editor.setWrap(textarea[0], 'soft');
- }else{
- dw_editor.setWrap(textarea[0], 'off');
- }
+ var $textarea = jQuery(editor),
+ wrap = $textarea.attr('wrap');
+ dw_editor.setWrap($textarea[0],
+ (wrap && wrap.toLowerCase() == 'off') ? 'soft' : 'off');
DokuCookie.setValue('wrapCtl',$textarea.attr('wrap'));
},
@@ -134,13 +130,14 @@ var dw_editor = {
* @param event e - the key press event object
*/
keyHandler: function(e){
- if(e.keyCode != 13 &&
- e.keyCode != 8 &&
- e.keyCode != 32) return;
- var field = e.target;
- var selection = getSelection(field);
- if(selection.getLength()) return; //there was text selected, keep standard behavior
- var search = "\n"+field.value.substr(0,selection.start);
+ if([8, 13, 32].indexOf(e.keyCode) === -1) {
+ return;
+ }
+ var selection = getSelection(this);
+ if(selection.getLength() > 0) {
+ return; //there was text selected, keep standard behavior
+ }
+ var search = "\n"+this.value.substr(0,selection.start);
var linestart = Math.max(search.lastIndexOf("\n"),
search.lastIndexOf("\r")); //IE workaround
search = search.substr(linestart);
@@ -149,19 +146,19 @@ var dw_editor = {
// keep current indention for lists and code
var match = search.match(/(\n +([\*-] ?)?)/);
if(match){
- var scroll = field.scrollHeight;
+ var scroll = this.scrollHeight;
var match2 = search.match(/^\n +[\*-]\s*$/);
// Cancel list if the last item is empty (i. e. two times enter)
- if (match2 && field.value.substr(selection.start).match(/^($|\r?\n)/)) {
- field.value = field.value.substr(0, linestart) + "\n" +
- field.value.substr(selection.start);
+ if (match2 && this.value.substr(selection.start).match(/^($|\r?\n)/)) {
+ this.value = this.value.substr(0, linestart) + "\n" +
+ this.value.substr(selection.start);
selection.start = linestart + 1;
selection.end = linestart + 1;
setSelection(selection);
} else {
- insertAtCarret(field.id,match[1]);
+ insertAtCarret(this.id,match[1]);
}
- field.scrollTop += (field.scrollHeight - scroll);
+ this.scrollTop += (this.scrollHeight - scroll);
e.preventDefault(); // prevent enter key
return false;
}
@@ -172,13 +169,13 @@ var dw_editor = {
var spaces = match[1].length-1;
if(spaces > 3){ // unindent one level
- field.value = field.value.substr(0,linestart)+
- field.value.substr(linestart+2);
+ this.value = this.value.substr(0,linestart)+
+ this.value.substr(linestart+2);
selection.start = selection.start - 2;
selection.end = selection.start;
}else{ // delete list point
- field.value = field.value.substr(0,linestart)+
- field.value.substr(selection.start);
+ this.value = this.value.substr(0,linestart)+
+ this.value.substr(selection.start);
selection.start = linestart;
selection.end = linestart;
}
@@ -190,8 +187,8 @@ var dw_editor = {
// intend list item
var match = search.match(/(\n +)([*-] )$/);
if(match){
- field.value = field.value.substr(0,linestart)+' '+
- field.value.substr(linestart);
+ this.value = this.value.substr(0,linestart)+' '+
+ this.value.substr(linestart);
selection.start = selection.start + 2;
selection.end = selection.start;
setSelection(selection);