goldencobra 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (718) hide show
  1. data/README.markdown +52 -1
  2. data/app/assets/images/goldencobra/cobra_small.png +0 -0
  3. data/app/assets/javascripts/goldencobra/active_admin.js +85 -40
  4. data/app/assets/javascripts/goldencobra/application.js +17 -8
  5. data/app/assets/javascripts/goldencobra/countable.js +377 -0
  6. data/app/assets/javascripts/goldencobra/jquery.tools.min.js +85 -18
  7. data/app/assets/javascripts/goldencobra/notifications.js +39 -0
  8. data/app/assets/javascripts/goldencobra/togetherjs.js +712 -0
  9. data/app/assets/stylesheets/goldencobra/active_admin.css.scss +71 -11
  10. data/app/assets/stylesheets/goldencobra/application.css +48 -29
  11. data/app/controllers/goldencobra/api/v1/tokens_controller.rb +24 -20
  12. data/app/controllers/goldencobra/application_controller.rb +30 -14
  13. data/app/controllers/goldencobra/articles_controller.rb +102 -86
  14. data/app/controllers/goldencobra/manage_controller.rb +39 -0
  15. data/app/controllers/goldencobra/sessions_controller.rb +48 -0
  16. data/app/helpers/goldencobra/application_helper.rb +3 -5
  17. data/app/helpers/goldencobra/articles_helper.rb +31 -82
  18. data/app/helpers/goldencobra/login_helper.rb +13 -0
  19. data/app/helpers/goldencobra/navigation_helper.rb +134 -0
  20. data/app/mailers/goldencobra/confirmation_mailer.rb +6 -0
  21. data/app/models/ability.rb +3 -1
  22. data/app/models/goldencobra/article.rb +308 -68
  23. data/app/models/goldencobra/author.rb +10 -0
  24. data/app/models/goldencobra/comment.rb +2 -0
  25. data/app/models/goldencobra/domain.rb +20 -0
  26. data/app/models/goldencobra/import.rb +274 -37
  27. data/app/models/goldencobra/import_metadata.rb +7 -0
  28. data/app/models/goldencobra/location.rb +21 -13
  29. data/app/models/goldencobra/menue.rb +24 -4
  30. data/app/models/goldencobra/metatag.rb +9 -7
  31. data/app/models/goldencobra/permission.rb +17 -0
  32. data/app/models/goldencobra/role.rb +9 -5
  33. data/app/models/goldencobra/role_user.rb +1 -1
  34. data/app/models/goldencobra/setting.rb +8 -0
  35. data/app/models/goldencobra/tracking.rb +63 -0
  36. data/app/models/goldencobra/upload.rb +4 -4
  37. data/app/models/goldencobra/widget.rb +17 -4
  38. data/app/models/translation.rb +22 -0
  39. data/app/models/visitor.rb +7 -4
  40. data/app/views/goldencobra/admin/articles/_articles_index.html.erb +4 -0
  41. data/app/views/goldencobra/admin/articles/_image_module_sidebar.html.erb +12 -11
  42. data/app/views/goldencobra/admin/articles/_layout_sidebar.html.erb +3 -0
  43. data/app/views/goldencobra/admin/articles/_link_checker.html.erb +31 -0
  44. data/app/views/goldencobra/admin/articles/_link_checker_index.html.erb +32 -0
  45. data/app/views/goldencobra/admin/articles/_select_article_type.html.erb +1 -0
  46. data/app/views/goldencobra/admin/articles/_sort_articles_index.html.erb +5 -0
  47. data/app/views/goldencobra/admin/articles/_widgets_sidebar.html.erb +1 -1
  48. data/app/views/goldencobra/admin/shared/_item.html.erb +4 -0
  49. data/app/views/goldencobra/admin/shared/_next_item.html.erb +5 -0
  50. data/app/views/goldencobra/admin/shared/_prev_item.html.erb +5 -0
  51. data/app/views/goldencobra/articles/_edit_article_link.html.erb +1 -1
  52. data/app/views/goldencobra/articles/_headers.html.erb +5 -1
  53. data/app/views/goldencobra/articles/_show.html.erb +4 -1
  54. data/app/views/goldencobra/articles/show.rss.builder +7 -2
  55. data/app/views/goldencobra/confirmation_mailer/send_support_mail.text.erb +6 -0
  56. data/app/views/goldencobra/imports/attributes.html.erb +165 -19
  57. data/app/views/goldencobra/manage/_admin_article_management.html.erb +5 -0
  58. data/app/views/goldencobra/manage/_admin_article_management_content.html.erb +15 -0
  59. data/app/views/goldencobra/manage/article_visibility.js.erb +3 -0
  60. data/app/views/goldencobra/manage/render_admin_menue.js.erb +4 -0
  61. data/app/views/goldencobra/sessions/_login.html.erb +33 -0
  62. data/app/views/goldencobra/sessions/_register.html.erb +49 -0
  63. data/app/views/goldencobra/sessions/login.js.erb +16 -0
  64. data/config/initializers/articles_controller_hooks.rb +5 -0
  65. data/config/initializers/geocoder.rb +1 -0
  66. data/config/initializers/http_validator.rb +4 -4
  67. data/config/initializers/liquid_tags.rb +3 -3
  68. data/config/initializers/locale.rb +13 -0
  69. data/config/initializers/settings.rb +1 -0
  70. data/config/locales/active_admin.de.yml +5 -5
  71. data/config/locales/active_admin.en.yml +3 -1
  72. data/config/locales/activerecord.de.yml +223 -197
  73. data/config/locales/activerecord.en.yml +135 -132
  74. data/config/locales/de.yml +15 -2
  75. data/config/locales/en.yml +8 -2
  76. data/config/routes.rb +10 -1
  77. data/config/settings.yml +16 -6
  78. data/db/migrate/20120313125443_create_goldencobra_permissions.rb +1 -0
  79. data/db/migrate/20130114154115_add_sorter_to_goldencobra_permissions.rb +1 -1
  80. data/db/migrate/20130225154241_add_redirect_to_goldencobra_roles.rb +5 -0
  81. data/db/migrate/20130301144344_add_indextypes_to_goldencobra_articles.rb +5 -0
  82. data/db/migrate/20130404110743_add_sessions_table.rb +12 -0
  83. data/db/migrate/20130404121434_create_goldencobra_trackings.rb +13 -0
  84. data/db/migrate/20130404135801_add_options_to_goldencobra_trackings.rb +6 -0
  85. data/db/migrate/20130404140858_add_moreoptions_to_goldencobra_trackings.rb +8 -0
  86. data/db/migrate/20130405071320_add_params_to_goldencobra_trackings.rb +5 -0
  87. data/db/migrate/20130405073103_add_googleparams_to_goldencobra_trackings.rb +9 -0
  88. data/db/migrate/20130405074654_add_location_to_tracking.rb +5 -0
  89. data/db/migrate/20130426123928_add_polymorphic_to_goldencobra_metatags.rb +6 -0
  90. data/db/migrate/20130507115517_create_translations.rb +13 -0
  91. data/db/migrate/20130702155529_create_goldencobra_authors.rb +12 -0
  92. data/db/migrate/20130702160247_rename_authorstobackup_to_goldencobra_articles.rb +11 -0
  93. data/db/migrate/20130722152135_add_encodingtype_to_goldencobra_imports.rb +5 -0
  94. data/db/migrate/20130723084542_add_assgroup_to_goldencobra_importer.rb +5 -0
  95. data/db/migrate/20130724123225_create_goldencobra_import_metadata.rb +16 -0
  96. data/db/migrate/20130730113452_add_skip_to_goldencobra_locations.rb +5 -0
  97. data/db/migrate/20130730144331_add_linkchecker_to_goldencobra_articles.rb +5 -0
  98. data/db/migrate/20130903085746_change_datatype_of_url_paremeters.rb +9 -0
  99. data/db/migrate/20130909143144_create_goldencobra_domains.rb +11 -0
  100. data/db/migrate/20130925133203_add_prefix_to_goldencobra_domains.rb +5 -0
  101. data/db/migrate/20131018111343_add_cache_to_goldencobra_menues.rb +12 -0
  102. data/db/seeds.rb +165 -5
  103. data/lib/generators/goldencobra/articletype/templates/edit_index.html.erb +1 -0
  104. data/lib/generators/goldencobra/articletype/templates/index.html.erb +31 -0
  105. data/lib/generators/goldencobra/install_generator.rb +12 -6
  106. data/lib/generators/goldencobra/templates/active_admin.rb.erb +3 -2
  107. data/lib/generators/goldencobra/templates/apache.tmpl.erb +7 -0
  108. data/lib/generators/goldencobra/templates/assets/javascripts/application.js +0 -1
  109. data/lib/generators/goldencobra/templates/assets/stylesheets/application.css.scss +4 -13
  110. data/lib/generators/goldencobra/templates/assets/stylesheets/footer/{footer.css.scss → content.css.scss} +0 -0
  111. data/lib/generators/goldencobra/templates/assets/stylesheets/header/{header.css.scss → content.css.scss} +0 -0
  112. data/lib/generators/goldencobra/templates/assets/stylesheets/{body/body.css.scss → main/content.css.scss} +0 -0
  113. data/lib/generators/goldencobra/templates/deploy.rb.erb +15 -1
  114. data/lib/generators/goldencobra/templates/seeds.rb.erb +5 -4
  115. data/lib/goldencobra/select_current_client.rb +38 -0
  116. data/lib/goldencobra/version.rb +1 -1
  117. data/lib/tasks/i18n.rake +60 -0
  118. data/lib/tasks/import.rake +16 -0
  119. data/lib/tasks/link_checker.rake +33 -0
  120. metadata +168 -1224
  121. data/app/controllers/goldencobra/api/v1/base_controller.rb +0 -16
  122. data/app/views/goldencobra/admin/articles/_index_of_articles_sidebar.html.erb +0 -11
  123. data/lib/generators/goldencobra/templates/assets/javascripts/bootstrap.min.js +0 -6
  124. data/lib/generators/goldencobra/templates/assets/stylesheets/application-mobile.css.scss +0 -137
  125. data/lib/generators/goldencobra/templates/assets/stylesheets/share/bootstrap-responsive.css +0 -1088
  126. data/lib/generators/goldencobra/templates/assets/stylesheets/share/bootstrap.css +0 -6039
  127. data/test/dummy/Guardfile +0 -28
  128. data/test/dummy/README.rdoc +0 -261
  129. data/test/dummy/Rakefile +0 -17
  130. data/test/dummy/app/assets/javascripts/application.js +0 -12
  131. data/test/dummy/app/assets/stylesheets/active_admin.css.scss +0 -6
  132. data/test/dummy/app/assets/stylesheets/application.css.scss +0 -13
  133. data/test/dummy/app/controllers/application_controller.rb +0 -3
  134. data/test/dummy/app/controllers/extend_goldencobra_articles_controller.rb +0 -19
  135. data/test/dummy/app/helpers/application_helper.rb +0 -2
  136. data/test/dummy/app/views/layouts/_test.html.erb +0 -1
  137. data/test/dummy/app/views/layouts/application.html.erb +0 -47
  138. data/test/dummy/app/views/layouts/for_pdf.html.erb.html +0 -42
  139. data/test/dummy/config.ru +0 -4
  140. data/test/dummy/config/application.rb +0 -69
  141. data/test/dummy/config/boot.rb +0 -10
  142. data/test/dummy/config/cucumber.yml +0 -8
  143. data/test/dummy/config/database.yml +0 -41
  144. data/test/dummy/config/database.yml.template +0 -41
  145. data/test/dummy/config/environment.rb +0 -5
  146. data/test/dummy/config/environments/development.rb +0 -41
  147. data/test/dummy/config/environments/production.rb +0 -73
  148. data/test/dummy/config/environments/test.rb +0 -40
  149. data/test/dummy/config/initializers/active_admin.rb +0 -123
  150. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  151. data/test/dummy/config/initializers/inflections.rb +0 -15
  152. data/test/dummy/config/initializers/mime_types.rb +0 -5
  153. data/test/dummy/config/initializers/secret_token.rb +0 -7
  154. data/test/dummy/config/initializers/session_store.rb +0 -8
  155. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  156. data/test/dummy/config/locales/active_admin.de.yml +0 -91
  157. data/test/dummy/config/locales/en.yml +0 -5
  158. data/test/dummy/config/routes.rb +0 -108
  159. data/test/dummy/config/sunspot.yml +0 -24
  160. data/test/dummy/db/production.sqlite3 +0 -0
  161. data/test/dummy/db/schema.rb +0 -362
  162. data/test/dummy/db/seeds.rb +0 -5
  163. data/test/dummy/features/article.feature +0 -245
  164. data/test/dummy/features/dashboard.feature +0 -23
  165. data/test/dummy/features/frontend.feature +0 -74
  166. data/test/dummy/features/location.feature +0 -0
  167. data/test/dummy/features/menue.feature +0 -50
  168. data/test/dummy/features/setting.feature +0 -35
  169. data/test/dummy/features/step_definitions/article_steps.rb +0 -35
  170. data/test/dummy/features/step_definitions/basic_steps.rb +0 -104
  171. data/test/dummy/features/step_definitions/devise_steps.rb +0 -36
  172. data/test/dummy/features/step_definitions/menue_steps.rb +0 -0
  173. data/test/dummy/features/step_definitions/path_steps.rb +0 -19
  174. data/test/dummy/features/support/env.rb +0 -93
  175. data/test/dummy/features/upload.feature +0 -13
  176. data/test/dummy/features/users.feature +0 -64
  177. data/test/dummy/features/widget.feature +0 -22
  178. data/test/dummy/lib/tasks/cucumber.rake +0 -65
  179. data/test/dummy/lib/tasks/rspec.rake +0 -56
  180. data/test/dummy/log/development.log +0 -92318
  181. data/test/dummy/log/test.log +0 -54562
  182. data/test/dummy/public/422.html +0 -26
  183. data/test/dummy/public/500.html +0 -25
  184. data/test/dummy/public/_404.html +0 -26
  185. data/test/dummy/public/favicon.ico +0 -0
  186. data/test/dummy/public/stylesheets/active_admin.css.css +0 -94
  187. data/test/dummy/public/stylesheets/application.css.css +0 -13
  188. data/test/dummy/public/system/images/1/big/50x50.jpg +0 -0
  189. data/test/dummy/public/system/images/1/large/50x50.jpg +0 -0
  190. data/test/dummy/public/system/images/1/medium/50x50.jpg +0 -0
  191. data/test/dummy/public/system/images/1/mini/50x50.jpg +0 -0
  192. data/test/dummy/public/system/images/1/original/50x50.png +0 -0
  193. data/test/dummy/public/system/images/1/original/test_import.csv +0 -2
  194. data/test/dummy/public/system/images/1/thumb/50x50.jpg +0 -0
  195. data/test/dummy/public/system/images/10/big/50x50.jpg +0 -0
  196. data/test/dummy/public/system/images/10/large/50x50.jpg +0 -0
  197. data/test/dummy/public/system/images/10/medium/50x50.jpg +0 -0
  198. data/test/dummy/public/system/images/10/mini/50x50.jpg +0 -0
  199. data/test/dummy/public/system/images/10/original/50x50.png +0 -0
  200. data/test/dummy/public/system/images/10/original/test_import.csv +0 -4
  201. data/test/dummy/public/system/images/10/thumb/50x50.jpg +0 -0
  202. data/test/dummy/public/system/images/11/big/50x50.jpg +0 -0
  203. data/test/dummy/public/system/images/11/large/50x50.jpg +0 -0
  204. data/test/dummy/public/system/images/11/medium/50x50.jpg +0 -0
  205. data/test/dummy/public/system/images/11/mini/50x50.jpg +0 -0
  206. data/test/dummy/public/system/images/11/original/50x50.png +0 -0
  207. data/test/dummy/public/system/images/11/original/test_import.csv +0 -2
  208. data/test/dummy/public/system/images/11/thumb/50x50.jpg +0 -0
  209. data/test/dummy/public/system/images/12/big/50x50.jpg +0 -0
  210. data/test/dummy/public/system/images/12/large/50x50.jpg +0 -0
  211. data/test/dummy/public/system/images/12/medium/50x50.jpg +0 -0
  212. data/test/dummy/public/system/images/12/mini/50x50.jpg +0 -0
  213. data/test/dummy/public/system/images/12/original/50x50.png +0 -0
  214. data/test/dummy/public/system/images/12/original/test_import.csv +0 -4
  215. data/test/dummy/public/system/images/12/thumb/50x50.jpg +0 -0
  216. data/test/dummy/public/system/images/13/big/50x50.jpg +0 -0
  217. data/test/dummy/public/system/images/13/large/50x50.jpg +0 -0
  218. data/test/dummy/public/system/images/13/medium/50x50.jpg +0 -0
  219. data/test/dummy/public/system/images/13/mini/50x50.jpg +0 -0
  220. data/test/dummy/public/system/images/13/original/50x50.png +0 -0
  221. data/test/dummy/public/system/images/13/original/test_import.csv +0 -2
  222. data/test/dummy/public/system/images/13/thumb/50x50.jpg +0 -0
  223. data/test/dummy/public/system/images/14/big/50x50.jpg +0 -0
  224. data/test/dummy/public/system/images/14/large/50x50.jpg +0 -0
  225. data/test/dummy/public/system/images/14/medium/50x50.jpg +0 -0
  226. data/test/dummy/public/system/images/14/mini/50x50.jpg +0 -0
  227. data/test/dummy/public/system/images/14/original/50x50.png +0 -0
  228. data/test/dummy/public/system/images/14/original/test_import.csv +0 -4
  229. data/test/dummy/public/system/images/14/thumb/50x50.jpg +0 -0
  230. data/test/dummy/public/system/images/15/big/50x50.jpg +0 -0
  231. data/test/dummy/public/system/images/15/large/50x50.jpg +0 -0
  232. data/test/dummy/public/system/images/15/medium/50x50.jpg +0 -0
  233. data/test/dummy/public/system/images/15/mini/50x50.jpg +0 -0
  234. data/test/dummy/public/system/images/15/original/50x50.png +0 -0
  235. data/test/dummy/public/system/images/15/original/test_import.csv +0 -2
  236. data/test/dummy/public/system/images/15/thumb/50x50.jpg +0 -0
  237. data/test/dummy/public/system/images/16/big/50x50.jpg +0 -0
  238. data/test/dummy/public/system/images/16/large/50x50.jpg +0 -0
  239. data/test/dummy/public/system/images/16/medium/50x50.jpg +0 -0
  240. data/test/dummy/public/system/images/16/mini/50x50.jpg +0 -0
  241. data/test/dummy/public/system/images/16/original/50x50.png +0 -0
  242. data/test/dummy/public/system/images/16/original/test_import.csv +0 -4
  243. data/test/dummy/public/system/images/16/thumb/50x50.jpg +0 -0
  244. data/test/dummy/public/system/images/17/big/50x50.jpg +0 -0
  245. data/test/dummy/public/system/images/17/large/50x50.jpg +0 -0
  246. data/test/dummy/public/system/images/17/medium/50x50.jpg +0 -0
  247. data/test/dummy/public/system/images/17/mini/50x50.jpg +0 -0
  248. data/test/dummy/public/system/images/17/original/50x50.png +0 -0
  249. data/test/dummy/public/system/images/17/original/test_import.csv +0 -2
  250. data/test/dummy/public/system/images/17/thumb/50x50.jpg +0 -0
  251. data/test/dummy/public/system/images/18/big/50x50.jpg +0 -0
  252. data/test/dummy/public/system/images/18/large/50x50.jpg +0 -0
  253. data/test/dummy/public/system/images/18/medium/50x50.jpg +0 -0
  254. data/test/dummy/public/system/images/18/mini/50x50.jpg +0 -0
  255. data/test/dummy/public/system/images/18/original/50x50.png +0 -0
  256. data/test/dummy/public/system/images/18/original/test_import.csv +0 -4
  257. data/test/dummy/public/system/images/18/thumb/50x50.jpg +0 -0
  258. data/test/dummy/public/system/images/19/big/50x50.jpg +0 -0
  259. data/test/dummy/public/system/images/19/large/50x50.jpg +0 -0
  260. data/test/dummy/public/system/images/19/medium/50x50.jpg +0 -0
  261. data/test/dummy/public/system/images/19/mini/50x50.jpg +0 -0
  262. data/test/dummy/public/system/images/19/original/50x50.png +0 -0
  263. data/test/dummy/public/system/images/19/original/test_import.csv +0 -2
  264. data/test/dummy/public/system/images/19/thumb/50x50.jpg +0 -0
  265. data/test/dummy/public/system/images/2/big/50x50.jpg +0 -0
  266. data/test/dummy/public/system/images/2/large/50x50.jpg +0 -0
  267. data/test/dummy/public/system/images/2/medium/50x50.jpg +0 -0
  268. data/test/dummy/public/system/images/2/mini/50x50.jpg +0 -0
  269. data/test/dummy/public/system/images/2/original/50x50.png +0 -0
  270. data/test/dummy/public/system/images/2/original/test_import.csv +0 -4
  271. data/test/dummy/public/system/images/2/thumb/50x50.jpg +0 -0
  272. data/test/dummy/public/system/images/20/original/test_import.csv +0 -4
  273. data/test/dummy/public/system/images/21/original/test_import.csv +0 -2
  274. data/test/dummy/public/system/images/22/original/test_import.csv +0 -4
  275. data/test/dummy/public/system/images/23/original/test_import.csv +0 -2
  276. data/test/dummy/public/system/images/24/original/test_import.csv +0 -4
  277. data/test/dummy/public/system/images/25/original/test_import.csv +0 -2
  278. data/test/dummy/public/system/images/26/original/test_import.csv +0 -4
  279. data/test/dummy/public/system/images/27/original/test_import.csv +0 -2
  280. data/test/dummy/public/system/images/28/original/test_import.csv +0 -4
  281. data/test/dummy/public/system/images/29/original/test_import.csv +0 -2
  282. data/test/dummy/public/system/images/3/big/50x50.jpg +0 -0
  283. data/test/dummy/public/system/images/3/big/Bildschirmfoto_2012-10-31_um_11.57.19.jpg +0 -0
  284. data/test/dummy/public/system/images/3/large/50x50.jpg +0 -0
  285. data/test/dummy/public/system/images/3/large/Bildschirmfoto_2012-10-31_um_11.57.19.jpg +0 -0
  286. data/test/dummy/public/system/images/3/medium/50x50.jpg +0 -0
  287. data/test/dummy/public/system/images/3/medium/Bildschirmfoto_2012-10-31_um_11.57.19.jpg +0 -0
  288. data/test/dummy/public/system/images/3/mini/50x50.jpg +0 -0
  289. data/test/dummy/public/system/images/3/mini/Bildschirmfoto_2012-10-31_um_11.57.19.jpg +0 -0
  290. data/test/dummy/public/system/images/3/original/50x50.png +0 -0
  291. data/test/dummy/public/system/images/3/original/Bildschirmfoto_2012-10-31_um_11.57.19.png +0 -0
  292. data/test/dummy/public/system/images/3/original/test_import.csv +0 -2
  293. data/test/dummy/public/system/images/3/thumb/50x50.jpg +0 -0
  294. data/test/dummy/public/system/images/3/thumb/Bildschirmfoto_2012-10-31_um_11.57.19.jpg +0 -0
  295. data/test/dummy/public/system/images/30/original/test_import.csv +0 -4
  296. data/test/dummy/public/system/images/31/original/test_import.csv +0 -2
  297. data/test/dummy/public/system/images/32/original/test_import.csv +0 -4
  298. data/test/dummy/public/system/images/33/original/test_import.csv +0 -2
  299. data/test/dummy/public/system/images/34/original/test_import.csv +0 -4
  300. data/test/dummy/public/system/images/35/original/test_import.csv +0 -2
  301. data/test/dummy/public/system/images/36/original/test_import.csv +0 -4
  302. data/test/dummy/public/system/images/37/original/test_import.csv +0 -2
  303. data/test/dummy/public/system/images/38/original/test_import.csv +0 -4
  304. data/test/dummy/public/system/images/39/original/test_import.csv +0 -2
  305. data/test/dummy/public/system/images/4/big/50x50.jpg +0 -0
  306. data/test/dummy/public/system/images/4/big/Bildschirmfoto_2012-12-07_um_13.28.23.jpg +0 -0
  307. data/test/dummy/public/system/images/4/large/50x50.jpg +0 -0
  308. data/test/dummy/public/system/images/4/large/Bildschirmfoto_2012-12-07_um_13.28.23.jpg +0 -0
  309. data/test/dummy/public/system/images/4/medium/50x50.jpg +0 -0
  310. data/test/dummy/public/system/images/4/medium/Bildschirmfoto_2012-12-07_um_13.28.23.jpg +0 -0
  311. data/test/dummy/public/system/images/4/mini/50x50.jpg +0 -0
  312. data/test/dummy/public/system/images/4/mini/Bildschirmfoto_2012-12-07_um_13.28.23.jpg +0 -0
  313. data/test/dummy/public/system/images/4/original/50x50.png +0 -0
  314. data/test/dummy/public/system/images/4/original/Bildschirmfoto_2012-12-07_um_13.28.23.png +0 -0
  315. data/test/dummy/public/system/images/4/original/test_import.csv +0 -4
  316. data/test/dummy/public/system/images/4/thumb/50x50.jpg +0 -0
  317. data/test/dummy/public/system/images/4/thumb/Bildschirmfoto_2012-12-07_um_13.28.23.jpg +0 -0
  318. data/test/dummy/public/system/images/40/original/test_import.csv +0 -4
  319. data/test/dummy/public/system/images/41/original/test_import.csv +0 -2
  320. data/test/dummy/public/system/images/42/original/test_import.csv +0 -4
  321. data/test/dummy/public/system/images/5/big/50x50.jpg +0 -0
  322. data/test/dummy/public/system/images/5/big/Bildschirmfoto_2012-12-07_um_14.52.36.jpg +0 -0
  323. data/test/dummy/public/system/images/5/large/50x50.jpg +0 -0
  324. data/test/dummy/public/system/images/5/large/Bildschirmfoto_2012-12-07_um_14.52.36.jpg +0 -0
  325. data/test/dummy/public/system/images/5/medium/50x50.jpg +0 -0
  326. data/test/dummy/public/system/images/5/medium/Bildschirmfoto_2012-12-07_um_14.52.36.jpg +0 -0
  327. data/test/dummy/public/system/images/5/mini/50x50.jpg +0 -0
  328. data/test/dummy/public/system/images/5/mini/Bildschirmfoto_2012-12-07_um_14.52.36.jpg +0 -0
  329. data/test/dummy/public/system/images/5/original/50x50.png +0 -0
  330. data/test/dummy/public/system/images/5/original/Bildschirmfoto_2012-12-07_um_14.52.36.png +0 -0
  331. data/test/dummy/public/system/images/5/original/test_import.csv +0 -2
  332. data/test/dummy/public/system/images/5/thumb/50x50.jpg +0 -0
  333. data/test/dummy/public/system/images/5/thumb/Bildschirmfoto_2012-12-07_um_14.52.36.jpg +0 -0
  334. data/test/dummy/public/system/images/6/big/50x50.jpg +0 -0
  335. data/test/dummy/public/system/images/6/big/Bildschirmfoto_2012-12-07_um_14.57.23.jpg +0 -0
  336. data/test/dummy/public/system/images/6/large/50x50.jpg +0 -0
  337. data/test/dummy/public/system/images/6/large/Bildschirmfoto_2012-12-07_um_14.57.23.jpg +0 -0
  338. data/test/dummy/public/system/images/6/medium/50x50.jpg +0 -0
  339. data/test/dummy/public/system/images/6/medium/Bildschirmfoto_2012-12-07_um_14.57.23.jpg +0 -0
  340. data/test/dummy/public/system/images/6/mini/50x50.jpg +0 -0
  341. data/test/dummy/public/system/images/6/mini/Bildschirmfoto_2012-12-07_um_14.57.23.jpg +0 -0
  342. data/test/dummy/public/system/images/6/original/50x50.png +0 -0
  343. data/test/dummy/public/system/images/6/original/Bildschirmfoto_2012-12-07_um_14.57.23.png +0 -0
  344. data/test/dummy/public/system/images/6/original/test_import.csv +0 -4
  345. data/test/dummy/public/system/images/6/thumb/50x50.jpg +0 -0
  346. data/test/dummy/public/system/images/6/thumb/Bildschirmfoto_2012-12-07_um_14.57.23.jpg +0 -0
  347. data/test/dummy/public/system/images/7/big/50x50.jpg +0 -0
  348. data/test/dummy/public/system/images/7/big/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  349. data/test/dummy/public/system/images/7/large/50x50.jpg +0 -0
  350. data/test/dummy/public/system/images/7/large/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  351. data/test/dummy/public/system/images/7/medium/50x50.jpg +0 -0
  352. data/test/dummy/public/system/images/7/medium/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  353. data/test/dummy/public/system/images/7/mini/50x50.jpg +0 -0
  354. data/test/dummy/public/system/images/7/mini/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  355. data/test/dummy/public/system/images/7/original/50x50.png +0 -0
  356. data/test/dummy/public/system/images/7/original/Bildschirmfoto_2012-12-10_um_11.45.47.png +0 -0
  357. data/test/dummy/public/system/images/7/original/test_import.csv +0 -2
  358. data/test/dummy/public/system/images/7/thumb/50x50.jpg +0 -0
  359. data/test/dummy/public/system/images/7/thumb/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  360. data/test/dummy/public/system/images/8/big/50x50.jpg +0 -0
  361. data/test/dummy/public/system/images/8/large/50x50.jpg +0 -0
  362. data/test/dummy/public/system/images/8/medium/50x50.jpg +0 -0
  363. data/test/dummy/public/system/images/8/mini/50x50.jpg +0 -0
  364. data/test/dummy/public/system/images/8/original/50x50.png +0 -0
  365. data/test/dummy/public/system/images/8/original/test_import.csv +0 -4
  366. data/test/dummy/public/system/images/8/thumb/50x50.jpg +0 -0
  367. data/test/dummy/public/system/images/9/big/50x50.jpg +0 -0
  368. data/test/dummy/public/system/images/9/big/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  369. data/test/dummy/public/system/images/9/large/50x50.jpg +0 -0
  370. data/test/dummy/public/system/images/9/large/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  371. data/test/dummy/public/system/images/9/medium/50x50.jpg +0 -0
  372. data/test/dummy/public/system/images/9/medium/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  373. data/test/dummy/public/system/images/9/mini/50x50.jpg +0 -0
  374. data/test/dummy/public/system/images/9/mini/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  375. data/test/dummy/public/system/images/9/original/50x50.png +0 -0
  376. data/test/dummy/public/system/images/9/original/Bildschirmfoto_2012-12-10_um_11.45.47.png +0 -0
  377. data/test/dummy/public/system/images/9/original/test_import.csv +0 -2
  378. data/test/dummy/public/system/images/9/thumb/50x50.jpg +0 -0
  379. data/test/dummy/public/system/images/9/thumb/Bildschirmfoto_2012-12-10_um_11.45.47.jpg +0 -0
  380. data/test/dummy/script/cucumber +0 -10
  381. data/test/dummy/script/rails +0 -6
  382. data/test/dummy/spec/controllers/api/v1/tokens_controller_spec.rb +0 -35
  383. data/test/dummy/spec/controllers/articles_controller_spec.rb +0 -103
  384. data/test/dummy/spec/factories.rb +0 -99
  385. data/test/dummy/spec/fixtures/50x50.png +0 -0
  386. data/test/dummy/spec/integration/article_active_since.rb +0 -46
  387. data/test/dummy/spec/models/article_spec.rb +0 -135
  388. data/test/dummy/spec/models/import_spec.rb +0 -51
  389. data/test/dummy/spec/models/location_spec.rb +0 -26
  390. data/test/dummy/spec/models/menue_spec.rb +0 -13
  391. data/test/dummy/spec/models/setting_spec.rb +0 -11
  392. data/test/dummy/spec/models/user_spec.rb +0 -8
  393. data/test/dummy/spec/models/visitor_spec.rb +0 -8
  394. data/test/dummy/spec/models/widget_spec.rb +0 -13
  395. data/test/dummy/spec/spec_helper.rb +0 -42
  396. data/test/dummy/spec/test_helpers.rb +0 -24
  397. data/test/dummy/test_import.csv +0 -4
  398. data/test/dummy/tmp/cache/assets/BFF/F90/sprockets%2F52f50851d6524895a2886812af912683 +0 -0
  399. data/test/dummy/tmp/cache/assets/C10/920/sprockets%2Ff213661695d035131a4062379125b7da +0 -0
  400. data/test/dummy/tmp/cache/assets/C13/840/sprockets%2Fae5565365788994193581f7d235587e2 +0 -0
  401. data/test/dummy/tmp/cache/assets/C2E/060/sprockets%2F0403655d829f725f379cd71695419a50 +0 -0
  402. data/test/dummy/tmp/cache/assets/C4D/470/sprockets%2F5a6027ad80312ee007686b8297790c05 +0 -0
  403. data/test/dummy/tmp/cache/assets/C51/1F0/sprockets%2F79b237703d54d00126c43887f35d092e +0 -0
  404. data/test/dummy/tmp/cache/assets/C53/D30/sprockets%2F7895b9c27800b57a8e7b17724375a001 +0 -0
  405. data/test/dummy/tmp/cache/assets/C75/E10/sprockets%2Fe9d6c65205479287744e9c9d867404d9 +0 -0
  406. data/test/dummy/tmp/cache/assets/C79/660/sprockets%2F004f776712133c4447d6cf06536ba26f +0 -0
  407. data/test/dummy/tmp/cache/assets/C94/B30/sprockets%2F9f6894b36eca3386a83328bb18888521 +0 -0
  408. data/test/dummy/tmp/cache/assets/C96/2F0/sprockets%2F423e893a5f74ea10e977779119fd9414 +0 -0
  409. data/test/dummy/tmp/cache/assets/CA2/200/sprockets%2Fccb437303877ab821396a4951d3c010e +0 -0
  410. data/test/dummy/tmp/cache/assets/CA2/C80/sprockets%2F87d459d8d98774f16951def10894e035 +0 -0
  411. data/test/dummy/tmp/cache/assets/CA5/DF0/sprockets%2Fea731728c2dd3651656a0e946204d3a3 +0 -0
  412. data/test/dummy/tmp/cache/assets/CA7/050/sprockets%2Ff9a2145d9e38104f18a0a04a328b5496 +0 -0
  413. data/test/dummy/tmp/cache/assets/CB1/510/sprockets%2Fb297fa3bc7ab922a440d958669820702 +0 -0
  414. data/test/dummy/tmp/cache/assets/CB1/DA0/sprockets%2F568365290ac1cdb0723de971a26957d3 +0 -0
  415. data/test/dummy/tmp/cache/assets/CBB/5B0/sprockets%2Ff469c44330a1ee8d09e791356e65c481 +0 -0
  416. data/test/dummy/tmp/cache/assets/CBF/0C0/sprockets%2Ff9375222fa893ed80695b4c2941657ac +0 -0
  417. data/test/dummy/tmp/cache/assets/CC2/660/sprockets%2F7539094feb779d33388246da1a4e1b98 +0 -0
  418. data/test/dummy/tmp/cache/assets/CC6/620/sprockets%2F9bdc9a75c686e4209c5137c8155e9844 +0 -0
  419. data/test/dummy/tmp/cache/assets/CC7/EB0/sprockets%2F653e162f53dc7022963e569bf9b9567f +0 -0
  420. data/test/dummy/tmp/cache/assets/CCE/0A0/sprockets%2F95c8f4bce53c58733585886f4297c2e2 +0 -0
  421. data/test/dummy/tmp/cache/assets/CD3/AB0/sprockets%2F6f63c3b89a561114f68fd4ca0033c160 +0 -0
  422. data/test/dummy/tmp/cache/assets/CD3/E00/sprockets%2F8409ff304869ac45c2d0020f0d3b75d1 +0 -0
  423. data/test/dummy/tmp/cache/assets/CD4/5C0/sprockets%2F920c6fb184af055d2594433b8b023ef0 +0 -0
  424. data/test/dummy/tmp/cache/assets/CDA/D00/sprockets%2Fdb91a08476e6c3361e6e1b60048647ba +0 -0
  425. data/test/dummy/tmp/cache/assets/CDB/F60/sprockets%2F0faf146057232cee715013f4cc2678f9 +0 -0
  426. data/test/dummy/tmp/cache/assets/CDC/530/sprockets%2F94bac30f3e934702856235bdd089d14b +0 -0
  427. data/test/dummy/tmp/cache/assets/CDC/CE0/sprockets%2F3fc6d08668b5703011ad6ffc0c254748 +0 -0
  428. data/test/dummy/tmp/cache/assets/CDD/810/sprockets%2Fcf3266f8064f55cd5d260a36a73815c1 +0 -0
  429. data/test/dummy/tmp/cache/assets/CDF/A20/sprockets%2Fc9f706d388ff9fbcc678691581833898 +0 -0
  430. data/test/dummy/tmp/cache/assets/CE2/170/sprockets%2F281660917735e0c50fceb90ee509bf72 +0 -0
  431. data/test/dummy/tmp/cache/assets/CE2/510/sprockets%2F5c5070d15d55ae08bac4865ed4158488 +0 -0
  432. data/test/dummy/tmp/cache/assets/CE3/A70/sprockets%2F0b0eb5862c20da7497cd50c6982861d9 +0 -0
  433. data/test/dummy/tmp/cache/assets/CE5/650/sprockets%2F8ab512c9b33ac90e699b73469d71f061 +0 -0
  434. data/test/dummy/tmp/cache/assets/CE5/8E0/sprockets%2F1f4ec16550d826ba72ffe82073d36397 +0 -0
  435. data/test/dummy/tmp/cache/assets/CE7/2F0/sprockets%2Fb42210a5af7151322c14f117a35eabe1 +0 -0
  436. data/test/dummy/tmp/cache/assets/CE7/A70/sprockets%2F54d5f148fe3d706d075f7ce6809080a2 +0 -0
  437. data/test/dummy/tmp/cache/assets/CEC/E30/sprockets%2F0d922a4346c9671a9dedd98473fc4651 +0 -0
  438. data/test/dummy/tmp/cache/assets/CF4/7D0/sprockets%2F867e314f36b2960e74c91de74cf82f19 +0 -0
  439. data/test/dummy/tmp/cache/assets/CF4/DC0/sprockets%2Fc2d17453e6d9680359596ba6f7a71ec9 +0 -0
  440. data/test/dummy/tmp/cache/assets/CF6/6A0/sprockets%2F2d7fdc6946a67c4896d30e37735cc763 +0 -0
  441. data/test/dummy/tmp/cache/assets/CF9/570/sprockets%2F7994695b4e6ddc627c582b6211b768ff +0 -0
  442. data/test/dummy/tmp/cache/assets/D12/7E0/sprockets%2F14a7de096322b2891e6fa2b71d78fe26 +0 -0
  443. data/test/dummy/tmp/cache/assets/D15/2C0/sprockets%2F1490b7fd53bc829bf9534ab7ac432596 +0 -0
  444. data/test/dummy/tmp/cache/assets/D15/810/sprockets%2F78f33aa476ff4593025e3775faaa36d2 +0 -0
  445. data/test/dummy/tmp/cache/assets/D16/390/sprockets%2F70ed9b780960ed6e61c09e47b11e29c3 +0 -0
  446. data/test/dummy/tmp/cache/assets/D19/4A0/sprockets%2Fac5ec0ee6599e100703e97579fa7261d +0 -0
  447. data/test/dummy/tmp/cache/assets/D19/750/sprockets%2F81631db0e26782334ccecf4f9676e1d8 +0 -0
  448. data/test/dummy/tmp/cache/assets/D1A/B30/sprockets%2Fd84573b6dfe0bf1e70645d87523a0e89 +0 -0
  449. data/test/dummy/tmp/cache/assets/D1B/630/sprockets%2F67732a58df43ba3cfdd8197d824b7606 +0 -0
  450. data/test/dummy/tmp/cache/assets/D21/780/sprockets%2Fc312c2683afc34522c0b452dae7fb210 +0 -0
  451. data/test/dummy/tmp/cache/assets/D29/7A0/sprockets%2F3b490760dbf0dc260772aa4e2c15a0f6 +0 -0
  452. data/test/dummy/tmp/cache/assets/D2E/610/sprockets%2F48e96be7288ec89bd8043f2ac8a93478 +0 -0
  453. data/test/dummy/tmp/cache/assets/D2E/8D0/sprockets%2Fcb3137b9eace6c3c33c14b56e4513172 +0 -0
  454. data/test/dummy/tmp/cache/assets/D30/960/sprockets%2Ff214f51bcae283e093add7c400d52925 +0 -0
  455. data/test/dummy/tmp/cache/assets/D30/F20/sprockets%2F9b4f2be7a6c0597b4e34201de213b18a +0 -0
  456. data/test/dummy/tmp/cache/assets/D31/A20/sprockets%2F5bd03bb3b27add55c2972fa0647c0934 +0 -0
  457. data/test/dummy/tmp/cache/assets/D32/B60/sprockets%2F23180d3b8f47dbc0c42e2ed4544d0e37 +0 -0
  458. data/test/dummy/tmp/cache/assets/D34/900/sprockets%2F177645c0a4978de97945ef89f0fbd7d6 +0 -0
  459. data/test/dummy/tmp/cache/assets/D36/770/sprockets%2F8eca64a00035b4ad9fad8c47b2424775 +0 -0
  460. data/test/dummy/tmp/cache/assets/D3B/9C0/sprockets%2Fb168293b8d37cb72a6502fe3c293ace4 +0 -0
  461. data/test/dummy/tmp/cache/assets/D3B/C40/sprockets%2F44c2f842c3ac790d3609ced4524dc2c7 +0 -0
  462. data/test/dummy/tmp/cache/assets/D3D/3E0/sprockets%2F2e3ed683f01a553001ccb87d939cf39b +0 -0
  463. data/test/dummy/tmp/cache/assets/D3D/6A0/sprockets%2F562a32d9fc82bc1bd4199d68b39b413a +0 -0
  464. data/test/dummy/tmp/cache/assets/D3F/760/sprockets%2F59c9a5552cc36c2af3b17169fae423f4 +0 -0
  465. data/test/dummy/tmp/cache/assets/D41/4E0/sprockets%2Faaa2388bb1384c968dff335997a0c2e0 +0 -0
  466. data/test/dummy/tmp/cache/assets/D41/630/sprockets%2Fd1451c22796c79cbfb852b4790c3ff0b +0 -0
  467. data/test/dummy/tmp/cache/assets/D41/A40/sprockets%2F91baa46f6fd8dd7c171891032aab3994 +0 -0
  468. data/test/dummy/tmp/cache/assets/D43/590/sprockets%2F441795811965edb5d705d08eb0ee5cdb +0 -0
  469. data/test/dummy/tmp/cache/assets/D44/5F0/sprockets%2Fe431840089deb6284bfc4dcf63d74f41 +0 -0
  470. data/test/dummy/tmp/cache/assets/D48/350/sprockets%2F7e29702b98fbd41fcbbc073735db6847 +0 -0
  471. data/test/dummy/tmp/cache/assets/D49/BD0/sprockets%2F716e86e0be13a33c2fc5899e92b6c17e +0 -0
  472. data/test/dummy/tmp/cache/assets/D4D/0F0/sprockets%2Fcb16357e7fdc97371f0397af802bd48f +0 -0
  473. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  474. data/test/dummy/tmp/cache/assets/D50/AD0/sprockets%2Fc7368da9990672d4d406f6dd20c9fda7 +0 -0
  475. data/test/dummy/tmp/cache/assets/D53/0A0/sprockets%2F02db19e688520dfe875757a743fd6fec +0 -0
  476. data/test/dummy/tmp/cache/assets/D59/CA0/sprockets%2Fa3ca9a030c6a20ec1b2d778d359c205f +0 -0
  477. data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
  478. data/test/dummy/tmp/cache/assets/D5A/D50/sprockets%2Fe4bcbd6770423c6e30829b1ab25ca5a2 +0 -0
  479. data/test/dummy/tmp/cache/assets/D64/E80/sprockets%2Ff3c03cbc4ea3c2a890ea60241b89579b +0 -0
  480. data/test/dummy/tmp/cache/assets/D65/740/sprockets%2F3ecad5f8910df2585ca157b6c4a2d403 +0 -0
  481. data/test/dummy/tmp/cache/assets/D65/8D0/sprockets%2F4127afd730a8d634672f8a6ea40a1bfd +0 -0
  482. data/test/dummy/tmp/cache/assets/D67/060/sprockets%2Ffa4b9875d886e6bfcf85d28f769368a2 +0 -0
  483. data/test/dummy/tmp/cache/assets/D68/AC0/sprockets%2Fee6f1587f10b1bcadc59df0c55045732 +0 -0
  484. data/test/dummy/tmp/cache/assets/D68/F30/sprockets%2F8e36577579ff9d5526a94cea4fff9d81 +0 -0
  485. data/test/dummy/tmp/cache/assets/D69/080/sprockets%2Fa0d9cc4f60c3238274667b1b7ffb40bf +0 -0
  486. data/test/dummy/tmp/cache/assets/D6A/740/sprockets%2F521b0ea73b99734fd68b17bc81a1bcb9 +0 -0
  487. data/test/dummy/tmp/cache/assets/D6C/420/sprockets%2Fa285aed44ffe06e56a29b7a8323d00f7 +0 -0
  488. data/test/dummy/tmp/cache/assets/D6C/840/sprockets%2F62730c24299dda29ec65bfaa6a7d407c +0 -0
  489. data/test/dummy/tmp/cache/assets/D6D/130/sprockets%2Fc6dff37c9c419b325f3a964aed240d31 +0 -0
  490. data/test/dummy/tmp/cache/assets/D71/A90/sprockets%2F596767e40572cd0eaf290c9aa962daca +0 -0
  491. data/test/dummy/tmp/cache/assets/D73/1C0/sprockets%2F8a05f13c286aa37cd408ed6564d9f6ea +0 -0
  492. data/test/dummy/tmp/cache/assets/D73/820/sprockets%2Ff04f155efde7d2c3971b1f4981ed730b +0 -0
  493. data/test/dummy/tmp/cache/assets/D74/450/sprockets%2F3cb73527d7ec47f4d8eaa88de7033e20 +0 -0
  494. data/test/dummy/tmp/cache/assets/D77/970/sprockets%2Ff32a746ebfa28c34d7a50748ccb468e9 +0 -0
  495. data/test/dummy/tmp/cache/assets/D7B/A10/sprockets%2F34f96b747460f8faf7a14a80ab1f7fe8 +0 -0
  496. data/test/dummy/tmp/cache/assets/D7C/420/sprockets%2F84e5b777b1ddaf30587e5612c6f9d4eb +0 -0
  497. data/test/dummy/tmp/cache/assets/D7D/A00/sprockets%2Fa84f56f9d0f18841c7a5b8e0a8f91eb5 +0 -0
  498. data/test/dummy/tmp/cache/assets/D7D/C10/sprockets%2F8e7c7fb587564660236adcdb28dbdf72 +0 -0
  499. data/test/dummy/tmp/cache/assets/D80/390/sprockets%2Ff78b6e633f833c897d6bafc9061cec24 +0 -0
  500. data/test/dummy/tmp/cache/assets/D87/BB0/sprockets%2F9db886c59fa287a841b9c7cf5b4a8f61 +0 -0
  501. data/test/dummy/tmp/cache/assets/D88/0D0/sprockets%2Fdd31ca2b6f0e33b902183fdebd06d324 +0 -0
  502. data/test/dummy/tmp/cache/assets/D88/6E0/sprockets%2Fdf0c11f1e4bec06fa35c42d370fd2380 +0 -0
  503. data/test/dummy/tmp/cache/assets/D8B/860/sprockets%2Ff8193ee7181d5fe4ade604e6997b6e9c +0 -0
  504. data/test/dummy/tmp/cache/assets/D8C/CE0/sprockets%2F8e6e23ae61bf0ab42dc1900d34e190df +0 -0
  505. data/test/dummy/tmp/cache/assets/D8E/AB0/sprockets%2F3a99cbdb4da1d5bd389fc1350b273c01 +0 -0
  506. data/test/dummy/tmp/cache/assets/D91/080/sprockets%2Fbcca522c6302f184f12fe0e8a7d7e71a +0 -0
  507. data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
  508. data/test/dummy/tmp/cache/assets/D96/1D0/sprockets%2Ff6d45bebb51df55e1924af103053e6ed +0 -0
  509. data/test/dummy/tmp/cache/assets/D98/4F0/sprockets%2Fe363cb9da92adcb537f4bf391627d0b0 +0 -0
  510. data/test/dummy/tmp/cache/assets/D9C/0D0/sprockets%2Fe7adcdd24ec3d606b46cf1473b2d9293 +0 -0
  511. data/test/dummy/tmp/cache/assets/D9F/300/sprockets%2Fc13fc73ceafa45876a901b3e775b83ae +0 -0
  512. data/test/dummy/tmp/cache/assets/D9F/4B0/sprockets%2Fffd9f9c1d1ac2fd4f02a49384463c0d5 +0 -0
  513. data/test/dummy/tmp/cache/assets/DA4/2A0/sprockets%2Fdc45f9ee9b2531693f3a8db5ddab6180 +0 -0
  514. data/test/dummy/tmp/cache/assets/DA6/B10/sprockets%2Fcfeda9155376b6ae46ce439dd073dd90 +0 -0
  515. data/test/dummy/tmp/cache/assets/DA8/C50/sprockets%2F1dec9fb630bf84ca3fde65f43785191d +0 -0
  516. data/test/dummy/tmp/cache/assets/DB9/B90/sprockets%2Fe982b7fe9886db374a1476b2f66feebc +0 -0
  517. data/test/dummy/tmp/cache/assets/DBB/7D0/sprockets%2Fe1bbced2134a660fb19e331adeb4a838 +0 -0
  518. data/test/dummy/tmp/cache/assets/DC0/2F0/sprockets%2F05f9e5b502095082ea0eafcfc0bced27 +0 -0
  519. data/test/dummy/tmp/cache/assets/DC3/FD0/sprockets%2Fbe29a1f2c631df2aaa69b4e028392cfd +0 -0
  520. data/test/dummy/tmp/cache/assets/DC6/9D0/sprockets%2F2c1c5a0a4989f9a0dac4d24b402e9dff +0 -0
  521. data/test/dummy/tmp/cache/assets/DCA/190/sprockets%2Ff7502d6b417f50ab1ee8e6047ff1cfbc +0 -0
  522. data/test/dummy/tmp/cache/assets/DCB/F50/sprockets%2F18c5510d6e3d5f3ecfbed2a394a55f5b +0 -0
  523. data/test/dummy/tmp/cache/assets/DCE/410/sprockets%2Fc9c7dac00ead25d2eb9b983266bfb591 +0 -0
  524. data/test/dummy/tmp/cache/assets/DD1/150/sprockets%2F2e7e20cfc4faea4ee9f2119d87073df2 +0 -0
  525. data/test/dummy/tmp/cache/assets/DD2/CE0/sprockets%2Ffc987b85fe1c0c6cb4c37a3536ad44fc +0 -0
  526. data/test/dummy/tmp/cache/assets/DD9/7D0/sprockets%2Fcc35b025c24bc5ff849c7c6e8a9a79be +0 -0
  527. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  528. data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
  529. data/test/dummy/tmp/cache/assets/DDF/940/sprockets%2F329fdc5e00f88b6747de5d27efcbef62 +0 -0
  530. data/test/dummy/tmp/cache/assets/DF7/7B0/sprockets%2F61bd6dacddd27b5dd2456a8d3f5504eb +0 -0
  531. data/test/dummy/tmp/cache/assets/DFA/D20/sprockets%2F5d1556bbc577fa2b606ac53ec8ebdbe5 +0 -0
  532. data/test/dummy/tmp/cache/assets/E00/8F0/sprockets%2Fb8ecafefa8c6880717034e4f0cdfd2c3 +0 -0
  533. data/test/dummy/tmp/cache/assets/E03/FD0/sprockets%2Fde09b0aabe29568b6bcdf7af16bf6738 +0 -0
  534. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  535. data/test/dummy/tmp/cache/assets/E0D/8D0/sprockets%2Ffc88a9c4cd6c396ff5a61ad86fd25ce0 +0 -0
  536. data/test/dummy/tmp/cache/assets/E0E/710/sprockets%2Fd0d6cb86fd5f0346d9adee896d24c7dd +0 -0
  537. data/test/dummy/tmp/cache/assets/E1F/490/sprockets%2F04e0f8bc9c10ec7be1d91ae72abf2db5 +0 -0
  538. data/test/dummy/tmp/cache/assets/E2B/000/sprockets%2Fb43faef1ff7e3295ad2bae61de1e88a2 +0 -0
  539. data/test/dummy/tmp/cache/assets/E2D/F40/sprockets%2Fec8acd2ee03079a3a9aec47f109ca8ff +0 -0
  540. data/test/dummy/tmp/cache/assets/E32/960/sprockets%2F7ad0f5adacec8f6944e61dd3a94f3c6b +0 -0
  541. data/test/dummy/tmp/cache/assets/E59/E90/sprockets%2F4e5ba8c5b3af5e1ce55c7bdd4fd4e40d +0 -0
  542. data/test/dummy/tmp/cache/assets/E62/F70/sprockets%2F8ff8e11cef1cd1bdca97e038847dcacd +0 -0
  543. data/test/dummy/tmp/cache/assets/E65/8B0/sprockets%2Fea24ed417feeb9fd784ac26b1f5bdff4 +0 -0
  544. data/test/dummy/tmp/cache/assets/E80/430/sprockets%2Fadf2ddec55dacd94dca3e4ffba434123 +0 -0
  545. data/test/dummy/tmp/cache/assets/E89/2F0/sprockets%2Ffa96d312c21daeeec3cfe6eeb8cfc009 +0 -0
  546. data/test/dummy/tmp/cache/sass/05c9fbbbe3be4d084fd1efa8ef5e2fc2ea0eb956/_grid-background.scssc +0 -0
  547. data/test/dummy/tmp/cache/sass/1d5486afa871296c704553fddbf38547ed9ede2a/_dashboard.scssc +0 -0
  548. data/test/dummy/tmp/cache/sass/1d5486afa871296c704553fddbf38547ed9ede2a/_logged_out.scssc +0 -0
  549. data/test/dummy/tmp/cache/sass/21e4dbbe48c3f92dd56a811a538228b10b9ebc3a/_css3.scssc +0 -0
  550. data/test/dummy/tmp/cache/sass/21e4dbbe48c3f92dd56a811a538228b10b9ebc3a/_support.scssc +0 -0
  551. data/test/dummy/tmp/cache/sass/21e4dbbe48c3f92dd56a811a538228b10b9ebc3a/_typography.scssc +0 -0
  552. data/test/dummy/tmp/cache/sass/21e4dbbe48c3f92dd56a811a538228b10b9ebc3a/_utilities.scssc +0 -0
  553. data/test/dummy/tmp/cache/sass/28d91a13a7f694aa8cb4c93affa084fc5ab3a182/_bourbon-deprecated-upcoming.scssc +0 -0
  554. data/test/dummy/tmp/cache/sass/28d91a13a7f694aa8cb4c93affa084fc5ab3a182/_bourbon.scssc +0 -0
  555. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_button.scssc +0 -0
  556. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_clearfix.scssc +0 -0
  557. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_font-family.scssc +0 -0
  558. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_hide-text.scssc +0 -0
  559. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_html5-input-types.scssc +0 -0
  560. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_position.scssc +0 -0
  561. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_prefixer.scssc +0 -0
  562. data/test/dummy/tmp/cache/sass/4b0078f37174f0a27e232c2a02f9cd55249e8b6b/_timing-functions.scssc +0 -0
  563. data/test/dummy/tmp/cache/sass/4eb4c6d631cec92d6f2f7f8f713f81159173b6da/_footer.scssc +0 -0
  564. data/test/dummy/tmp/cache/sass/4eb4c6d631cec92d6f2f7f8f713f81159173b6da/_main_structure.scssc +0 -0
  565. data/test/dummy/tmp/cache/sass/4eb4c6d631cec92d6f2f7f8f713f81159173b6da/_title_bar.scssc +0 -0
  566. data/test/dummy/tmp/cache/sass/4eb4c6d631cec92d6f2f7f8f713f81159173b6da/_top.scssc +0 -0
  567. data/test/dummy/tmp/cache/sass/54ea5fa1e7d898a85fc625e8ec840d7bf3256e35/active_admin.css.scssc +0 -0
  568. data/test/dummy/tmp/cache/sass/54ea5fa1e7d898a85fc625e8ec840d7bf3256e35/application.css.scssc +0 -0
  569. data/test/dummy/tmp/cache/sass/5c0f4502f78a9ac0290db1c7855b7f74a3c43029/active_admin.css.scssc +0 -0
  570. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_all.css.scssc +0 -0
  571. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_buttons.css.scssc +0 -0
  572. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_gradients.css.scssc +0 -0
  573. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_icons.css.scssc +0 -0
  574. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_reset.css.scssc +0 -0
  575. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_rounded.css.scssc +0 -0
  576. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_sections.css.scssc +0 -0
  577. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_shadows.css.scssc +0 -0
  578. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_typography.scssc +0 -0
  579. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_utilities.scssc +0 -0
  580. data/test/dummy/tmp/cache/sass/847767b28784c5ab91b8888d71cf7e72f65a790a/_variables.css.scssc +0 -0
  581. data/test/dummy/tmp/cache/sass/8b73b9fd6e9fc911906884144988a8fac53d5a3f/_bullets.scssc +0 -0
  582. data/test/dummy/tmp/cache/sass/8b73b9fd6e9fc911906884144988a8fac53d5a3f/_horizontal-list.scssc +0 -0
  583. data/test/dummy/tmp/cache/sass/8b73b9fd6e9fc911906884144988a8fac53d5a3f/_inline-block-list.scssc +0 -0
  584. data/test/dummy/tmp/cache/sass/8b73b9fd6e9fc911906884144988a8fac53d5a3f/_inline-list.scssc +0 -0
  585. data/test/dummy/tmp/cache/sass/8e10f3df6041b7e72a353720f2fcf9bddfb55870/_utilities.scssc +0 -0
  586. data/test/dummy/tmp/cache/sass/934faa7fc0ed7b350d1632e7fc73209d3183d8ff/_base.scssc +0 -0
  587. data/test/dummy/tmp/cache/sass/934faa7fc0ed7b350d1632e7fc73209d3183d8ff/_sprite-img.scssc +0 -0
  588. data/test/dummy/tmp/cache/sass/9b5c9558da0f81eb6be64dde65845fedbd8605ef/_compass.scssc +0 -0
  589. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_batch_actions.css.scssc +0 -0
  590. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_blank_slates.scssc +0 -0
  591. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_breadcrumbs.scssc +0 -0
  592. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_buttons.scssc +0 -0
  593. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_columns.scssc +0 -0
  594. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_comments.css.scssc +0 -0
  595. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_date_picker.css.scssc +0 -0
  596. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_dropdown_menu.scssc +0 -0
  597. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_flash_messages.css.scssc +0 -0
  598. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_grid.scssc +0 -0
  599. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_links.scssc +0 -0
  600. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_pagination.scssc +0 -0
  601. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_panels.scssc +0 -0
  602. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_popovers.css.scssc +0 -0
  603. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_scopes.scssc +0 -0
  604. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_status_tags.scssc +0 -0
  605. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_table_tools.css.scssc +0 -0
  606. data/test/dummy/tmp/cache/sass/9f8e9618ee1bbe32c378d51a27cb5ed09207a737/_tables.css.scssc +0 -0
  607. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_appearance.scssc +0 -0
  608. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_background-clip.scssc +0 -0
  609. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_background-origin.scssc +0 -0
  610. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_background-size.scssc +0 -0
  611. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_border-radius.scssc +0 -0
  612. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_box-shadow.scssc +0 -0
  613. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_box-sizing.scssc +0 -0
  614. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_box.scssc +0 -0
  615. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_columns.scssc +0 -0
  616. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_filter.scssc +0 -0
  617. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_font-face.scssc +0 -0
  618. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_hyphenation.scssc +0 -0
  619. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_images.scssc +0 -0
  620. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_inline-block.scssc +0 -0
  621. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_opacity.scssc +0 -0
  622. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_regions.scssc +0 -0
  623. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_shared.scssc +0 -0
  624. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_text-shadow.scssc +0 -0
  625. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_transform.scssc +0 -0
  626. data/test/dummy/tmp/cache/sass/a768930c683e3058d1edd4a6c94b59eb2468e8a4/_transition.scssc +0 -0
  627. data/test/dummy/tmp/cache/sass/a8972c2597143814459f1a81a43e739d66be3f72/_links.scssc +0 -0
  628. data/test/dummy/tmp/cache/sass/a8972c2597143814459f1a81a43e739d66be3f72/_lists.scssc +0 -0
  629. data/test/dummy/tmp/cache/sass/a8972c2597143814459f1a81a43e739d66be3f72/_text.scssc +0 -0
  630. data/test/dummy/tmp/cache/sass/a8972c2597143814459f1a81a43e739d66be3f72/_vertical_rhythm.scssc +0 -0
  631. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/_base.css.scssc +0 -0
  632. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/_forms.css.scssc +0 -0
  633. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/_header.css.scssc +0 -0
  634. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/_mixins.css.scssc +0 -0
  635. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/_typography.css.scssc +0 -0
  636. data/test/dummy/tmp/cache/sass/b7b0653394ac0e1e6076e8a6810a6ee79084b7ad/print.css.scssc +0 -0
  637. data/test/dummy/tmp/cache/sass/b96d7e1b24c988bf6ea98ca519b93f19d8736d99/_ellipsis.scssc +0 -0
  638. data/test/dummy/tmp/cache/sass/b96d7e1b24c988bf6ea98ca519b93f19d8736d99/_force-wrap.scssc +0 -0
  639. data/test/dummy/tmp/cache/sass/b96d7e1b24c988bf6ea98ca519b93f19d8736d99/_nowrap.scssc +0 -0
  640. data/test/dummy/tmp/cache/sass/b96d7e1b24c988bf6ea98ca519b93f19d8736d99/_replacement.scssc +0 -0
  641. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_compact.scssc +0 -0
  642. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_deprecated-webkit-gradient.scssc +0 -0
  643. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_flex-grid.scssc +0 -0
  644. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_grid-width.scssc +0 -0
  645. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_linear-gradient.scssc +0 -0
  646. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_modular-scale.scssc +0 -0
  647. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_radial-gradient.scssc +0 -0
  648. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_render-gradients.scssc +0 -0
  649. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_tint-shade.scssc +0 -0
  650. data/test/dummy/tmp/cache/sass/bafca0ac67d4233137d57bee4c317a27de143723/_transition-property-name.scssc +0 -0
  651. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_animation.scssc +0 -0
  652. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_appearance.scssc +0 -0
  653. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_background-image.scssc +0 -0
  654. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_background-size.scssc +0 -0
  655. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_background.scssc +0 -0
  656. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_border-image.scssc +0 -0
  657. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_border-radius.scssc +0 -0
  658. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_box-shadow.scssc +0 -0
  659. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_box-sizing.scssc +0 -0
  660. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_columns.scssc +0 -0
  661. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_flex-box.scssc +0 -0
  662. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_font-face.scssc +0 -0
  663. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_hidpi-media-query.scssc +0 -0
  664. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_image-rendering.scssc +0 -0
  665. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_inline-block.scssc +0 -0
  666. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_linear-gradient.scssc +0 -0
  667. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_perspective.scssc +0 -0
  668. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_radial-gradient.scssc +0 -0
  669. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_transform.scssc +0 -0
  670. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_transition.scssc +0 -0
  671. data/test/dummy/tmp/cache/sass/be71dcd7e0509286420bb09cf8555193ae6adcd4/_user-select.scssc +0 -0
  672. data/test/dummy/tmp/cache/sass/c699a0a1e879dfe557c4f62edffcb78874fdeaba/_alternating-rows-and-columns.scssc +0 -0
  673. data/test/dummy/tmp/cache/sass/c699a0a1e879dfe557c4f62edffcb78874fdeaba/_borders.scssc +0 -0
  674. data/test/dummy/tmp/cache/sass/c699a0a1e879dfe557c4f62edffcb78874fdeaba/_scaffolding.scssc +0 -0
  675. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_clearfix.scssc +0 -0
  676. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_float.scssc +0 -0
  677. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_hacks.scssc +0 -0
  678. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_min.scssc +0 -0
  679. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_reset.scssc +0 -0
  680. data/test/dummy/tmp/cache/sass/dec995aab8094a7a65da2f93247fb4bb2e98908f/_tag-cloud.scssc +0 -0
  681. data/test/dummy/tmp/cache/sass/f4493159a7eb74436af172b9596794de284883cb/_color.scssc +0 -0
  682. data/test/dummy/tmp/cache/sass/f4493159a7eb74436af172b9596794de284883cb/_general.scssc +0 -0
  683. data/test/dummy/tmp/cache/sass/f4493159a7eb74436af172b9596794de284883cb/_sprites.scssc +0 -0
  684. data/test/dummy/tmp/cache/sass/f4493159a7eb74436af172b9596794de284883cb/_tables.scssc +0 -0
  685. data/test/dummy/tmp/cache/sass/fb4477070d0ea7ddb095f8cccd6bdda3ec28d144/_contrast.scssc +0 -0
  686. data/test/dummy/tmp/cache/sass/fe495f1ae09a53b0219290f25845a87fc0766d07/_hover-link.scssc +0 -0
  687. data/test/dummy/tmp/cache/sass/fe495f1ae09a53b0219290f25845a87fc0766d07/_link-colors.scssc +0 -0
  688. data/test/dummy/tmp/cache/sass/fe495f1ae09a53b0219290f25845a87fc0766d07/_unstyled-link.scssc +0 -0
  689. data/test/dummy/tmp/capybara/capybara-201212141646427583472235.html +0 -70
  690. data/test/dummy/tmp/capybara/capybara-201212141648005585599735.html +0 -70
  691. data/test/dummy/tmp/rspec_guard_result +0 -3
  692. data/test/fixtures/goldencobra/article_images.yml +0 -9
  693. data/test/fixtures/goldencobra/article_widgets.yml +0 -9
  694. data/test/fixtures/goldencobra/comments.yml +0 -19
  695. data/test/fixtures/goldencobra/helps.yml +0 -11
  696. data/test/fixtures/goldencobra/imports.yml +0 -13
  697. data/test/fixtures/goldencobra/locations.yml +0 -19
  698. data/test/fixtures/goldencobra/metatags.yml +0 -11
  699. data/test/fixtures/goldencobra/permissions.yml +0 -13
  700. data/test/fixtures/goldencobra/settings.yml +0 -11
  701. data/test/fixtures/goldencobra/uploads.yml +0 -9
  702. data/test/fixtures/goldencobra/vita.yml +0 -13
  703. data/test/fixtures/goldencobra/widgets.yml +0 -13
  704. data/test/goldencobra_test.rb +0 -7
  705. data/test/performance/browsing_test.rb +0 -12
  706. data/test/test_helper.rb +0 -10
  707. data/test/unit/goldencobra/article_image_test.rb +0 -21
  708. data/test/unit/goldencobra/article_widget_test.rb +0 -20
  709. data/test/unit/goldencobra/comment_test.rb +0 -26
  710. data/test/unit/goldencobra/help_test.rb +0 -21
  711. data/test/unit/goldencobra/import_test.rb +0 -24
  712. data/test/unit/goldencobra/location_test.rb +0 -26
  713. data/test/unit/goldencobra/metatag_test.rb +0 -21
  714. data/test/unit/goldencobra/permission_test.rb +0 -23
  715. data/test/unit/goldencobra/setting_test.rb +0 -22
  716. data/test/unit/goldencobra/upload_test.rb +0 -28
  717. data/test/unit/goldencobra/vita_test.rb +0 -23
  718. data/test/unit/goldencobra/widget_test.rb +0 -34
