spiderfw 0.6.21 → 0.6.22

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 (149) hide show
  1. data/CHANGELOG +33 -0
  2. data/Rakefile +0 -1
  3. data/VERSION +1 -1
  4. data/apps/core/admin/_init.rb +4 -0
  5. data/apps/core/admin/admin.rb +20 -4
  6. data/apps/core/admin/controllers/admin_controller.rb +63 -4
  7. data/apps/core/admin/controllers/app_admin_controller.rb +15 -0
  8. data/apps/core/admin/data/locale/it/LC_MESSAGES/admin.mo +0 -0
  9. data/apps/core/admin/po/admin.pot +33 -0
  10. data/apps/core/admin/po/it/admin.po +34 -0
  11. data/apps/core/admin/public/css/admin.css +13 -0
  12. data/apps/core/admin/public/css/login.css +51 -0
  13. data/apps/core/admin/public/css/sass/admin.css +198 -0
  14. data/apps/core/admin/public/css/sass/bootstrap/bootstrap.css +3107 -0
  15. data/apps/core/admin/public/img/css/header_bg.png +0 -0
  16. data/apps/core/admin/public/img/css/noise.png +0 -0
  17. data/apps/core/admin/public/img/css/side_bg.png +0 -0
  18. data/apps/core/admin/public/img/icons/logout.png +0 -0
  19. data/apps/core/admin/public/img/icons-s845a69dd9f.png +0 -0
  20. data/apps/core/admin/public/js/bootstrap-alerts.js +113 -0
  21. data/apps/core/admin/public/js/bootstrap-buttons.js +62 -0
  22. data/apps/core/admin/public/js/bootstrap-dropdown.js +55 -0
  23. data/apps/core/admin/public/js/bootstrap-modal.js +260 -0
  24. data/apps/core/admin/public/js/bootstrap-popover.js +90 -0
  25. data/apps/core/admin/public/js/bootstrap-scrollspy.js +107 -0
  26. data/apps/core/admin/public/js/bootstrap-tabs.js +80 -0
  27. data/apps/core/admin/public/js/bootstrap-twipsy.js +321 -0
  28. data/apps/core/admin/public/sass/admin.scss +167 -0
  29. data/apps/core/admin/public/sass/bootstrap/bootstrap.scss +29 -0
  30. data/apps/core/admin/public/sass/bootstrap/forms.scss +478 -0
  31. data/apps/core/admin/public/sass/bootstrap/mixins.scss +220 -0
  32. data/apps/core/admin/public/sass/bootstrap/patterns.scss +1062 -0
  33. data/apps/core/admin/public/sass/bootstrap/reset.scss +141 -0
  34. data/apps/core/admin/public/sass/bootstrap/scaffolding.scss +136 -0
  35. data/apps/core/admin/public/sass/bootstrap/tables.scss +224 -0
  36. data/apps/core/admin/public/sass/bootstrap/type.scss +187 -0
  37. data/apps/core/admin/public/sass/bootstrap/variables.scss +60 -0
  38. data/apps/core/admin/public/sass/grid.scss +54 -0
  39. data/apps/core/admin/views/_app_info.shtml +5 -0
  40. data/apps/core/admin/views/admin.layout.shtml +35 -0
  41. data/apps/core/admin/views/index.shtml +1 -1
  42. data/apps/core/admin/views/login.layout.shtml +13 -0
  43. data/apps/core/auth/controllers/mixins/auth_helper.rb +1 -1
  44. data/apps/core/auth/models/super_user.rb +6 -0
  45. data/apps/core/auth/models/user.rb +9 -0
  46. data/apps/core/components/assets.rb +5 -1
  47. data/apps/core/components/data/locale/it/LC_MESSAGES/spider_components.mo +0 -0
  48. data/apps/core/components/po/it/spider_components.po +23 -9
  49. data/apps/core/components/po/spider_components.pot +16 -8
  50. data/apps/core/components/public/css/admin.css +0 -12
  51. data/apps/core/components/public/css/crud.css +16 -19
  52. data/apps/core/components/public/css/table.css +11 -5
  53. data/apps/core/components/public/js/less-1.1.3.min.js +16 -0
  54. data/apps/core/components/public/widgets/table.js +1 -1
  55. data/apps/core/components/widgets/admin/admin.rb +10 -0
  56. data/apps/core/components/widgets/admin/admin.shtml +24 -4
  57. data/apps/core/components/widgets/confirm/confirm.rb +2 -2
  58. data/apps/core/components/widgets/confirm/confirm.shtml +5 -2
  59. data/apps/core/components/widgets/crud/crud.rb +10 -1
  60. data/apps/core/components/widgets/crud/crud.shtml +18 -21
  61. data/apps/core/components/widgets/menu/menu.shtml +1 -2
  62. data/apps/core/components/widgets/switcher/switcher.rb +6 -3
  63. data/apps/core/components/widgets/switcher/templates/default.shtml +3 -1
  64. data/apps/core/components/widgets/table/table.rb +3 -2
  65. data/apps/core/components/widgets/table/table.shtml +44 -25
  66. data/apps/core/forms/data/locale/it/LC_MESSAGES/spider_forms.mo +0 -0
  67. data/apps/core/forms/po/it/spider_forms.po +7 -2
  68. data/apps/core/forms/po/spider_forms.pot +5 -1
  69. data/apps/core/forms/public/css/form.css +3 -3
  70. data/apps/core/forms/public/css/html_area.css +0 -1
  71. data/apps/core/forms/public/date_time.js +4 -3
  72. data/apps/core/forms/public/select.js +5 -4
  73. data/apps/core/forms/tags/element_label.erb +1 -1
  74. data/apps/core/forms/tags/row.erb +1 -1
  75. data/apps/core/forms/widgets/form/form.rb +23 -1
  76. data/apps/core/forms/widgets/form/form.shtml +7 -8
  77. data/apps/core/forms/widgets/inputs/checkbox/checkbox.shtml +3 -3
  78. data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +3 -3
  79. data/apps/core/forms/widgets/inputs/file_input/file_input.rb +4 -2
  80. data/apps/core/forms/widgets/inputs/file_input/file_input.shtml +1 -1
  81. data/apps/core/forms/widgets/inputs/hidden/hidden.shtml +1 -1
  82. data/apps/core/forms/widgets/inputs/html_area/html_area.shtml +2 -2
  83. data/apps/core/forms/widgets/inputs/password/password.shtml +3 -3
  84. data/apps/core/forms/widgets/inputs/search_select/search_select.shtml +2 -2
  85. data/apps/core/forms/widgets/inputs/select/select.shtml +16 -13
  86. data/apps/core/forms/widgets/inputs/text/text.shtml +3 -3
  87. data/apps/core/forms/widgets/inputs/text_area/text_area.shtml +5 -2
  88. data/apps/core/forms/widgets/inputs/time_span/time_span.shtml +3 -3
  89. data/apps/messenger/_init.rb +10 -2
  90. data/apps/messenger/controllers/messenger_admin_controller.rb +53 -0
  91. data/apps/messenger/controllers/messenger_controller.rb +2 -0
  92. data/apps/messenger/controllers/mixins/messenger_helper.rb +2 -2
  93. data/apps/messenger/models/message.rb +1 -1
  94. data/apps/messenger/public/app_icon.png +0 -0
  95. data/apps/messenger/views/admin/_admin.layout.shtml +26 -0
  96. data/apps/messenger/views/admin/index.shtml +13 -0
  97. data/apps/messenger/views/admin/queue.shtml +28 -0
  98. data/apps/messenger/views/index.shtml +3 -3
  99. data/data/locale/it/LC_MESSAGES/spider.mo +0 -0
  100. data/lib/spiderfw/app.rb +10 -1
  101. data/lib/spiderfw/cache/template_cache.rb +21 -22
  102. data/lib/spiderfw/cmd/commands/app.rb +3 -3
  103. data/lib/spiderfw/cmd/commands/setup.rb +1 -1
  104. data/lib/spiderfw/config/options/spider.rb +18 -2
  105. data/lib/spiderfw/controller/controller.rb +9 -3
  106. data/lib/spiderfw/controller/dispatcher.rb +25 -12
  107. data/lib/spiderfw/controller/home_controller.rb +3 -3
  108. data/lib/spiderfw/controller/http_controller.rb +11 -0
  109. data/lib/spiderfw/controller/mixins/static_content.rb +3 -12
  110. data/lib/spiderfw/controller/mixins/visual.rb +21 -20
  111. data/lib/spiderfw/controller/request.rb +1 -3
  112. data/lib/spiderfw/http/adapters/mongrel.rb +1 -1
  113. data/lib/spiderfw/i18n/gettext.rb +14 -0
  114. data/lib/spiderfw/i18n/shtml_parser.rb +2 -2
  115. data/lib/spiderfw/model/base_model.rb +4 -3
  116. data/lib/spiderfw/model/mappers/db_mapper.rb +137 -79
  117. data/lib/spiderfw/model/mappers/mapper.rb +6 -2
  118. data/lib/spiderfw/model/migrations/drop_element.rb +1 -1
  119. data/lib/spiderfw/model/migrations/previous_model.rb +73 -0
  120. data/lib/spiderfw/model/migrations/rename_element.rb +42 -0
  121. data/lib/spiderfw/model/migrations.rb +14 -1
  122. data/lib/spiderfw/model/mixins/tree.rb +65 -19
  123. data/lib/spiderfw/model/model_hash.rb +9 -5
  124. data/lib/spiderfw/model/query.rb +8 -0
  125. data/lib/spiderfw/model/query_funcs.rb +23 -0
  126. data/lib/spiderfw/model/query_set.rb +1 -1
  127. data/lib/spiderfw/model/request.rb +11 -3
  128. data/lib/spiderfw/model/storage/db/adapters/mysql.rb +28 -1
  129. data/lib/spiderfw/model/storage/db/adapters/oracle.rb +10 -10
  130. data/lib/spiderfw/model/storage/db/db_schema.rb +20 -3
  131. data/lib/spiderfw/model/storage/db/db_storage.rb +39 -17
  132. data/lib/spiderfw/setup/app_manager.rb +69 -31
  133. data/lib/spiderfw/setup/setup_task.rb +76 -8
  134. data/lib/spiderfw/spider.rb +21 -1
  135. data/lib/spiderfw/templates/blocks/text.rb +4 -4
  136. data/lib/spiderfw/templates/blocks/text_domain.rb +25 -0
  137. data/lib/spiderfw/templates/blocks/widget.rb +1 -1
  138. data/lib/spiderfw/templates/layout.rb +160 -92
  139. data/lib/spiderfw/templates/resources/less.rb +10 -2
  140. data/lib/spiderfw/templates/resources/sass.rb +66 -9
  141. data/lib/spiderfw/templates/template.rb +35 -10
  142. data/lib/spiderfw/templates/template_blocks.rb +6 -3
  143. data/lib/spiderfw/utils/logger.rb +20 -0
  144. data/lib/spiderfw/utils/memory.rb +7 -3
  145. data/lib/spiderfw/widget/widget.rb +13 -7
  146. data/lib/spiderfw/widget/widget_attributes.rb +2 -2
  147. data/spider.gemspec +1 -0
  148. metadata +68 -11
  149. data/apps/core/admin/views/spider_admin.layout.shtml +0 -23
