diff wiki/htdocs/applets/FCKeditor/fckeditor.lasso @ 4005:f5c322ae1c7b

add recent version of fckeditor 2.6.3
author Byeongweon [tasyblue@gmail.com]
date Mon, 11 Aug 2008 13:54:49 +0900
parents 6089ade226fb
children 07862b0663fd 1d37117f8ca6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wiki/htdocs/applets/FCKeditor/fckeditor.lasso	Mon Aug 11 13:54:49 2008 +0900
@@ -0,0 +1,108 @@
+[//lasso
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the integration file for Lasso.
+ *
+ * It defines the FCKeditor class ("custom type" in Lasso terms) that can
+ * be used to create editor instances in Lasso pages on server side.
+ */
+
+	define_type(
+		'editor',
+		-namespace='fck_',
+		-description='Creates an instance of FCKEditor.'
+	);
+		local(
+			'instancename'	=	'FCKEditor1',
+			'width'			=	'100%',
+			'height'		=	'200',
+			'toolbarset'	=	'Default',
+			'initialvalue'	=	string,
+			'basepath'		=	'/fckeditor/',
+			'config'		=	array,
+			'checkbrowser'	=	true,
+			'displayerrors'	=	false
+		);
+
+		define_tag(
+			'onCreate',
+			-required='instancename', -type='string',
+			-optional='width', -type='string',
+			-optional='height', -type='string',
+			-optional='toolbarset', -type='string',
+			-optional='initialvalue', -type='string',
+			-optional='basepath', -type='string',
+			-optional='config', -type='array'
+		);
+			self->instancename = #instancename;
+			local_defined('width') ? self->width = #width;
+			local_defined('height') ? self->height = #height;
+			local_defined('toolbarset') ? self->toolbarset = #toolbarset;
+			local_defined('initialvalue') ? self->initialvalue = #initialvalue;
+			local_defined('basepath') ? self->basepath = #basepath;
+			local_defined('config') ? self->config = #config;
+		/define_tag;
+
+		define_tag('create');
+			if(self->isCompatibleBrowser);
+				local('out' = '
+						<input type="hidden" id="' + self->instancename + '" name="' + self->instancename + '" value="' + encode_html(self->initialvalue) + '" style="display:none" />
+						' + self->parseConfig + '
+						<iframe id="' + self->instancename + '___Frame" src="' + self->basepath + 'editor/fckeditor.html?InstanceName=' + self->instancename + '&Toolbar=' + self->toolbarset + '" width="' + self->width + '" height="' + self->height + '" frameborder="0" scrolling="no"></iframe>
+				');
+			else;
+				local('out' = '
+						<textarea name="' + self->instancename + '" rows="4" cols="40" style="width: ' + self->width + '; height: ' + self->height + '">' + encode_html(self->initialvalue) + '</textarea>
+				');
+			/if;
+			return(@#out);
+		/define_tag;
+
+		define_tag('isCompatibleBrowser');
+			local('result' = false);
+			if (client_browser->Find("MSIE") && !client_browser->Find("mac") && !client_browser->Find("Opera"));
+				#result = client_browser->Substring(client_browser->Find("MSIE")+5,3)>=5.5;
+			/if;
+			if (client_browser->Find("Gecko/"));
+				#result = client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210;
+			/if;
+			if (client_browser->Find("Opera/"));
+				#result = client_browser->Substring(client_browser->Find("Opera/")+6,4)>=9.5;
+			/if;
+			if (client_browser->Find("AppleWebKit/"));
+				#result = client_browser->Substring(client_browser->Find("AppleWebKit/")+12,3)>=522;
+			/if;
+			return(#result);
+		/define_tag;
+
+		define_tag('parseConfig');
+			if(self->config->size);
+				local('out' = '<input type="hidden" id="' + self->instancename + '___Config" value="');
+				iterate(self->config, local('this'));
+					loop_count > 1 ? #out += '&amp;';
+					#out += encode_html(#this->first) + '=' + encode_html(#this->second);
+				/iterate;
+				#out += '" style="display:none" />\n';
+				return(@#out);
+			/if;
+		/define_tag;
+	/define_type;
+]