@@ -0,0 +1,39 @@
1
+ module Goldencobra
2
+ class ManageController < Goldencobra::ApplicationController
3
+
4
+ def render_admin_menue
5
+ user_mod = Goldencobra::Setting.for_key("goldencobra.article.edit_link.user")
6
+ role_mod = Goldencobra::Setting.for_key("goldencobra.article.edit_link.role")
7
+ if user_mod.present? && role_mod.present? && eval("#{user_mod} && #{user_mod}.present? && #{user_mod}.has_role?('#{role_mod}')")
8
+ article = Goldencobra::Article.find_by_id(params[:id])
9
+ @operator = current_user || current_visitor
10
+ a = Ability.new(@operator)
11
+ if a.can?(:manage, article)
12
+ @article = article
13
+ end
14
+ end
15
+ end
16
+
17
+
18
+ def article_visibility
19
+ @article_saved = false
20
+ @operator = current_user || current_visitor
21
+ if current_user
22
+ article = Goldencobra::Article.find(params[:id])
23
+ ability = Ability.new(current_user)
24
+ if ability.can?(:update, article)
25
+ article.active = !article.active
26
+ article.save
27
+ @article = article
28
+ @article_saved = true
29
+ end
30
+ end
31
+ end
32
+
33
+ def call_for_support
34
+ Goldencobra::ConfirmationMailer.send_support_mail(params[:link]).deliver
35
+ render :text => "200"
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,48 @@
1
+ module Goldencobra
2
+ class SessionsController < Goldencobra::ApplicationController
3
+ layout "application"
4
+
5
+ def login
6
+ @errors = []
7
+ if params[:usermodel] && params[:usermodel].constantize && params[:usermodel].constantize.present? && params[:usermodel].constantize.attribute_method?(:email)
8
+ @usermodel = params[:usermodel].constantize.find_by_email(params[:loginmodel][:email])
9
+ unless @usermodel && params[:usermodel].constantize.attribute_method?(:username)
10
+ @usermodel = params[:usermodel].constantize.find_by_username(params[:loginmodel][:email])
11
+ end
12
+ end
13
+
14
+ if @usermodel.present?
15
+ if ::BCrypt::Password.new(@usermodel.encrypted_password) == "#{params[:loginmodel][:password]}#{Devise.pepper}"
16
+ sign_in @usermodel
17
+ @usermodel.failed_attempts = 0
18
+ @usermodel.sign_in_count = @usermodel.sign_in_count.to_i + 1
19
+ @usermodel.last_sign_in_at = Time.now
20
+ @usermodel.save
21
+ @redirect_to = @usermodel.roles.try(:first).try(:redirect_after_login)
22
+ else
23
+ @usermodel.failed_attempts = @usermodel.failed_attempts.to_i + 1
24
+ @usermodel.save
25
+ @errors << "Wrong username or password"
26
+ end
27
+ else
28
+ @errors << "No User found with this email"
29
+ end
30
+ end
31
+
32
+
33
+ def logout
34
+ if params[:usermodel] && params[:usermodel].constantize && params[:usermodel].constantize.present? && params[:usermodel].constantize.attribute_method?(:email)
35
+ sign_out
36
+ reset_session
37
+ end
38
+ render :js => "window.location.href = '/';"
39
+ end
40
+
41
+
42
+ def register
43
+
44
+ end
45
+
46
+
47
+ end
48
+ end
@@ -1,6 +1,8 @@
1
1
  module Goldencobra
