antw-kin 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/CHANGELOG +21 -0
  2. data/LICENSE +19 -0
  3. data/Rakefile +64 -0
  4. data/VERSION.yml +4 -0
  5. data/lib/kin.rb +41 -0
  6. data/lib/kin/assets/javascripts/kin.js +260 -0
  7. data/lib/kin/assets/stylesheets/_forms.sass +255 -0
  8. data/lib/kin/assets/stylesheets/_modal.sass +67 -0
  9. data/lib/kin/configurable.rb +40 -0
  10. data/lib/kin/core_ext/date.rb +24 -0
  11. data/lib/kin/core_ext/string.rb +24 -0
  12. data/lib/kin/core_ext/time.rb +17 -0
  13. data/lib/kin/form_builder.rb +215 -0
  14. data/lib/kin/masthead.rb +223 -0
  15. data/lib/kin/merbtasks.rb +0 -0
  16. data/lib/kin/nav.rb +337 -0
  17. data/lib/kin/nav/builder.rb +172 -0
  18. data/lib/kin/nav/formatters.rb +116 -0
  19. data/lib/kin/nav/helper_mixin.rb +54 -0
  20. data/lib/kin/tasks/sync_assets.rb +48 -0
  21. data/spec/configurable_spec.rb +47 -0
  22. data/spec/core_ext/date_spec.rb +29 -0
  23. data/spec/core_ext/string_spec.rb +43 -0
  24. data/spec/core_ext/time_spec.rb +75 -0
  25. data/spec/fixture/app/controllers/application.rb +2 -0
  26. data/spec/fixture/app/controllers/exceptions.rb +13 -0
  27. data/spec/fixture/app/controllers/form_builder_specs.rb +3 -0
  28. data/spec/fixture/app/controllers/masthead_specs.rb +3 -0
  29. data/spec/fixture/app/controllers/nav_specs.rb +2 -0
  30. data/spec/fixture/app/controllers/spec_controller.rb +12 -0
  31. data/spec/fixture/app/helpers/global_helpers.rb +7 -0
  32. data/spec/fixture/app/models/fake_model.rb +19 -0
  33. data/spec/fixture/app/views/exceptions/not_acceptable.html.erb +63 -0
  34. data/spec/fixture/app/views/exceptions/not_found.html.erb +47 -0
  35. data/spec/fixture/app/views/form_builder_specs/bound_date_field.html.haml +2 -0
  36. data/spec/fixture/app/views/form_builder_specs/bound_date_field_disabled.html.haml +2 -0
  37. data/spec/fixture/app/views/form_builder_specs/bound_date_field_with_error.html.haml +2 -0
  38. data/spec/fixture/app/views/form_builder_specs/bound_date_field_with_label.html.haml +2 -0
  39. data/spec/fixture/app/views/form_builder_specs/bound_date_field_with_value.html.haml +5 -0
  40. data/spec/fixture/app/views/form_builder_specs/bound_datetime_field.html.haml +2 -0
  41. data/spec/fixture/app/views/form_builder_specs/bound_datetime_field_disabled.html.haml +2 -0
  42. data/spec/fixture/app/views/form_builder_specs/bound_datetime_field_with_error.html.haml +2 -0
  43. data/spec/fixture/app/views/form_builder_specs/bound_datetime_field_with_label.html.haml +2 -0
  44. data/spec/fixture/app/views/form_builder_specs/bound_datetime_field_with_value.html.haml +5 -0
  45. data/spec/fixture/app/views/form_builder_specs/bound_time_field.html.haml +2 -0
  46. data/spec/fixture/app/views/form_builder_specs/bound_time_field_disabled.html.haml +2 -0
  47. data/spec/fixture/app/views/form_builder_specs/bound_time_field_with_error.html.haml +2 -0
  48. data/spec/fixture/app/views/form_builder_specs/bound_time_field_with_label.html.haml +2 -0
  49. data/spec/fixture/app/views/form_builder_specs/bound_time_field_with_value.html.haml +5 -0
  50. data/spec/fixture/app/views/form_builder_specs/date_field.html.haml +1 -0
  51. data/spec/fixture/app/views/form_builder_specs/date_field_with_label.html.haml +1 -0
  52. data/spec/fixture/app/views/form_builder_specs/datetime_field.html.haml +1 -0
  53. data/spec/fixture/app/views/form_builder_specs/datetime_field_disabled.html.haml +1 -0
  54. data/spec/fixture/app/views/form_builder_specs/datetime_field_with_classes.html.haml +1 -0
  55. data/spec/fixture/app/views/form_builder_specs/datetime_field_with_date_value.html.haml +1 -0
  56. data/spec/fixture/app/views/form_builder_specs/datetime_field_with_datetime_value.html.haml +1 -0
  57. data/spec/fixture/app/views/form_builder_specs/datetime_field_with_label.html.haml +1 -0
  58. data/spec/fixture/app/views/form_builder_specs/datetime_field_with_time_value.html.haml +1 -0
  59. data/spec/fixture/app/views/form_builder_specs/label.html.haml +1 -0
  60. data/spec/fixture/app/views/form_builder_specs/label_with_note.html.haml +1 -0
  61. data/spec/fixture/app/views/form_builder_specs/label_with_note_in_parens.html.haml +1 -0
  62. data/spec/fixture/app/views/form_builder_specs/label_with_requirement.html.haml +1 -0
  63. data/spec/fixture/app/views/form_builder_specs/time_field.html.haml +1 -0
  64. data/spec/fixture/app/views/form_builder_specs/time_field_with_label.html.haml +1 -0
  65. data/spec/fixture/app/views/layout/application.html.erb +12 -0
  66. data/spec/fixture/app/views/layout/masthead.html.haml +1 -0
  67. data/spec/fixture/app/views/masthead_specs/all.html.haml +5 -0
  68. data/spec/fixture/app/views/masthead_specs/border.html.haml +2 -0
  69. data/spec/fixture/app/views/masthead_specs/escaping.html.haml +5 -0
  70. data/spec/fixture/app/views/masthead_specs/no_border.html.haml +2 -0
  71. data/spec/fixture/app/views/masthead_specs/no_extras.html.haml +3 -0
  72. data/spec/fixture/app/views/masthead_specs/no_subtitles.html.haml +3 -0
  73. data/spec/fixture/app/views/masthead_specs/right_subtitle.html.haml +2 -0
  74. data/spec/fixture/app/views/masthead_specs/right_title.html.haml +2 -0
  75. data/spec/fixture/app/views/masthead_specs/subtitle.html.haml +2 -0
  76. data/spec/fixture/app/views/masthead_specs/with_css_classes.html.haml +5 -0
  77. data/spec/fixture/app/views/masthead_specs/with_links.html.haml +5 -0
  78. data/spec/fixture/app/views/masthead_specs/with_no_escape.html.haml +4 -0
  79. data/spec/fixture/app/views/nav_specs/_guarded.html.haml +11 -0
  80. data/spec/fixture/app/views/nav_specs/active.html.haml +19 -0
  81. data/spec/fixture/app/views/nav_specs/content_injection.html.haml +6 -0
  82. data/spec/fixture/app/views/nav_specs/escaped_content_injection.html.haml +6 -0
  83. data/spec/fixture/app/views/nav_specs/generic_nav.html.haml +7 -0
  84. data/spec/fixture/app/views/nav_specs/guard_with_all_params.html.haml +2 -0
  85. data/spec/fixture/app/views/nav_specs/guard_with_single_param.html.haml +2 -0
  86. data/spec/fixture/app/views/nav_specs/guard_without_param.html.haml +2 -0
  87. data/spec/fixture/app/views/nav_specs/item_with_title.html.haml +8 -0
  88. data/spec/fixture/app/views/nav_specs/item_without_title.html.haml +6 -0
  89. data/spec/fixture/app/views/nav_specs/multiple_injection.html.haml +6 -0
  90. data/spec/fixture/app/views/nav_specs/resource_url.html.haml +7 -0
  91. data/spec/fixture/app/views/nav_specs/resource_url_without_resource.html.haml +7 -0
  92. data/spec/fixture/app/views/nav_specs/show_resource_url.html.haml +7 -0
  93. data/spec/fixture/app/views/nav_specs/with_custom_formatter.html.haml +7 -0
  94. data/spec/fixture/config/environments/development.rb +15 -0
  95. data/spec/fixture/config/environments/production.rb +10 -0
  96. data/spec/fixture/config/environments/rake.rb +11 -0
  97. data/spec/fixture/config/environments/staging.rb +10 -0
  98. data/spec/fixture/config/environments/test.rb +12 -0
  99. data/spec/fixture/config/init.rb +19 -0
  100. data/spec/fixture/config/rack.rb +11 -0
  101. data/spec/fixture/config/router.rb +41 -0
  102. data/spec/fixture/public/images/merb.jpg +0 -0
  103. data/spec/fixture/public/stylesheets/master.css +119 -0
  104. data/spec/form_builder_spec.rb +507 -0
  105. data/spec/masthead_spec.rb +228 -0
  106. data/spec/nav_spec.rb +358 -0
  107. data/spec/spec_helper.rb +37 -0
  108. metadata +183 -0
