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,39 @@
|
|
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
|
+
# DateValue -- htmlgrid -- 10.03.2003 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/namedcomponent'
|
28
|
+
|
29
|
+
module HtmlGrid
|
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
|
+
end
|
data/lib/htmlgrid/div.rb
ADDED
@@ -0,0 +1,37 @@
|
|
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
|
+
# Div -- oddb -- 12.11.2004 -- jlang@ywesee.com, usenguel@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/component'
|
28
|
+
|
29
|
+
module HtmlGrid
|
30
|
+
class Div < Component
|
31
|
+
def to_html(context)
|
32
|
+
context.div(@attributes) {
|
33
|
+
super << dynamic_html(context)
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# DivComposite -- HtmlGrid -- 19.04.2005 -- hwyss@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/composite'
|
6
|
+
|
7
|
+
module HtmlGrid
|
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
|
+
def to_html(context)
|
37
|
+
res = ''
|
38
|
+
@grid.each_with_index { |div, idx|
|
39
|
+
res << context.div(tag_attributes(idx)) {
|
40
|
+
div.flatten.inject('') { |html, item|
|
41
|
+
html << if(item.respond_to?(:to_html))
|
42
|
+
item.to_html(context)
|
43
|
+
else
|
44
|
+
item.to_s
|
45
|
+
end
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
res
|
50
|
+
end
|
51
|
+
end
|
52
|
+
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/htmlgrid
|
24
|
+
#
|
25
|
+
# Form -- htmlgrid -- 23.10.2002 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/form'
|
28
|
+
require 'htmlgrid/divcomposite'
|
29
|
+
require 'htmlgrid/submit'
|
30
|
+
|
31
|
+
module HtmlGrid
|
32
|
+
class DivForm < DivComposite
|
33
|
+
include FormMethods
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# HtmlGrid::DivList -- davaz.com -- 20.09.2005 -- mhuggler@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/divcomposite'
|
6
|
+
|
7
|
+
module HtmlGrid
|
8
|
+
class DivList < HtmlGrid::DivComposite
|
9
|
+
def compose
|
10
|
+
@model.each_with_index { |item, idx|
|
11
|
+
@list_index = idx
|
12
|
+
super(item)
|
13
|
+
}
|
14
|
+
=begin
|
15
|
+
if(header = self.class.const_get(:HEADER))
|
16
|
+
@grid.push(create(header, @model, @session))
|
17
|
+
@css_grid.push(nil)
|
18
|
+
end
|
19
|
+
if(footer = self.class.const_get(:FOOTER))
|
20
|
+
@grid.push(create(footer, @model, @session))
|
21
|
+
@css_grid.push(nil)
|
22
|
+
end
|
23
|
+
=end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# DivTemplate -- htmlgrid -- 04.05.2005 -- hwyss@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/divcomposite'
|
6
|
+
require 'htmlgrid/template'
|
7
|
+
|
8
|
+
module HtmlGrid
|
9
|
+
class DivTemplate < DivComposite
|
10
|
+
include TemplateMethods
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# HtmlGrid::DojoToolkit -- davaz.com -- 14.03.2006 -- mhuggler@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/component'
|
6
|
+
require 'htmlgrid/div'
|
7
|
+
|
8
|
+
module HtmlGrid
|
9
|
+
class Component
|
10
|
+
@@msie_ptrn = /MSIE\s*(\d)/
|
11
|
+
attr_accessor :dojo_tooltip
|
12
|
+
def dojo_9?
|
13
|
+
defined?(::DOJO_VERSION) && ::DOJO_VERSION >= '0.9'
|
14
|
+
end
|
15
|
+
def dojo_tag(widget, args={}, inner_html='')
|
16
|
+
# <dojo:#{widget} ...> does not work on konqueror as of
|
17
|
+
# 02.06.2006. In combination with DOJO_DEBUG = true it even
|
18
|
+
# hangs konqueror.
|
19
|
+
=begin
|
20
|
+
dojo_tag = "<div dojoType=\"#{widget}\""
|
21
|
+
args.each { |key, value|
|
22
|
+
if(value.is_a?(Array))
|
23
|
+
dojo_tag << " #{key}=\"#{value.join(';')}\""
|
24
|
+
else
|
25
|
+
dojo_tag << " #{key}=\"#{value}\""
|
26
|
+
end
|
27
|
+
}
|
28
|
+
dojo_tag << "></div>"
|
29
|
+
=end
|
30
|
+
div = HtmlGrid::Div.new(@model, @session, self)
|
31
|
+
div.set_attribute('dojoType', widget)
|
32
|
+
lim = dojo_9? ? "," : ";"
|
33
|
+
args.each { |key, value|
|
34
|
+
if(value.is_a?(Array))
|
35
|
+
value = value.join(lim)
|
36
|
+
end
|
37
|
+
div.set_attribute(key, value)
|
38
|
+
}
|
39
|
+
div.value = inner_html
|
40
|
+
div
|
41
|
+
end
|
42
|
+
def dojo_title=(value)
|
43
|
+
tooltip = HtmlGrid::Div.new(@model, @session, self)
|
44
|
+
tooltip.value = value
|
45
|
+
self.dojo_tooltip = tooltip
|
46
|
+
end
|
47
|
+
def dojo_parse_widgets
|
48
|
+
if(@container.respond_to?(:dojo_parse_widgets))
|
49
|
+
@container.dojo_parse_widgets
|
50
|
+
end
|
51
|
+
end
|
52
|
+
unless(method_defined?(:dojo_dynamic_html))
|
53
|
+
alias :dojo_dynamic_html :dynamic_html
|
54
|
+
def dynamic_html(context)
|
55
|
+
html = ''
|
56
|
+
attrs = {
|
57
|
+
'dojoType' => dojo_9? ? 'ywesee.widget.Tooltip' : 'tooltip',
|
58
|
+
'connectId' => css_id,
|
59
|
+
'id' => "#{css_id}_widget",
|
60
|
+
'style' => 'display: none',
|
61
|
+
}
|
62
|
+
unless((match = @@msie_ptrn.match(@session.user_agent)) \
|
63
|
+
&& match[1].to_i < 7)
|
64
|
+
attrs.update({
|
65
|
+
'toggle' => 'fade',
|
66
|
+
'toggleDuration' => '500',
|
67
|
+
})
|
68
|
+
end
|
69
|
+
if(@dojo_tooltip.is_a?(String))
|
70
|
+
attrs.store('href', dojo_9? ? "'#@dojo_tooltip'" : @dojo_tooltip)
|
71
|
+
html << context.div(attrs)
|
72
|
+
elsif(@dojo_tooltip.respond_to?(:to_html))
|
73
|
+
@dojo_tooltip.attributes.update(attrs)
|
74
|
+
html << @dojo_tooltip.to_html(context)
|
75
|
+
end
|
76
|
+
unless(html.empty? || dojo_parse_widgets)
|
77
|
+
html << context.script('type' => 'text/javascript') {
|
78
|
+
"djConfig.searchIds.push('#{css_id}')"
|
79
|
+
}
|
80
|
+
end
|
81
|
+
dojo_dynamic_html(context) << html
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
module DojoToolkit
|
86
|
+
module DojoTemplate
|
87
|
+
DOJO_DEBUG = false
|
88
|
+
DOJO_BACK_BUTTON = false
|
89
|
+
DOJO_ENCODING = nil
|
90
|
+
DOJO_PARSE_WIDGETS = true
|
91
|
+
DOJO_PREFIX = []
|
92
|
+
DOJO_REQUIRE = []
|
93
|
+
def dynamic_html_headers(context)
|
94
|
+
headers = super
|
95
|
+
encoding = self.class::DOJO_ENCODING
|
96
|
+
encoding ||= if RUBY_VERSION >= '1.9'
|
97
|
+
Encoding.default_external
|
98
|
+
else
|
99
|
+
$KCODE == 'UTF8' ? 'UTF-8' : 'ISO-8859-1'
|
100
|
+
end
|
101
|
+
dojo_path = @lookandfeel.resource_global(:dojo_js)
|
102
|
+
args = {
|
103
|
+
'type' => 'text/javascript',
|
104
|
+
}
|
105
|
+
headers << context.script(args.dup) {
|
106
|
+
"djConfig = {
|
107
|
+
isDebug: #{self.class::DOJO_DEBUG},
|
108
|
+
parseWidgets: #{dojo_parse_widgets},
|
109
|
+
preventBackButtonFix: #{!self.class::DOJO_BACK_BUTTON},
|
110
|
+
bindEncoding: '#{encoding}',
|
111
|
+
searchIds: [],
|
112
|
+
urchin: ''
|
113
|
+
};"
|
114
|
+
}
|
115
|
+
if(dojo_9?)
|
116
|
+
dojo_path ||= '/resources/dojo/dojo/dojo.js'
|
117
|
+
config = [ "parseOnLoad:true",
|
118
|
+
"isDebug:#{self.class::DOJO_DEBUG}",
|
119
|
+
"preventBackButtonFix:#{!self.class::DOJO_BACK_BUTTON}",
|
120
|
+
"bindEncoding:'#{encoding}'",
|
121
|
+
"searchIds:[]",
|
122
|
+
"urchin:''" ].join(',')
|
123
|
+
args.store('djConfig', config)
|
124
|
+
else
|
125
|
+
dojo_path ||= '/resources/dojo/dojo.js'
|
126
|
+
end
|
127
|
+
args.store('src', dojo_path)
|
128
|
+
headers << context.script(args)
|
129
|
+
unless(self.class::DOJO_PREFIX.empty?)
|
130
|
+
register = dojo_9? ? 'registerModulePath' : 'setModulePrefix'
|
131
|
+
args = {
|
132
|
+
'type' => 'text/javascript',
|
133
|
+
}
|
134
|
+
headers << context.script(args) {
|
135
|
+
self.class::DOJO_PREFIX.collect { |prefix, path|
|
136
|
+
"dojo.#{register}('#{prefix}', '#{path}');"
|
137
|
+
}.join
|
138
|
+
}
|
139
|
+
end
|
140
|
+
args = {
|
141
|
+
'type' => 'text/javascript',
|
142
|
+
}
|
143
|
+
headers << context.script(args) {
|
144
|
+
script = ''
|
145
|
+
self.class::DOJO_REQUIRE.each { |req|
|
146
|
+
script << "dojo.require('#{req}');"
|
147
|
+
}
|
148
|
+
if(@dojo_onloads)
|
149
|
+
@dojo_onloads.each { |onload|
|
150
|
+
script << "dojo.addOnLoad(function() { #{onload} });"
|
151
|
+
}
|
152
|
+
end
|
153
|
+
script
|
154
|
+
}
|
155
|
+
if(dojo_9?)
|
156
|
+
dojo_dir = File.dirname(dojo_path)
|
157
|
+
headers << context.style(:type => "text/css") { <<-EOS
|
158
|
+
@import "#{File.join(dojo_dir, "/resources/dojo.css")}";
|
159
|
+
@import "#{File.join(dojo_dir, "../dijit/themes/tundra/tundra.css")}";
|
160
|
+
EOS
|
161
|
+
}
|
162
|
+
end
|
163
|
+
headers
|
164
|
+
end
|
165
|
+
def dojo_parse_widgets
|
166
|
+
self.class::DOJO_PARSE_WIDGETS
|
167
|
+
end
|
168
|
+
def onload=(script)
|
169
|
+
(@dojo_onloads ||= []).push(script)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,70 @@
|
|
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
|
+
# ErrorMessage -- htmlgrid -- 10.04.2003 -- benfay@ywesee.com
|
26
|
+
|
27
|
+
module HtmlGrid
|
28
|
+
module ErrorMessage
|
29
|
+
private
|
30
|
+
def error_message(ypos = 0)
|
31
|
+
@displayed_messages = []
|
32
|
+
if(@session.warning?)
|
33
|
+
__messages(@session.warnings, 'warning', ypos)
|
34
|
+
end
|
35
|
+
if(@session.error?)
|
36
|
+
__messages(@session.errors, 'processingerror', ypos)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
def error_text(obj)
|
40
|
+
message = obj.message
|
41
|
+
txt = HtmlGrid::Text.new(message, @model, @session, self)
|
42
|
+
if(txt.value.nil?)
|
43
|
+
txt.value = @lookandfeel.lookup(message, escape(obj.value))
|
44
|
+
end
|
45
|
+
if(txt.value.nil? && (match = /^(._[^_]+)_(.*)$/.match(message.to_s)) \
|
46
|
+
&& (label = @lookandfeel.lookup(match[2])))
|
47
|
+
txt.value = @lookandfeel.lookup(match[1], label)
|
48
|
+
end
|
49
|
+
txt
|
50
|
+
end
|
51
|
+
def __message(obj, css_class, ypos=0)
|
52
|
+
@displayed_messages ||= []
|
53
|
+
message = obj.message
|
54
|
+
unless(@displayed_messages.include?(message))
|
55
|
+
@displayed_messages.push(message)
|
56
|
+
txt = error_text(obj)
|
57
|
+
unless(txt.value.nil?)
|
58
|
+
insert_row(ypos, txt, css_class)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
def __messages(ary, css_class, ypos=0)
|
63
|
+
ary.sort_by { |item|
|
64
|
+
(components.index(item.key) || [-1,-1]).reverse
|
65
|
+
}.reverse.each { |item|
|
66
|
+
__message(item, css_class, ypos)
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,93 @@
|
|
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
|
+
# Form -- htmlgrid -- 23.10.2002 -- hwyss@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/composite'
|
28
|
+
require 'htmlgrid/submit'
|
29
|
+
|
30
|
+
module HtmlGrid
|
31
|
+
module FormMethods
|
32
|
+
AUTOFILL = false
|
33
|
+
if RUBY_VERSION >= '1.9'
|
34
|
+
ACCEPT_CHARSET = Encoding.default_external || 'UTF-8'
|
35
|
+
else
|
36
|
+
ACCEPT_CHARSET = $KCODE == 'UTF8' ? 'UTF-8' : 'ISO-8859-1'
|
37
|
+
end
|
38
|
+
EVENT = nil
|
39
|
+
FORM_ACTION = nil
|
40
|
+
FORM_METHOD = 'POST'
|
41
|
+
FORM_NAME = 'stdform'
|
42
|
+
TAG_METHOD = :form
|
43
|
+
def autofill?
|
44
|
+
self.class.const_get(:AUTOFILL)
|
45
|
+
end
|
46
|
+
def event
|
47
|
+
self::class::EVENT
|
48
|
+
end
|
49
|
+
def formname
|
50
|
+
if(defined? self::class::FORM_NAME)
|
51
|
+
self::class::FORM_NAME
|
52
|
+
end
|
53
|
+
end
|
54
|
+
def onsubmit=(onsubmit)
|
55
|
+
@form_properties["onSubmit"] = onsubmit
|
56
|
+
end
|
57
|
+
def to_html(context)
|
58
|
+
context.send(self::class::TAG_METHOD, @form_properties) {
|
59
|
+
super << context.div('style'=>'display:none') { hidden_fields(context) }
|
60
|
+
}
|
61
|
+
end
|
62
|
+
private
|
63
|
+
def hidden_fields(context)
|
64
|
+
'' <<
|
65
|
+
context.hidden('flavor', @lookandfeel.flavor) <<
|
66
|
+
context.hidden('language', @lookandfeel.language) <<
|
67
|
+
context.hidden({'NAME' => 'event', 'ID' => 'event',
|
68
|
+
'VALUE' => event.to_s}) <<
|
69
|
+
context.hidden('state_id', @session.state.object_id.to_s)
|
70
|
+
end
|
71
|
+
def init
|
72
|
+
@form_properties = {}
|
73
|
+
if(defined? self::class::FORM_CSS_CLASS)
|
74
|
+
@form_properties.store('class', self::class::FORM_CSS_CLASS)
|
75
|
+
end
|
76
|
+
if(defined? self::class::FORM_NAME)
|
77
|
+
@form_properties.store('NAME', self::class::FORM_NAME)
|
78
|
+
end
|
79
|
+
if(defined? self::class::FORM_ID)
|
80
|
+
@form_properties.store('ID', self::class::FORM_ID)
|
81
|
+
end
|
82
|
+
super
|
83
|
+
@form_properties.update({
|
84
|
+
'METHOD' => self::class::FORM_METHOD.dup,
|
85
|
+
'ACTION' => (self::class::FORM_ACTION || @lookandfeel.base_url),
|
86
|
+
'ACCEPT-CHARSET' => self::class::ACCEPT_CHARSET,
|
87
|
+
})
|
88
|
+
end
|
89
|
+
end
|
90
|
+
class Form < Composite
|
91
|
+
include FormMethods
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,42 @@
|
|
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
|
+
# FormList -- htmlgrid -- 25.03.2003 -- aschrafl@ywesee.com
|
26
|
+
|
27
|
+
require 'htmlgrid/list'
|
28
|
+
require 'htmlgrid/form'
|
29
|
+
require 'htmlgrid/value'
|
30
|
+
require 'htmlgrid/button'
|
31
|
+
|
32
|
+
module HtmlGrid
|
33
|
+
class FormList < List
|
34
|
+
include FormMethods
|
35
|
+
DEFAULT_CLASS = Value
|
36
|
+
EVENT = :new_item
|
37
|
+
def compose_footer(matrix)
|
38
|
+
@grid.add(submit(), *matrix)
|
39
|
+
@grid.set_colspan(*matrix)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|