2
2
  module ApplicationHelper
3
3
  include Goldencobra::ArticlesHelper
4
+ include Goldencobra::NavigationHelper
5
+ include Goldencobra::LoginHelper
4
6
 
5
7
  def s(name)
6
8
  if name.present?
@@ -18,11 +20,7 @@ module Goldencobra
18
20
  end
19
21
 
20
22
  def edit_article_link
21
- user_mod = Goldencobra::Setting.for_key("goldencobra.article.edit_link.user")
22
- role_mod = Goldencobra::Setting.for_key("goldencobra.article.edit_link.role")
23
- if user_mod.present? && role_mod.present? && eval("#{user_mod} && #{user_mod}.present? && #{user_mod}.has_role?('#{role_mod}')")
24
- render :partial => "goldencobra/articles/edit_article_link"
25
- end
23
+ render :partial => "goldencobra/articles/edit_article_link"
26
24
  end
27
25
 
28
26
  def basic_goldencobra_headers(options={})
@@ -5,17 +5,20 @@ module Goldencobra
5
5
  # If external_url_redirect is set and a link_title is given,
6
6
  # display this link title. Otherwise display a generic link title.
7
7
  def read_on(article)
8
+ target_window = article.redirection_target_in_new_window ? "_blank" : "_top"
8
9
  if article.redirect_link_title.present?
