guieditor/editor.js
changeset 7 4f40b21648a9
parent 6 7398bdc17604
equal deleted inserted replaced
6:7398bdc17604 7:4f40b21648a9
     1 attachHook('editor_gui_toolbar', 'guied_insert_toolbar(ta_wrapper, response.toolbar_templates);');
     1 attachHook('editor_gui_toolbar', 'guied_insert_toolbar(ta_wrapper, textarea, response.toolbar_templates);');
     2 
     2 
     3 function guied_insert_toolbar(ta_wrapper, toolbar_templates)
     3 function guied_insert_toolbar(ta_wrapper, textarea, toolbar_templates)
     4 {
     4 {
     5 	// Init toolbar
     5 	// Init toolbar
     6 	var toolbar = '';
     6 	var toolbar = '';
     7 	var head = new templateParser(toolbar_templates.toolbar_start);
     7 	var head = new templateParser(toolbar_templates.toolbar_start);
     8 	var button = new templateParser(toolbar_templates.toolbar_button);
     8 	var button = new templateParser(toolbar_templates.toolbar_button);
    55 			}
    55 			}
    56 			button.assign_vars({
    56 			button.assign_vars({
    57 					TITLE: $lang.get('guied_btn_' + buttons[i]),
    57 					TITLE: $lang.get('guied_btn_' + buttons[i]),
    58 					// FIXME: indexOf is error prone here
    58 					// FIXME: indexOf is error prone here
    59 					SPRITE: gen_sprite_html(cdnPath + '/plugins/guieditor/icons/sprite.png', 16, 16, 0, spritelist.indexOf(buttons[i]) * 16),
    59 					SPRITE: gen_sprite_html(cdnPath + '/plugins/guieditor/icons/sprite.png', 16, 16, 0, spritelist.indexOf(buttons[i]) * 16),
    60 					FLAGS: 'href="#" onclick="guied_act(\'' + buttons[i] + '\'); return false;"'
    60 					FLAGS: 'href="#" onclick="guied_act(\'' + buttons[i] + '\', this); return false;"'
    61 				});
    61 				});
    62 			toolbar += button.run();
    62 			toolbar += button.run();
    63 			if ( hide_label )
    63 			if ( hide_label )
    64 			{
    64 			{
    65 				button.assign_bool({ show_title: true });
    65 				button.assign_bool({ show_title: true });
    71 	// End of toolbar
    71 	// End of toolbar
    72 	toolbar += tail.run();
    72 	toolbar += tail.run();
    73 	
    73 	
    74 	var wrapperdiv = document.createElement('div');
    74 	var wrapperdiv = document.createElement('div');
    75 	wrapperdiv.innerHTML = toolbar;
    75 	wrapperdiv.innerHTML = toolbar;
    76 	wrapperdiv.className = 'hide-with-mce';
    76 	wrapperdiv.className = 'guieditor hide-with-mce';
       
    77 	wrapperdiv.target_ta = textarea;
    77 	ta_wrapper.appendChild(wrapperdiv);
    78 	ta_wrapper.appendChild(wrapperdiv);
    78 }
    79 }
    79 
    80 
    80 function guied_act(action)
    81 function guied_act(action, obj)
    81 {
    82 {
    82 	var textarea = document.getElementById('ajaxEditArea');
    83 	var textarea = guied_self(obj).target_ta;
       
    84 	if ( !textarea )
       
    85 	{
       
    86 		console.error('Could not get textarea');
       
    87 		console.debug(obj, guied_self(obj));
       
    88 		return null;
       
    89 	}
    83 	var af_class = typeof(autofill_schemas.floodlight) == 'object' ? 'guied_floodlight' : 'page';
    90 	var af_class = typeof(autofill_schemas.floodlight) == 'object' ? 'guied_floodlight' : 'page';
    84 	switch(action)
    91 	switch(action)
    85 	{
    92 	{
    86 		case 'bold':
    93 		case 'bold':
    87 			guied_insert_wikitext_tag(textarea, "'''", "'''", $lang.get('guied_sample_bold'));
    94 			guied_insert_wikitext_tag(textarea, "'''", "'''", $lang.get('guied_sample_bold'));
    95 		case 'intlink':
   102 		case 'intlink':
    96 			load_component('autofill');
   103 			load_component('autofill');
    97 			var selection = guied_get_selection(textarea);
   104 			var selection = guied_get_selection(textarea);
    98 			var il_mp = miniPrompt(function(div)
   105 			var il_mp = miniPrompt(function(div)
    99 				{
   106 				{
       
   107 					console.debug(div.parentNode);
       
   108 					
   100 					div.innerHTML += '<h3>' + $lang.get('guied_intlink_title') + '</h3>';
   109 					div.innerHTML += '<h3>' + $lang.get('guied_intlink_title') + '</h3>';
   101 					div.innerHTML += '<table border="0" cellspacing="5" cellpadding="0" style="width: 100%;"> \
   110 					div.innerHTML += '<table border="0" cellspacing="5" cellpadding="0" style="width: 100%;"> \
   102 								<tr> \
   111 								<tr> \
   103 									<td valign="top" style="white-space: nowrap;"> \
   112 									<td valign="top" style="white-space: nowrap;"> \
   104 									' + $lang.get('guied_intlink_lbl_page') + ' \
   113 									' + $lang.get('guied_intlink_lbl_page') + ' \
   311 	}
   320 	}
   312 }
   321 }
   313 
   322 
   314 function guied_register_heading(select)
   323 function guied_register_heading(select)
   315 {
   324 {
   316 	var textarea = document.getElementById('ajaxEditArea');
   325 	var textarea = guied_self(select).target_ta;
   317 	var n = Number($(select).val());
   326 	var n = Number($(select).val());
   318 	if ( n < 1 || n > 6 )
   327 	if ( n < 1 || n > 6 )
   319 		return;
   328 		return;
   320 	$(select).val('0');
   329 	$(select).val('0');
   321 	var tag = '';
   330 	var tag = '';
   548 		return myText;
   557 		return myText;
   549 	}
   558 	}
   550 	return sampleText;
   559 	return sampleText;
   551 }
   560 }
   552 
   561 
       
   562 function guied_self(elem)
       
   563 {
       
   564 	while ( elem.tagName != 'BODY' )
       
   565 	{
       
   566 		elem = elem.parentNode;
       
   567 		if ( $(elem).hasClass('guieditor') )
       
   568 			return elem;
       
   569 	}
       
   570 	return null;
       
   571 }
       
   572 
   553 //
   573 //
   554 // Autofill schema for images
   574 // Autofill schema for images
   555 //
   575 //
   556 
   576 
   557 var autofill_schemas = autofill_schemas || {};
   577 var autofill_schemas = autofill_schemas || {};