htmlgrid 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/LICENCE.txt +515 -0
- data/Manifest.txt +82 -0
- data/README.txt +30 -0
- data/Rakefile +28 -0
- data/ext/htmlgrid/MANIFEST +3 -0
- data/ext/htmlgrid/Makefile +150 -0
- data/ext/htmlgrid/extconf.rb +33 -0
- data/ext/htmlgrid/grid.c +881 -0
- data/ext/htmlgrid/grid.o +0 -0
- data/ext/htmlgrid/htmlgrid.c +30 -0
- data/ext/htmlgrid/htmlgrid.o +0 -0
- data/ext/htmlgrid/htmlgrid.so +0 -0
- data/ext/htmlgrid/include/grid.h +79 -0
- data/ext/htmlgrid/include/htmlgrid.h +33 -0
- data/install.rb +1098 -0
- data/lib/htmlgrid/booleanvalue.rb +41 -0
- data/lib/htmlgrid/button.rb +36 -0
- data/lib/htmlgrid/centeredcomposite.rb +47 -0
- data/lib/htmlgrid/component.rb +232 -0
- data/lib/htmlgrid/composite.rb +350 -0
- data/lib/htmlgrid/datevalue.rb +39 -0
- data/lib/htmlgrid/div.rb +37 -0
- data/lib/htmlgrid/divcomposite.rb +52 -0
- data/lib/htmlgrid/divform.rb +35 -0
- data/lib/htmlgrid/divlist.rb +26 -0
- data/lib/htmlgrid/divtemplate.rb +12 -0
- data/lib/htmlgrid/dojotoolkit.rb +173 -0
- data/lib/htmlgrid/errormessage.rb +70 -0
- data/lib/htmlgrid/form.rb +93 -0
- data/lib/htmlgrid/formlist.rb +42 -0
- data/lib/htmlgrid/grid.rb +286 -0
- data/lib/htmlgrid/image.rb +43 -0
- data/lib/htmlgrid/infomessage.rb +41 -0
- data/lib/htmlgrid/input.rb +59 -0
- data/lib/htmlgrid/inputcheckbox.rb +41 -0
- data/lib/htmlgrid/inputcurrency.rb +36 -0
- data/lib/htmlgrid/inputdate.rb +38 -0
- data/lib/htmlgrid/inputfile.rb +40 -0
- data/lib/htmlgrid/inputradio.rb +37 -0
- data/lib/htmlgrid/inputtext.rb +37 -0
- data/lib/htmlgrid/javascript.rb +22 -0
- data/lib/htmlgrid/label.rb +90 -0
- data/lib/htmlgrid/labeltext.rb +35 -0
- data/lib/htmlgrid/link.rb +54 -0
- data/lib/htmlgrid/list.rb +170 -0
- data/lib/htmlgrid/namedcomponent.rb +52 -0
- data/lib/htmlgrid/pass.rb +38 -0
- data/lib/htmlgrid/passthru.rb +44 -0
- data/lib/htmlgrid/popuplink.rb +66 -0
- data/lib/htmlgrid/reset.rb +36 -0
- data/lib/htmlgrid/richtext.rb +26 -0
- data/lib/htmlgrid/select.rb +53 -0
- data/lib/htmlgrid/span.rb +37 -0
- data/lib/htmlgrid/spancomposite.rb +45 -0
- data/lib/htmlgrid/spanlist.rb +15 -0
- data/lib/htmlgrid/staticinput.rb +40 -0
- data/lib/htmlgrid/submit.rb +36 -0
- data/lib/htmlgrid/template.rb +130 -0
- data/lib/htmlgrid/text.rb +36 -0
- data/lib/htmlgrid/textarea.rb +49 -0
- data/lib/htmlgrid/ulcomposite.rb +49 -0
- data/lib/htmlgrid/ullist.rb +15 -0
- data/lib/htmlgrid/urllink.rb +65 -0
- data/lib/htmlgrid/value.rb +36 -0
- data/test/rebuild.rb +39 -0
- data/test/stub/cgi.rb +44 -0
- data/test/suite.rb +32 -0
- data/test/test_component.rb +138 -0
- data/test/test_composite.rb +201 -0
- data/test/test_datevalue.rb +60 -0
- data/test/test_form.rb +123 -0
- data/test/test_formlist.rb +111 -0
- data/test/test_grid.rb +395 -0
- data/test/test_input.rb +70 -0
- data/test/test_label.rb +116 -0
- data/test/test_list.rb +146 -0
- data/test/test_select.rb +78 -0
- data/test/test_template.rb +97 -0
- data/test/test_text.rb +63 -0
- data/usage-en.txt +112 -0
- data/widget/Tooltip.js +85 -0
- metadata +180 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# Label -- htmlgrid -- 26.11.2002 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'delegate'
|
28
|
+
require 'htmlgrid/namedcomponent'
|
29
|
+
|
30
|
+
module HtmlGrid
|
31
|
+
class SimpleLabel < NamedComponent
|
32
|
+
def init
|
33
|
+
super
|
34
|
+
@value = @lookandfeel.lookup(@name)
|
35
|
+
state = @session.state
|
36
|
+
if(state.respond_to?(:mandatory?) && state.mandatory?(@name))
|
37
|
+
@value += "*"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
def to_html(context)
|
41
|
+
context.label(@attributes) { @value }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
class Label < SimpleDelegator
|
45
|
+
include Enumerable
|
46
|
+
def initialize(component, session, label_key=nil)
|
47
|
+
@component = component
|
48
|
+
@attributes = {}
|
49
|
+
@session = session
|
50
|
+
@lookandfeel = session.lookandfeel
|
51
|
+
@label_key = label_key
|
52
|
+
if(@component.respond_to? :name)
|
53
|
+
@attributes['for'] = @component.name.to_s
|
54
|
+
@label_key ||= @component.name
|
55
|
+
end
|
56
|
+
if(@component.respond_to?(:data_origin) \
|
57
|
+
&& (origin = @component.data_origin))
|
58
|
+
@attributes.store('title', origin.to_s)
|
59
|
+
end
|
60
|
+
if(@session.error(@label_key) \
|
61
|
+
|| (@component.respond_to?(:name) && @session.error(@component.name)))
|
62
|
+
@attributes["class"] = "error"
|
63
|
+
end
|
64
|
+
if(@component.respond_to?(:attributes) \
|
65
|
+
&& (id = @component.attributes['id']))
|
66
|
+
@attributes.store('id', "label_#{id}")
|
67
|
+
end
|
68
|
+
super(component)
|
69
|
+
end
|
70
|
+
def each
|
71
|
+
yield self if(@component.respond_to?(:label?) && @component.label?)
|
72
|
+
yield @component
|
73
|
+
end
|
74
|
+
def to_html(context)
|
75
|
+
key = @label_key
|
76
|
+
label = @lookandfeel.lookup(key)
|
77
|
+
if(!label && @component.respond_to?(:name))
|
78
|
+
key = @component.name
|
79
|
+
label = @lookandfeel.lookup(key)
|
80
|
+
end
|
81
|
+
state = @session.state
|
82
|
+
if(label && state.respond_to?(:mandatory?) && state.mandatory?(key))
|
83
|
+
label += "*"
|
84
|
+
end
|
85
|
+
if(label)
|
86
|
+
context.label(@attributes) { label }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com
|
24
|
+
#
|
25
|
+
# LabelText -- oddb -- 22.07.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/text'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class LabelText < Text
|
31
|
+
def to_html(context)
|
32
|
+
context.label { super }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# Link -- htmlgrid -- 19.11.2002 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/namedcomponent'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class Link < NamedComponent
|
31
|
+
def init
|
32
|
+
super
|
33
|
+
@value = @lookandfeel.lookup(@name)
|
34
|
+
end
|
35
|
+
def href
|
36
|
+
@attributes['href']
|
37
|
+
end
|
38
|
+
def href=(url)
|
39
|
+
@attributes['href'] = url
|
40
|
+
end
|
41
|
+
def target=(trg)
|
42
|
+
@attributes['target'] = trg
|
43
|
+
end
|
44
|
+
def to_html(context)
|
45
|
+
context.a(@attributes) {
|
46
|
+
if(@value.respond_to?(:to_html))
|
47
|
+
@value.to_html(context)
|
48
|
+
else
|
49
|
+
super
|
50
|
+
end
|
51
|
+
} << dynamic_html(context)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,170 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# List -- htmlgrid -- 03.03.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/composite'
|
28
|
+
require 'htmlgrid/link'
|
29
|
+
require 'htmlgrid/value'
|
30
|
+
|
31
|
+
module HtmlGrid
|
32
|
+
class List < Composite
|
33
|
+
BACKGROUND_ROW = nil
|
34
|
+
BACKGROUND_SUFFIX = '-bg'
|
35
|
+
CSS_HEAD_MAP = {}
|
36
|
+
DEFAULT_CLASS = Value
|
37
|
+
DEFAULT_HEAD_CLASS = nil
|
38
|
+
EMPTY_LIST = false
|
39
|
+
EMPTY_LIST_KEY = :empty_list
|
40
|
+
OFFSET_STEP = [0,1]
|
41
|
+
OMIT_HEADER = false
|
42
|
+
OMIT_HEAD_TAG = false
|
43
|
+
SORT_DEFAULT = :to_s
|
44
|
+
SORT_HEADER = true
|
45
|
+
SORT_REVERSE = false
|
46
|
+
STRIPED_BG = true
|
47
|
+
def compose(model=@model, offset=[0,0])
|
48
|
+
unless (self::class::OMIT_HEADER)
|
49
|
+
offset = compose_header(offset)
|
50
|
+
end
|
51
|
+
if(model.empty?)
|
52
|
+
offset = compose_empty_list(offset) unless (self::class::EMPTY_LIST)
|
53
|
+
else
|
54
|
+
offset = compose_list(model, offset)
|
55
|
+
end
|
56
|
+
compose_footer(offset)
|
57
|
+
end
|
58
|
+
def compose_footer(offset=[0,0])
|
59
|
+
end
|
60
|
+
def compose_empty_list(offset, klass='list')
|
61
|
+
fill_row(offset, self::class::EMPTY_LIST_KEY, klass)
|
62
|
+
end
|
63
|
+
def compose_list(model=@model, offset=[0,0])
|
64
|
+
bg_flag = false
|
65
|
+
model.each_with_index { |mdl, idx|
|
66
|
+
@list_index = idx
|
67
|
+
_compose(mdl, offset, bg_flag)
|
68
|
+
#compose_components(mdl, offset)
|
69
|
+
#compose_css(offset, resolve_suffix(mdl, bg_flag))
|
70
|
+
#compose_colspan(offset)
|
71
|
+
if(rcss = row_css(mdl, bg_flag))
|
72
|
+
@grid.set_row_attributes({'class' => rcss}, offset.at(1),
|
73
|
+
self::class::OFFSET_STEP.at(1))
|
74
|
+
end
|
75
|
+
offset = resolve_offset(offset, self::class::OFFSET_STEP)
|
76
|
+
bg_flag = !bg_flag if self::class::STRIPED_BG
|
77
|
+
}
|
78
|
+
offset
|
79
|
+
end
|
80
|
+
def compose_header(offset=[0,0])
|
81
|
+
step = if(defined?(self::class::HEAD_OFFSET_STEP))
|
82
|
+
self::class::HEAD_OFFSET_STEP
|
83
|
+
else
|
84
|
+
self::class::OFFSET_STEP
|
85
|
+
end
|
86
|
+
ystep = step.at(1)
|
87
|
+
components.each { |matrix, component|
|
88
|
+
key = lookandfeel_key(component)
|
89
|
+
header_key = 'th_' << key.to_s
|
90
|
+
if(txt = @lookandfeel.lookup(header_key))
|
91
|
+
if(self::class::SORT_HEADER)
|
92
|
+
@grid.add(sort_link(header_key, matrix, component), *matrix)
|
93
|
+
else
|
94
|
+
@grid.add(txt, *matrix)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
if((cls = css_head_map[matrix]) \
|
98
|
+
|| (cls = self::class::DEFAULT_HEAD_CLASS))
|
99
|
+
@grid.add_attribute('class', cls, *matrix)
|
100
|
+
#link.attributes['class'] = cls
|
101
|
+
end
|
102
|
+
unless(self::class::OMIT_HEAD_TAG || matrix.at(1) >= ystep)
|
103
|
+
@grid.add_tag('TH', *matrix)
|
104
|
+
end
|
105
|
+
if(title = @lookandfeel.lookup(header_key + '_title'))
|
106
|
+
@grid.add_attribute('title', title, *matrix)
|
107
|
+
end
|
108
|
+
}
|
109
|
+
#span = full_colspan || 1
|
110
|
+
resolve_offset(offset, step)
|
111
|
+
end
|
112
|
+
def css_head_map
|
113
|
+
@css_head_map ||= self::class::CSS_HEAD_MAP.dup
|
114
|
+
end
|
115
|
+
def fill_row(offset, key, klass)
|
116
|
+
@grid.add(@lookandfeel.lookup(key), *offset)
|
117
|
+
@grid.add_attribute('class', klass, *offset)
|
118
|
+
@grid.set_colspan(*offset)
|
119
|
+
resolve_offset(offset, self::class::OFFSET_STEP)
|
120
|
+
end
|
121
|
+
private
|
122
|
+
def init
|
123
|
+
@model ||= []
|
124
|
+
@index = 0
|
125
|
+
sort_model()
|
126
|
+
if(self::class::SORT_REVERSE && (@session.event != :sort))
|
127
|
+
@model = @model.reverse
|
128
|
+
end
|
129
|
+
super
|
130
|
+
end
|
131
|
+
def row_css(model, bg_flag)
|
132
|
+
self::class::BACKGROUND_ROW if(bg_flag)
|
133
|
+
end
|
134
|
+
def sort_link(header_key, matrix, component)
|
135
|
+
link = Link.new(header_key, @model, @session, self)
|
136
|
+
args = {
|
137
|
+
'sortvalue' => component.to_s,
|
138
|
+
}
|
139
|
+
link.attributes['href'] = @lookandfeel.event_url(:sort, args)
|
140
|
+
if((cls = css_head_map[matrix]) \
|
141
|
+
|| (cls = self::class::DEFAULT_HEAD_CLASS))
|
142
|
+
link.attributes['class'] = cls
|
143
|
+
end
|
144
|
+
link
|
145
|
+
end
|
146
|
+
def sort_model
|
147
|
+
block = self::class::SORT_DEFAULT
|
148
|
+
if(block && (@session.event != :sort))
|
149
|
+
begin
|
150
|
+
if(block == :self)
|
151
|
+
@model = @model.sort
|
152
|
+
else
|
153
|
+
unless(block.is_a?(Proc))
|
154
|
+
block = Proc.new { |item|
|
155
|
+
begin
|
156
|
+
item.send(self::class::SORT_DEFAULT)
|
157
|
+
rescue RuntimeError => e
|
158
|
+
item.to_s
|
159
|
+
end
|
160
|
+
}
|
161
|
+
end
|
162
|
+
@model = @model.sort_by(&block)
|
163
|
+
end
|
164
|
+
rescue StandardError => e
|
165
|
+
puts "could not sort: #{e.message}"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# NamedComponent -- htmlgrid -- 19.11.2002 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/component'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class NamedComponent < Component
|
31
|
+
attr_reader :name
|
32
|
+
def initialize(name, model, session, container=nil)
|
33
|
+
@name = name
|
34
|
+
super(model, session, container)
|
35
|
+
@attributes['name'] = @name.to_s
|
36
|
+
end
|
37
|
+
def init
|
38
|
+
super
|
39
|
+
@attributes.update(@lookandfeel.attributes(@name)) if @lookandfeel
|
40
|
+
end
|
41
|
+
def data_origin
|
42
|
+
if(@model.respond_to?(:data_origin))
|
43
|
+
@model.data_origin(@name)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
def error?
|
47
|
+
if(@model.respond_to?(:error?))
|
48
|
+
@model.error?(@name)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# Pass -- htmlgrid -- 03.03.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/input'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class Pass < Input
|
31
|
+
LABEL = true
|
32
|
+
def init
|
33
|
+
super
|
34
|
+
@attributes['type'] = 'password'
|
35
|
+
@attributes.delete('value')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# PassThru -- HtmlGrid -- 29.10.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
module HtmlGrid
|
28
|
+
class PassThru
|
29
|
+
def initialize(model, session, container=nil)
|
30
|
+
@model = model
|
31
|
+
@session = session
|
32
|
+
@lookandfeel = @session.lookandfeel
|
33
|
+
init()
|
34
|
+
end
|
35
|
+
def init
|
36
|
+
end
|
37
|
+
def http_headers
|
38
|
+
{}
|
39
|
+
end
|
40
|
+
def to_html(context)
|
41
|
+
''
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# PopupLink -- htmlgrid -- 20.03.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/link'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class PopupLink < Link
|
31
|
+
attr_writer :width, :height
|
32
|
+
attr_writer :locationbar, :scrollbars, :resizable, :toolbar, :menubar
|
33
|
+
def init
|
34
|
+
super
|
35
|
+
@scrollbars = true
|
36
|
+
@resizable = true
|
37
|
+
@toolbar = true
|
38
|
+
@menubar = false
|
39
|
+
@locationbar = false
|
40
|
+
@width = 750
|
41
|
+
@height = 460
|
42
|
+
end
|
43
|
+
@@name_ptrn = /[^a-z]+/i
|
44
|
+
def to_html(context)
|
45
|
+
props = {
|
46
|
+
'scrollbars' => yesorno(@scrollbars),
|
47
|
+
'resizable' => yesorno(@resizable),
|
48
|
+
'toolbar' => yesorno(@toolbar),
|
49
|
+
'menubar' => yesorno(@menubar),
|
50
|
+
'locationbar' => yesorno(@locationbar),
|
51
|
+
'width' => @width,
|
52
|
+
'height' => @height,
|
53
|
+
}.collect { |key, val|
|
54
|
+
[key,val].join('=')
|
55
|
+
}.join(',')
|
56
|
+
name = @lookandfeel.lookup(@name).to_s.gsub(@@name_ptrn, '')
|
57
|
+
script = "window.open('#{href}', '#{name}', '#{props}').focus(); return false"
|
58
|
+
@attributes.store('onClick', script)
|
59
|
+
super
|
60
|
+
end
|
61
|
+
private
|
62
|
+
def yesorno(value)
|
63
|
+
value ? 'yes' : 'no'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# Reset -- htmlgrid -- 14.01.2003 -- benfay@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/staticinput'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class Reset < StaticInput
|
31
|
+
def init
|
32
|
+
super
|
33
|
+
@attributes['type'] = 'reset'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# Richtext -- htmlgrid -- 29.06.2004 -- mhuggler@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/component'
|
6
|
+
|
7
|
+
module HtmlGrid
|
8
|
+
class RichText < Component
|
9
|
+
def init
|
10
|
+
super
|
11
|
+
@elements = []
|
12
|
+
end
|
13
|
+
def <<(element)
|
14
|
+
@elements.push(element)
|
15
|
+
end
|
16
|
+
def to_html(context)
|
17
|
+
@elements.collect { |element|
|
18
|
+
if(element.respond_to?(:to_html))
|
19
|
+
element.to_html(context)
|
20
|
+
else
|
21
|
+
element.to_s
|
22
|
+
end
|
23
|
+
}.join(' ')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
|
+
# Copyright (C) 2003 ywesee - intellectual capital connected
|
6
|
+
# Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
|
7
|
+
#
|
8
|
+
# This library is free software; you can redistribute it and/or
|
9
|
+
# modify it under the terms of the GNU Lesser General Public
|
10
|
+
# License as published by the Free Software Foundation; either
|
11
|
+
# version 2.1 of the License, or (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This library is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
+
# Lesser General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU Lesser General Public
|
19
|
+
# License along with this library; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
21
|
+
#
|
22
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
|
+
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
|
+
#
|
25
|
+
# Select -- htmlgrid -- 10.03.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/namedcomponent'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class AbstractSelect < NamedComponent
|
31
|
+
LABEL = true
|
32
|
+
attr_accessor :selected, :valid_values
|
33
|
+
def to_html(context)
|
34
|
+
context.select(@attributes) {
|
35
|
+
sel = selection(context)
|
36
|
+
sel.is_a?(Array) ? sel.join : sel.to_s
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
class Select < AbstractSelect
|
41
|
+
private
|
42
|
+
def selection(context)
|
43
|
+
@selected ||= (@model.send(@name).to_s if(@model.respond_to?(@name)))
|
44
|
+
@valid_values ||= @session.valid_values(@name)
|
45
|
+
@valid_values.collect { |value|
|
46
|
+
val = value.to_s
|
47
|
+
attributes = { "value" => val }
|
48
|
+
attributes.store("selected", true) if(val == selected)
|
49
|
+
context.option(attributes) { @lookandfeel.lookup(value) { val } }
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|