9
- link_to article.redirect_link_title, article.external_url_redirect, class: 'more'
10
+ link_to article.redirect_link_title, article.external_url_redirect, :class => 'more', :target => target_window
10
11
  else
11
- link_to t(:read_on, scope: [:articles]), article.public_url, class: 'more'
12
+ link_to t(:read_on, scope: [:articles]), article.public_url, :class => 'more', :target => target_window
12
13
  end
13
14
  end
14
15
 
16
+ #Ausgabe aller Hauptbestandteile eines Artikels über "content_for :xy"
15
17
  def render_article_content_parts(article)
16
18
  render :partial => "/goldencobra/articles/show", :locals => {:article => article}
17
19
  end
18
20
 
21
+
19
22
  def render_article_image_gallery
20
23
  if @article
21
24
  result = ""
@@ -29,51 +32,6 @@ module Goldencobra
29
32
  end
30
33
  end
31
34
 
32
- def navigation_menu(menue_id, options={})
33
- return "id can't be blank" if menue_id.blank?
34
- #0 = unlimited, 1 = self, 2 = self and children 1. grades, 3 = self and up to children 2.grades
35
- depth = options[:depth] || 0
36
- class_name = options[:class] || ""
37
- id_name = options[:id] || ""
38
- if menue_id.class == String
39
- master_menue = Goldencobra::Menue.active.find_by_title(menue_id)
40
- else
41
- master_menue = Goldencobra::Menue.active.find_by_id(menue_id)
42
- end
43
-
44
- if master_menue.present?
45
- content = ""
46
- master_menue.children.active.includes(:image).collect do |child|
47
- content << navigation_menu_helper(child, depth, 1, options)
48
- end
49
- if id_name.present?
50
- result = content_tag(:ul, raw(content),:id => "#{id_name}", :class => "#{class_name} #{depth} navigation #{master_menue.css_class.to_s.gsub(/\W/,' ')}".squeeze(' ').strip)
51
- else
52
- result = content_tag(:ul, raw(content), :class => "#{class_name} #{depth} navigation #{master_menue.css_class.to_s.gsub(/\W/,' ')}".squeeze(' ').strip)
53
- end
54
- end
55
- return raw(result)
56
- end
57
-
58
-
59
- def breadcrumb(options={})
60
- id_name = options[:id] || "breadcrumb"
61
- class_name = options[:class] || ""
62
- if @article
63
- list = ""
64
- @article.path.each do |art|
65
- link_name = link_to(art.breadcrumb_name, art.public_url)
66
- list << content_tag(:li, raw(link_name))
67
- end
68
- content_list = content_tag(:ol, raw(list))
69
- if id_name.present?
70
- result = content_tag(:nav, raw(content_list), :id => "#{id_name}", :class => "#{class_name}")
71
- else
72
- result = content_tag(:nav, raw(content_list), :class => "#{class_name}")
73
- end
74
- return raw(result)
75
- end
76
- end
77
35
 
