web/drupal/modules/fckeditor/fckeditor/fckeditor.lasso
branchdrupal
changeset 74 0ff3ba646492
equal deleted inserted replaced
73:fcf75e232c5b 74:0ff3ba646492
       
     1 [//lasso
       
     2 /*
       
     3  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
       
     4  * Copyright (C) 2003-2009 Frederico Caldeira Knabben
       
     5  *
       
     6  * == BEGIN LICENSE ==
       
     7  *
       
     8  * Licensed under the terms of any of the following licenses at your
       
     9  * choice:
       
    10  *
       
    11  *  - GNU General Public License Version 2 or later (the "GPL")
       
    12  *    http://www.gnu.org/licenses/gpl.html
       
    13  *
       
    14  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
       
    15  *    http://www.gnu.org/licenses/lgpl.html
       
    16  *
       
    17  *  - Mozilla Public License Version 1.1 or later (the "MPL")
       
    18  *    http://www.mozilla.org/MPL/MPL-1.1.html
       
    19  *
       
    20  * == END LICENSE ==
       
    21  *
       
    22  * This is the integration file for Lasso.
       
    23  *
       
    24  * It defines the FCKeditor class ("custom type" in Lasso terms) that can
       
    25  * be used to create editor instances in Lasso pages on server side.
       
    26  */
       
    27 
       
    28 	define_type(
       
    29 		'editor',
       
    30 		-namespace='fck_',
       
    31 		-description='Creates an instance of FCKEditor.'
       
    32 	);
       
    33 		local(
       
    34 			'instancename'	=	'FCKEditor1',
       
    35 			'width'			=	'100%',
       
    36 			'height'		=	'200',
       
    37 			'toolbarset'	=	'Default',
       
    38 			'initialvalue'	=	string,
       
    39 			'basepath'		=	'/fckeditor/',
       
    40 			'config'		=	array,
       
    41 			'checkbrowser'	=	true,
       
    42 			'displayerrors'	=	false
       
    43 		);
       
    44 
       
    45 		define_tag(
       
    46 			'onCreate',
       
    47 			-required='instancename', -type='string',
       
    48 			-optional='width', -type='string',
       
    49 			-optional='height', -type='string',
       
    50 			-optional='toolbarset', -type='string',
       
    51 			-optional='initialvalue', -type='string',
       
    52 			-optional='basepath', -type='string',
       
    53 			-optional='config', -type='array'
       
    54 		);
       
    55 			self->instancename = #instancename;
       
    56 			local_defined('width') ? self->width = #width;
       
    57 			local_defined('height') ? self->height = #height;
       
    58 			local_defined('toolbarset') ? self->toolbarset = #toolbarset;
       
    59 			local_defined('initialvalue') ? self->initialvalue = #initialvalue;
       
    60 			local_defined('basepath') ? self->basepath = #basepath;
       
    61 			local_defined('config') ? self->config = #config;
       
    62 		/define_tag;
       
    63 
       
    64 		define_tag('create');
       
    65 			if(self->isCompatibleBrowser);
       
    66 				local('out' = '
       
    67 						<input type="hidden" id="' + self->instancename + '" name="' + self->instancename + '" value="' + encode_html(self->initialvalue) + '" style="display:none" />
       
    68 						' + self->parseConfig + '
       
    69 						<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>
       
    70 				');
       
    71 			else;
       
    72 				local('out' = '
       
    73 						<textarea name="' + self->instancename + '" rows="4" cols="40" style="width: ' + self->width + '; height: ' + self->height + '">' + encode_html(self->initialvalue) + '</textarea>
       
    74 				');
       
    75 			/if;
       
    76 			return(@#out);
       
    77 		/define_tag;
       
    78 
       
    79 		define_tag('isCompatibleBrowser');
       
    80 			local('result' = false);
       
    81 			if (client_browser->Find("MSIE") && !client_browser->Find("mac") && !client_browser->Find("Opera"));
       
    82 				#result = client_browser->Substring(client_browser->Find("MSIE")+5,3)>=5.5;
       
    83 			/if;
       
    84 			if (client_browser->Find("Gecko/"));
       
    85 				#result = client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210;
       
    86 			/if;
       
    87 			if (client_browser->Find("Opera/"));
       
    88 				#result = client_browser->Substring(client_browser->Find("Opera/")+6,4)>=9.5;
       
    89 			/if;
       
    90 			if (client_browser->Find("AppleWebKit/"));
       
    91 				#result = client_browser->Substring(client_browser->Find("AppleWebKit/")+12,3)>=522;
       
    92 			/if;
       
    93 			return(#result);
       
    94 		/define_tag;
       
    95 
       
    96 		define_tag('parseConfig');
       
    97 			if(self->config->size);
       
    98 				local('out' = '<input type="hidden" id="' + self->instancename + '___Config" value="');
       
    99 				iterate(self->config, local('this'));
       
   100 					loop_count > 1 ? #out += '&amp;';
       
   101 					#out += encode_html(#this->first) + '=' + encode_html(#this->second);
       
   102 				/iterate;
       
   103 				#out += '" style="display:none" />\n';
       
   104 				return(@#out);
       
   105 			/if;
       
   106 		/define_tag;
       
   107 	/define_type;
       
   108 ]