@@ -0,0 +1,478 @@
1
+ /* Forms.scss
2
+ * Base styles for various input types, form layouts, and states
3
+ * ------------------------------------------------------------- */
4
+
5
+
6
+ // FORM STYLES
7
+ // -----------
8
+
9
+ form {
10
+ margin-bottom: $baseline;
11
+ }
12
+
13
+ // Groups of fields with labels on top (legends)
14
+ fieldset {
15
+ margin-bottom: $baseline;
16
+ padding-top: $baseline;
17
+ legend {
18
+ display: block;
19
+ padding-left: 150px;
20
+ font-size: $basefont * 1.5;
21
+ line-height: 1;
22
+ color: $grayDark;
23
+ *padding: 0 0 5px 145px; /* IE6-7 */
24
+ *line-height: 1.5; /* IE6-7 */
25
+ }
26
+ }
27
+
28
+ // Parent element that clears floats and wraps labels and fields together
29
+ form .formrow {
30
+ margin-bottom: $baseline;
31
+ @include clearfix();
32
+ }
33
+
34
+ // Set font for forms
35
+ label,
36
+ input,
37
+ select,
38
+ textarea {
39
+ @include sans-serif-font(normal,13px,normal);
40
+ }
41
+
42
+ // Float labels left
43
+ label {
44
+ padding-top: 6px;
45
+ font-size: $basefont;
46
+ line-height: $baseline;
47
+ float: left;
48
+ width: 130px;
49
+ text-align: right;
50
+ color: $grayDark;
51
+ }
52
+
53
+ // Shift over the inside div to align all label's relevant content
54
+ form .input {
55
+ margin-left: 150px;
56
+ }
57
+
58
+ // Checkboxs and radio buttons
59
+ input[type=checkbox],
60
+ input[type=radio] {
61
+ cursor: pointer;
62
+ }
63
+
64
+ // Inputs, Textareas, Selects
65
+ input,
66
+ textarea,
67
+ select,
68
+ .uneditable-input {
69
+ display: inline-block;
70
+ width: 210px;
71
+ height: $baseline;
72
+ padding: 4px;
73
+ font-size: $basefont;
74
+ line-height: $baseline;
75
+ color: $gray;
76
+ border: 1px solid #ccc;
77
+ @include border-radius(3px);
78
+ }
79
+
80
+ // remove padding from select
81
+ select {
82
+ padding: initial;
83
+ }
84
+
85
+ // mini reset for non-html5 file types
86
+ input[type=checkbox],
87
+ input[type=radio] {
88
+ width: auto;
89
+ height: auto;
90
+ padding: 0;
91
+ margin: 3px 0;
92
+ *margin-top: 0; /* IE6-7 */
93
+ line-height: normal;
94
+ border: none;
95
+ }
96
+
97
+ input[type=file] {
98
+ background-color: $white;
99
+ padding: initial;
100
+ border: initial;
101
+ line-height: initial;
102
+ @include box-shadow(none);
103
+ }
104
+
105
+ input[type=button],
106
+ input[type=reset],
107
+ input[type=submit] {
108
+ width: auto;
109
+ height: auto;
110
+ }
111
+
112
+ select,
113
+ input[type=file] {
114
+ height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
115
+ *height: auto; // Reset for IE7
116
+ line-height: $baseline * 1.5;
117
+ *margin-top: 4px; /* For IE7, add top margin to align select with labels */
118
+ }
119
+
120
+ // Make multiple select elements height not fixed
121
+ select[multiple] {
122
+ height: inherit;
123
+ background-color: $white; // Fixes Chromium bug of unreadable items
124
+ }
125
+
126
+ textarea {
127
+ height: auto;
128
+ }
129
+
130
+ // For text that needs to appear as an input but should not be an input
131
+ .uneditable-input {
132
+ background-color: $white;
133
+ display: block;
134
+ border-color: #eee;
135
+ @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
136
+ cursor: not-allowed;
137
+ }
138
+
139
+ // Placeholder text gets special styles; can't be bundled together though for some reason
140
+ :-moz-placeholder {
141
+ color: $grayLight;
142
+ }
143
+ ::-webkit-input-placeholder {
144
+ color: $grayLight;
145
+ }
146
+
147
+ // Focus states
148
+ input,
149
+ textarea {
150
+ $transition: border linear .2s, box-shadow linear .2s;
151
+ @include transition($transition);
152
+ @include box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
153
+ }
154
+ input:focus,
155
+ textarea:focus {
156
+ outline: 0;
157
+ border-color: rgba(82,168,236,.8);
158
+ $shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
159
+ @include box-shadow($shadow);
160
+ }
161
+ input[type=file]:focus,
162
+ input[type=checkbox]:focus,
163
+ select:focus {
164
+ @include box-shadow(none); // override for file inputs
165
+ outline: 1px dotted #666; // Select elements don't get box-shadow styles, so instead we do outline
166
+ }
167
+
168
+ // FORM FIELD FEEDBACK STATES
169
+ // --------------------------
170
+
171
+ // Mixin for form field states
172
+ @mixin formFieldState($textColor: #555, $borderColor: #ccc, $backgroundColor: #f5f5f5) {
173
+ // Set the text color
174
+ > label,
175
+ .help-block,
176
+ .help-inline {
177
+ color: $textColor;
178
+ }
179
+ // Style inputs accordingly
180
+ input,
181
+ textarea {
182
+ color: $textColor;
183
+ border-color: $borderColor;
184
+ &:focus {
185
+ border-color: darken($borderColor, 10%);
186
+ @include box-shadow(0 0 6px lighten($borderColor, 20%));
187
+ }
188
+ }
189
+ // Give a small background color for input-prepend/-append
190
+ .input-prepend .add-on,
191
+ .input-append .add-on {
192
+ color: $textColor;
193
+ background-color: $backgroundColor;
194
+ border-color: $textColor;
195
+ }
196
+ }
197
+ // Error
198
+ form .formrow.error {
199
+ @include formFieldState(#b94a48, #ee5f5b, lighten(#ee5f5b, 30%));
200
+ }
201
+ // Warning
202
+ form .formrow.warning {
203
+ @include formFieldState(#c09853, #ccae64, lighten(#CCAE64, 5%));
204
+ }
205
+ // Success
206
+ form .formrow.success {
207
+ @include formFieldState(#468847, #57a957, lighten(#57a957, 30%));
208
+ }
209
+
210
+
211
+ // Form element sizes
212
+ // TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
213
+ .input-mini,
214
+ input.mini,
215
+ textarea.mini,
216
+ select.mini {
217
+ width: 60px;
218
+ }
219
+ .input-small,
220
+ input.small,
221
+ textarea.small,
222
+ select.small {
223
+ width: 90px;
224
+ }
225
+ .input-medium,
226
+ input.medium,
227
+ textarea.medium,
228
+ select.medium {
229
+ width: 150px;
230
+ }
231
+ .input-large,
232
+ input.large,
233
+ textarea.large,
234
+ select.large {
235
+ width: 210px;
236
+ }
237
+ .input-xlarge,
238
+ input.xlarge,
239
+ textarea.xlarge,
240
+ select.xlarge {
241
+ width: 270px;
242
+ }
243
+ .input-xxlarge,
244
+ input.xxlarge,
245
+ textarea.xxlarge,
246
+ select.xxlarge {
247
+ width: 530px;
248
+ }
249
+ textarea.xxlarge {
250
+ overflow-y: auto;
251
+ }
252
+
253
+ // Grid style input sizes
254
+ // This is a duplication of the main grid .columns() mixin, but subtracts 10px to account for input padding and border
255
+ @mixin formColumns($columnSpan: 1 ) {
256
+ display: inline-block;
257
+ float: none;
258
+ width: (($gridColumnWidth) * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1)) - 10;
259
+ margin-left: 0;
260
+
261
+ }
262
+ input,
263
+ textarea {
264
+ // Default columns
265
+ &.span1 { @include formColumns(1); }
266
+ &.span2 { @include formColumns(2); }
267
+ &.span3 { @include formColumns(3); }
268
+ &.span4 { @include formColumns(4); }
269
+ &.span5 { @include formColumns(5); }
270
+ &.span6 { @include formColumns(6); }
271
+ &.span7 { @include formColumns(7); }
272
+ &.span8 { @include formColumns(8); }
273
+ &.span9 { @include formColumns(9); }
274
+ &.span10 { @include formColumns(10); }
275
+ &.span11 { @include formColumns(11); }
276
+ &.span12 { @include formColumns(12); }
277
+ &.span13 { @include formColumns(13); }
278
+ &.span14 { @include formColumns(14); }
279
+ &.span15 { @include formColumns(15); }
280
+ &.span16 { @include formColumns(16); }
281
+ }
282
+
283
+ // Disabled and read-only inputs
284
+ input[disabled],
285
+ select[disabled],
286
+ textarea[disabled],
287
+ input[readonly],
288
+ select[readonly],
289
+ textarea[readonly] {
290
+ background-color: #f5f5f5;
291
+ border-color: #ddd;
292
+ cursor: not-allowed;
293
+ }
294
+
295
+ // Actions (the buttons)
296
+ .actions {
297
+ background: #f5f5f5;
298
+ margin-top: $baseline;
299
+ margin-bottom: $baseline;
300
+ padding: ($baseline - 1) 20px $baseline 150px;
301
+ border-top: 1px solid #ddd;
302
+ @include border-radius(0 0 3px 3px);
303
+ .secondary-action {
304
+ float: right;
305
+ a {
306
+ line-height: 30px;
307
+ &:hover {
308
+ text-decoration: underline;
309
+ }
310
+ }
311
+ }
312
+ }
313
+
314
+ // Help Text
315
+ .help-inline,
316
+ .help-block {
317
+ font-size: $basefont;
318
+ line-height: $baseline;
319
+ color: $grayLight;
320
+ }
321
+ .help-inline {
322
+ padding-left: 5px;
323
+ *position: relative; /* IE6-7 */
324
+ *top: -5px; /* IE6-7 */
325
+ }
326
+
327
+ // Big blocks of help text
328
+ .help-block {
329
+ display: block;
330
+ max-width: 600px;
331
+ }
332
+
333
+ // Inline Fields (input fields that appear as inline objects
334
+ .inline-inputs {
335
+ color: $gray;
336
+ span {
337
+ padding: 0 2px 0 1px;
338
+ }
339
+ }
340
+
341
+ // Allow us to put symbols and text within the input field for a cleaner look
342
+ .input-prepend,
343
+ .input-append {
344
+ input {
345
+ @include border-radius(0 3px 3px 0);
346
+ }
347
+ .add-on {
348
+ position: relative;
349
+ background: #f5f5f5;
350
+ border: 1px solid #ccc;
351
+ z-index: 2;
352
+ float: left;
353
+ display: block;
354
+ width: auto;
355
+ min-width: 16px;
356
+ height: 18px;
357
+ padding: 4px 4px 4px 5px;
358
+ margin-right: -1px;
359
+ font-weight: normal;
360
+ line-height: 18px;
361
+ color: $grayLight;
362
+ text-align: center;
363
+ text-shadow: 0 1px 0 $white;
364
+ @include border-radius(3px 0 0 3px);
365
+ }
366
+ .active {
367
+ background: lighten($green, 30);
368
+ border-color: $green;
369
+ }
370
+ }
371
+ .input-prepend {
372
+ .add-on {
373
+ *margin-top: 1px; /* IE6-7 */
374
+ }
375
+ }
376
+ .input-append {
377
+ input {
378
+ float: left;
379
+ @include border-radius(3px 0 0 3px);
380
+ }
381
+ .add-on {
382
+ @include border-radius(0 3px 3px 0);
383
+ margin-right: 0;
384
+ margin-left: -1px;
385
+ }
386
+ }
387
+
388
+ // Stacked options for forms (radio buttons or checkboxes)
389
+ .inputs-list {
390
+ margin: 0 0 5px;
391
+ width: 100%;
392
+ li {
393
+ display: block;
394
+ padding: 0;
395
+ width: 100%;
396
+ }
397
+ label {
398
+ display: block;
399
+ float: none;
400
+ width: auto;
401
+ padding: 0;
402
+ margin-left: 20px;
403
+ line-height: $baseline;
404
+ text-align: left;
405
+ white-space: normal;
406
+ strong {
407
+ color: $gray;
408
+ }
409
+ small {
410
+ font-size: $basefont - 2;
411
+ font-weight: normal;
412
+ }
413
+ }
414
+ .inputs-list {
415
+ margin-left: 25px;
416
+ margin-bottom: 10px;
417
+ padding-top: 0;
418
+ }
419
+ &:first-child {
420
+ padding-top: 5px;
421
+ }
422
+ li + li {
423
+ padding-top: 2px;
424
+ }
425
+ input[type=radio],
426
+ input[type=checkbox] {
427
+ margin-bottom: 0;
428
+ margin-left: -20px;
429
+ float: left;
430
+ }
431
+ }
432
+
433
+ // Stacked forms
434
+ .form-stacked {
435
+ padding-left: 20px;
436
+ fieldset {
437
+ padding-top: $baseline / 2;
438
+ }
439
+ legend {
440
+ margin-left: 0;
441
+ }
442
+ label {
443
+ display: block;
444
+ float: none;
445
+ width: auto;
446
+ font-weight: bold;
447
+ text-align: left;
448
+ line-height: 20px;
449
+ padding-top: 0;
450
+ }
451
+ .formrow {
452
+ margin-bottom: $baseline / 2;
453
+ div.input {
454
+ margin-left: 0;
455
+ }
456
+ }
457
+ .inputs-list {
458
+ margin-bottom: 0;
459
+ li {
460
+ padding-top: 0;
461
+ label {
462
+ font-weight: normal;
463
+ padding-top: 0;
464
+ }
465
+ }
466
+ }
467
+ div.formrow.error {
468
+ padding-top: 10px;
469
+ padding-bottom: 10px;
470
+ padding-left: 10px;
471
+ margin-top: 0;
472
+ margin-left: -10px;
473
+ }
474
+ .actions {
475
+ margin-left: -20px;
476
+ padding-left: 20px;
477
+ }
478
+ }
@@ -0,0 +1,220 @@
1
+ /* Mixins.scss
2
+ * Snippets of reusable CSS to develop faster and keep code readable
3
+ * ----------------------------------------------------------------- */
4
+
5
+ // Clearfix for clearing floats like a boss h5bp.com/q
6
+ @mixin clearfix {
7
+ zoom: 1;
8
+ &:before,
9
+ &:after {
10
+ display: table;
11
+ content: "";
12
+ zoom: 1;
13
+ }
14
+ &:after {
15
+ clear: both;
16
+ }
17
+ }
18
+ .clearfix { @include clearfix; }
19
+
20
+ // Center-align a block level element
21
+ @mixin center-block {
22
+ display: block;
23
+ margin-left: auto;
24
+ margin-right: auto;
25
+ }
26
+
27
+ // Sizing shortcuts
28
+ @mixin size($height: 5px, $width: 5px) {
29
+ height: $height;
30
+ width: $width;
31
+ }
32
+ @mixin square($size: 5px) {
33
+ @include size($size, $size);
34
+ }
35
+
36
+ // Input placeholder text
37
+ @mixin placeholder($color: $grayLight) {
38
+ :-moz-placeholder {
39
+ color: $color;
40
+ }
41
+ ::-webkit-input-placeholder {
42
+ color: $color;
43
+ }
44
+ }
45
+
46
+ // Font Stacks
47
+ @mixin shorthand-font($weight: normal, $size: 14px, $lineHeight: 20px) {
48
+ font-size: $size;
49
+ font-weight: $weight;
50
+ line-height: $lineHeight;
51
+ }
52
+ @mixin sans-serif-font($weight: normal, $size: 14px, $lineHeight: 20px) {
53
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
54
+ font-size: $size;
55
+ font-weight: $weight;
56
+ line-height: $lineHeight;
57
+ }
58
+ @mixin serif-font($weight: normal, $size: 14px, $lineHeight: 20px) {
59
+ font-family: "Georgia", Times New Roman, Times, serif;
60
+ font-size: $size;
61
+ font-weight: $weight;
62
+ line-height: $lineHeight;
63
+ }
64
+ @mixin monospace-font($weight: normal, $size: 12px, $lineHeight: 20px) {
65
+ font-family: "Monaco", Courier New, monospace;
66
+ font-size: $size;
67
+ font-weight: $weight;
68
+ line-height: $lineHeight;
69
+ }
70
+
71
+ // Grid System
72
+ @mixin fixed-container {
73
+ width: $siteWidth;
74
+ margin-left: auto;
75
+ margin-right: auto;
76
+ @include clearfix();
77
+ }
78
+ .fixed-container { @include fixed-container; }
79
+ @mixin columns($columnSpan: 1) {
80
+ width: ($gridColumnWidth * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1));
81
+ }
82
+ @mixin offset($columnOffset: 1) {
83
+ margin-left: ($gridColumnWidth * $columnOffset) + ($gridGutterWidth * ($columnOffset - 1)) + $extraSpace;
84
+ }
85
+ // Necessary grid styles for every column to make them appear next to each other horizontally
86
+ @mixin gridColumn() {
87
+ display: inline;
88
+ float: left;
89
+ margin-left: $gridGutterWidth;
90
+ }
91
+ // makeColumn can be used to mark any element (e.g., .content-primary) as a column without changing markup to .span something
92
+ @mixin makeColumn($columnSpan: 1) {
93
+ @include gridColumn();
94
+ @include columns($columnSpan);
95
+ }
96
+
97
+ // Border Radius
98
+ @mixin border-radius($radius: 5px) {
99
+ -webkit-border-radius: $radius;
100
+ -moz-border-radius: $radius;
101
+ border-radius: $radius;
102
+ }
103
+
104
+ // Drop shadows
105
+ @mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {
106
+ -webkit-box-shadow: $shadow;
107
+ -moz-box-shadow: $shadow;
108
+ box-shadow: $shadow;
109
+ }
110
+
111
+ // Transitions
112
+ @mixin transition($transition) {
113
+ -webkit-transition: $transition;
114
+ -moz-transition: $transition;
115
+ -ms-transition: $transition;
116
+ -o-transition: $transition;
117
+ transition: $transition;
118
+ }
119
+
120
+ // Background clipping
121
+ @mixin background-clip($clip) {
122
+ -webkit-background-clip: $clip;
123
+ -moz-background-clip: $clip;
124
+ background-clip: $clip;
125
+ }
126
+
127
+ // CSS3 Content Columns
128
+ @mixin content-columns($columnCount, $columnGap: 20px) {
129
+ -webkit-column-count: $columnCount;
130
+ -moz-column-count: $columnCount;
131
+ column-count: $columnCount;
132
+ -webkit-column-gap: $columnGap;
133
+ -moz-column-gap: $columnGap;
134
+ column-gap: $columnGap;
135
+ }
136
+
137
+ // Make any element resizable for prototyping
138
+ @mixin resizable($direction: both) {
139
+ resize: $direction; // Options are horizontal, vertical, both
140
+ overflow: auto; // Safari fix
141
+ }
142
+
143
+ // Add an alphatransparency value to any background or border color (via Elyse Holladay)
144
+ @mixin translucent-background($color: $white, $alpha: 1) {
145
+ background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
146
+ }
147
+ @mixin translucent-border($color: $white, $alpha: 1) {
148
+ border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
149
+ background-clip: padding-box;
150
+ }
151
+
152
+ // Gradients
153
+ @mixin horizontal-gradient ($startColor: #555, $endColor: #333) {
154
+ background-color: $endColor;
155
+ background-repeat: repeat-x;
156
+ background-image: -khtml-gradient(linear, left top, right top, from($startColor), to($endColor)); // Konqueror
157
+ background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
158
+ background-image: -ms-linear-gradient(left, $startColor, $endColor); // IE10
159
+ background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
160
+ background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
161
+ background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
162
+ background-image: linear-gradient(left, $startColor, $endColor); // Le standard
163
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=1); // IE9 and down
164
+ }
165
+
166
+ @mixin vertical-gradient ($startColor: #555, $endColor: #333) {
167
+ background-color: $endColor;
168
+ background-repeat: repeat-x;
169
+ background-image: -khtml-gradient(linear, left top, left bottom, from($startColor), to($endColor)); // Konqueror
170
+ background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
171
+ background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
172
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $startColor), color-stop(100%, $endColor)); // Safari 4+, Chrome 2+
173
+ background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
174
+ background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
175
+ background-image: linear-gradient(top, $startColor, $endColor); // The standard
176
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down
177
+ }
178
+
179
+ @mixin directional-gradient ($startColor: #555, $endColor: #333, $deg: 45deg) {
180
+ background-color: $endColor;
181
+ background-repeat: repeat-x;
182
+ background-image: -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+
183
+ background-image: -ms-linear-gradient($deg, $startColor, $endColor); // IE10
184
+ background-image: -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+
185
+ background-image: -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10
186
+ background-image: linear-gradient($deg, $startColor, $endColor); // The standard
187
+ }
188
+
189
+ @mixin vertical-three-colors-gradient($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
190
+ background-color: $endColor;
191
+ background-repeat: no-repeat;
192
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), color-stop($colorStop, $midColor), to($endColor));
193
+ background-image: -webkit-linear-gradient($startColor, $midColor $colorStop, $endColor);
194
+ background-image: -moz-linear-gradient($startColor, $midColor $colorStop, $endColor);
195
+ background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor);
196
+ background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor);
197
+ background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
198
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down, gets no color-stop at all the proper fallback
199
+ }
200
+
201
+ // Gradient Bar Colors for buttons and allerts
202
+ @mixin gradientBar($primaryColor, $secondaryColor) {
203
+ @include vertical-gradient($primaryColor, $secondaryColor);
204
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
205
+ border-color: $secondaryColor $secondaryColor darken($secondaryColor, 15%);
206
+ border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) opacify(rgba(0,0,0,.1), .15);
207
+ }
208
+
209
+ // Reset filters for IE
210
+ @mixin reset-filter() {
211
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
212
+ }
213
+
214
+ // Opacity
215
+ @mixin opacity($opacity: 100) {
216
+ filter: alpha(opacity=$opacity);
217
+ -khtml-opacity: $opacity / 100;
218
+ -moz-opacity: $opacity / 100;
219
+ opacity: $opacity / 100;
220
+ }