78
36
  def index_of_articles(options={})
79
37
  if @article && @article.article_for_index_id.present? && master_index_article = Goldencobra::Article.find_by_id(@article.article_for_index_id)
@@ -100,11 +58,19 @@ module Goldencobra
100
58
  end
101
59
 
102
60
  def render_article_widgets(options={})
61
+ @timecontrol = Goldencobra::Setting.for_key("goldencobra.widgets.time_control") == "true"
103
62
  custom_css = options[:class] || ""
104
63
  tags = options[:tagged_with] || ""
105
64
  default = options[:default] || "false"
106
65
  widget_wrapper = options[:wrapper] || "section"
107
66
  result = ""
67
+ if params[:frontend_tags] && params[:frontend_tags].class != String && params[:frontend_tags][:format] && params[:frontend_tags][:format] == "email"
68
+ #Wenn format email, dann gibt es keinen realen webseit besucher
69
+ ability = Ability.new()
70
+ else
71
+ operator = current_user || current_visitor
72
+ ability = Ability.new(operator)
73
+ end
108
74
  if @article
109
75
  widgets = @article.widgets.active
110
76
  if tags.present? && default == "false"
@@ -117,20 +83,24 @@ module Goldencobra
117
83
  widgets = widgets.order(:sorter)
118
84
 
