[pLog-svn] r4002 - plugins/branches/lifetype-1.1/templateeditor/js/editor

oscar at devel.lifetype.net oscar at devel.lifetype.net
Wed Sep 20 21:57:08 GMT 2006


Author: oscar
Date: 2006-09-20 21:57:08 +0000 (Wed, 20 Sep 2006)
New Revision: 4002

Modified:
   plugins/branches/lifetype-1.1/templateeditor/js/editor/smartyeditor.js
Log:
fixed an issue with the template editor plugin, where the javascript editor was not working anymore. Right now I've just copied pLogEditor and renamed it to SmartyEditor, kind of a brute force solution but it works...


Modified: plugins/branches/lifetype-1.1/templateeditor/js/editor/smartyeditor.js
===================================================================
--- plugins/branches/lifetype-1.1/templateeditor/js/editor/smartyeditor.js	2006-09-20 21:10:13 UTC (rev 4001)
+++ plugins/branches/lifetype-1.1/templateeditor/js/editor/smartyeditor.js	2006-09-20 21:57:08 UTC (rev 4002)
@@ -1,54 +1,4 @@
 /**
- * SmartyEditor.js (Based on pLogEditor.js)
- *
- * Non-wysiwyg javascript-based editor for textarea controls in browsers. It works in
- * exactly the same as HTMLArea control but instead of graphically showing the contents
- * of the post, works based on raw html code. It does not offer as many features as
- * htmlarea but it does offer some other things as customizable toolbars, support
- * for text selections and ranges, etc. It should work in every major browser with
- * some support for DOM and DHTML.
- * It is very loosely based on Alex King's js_quicktags.js which is also used in Wordpress.
- * However, js_quicktags has the limitation that it can only work with one textarea per page
- * and plog for example needs two in the "new post" page. The code is javascript with OOP
- * so it might look a bit weird at first...
- * This code is licensed under the terms of the GPL license.
- *
- * -- Installation and usage --
- *
- * Place this file somewhere in your web server tree and from your html files, call it like
- * <html>
- *  <head>
- *   <link rel="stylesheet" href="smartyeditor.css" type="text/css">
- *   <script type="text/javascript" src="smartyeditor.js"></script>
- *   <script type="text/javascript">
- *    // define where your images are...
- *    var baseImageFolder='/devel/js/htmlarea/images';
- *   </script>
- *  </head>
- *  <body>
- *   <h1>SmartyEditor Javascript Sample</h1>
- *   <form name="textEditor" id="textEditor">
- *    text1:<br/>
- *    <script type="text/javascript">ed1 = new SmartyEditor('text1', 'ed1');</script>
- *    <textarea id="text1" name="text1" rows="8" cols="60"></textarea>
- *    <br/>text2:<br/>
- *    <script type="text/javascript">ed2 = new SmartyEditor('text2', 'ed2');</script>
- *    <textarea id="text2" name="text1" rows="8" cols="60"></textarea>
- *   </form>
- *  </body>
- * </html>
- *
- * Create a new SmartyEditor object in the place where you would like to show the 
- * toolbar of the editor. The first paramter for the constructor is the value of the 'id'
- * attribute of the textarea that will be the content area for the toolbar. The second parameter
- * is the name of the object itself, so if you are creating an editor called 'myEditor', the second
- * parameter will be 'myEditor'
- *
- * Please set the value of baseImageFolder to the base path where your icons are stored.
- */
- 
- 
-/**
  * please change this if your icons are somewhere else!
  */
 var baseImageFolder = 'plugins/templateeditor/js/editor/images';
@@ -266,7 +216,7 @@
 		this.toggle();		
 
 		// if everything went fine, add the link and return
-		var linkTag = '<a href="' + linkDest + '">' + linkDest + '</a>'; 
+		var linkTag = '<a href="' + linkDest + '">' + linkText + '</a>'; 
 		return linkTag;
 	}
 	
@@ -383,6 +333,39 @@
 }
 
 /**
+ * special button that only adds an resource
+ *
+ * @param id
+ * @param display
+ * @param icon
+ */
+edButtonResource = function(id, display, icon)
+{
+	//
+	// strange javascript thingies used for object inheritance...
+	//
+	this.prototype = new edButton(id, display, '', '', icon, -1 );
+	this.prototype.constructor = edButton;
+	this.superclass = edButton;
+	
+	this.superclass(id, display, '', '', icon, -1 );
+
+	/**
+	 * reimplemented from edButton so that we can ask for an image url and a description
+	 *
+	 * @param txtId
+	 */
+	this.execute = function( txtId, param )
+	{
+		if ( txtId == 'postText' )
+			resource_list_window(1);
+		else
+		    resource_list_window(2);
+		return '';
+	}
+}
+
+/**
  * implements drop-down lists
  */
 edButtonList = function( id, options )