data/CHANGELOG ADDED
@@ -0,0 +1,21 @@
1
+ == 0.3.1 2009-08-26
2
+
3
+ * When setting on which controller and actions a nav item can be active, you
4
+ may use a glob for the action: 'home/{dashboard,accounts,users}'.
5
+
6
+ == 0.3.0 2009-08-25
7
+
8
+ * Kin::Nav now figures out which tab is active depending on the current
9
+ controller and action (see fixture/active.html.haml).
10
+
11
+ == 0.2.0 2009-08-22
12
+
13
+ * Renamed gem from Potion to Kin.
14
+ * Added kin.js from Torque project.
15
+ * SASS stylesheets will no longer be added to the SASS load path, rather you
16
+ should use `rake kin:copy_assets` to copy Kin's SASS and javascripts to your
17
+ application.
18
+ * Navigation configuration will be autoloaded from navigation.rb in your
19
+ application's config directory (Merb.dir_for(:config)).
20
+ * Added Kin::Configurable which replaces application-specific #config and
21
+ #configure methods.
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2009 Anthony Williams
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,64 @@
1
+ require 'rubygems'
2
+ require 'spec/rake/spectask'
3
+
4
+ require 'merb-core'
5
+ require 'merb-core/tasks/merb'
6
+
7
+ begin
8
+ require 'jeweler'
9
+ Jeweler::Tasks.new do |s|
10
+ s.name = 'kin'
11
+ s.platform = Gem::Platform::RUBY
12
+ s.has_rdoc = false
13
+ s.summary = 'Components commonly used in Showcase which can be ' +
14
+ 'applied to other projects.'
15
+ s.description = s.summary
16
+ s.author = 'Anthony Williams'
17
+ s.email = 'anthony@ninecraft.com'
18
+
19
+ s.extra_rdoc_files = ['README', 'CHANGELOG', 'LICENSE']
20
+
21
+ s.files = %w(LICENSE README CHANGELOG Rakefile VERSION.yml) +
22
+ Dir.glob("{lib,spec}/**/*") - %w(spec/merb_test.log)
23
+ end
24
+ rescue LoadError
25
+ puts 'Jeweler not available. Install it with: gem install ' +
26
+ 'technicalpickles-jeweler -s http://gems.github.com'
27
+ end
28
+
29
+ ##############################################################################
30
+ # rSpec & rcov
31
+ ##############################################################################
32
+
33
+ desc "Run all examples (or a specific spec with TASK=xxxx)"
34
+ Spec::Rake::SpecTask.new('spec') do |t|
35
+ t.spec_opts = ["-c -f s"]
36
+ t.spec_files = begin
37
+ if ENV["TASK"]
38
+ ENV["TASK"].split(',').map { |task| "spec/**/#{task}_spec.rb" }
39
+ else
40
+ FileList['spec/**/*_spec.rb']
41
+ end
42
+ end
43
+ end
44
+
45
+ desc "Run all examples with RCov"
46
+ Spec::Rake::SpecTask.new('spec:rcov') do |t|
47
+ t.spec_files = FileList['spec/**/*.rb']
48
+ t.spec_opts = ['-c -f s']
49
+ t.rcov = true
50
+ t.rcov_opts = ['--exclude', 'spec']
51
+ end
52
+
53
+ ##############################################################################
54
+ # YARD Documentation
55
+ ##############################################################################
56
+
57
+ begin
58
+ require 'yard'
59
+ YARD::Rake::YardocTask.new do |t|
60
+ t.files = %w( CHANGELOG LICENSE lib/**/*.rb )
61
+ end
62
+ rescue LoadError
63
+ puts 'Yardoc not available. Install it with: gem install yardoc'
64
+ end
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :patch: 2
3
+ :major: 0
4
+ :minor: 3
data/lib/kin.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'merb-helpers'
2
+
3
+ # Make sure we're running inside Merb.
4
+ if defined?(Merb::Plugins)
5
+ kin = File.expand_path(File.join(File.dirname(__FILE__), 'kin'))
6
+
7
+ require File.join(kin, 'core_ext', 'date')
8
+ require File.join(kin, 'core_ext', 'string')
9
+ require File.join(kin, 'core_ext', 'time')
10
+
11
+ require File.join(kin, 'configurable')
12
+ require File.join(kin, 'form_builder')
13
+ require File.join(kin, 'masthead')
14
+ require File.join(kin, 'nav')
15
+
16
+ Merb::Plugins.add_rakefiles(File.join(kin, 'tasks', 'sync_assets'))
17
+
18
+ # Default nav formatter. Can be overridden in an after_app_loads block, or
19
+ # on a case-by-case basis in +display_navigation+.
20
+ Merb::Plugins.config[:kin] = { :nav_formatter => Kin::Nav::BasicFormatter }
21
+
22
+ Merb::BootLoader.after_app_loads do
23
+ # Add default time formats.
24
+ unless Time.formats.include?(:full)
25
+ Time.add_format(:full, '%A %d %B, %H:%M')
26
+ end
27
+
28
+ unless Time.formats.include?(:date_only)
29
+ Time.add_format(:date_only, '%A %d %B')
30
+ end
31
+
32
+ unless Time.formats.include?(:date_with_year)
33
+ Time.add_format(:date_with_year, '%d %B %Y')
34
+ end
35
+
36
+ # After the application loads, see if there is a config/navigation.rb file
37
+ # to initialize the nav instances.
38
+ nav_rb = File.join(Merb.dir_for(:config), 'navigation.rb')
39
+ load(nav_rb) if File.exists?(nav_rb)
40
+ end
41
+ end
@@ -0,0 +1,260 @@
1
+ // Copyright (c) 2009 Anthony Williams, Torque
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a
4
+ // copy of this software and associated documentation files (the "Software"),
5
+ // to deal in the Software without restriction, including without limitation
6
+ // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ // and/or sell copies of the Software, and to permit persons to whom the
8
+ // Software is furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
+ // DEALINGS IN THE SOFTWARE.
20
+
21
+ // This file is placed here by the kin:copy_assets rake task and will be
22
+ // overwritten whenever that task is run. Do not edit this file directly.
23
+
24
+ (function() {
25
+
26
+ var R_ISO_8601 = new RegExp(
27
+ "(\\d\\d\\d\\d)(-)?" + // YYYY capture:1-2
28
+ "(\\d\\d)(-)?" + // MM capture:3-4
29
+ "(\\d\\d)" + // DD capture:5
30
+ "(T)?(\\d\\d)(:)?" + // HH capture:6-8
31
+ "(\\d\\d)(:)?" + // MM capture:9-10
32
+ "(\\d\\d)(\.\\d+)?" + // SS capture:11-12
33
+ "(Z|([+-])" + // Zulu or Timezone capture:13-14
34
+ "(\\d\\d)(:)?(\\d\\d))" // HH::MM capture:15-17
35
+ )
36
+
37
+ Date.fromISO8601 = function (isoString) {
38
+ var match = isoString.match(R_ISO_8601),
39
+ date = new Date(),
40
+ offset = 0;
41
+
42
+ if (! match)
43
+ return NaN;
44
+
45
+ date.setUTCDate(1);
46
+ date.setUTCFullYear(match[1].toInt());
47
+ date.setUTCMonth(match[3].toInt() - 1);
48
+ date.setUTCDate(match[5].toInt());
49
+ date.setUTCHours(match[7].toInt());
50
+ date.setUTCMinutes(match[9].toInt());
51
+ date.setUTCSeconds(match[11].toInt());
52
+
53
+ if(match[12]) {
54
+ date.setUTCMilliseconds(match[12].toFloat() * 100);
55
+ } else {
56
+ date.setUTCMilliseconds(0);
57
+ }
58
+
59
+ if (match[13] != 'Z') {
60
+ offset = (match[15].toInt() * 60) + match[17].toInt();
61
+ offset *= ((match[14] == '-') ? -1 : 1);
62
+ date.setTime(date.getTime() - offset * 60 * 1000);
63
+ }
64
+
65
+ return date;
66
+ }
67
+
68
+ })();
69
+
70
+ // ---------------------------------------------------------------------------
71
+
72
+ var Kin = {};
73
+
74
+ /**
75
+ * Creates a button.
76
+ */
77
+ Kin.Button = new Class({
78
+ Implements: [Options, Element.ToElement],
79
+
80
+ options: {
81
+ // Main buttons are shown in blue.
82
+ main: false,
83
+ // An optional icon name to be added (as a CSS class).
84
+ icon: false,
85
+ // Right-align the button?
86
+ right: false,
87
+ // Additional CSS classes to add.
88
+ css: ''
89
+ },
90
+
91
+ initialize: function(text, options) {
92
+ this.setOptions(options);
93
+ this.text = text;
94
+ this.tag = 'button';
95
+ },
96
+
97
+ build: function() {
98
+ this.element = new Element(this.tag).addClass('button');
99
+
100
+ if(this.options.css)
101
+ this.element.addClass(this.options.css);
102
+
103
+ if(this.options.main)
104
+ this.element.addClass('blue');
105
+
106
+ if(this.options.right)
107
+ this.element.addClass('right');
108
+
109
+ // If the button has an icon, the text gets wrapped in an 'icon' span,
110
+ // otherwise, the text is added straight to the button itself.
111
+ if(this.options.icon) {
112
+ this.element.adopt(
113
+ new Element('span').set('text', this.text).
114
+ addClass('icon').addClass(this.options.icon)
115
+ );
116
+ } else {
117
+ this.element.set('text', this.text);
118
+ }
119
+
120
+ return this.element;
121
+ }
122
+ });
123
+
124
+ /**
125
+ * Creates a link which looks like a button.
126
+ */
127
+ Kin.Button.Link = new Class({
128
+ Extends: Kin.Button,
129
+
130
+ initialize: function(text, url, options) {
131
+ this.parent(text, options);
132
+ this.tag = 'a';
133
+ this.url = url;
134
+ },
135
+
136
+ build: function() {
137
+ return this.parent().set('href', this.url);
138
+ }
139
+ });
140
+
141
+ // ---------------------------------------------------------------------------
142
+
143
+ /**
144
+ * Creates a modal dialog.
145
+ */
146
+ Kin.Dialog = new Class({
147
+ Extends: StickyWin.Modal.Ajax,
148
+
149
+ options: {
150
+ requestOptions: {
151
+ method: 'get',
152
+ evalScripts: false
153
+ },
154
+
155
+ handleResponse: function(data) {
156
+ this.Request.response.text.stripScripts();
157
+
158
+ this.content = this.transform(data);
159
+ this.setContent(new Kin.Dialog.UI(this).build());
160
+ this.show();
161
+ },
162
+
163
+ closeOnEsc: true
164
+ },
165
+
166
+ initialize: function(options) {
167
+ options = $merge(options || {}, {
168
+ modalOptions: {
169
+ modalStyle: {
170
+ 'background-color': '#000',
171
+ 'opacity': 0.7
172
+ }
173
+ }
174
+ });
175
+
176
+ this.parent(options);
177
+ },
178
+
179
+ createRequest: function(){
180
+ this.Request = new Request.JSON(this.options.requestOptions)
181
+ this.Request.addEvent('onSuccess', this.options.handleResponse.bind(this));
182
+ },
183
+
184
+ // Provides a hook so that subclasses can transform the returned response
185
+ // data (which is typically JSON) into HTML.
186
+ transform: function(data) {
187
+ return data;
188
+ }
189
+ });
190
+
191
+ /**
192
+ * UI wrapper for Kin dialogs.
193
+ */
194
+ Kin.Dialog.UI = new Class({
195
+ initialize: function(dialog) {
196
+ this.dialog = dialog;
197
+ },
198
+
199
+ build: function() {
200
+ var hide = function(event) {
201
+ event.stop();
202
+ this.dialog.hide();
203
+ }.bind(this);
204
+
205
+ var wrapper = new Element('div').addClass('modal_shadow');
206
+ this.element = wrapper;
207
+
208
+ var dialog = new Element('div').addClass('dialog');
209
+ wrapper.adopt(dialog);
210
+
211
+ // Create header.
212
+ var top = new Element('div').addClass('top');
213
+ var header = this.buildHeader()
214
+
215
+ // Add close button.
216
+ top.adopt(
217
+ new Element('a').set('href', window.location.href).
218
+ addClass('close').addEvent('click', hide)
219
+ );
220
+
221
+ dialog.adopt(top.adopt(header));
222
+
223
+ // Create main content.
224
+ var content = new Element('div').addClass('content');
225
+ content.adopt(this.buildContent());
226
+ dialog.adopt(content);
227
+
228
+ // Create footer.
229
+ dialog.adopt(new Element('div').addClass('footer'));
230
+
231
+ // Close the dialog if the user clicks on the shadow.
232
+ wrapper.addEvent('click', hide);
233
+ // But not when clicking elsewhere in the dialog.
234
+ dialog.addEvent('click', function(event) {
235
+ event.stopPropagation();
236
+ });
237
+
238
+ return wrapper;
239
+ },
240
+
241
+ buildHeader: function() {
242
+ var title = new Element('span').set('text', this.dialog.title);
243
+
244
+ if(this.dialog.type) {
245
+ title.adopt(new Element('span').addClass('note').
246
+ set('text', ' ' + this.dialog.type));
247
+ }
248
+
249
+ if(this.dialog.icon) {
250
+ title = new Element('span').addClass('icon').
251
+ addClass(this.dialog.icon).adopt(title);
252
+ }
253
+
254
+ return new Element('div').addClass('title').adopt(title);
255
+ },
256
+
257
+ buildContent: function() {
258
+ return new Element('div').adopt(this.dialog.content);
259
+ }
260
+ });
@@ -0,0 +1,255 @@
1
+ // This file is placed here by the kin:copy_assets rake task and will be
2
+ // overwritten whenever that task is run. Do not edit this file directly.
3
+
4
+ // Expects your own stylsheets to define:
5
+ // !width - width of the content area.
6
+ // !link_color - colour of your hyperlinks.
7
+
8
+ // Buttons
9
+ !btn_link_line_height ||= 18px
10
+ !btn_line_height ||= !btn_link_line_height
11
+ !btn_link_padding ||= 3px 11px 3px 12px
12
+ !btn_ie6_padding ||= 2px 11px 1px 12px
13
+ !btn_ie7_padding ||= 2px 11px 1px 12px
14
+ !btn_fx_padding ||= 3px 11px 3px 12px
15
+
16
+ // Tiny Buttons
17
+ !btn_tiny_line_height ||= 15px
18
+ !btn_tiny_link_padding ||= 3px 8px 2px 9px
19
+ !btn_tiny_ie6_padding ||= 2px 8px 0px 9px
20
+ !btn_tiny_ie7_padding ||= 2px 8px 1px 9px
21
+ !btn_tiny_fx_padding ||= 3px 8px 2px 9px
22
+
23
+ !btn_font ||= "\"Lucida Grande\", Arial, sans-serif"
24
+
25
+ !quiet ||= #777
26
+
27
+ form
28
+ label, span.pseudo_label
29
+ :cursor pointer
30
+ :display block
31
+ :font-weight bold
32
+ :line-height 1
33
+ :padding 0 0 8px
34
+ span.req
35
+ :color #c00
36
+ span.note
37
+ +quiet
38
+ +ismall
39
+ :font-weight normal
40
+ :padding-left 5px
41
+ span.pseudo_label
42
+ :cursor default
43
+ ul.form
44
+ :list-style none
45
+ :margin 0
46
+ li
47
+ :padding-bottom 20px
48
+ .description
49
+ +small
50
+ +quiet
51
+ :display block
52
+ :font-weight normal
53
+ :margin 0
54
+ :padding 5px 0 0
55
+ .multiple span.field
56
+ :display block
57
+ :float left
58
+ :padding-right 6px
59
+
60
+ // Fields.
61
+
62
+ input.text, input.password, input.title, textarea
63
+ :background #fff url(../images/form_field.png) top left repeat-x
64
+ :border = !border
65
+ :border-bottom-color #ddd
66
+ :border-top-color #999
67
+ :font-size 1em
68
+ :line-height 1em
69
+ :padding 5px 4px
70
+ &:focus
71
+ :border-color #999
72
+ :border-bottom-color #aaa
73
+ :border-top-color #666
74
+ // :background-color #fffff0
75
+ // Safari focus.
76
+ :outline 0
77
+ &[disabled=disabled]
78
+ :background-color #f9f9f9
79
+ .title input, .title .overTxtDiv
80
+ :font-size 1.25em
81
+ input.wide, input.title, textarea
82
+ :width = !width - 10px
83
+ &.error
84
+ :background-color #fef3f3
85
+ textarea
86
+ :height 6em
87
+ :line-height 1.5
88
+ :margin 0
89
+ .overTxtDiv
90
+ +quiet
91
+ :padding 4px 0 0 2px
92
+
93
+ // Radios.
94
+
95
+ .radios
96
+ label
97
+ :float left
98
+ :font-weight normal
99
+ :padding 3px 0 8px 5px
100
+ :width 628px
101
+ input
102
+ :float left
103
+ :margin 2px
104
+
105
+ // Date fields.
106
+
107
+ li.date
108
+ .at, .timesep
109
+ +quiet
110
+ :padding-top 4px
111
+ .hour, .timesep
112
+ :padding-right 2px
113
+ .datepicker a
114
+ +ismall
115
+ :background url(../images/icons/datepicker.png) 6px 4px no-repeat
116
+ :display block
117
+ :padding 3px 5px 4px 26px
118
+ .datepicker.disabled a
119
+ +quiet
120
+ :background-position 6px -26px
121
+ &:hover
122
+ :cursor default
123
+ :text-decoration none
124
+
125
+ // Buttons.
126
+ form ul.form li.buttons
127
+ :padding-bottom 0
128
+
129
+ .buttons
130
+ :margin 0
131
+ :padding-bottom 0
132
+ button, a
133
+ :background #ecf4f6 url(../images/button.png) repeat-x
134
+ :-moz-border-radius 3px
135
+ :-webkit-border-radius 3px
136
+ :border-radius 3px
137
+ :border 1px solid #999
138
+ :color #222
139
+ :cursor pointer
140
+ :display block
141
+ :float left
142
+ :font-family = !btn_font
143
+ :font-size 1em
144
+ :line-height = !btn_link_line_height
145
+ :margin 0 8px 0 0
146
+ // Links.
147
+ :padding = !btn_link_padding
148
+ :text-decoration none
149
+ &.right
150
+ :float right
151
+ :margin 0 0 0 8px
152
+ &:active
153
+ :background-position 0 -40px
154
+ &:focus
155
+ :border-color #444
156
+ // Safari
157
+ :outline none
158
+ &.blue
159
+ :background-position 0 -80px
160
+ :border-color #2c5b8c
161
+ :color #fff
162
+ :text-shadow 0 -1px 0px #2c5b8c
163
+ &:active
164
+ :background-position 0 -120px
165
+ .icon
166
+ :background-position = 2px (!btn_line_height - 16px)
167
+ :background-repeat no-repeat
168
+ :padding 2px 2px 2px 26px
169
+ button
170
+ :overflow visible
171
+ // IE6.
172
+ :padding = !btn_ie6_padding
173
+ :width auto
174
+ &[class]
175
+ // Firefox.
176
+ :padding = !btn_fx_padding
177
+ // Webkit
178
+ :line-height = !btn_line_height
179
+ *:first-child+html &
180
+ // IE7.
181
+ :padding = !btn_ie7_padding
182
+ &.tiny
183
+ a, button
184
+ +itiny
185
+ :line-height = !btn_tiny_line_height
186
+ :margin-right 6px
187
+ :padding = !btn_tiny_link_padding
188
+ button
189
+ // IE6.
190
+ :padding = !btn_tiny_ie6_padding
191
+ &[class]
192
+ // Firefox.
193
+ :padding = !btn_tiny_fx_padding
194
+ *:first-child+html &
195
+ // IE7.
196
+ :padding = !btn_tiny_ie7_padding
197
+ &, &.tiny
198
+ button
199
+ &[disabled=disabled]
200
+ :cursor default
201
+ :opacity 0.5
202
+ :text-shadow none
203
+ &:active
204
+ :background-position 0 0
205
+ &.blue
206
+ &:active
207
+ :background-position 0 -80px
208
+ &.faux_link
209
+ :background none
210
+ :border-color transparent
211
+ :-moz-box-shadow none
212
+ :-webkit-box-shadow none
213
+ :box-shadow none
214
+ :color = !link_color
215
+ :font-weight normal
216
+ :padding-left 0
217
+ :padding-right 0
218
+ :text-shadow none
219
+ &:hover
220
+ :text-decoration underline
221
+
222
+ // Error messages
223
+ // ---------------------------------------------------------------------------
224
+
225
+ div.wide_notice, #gordon div.notice, div.error
226
+ :background #ecfaff url(../images/icons/information.png) 25px 8px no-repeat
227
+ :border-top 1px solid #d0e4ec
228
+ :border-bottom 1px solid #d0e4ec
229
+ :padding 10px 25px 10px 47px
230
+ :line-height 1
231
+ :margin 0 -25px 25px
232
+ .main
233
+ :display block
234
+ :font-weight bold
235
+ .note
236
+ +small
237
+ :color #626d74
238
+ :display block
239
+ :margin 6px 0 0
240
+
241
+ #gordon
242
+ div.notice
243
+ :background-color #f5fff0
244
+ :background-image url(../images/icons/tick.png)
245
+ :border-color #d7ecd2
246
+ div.error
247
+ :background-color #fff0f0
248
+ :background-image url(../images/icons/cross.png)
249
+ :border-color #ecd2d2
250
+
251
+ div.error
252
+ :background #fffde9 url(/images/icons/exclamation.png) 25px 10px no-repeat
253
+ :border-color #e3e0c4
254
+ ul
255
+ :margin 0