119
85
  widgets.each do |widget|
120
- template = Liquid::Template.parse(widget.content)
121
- alt_template = Liquid::Template.parse(widget.alternative_content)
122
- html_data_options = {"class" => "#{widget.css_name} #{custom_css} goldencobra_widget",
123
- "id" => widget.id_name.present? ? widget.id_name : "widget_id_#{widget.id}",
124
- 'data-date-start' => widget.offline_date_start_display,
125
- 'data-date-end' => widget.offline_date_end_display,
126
- 'data-offline-active' => widget.offline_time_active,
127
- 'data-id' => widget.id
128
- }
129
- html_data_options = html_data_options.merge(widget.offline_time_week)
130
- result << content_tag(widget_wrapper, raw(template.render(Goldencobra::Article::LiquidParser)), html_data_options)
131
- result << content_tag(widget_wrapper, raw(alt_template.render(Goldencobra::Article::LiquidParser)),
132
- class: "#{widget.css_name} #{custom_css} hidden goldencobra_widget",
133
- id: widget.id_name, 'data-id' => widget.id)
86
+ #check if current user has permissions to see this widget
87
+ if ability.can?(:read, widget)
88
+ template = Liquid::Template.parse(widget.content)
89
+ alt_template = Liquid::Template.parse(widget.alternative_content)
90
+ html_data_options = {"class" => "#{widget.css_name} #{custom_css} goldencobra_widget",
91
+ "id" => widget.id_name.present? ? widget.id_name : "widget_id_#{widget.id}",
92
+ 'data-date-start' => widget.offline_date_start_display,
93
+ 'data-date-end' => widget.offline_date_end_display,
94
+ 'data-offline-active' => widget.offline_time_active,
95
+ 'data-id' => widget.id
96
+ }
97
+ html_data_options = html_data_options.merge(widget.offline_time_week)
98
+ result << content_tag(widget_wrapper, raw(template.render(Goldencobra::Article::LiquidParser)), html_data_options)
99
+ if @timecontrol
100
+ result << content_tag(widget_wrapper, raw(alt_template.render(Goldencobra::Article::LiquidParser)),
101
+ class: "#{widget.css_name} #{custom_css} hidden goldencobra_widget", 'data-id' => widget.id)
102
+ end
103
+ end
134
104
  end
135
105
  end
136
106
  return raw(result)
@@ -150,26 +120,5 @@ module Goldencobra
150
120
  return raw(result)
151
121
  end
152
122
 
153
- def navigation_menu_helper(child, depth, current_depth, options)
154
- child_link = content_tag(:a, child.title, :href => child.target.gsub("\"",''))
155
- image_link = child.image.present? ? image_tag(child.image.image(:original)) : ""
156
- child_link = child_link + content_tag(:a, image_link, :href => child.target.gsub("\"",''), :class => "navigtion_link_imgage_wrapper") unless options[:show_image] == false
157
- child_link = child_link + content_tag(:a, child.description_title, :href => child.target.gsub("\"",''), :class => "navigtion_link_description_title") unless options[:show_description_title] == false
158
- template = Liquid::Template.parse(child.description)
159
- child_link = child_link + content_tag("div", raw(template.render(Goldencobra::Article::LiquidParser)), :class => "navigtion_link_description") unless options[:show_description] == false
160
- child_link = child_link + content_tag(:a, child.call_to_action_name, :href => child.target.gsub("\"",''), :class => "navigtion_link_call_to_action_name") unless options[:show_call_to_action_name] == false
161
- current_depth = current_depth + 1
162
- if child.children && (depth == 0 || current_depth <= depth)
163
- content_level = ""
164
- child.children.active.each do |subchild|
165
- content_level << navigation_menu_helper(subchild, depth, current_depth, options)
166
- end
167
- if content_level.present?
168
- child_link = child_link + content_tag(:ul, raw(content_level), :class => "level_#{current_depth} children_#{child.children.active.visible.count}" )
169
- end
170
- end
171
- return content_tag(:li, raw(child_link),"data-id" => child.id , :class => "#{child.has_active_child?(request) ? 'has_active_child' : ''} #{child.is_active?(request) ? 'active' : ''} #{child.css_class.gsub(/\W/,' ')}".squeeze(' ').strip)
172
- end
173
-
174
123
  end
175
124
  end
@@ -0,0 +1,13 @@
1
+ module Goldencobra
2
+ module LoginHelper
3
+
4
+ def render_login_widget(usermodel_name)
5
+ render :partial => "/goldencobra/sessions/login", :locals => {:usermodel => usermodel_name}
6
+ end
7
+
8
+ def render_registration_widget(usermodel_name, associated_model=nil)
9
+ render :partial => "/goldencobra/sessions/register", :locals => {:usermodel => usermodel_name, :associated_model => associated_model}
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,134 @@
1
+ module Goldencobra
2
+ module NavigationHelper
3
+
4
+ def breadcrumb(options={})
5
+ id_name = options[:id] || "breadcrumb"
6
+ class_name = options[:class] || ""
7
+ if @article
8
+ list = ""
9
+ @article.path.each do |art|
10
+ link_name = link_to(art.breadcrumb_name, art.public_url)
11
+ list << content_tag(:li, raw(link_name))
12
+ end
13
+ content_list = content_tag(:ol, raw(list))
14
+ if id_name.present?
15
+ result = content_tag(:nav, raw(content_list), :id => "#{id_name}", :class => "#{class_name}")
16
+ else
17
+ result = content_tag(:nav, raw(content_list), :class => "#{class_name}")
18
+ end
19
+ return raw(result)
20
+ end
21
+ end
22
+
23
+ #
24
+ # navigation_menu("Hauptmenue", :depth => 1, :class => "top", :id => "menue1", :offset => 1 )
25
+ # depth: 0 = unlimited, 1 = self, 2 = self and children 1. grades, 3 = self and up to children 2.grades
26
+ # offset: number of levels to skip, 0 = none
27
+
28
+ #<%= navigation_menu("Top-Menu", :current_article => @article, :class => "ul_main_nav", :depth => 1, :offset => 1 %>
29
+
30
+ #TODO: offset implementieren
31
+ def navigation_menu(menue_id, options={})
32
+ return "id can't be blank" if menue_id.blank?
33
+ depth = options[:depth] || 9999
34
+ offset = options[:offset] || 0
35
+ class_name = options[:class] || ""
36
+ id_name = options[:id] || ""
37
+ submenue_of_article = options[:submenue_of_article] || ""
38
+ current_article = options[:current_article] || ""
39
+
40
+ if menue_id.class == String
41
+ if current_article.present? && current_article.public_url.present?
42
+ current_menue = Goldencobra::Menue.active.where(:target => current_article.public_url(false)).select{|a| a.path.map(&:title).join("/").include?(menue_id)}.first
43
+ if current_menue
44
+ master_menue = Goldencobra::Menue.find_by_id(current_menue.path_ids[offset])
45
+ else
46
+ return ""
47
+ end
48
+ elsif submenue_of_article.present? && submenue_of_article.public_url.present?
49
+ master_menue = Goldencobra::Menue.active.where(:target => submenue_of_article.public_url).select{|a| a.path.map(&:title).join("/").include?(menue_id)}.first
50
+ else
51
+ master_menue = Goldencobra::Menue.active.find_by_pathname(menue_id)
52
+ end
53
+ else
54
+ master_menue = Goldencobra::Menue.active.find_by_id(menue_id)
55
+ end
56
+
57
+ return "" if master_menue.blank?
58
+
59
+ current_depth = master_menue.ancestry_depth
60
+ #Check for Permission
61
+ if params[:frontend_tags] && params[:frontend_tags].class != String && params[:frontend_tags][:format] && params[:frontend_tags][:format] == "email"
62
+ #Wenn format email, dann gibt es keinen realen webseit besucher
63
+ ability = Ability.new()
64
+ else
65
+ operator = current_user || current_visitor
66
+ ability = Ability.new(operator)
67
+ end
68
+ if !ability.can?(:read, master_menue)
69
+ return ""
70
+ end
71
+ if master_menue.present?
72
+ content = ""
73
+ subtree_menues = master_menue.subtree.after_depth(current_depth + offset).to_depth(current_depth + depth).active.includes(:permissions).includes(:image)
74
+ subtree_menues = subtree_menues.to_a.delete_if{|a| !ability.can?(:read, a)}
75
+
76
+ current_depth = 1
77
+ menue_roots(subtree_menues).each do |root|
78
+ content << navigation_menu_helper(root, options, subtree_menues, current_depth)
79
+ end
80
+
81
+ if id_name.present?
82
+ result = content_tag(:ul, raw(content),:id => "#{id_name}", :class => "#{class_name} #{depth} navigation #{master_menue.css_class.to_s.gsub(/\W/,' ')}".squeeze(' ').strip)
83
+ else
84
+ result = content_tag(:ul, raw(content), :class => "#{class_name} #{depth} navigation #{master_menue.css_class.to_s.gsub(/\W/,' ')}".squeeze(' ').strip)
85
+ end
86
+ end
87
+ return raw(result)
88
+ end
89
+
90
+ private
91
+
92
+ def menue_roots(menue_array)
93
+ min_of_layers = menue_array.map{|a| a.ancestry.split("/").count }.min
94
+ return menue_array.select{|a| a.ancestry.to_s.split("/").count == min_of_layers }
95
+ end
96
+
97
+ def menue_children(menue_element, menue_array)
98
+ return menue_array.select{|a| a.ancestry.to_s.split("/").last.to_i == menue_element.id }
99
+ end
100
+
101
+ def navigation_menu_helper(child, options, subtree_menues, current_depth)
102
+ if @current_client && @current_client.url_prefix.present?
103
+ child_target_link = @current_client.url_prefix + child.target.gsub("\"",'')
104
+ else
105
+ child_target_link = child.target.gsub("\"",'')
106
+ end
107
+ child_link = content_tag(:a, child.title, :href => child_target_link)
108
+ image_link = child.image.present? ? image_tag(child.image.image(:original)) : ""
109
+ child_link = child_link + content_tag(:a, image_link, :href => child_target_link, :class => "navigtion_link_imgage_wrapper") unless options[:show_image] == false
110
+ child_link = child_link + content_tag(:a, child.description_title, :href => child_target_link, :class => "navigtion_link_description_title") unless options[:show_description_title] == false
111
+ template = Liquid::Template.parse(child.description)
112
+ child_link = child_link + content_tag("div", raw(template.render(Goldencobra::Article::LiquidParser)), :class => "navigtion_link_description") unless options[:show_description] == false
113
+ child_link = child_link + content_tag(:a, child.call_to_action_name, :href => child_target_link, :class => "navigtion_link_call_to_action_name") unless options[:show_call_to_action_name] == false
114
+
115
+ current_depth += 1
116
+ child_elements = menue_children(child, subtree_menues)
117
+ visible_child_element_count = 0
118
+ if child_elements.count > 0
119
+ content_level = ""
120
+ child_elements.each do |subchild|
121
+ if subchild.css_class != "hidden" && subchild.css_class != "not_visible"
122
+ visible_child_element_count += 1
123
+ end
124
+ content_level << navigation_menu_helper(subchild, options, subtree_menues, current_depth)
125
+ end
126
+ if content_level.present?
127
+ child_link = child_link + content_tag(:ul, raw(content_level), :class => "level_#{current_depth} children_#{visible_child_element_count}" )
128
+ end
129
+ end
130
+ return content_tag(:li, raw(child_link),"data-id" => child.id , :class => "#{ visible_child_element_count > 0 ? 'has_children' : ''} #{child.has_active_child?(request, subtree_menues) ? 'has_active_child' : ''} #{child.is_active?(request) ? 'active' : ''} #{child.css_class.gsub(/\W/,' ')}".squeeze(' ').strip)
131
+ end
132
+
133
+ end
134
+ end
@@ -11,6 +11,12 @@ module Goldencobra
11
11
  do_not_deliver!
