blacklight 3.1.2 → 3.2.0pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/.gitignore +5 -2
  2. data/README.md +7 -2
  3. data/VERSION +1 -1
  4. data/app/assets/images/favicon.ico +0 -0
  5. data/app/assets/javascripts/blacklight/blacklight.js +23 -1
  6. data/app/assets/stylesheets/blacklight/_catalog.css.scss +369 -0
  7. data/app/assets/stylesheets/blacklight/_facets.css.scss +117 -0
  8. data/app/assets/stylesheets/blacklight/_folder.css.scss +38 -0
  9. data/app/assets/stylesheets/blacklight/_formatting.css.scss +164 -0
  10. data/app/assets/stylesheets/blacklight/_header.css.scss +36 -0
  11. data/app/assets/stylesheets/blacklight/_layout.css.scss +79 -0
  12. data/app/assets/stylesheets/blacklight/_print.css.scss +54 -0
  13. data/app/assets/stylesheets/blacklight/_search_history.css.scss +44 -0
  14. data/app/assets/stylesheets/blacklight/_susy_framework.css.scss +228 -0
  15. data/app/assets/stylesheets/blacklight/blacklight.css.scss +27 -0
  16. data/app/assets/stylesheets/blacklight/blacklight_defaults.css.scss +48 -0
  17. data/app/controllers/bookmarks_controller.rb +2 -1
  18. data/app/controllers/folder_controller.rb +4 -0
  19. data/app/controllers/saved_searches_controller.rb +4 -0
  20. data/app/controllers/search_history_controller.rb +4 -0
  21. data/app/helpers/blacklight/blacklight_helper_behavior.rb +64 -104
  22. data/app/helpers/blacklight/catalog_helper_behavior.rb +4 -4
  23. data/app/helpers/blacklight/facets_helper_behavior.rb +52 -5
  24. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +14 -59
  25. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +56 -0
  26. data/app/helpers/search_history_constraints_helper.rb +3 -0
  27. data/app/models/record_mailer.rb +1 -2
  28. data/app/views/_flash_msg.html.erb +4 -5
  29. data/app/views/_user_util_links.html.erb +3 -1
  30. data/app/views/bookmarks/index.html.erb +2 -2
  31. data/app/views/catalog/_bookmark_control.html.erb +6 -6
  32. data/app/views/catalog/_facet_layout.html.erb +4 -0
  33. data/app/views/catalog/_facet_limit.html.erb +20 -33
  34. data/app/views/catalog/_facets.html.erb +1 -5
  35. data/app/views/catalog/_folder_control.html.erb +5 -5
  36. data/app/views/catalog/_index_default.html.erb +1 -1
  37. data/app/views/catalog/_search_form.html.erb +4 -3
  38. data/app/views/catalog/_show_default.html.erb +1 -1
  39. data/app/views/catalog/_show_tools.html.erb +6 -6
  40. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  41. data/app/views/catalog/index.atom.builder +2 -2
  42. data/app/views/catalog/index.rss.builder +1 -1
  43. data/app/views/catalog/opensearch.xml.builder +10 -0
  44. data/app/views/catalog/show.html.erb +1 -1
  45. data/app/views/folder/_tools.html.erb +4 -4
  46. data/app/views/layouts/blacklight.html.erb +25 -37
  47. data/app/views/record_mailer/email_record.text.erb +1 -1
  48. data/app/views/record_mailer/sms_record.text.erb +2 -2
  49. data/app/views/search_history/index.html.erb +1 -1
  50. data/blacklight.gemspec +11 -9
  51. data/lib/{generators/blacklight/templates/SolrMarc.jar → SolrMarc.jar} +0 -0
  52. data/lib/blacklight.rb +5 -3
  53. data/lib/blacklight/catalog.rb +3 -4
  54. data/lib/blacklight/configurable.rb +54 -39
  55. data/lib/blacklight/configuration.rb +126 -0
  56. data/lib/blacklight/configuration/fields.rb +142 -0
  57. data/lib/blacklight/configuration/search_field.rb +12 -0
  58. data/lib/blacklight/configuration/solr_field.rb +12 -0
  59. data/lib/blacklight/configuration/sort_field.rb +17 -0
  60. data/lib/blacklight/controller.rb +16 -14
  61. data/lib/blacklight/engine.rb +1 -1
  62. data/lib/blacklight/global_configurable.rb +46 -0
  63. data/lib/blacklight/search_fields.rb +21 -54
  64. data/lib/blacklight/solr/document.rb +13 -3
  65. data/lib/blacklight/solr_helper.rb +88 -52
  66. data/lib/blacklight/utils.rb +18 -0
  67. data/lib/generators/blacklight/assets_generator.rb +14 -20
  68. data/lib/generators/blacklight/blacklight_generator.rb +14 -6
  69. data/lib/generators/blacklight/jetty_generator.rb +1 -1
  70. data/lib/generators/blacklight/templates/assets/standard.css.scss +51 -0
  71. data/lib/generators/blacklight/templates/catalog_controller.rb +148 -0
  72. data/lib/generators/blacklight/templates/config/blacklight_config.rb +2 -239
  73. data/lib/generators/blacklight/templates/config/sass.rb +5 -0
  74. data/lib/generators/blacklight/templates/solr_conf/schema.xml +514 -164
  75. data/lib/generators/blacklight/templates/solr_conf/solrconfig.xml +1591 -323
  76. data/lib/generators/blacklight/templates/solr_document.rb +2 -0
  77. data/lib/railties/all_tests.rake +36 -3
  78. data/lib/railties/blacklight_cucumber.rake +6 -4
  79. data/lib/railties/blacklight_rspec.rake +5 -4
  80. data/test_support/bin/run-tests.sh +2 -13
  81. data/test_support/bin/test.sh +30 -23
  82. data/test_support/features/did_you_mean.feature +14 -13
  83. data/test_support/features/step_definitions/saved_searches_steps.rb +1 -1
  84. data/test_support/features/step_definitions/search_steps.rb +4 -4
  85. data/test_support/spec/controllers/application_controller_spec.rb +3 -13
  86. data/test_support/spec/controllers/catalog_controller_spec.rb +102 -24
  87. data/test_support/spec/controllers/folder_controller_spec.rb +7 -1
  88. data/test_support/spec/helpers/blacklight_helper_spec.rb +45 -34
  89. data/test_support/spec/helpers/facets_helper_spec.rb +68 -0
  90. data/test_support/spec/helpers/html_head_helper_spec.rb +37 -0
  91. data/test_support/spec/helpers/{render_constraints_helper_spec.rb → search_history_constraints_helper_spec.rb} +26 -7
  92. data/test_support/spec/lib/blacklight_configurable_spec.rb +92 -0
  93. data/test_support/spec/lib/blacklight_configuration_spec.rb +295 -0
  94. data/test_support/spec/lib/{configurable_spec.rb → global_configurable_spec.rb} +2 -2
  95. data/test_support/spec/lib/search_fields_spec.rb +26 -29
  96. data/test_support/spec/{helpers → lib}/solr_helper_spec.rb +268 -287
  97. data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +1 -1
  98. data/test_support/spec/lib/utils_spec.rb +58 -0
  99. data/test_support/spec/models/solr_docment_spec.rb +4 -8
  100. data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +27 -170
  101. data/test_support/spec/views/catalog/_index_default.erb_spec.rb +38 -20
  102. data/test_support/spec/views/catalog/_show_default.erb_spec.rb +38 -19
  103. data/test_support/spec/views/catalog/index.atom.builder_spec.rb +19 -1
  104. metadata +148 -145
  105. data/app/assets/stylesheets/blacklight/blacklight.css +0 -493
  106. data/app/assets/stylesheets/yui.css +0 -31
  107. data/app/views/catalog/opensearch.xml.erb +0 -11
  108. data/doc/Atom-Responses.md +0 -90
  109. data/doc/CUSTOMIZING.md +0 -121
  110. data/doc/Extending-blacklight-with-the-document-extension-framework.md +0 -1
  111. data/doc/Extending-or-Modifying-Blacklight-Search-Behavior.md +0 -131
  112. data/doc/Features.md +0 -147
  113. data/doc/Integration-with-Rails-Footnotes.md +0 -20
  114. data/doc/Pagination.md +0 -38
  115. data/doc/Quickstart.md +0 -97
  116. data/doc/Upgrading-Guide.md +0 -98
  117. data/doc/User-Authentication.md +0 -54
  118. data/doc/Using-a-custom-solr-uniquekey-field.md +0 -36
  119. data/lib/blacklight/comma_link_renderer.rb +0 -28
  120. data/lib/railties/jetty_solr_server.rb +0 -108
  121. data/test_support/spec/views/catalog/show.html.erb_spec.rb +0 -101
