grandstand 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/.gitignore +2 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +7 -0
  4. data/Rakefile +44 -0
  5. data/VERSION +1 -0
  6. data/app/controllers/admin/galleries_controller.rb +52 -0
  7. data/app/controllers/admin/images_controller.rb +68 -0
  8. data/app/controllers/admin/main_controller.rb +36 -0
  9. data/app/controllers/admin/pages_controller.rb +51 -0
  10. data/app/controllers/admin/posts_controller.rb +48 -0
  11. data/app/controllers/admin/sessions_controller.rb +41 -0
  12. data/app/controllers/admin/templates_controller.rb +6 -0
  13. data/app/controllers/admin/users_controller.rb +48 -0
  14. data/app/controllers/galleries_controller.rb +5 -0
  15. data/app/controllers/pages_controller.rb +5 -0
  16. data/app/controllers/posts_controller.rb +5 -0
  17. data/app/helpers/admin/main_helper.rb +31 -0
  18. data/app/helpers/admin/pages_helper.rb +2 -0
  19. data/app/helpers/admin/posts_helper.rb +2 -0
  20. data/app/helpers/admin/sessions_helper.rb +2 -0
  21. data/app/helpers/admin/templates_helper.rb +2 -0
  22. data/app/helpers/admin/users_helper.rb +2 -0
  23. data/app/helpers/pages_helper.rb +2 -0
  24. data/app/helpers/posts_helper.rb +2 -0
  25. data/app/helpers/site_helper.rb +2 -0
  26. data/app/models/gallery.rb +22 -0
  27. data/app/models/image.rb +61 -0
  28. data/app/models/page.rb +45 -0
  29. data/app/models/page_section.rb +6 -0
  30. data/app/models/post.rb +27 -0
  31. data/app/models/template.rb +33 -0
  32. data/app/models/user.rb +68 -0
  33. data/app/stylesheets/_buttons.less +76 -0
  34. data/app/stylesheets/_dialogs.less +85 -0
  35. data/app/stylesheets/application.less +238 -0
  36. data/app/stylesheets/global.less +435 -0
  37. data/app/stylesheets/login.less +30 -0
  38. data/app/stylesheets/wysiwyg.less +96 -0
  39. data/app/views/admin/galleries/_form.html.erb +11 -0
  40. data/app/views/admin/galleries/_gallery.html.erb +16 -0
  41. data/app/views/admin/galleries/_list.html.erb +17 -0
  42. data/app/views/admin/galleries/delete.html.erb +8 -0
  43. data/app/views/admin/galleries/edit.html.erb +8 -0
  44. data/app/views/admin/galleries/editor.html.erb +13 -0
  45. data/app/views/admin/galleries/editor_with_images.html.erb +19 -0
  46. data/app/views/admin/galleries/index.html.erb +13 -0
  47. data/app/views/admin/galleries/new.html.erb +8 -0
  48. data/app/views/admin/galleries/show.html.erb +15 -0
  49. data/app/views/admin/images/_form.html.erb +11 -0
  50. data/app/views/admin/images/delete.html.erb +8 -0
  51. data/app/views/admin/images/edit.html.erb +8 -0
  52. data/app/views/admin/images/new.html.erb +8 -0
  53. data/app/views/admin/images/upload.html.erb +11 -0
  54. data/app/views/admin/main/index.html.erb +10 -0
  55. data/app/views/admin/pages/_form.html.erb +33 -0
  56. data/app/views/admin/pages/_left.html.erb +3 -0
  57. data/app/views/admin/pages/_row.html.erb +9 -0
  58. data/app/views/admin/pages/delete.html.erb +8 -0
  59. data/app/views/admin/pages/edit.html.erb +8 -0
  60. data/app/views/admin/pages/index.html.erb +20 -0
  61. data/app/views/admin/pages/new.html.erb +8 -0
  62. data/app/views/admin/pages/show.html.erb +3 -0
  63. data/app/views/admin/posts/_form.html.erb +29 -0
  64. data/app/views/admin/posts/_left.html.erb +3 -0
  65. data/app/views/admin/posts/_list.html.erb +22 -0
  66. data/app/views/admin/posts/delete.html.erb +9 -0
  67. data/app/views/admin/posts/edit.html.erb +10 -0
  68. data/app/views/admin/posts/index.html.erb +10 -0
  69. data/app/views/admin/posts/new.html.erb +10 -0
  70. data/app/views/admin/posts/show.html.erb +4 -0
  71. data/app/views/admin/sessions/forgot.html.erb +8 -0
  72. data/app/views/admin/sessions/show.html.erb +12 -0
  73. data/app/views/admin/shared/_flash.html.erb +3 -0
  74. data/app/views/admin/users/_form.html.erb +16 -0
  75. data/app/views/admin/users/_left.html.erb +3 -0
  76. data/app/views/admin/users/delete.html.erb +10 -0
  77. data/app/views/admin/users/edit.html.erb +8 -0
  78. data/app/views/admin/users/index.html.erb +22 -0
  79. data/app/views/admin/users/new.html.erb +8 -0
  80. data/app/views/admin/users/show.html.erb +12 -0
  81. data/app/views/galleries/index.html.erb +0 -0
  82. data/app/views/galleries/show.html.erb +12 -0
  83. data/app/views/layouts/admin.html.erb +80 -0
  84. data/app/views/layouts/admin_login.html.erb +17 -0
  85. data/app/views/layouts/admin_xhr.html.erb +3 -0
  86. data/app/views/pages/show.html.erb +8 -0
  87. data/app/views/posts/show.html.erb +3 -0
  88. data/app/views/shared/404.html.erb +5 -0
  89. data/app/views/shared/gallery.html +14 -0
  90. data/app/views/shared/image.html +1 -0
  91. data/app/views/shared/page.html +0 -0
  92. data/app/views/shared/post.html +3 -0
  93. data/grandstand.gemspec +189 -0
  94. data/lib/grandstand/application.rb +50 -0
  95. data/lib/grandstand/controller/development.rb +15 -0
  96. data/lib/grandstand/controller.rb +104 -0
  97. data/lib/grandstand/helper.rb +117 -0
  98. data/lib/grandstand/routes.rb +59 -0
  99. data/lib/grandstand/session.rb +25 -0
  100. data/lib/grandstand.rb +27 -0
  101. data/public/.DS_Store +0 -0
  102. data/public/admin/.DS_Store +0 -0
  103. data/public/admin/images/.DS_Store +0 -0
  104. data/public/admin/images/background-input.gif +0 -0
  105. data/public/admin/images/background-progress-bar.png +0 -0
  106. data/public/admin/images/background-progress-complete.gif +0 -0
  107. data/public/admin/images/background-progress.gif +0 -0
  108. data/public/admin/images/icons/.DS_Store +0 -0
  109. data/public/admin/images/icons/add.png +0 -0
  110. data/public/admin/images/icons/collapse.png +0 -0
  111. data/public/admin/images/icons/delete.png +0 -0
  112. data/public/admin/images/icons/edit.png +0 -0
  113. data/public/admin/images/icons/editor/bold.png +0 -0
  114. data/public/admin/images/icons/editor/gallery.png +0 -0
  115. data/public/admin/images/icons/editor/image-center.png +0 -0
  116. data/public/admin/images/icons/editor/image-left.png +0 -0
  117. data/public/admin/images/icons/editor/image-right.png +0 -0
  118. data/public/admin/images/icons/editor/image.png +0 -0
  119. data/public/admin/images/icons/editor/italic.png +0 -0
  120. data/public/admin/images/icons/editor/ordered-list.png +0 -0
  121. data/public/admin/images/icons/editor/quote.png +0 -0
  122. data/public/admin/images/icons/editor/source.png +0 -0
  123. data/public/admin/images/icons/editor/strikethrough.png +0 -0
  124. data/public/admin/images/icons/editor/underline.png +0 -0
  125. data/public/admin/images/icons/editor/unordered-list.png +0 -0
  126. data/public/admin/images/icons/error.png +0 -0
  127. data/public/admin/images/icons/expand.png +0 -0
  128. data/public/admin/images/icons/galleries.png +0 -0
  129. data/public/admin/images/icons/gallery.png +0 -0
  130. data/public/admin/images/icons/image.png +0 -0
  131. data/public/admin/images/icons/okay.png +0 -0
  132. data/public/admin/images/icons/pages.png +0 -0
  133. data/public/admin/images/icons/posts.png +0 -0
  134. data/public/admin/images/icons/upload.png +0 -0
  135. data/public/admin/images/icons/users.png +0 -0
  136. data/public/admin/images/logo.png +0 -0
  137. data/public/admin/images/spinner-dark.gif +0 -0
  138. data/public/admin/images/uploader.swf +0 -0
  139. data/public/admin/javascripts/application.js +231 -0
  140. data/public/admin/javascripts/jquery.js +404 -0
  141. data/public/admin/javascripts/mustache.js +324 -0
  142. data/public/admin/javascripts/selection.js +280 -0
  143. data/public/admin/javascripts/string.js +264 -0
  144. data/public/admin/javascripts/wysiwyg.js +335 -0
  145. data/public/admin/stylesheets/application.css +1 -0
  146. data/public/admin/stylesheets/global.css +1 -0
  147. data/public/admin/stylesheets/login.css +1 -0
  148. data/public/admin/stylesheets/wysiwyg-content.css +20 -0
  149. data/public/admin/stylesheets/wysiwyg.css +1 -0
  150. data/vendor/cache/more-0.1.1.gem +0 -0
  151. metadata +216 -0