@@ -408,6 +391,8 @@
 	{
 		selectBox = '<select class="editorDropDownList" name=\''+this.id+'\' onChange="'+objName+'.execute(\'' + txtId + '\', \'' + this.id + '\', this);">';
 		for( var key in this.options ) {
+            if ( prototypeCompatibabilityCheck( key ) )
+	            continue;			
 			selectBox += '<option value=\''+key+'\'>'+this.options[key]+'</option>';
 		}
 		selectBox += '</select>';
@@ -503,48 +488,47 @@
   // --
   // our very own toolbar
   // --
-  this.toolBar = Array();
-  options = new Array();
-  options['8'] = '8 pt';
-  options['10'] = '10 pt';
-  options['12'] = '12 pt';
-  options['14'] = '14 pt';
-  options['18'] = '18 pt';
-  options['24'] = '24 pt';  
-  options['36'] = '36 pt';
-  this.toolBar['list_font_size'] = new edFontSizeList( 'list_font_size', options );
-  this.toolBar['1_but_b']  = new edButton( '1_but_b', 'bold', '<strong>', '</strong>', 'ed_format_bold.gif', 1 );
-  this.toolBar['2_but_i']  = new edButton( '2_but_i', 'italics', '<em>', '</em>', 'ed_format_italic.gif', 1 );
-  this.toolBar['3_but_u']  = new edButton( '3_but_u', 'underline', '<span style="text-decoration:underline">', '</span>', 'ed_format_underline.gif', 1 );
-  this.toolBar['4_but_strikethrough'] = new edButton( '4_but_strikethrough', 'strikethrough', '<span style="text-decoration: line-through;">', '</span>', 'ed_format_strike.gif', 1 );
-  this.toolBar['but_sep1'] =  new edButtonSeparator();
-  this.toolBar['but_align_left'] = new edButton( 'but_align_left', 'align center', '<div style="text-align: left;">', '</div>', 'ed_align_left.gif' );
-  this.toolBar['but_align_center'] = new edButton( 'but_align_center', 'align center', '<div style="text-align: center;">', '</div>', 'ed_align_center.gif' );
-  this.toolBar['but_align_right'] = new edButton( 'but_align_right', 'align center', '<div style="text-align: right;">', '</div>', 'ed_align_right.gif' );
-  this.toolBar['but_align_justify'] = new edButton( 'but_align_justify', 'align center', '<div style="text-align: justify;">', '</div>', 'ed_align_justify.gif' );
-  this.toolBar['but_sep2'] =  new edButtonSeparator();
-  this.toolBar['but_ordered_list'] = new edButton( 'but_ordered_list', 'ordered list', '<ol><li></li></ol>', '', 'ed_list_num.gif', -1 );
-  this.toolBar['but_unordered_list'] = new edButton( 'but_unordered_list', 'unordered list', '<ul><li></li></ul>', '', 'ed_list_bullet.gif', -1 );  
-  this.toolBar['5_but_a']  = new edButtonLink( '5_but_a', 'anchor', 'ed_link.gif' );
-  this.toolBar['6_but_img']= new edButtonImage( '6_but_img', 'image', 'ed_image.gif' );
+	this.toolBar = Array();
+	options = new Array();
+	options['8'] = '8 pt';
+	options['10'] = '10 pt';
+	options['12'] = '12 pt';
+	options['14'] = '14 pt';
+	options['18'] = '18 pt';
+	options['24'] = '24 pt';  
+	options['36'] = '36 pt';
+	this.toolBar['list_font_size'] = new edFontSizeList( 'list_font_size', options );
+	this.toolBar['1_but_b']  = new edButton( '1_but_b', 'bold', '<strong>', '</strong>', 'ed_format_bold.gif', 1 );
+	this.toolBar['2_but_i']  = new edButton( '2_but_i', 'italics', '<em>', '</em>', 'ed_format_italic.gif', 1 );
+	this.toolBar['3_but_u']  = new edButton( '3_but_u', 'underline', '<span style="text-decoration:underline">', '</span>', 'ed_format_underline.gif', 1 );
+	this.toolBar['4_but_strikethrough'] = new edButton( '4_but_strikethrough', 'strikethrough', '<span style="text-decoration: line-through;">', '</span>', 'ed_format_strike.gif', 1 );
+	this.toolBar['but_sep1'] =  new edButtonSeparator();
+	this.toolBar['but_align_left'] = new edButton( 'but_align_left', 'align center', '<div style="text-align: left;">', '</div>', 'ed_align_left.gif' );
+	this.toolBar['but_align_center'] = new edButton( 'but_align_center', 'align center', '<div style="text-align: center;">', '</div>', 'ed_align_center.gif' );
+	this.toolBar['but_align_right'] = new edButton( 'but_align_right', 'align center', '<div style="text-align: right;">', '</div>', 'ed_align_right.gif' );
+	this.toolBar['but_align_justify'] = new edButton( 'but_align_justify', 'align center', '<div style="text-align: justify;">', '</div>', 'ed_align_justify.gif' );
+	this.toolBar['but_sep2'] =  new edButtonSeparator();
+	this.toolBar['but_ordered_list'] = new edButton( 'but_ordered_list', 'ordered list', '<ol><li></li></ol>', '', 'ed_list_num.gif', -1 );
+	this.toolBar['but_unordered_list'] = new edButton( 'but_unordered_list', 'unordered list', '<ul><li></li></ul>', '', 'ed_list_bullet.gif', -1 );  
+	this.toolBar['5_but_a']  = new edButtonLink( '5_but_a', 'anchor', 'ed_link.gif' );
+	this.toolBar['6_but_img']= new edButtonImage( '6_but_img', 'image', 'ed_image.gif' );
 
-  this.toolBar['but_sep3'] =  new edButtonSeparator();
-  this.toolBar['but_smarty_assign'] = new edButton( 'but_smarty_assign', 'assign', '{assign var="" value=""}', '', 'smarty_assign.gif', -1 );
-  this.toolBar['but_smarty_capture'] = new edButton( 'but_smarty_capture', 'capture', '{capture name=""}', '{/capture}', 'smarty_capture.gif' );
-  this.toolBar['but_smarty_comment'] = new edButton( 'but_smarty_comment', 'comment', '{* *}', '', 'smarty_comment.gif', -1 );
-  this.toolBar['but_smarty_config_load'] = new edButton( 'but_smarty_config_load', 'config_load', '{config_load file="" section="" scope=""}', '', 'smarty_config_load.gif', -1 );
-  this.toolBar['but_smarty_delimiter'] = new edButton( 'but_smarty_delimiter', 'delimiter', '{ }', '', 'smarty_delimiter.gif', -1 );  
-  this.toolBar['but_smarty_foreach'] = new edButton( 'but_smarty_foreach', 'foreach', '{foreach from= item= name= key=}', '{/foreach}', 'smarty_foreach.gif' );  
-  this.toolBar['but_smarty_if'] = new edButton( 'but_smarty_if', 'if', '{if }', '{/if}', 'smarty_if.gif' );  
-  this.toolBar['but_smarty_include'] = new edButton( 'but_smarty_include', 'include', '{include file=""}', '', 'smarty_include.gif', -1 );  
-  // this.toolBar['but_smarty_includephp'] = new edButton( 'but_smarty_includephp', 'includephp', '{include_php file=""}', '', 'smarty_includephp.gif', -1 );  
-  this.toolBar['but_smarty_insert'] = new edButton( 'but_smarty_insert', 'insert', '{insert name=""}', '', 'smarty_insert.gif', -1 );  
-  this.toolBar['but_smarty_literal'] = new edButton( 'but_smarty_literal', 'literal', '{literal}', '{/literal}', 'smarty_literal.gif' );  
-  // this.toolBar['but_smarty_php'] = new edButton( 'but_smarty_php', 'php', '{php}', '{/php}', 'smarty_php.gif' );  
-  this.toolBar['but_smarty_section'] = new edButton( 'but_smarty_section', 'section', '{section name="" loop=}', '{/section}', 'smarty_section.gif' );  
-  this.toolBar['but_smarty_strip'] = new edButton( 'but_smarty_strip', 'strip', '{strip}', '{/strip}', 'smarty_strip.gif' );  
-
-  
+	this.toolBar['but_sep3'] =  new edButtonSeparator();
+	this.toolBar['but_smarty_assign'] = new edButton( 'but_smarty_assign', 'assign', '{assign var="" value=""}', '', 'smarty_assign.gif', -1 );
+	this.toolBar['but_smarty_capture'] = new edButton( 'but_smarty_capture', 'capture', '{capture name=""}', '{/capture}', 'smarty_capture.gif' );
+	this.toolBar['but_smarty_comment'] = new edButton( 'but_smarty_comment', 'comment', '{* *}', '', 'smarty_comment.gif', -1 );
+	this.toolBar['but_smarty_config_load'] = new edButton( 'but_smarty_config_load', 'config_load', '{config_load file="" section="" scope=""}', '', 'smarty_config_load.gif', -1 );
+	this.toolBar['but_smarty_delimiter'] = new edButton( 'but_smarty_delimiter', 'delimiter', '{ }', '', 'smarty_delimiter.gif', -1 );  
+	this.toolBar['but_smarty_foreach'] = new edButton( 'but_smarty_foreach', 'foreach', '{foreach from= item= name= key=}', '{/foreach}', 'smarty_foreach.gif' );  
+	this.toolBar['but_smarty_if'] = new edButton( 'but_smarty_if', 'if', '{if }', '{/if}', 'smarty_if.gif' );  
+	this.toolBar['but_smarty_include'] = new edButton( 'but_smarty_include', 'include', '{include file=""}', '', 'smarty_include.gif', -1 );  
+// toolBar['but_smarty_includephp'] = new edButton( 'but_smarty_includephp', 'includephp', '{include_php file=""}', '', 'smarty_includephp.gif', -1 );  
+	this.toolBar['but_smarty_insert'] = new edButton( 'but_smarty_insert', 'insert', '{insert name=""}', '', 'smarty_insert.gif', -1 );  
+	this.toolBar['but_smarty_literal'] = new edButton( 'but_smarty_literal', 'literal', '{literal}', '{/literal}', 'smarty_literal.gif' );  
+// toolBar['but_smarty_php'] = new edButton( 'but_smarty_php', 'php', '{php}', '{/php}', 'smarty_php.gif' );  
+	this.toolBar['but_smarty_section'] = new edButton( 'but_smarty_section', 'section', '{section name="" loop=}', '{/section}', 'smarty_section.gif' );  
+	this.toolBar['but_smarty_strip'] = new edButton( 'but_smarty_strip', 'strip', '{strip}', '{/strip}', 'smarty_strip.gif' );  
+	
   /**
    * returns whether our browser supports the features that we are going
    * to use or not
@@ -571,11 +555,12 @@
 		
 	  markup = '';
 	  
-	  this.toolBar.sort();
 	  document.write('<div class="textEditorToolbar" id="textEditorToolbar">');
 	  for( var buttonId in this.toolBar ) {
-		  button = this.toolBar[buttonId];
-		  markup += button.show(this.txtId, this.objName);
+          if ( prototypeCompatibabilityCheck( buttonId ) )
+	          continue;
+	      button = this.toolBar[buttonId];
+	      markup += button.show(this.txtId, this.objName);
 	  }
 	  document.write(markup);
 	  document.write('</div>');
@@ -745,4 +730,50 @@
 
 	return selection;
   }
+}
+
+// Add this function to Prototype Lib Compatibability Check
+function prototypeCompatibabilityCheck( str )
+{
+    if ( str == '_each' ||
+	  	 str == '_reverse' ||
+         str == 'all' ||
+         str == 'any' ||
+         str == 'clear' ||
+         str == 'collect' ||
+         str == 'compact' ||
+         str == 'detect' ||
+         str == 'each' ||
+         str == 'entries' ||
+         str == 'extend' ||
+         str == 'find' ||
+         str == 'findAll' ||
+         str == 'first' ||
+         str == 'flatten' ||
+         str == 'grep' ||
+         str == 'include' ||
+         str == 'indices' ||
+         str == 'indexOf' ||
+         str == 'inject' ||
+         str == 'inspect' ||
+         str == 'invoke' ||
+         str == 'last' ||
+         str == 'map' ||
+         str == 'max' ||
+         str == 'member' ||
+         str == 'min' ||
+         str == 'partition' ||
+         str == 'pluck' ||
+         str == 'reject' ||
+         str == 'remove' ||
+         str == 'removeItem' ||
+         str == 'select' ||
+         str == 'shift' ||
+         str == 'sortBy' ||
+         str == 'toArray' ||
+         str == 'without' ||
+         str == 'zip')
+        return true;
+    else
+    	return false;
 }
\ No newline at end of file



More information about the pLog-svn mailing list