12
12
  end
13
13
  end
14
+
15
+ def send_support_mail(link)
16
+ @link = link
17
+ mail to: Goldencobra::Setting.for_key("goldencobra.live-support.email"), :subject => "Live Support Anfrage von: #{Goldencobra::Setting.for_key("goldencobra.url")}"
18
+ end
19
+
14
20
  end
15
21
 
16
22
  # http://stackoverflow.com/questions/6550809/rails-3-how-to-abort-delivery-method-in-actionmailer
@@ -3,9 +3,11 @@ class Ability
3
3
 
4
4
  def initialize(operator=nil)
5
5
  can :read, Goldencobra::Article
6
+ can :read, Goldencobra::Menue
7
+ can :read, Goldencobra::Widget
6
8
 
7
9
  #Rechte die alle betreffen
8
- Goldencobra::Permission.where("role_id IS NULL OR role_id = ''").each do |permission|
10
+ Goldencobra::Permission.where("action IS NOT NULL").where("role_id IS NULL OR role_id = ''").each do |permission|
9
11
  if permission.subject_id.blank?
10
12
  if permission.action.include?("not_")
11
13
  cannot permission.action.gsub("not_", "").to_sym, permission.subject_class.constantize
@@ -1,5 +1,4 @@
1
1
  #encoding: utf-8
2
-
3
2
  # == Schema Information
4
3
  #
5
4
  # Table name: goldencobra_articles
@@ -34,7 +33,7 @@
34
33
  # index_of_articles_tagged_with :string(255)
35
34
  # sort_order :string(255)
36
35
  # reverse_sort :boolean
37
- # author :string(255)
36
+ # author_backup :string(255)
38
37
  # sorter_limit :integer
39
38
  # not_tagged_with :string(255)
40
39
  # use_frontend_tags :boolean default(FALSE)
@@ -43,11 +42,14 @@
43
42
  # commentable :boolean default(FALSE)
44
43
  # active_since :datetime default(2012-09-30 12:53:13 UTC)
45
44
  # redirect_link_title :string(255)
45
+ # display_index_types :string(255) default("show")
46
+ # author_id :integer
46
47
  #
47
48
 
48
49
 
49
50
  #For article rendering to string (:render_html) needed
50
51
  include Goldencobra::ApplicationHelper
52
+ require "open-uri"
51
53
 
52
54
  module Goldencobra
53
55
  class Article < ActiveRecord::Base
@@ -56,7 +58,11 @@ module Goldencobra
56
58
  LiquidParser = {}
57
59
  SortOptions = ["Created_at", "Updated_at", "Random", "Alphabetically"]
58
60
  DynamicRedirectOptions = [[:false,"deaktiviert"],[:latest,"neuester Untereintrag"], [:oldest, "ältester Untereintrag"]]
59
- attr_accessor :hint_label
61
+ DisplayIndexTypes = [["Einzelseiten", "show"],["Übersichtsseiten", "index"], ["Alle Seiten", "all"]]
62
+ attr_accessor :hint_label, :manual_article_sort
63
+ ImportDataFunctions = []
64
+
65
+ serialize :link_checker, Hash
60
66
 
61
67
  has_many :metatags
62
68
  has_many :images, :through => :article_images, :class_name => Goldencobra::Upload
@@ -67,27 +73,34 @@ module Goldencobra
67
73
  has_many :comments, :class_name => Goldencobra::Comment
68
74
  has_many :permissions, :class_name => Goldencobra::Permission, :foreign_key => "subject_id", :conditions => {:subject_class => "Goldencobra::Article"}
69
75
 
76
+ belongs_to :author
77
+
70
78
  accepts_nested_attributes_for :metatags, :allow_destroy => true, :reject_if => proc { |attributes| attributes['value'].blank? }
71
79
  accepts_nested_attributes_for :article_images, :allow_destroy => true
72
80
  accepts_nested_attributes_for :permissions, :allow_destroy => true
81
+ accepts_nested_attributes_for :author, :allow_destroy => true
73
82
 
74
83
  acts_as_taggable_on :tags, :frontend_tags #https://github.com/mbleigh/acts-as-taggable-on
75
84
  has_ancestry :orphan_strategy => :restrict
76
85
  friendly_id :for_friendly_name, use: [:slugged] #, :history
77
86
  web_url :external_url_redirect
78
87
  has_paper_trail
79
- liquid_methods :title, :created_at, :updated_at, :subtitle, :context_info
88
+ liquid_methods :title, :created_at, :updated_at, :subtitle, :context_info, :id
80
89
 
81
90
  validates_presence_of :title, :article_type
82
91
  validates_format_of :url_name, :with => /\A[\w\d-]+\Z/, allow_blank: true
92
+ validates_presence_of :breadcrumb, :on => :create
93
+ validates_length_of :breadcrumb, :within => 1..70, :on => :create
83
94
 
84
95
  after_create :set_active_since
96
+ after_create :notification_event_create
85
97
  before_save :parse_image_gallery_tags
98
+ before_save :set_url_name_if_blank
99
+ before_save :set_standard_application_template
100
+ after_save :set_default_meta_opengraph_values
86
101
  after_save :verify_existence_of_opengraph_image
87
- after_save :set_default_opengraph_values
88
- after_create :notification_event_create
89
102
  after_update :notification_event_update
90
- before_save :set_url_name_if_blank
103
+ before_destroy :update_parent_article_etag
91
104
 
92
105
  attr_protected :startpage
93
106
 
@@ -104,7 +117,10 @@ module Goldencobra
104
117
  scope :for_sitemap, where('dynamic_redirection = "false" AND ( external_url_redirect IS NULL OR external_url_redirect = "") AND active = 1 AND robots_no_index = 0')
105
118
  scope :frontend_tag_name_contains, lambda{|tag_name| tagged_with(tag_name.split(","), :on => :frontend_tags)}
106
119
  scope :tag_name_contains, lambda{|tag_name| tagged_with(tag_name.split(","), :on => :tags)}
107
-
120
+ if ActiveRecord::Base.connection.table_exists?("goldencobra_metatags")
121
+ scope :no_title_tag, where("goldencobra_articles.id NOT IN (?)", Goldencobra::Metatag.where(:name => "Title Tag").where("value IS NOT NULL AND value <> ''").pluck(:article_id).uniq)
122
+ scope :no_meta_description, where("goldencobra_articles.id NOT IN (?)", Goldencobra::Metatag.where(:name => "Meta Description").where("value IS NOT NULL AND value <> ''").pluck(:article_id).uniq)
123
+ end
108
124
 
109
125
  search_methods :frontend_tag_name_contains
110
126
  search_methods :tag_name_contains
@@ -127,8 +143,23 @@ module Goldencobra
127
143
  end
128
144
  end
129
145
 
146
+
147
+ # **************************
148
+ # **************************
130
149
  # Instance Methods
131
150
  # **************************
151
+ # **************************
152
+
153
+ #scope for index articles, display show articles, index articless or both articles of an current type
154
+ def self.articletype_for_index(current_article)
155
+ if current_article.display_index_types == "show"
156
+ articletype("#{current_article.article_type_form_file} Show")
157
+ elsif current_article.display_index_types == "index"
158
+ articletype("#{current_article.article_type_form_file} Index")
159
+ else
160
+ where("article_type = '#{current_article.article_type_form_file} Show' OR article_type = '#{current_article.article_type_form_file} Index'")
161
+ end
162
+ end
132
163
 
133
164
  def render_html(layoutfile="application", localparams={})
134
165
  av = ActionView::Base.new(ActionController::Base.view_paths + ["#{::Goldencobra::Engine.root}/app/views/goldencobra/articles/"])
@@ -142,6 +173,59 @@ module Goldencobra
142
173
  return html_to_render
143
174
  end
144
175
 
176
+
177
+ #get all links of a page and make a check for response status and time
178
+ def set_link_checker
179
+ links_to_check = []
180
+ status_for_links = {}
181
+ doc = Nokogiri::HTML(open(self.absolute_public_url))
182
+ #find all links and stylesheets
183
+ doc.css('a,link').each do |link|
184
+ if add_link_to_checklist(link, "href").present?
185
+ links_to_check << {"link" => add_link_to_checklist(link, "href"), "pos" => link.path}
186
+ end
187
+ end
188
+ #find all images and javascripts
189
+ doc.css('img,script').each do |link|
190
+ if add_link_to_checklist(link,"src").present?
191
+ links_to_check << {"link" => add_link_to_checklist(link,"src"), "pos" => link.path}
192
+ end
193
+ end
194
+ links_to_check = links_to_check.compact.delete_if{|a| a.blank?}
195
+ links_to_check.each_with_index do |linkpos|
196
+ status_for_links[linkpos["link"]] = {"position" => linkpos["pos"]}
197
+ begin
198
+ start = Time.now
199
+ response = open(linkpos["link"])
200
+ status_for_links[linkpos["link"]]["response_code"] = response.status[0]
201
+ status_for_links[linkpos["link"]]["response_time"] = Time.now - start
202
+ rescue Exception => e
203
+ status_for_links[linkpos["link"]]["response_code"] = "404"
204
+ status_for_links[linkpos["link"]]["response_error"] = e.to_s
205
+ end
206
+ end
207
+ self.link_checker = status_for_links
208
+ end
209
+
210
+ #helper method for finding links in html document
211
+ def add_link_to_checklist(link, src_type)
212
+ begin
213
+ if link.blank? || link[src_type].blank?
214
+ return nil
215
+ elsif link[src_type][0 .. 6] == "http://" || link[src_type][0 .. 6] == "https:/"
216
+ return "#{link[src_type]}"
217
+ elsif link[src_type] && link[src_type][0 .. 1] == "//"
218
+ return "http:/#{link[src_type][/.(.*)/m,1]}"
219
+ elsif link[src_type] && link[src_type][0] == "/"
220
+ return "#{Goldencobra::Setting.absolute_base_url}/#{link[src_type][/.(.*)/m,1]}"
221
+ elsif link[src_type] && !link[src_type].include?("mailto:")
222
+ return "#{self.absolute_public_url}/#{link[src_type]}"
223
+ end
224
+ rescue
225
+ return nil
226
+ end
227
+ end
228
+
145
229
  def comments_of_subarticles
146
230
  Goldencobra::Comment.where("article_id in (?)", self.subtree_ids)
147
231
  end
@@ -154,12 +238,24 @@ module Goldencobra
154
238
  end
155
239
  end
156
240
 
241
+
242
+ #Das ist der Titel, der verwendet wird, wenn daraus ein Menüpunkt erstellt werden soll.
243
+ #der menue.title hat folgende vorgaben: validates_format_of :title, :with => /^[\w\d\?\.\'\!\s&üÜöÖäÄß\-\:\,\"]+$/
244
+ def parsed_title
245
+ self.title.to_s.gsub("/", " ")
246
+ end
247
+
248
+
249
+ #@article.image_standard @article.image_logo @article.image_logo_medium
157
250
  def self.init_image_methods
158
251
  if ActiveRecord::Base.connection.table_exists?("goldencobra_settings")
159
- Goldencobra::Setting.for_key("goldencobra.article.image_positions").split(",").each do |image_type|
252
+ Goldencobra::Setting.for_key("goldencobra.article.image_positions").split(",").map(&:strip).each do |image_type|
160
253
  define_method "image_#{image_type.underscore}" do
161
254
  self.image(image_type,"original")
162
255
  end
256
+ define_method "image_alt_#{image_type.underscore}" do
257
+ self.article_images.where(position: image_type).first.image.alt_text || self.article_images.where(position: image_type).first.image.image_file_name
258
+ end
163
259
  Goldencobra::Upload.attachment_definitions[:image][:styles].keys.each do |style_name|
164
260
  define_method "image_#{image_type.underscore}_#{style_name.to_s}" do
165
261
  self.image(image_type,style_name)
@@ -171,7 +267,6 @@ module Goldencobra
171
267
 
172
268
  Goldencobra::Article.init_image_methods
173
269
 
174
-
175
270
  def image(position="standard", size="original")
176
271
  any_images = self.article_images.where(position: position)
177
272
  if any_images.any? && any_images.first.image && any_images.first.image.image
@@ -211,6 +306,85 @@ module Goldencobra
211
306
  end
