merb-admin 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. data/LICENSE +20 -0
  2. data/README.markdown +58 -0
  3. data/Rakefile +64 -0
  4. data/app/controllers/application.rb +6 -0
  5. data/app/controllers/main.rb +145 -0
  6. data/app/helpers/application_helper.rb +64 -0
  7. data/app/helpers/main_helper.rb +122 -0
  8. data/app/views/layout/_message.html.erb +10 -0
  9. data/app/views/layout/dashboard.html.erb +34 -0
  10. data/app/views/layout/form.html.erb +48 -0
  11. data/app/views/layout/list.html.erb +42 -0
  12. data/app/views/main/_belongs_to.html.erb +29 -0
  13. data/app/views/main/_big_decimal.html.erb +12 -0
  14. data/app/views/main/_boolean.html.erb +7 -0
  15. data/app/views/main/_date.html.erb +12 -0
  16. data/app/views/main/_datetime.html.erb +12 -0
  17. data/app/views/main/_float.html.erb +12 -0
  18. data/app/views/main/_has_many.html.erb +16 -0
  19. data/app/views/main/_has_one.html.erb +30 -0
  20. data/app/views/main/_integer.html.erb +18 -0
  21. data/app/views/main/_properties.html.erb +18 -0
  22. data/app/views/main/_string.html.erb +12 -0
  23. data/app/views/main/_text.html.erb +11 -0
  24. data/app/views/main/_time.html.erb +12 -0
  25. data/app/views/main/_timestamp.html.erb +12 -0
  26. data/app/views/main/delete.html.erb +12 -0
  27. data/app/views/main/edit.html.erb +25 -0
  28. data/app/views/main/index.html.erb +22 -0
  29. data/app/views/main/list.html.erb +72 -0
  30. data/app/views/main/new.html.erb +22 -0
  31. data/lib/abstract_model.rb +67 -0
  32. data/lib/activerecord_support.rb +169 -0
  33. data/lib/datamapper_support.rb +157 -0
  34. data/lib/generic_support.rb +17 -0
  35. data/lib/merb-admin/merbtasks.rb +103 -0
  36. data/lib/merb-admin/slicetasks.rb +20 -0
  37. data/lib/merb-admin/spectasks.rb +53 -0
  38. data/lib/merb-admin.rb +99 -0
  39. data/public/images/arrow-down.gif +0 -0
  40. data/public/images/arrow-up.gif +0 -0
  41. data/public/images/changelist-bg.gif +0 -0
  42. data/public/images/changelist-bg_rtl.gif +0 -0
  43. data/public/images/chooser-bg.gif +0 -0
  44. data/public/images/chooser_stacked-bg.gif +0 -0
  45. data/public/images/default-bg-reverse.gif +0 -0
  46. data/public/images/default-bg.gif +0 -0
  47. data/public/images/deleted-overlay.gif +0 -0
  48. data/public/images/icon-no.gif +0 -0
  49. data/public/images/icon-unknown.gif +0 -0
  50. data/public/images/icon-yes.gif +0 -0
  51. data/public/images/icon_addlink.gif +0 -0
  52. data/public/images/icon_alert.gif +0 -0
  53. data/public/images/icon_calendar.gif +0 -0
  54. data/public/images/icon_changelink.gif +0 -0
  55. data/public/images/icon_clock.gif +0 -0
  56. data/public/images/icon_deletelink.gif +0 -0
  57. data/public/images/icon_error.gif +0 -0
  58. data/public/images/icon_searchbox.png +0 -0
  59. data/public/images/icon_success.gif +0 -0
  60. data/public/images/inline-delete-8bit.png +0 -0
  61. data/public/images/inline-delete.png +0 -0
  62. data/public/images/inline-restore-8bit.png +0 -0
  63. data/public/images/inline-restore.png +0 -0
  64. data/public/images/inline-splitter-bg.gif +0 -0
  65. data/public/images/nav-bg-grabber.gif +0 -0
  66. data/public/images/nav-bg-reverse.gif +0 -0
  67. data/public/images/nav-bg.gif +0 -0
  68. data/public/images/selector-add.gif +0 -0
  69. data/public/images/selector-addall.gif +0 -0
  70. data/public/images/selector-remove.gif +0 -0
  71. data/public/images/selector-removeall.gif +0 -0
  72. data/public/images/selector-search.gif +0 -0
  73. data/public/images/selector_stacked-add.gif +0 -0
  74. data/public/images/selector_stacked-remove.gif +0 -0
  75. data/public/images/tool-left.gif +0 -0
  76. data/public/images/tool-left_over.gif +0 -0
  77. data/public/images/tool-right.gif +0 -0
  78. data/public/images/tool-right_over.gif +0 -0
  79. data/public/images/tooltag-add.gif +0 -0
  80. data/public/images/tooltag-add_over.gif +0 -0
  81. data/public/images/tooltag-arrowright.gif +0 -0
  82. data/public/images/tooltag-arrowright_over.gif +0 -0
  83. data/public/javascripts/CollapsedFieldsets.js +85 -0
  84. data/public/javascripts/DateTimeShortcuts.js +255 -0
  85. data/public/javascripts/RelatedObjectLookups.js +96 -0
  86. data/public/javascripts/SelectBox.js +111 -0
  87. data/public/javascripts/SelectFilter2.js +113 -0
  88. data/public/javascripts/actions.js +39 -0
  89. data/public/javascripts/calendar.js +143 -0
  90. data/public/javascripts/core.js +176 -0
  91. data/public/javascripts/dateparse.js +233 -0
  92. data/public/javascripts/getElementsBySelector.js +167 -0
  93. data/public/javascripts/i18n.js +33 -0
  94. data/public/javascripts/master.js +0 -0
  95. data/public/javascripts/ordering.js +137 -0
  96. data/public/javascripts/timeparse.js +94 -0
  97. data/public/javascripts/urlify.js +140 -0
  98. data/public/stylesheets/base.css +746 -0
  99. data/public/stylesheets/changelists.css +269 -0
  100. data/public/stylesheets/dashboard.css +24 -0
  101. data/public/stylesheets/forms.css +327 -0
  102. data/public/stylesheets/global.css +142 -0
  103. data/public/stylesheets/ie.css +51 -0
  104. data/public/stylesheets/layout.css +29 -0
  105. data/public/stylesheets/login.css +54 -0
  106. data/public/stylesheets/master.css +2 -0
  107. data/public/stylesheets/null.css +1 -0
  108. data/public/stylesheets/patch-iewin.css +8 -0
  109. data/public/stylesheets/rtl.css +206 -0
  110. data/public/stylesheets/widgets.css +506 -0
  111. data/schema/migrations/001_create_divisions_migration.rb +15 -0
  112. data/schema/migrations/002_create_drafts_migration.rb +21 -0
  113. data/schema/migrations/003_create_leagues_migration.rb +13 -0
  114. data/schema/migrations/004_create_players_migration.rb +23 -0
  115. data/schema/migrations/005_create_teams_migration.rb +18 -0
  116. data/spec/controllers/main_spec.rb +25 -0
  117. data/spec/models/activerecord/division.rb +8 -0
  118. data/spec/models/activerecord/draft.rb +16 -0
  119. data/spec/models/activerecord/league.rb +6 -0
  120. data/spec/models/activerecord/player.rb +10 -0
  121. data/spec/models/activerecord/team.rb +11 -0
  122. data/spec/models/datamapper/division.rb +12 -0
  123. data/spec/models/datamapper/draft.rb +18 -0
  124. data/spec/models/datamapper/league.rb +11 -0
  125. data/spec/models/datamapper/player.rb +21 -0
  126. data/spec/models/datamapper/team.rb +15 -0
  127. data/spec/requests/main_spec.rb +475 -0
  128. data/spec/spec_helper.rb +112 -0
  129. metadata +209 -0