@@ -0,0 +1,435 @@
1
+ /*
2
+ global.less contains the styling for rendering the admin UI in any context, assuming
3
+ it lives somewhere underneath a .admin item. This will allow you to take global UI
4
+ elements and apply them externally or internally - whatever you feel like.
5
+ */
6
+ @import url('_buttons');
7
+
8
+ body, html {
9
+ min-height:100%;
10
+ }
11
+
12
+ body.admin {
13
+ background-color:#fff;
14
+ background-image:-moz-linear-gradient(top, #fff, #eee);
15
+ background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
16
+ font:12px Arial, sans-serif;
17
+ margin:0;
18
+ padding:0;
19
+ }
20
+
21
+ .admin {
22
+ /* HTML Tags (excluding form input elements) */
23
+ a {
24
+ cursor:pointer;
25
+ text-decoration:none;
26
+ }
27
+
28
+ a img {
29
+ border-width:0;
30
+ }
31
+
32
+ form {
33
+ label {
34
+ color:#666;
35
+ display:block;
36
+ font:bold 12px Arial;
37
+ margin-bottom:3px;
38
+ }
39
+
40
+ .field {
41
+ margin:0;
42
+ padding:10px 5px;
43
+ }
44
+ }
45
+
46
+ h1, h2 {
47
+ font-family:'Calibiri', 'Helvetica Neue', Helvetica, Arial, sans-serif;
48
+
49
+ .button {
50
+ margin-left:10px;
51
+ vertical-align:center;
52
+ }
53
+ }
54
+
55
+ h1 {
56
+ margin:0 0 10px 0;
57
+ font-size:16pt;
58
+ }
59
+
60
+ h2 {
61
+ margin:0 0 5px 0;
62
+ font-size:14pt;
63
+ }
64
+
65
+ table {
66
+ border-collapse:collapse;
67
+ border-spacing:0;
68
+ width:100%;
69
+ }
70
+
71
+ table {
72
+ tbody, tr {
73
+ width:100%;
74
+ }
75
+ }
76
+
77
+
78
+ /* Tag-specific classes */
79
+ select.error {
80
+ border:1px solid #f00;
81
+ }
82
+
83
+ select.multiple {
84
+ min-height:55px;
85
+ min-width:150px;
86
+ }
87
+
88
+ select.small {
89
+ width:50px;
90
+ }
91
+
92
+ textarea.small {
93
+ height:32px;
94
+ width:180px;
95
+ }
96
+
97
+ textarea.wysiwyg {
98
+ display:block;
99
+ height:400px;
100
+ width:100%;
101
+ }
102
+
103
+ textarea.error, input.error {
104
+ border:1px solid #f00 !important;
105
+ }
106
+
107
+ tr.item {
108
+ background-color:#fff;
109
+ }
110
+
111
+ tr.item.odd {
112
+ background-color:#edf3fe;
113
+ }
114
+
115
+ tr.item td {
116
+ padding:5px;
117
+ }
118
+
119
+ tr.item td.icon {
120
+ background-position:5px 2px;
121
+ padding-left:25px;
122
+ }
123
+
124
+ /* General Classes */
125
+ .container {
126
+ float:left;
127
+ margin:0 0 10px 10px;
128
+ padding:0 !important;
129
+ width:220px;
130
+ }
131
+
132
+ .container.gallery img {
133
+ display:none;
134
+ }
135
+
136
+ .container.gallery a img, .container.image img {
137
+ display:block;
138
+ padding:10px;
139
+ }
140
+
141
+ .container:hover {
142
+ background-color:#ececec;
143
+ }
144
+
145
+ .dropdown {
146
+ -moz-border-radius-bottomleft:5px;
147
+ -moz-border-radius-bottomright:5px;
148
+ -moz-box-shadow:#444 0 2px 2px;
149
+ -webkit-border-bottom-left-radius:5px;
150
+ -webkit-border-bottom-right-radius:5px;
151
+ -webkit-box-shadow:#444 0 2px 2px;
152
+ }
153
+
154
+ .grid {
155
+ border-collapse:collapse;
156
+ border:1px solid #aaa;
157
+
158
+ thead th {
159
+ background:#eee;
160
+ padding:5px;
161
+ text-align:left;
162
+ }
163
+
164
+ tbody {
165
+ tr.row {
166
+ td {
167
+ border-top:1px solid #aaa;
168
+ padding:5px;
169
+ }
170
+
171
+ td.actions {
172
+ text-align:right;
173
+ }
174
+ }
175
+
176
+ tr.one {
177
+ background-color:#fff;
178
+ }
179
+
180
+ tr.two {
181
+ background-color:#edf3fe;
182
+ }
183
+ }
184
+ }
185
+
186
+ .grey {
187
+ color:#666;
188
+ }
189
+
190
+ .header {
191
+ background-color:#a7a7a7;
192
+ background-image:-moz-linear-gradient(top, #cacaca, #a7a7a7);
193
+ background-image:-webkit-gradient(linear, left top, left bottom, from(#cacaca), to(#a7a7a7));
194
+ border-bottom:1px solid #888;
195
+ overflow:hidden;
196
+ padding:5px;
197
+ -moz-border-radius-topleft:5px;
198
+ -moz-border-radius-topright:5px;
199
+ -webkit-border-top-left-radius:5px;
200
+ -webkit-border-top-right-radius:5px;
201
+ }
202
+
203
+ .header .float-left {
204
+ cursor:move;
205
+ font-weight:bold;
206
+ }
207
+
208
+
209
+ .button {
210
+ #grandstand > .button-default;
211
+ }
212
+
213
+ .button::-moz-focus-inner {
214
+ border:none;
215
+ padding:0 !important;
216
+ }
217
+
218
+ .button:hover {
219
+ #grandstand > .button-hover;
220
+ }
221
+
222
+ .button:active {
223
+ #grandstand > .button-active;
224
+ }
225
+
226
+ .button.grey {
227
+ #grandstand > .button-grey;
228
+ }
229
+
230
+ .button.grey:hover {
231
+ #grandstand > .button-grey-hover;
232
+ }
233
+
234
+ .button.grey:active {
235
+ #grandstand > .button-grey-active;
236
+ }
237
+
238
+ .error {
239
+ margin-top:5px;
240
+ }
241
+
242
+ .errors label {
243
+ color:#f00;
244
+ }
245
+
246
+ .errors input.text, .errors select, .errors textarea {
247
+ border:1px solid #f00;
248
+ }
249
+
250
+ .flash {
251
+ bottom:20px;
252
+ position:fixed;
253
+ text-align:center;
254
+ width:100%;
255
+ z-index:4;
256
+ }
257
+
258
+ .flash .inner {
259
+ background:rgba(0, 0, 0, 0.7);
260
+ color:#fff;
261
+ display:inline-block;
262
+ font-size:24pt;
263
+ margin:0 auto;
264
+ padding:10px 20px;
265
+ -moz-border-radius:70px;
266
+ -webkit-border-radius:70px;
267
+ }
268
+
269
+ .float-left {
270
+ float:left;
271
+ }
272
+
273
+ .float-right {
274
+ float:right;
275
+ }
276
+
277
+ .icon {
278
+ background-position:left top;
279
+ background-repeat:no-repeat;
280
+ display:inline-block;
281
+ min-height:16px;
282
+ padding-left:20px;
283
+ }
284
+
285
+ .button:hover .icon, .icon:hover {
286
+ background-position:left bottom;
287
+ }
288
+
289
+ .button.has-icon {
290
+ padding-left:5px;
291
+ }
292
+
293
+ .icon.add {
294
+ background-image:url(../images/icons/add.png);
295
+ }
296
+
297
+ .icon.delete {
298
+ background-image:url(../images/icons/delete.png);
299
+ }
300
+
301
+ .icon.edit {
302
+ background-image:url(../images/icons/edit.png);
303
+ }
304
+
305
+ .icon.error {
306
+ background-image:url(../images/icons/error.png);
307
+ }
308
+
309
+ .icon.gallery {
310
+ background-image:url(../images/icons/gallery.png);
311
+ }
312
+
313
+ .icon.galleries {
314
+ background-image:url(../images/icons/galleries.png);
315
+ }
316
+
317
+ .icon.image {
318
+ background-image:url(../images/icons/image.png);
319
+ }
320
+
321
+ .icon.okay {
322
+ background-image:url(../images/icons/okay.png);
323
+ }
324
+
325
+ .icon.pages {
326
+ background-image:url(../images/icons/pages.png);
327
+ }
328
+
329
+ .icon.posts {
330
+ background-image:url(../images/icons/posts.png);
331
+ }
332
+
333
+ .icon.upload {
334
+ background-image:url(../images/icons/upload.png);
335
+ }
336
+
337
+ .icon.users {
338
+ background-image:url(../images/icons/users.png);
339
+ }
340
+
341
+ h1.icon {
342
+ line-height:48px;
343
+ padding-left:58px;
344
+ }
345
+
346
+ .inset {
347
+ background-color:#f0f0f0;
348
+ padding:10px;
349
+ -moz-border-radius:5px;
350
+ -webkit-border-radius:5px;
351
+ -moz-box-shadow:inset #888 0 1px 2px;
352
+ -webkit-box-shadow:inset #888 0 1px 2px;
353
+ }
354
+
355
+ .inset.icon {
356
+ background-position:5px 5px;
357
+ display:block;
358
+ padding-left:68px;
359
+ }
360
+
361
+ .progress-bar {
362
+ background:url(../images/background-progress-bar.png) repeat-x left center;
363
+ margin:0;
364
+ padding:0 !important;
365
+ width:200px;
366
+
367
+ .progress {
368
+ background:url(../images/background-progress.gif) repeat-x;
369
+ height:11px;
370
+ width:0;
371
+ }
372
+ }
373
+
374
+ .progress-bar.complete .progress {
375
+ background-image:url(../images/background-progress-complete.gif);
376
+ width:100%;
377
+ }
378
+
379
+ .right {
380
+ text-align:right;
381
+ }
382
+
383
+ /* Form Elements */
384
+ select {
385
+ padding:2px;
386
+ }
387
+
388
+ textarea {
389
+ height:50px;
390
+ }
391
+
392
+ input.text, textarea {
393
+ background:#fff url(../images/background-input.gif) repeat-x;
394
+ border-bottom:1px solid #ddd;
395
+ border-left:1px solid #c3c3c3;
396
+ border-right:1px solid #c3c3c3;
397
+ border-top:1px solid #7d7d7d;
398
+ padding:3px;
399
+ width:370px;
400
+ -moz-box-sizing:border-box;
401
+ -ms-box-sizing:border-box;
402
+ -webkit-box-sizing:border-box;
403
+ }
404
+
405
+ input.text.medium {
406
+ width:180px;
407
+ }
408
+
409
+ input.text.oversized {
410
+ /* display:block;*/
411
+ font-size:18px;
412
+ width:100%;
413
+ }
414
+
415
+ input.half.text.oversized {
416
+ width:183px;
417
+ }
418
+
419
+ input.text.small {
420
+ width:94px;
421
+ }
422
+
423
+ input.text.tiny {
424
+ width:50px;
425
+ }
426
+
427
+ input.replace.unedited, textarea.replace.unedited {
428
+ color:#777 !important;
429
+ }
430
+
431
+ /* jQuery UI */
432
+ .ui-tabs-hide {
433
+ display:none;
434
+ }
435
+ }
@@ -0,0 +1,30 @@
1
+ /*
2
+ login.less simply contains the layout for the login page. This page is used
3
+ only for logging users into the site, and is pretty basic.
4
+ */
5
+
6
+ #logo {
7
+ left:50%;
8
+ margin-left:-190px;
9
+ position:absolute;
10
+ top:100px;
11
+ }
12
+
13
+ #login {
14
+ /* background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
15
+ background-image:-moz-linear-gradient(top, #eee, #ddd);
16
+ */
17
+ border-bottom:1px solid #fff;
18
+ left:50%;
19
+ margin:0 0 0 -200px;
20
+ position:absolute;
21
+ padding:2em;
22
+ top:130px;
23
+ width:400px;
24
+ -moz-box-sizing:border-box;
25
+ -ms-box-sizing:border-box;
26
+ -webkit-box-sizing:border-box;
27
+ -moz-border-radius:5px;
28
+ -webkit-border-radius:5px;
29
+ /* -webkit-box-shadow:rgba(0, 0, 0, 0.5) 0 0 5px;*/
30
+ }
@@ -0,0 +1,96 @@
1
+ /*
2
+ wysiwyg.less contains the CSS for any WYSIWYG editors that are rendered
3
+ in the admin interface or during site preview. It mostly makes sure things
4
+ look okay no matter where they happen. Important to note is that when
5
+ in preview mode, we keep the Grandstand UI theming from global.less,
6
+ even though it's nested inside someone else's UI. This may not be very
7
+ pretty, so you should consider extending external.css to include any
8
+ overrides you may have.
9
+ */
10
+ @import url('_buttons');
11
+ @import url('_dialogs');
12
+
13
+ .admin .wysiwyg {
14
+ border:1px solid #888;
15
+ overflow:hidden;
16
+ position:relative;
17
+ -webkit-border-radius:3px;
18
+
19
+ .toolbar {
20
+ #grandstand > .styled-toolbar;
21
+ border-bottom:1px solid #444;
22
+ position:relative;
23
+ z-index:4;
24
+
25
+ .button {
26
+ line-height:0;
27
+ padding:3px;
28
+
29
+ .icon {
30
+ background-position:center top;
31
+ }
32
+
33
+ .icon.bold {
34
+ background-image:url(../images/icons/editor/bold.png);
35
+ }
36
+
37
+ .icon.italic {
38
+ background-image:url(../images/icons/editor/italic.png);
39
+ }
40
+
41
+ .icon.ordered-list {
42
+ background-image:url(../images/icons/editor/ordered-list.png);
43
+ }
44
+
45
+ .icon.unordered-list {
46
+ background-image:url(../images/icons/editor/unordered-list.png);
47
+ }
48
+ }
49
+
50
+ .button:hover .icon {
51
+ background-position:center bottom;
52
+ }
53
+ }
54
+
55
+ iframe {
56
+ background:#fff url(../images/background-input.gif) repeat-x;
57
+ /* border-bottom:1px solid #ddd;
58
+ border-left:1px solid #c3c3c3;
59
+ border-right:1px solid #c3c3c3;
60
+ border-top:1px solid #7d7d7d;*/
61
+ display:block;
62
+ height:400px;
63
+ width:100%;
64
+ -webkit-border-bottom-left-radius:3px;
65
+ -webkit-border-bottom-right-radius:3px;
66
+ }
67
+
68
+ textarea {
69
+ border-width:0;
70
+ /* padding:0;*/
71
+ }
72
+
73
+ .cover {
74
+ background-color:rgba(255, 255, 255, 0.9);
75
+ height:100%;
76
+ left:0;
77
+ position:absolute;
78
+ top:0;
79
+ width:100%;
80
+ z-index:1;
81
+ -webkit-border-radius:3px;
82
+ }
83
+
84
+ .loading {
85
+ background:rgba(0, 0, 0, 0.7) url(../images/spinner-dark.gif) center center no-repeat;
86
+ height:50px;
87
+ left:50%;
88
+ margin:-25px 0 0 -25px;
89
+ position:absolute;
90
+ top:50%;
91
+ width:50px;
92
+ z-index:2;
93
+ -moz-border-radius:5px;
94
+ -webkit-border-radius:5px;
95
+ }
96
+ }
@@ -0,0 +1,11 @@
1
+ <% wrap_admin_form do -%>
2
+ <div class="field">
3
+ <%= form.label :name %>
4
+ <%= form.text_field :name, :class => 'text' %>
5
+ <%= errors_on(:gallery, :name) %>
6
+ </div>
7
+ <div class="field">
8
+ <%= form.label :description %>
9
+ <%= form.text_area :description %>
10
+ </div>
11
+ <% end -%>
@@ -0,0 +1,16 @@
1
+ <% editable ||= false -%>
2
+ <% gallery.images.each do |image| -%>
3
+ <div class="inset image container" id="images_<%= image.id %>">
4
+ <% if editable -%>
5
+ <div class="header">
6
+ <div class="float-left image icon">
7
+ <%= truncate(image.file.original_filename, :length => 23) %>
8
+ </div>
9
+ <div class="float-right">
10
+ <%= link_to '', edit_admin_gallery_image_path(gallery, image), :class => 'edit icon remote' %><%= link_to '', delete_admin_gallery_image_path(gallery, image), :class => 'delete icon remote' %>
11
+ </div>
12
+ </div>
13
+ <% end -%>
14
+ <%= image_tag(image.file.url(:admin_medium), :alt => image.caption) %>
15
+ </div>
16
+ <% end -%>
@@ -0,0 +1,17 @@
1
+ <% galleries.each do |gallery| -%>
2
+ <div class="inset gallery container" id="galleries_<%= gallery.url %>">
3
+ <div class="header">
4
+ <div class="float-left gallery icon">
5
+ <%= (gallery.name) %>
6
+ </div>
7
+ <div class="float-right">
8
+ <%= link_to '', edit_admin_gallery_path(gallery), :class => 'edit icon remote' %>
9
+ <%= link_to '', delete_admin_gallery_path(gallery), :class => 'delete icon remote' %>
10
+ </div>
11
+ </div>
12
+ <%= link_to(image_tag(gallery.cover_image.file.url(:admin_medium)), admin_gallery_path(gallery)) %>
13
+ <% gallery.images.limit(100).each do |image| -%>
14
+ <%= image_tag(image.file.url(:admin_medium)) %>
15
+ <% end -%>
16
+ </div>
17
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ <h2>Are you sure you want to do this?</h2>
2
+ <% form_for(@gallery, :html => {:method => :delete}, :url => admin_gallery_path(@gallery)) do %>
3
+ <div class="field">You cannot undo this once it's done! This gallery, and all of its pictures, will be gone forever - poof!</div>
4
+ <div class="toolbar">
5
+ <%= button('Delete') %>
6
+ <%= button_link_to('Cancel', return_path || admin_gallery_path(@gallery), :class => 'cancel') %>
7
+ </div>
8
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <h2>Edit Gallery</h2>
2
+ <% form_for(@gallery, :url => admin_gallery_path(@gallery)) do |form| -%>
3
+ <%= render :partial => 'form', :locals => {:form => form} %>
4
+ <div class="toolbar">
5
+ <%= button 'Save' %>
6
+ <%= button_link_to('Cancel', admin_galleries_path, :class => 'cancel') %>
7
+ </div>
8
+ <% end -%>
@@ -0,0 +1,13 @@
1
+ <form action="<%= request.fullpath %>" method="POST">
2
+ <div class="source">
3
+ <span class="header">Galleries</span>
4
+ <% @galleries.each do |gallery| -%>
5
+ <a href="<%= admin_gallery_path(gallery) %>">
6
+ <span class="icon" style="background-image:url(<%= gallery.cover_image.file.url(:admin_icon) %>);"><%= gallery.name %></span>
7
+ </a>
8
+ <% end -%>
9
+ </div>
10
+ <div class="destination">
11
+
12
+ </div>
13
+ </form>
@@ -0,0 +1,19 @@
1
+ <form action="<%= request.fullpath %>" method="POST">
2
+ <div class="source">
3
+ <div class="header">Galleries</div>
4
+ <% @galleries.each_with_index do |gallery, index| -%>
5
+ <a<%= raw ' class="active"' if index.zero? %> href="<%= admin_gallery_path(gallery) %>" rel="gallery-<%= gallery.to_param %>">
6
+ <span class="icon" style="background-image:url(<%= gallery.cover_image.file.url(:admin_icon) %>);"><%= gallery.name %></span>
7
+ </a>
8
+ <% end -%>
9
+ </div>
10
+ <div class="destination">
11
+ <div class="scrollable">
12
+ <% @galleries.each_with_index do |gallery, index| -%>
13
+ <div id="gallery-<%= gallery.to_param %>"<%= raw ' style="display:none;"' unless index.zero? %>>
14
+ <%= render :partial => 'gallery', :locals => {:gallery => gallery} %>
15
+ </div>
16
+ <% end -%>
17
+ </div>
18
+ </div>
19
+ </form>
@@ -0,0 +1,13 @@
1
+ <% content_for :left do %>
2
+ <%= button_link_to('Add a Gallery', new_admin_gallery_path, :class => 'remote', :icon => 'add') %>
3
+ <% end %>
4
+ <% if @galleries.empty? -%>
5
+ <div class="inset">
6
+ <h2>You haven't set up any galleries!</h2>
7
+ <b class="grey">Get started:</b> <%= button_link_to('Add a Gallery', new_admin_gallery_path, :class => 'remote', :icon => 'add') %>
8
+ </div>
9
+ <% else -%>
10
+ <div class="galleries sortable">
11
+ <%= render :partial => 'list', :locals => {:galleries => @galleries} %>
12
+ </div>
13
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ <h2>New Gallery</h2>
2
+ <% form_for(@gallery, :url => admin_galleries_path) do |form| -%>
3
+ <%= render :partial => 'form', :locals => {:form => form} %>
4
+ <div class="toolbar">
5
+ <%= button 'Add Gallery' %>
6
+ <%= button_link_to('Cancel', admin_galleries_path, :class => 'cancel') %>
7
+ </div>
8
+ <% end -%>
@@ -0,0 +1,15 @@
1
+ <% content_for :left do %>
2
+ <%= button_link_to('Upload An Image', new_admin_gallery_image_path(@gallery), :class => 'remote', :icon => 'upload') %>
3
+ <%= button_link_to('Upload Multiple', upload_admin_gallery_images_path(@gallery), :class => 'remote', :icon => 'upload') %>
4
+ <% end %>
5
+ <h1 class="galleries icon"><%= @gallery.name %> <%= button_link_to('Edit', edit_admin_gallery_path(@gallery), :class => 'remote', :icon => 'edit') %></h1>
6
+ <% if @gallery.images.empty? -%>
7
+ <div class="inset">
8
+ <h2>You haven't uploaded any images!</h2>
9
+ <b class="grey">Get started:</b> <%= button_link_to('Upload an Image', new_admin_gallery_image_path(@gallery), :class => 'remote') %>
10
+ </div>
11
+ <% else -%>
12
+ <div class="images sortable">
13
+ <%= render :partial => 'gallery', :locals => {:gallery => @gallery, :editable => true} %>
14
+ </div>
15
+ <% end -%>