212
307
  end
213
308
 
309
+ def index_articles(current_operator=nil, user_frontend_tags=nil)
310
+ if self.article_for_index_id.blank?
311
+ #Index aller Artikel anzeigen
312
+ @list_of_articles = Goldencobra::Article.active.articletype_for_index(self)
313
+ else
314
+ #Index aller Artikel anzeigen, die Kinder sind von einem Bestimmten artikel
315
+ parent_article = Goldencobra::Article.find_by_id(self.article_for_index_id)
316
+ if parent_article
317
+ @list_of_articles = parent_article.descendants.active.articletype_for_index(self)
318
+ else
319
+ @list_of_articles = Goldencobra::Article.active.articletype_for_index(self)
320
+ end
321
+ end
322
+ #include related models
323
+ @list_of_articles = @list_of_articles.includes("#{self.article_type_form_file.downcase}") if self.respond_to?(self.article_type_form_file.downcase)
324
+ #get articles with tag
325
+ if self.index_of_articles_tagged_with.present?
326
+ @list_of_articles = @list_of_articles.tagged_with(self.index_of_articles_tagged_with.split(",").map{|t| t.strip}, on: :tags, any: true)
327
+ end
328
+ #get articles without tag
329
+ if self.not_tagged_with.present?
330
+ @list_of_articles = @list_of_articles.tagged_with(self.not_tagged_with.split(",").map{|t| t.strip}, :exclude => true, on: :tags)
331
+ end
332
+ #get_articles_by_frontend_tags
333
+ if user_frontend_tags.present?
334
+ @list_of_articles = @list_of_articles.tagged_with(user_frontend_tags, on: :frontend_tags, any: true)
335
+ end
336
+ #filter with permissions
337
+ @list_of_articles = filter_with_permissions(@list_of_articles,current_operator)
338
+
339
+ #sort list of articles
340
+ if self.sort_order.present?
341
+ if self.sort_order == "Random"
342
+ @list_of_articles = @list_of_articles.flatten.shuffle
343
+ elsif self.sort_order == "Alphabetical"
344
+ @list_of_articles = @list_of_articles.flatten.sort_by{|article| article.title }
345
+ elsif self.sort_order == "Created_at"
346
+ @list_of_articles = @list_of_articles.flatten.sort_by{|article| article.created_at.to_i }
347
+ elsif self.respond_to?(self.sort_order)
348
+ sort_order = self.sort_order.downcase
349
+ @list_of_articles = @list_of_articles.flatten.sort_by{|article| article.respond_to?(sort_order) ? article.send(sort_order) : article }
350
+ elsif self.sort_order.include?(".")
351
+ sort_order = self.sort_order.downcase.split(".")
352
+ @unsortable = @list_of_articles.flatten.select{|a| !a.respond_to_all?(self.sort_order) }
353
+ @list_of_articles = @list_of_articles.flatten.delete_if{|a| !a.respond_to_all?(self.sort_order) }
354
+ @list_of_articles = @list_of_articles.sort_by{|a| eval("a.#{self.sort_order}") }
355
+ if @unsortable.count > 0
356
+ @list_of_articles = @unsortable + @list_of_articles
357
+ @list_of_articles = @list_of_articles.flatten
358
+ end
359
+ end
360
+ if self.reverse_sort
361
+ @list_of_articles = @list_of_articles.reverse
362
+ end
363
+ end
364
+ if self.sorter_limit && self.sorter_limit > 0
365
+ @list_of_articles = @list_of_articles[0..self.sorter_limit-1]
366
+ end
367
+
368
+ return @list_of_articles
369
+ end
370
+
371
+
372
+ # Methode filtert die @list_of_articles.
373
+ # Rückgabewert: Ein Array all der Artikel, die der operator lesen darf.
374
+ def filter_with_permissions(list, current_operator)
375
+ if current_operator && current_operator.respond_to?(:has_role?) && current_operator.has_role?(Goldencobra::Setting.for_key("goldencobra.article.preview.roles").split(",").map{|a| a.strip})
376
+ return list
377
+ else
378
+ a = Ability.new(current_operator)
379
+ new_list = []
380
+ list.each do |article|
381
+ if a.can?(:read, article)
382
+ new_list << article.id
383
+ end
384
+ end
385
+ end
386
+ return list.where('goldencobra_articles.id in (?)', new_list)
387
+ end
214
388
 
215
389
  #Gibt ein Textstring zurück der bei den speziellen Artiekltypen für die Volltextsuche durchsucht werden soll
216
390
  def searchable_in_article_type
@@ -232,17 +406,20 @@ module Goldencobra
232
406
  end
233
407
  end
234
408
 
235
- def public_url
409
+ def public_url(with_prefix=true)
236
410
  if self.startpage
237
- return "/"
411
+ if with_prefix
412
+ return "#{Goldencobra::Domain.current.try(:url_prefix)}/"
413
+ else
414
+ return "/"
415
+ end
238
416
  else
239
- "/#{self.path.select([:ancestry, :url_name, :startpage]).map{|a| a.url_name if !a.startpage}.compact.join("/")}"
240
- end
241
- end
242
-
243
- def set_url_name_if_blank
244
- if self.url_name.blank?
245
- self.url_name = self.friendly_id.split("--")[0]
417
+ a_url = "/#{self.path.select([:ancestry, :url_name, :startpage]).map{|a| a.url_name if !a.startpage}.compact.join("/")}"
418
+ if with_prefix
419
+ return "#{Goldencobra::Domain.current.try(:url_prefix)}#{a_url}"
420
+ else
421
+ return a_url
422
+ end
246
423
  end
247
424
  end
248
425
 
@@ -258,62 +435,27 @@ module Goldencobra
258
435
  end
259
436
  end
260
437
 
261
- def absolute_public_url
438
+ def absolute_base_url
262
439
  if Goldencobra::Setting.for_key("goldencobra.use_ssl") == "true"
263
- "https://#{Goldencobra::Setting.for_key('goldencobra.url')}#{self.public_url}"
440
+ "https://#{Goldencobra::Setting.for_key('goldencobra.url')}"
264
441
  else
265
- "http://#{Goldencobra::Setting.for_key('goldencobra.url')}#{self.public_url}"
266
- end
267
- end
268
-
269
- def parse_image_gallery_tags
270
- if self.respond_to?(:image_gallery_tags)
271
- self.image_gallery_tags = self.image_gallery_tags.compact.delete_if{|a| a.blank?}.join(",") if self.image_gallery_tags.class == Array
442
+ "http://#{Goldencobra::Setting.for_key('goldencobra.url')}"
272
443
  end
273
444
  end
274
445
 
275
- def verify_existence_of_opengraph_image
276
- if Goldencobra::Metatag.where("article_id = ? AND name = 'OpenGraph Image'", self.id).count == 0
277
- Goldencobra::Metatag.create(article_id: self.id,
278
- name: "OpenGraph Image",
279
- value: Goldencobra::Setting.for_key("goldencobra.facebook.opengraph_default_image"))
280
- end
281
-
282
- if self.article_images.any? && self.article_images.first.present? && self.article_images.first.image.present? && self.article_images.first.image.image.present?
283
- meta_tag = Goldencobra::Metatag.where(article_id: self.id, name: "OpenGraph Image").first
284
- meta_tag.value = "http://#{Goldencobra::Setting.for_key('goldencobra.url')}#{self.article_images.first.image.image.url}"
285
- meta_tag.save
286
- end
287
- end
288
-
289
- def set_default_opengraph_values
290
- if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph Title').none?
291
- Goldencobra::Metatag.create(name: 'OpenGraph Title',
292
- article_id: self.id,
293
- value: self.title)
294
- end
295
-
296
- if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph URL').none?
297
- Goldencobra::Metatag.create(name: 'OpenGraph URL',
298
- article_id: self.id,
299
- value: self.absolute_public_url)
300
- end
301
-
302
- if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph Description').none?
303
- if self.teaser.present?
304
- value = self.teaser
305
- else
306
- value = self.content.present? ? self.content.truncate(200) : self.title
307
- end
308
- Goldencobra::Metatag.create(name: 'OpenGraph Description',
309
- article_id: self.id,
310
- value: value)
446
+ def absolute_public_url
447
+ if Goldencobra::Setting.for_key("goldencobra.use_ssl") == "true"
448
+ "https://#{Goldencobra::Setting.for_key('goldencobra.url')}#{self.public_url}"
449
+ else
450
+ "http://#{Goldencobra::Setting.for_key('goldencobra.url')}#{self.public_url}"
311
451
  end
312
452
  end
313
453
 
314
454
  def for_friendly_name
315
455
  if self.url_name.present?
316
456
  self.url_name
457
+ elsif self.breadcrumb.present?
458
+ self.breadcrumb
317
459
  else
318
460
  self.title
319
461
  end
@@ -410,10 +552,88 @@ module Goldencobra
410
552
 
411
553
  end
412
554
 
555
+
556
+ # **************************
557
+ # **************************
558
+ # Callback Methods
559
+ # **************************
560
+ # **************************
561
+
562
+ #Nachdem ein Artikel gelöscht wurde soll sein Elternelement aktualisiert werden, damit ein rss feed oder ähnliches mitbekommt wenn ein kindeintrag gelöscht wurde
563
+ def update_parent_article_etag
564
+ if self.parent.present?
565
+ self.parent.update_attributes(:updated_at => Time.now)
566
+ end
567
+ end
568
+
413
569
  def set_active_since
414
570
  self.active_since = self.created_at
415
571
  end
416
572
 
573
+ def parse_image_gallery_tags
574
+ if self.respond_to?(:image_gallery_tags)
575
+ self.image_gallery_tags = self.image_gallery_tags.compact.delete_if{|a| a.blank?}.join(",") if self.image_gallery_tags.class == Array
576
+ end
577
+ end
578
+
579
+ def set_default_meta_opengraph_values
580
+ # Diese Zeile schein Überflüssig geworden zu sein, da nun der teaser, description oder title als defaultwerte genommen werden
581
+ #meta_description = Goldencobra::Setting.for_key('goldencobra.page.default_meta_description_tag')
582
+
583
+ if self.teaser.present?
584
+ meta_description = remove_html_tags(self.teaser)
585
+ else
586
+ meta_description = self.content.present? ? remove_html_tags(self.content).truncate(200) : self.title
587
+ end
588
+
589
+ if Goldencobra::Metatag.where(article_id: self.id, name: 'Meta Description').none?
590
+ Goldencobra::Metatag.create(name: 'Meta Description',
591
+ article_id: self.id,
592
+ value: meta_description)
593
+ end
594
+
595
+ if Goldencobra::Metatag.where(article_id: self.id, name: 'Title Tag').none?
596
+ Goldencobra::Metatag.create(name: 'Title Tag',
597
+ article_id: self.id,
598
+ #value: self.breadcrumb.present? ? self.breadcrumb : self.title)
599
+ value: self.title)
600
+ end
601
+
602
+ if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph Description').none?
603
+ Goldencobra::Metatag.create(name: 'OpenGraph Description',
604
+ article_id: self.id,
605
+ value: meta_description)
606
+ end
607
+
608
+ if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph Title').none?
609
+ Goldencobra::Metatag.create(name: 'OpenGraph Title',
610
+ article_id: self.id,
611
+ value: self.title)
612
+ end
613
+
614
+ if Goldencobra::Metatag.where(article_id: self.id, name: 'OpenGraph URL').none?
615
+ Goldencobra::Metatag.create(name: 'OpenGraph URL',
616
+ article_id: self.id,
617
+ value: self.absolute_public_url)
618
+ end
619
+ end
620
+
621
+ # helper um links zu entfernen in text
622
+ def remove_html_tags(text)
623
+ text.gsub(/<[^<]+?>/, "")
624
+ end
625
+
626
+ def verify_existence_of_opengraph_image
627
+ if Goldencobra::Metatag.where(article_id: self.id, name: "OpenGraph Image").none?
628
+ if self.article_images.any? && self.article_images.first.present? && self.article_images.first.image.present? && self.article_images.first.image.image.present?
629
+ og_img_val = "#{self.absolute_base_url}#{self.article_images.first.image.image.url}"
630
+ else
631
+ og_img_val = Goldencobra::Setting.for_key("goldencobra.facebook.opengraph_default_image")
632
+ end
633
+ Goldencobra::Metatag.create(name: "OpenGraph Image", article_id: self.id, value: og_img_val)
634
+ end
635
+ end
636
+
417
637
  def notification_event_create
418
638
  ActiveSupport::Notifications.instrument("goldencobra.article.created", :article_id => self.id)
419
639
  end
@@ -422,11 +642,31 @@ module Goldencobra
422
642
  ActiveSupport::Notifications.instrument("goldencobra.article.updated", :article_id => self.id)
423
643
  end
424
644
 
645
+ def set_url_name_if_blank
646
+ if self.url_name.blank?
647
+ #self.url_name = self.breadcrumb
648
+ self.url_name = self.friendly_id.split("--")[0]
649
+ end
650
+ end
651
+
652
+ def set_standard_application_template
653
+ if self.template_file.blank?
654
+ self.template_file = "application"
655
+ end
656
+ end
657
+
658
+ # **************************
659
+ # **************************
425
660
  # Class Methods
426
- #**************************
661
+ # **************************
662
+ # **************************
427
663
 
428
664
  def self.active
429
- Goldencobra::Article.where("active = 1 AND active_since < '#{Time.now.utc}'")
665
+ Goldencobra::Article.where("active = 1 AND active_since < '#{Time.now.strftime('%Y-%m-%d %H:%M:%S ')}'")
666
+ end
667
+
668
+ def active?
669
+ self.active && self.active_since < Time.now.utc
430
670
  end
431
671
 
432
672
  def self.search_by_url(url)
@@ -434,7 +674,7 @@ module Goldencobra
434
674
  articles = Goldencobra::Article.where(:url_name => url.split("/").last.to_s.split(".").first)
435
675
  article_path = "/#{url.split('.').first}"
436
676
  if articles.count > 0
437
- article = articles.select{|a| a.public_url == article_path}.first
677
+ article = articles.select{|a| a.public_url(false) == article_path}.first
438
678
  end
439
679
  return article
440
680
  end
@@ -444,7 +684,7 @@ module Goldencobra
444
684
  end
445
685
 
446
686
  def self.recent(count)
447
- Goldencobra::Article.where('title IS NOT NULL').order('updated_at DESC').limit(count)
687
+ Goldencobra::Article.where('title IS NOT NULL').order('created_at DESC').limit(count)
448
688
  end
449
689
 
450
690
  def self.recreate_cache