htmlgrid 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/htmlgrid/booleanvalue.rb +14 -14
- data/lib/htmlgrid/button.rb +9 -9
- data/lib/htmlgrid/centeredcomposite.rb +21 -20
- data/lib/htmlgrid/component.rb +214 -199
- data/lib/htmlgrid/composite.rb +332 -301
- data/lib/htmlgrid/datevalue.rb +12 -12
- data/lib/htmlgrid/div.rb +9 -9
- data/lib/htmlgrid/divcomposite.rb +44 -43
- data/lib/htmlgrid/divform.rb +8 -8
- data/lib/htmlgrid/divlist.rb +17 -19
- data/lib/htmlgrid/divtemplate.rb +6 -6
- data/lib/htmlgrid/dojotoolkit.rb +54 -48
- data/lib/htmlgrid/errormessage.rb +47 -43
- data/lib/htmlgrid/form.rb +70 -62
- data/lib/htmlgrid/formlist.rb +14 -14
- data/lib/htmlgrid/grid.rb +111 -67
- data/lib/htmlgrid/image.rb +17 -16
- data/lib/htmlgrid/infomessage.rb +15 -14
- data/lib/htmlgrid/input.rb +34 -32
- data/lib/htmlgrid/inputcheckbox.rb +13 -13
- data/lib/htmlgrid/inputcurrency.rb +9 -9
- data/lib/htmlgrid/inputdate.rb +11 -11
- data/lib/htmlgrid/inputfile.rb +13 -12
- data/lib/htmlgrid/inputradio.rb +9 -9
- data/lib/htmlgrid/inputtext.rb +10 -10
- data/lib/htmlgrid/javascript.rb +17 -16
- data/lib/htmlgrid/label.rb +53 -49
- data/lib/htmlgrid/labeltext.rb +8 -8
- data/lib/htmlgrid/link.rb +31 -27
- data/lib/htmlgrid/list.rb +121 -110
- data/lib/htmlgrid/namedcomponent.rb +28 -25
- data/lib/htmlgrid/pass.rb +11 -11
- data/lib/htmlgrid/passthru.rb +20 -17
- data/lib/htmlgrid/popuplink.rb +41 -39
- data/lib/htmlgrid/reset.rb +8 -8
- data/lib/htmlgrid/richtext.rb +22 -20
- data/lib/htmlgrid/select.rb +28 -26
- data/lib/htmlgrid/span.rb +9 -9
- data/lib/htmlgrid/spancomposite.rb +18 -18
- data/lib/htmlgrid/spanlist.rb +9 -9
- data/lib/htmlgrid/staticinput.rb +14 -13
- data/lib/htmlgrid/submit.rb +9 -9
- data/lib/htmlgrid/template.rb +120 -105
- data/lib/htmlgrid/text.rb +9 -9
- data/lib/htmlgrid/textarea.rb +19 -17
- data/lib/htmlgrid/ulcomposite.rb +22 -22
- data/lib/htmlgrid/ullist.rb +9 -9
- data/lib/htmlgrid/urllink.rb +38 -36
- data/lib/htmlgrid/value.rb +9 -9
- data/lib/htmlgrid/version.rb +2 -2
- data/test/stub/cgi.rb +10 -7
- data/test/suite.rb +3 -3
- data/test/test_add_row.rb +12 -13
- data/test/test_component.rb +121 -100
- data/test/test_composite.rb +85 -46
- data/test/test_datevalue.rb +28 -24
- data/test/test_divlist.rb +126 -0
- data/test/test_dojotoolkit.rb +41 -27
- data/test/test_form.rb +89 -73
- data/test/test_formlist.rb +77 -65
- data/test/test_grid.rb +256 -208
- data/test/test_input.rb +37 -31
- data/test/test_interaction_list.rb +106 -70
- data/test/test_label.rb +91 -77
- data/test/test_list.rb +110 -95
- data/test/test_select.rb +35 -30
- data/test/test_template.rb +63 -55
- data/test/test_text.rb +36 -31
- metadata +17 -2
data/lib/htmlgrid/datevalue.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
#
|
4
4
|
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
5
|
# Copyright (C) 2003 ywesee - intellectual capital connected
|
@@ -22,18 +22,18 @@
|
|
22
22
|
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
23
|
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
24
|
#
|
25
|
-
# DateValue -- htmlgrid -- 10.03.2003 -- hwyss@ywesee.com
|
25
|
+
# DateValue -- htmlgrid -- 10.03.2003 -- hwyss@ywesee.com
|
26
26
|
|
27
|
-
require
|
27
|
+
require "htmlgrid/namedcomponent"
|
28
28
|
|
29
29
|
module HtmlGrid
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
class DateValue < NamedComponent
|
31
|
+
LABEL = true
|
32
|
+
def to_html(context)
|
33
|
+
date = @model.send(@name)
|
34
|
+
if date.respond_to?(:strftime)
|
35
|
+
date.strftime(@lookandfeel.lookup(:date_format))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
39
|
end
|
data/lib/htmlgrid/div.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
#
|
4
4
|
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
5
|
# Copyright (C) 2003 ywesee - intellectual capital connected
|
@@ -24,14 +24,14 @@
|
|
24
24
|
#
|
25
25
|
# Div -- oddb -- 12.11.2004 -- jlang@ywesee.com, usenguel@ywesee.com
|
26
26
|
|
27
|
-
require
|
27
|
+
require "htmlgrid/component"
|
28
28
|
|
29
29
|
module HtmlGrid
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
30
|
+
class Div < Component
|
31
|
+
def to_html(context)
|
32
|
+
context.div(@attributes) {
|
33
|
+
super << dynamic_html(context)
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
37
|
end
|
@@ -1,52 +1,53 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
# DivComposite -- HtmlGrid -- 19.04.2005 -- hwyss@ywesee.com
|
4
4
|
|
5
|
-
require
|
5
|
+
require "htmlgrid/composite"
|
6
6
|
|
7
7
|
module HtmlGrid
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
8
|
+
class DivComposite < TagComposite
|
9
|
+
def compose(model = @model)
|
10
|
+
ypos = -1
|
11
|
+
xpos = 0
|
12
|
+
div = nil
|
13
|
+
components.sort_by { |matrix, component|
|
14
|
+
[matrix.at(1), matrix.at(0), matrix[2..-1]]
|
15
|
+
}.each { |matrix, component|
|
16
|
+
if (mpos = matrix.at(1).to_i) > ypos
|
17
|
+
xpos = 0
|
18
|
+
ypos = mpos
|
19
|
+
div = []
|
20
|
+
@grid.push(div)
|
21
|
+
css = {}
|
22
|
+
if (klass = css_map[ypos])
|
23
|
+
css.store("class", klass)
|
24
|
+
end
|
25
|
+
if (id = css_id_map[ypos])
|
26
|
+
css.store("id", id)
|
27
|
+
end
|
28
|
+
if (style = css_style_map[ypos])
|
29
|
+
css.store("style", style)
|
30
|
+
end
|
31
|
+
@css_grid.push(css.empty? ? nil : css)
|
32
|
+
end
|
33
|
+
div.push(label(create(component, model), component))
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_html(context)
|
38
|
+
res = ""
|
39
|
+
@grid&.each_with_index { |div, idx|
|
39
40
|
res << context.div(tag_attributes(idx)) {
|
40
|
-
div.flatten.inject(
|
41
|
-
html << if
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
div.flatten.inject("") { |html, item|
|
42
|
+
html << if item.respond_to?(:to_html)
|
43
|
+
item.to_html(context).force_encoding("utf-8")
|
44
|
+
else
|
45
|
+
item.to_s
|
46
|
+
end
|
46
47
|
}
|
47
48
|
}
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
}
|
50
|
+
res
|
51
|
+
end
|
52
|
+
end
|
52
53
|
end
|
data/lib/htmlgrid/divform.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
#
|
4
4
|
# HtmlGrid -- HyperTextMarkupLanguage Framework
|
5
5
|
# Copyright (C) 2003 ywesee - intellectual capital connected
|
@@ -22,14 +22,14 @@
|
|
22
22
|
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
|
23
23
|
# htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
|
24
24
|
#
|
25
|
-
# Form -- htmlgrid -- 23.10.2002 -- hwyss@ywesee.com
|
25
|
+
# Form -- htmlgrid -- 23.10.2002 -- hwyss@ywesee.com
|
26
26
|
|
27
|
-
require
|
28
|
-
require
|
29
|
-
require
|
27
|
+
require "htmlgrid/form"
|
28
|
+
require "htmlgrid/divcomposite"
|
29
|
+
require "htmlgrid/submit"
|
30
30
|
|
31
31
|
module HtmlGrid
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
class DivForm < DivComposite
|
33
|
+
include FormMethods
|
34
|
+
end
|
35
35
|
end
|
data/lib/htmlgrid/divlist.rb
CHANGED
@@ -1,26 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
# HtmlGrid::DivList -- davaz.com -- 20.09.2005 -- mhuggler@ywesee.com
|
4
4
|
|
5
|
-
require
|
5
|
+
require "htmlgrid/divcomposite"
|
6
6
|
|
7
7
|
module HtmlGrid
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
class DivList < HtmlGrid::DivComposite
|
9
|
+
def compose
|
10
|
+
@model&.each_with_index { |item, idx|
|
11
11
|
@list_index = idx
|
12
|
-
|
13
|
-
|
14
|
-
=
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
12
|
+
super(item)
|
13
|
+
}
|
14
|
+
# if(header = self.class.const_get(:HEADER))
|
15
|
+
# @grid.push(create(header, @model, @session))
|
16
|
+
# @css_grid.push(nil)
|
17
|
+
# end
|
18
|
+
# if(footer = self.class.const_get(:FOOTER))
|
19
|
+
# @grid.push(create(footer, @model, @session))
|
20
|
+
# @css_grid.push(nil)
|
21
|
+
# end
|
22
|
+
end
|
23
|
+
end
|
26
24
|
end
|
data/lib/htmlgrid/divtemplate.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
# DivTemplate -- htmlgrid -- 04.05.2005 -- hwyss@ywesee.com
|
4
4
|
|
5
|
-
require
|
6
|
-
require
|
5
|
+
require "htmlgrid/divcomposite"
|
6
|
+
require "htmlgrid/template"
|
7
7
|
|
8
8
|
module HtmlGrid
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
class DivTemplate < DivComposite
|
10
|
+
include TemplateMethods
|
11
|
+
end
|
12
12
|
end
|
data/lib/htmlgrid/dojotoolkit.rb
CHANGED
@@ -1,72 +1,74 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
# HtmlGrid::DojoToolkit -- davaz.com -- 06.04.2012 -- yasaka@ywesee.com
|
4
4
|
# HtmlGrid::DojoToolkit -- davaz.com -- 14.03.2006 -- mhuggler@ywesee.com
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "htmlgrid/component"
|
7
|
+
require "htmlgrid/div"
|
8
8
|
|
9
9
|
module HtmlGrid
|
10
10
|
class Component
|
11
11
|
@@msie_ptrn = /MSIE\s*(\d)/
|
12
12
|
attr_accessor :dojo_tooltip
|
13
13
|
# DOJO_VERSION >= 1.7.0 only (removed old version support)
|
14
|
-
def dojo_tag(widget, args={}, inner_html=
|
14
|
+
def dojo_tag(widget, args = {}, inner_html = "")
|
15
15
|
div = HtmlGrid::Div.new(@model, @session, self)
|
16
|
-
div.set_attribute(
|
16
|
+
div.set_attribute("data-dojo-type", widget)
|
17
17
|
args.each { |key, value|
|
18
18
|
if value.is_a?(Array)
|
19
|
-
value = value.join(
|
19
|
+
value = value.join(",")
|
20
20
|
end
|
21
21
|
div.set_attribute(key, value)
|
22
22
|
}
|
23
23
|
div.value = inner_html
|
24
24
|
div
|
25
25
|
end
|
26
|
+
|
26
27
|
def dojo_title=(value)
|
27
28
|
tooltip = HtmlGrid::Div.new(@model, @session, self)
|
28
29
|
tooltip.value = value
|
29
30
|
self.dojo_tooltip = tooltip
|
30
31
|
end
|
32
|
+
|
31
33
|
def dojo_parse_on_load
|
32
34
|
if @container.respond_to?(:dojo_parse_on_load)
|
33
35
|
@container.dojo_parse_on_load
|
34
36
|
end
|
35
37
|
end
|
36
38
|
unless method_defined?(:dojo_dynamic_html)
|
37
|
-
|
39
|
+
alias_method :dojo_dynamic_html, :dynamic_html
|
38
40
|
def dynamic_html(context)
|
39
|
-
html =
|
41
|
+
html = ""
|
40
42
|
attrs = {
|
41
43
|
# NOTE:
|
42
44
|
# DOJO >= 1.8 has support for type name separated by '/'
|
43
45
|
# but, <= 1.7 must be separated with '.'
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
"data-dojo-type" => "dijit/TooltipDialog",
|
47
|
+
"data-dojo-props" => "connectId:#{css_id}",
|
48
|
+
"id" => "#{css_id}_widget",
|
49
|
+
"style" => "display: none"
|
48
50
|
}
|
49
51
|
unless (match = @@msie_ptrn.match(@session.user_agent)) \
|
50
52
|
&& match[1].to_i < 7
|
51
53
|
attrs.update({
|
52
|
-
|
53
|
-
|
54
|
+
"toggle" => "fade",
|
55
|
+
"toggleDuration" => "500"
|
54
56
|
})
|
55
57
|
end
|
56
58
|
@dojo_tooltip ||= nil
|
57
59
|
if @dojo_tooltip.is_a?(String)
|
58
|
-
if @dojo_tooltip
|
59
|
-
attrs.store(
|
60
|
+
if !/^http/.match?(@dojo_tooltip) # e.g. javascript
|
61
|
+
attrs.store("href", @dojo_tooltip.to_s)
|
60
62
|
else
|
61
|
-
attrs.store(
|
63
|
+
attrs.store("href", @dojo_tooltip)
|
62
64
|
end
|
63
65
|
html << context.div(attrs)
|
64
66
|
elsif @dojo_tooltip.respond_to?(:to_html)
|
65
67
|
@dojo_tooltip.attributes.update(attrs)
|
66
|
-
html << @dojo_tooltip.to_html(context).force_encoding(
|
68
|
+
html << @dojo_tooltip.to_html(context).force_encoding("utf-8")
|
67
69
|
end
|
68
70
|
unless html.empty? || dojo_parse_on_load
|
69
|
-
html << context.script(
|
71
|
+
html << context.script("type" => "text/javascript") {
|
70
72
|
"dojoConfig.searchIds.push('#{css_id}')"
|
71
73
|
}
|
72
74
|
end
|
@@ -75,23 +77,24 @@ module HtmlGrid
|
|
75
77
|
end
|
76
78
|
end
|
77
79
|
end
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
80
|
+
|
81
|
+
module DojoToolkit
|
82
|
+
module DojoTemplate
|
83
|
+
DOJO_DEBUG = false
|
84
|
+
DOJO_BACK_BUTTON = false
|
82
85
|
DOJO_ENCODING = nil
|
83
86
|
DOJO_PARSE_ON_LOAD = true
|
84
|
-
|
85
|
-
|
87
|
+
DOJO_PREFIX = []
|
88
|
+
DOJO_REQUIRE = []
|
86
89
|
def dynamic_html_headers(context)
|
87
90
|
headers = super
|
88
91
|
encoding = self.class::DOJO_ENCODING
|
89
92
|
encoding ||= Encoding.default_external
|
90
93
|
dojo_path = @lookandfeel.resource_global(:dojo_js)
|
91
|
-
dojo_path ||=
|
92
|
-
args = {
|
94
|
+
dojo_path ||= "/resources/dojo/dojo/dojo.js"
|
95
|
+
args = {"type" => "text/javascript"}
|
93
96
|
packages = ""
|
94
|
-
unless
|
97
|
+
unless self.class::DOJO_PREFIX.empty?
|
95
98
|
packages = self.class::DOJO_PREFIX.collect { |prefix, path|
|
96
99
|
"{ name: '#{prefix}', location: '#{path}' }"
|
97
100
|
}.join(",")
|
@@ -108,48 +111,51 @@ module HtmlGrid
|
|
108
111
|
'dojo-debug-messages': #{self.class::DOJO_DEBUG}
|
109
112
|
}",
|
110
113
|
"packages: [ #{packages} ]"
|
111
|
-
].join(
|
112
|
-
args.store(
|
113
|
-
args.store(
|
114
|
+
].join(",")
|
115
|
+
args.store("data-dojo-config", config)
|
116
|
+
args.store("src", dojo_path)
|
114
117
|
headers << context.script(args)
|
115
|
-
args = {
|
118
|
+
args = {"type" => "text/javascript"}
|
116
119
|
headers << context.script(args) {
|
117
120
|
package_paths = self.class::DOJO_REQUIRE.map { |req|
|
118
121
|
"'#{req}'"
|
119
|
-
}.join(
|
122
|
+
}.join(",")
|
120
123
|
package_names = self.class::DOJO_REQUIRE.map { |req|
|
121
|
-
req.split(
|
122
|
-
}.join(
|
124
|
+
req.split("/").last
|
125
|
+
}.join(",")
|
123
126
|
if @dojo_onloads
|
124
|
-
onloads =
|
127
|
+
onloads = ""
|
125
128
|
@dojo_onloads.each { |onload|
|
126
129
|
onloads << "#{onload}\n"
|
127
130
|
}
|
128
131
|
script =
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
132
|
+
"require([#{package_paths}], function(#{package_names}) {" \
|
133
|
+
"ready(function() {" \
|
134
|
+
"#{onloads}" \
|
135
|
+
"});" \
|
136
|
+
"});"
|
134
137
|
else
|
135
138
|
script = "require([#{package_paths}]);"
|
136
139
|
end
|
137
140
|
script
|
138
141
|
}
|
139
142
|
dojo_dir = File.dirname(dojo_path)
|
140
|
-
headers << context.style(:
|
143
|
+
headers << context.style(type: "text/css") {
|
144
|
+
<<-EOS
|
141
145
|
@import "#{File.join(dojo_dir, "/resources/dojo.css")}";
|
142
146
|
@import "#{File.join(dojo_dir, "../dijit/themes/tundra/tundra.css")}";
|
143
|
-
|
147
|
+
EOS
|
144
148
|
}
|
145
149
|
headers
|
146
150
|
end
|
151
|
+
|
147
152
|
def dojo_parse_on_load
|
148
153
|
self.class::DOJO_PARSE_ON_LOAD
|
149
154
|
end
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
+
|
156
|
+
def onload=(script)
|
157
|
+
(@dojo_onloads ||= []).push(script)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
155
161
|
end
|