fckeditor.lasso
108 lines
| 3.9 KiB
| text/x-lasso
|
LassoLexer
|
r0 | [//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 += '&'; | ||||
#out += encode_html(#this->first) + '=' + encode_html(#this->second); | ||||
/iterate; | ||||
#out += '" style="display:none" />\n'; | ||||
return(@#out); | ||||
/if; | ||||
/define_tag; | ||||
/define_type; | ||||
] | ||||