User:Magnus Manske/less edit clutter.js: Difference between revisions

Content deleted Content added
update
new reference management
Line 3:
}
 
var lec_parse_references = 01 ;
 
var lec_parent ;
Line 14:
var lec_tb_ref ;
var lec_active ;
var lec_last_edited = null ;
 
 
Line 23 ⟶ 24:
less_edit_clutter_hook_button ( 'wpDiff' ) ;
less_edit_clutter_parse_main_textbox () ;
}
 
function less_edit_clutter_insert_at_cursor ( field , value ) {
if (document.selection) {
field.focus();
sel = document.selection.createRange();
sel.text = value;
} else if (field.selectionStart || field.selectionStart == '0') {
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
field.value = field.value.substring(0, startPos)+ value+ field.value.substring(endPos, field.value.length);
}
}
 
Line 28 ⟶ 41:
var b = document.getElementById ( id ) ;
b.onclick = function () { less_edit_clutter_rejoin() ; return true ; } ;
}
 
function less_edit_clutter_delete_reference () {
var si = lec_tb_ref.selectedIndex ;
if ( !si || si == null ) return ; // Nothing selected
var text = lec_tb_ref[si].firstChild.nodeValue ;
text = text.split ( ' : ' ) ;
var value = text.shift() ;
text = text.join ( ' : ' ) ;
text = text.split ( ' | ' ) ;
var refstuff = text.shift() ;
text = text.join ( ' | ' ) ;
var key = '<<REF' + value + '>>' ;
lec_tb_top.value = lec_tb_top.value.split(key).join('') ;
lec_tb1.value = lec_tb1.value.split(key).join('') ;
lec_tb_bt.value = lec_tb_bt.value.split(key).join('') ;
less_edit_clutter_rejoin () ;
less_edit_clutter_parse_main_textbox () ;
return false ;
}
 
function less_edit_clutter_insert_new_reference () {
if ( lec_last_edited == null ) return ;
 
var refstuff = prompt ( "Enter reference name:" , '' ) ;
if ( null == refstuff ) return ; // Cancel
var text = prompt ( "Enter reference contents:" , '' ) ;
if ( null == text ) return ; // Cancel
 
var max = lec_tb_ref.length + 2 ;
 
less_edit_clutter_insert_at_cursor ( lec_last_edited , '<<REF' + max + '>>' ) ;
 
text = max + ' : ' + refstuff + ' | ' + text ;
var opt = document.createElement ( 'option' ) ;
opt.value = max-1 ;
opt.appendChild ( document.createTextNode ( text ) ) ;
lec_tb_ref.appendChild ( opt ) ;
less_edit_clutter_rejoin () ;
less_edit_clutter_parse_main_textbox () ;
return false ;
}
 
Line 47 ⟶ 104:
var selection = ta.value.substr(ta.selectionStart, ta.selectionEnd - ta.selectionStart);
if ( ! /^\<*REF\d+\>*$/.test ( selection ) ) return ;
alertvar (num = selection.match ( /^\<*REF(\d+)\>*$/ ) ;
num = num.pop() ;
num-- ;
lec_tb_ref[num].selected = true ;
}
 
Line 125 ⟶ 185:
var refstuff = text.shift() ;
text = text.join ( ' | ' ) ;
if ( refstuff != '' ) refstuff = ' name="' + refstuff + '"' ;
text = '<ref' + refstuff + '>' + text + '</ref>' ;
var key = '<<REF' + value + '>>' ;
Line 190 ⟶ 251:
lec_tb_top.onselect = function () { less_edit_clutter_tb1_select ( lec_tb_top ) ; } ;
lec_tb_bt.onselect = function () { less_edit_clutter_tb1_select ( lec_tb_bt ) ; } ;
 
lec_tb1.onfocus = function () { lec_last_edited = lec_tb1 ; } ;
lec_tb_top.onfocus = function () { lec_last_edited = lec_tb_top ; } ;
lec_tb_bt.onfocus = function () { lec_last_edited = lec_tb_bt ; } ;
 
lec_tb_ref = document.createElement ( 'select' ) ;
lec_tb_ref.id = 'lec_tb_ref' ;
Line 197 ⟶ 263:
lec_tb_ref.onchange = less_edit_clutter_refsel_changed ;
lec_tb_ref.ondblclick = less_edit_clutter_refsel_double_clicked ;
 
var a_new_reference = document.createElement ( 'a' ) ;
a_new_reference.appendChild ( document.createTextNode ( 'insert new reference' ) ) ;
a_new_reference.href = '#' ;
a_new_reference.onclick = less_edit_clutter_insert_new_reference ;
 
var a_delete_reference = document.createElement ( 'a' ) ;
a_delete_reference.appendChild ( document.createTextNode ( 'delete reference' ) ) ;
a_delete_reference.href = '#' ;
a_delete_reference.onclick = less_edit_clutter_delete_reference ;
 
lec_bottom_td4 = document.createElement ( 'td' ) ;
lec_bottom_td4.appendChild ( document.createTextNode ( 'References (' ) ) ;
lec_bottom_td4.appendChild ( a_new_reference ) ;
lec_bottom_td4.appendChild ( document.createTextNode ( ' | ' ) ) ;
lec_bottom_td4.appendChild ( a_delete_reference ) ;
lec_bottom_td4.appendChild ( document.createTextNode ( ')' ) ) ;
lec_bottom_td4.appendChild ( document.createElement ( 'br' ) ) ;
lec_bottom_td4.appendChild ( lec_tb_ref ) ;
Line 307 ⟶ 387:
// References
if ( lec_parse_references && /\<\<REF\d+\>\>/.test ( lec_original ) ) lec_parse_references = 0 ; // Already contains pattern, aborting
if ( lec_parse_references ) {
cnt = 1 ;
Line 322 ⟶ 403:
if ( n.length < 2 ) { o += '<ref' + v[i] ; continue ; }
refstuff = n.shift() ;
refstuff = refstuff.match ( /name=\"(.*)\"\s*$/ ) ;
if ( null == refstuff ) refstuff = '' ;
else refstuff = refstuff.pop() ;
n = n.join ( '>' ) ;
n = n.split ( '</ref>' ) ;