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 | ]
|
---|