|
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 += '&'; |
|
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 ] |