data/.gitignore CHANGED
@@ -11,7 +11,10 @@ webrat-*
11
11
  config/SolrMarc/*.log*
12
12
  rerun.txt
13
13
  solr_marc/solrmarc.log
14
-
14
+ tmp/*
15
15
  *.log
16
16
  .bundle
17
- Gemfile.lock
17
+ Gemfile.lock
18
+ tmp/test_app
19
+ .rvmrc
20
+ pkg/*
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Blacklight
2
2
 
3
- Blacklight is open source discovery software. Libraries (or anyone else) can use Blacklight to enable searching and browsing of their collections online. Blacklight uses the [Apache SOLR](http://lucene.apache.org/solr) search engine to index and search full text and/or metadata, and Blacklight has a highly configurable Ruby on Rails front-end. Blacklight was originally developed at the University of Virginia Library and is made public under an Apache 2.0 license.
3
+ Blacklight is an open source Solr user interface discovery platform.
4
+ You can use Blacklight to enable searching and browsing of your collections.
5
+ Blacklight uses the [Apache Solr](http://lucene.apache.org/solr) search engine
6
+ to search full text and/or metadata. Blacklight has a highly
7
+ configurable Ruby on Rails front-end. Blacklight was originally developed at
8
+ the University of Virginia Library and is made public under an Apache 2.0 license.
4
9
 
5
10
 
6
11
  ## Documentation, Information and Support
@@ -21,4 +26,4 @@ Blacklight is open source discovery software. Libraries (or anyone else) can use
21
26
  In addition, you must have the Bundler and Rails 3.0 gems installed. Other gem dependencies are defined in the blacklight.gemspec file and will be automatically loaded by Bundler.
22
27
 
23
28
  ## Configuring Apache Solr
24
- You'll also want some information about how Blacklight expects [Apache SOLR](http://lucene.apache.org/solr ) to run, which you can find in [README_SOLR](https://github.com/projectblacklight/blacklight/wiki/README_SOLR)
29
+ You'll also want some information about how Blacklight expects [Apache Solr](http://lucene.apache.org/solr ) to run, which you can find in [README_SOLR](https://github.com/projectblacklight/blacklight/wiki/README_SOLR)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.2
1
+ 3.2.0pre1
Binary file
@@ -59,6 +59,8 @@ $(document).ready(function() {
59
59
  Blacklight.do_folder_toggle_behavior();
60
60
 
61
61
  Blacklight.do_facet_expand_contract_behavior();
62
+
63
+ Blacklight.do_search_context_behavior();
62
64
  });
63
65
 
64
66
 
@@ -66,7 +68,27 @@ $(document).ready(function() {
66
68
  //Note all of these definitions are NOT in document ready, they get defined on
67
69
  //page load, and later called on document ready.
68
70
  (function($) {
69
-
71
+ Blacklight.do_search_context_behavior = function() {
72
+ $('a[data-counter]').click(function() {
73
+ var f = document.createElement('form'); f.style.display = 'none';
74
+ this.parentNode.appendChild(f);
75
+ f.method = 'POST';
76
+ f.action = $(this).attr('href');
77
+ if(event.metaKey || event.ctrlKey){f.target = '_blank';};
78
+ var d = document.createElement('input'); d.setAttribute('type', 'hidden');
79
+ d.setAttribute('name', 'counter'); d.setAttribute('value', $(this).data('counter')); f.appendChild(d);
80
+ var m = document.createElement('input'); m.setAttribute('type', 'hidden');
81
+ m.setAttribute('name', '_method'); m.setAttribute('value', 'put'); f.appendChild(m);
82
+ var m = document.createElement('input'); m.setAttribute('type', 'hidden');
83
+ m.setAttribute('name', $('meta[name="csrf-param"]').attr('content')); m.setAttribute('value', $('meta[name="csrf-token"]').attr('content')); f.appendChild(m);
84
+
85
+ f.submit();
86
+
87
+ return false;
88
+ });
89
+
90
+ };
91
+
70
92
  // adds classes for zebra striping table rows
71
93
  Blacklight.do_zebra_stripe = function() {
72
94
  $(Blacklight.do_zebra_stripe.selector).addClass('zebra_stripe');
@@ -0,0 +1,369 @@
1
+ #appliedParams
2
+ {
3
+ background-color:$search_ui_bg_color;
4
+ border-bottom:1px solid $search_ui_border_color;
5
+ border-left:1px solid $search_ui_border_color;
6
+ border-right:1px solid $search_ui_border_color;
7
+ margin-bottom:1.5em;
8
+ padding:1em 0.66em 0 1em;
9
+
10
+ .label
11
+ {
12
+ left:-100000000px;
13
+ position:absolute;
14
+ }
15
+ }
16
+
17
+ #document
18
+ {
19
+ margin-top:1em;
20
+
21
+
22
+ h1
23
+ {
24
+ margin:0;
25
+ padding:0 0 1em;
26
+ }
27
+ }
28
+
29
+ #documents
30
+ {
31
+ margin-bottom:1.5em;
32
+ margin-top:1.5em;
33
+
34
+
35
+ .documentHeader
36
+ {
37
+ padding:0;
38
+ }
39
+
40
+ .per_page
41
+ {
42
+ padding-right:5px;
43
+ }
44
+ }
45
+
46
+ #librarian_view
47
+ {
48
+ left:-17%;
49
+ text-align:left;
50
+ top:10%;
51
+ width:700px;
52
+ }
53
+
54
+ #marc_view
55
+ {
56
+ padding:5px;
57
+ text-align:left;
58
+
59
+ .field
60
+ {
61
+ border-bottom: $marc_item_separator;
62
+ clear:both;
63
+ }
64
+
65
+ .ind1, .ind2
66
+ {
67
+ display:inline;
68
+ padding:0 5px;
69
+ }
70
+
71
+ .subfields
72
+ {
73
+ padding-left:5em;
74
+ }
75
+
76
+ .tag_ind
77
+ {
78
+ float:left;
79
+ }
80
+ }
81
+
82
+ #previousNextDocument
83
+ {
84
+ background-color:$search_ui_bg_color;
85
+ border:1px solid $search_ui_border_color;
86
+ margin-bottom:1.5em;
87
+ overflow:auto;
88
+ padding:0.66em;
89
+
90
+ .next
91
+ {
92
+ float:right;
93
+ }
94
+ }
95
+
96
+ #search
97
+ {
98
+ @include border-radius(4px 4px 0 0);
99
+ border:1px solid $search_ui_border_color;
100
+ font-size:120%;
101
+ padding:0.66em;
102
+ text-align:left;
103
+
104
+ #q
105
+ {
106
+ width:200px;
107
+ }
108
+
109
+ .submit
110
+ {
111
+ margin:0 0.5em;
112
+ padding:0 0.25em;
113
+ text-transform:capitalize;
114
+ }
115
+
116
+ hr
117
+ {
118
+ display: none;
119
+ margin: 2em 0 1em;
120
+ }
121
+ }
122
+
123
+ #search h2,.pagination h2,#results_text,.page_links .next_page,.page_links .prev_page
124
+ {
125
+ display:none;
126
+ }
127
+
128
+
129
+ #sortAndPerPage
130
+ {
131
+ background-color:$search_ui_bg_color;
132
+ border-color:$search_ui_border_color;
133
+ border-style:solid;
134
+ border-width:0 1px 1px 1px;
135
+ padding:0.66em;
136
+
137
+
138
+ label
139
+ {
140
+ font-weight:400;
141
+ }
142
+ }
143
+
144
+ #startOverLink
145
+ {
146
+ background:asset_url('blacklight/start_over.gif', image) no-repeat center center;
147
+ border-bottom:none;
148
+ color:#fff;
149
+ display:block;
150
+ line-height:22px;
151
+ margin-top:-12px;
152
+ padding:0 7px 3px 12px;
153
+ position:absolute;
154
+ right:0.66em;
155
+ text-decoration:none;
156
+ top:50%;
157
+ }
158
+
159
+ .appliedFilter
160
+ {
161
+ background: $constraint_bg_color;
162
+ border:1px solid $constraint_border_color;
163
+ display:inline-block;
164
+ margin-bottom:0.66em;
165
+ margin-right:0.33em;
166
+ padding:3px 3px 3px 1.5em;
167
+ position:relative;
168
+ @include border-radius(15px 15px 15px 15px);
169
+
170
+ .btnRemove
171
+ {
172
+ background:asset_url('blacklight/remove.gif', image) no-repeat center center;
173
+ border-bottom:none;
174
+ border-left:1px solid $constraint_border_color;
175
+ display:block;
176
+ height:100%;
177
+ outline:none;
178
+ position:absolute;
179
+ right:0;
180
+ text-indent:-99999px;
181
+ top:0;
182
+ width:32px;
183
+ z-index:5;
184
+ }
185
+
186
+ .btnRemove:active,.btnRemove:focus
187
+ {
188
+ border:1px dotted $constraint_border_active_color;
189
+ }
190
+
191
+ .queryName,.filterName
192
+ {
193
+ background:asset_url('blacklight/separator.gif',image) no-repeat right center;
194
+ padding-right:14px;
195
+ }
196
+ }
197
+
198
+ .constraints,h3.index_title,dl
199
+ {
200
+ margin:0;
201
+ padding:0;
202
+ }
203
+
204
+ .document
205
+ {
206
+ border-bottom:1px dotted $dotted_border_color;
207
+ clear:both;
208
+ padding:0.5em 0 0;
209
+ }
210
+
211
+ .documentFunctions
212
+ {
213
+ float:right;
214
+ margin-bottom:0.5em;
215
+ margin-left:1em;
216
+
217
+ .folder_toggle,.bookmark_toggle
218
+ {
219
+ display:inline;
220
+ }
221
+ }
222
+
223
+
224
+ .filterValue
225
+ {
226
+ padding-right:37px;
227
+ }
228
+
229
+ .pageEntriesInfo
230
+ {
231
+ background-color:$search_ui_bg_color;
232
+ border-color:$search_ui_border_color;
233
+ border-style:solid;
234
+ border-width:1px 1px 0;
235
+ padding:0.66em;
236
+ position:relative;
237
+ text-align:center;
238
+ }
239
+
240
+ .page_links
241
+ {
242
+ margin-left:8em;
243
+ margin-right:8em;
244
+ text-align:center;
245
+
246
+ span.current
247
+ {
248
+ background:none repeat scroll 0 0 $page_bg_color;
249
+ border:1px solid $page_bg_color;
250
+ color:#FFF;
251
+ font-weight:700;
252
+ }
253
+ }
254
+ .pagination
255
+ {
256
+ background-color:$search_ui_bg_color;
257
+ border-color:$search_ui_border_color;
258
+ border-style:solid;
259
+ border-width:0 1px 1px;
260
+ line-height:2em;
261
+ padding:0.66em;
262
+ position:relative;
263
+
264
+ .next_page
265
+ {
266
+ border-bottom:none;
267
+ margin-right:0.66em;
268
+ position:absolute;
269
+ right:0;
270
+ }
271
+
272
+ .prev_page
273
+ {
274
+ border-bottom:none;
275
+ left:0;
276
+ margin-left:0.66em;
277
+ position:absolute;
278
+ }
279
+
280
+ a
281
+ {
282
+ border:1px solid transparent;
283
+ }
284
+
285
+ a:hover,a:focus
286
+ {
287
+ border:1px solid #003;
288
+ text-decoration:none;
289
+ }
290
+
291
+ span.disabled
292
+ {
293
+ color:#999;
294
+ }
295
+
296
+ }
297
+ .show #appliedParams
298
+ {
299
+ border-top:1px solid $search_ui_border_color;
300
+
301
+ .label
302
+ {
303
+ margin-top:0;
304
+ position:static;
305
+ }
306
+ }
307
+
308
+ .solrQuery
309
+ {
310
+ background-color: $search_ui_bg_color;
311
+ border:1px dotted $dotted_border_color;
312
+ font-size:90%;
313
+ margin:2em;
314
+ padding:.5em;
315
+ }
316
+
317
+ dl.defList
318
+ {
319
+ clear:both;
320
+ overflow:auto;
321
+ padding:0.5em 0;
322
+
323
+ dd
324
+ {
325
+ float:left;
326
+ margin:0;
327
+ padding:2px 0;
328
+ text-align:left;
329
+ width:450px;
330
+ }
331
+
332
+ dt
333
+ {
334
+ clear:both;
335
+ color: $field_name_color;
336
+ float:left;
337
+ margin:0;
338
+ padding:2px 1em 2px 0;
339
+ text-align:right;
340
+ width:20%;
341
+ }
342
+ }
343
+
344
+ label.checked
345
+ {
346
+ font-weight:700;
347
+ }
348
+
349
+ label.toggle_bookmark,label.toggle_folder
350
+ {
351
+ color:inherit;
352
+ display:inline-block;
353
+ font-weight:inherit;
354
+ min-width:8.5em;
355
+ text-align:left;
356
+ }
357
+
358
+ label.toggle_folder
359
+ {
360
+ min-width:6em;
361
+ }
362
+
363
+ span.page a,span.page.current
364
+ {
365
+ border-bottom:none;
366
+ margin-right:0.2em;
367
+ padding:0.2em 0.5em;
368
+ text-decoration:none;
369
+ }
@@ -0,0 +1,117 @@
1
+ #facets
2
+ {
3
+ font-size:93%;
4
+ padding:1em 0 0 1em;
5
+
6
+
7
+ h2
8
+ {
9
+ color:#555;
10
+ }
11
+
12
+ h3
13
+ {
14
+ color:#555;
15
+ cursor:pointer;
16
+ font-weight:400;
17
+ margin-bottom:0;
18
+ text-align:justify;
19
+ }
20
+
21
+ li
22
+ {
23
+ list-style:none;
24
+ margin:.3em 0;
25
+
26
+ a.remove
27
+ {
28
+ color:#666;
29
+ }
30
+
31
+ a:hover
32
+ {
33
+ background-color:#eee;
34
+ }
35
+
36
+ &.more_facets_link
37
+ {
38
+ text-align:right;
39
+ }
40
+ }
41
+
42
+ span.selected
43
+ {
44
+ color:green;
45
+ }
46
+
47
+ ul,h3 +div
48
+ {
49
+ border-bottom:1px dotted $dotted_border_color;
50
+ margin:0;
51
+ padding-bottom:1em;
52
+ }
53
+ }
54
+
55
+ .facet_extended_list
56
+ {
57
+ .sort_options
58
+ {
59
+ text-align:right;
60
+ }
61
+
62
+ .next_page, .sort_options .numeric
63
+ {
64
+ @include border-radius(0 4px 4px 0);
65
+ }
66
+
67
+ .prev_next_links
68
+ {
69
+ float:left;
70
+ }
71
+
72
+ .prev_next_links .disabled
73
+ {
74
+ background:none;
75
+ color:gray;
76
+ font-weight:400;
77
+ }
78
+
79
+ .prev_page,.sort_options .az
80
+ {
81
+ @include border-radius(4px 0 0 4px);
82
+ }
83
+
84
+ .sort_options .az, .sort_options .numeric, .next_page,.prev_page
85
+ {
86
+ background: $facet_extended_button_bg_color;
87
+ border:1px solid $facet_extended_button_border_color;
88
+ display:inline-block;
89
+ font-weight:700;
90
+ padding:0.2em 1em;
91
+ }
92
+
93
+ .sort_options .disabled
94
+ {
95
+ background-color: $facet_extended_disabled_button_bg_color;
96
+ border:1px solid $facet_extended_disabled_border_color;
97
+ }
98
+
99
+ .sort_options a:hover,.facet_extended_list .prev_next_links a:hover
100
+ {
101
+ background: $facet_extended_button_hover_bg_color;
102
+ border:1px solid $facet_extended_button_hover_border_color;
103
+ color: $facet_extended_button_hover_color;
104
+ }
105
+ }
106
+
107
+ ul.facet_extended_list
108
+ {
109
+ clear:both;
110
+ margin:1.5em 0;
111
+
112
+ li
113
+ {
114
+ list-style:none;
115
+ margin:0.5em 0;
116
+ }
117
+ }