@@ -0,0 +1,269 @@
1
+ /* CHANGELISTS */
2
+
3
+ #changelist {
4
+ position: relative;
5
+ width: 100%;
6
+ }
7
+
8
+ #changelist table {
9
+ width: 100%;
10
+ }
11
+
12
+ .change-list .filtered table {
13
+ border-right: 1px solid #ddd;
14
+ }
15
+
16
+ .change-list .filtered {
17
+ min-height: 400px;
18
+ }
19
+
20
+ .change-list .filtered {
21
+ background: white url(../images/changelist-bg.gif) top right repeat-y !important;
22
+ }
23
+
24
+ .change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
25
+ margin-right: 160px !important;
26
+ width: auto !important;
27
+ }
28
+
29
+ .change-list .filtered table tbody th {
30
+ padding-right: 1em;
31
+ }
32
+
33
+ #changelist .toplinks {
34
+ border-bottom: 1px solid #ccc !important;
35
+ }
36
+
37
+ #changelist .paginator {
38
+ color: #666;
39
+ border-top: 1px solid #eee;
40
+ border-bottom: 1px solid #eee;
41
+ background: white url(../images/nav-bg.gif) 0 180% repeat-x;
42
+ overflow: hidden;
43
+ }
44
+
45
+ .change-list .filtered .paginator {
46
+ border-right: 1px solid #ddd;
47
+ }
48
+
49
+ /* CHANGELIST TABLES */
50
+
51
+ #changelist table thead th {
52
+ white-space: nowrap;
53
+ vertical-align: middle;
54
+ }
55
+
56
+ #changelist table thead th:first-child {
57
+ width: 1.5em;
58
+ text-align: center;
59
+ }
60
+
61
+ #changelist table tbody td {
62
+ border-left: 1px solid #ddd;
63
+ }
64
+
65
+ #changelist table tbody td:first-child {
66
+ border-left: 0;
67
+ border-right: 1px solid #ddd;
68
+ text-align: center;
69
+ }
70
+
71
+ #changelist table tfoot {
72
+ color: #666;
73
+ }
74
+
75
+ /* TOOLBAR */
76
+
77
+ #changelist #toolbar {
78
+ padding: 3px;
79
+ border-bottom: 1px solid #ddd;
80
+ background: #e1e1e1 url(../images/nav-bg.gif) top left repeat-x;
81
+ color: #666;
82
+ }
83
+
84
+ #changelist #toolbar form input {
85
+ font-size: 11px;
86
+ padding: 1px 2px;
87
+ }
88
+
89
+ #changelist #toolbar form #searchbar {
90
+ padding: 2px;
91
+ }
92
+
93
+ #changelist #changelist-search img {
94
+ vertical-align: middle;
95
+ }
96
+
97
+ /* FILTER COLUMN */
98
+
99
+ #changelist-filter {
100
+ position: absolute;
101
+ top: 0;
102
+ right: 0;
103
+ z-index: 1000;
104
+ width: 160px;
105
+ border-left: 1px solid #ddd;
106
+ background: #efefef;
107
+ margin: 0;
108
+ }
109
+
110
+ #changelist-filter h2 {
111
+ font-size: 11px;
112
+ padding: 2px 5px;
113
+ border-bottom: 1px solid #ddd;
114
+ }
115
+
116
+ #changelist-filter h3 {
117
+ font-size: 12px;
118
+ margin-bottom: 0;
119
+ }
120
+
121
+ #changelist-filter ul {
122
+ padding-left: 0;
123
+ margin-left: 10px;
124
+ }
125
+
126
+ #changelist-filter li {
127
+ list-style-type: none;
128
+ margin-left: 0;
129
+ padding-left: 0;
130
+ }
131
+
132
+ #changelist-filter a {
133
+ color: #999;
134
+ }
135
+
136
+ #changelist-filter a:hover {
137
+ color: #036;
138
+ }
139
+
140
+ #changelist-filter li.selected {
141
+ border-left: 5px solid #ccc;
142
+ padding-left: 5px;
143
+ margin-left: -10px;
144
+ }
145
+
146
+ #changelist-filter li.selected a {
147
+ color: #5b80b2 !important;
148
+ }
149
+
150
+ /* DATE DRILLDOWN */
151
+
152
+ .change-list ul.toplinks {
153
+ display: block;
154
+ background: white url(../images/nav-bg-reverse.gif) 0 -10px repeat-x;
155
+ border-top: 1px solid white;
156
+ float: left;
157
+ padding: 0 !important;
158
+ margin: 0 !important;
159
+ width: 100%;
160
+ }
161
+
162
+ .change-list ul.toplinks li {
163
+ float: left;
164
+ width: 9em;
165
+ padding: 3px 6px;
166
+ font-weight: bold;
167
+ list-style-type: none;
168
+ }
169
+
170
+ .change-list ul.toplinks .date-back a {
171
+ color: #999;
172
+ }
173
+
174
+ .change-list ul.toplinks .date-back a:hover {
175
+ color: #036;
176
+ }
177
+
178
+ /* PAGINATOR */
179
+
180
+ .paginator {
181
+ font-size: 11px;
182
+ padding-top: 10px;
183
+ padding-bottom: 10px;
184
+ line-height: 22px;
185
+ margin: 0;
186
+ border-top: 1px solid #ddd;
187
+ }
188
+
189
+ .paginator a:link, .paginator a:visited {
190
+ padding: 2px 6px;
191
+ border: solid 1px #ccc;
192
+ background: white;
193
+ text-decoration: none;
194
+ }
195
+
196
+ .paginator a.showall {
197
+ padding: 0 !important;
198
+ border: none !important;
199
+ }
200
+
201
+ .paginator a.showall:hover {
202
+ color: #036 !important;
203
+ background: transparent !important;
204
+ }
205
+
206
+ .paginator .end {
207
+ border-width: 2px !important;
208
+ margin-right: 6px;
209
+ }
210
+
211
+ .paginator .this-page {
212
+ padding: 2px 6px;
213
+ font-weight: bold;
214
+ font-size: 13px;
215
+ vertical-align: top;
216
+ }
217
+
218
+ .paginator a:hover {
219
+ color: white;
220
+ background: #5b80b2;
221
+ border-color: #036;
222
+ }
223
+
224
+ /* ACTIONS */
225
+
226
+ .filtered .actions {
227
+ margin-right: 160px !important;
228
+ border-right: 1px solid #ddd;
229
+ }
230
+
231
+ #changelist table input {
232
+ margin: 0;
233
+ }
234
+
235
+ #changelist table tbody tr.selected {
236
+ background-color: #FFFFCC;
237
+ }
238
+
239
+ #changelist .actions {
240
+ color: #999;
241
+ padding: 3px;
242
+ border-top: 1px solid #fff;
243
+ border-bottom: 1px solid #ddd;
244
+ background: white url(../images/nav-bg-reverse.gif) 0 -10px repeat-x;
245
+ }
246
+
247
+ #changelist .actions:last-child {
248
+ border-bottom: none;
249
+ }
250
+
251
+ #changelist .actions select {
252
+ border: 1px solid #aaa;
253
+ margin-left: 0.5em;
254
+ padding: 1px 2px;
255
+ }
256
+
257
+ #changelist .actions label {
258
+ font-size: 11px;
259
+ margin-left: 0.5em;
260
+ }
261
+
262
+ #changelist #action-toggle {
263
+ display: none;
264
+ }
265
+
266
+ #changelist .actions .button {
267
+ font-size: 11px;
268
+ padding: 1px 2px;
269
+ }
@@ -0,0 +1,24 @@
1
+ /* DASHBOARD */
2
+
3
+ .dashboard .module table th {
4
+ width: 100%;
5
+ }
6
+
7
+ .dashboard .module table td {
8
+ white-space: nowrap;
9
+ }
10
+
11
+ .dashboard .module table td a {
12
+ display: block;
13
+ padding-right: .6em;
14
+ }
15
+
16
+ /* RECENT ACTIONS MODULE */
17
+
18
+ .module ul.actionlist {
19
+ margin-left: 0;
20
+ }
21
+
22
+ ul.actionlist li {
23
+ list-style-type: none;
24
+ }
@@ -0,0 +1,327 @@
1
+ @import url('widgets.css');
2
+
3
+ /* FORM ROWS */
4
+
5
+ .form-row {
6
+ overflow: hidden;
7
+ padding: 8px 12px;
8
+ font-size: 11px;
9
+ border-bottom: 1px solid #eee;
10
+ }
11
+
12
+ .form-row img, .form-row input {
13
+ vertical-align: middle;
14
+ }
15
+
16
+ form .form-row p {
17
+ padding-left: 0;
18
+ font-size: 11px;
19
+ }
20
+
21
+ /* FORM LABELS */
22
+
23
+ form h4 {
24
+ margin: 0 !important;
25
+ padding: 0 !important;
26
+ border: none !important;
27
+ }
28
+
29
+ label {
30
+ font-weight: normal !important;
31
+ color: #666;
32
+ font-size: 12px;
33
+ }
34
+
35
+ .required label, label.required {
36
+ font-weight: bold !important;
37
+ color: #333 !important;
38
+ }
39
+
40
+ /* RADIO BUTTONS */
41
+
42
+ form ul.radiolist li {
43
+ list-style-type: none;
44
+ }
45
+
46
+ form ul.radiolist label {
47
+ float: none;
48
+ display: inline;
49
+ }
50
+
51
+ form ul.inline {
52
+ margin-left: 0;
53
+ padding: 0;
54
+ }
55
+
56
+ form ul.inline li {
57
+ float: left;
58
+ padding-right: 7px;
59
+ }
60
+
61
+ /* ALIGNED FIELDSETS */
62
+
63
+ .aligned label {
64
+ display: block;
65
+ padding: 3px 10px 0 0;
66
+ float: left;
67
+ width: 8em;
68
+ }
69
+
70
+ .colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
71
+ width: 350px;
72
+ }
73
+
74
+ form .aligned p, form .aligned ul {
75
+ margin-left: 7em;
76
+ padding-left: 30px;
77
+ }
78
+
79
+ form .aligned table p {
80
+ margin-left: 0;
81
+ padding-left: 0;
82
+ }
83
+
84
+ form .aligned p.help {
85
+ padding-left: 38px;
86
+ }
87
+
88
+ .aligned .vCheckboxLabel {
89
+ float: none !important;
90
+ display: inline;
91
+ padding-left: 4px;
92
+ }
93
+
94
+ .colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
95
+ width: 610px;
96
+ }
97
+
98
+ .checkbox-row p.help {
99
+ margin-left: 0;
100
+ padding-left: 0 !important;
101
+ }
102
+
103
+ fieldset .field-box {
104
+ float: left;
105
+ margin-right: 20px;
106
+ }
107
+
108
+ /* WIDE FIELDSETS */
109
+
110
+ .wide label {
111
+ width: 15em !important;
112
+ }
113
+
114
+ form .wide p {
115
+ margin-left: 15em;
116
+ }
117
+
118
+ form .wide p.help {
119
+ padding-left: 38px;
120
+ }
121
+
122
+ .colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
123
+ width: 450px;
124
+ }
125
+
126
+ /* COLLAPSED FIELDSETS */
127
+
128
+ fieldset.collapsed * {
129
+ display: none;
130
+ }
131
+
132
+ fieldset.collapsed h2, fieldset.collapsed {
133
+ display: block !important;
134
+ }
135
+
136
+ fieldset.collapsed h2 {
137
+ background-image: url(../images/nav-bg.gif);
138
+ background-position: bottom left;
139
+ color: #999;
140
+ }
141
+
142
+ fieldset.collapsed .collapse-toggle {
143
+ padding: 3px 5px !important;
144
+ background: transparent;
145
+ display: inline !important;
146
+ }
147
+
148
+ /* MONOSPACE TEXTAREAS */
149
+
150
+ fieldset.monospace textarea {
151
+ font-family: "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace;
152
+ }
153
+
154
+ /* SUBMIT ROW */
155
+
156
+ .submit-row {
157
+ padding: 5px 7px;
158
+ text-align: right;
159
+ background: white url(../images/nav-bg.gif) 0 100% repeat-x;
160
+ border: 1px solid #ccc;
161
+ margin: 5px 0;
162
+ overflow: hidden;
163
+ }
164
+
165
+ .submit-row input {
166
+ margin: 0 0 0 5px;
167
+ }
168
+
169
+ .submit-row p {
170
+ margin: 0.3em;
171
+ }
172
+
173
+ .submit-row p.deletelink-box {
174
+ float: left;
175
+ }
176
+
177
+ .submit-row .deletelink {
178
+ background: url(../images/icon_deletelink.gif) 0 50% no-repeat;
179
+ padding-left: 14px;
180
+ }
181
+
182
+ /* CUSTOM FORM FIELDS */
183
+
184
+ .vSelectMultipleField {
185
+ vertical-align: top !important;
186
+ }
187
+
188
+ .vCheckboxField {
189
+ border: none;
190
+ }
191
+
192
+ .vDateField, .vTimeField {
193
+ margin-right: 2px;
194
+ }
195
+
196
+ .vURLField {
197
+ width: 30em;
198
+ }
199
+
200
+ .vLargeTextField, .vXMLLargeTextField {
201
+ width: 48em;
202
+ }
203
+
204
+ .flatpages-flatpage #id_content {
205
+ height: 40.2em;
206
+ }
207
+
208
+ .module table .vPositiveSmallIntegerField {
209
+ width: 2.2em;
210
+ }
211
+
212
+ .vTextField {
213
+ width: 20em;
214
+ }
215
+
216
+ .vIntegerField {
217
+ width: 5em;
218
+ }
219
+
220
+ .vForeignKeyRawIdAdminField {
221
+ width: 5em;
222
+ }
223
+
224
+ /* INLINES */
225
+
226
+ .inline-group {
227
+ padding: 0;
228
+ border: 1px solid #ccc;
229
+ margin: 10px 0;
230
+ }
231
+
232
+ .inline-group .aligned label {
233
+ width: 8em;
234
+ }
235
+
236
+ .inline-related {
237
+ position: relative;
238
+ }
239
+
240
+ .inline-related h3 {
241
+ margin: 0;
242
+ color: #666;
243
+ padding: 3px 5px;
244
+ font-size: 11px;
245
+ background: #e1e1e1 url(../images/nav-bg.gif) top left repeat-x;
246
+ border-bottom: 1px solid #ddd;
247
+ }
248
+
249
+ .inline-related h3 span.delete {
250
+ padding-left: 20px;
251
+ position: absolute;
252
+ top: 2px;
253
+ right: 10px;
254
+ }
255
+
256
+ .inline-related h3 span.delete label {
257
+ margin-left: 2px;
258
+ font-size: 11px;
259
+ }
260
+
261
+ .inline-related fieldset {
262
+ margin: 0;
263
+ background: #fff;
264
+ border: none;
265
+ }
266
+
267
+ .inline-related fieldset.module h3 {
268
+ margin: 0;
269
+ padding: 2px 5px 3px 5px;
270
+ font-size: 11px;
271
+ text-align: left;
272
+ font-weight: bold;
273
+ background: #bcd;
274
+ color: #fff;
275
+ }
276
+
277
+ .inline-related.tabular fieldset.module table {
278
+ width: 100%;
279
+ }
280
+
281
+ .last-related fieldset {
282
+ border: none;
283
+ }
284
+
285
+ .inline-group .tabular tr.has_original td {
286
+ padding-top: 2em;
287
+ }
288
+
289
+ .inline-group .tabular tr td.original {
290
+ padding: 2px 0 0 0;
291
+ width: 0;
292
+ _position: relative;
293
+ }
294
+
295
+ .inline-group .tabular th.original {
296
+ width: 0px;
297
+ padding: 0;
298
+ }
299
+
300
+ .inline-group .tabular td.original p {
301
+ position: absolute;
302
+ left: 0;
303
+ height: 1.1em;
304
+ padding: 2px 7px;
305
+ overflow: hidden;
306
+ font-size: 9px;
307
+ font-weight: bold;
308
+ color: #666;
309
+ _width: 700px;
310
+ }
311
+
312
+ .inline-group ul.tools {
313
+ padding: 0;
314
+ margin: 0;
315
+ list-style: none;
316
+ }
317
+
318
+ .inline-group ul.tools li {
319
+ display: inline;
320
+ padding: 0 5px;
321
+ }
322
+
323
+ .inline-group ul.tools a.add {
324
+ background: url(../images/icon_addlink.gif) 0 50% no-repeat;
325
+ padding-left: 14px;
326
+ }
327
+