answers-core 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +6 -0
  3. data/answers-core.gemspec +30 -0
  4. data/app/assets/fonts/answers/League_Gothic-webfont.eot +0 -0
  5. data/app/assets/fonts/answers/League_Gothic-webfont.svg +230 -0
  6. data/app/assets/fonts/answers/League_Gothic-webfont.ttf +0 -0
  7. data/app/assets/fonts/answers/League_Gothic-webfont.woff +0 -0
  8. data/app/assets/images/OaklandCityTree.png +0 -0
  9. data/app/assets/images/background_image.jpg +0 -0
  10. data/app/assets/images/background_pattern.png +0 -0
  11. data/app/assets/images/beta.png +0 -0
  12. data/app/assets/images/bg_transparent.png +0 -0
  13. data/app/assets/images/border.png +0 -0
  14. data/app/assets/images/brigade.png +0 -0
  15. data/app/assets/images/cfa.png +0 -0
  16. data/app/assets/images/cfa_logo.png +0 -0
  17. data/app/assets/images/cfa_logo_footer.png +0 -0
  18. data/app/assets/images/favicon.ico +0 -0
  19. data/app/assets/images/forest.jpeg +0 -0
  20. data/app/assets/images/getting_started_btn.png +0 -0
  21. data/app/assets/images/govuk.png +0 -0
  22. data/app/assets/images/openoaklandlogo.png +0 -0
  23. data/app/assets/images/quick_answers_icon.png +0 -0
  24. data/app/assets/images/quick_answers_icon_small.png +0 -0
  25. data/app/assets/images/searchIcon.png +0 -0
  26. data/app/assets/images/wmd-buttons.png +0 -0
  27. data/app/assets/images/yellow_bg.png +0 -0
  28. data/app/assets/javascripts/answers.js +19 -0
  29. data/app/assets/javascripts/answers/Markdown.Extra.js +304 -0
  30. data/app/assets/javascripts/answers/active_admin.js +62 -0
  31. data/app/assets/javascripts/answers/pagedown/LICENSE.txt +32 -0
  32. data/app/assets/javascripts/answers/pagedown/Markdown.Converter.js +1332 -0
  33. data/app/assets/javascripts/answers/pagedown/Markdown.Editor.js +2212 -0
  34. data/app/assets/javascripts/answers/pagedown/Markdown.Sanitizer.js +108 -0
  35. data/app/assets/javascripts/answers/pagedown/README.txt +0 -0
  36. data/app/assets/javascripts/answers/pagedown/demo/browser/demo.css +120 -0
  37. data/app/assets/javascripts/answers/pagedown/demo/browser/demo.html +83 -0
  38. data/app/assets/javascripts/answers/pagedown/demo/node/demo.js +44 -0
  39. data/app/assets/javascripts/answers/pagedown/local/Markdown.local.fr.js +43 -0
  40. data/app/assets/javascripts/answers/pagedown/node-pagedown.js +2 -0
  41. data/app/assets/javascripts/answers/pagedown/package.json +12 -0
  42. data/app/assets/javascripts/answers/pagedown/resources/wmd-buttons.psd +0 -0
  43. data/app/assets/javascripts/answers/pagedown/wmd-buttons.png +0 -0
  44. data/app/assets/javascripts/answers/skip_nav.js +8 -0
  45. data/app/assets/stylesheets/answers/active_admin.css.scss +17 -0
  46. data/app/assets/stylesheets/answers/active_admin_custom.css.scss +35 -0
  47. data/app/assets/stylesheets/answers/formatting.css +82 -0
  48. data/app/assets/stylesheets/answers/mobile.css +149 -0
  49. data/app/assets/stylesheets/answers/tags.css.scss +3 -0
  50. data/app/assets/stylesheets/answers/theme.css +916 -0
  51. data/app/controllers/answers/answers_controller.rb +26 -0
  52. data/app/controllers/answers/api/v1/answers_controller.rb +38 -0
  53. data/app/controllers/answers/api/v1/api_controller.rb +13 -0
  54. data/app/controllers/answers/api/v1/questions_controller.rb +39 -0
  55. data/app/controllers/answers/api/v1/taggings_controller.rb +46 -0
  56. data/app/controllers/answers/api/v1/tags_controller.rb +38 -0
  57. data/app/controllers/answers/application_controller.rb +27 -0
  58. data/app/controllers/answers/home_controller.rb +17 -0
  59. data/app/controllers/answers/questions_controller.rb +33 -0
  60. data/app/controllers/answers/search_controller.rb +22 -0
  61. data/app/controllers/answers/tags_controller.rb +36 -0
  62. data/app/helpers/answers/tags_helper.rb +7 -0
  63. data/app/models/.gitkeep +0 -0
  64. data/app/models/answers/ability.rb +28 -0
  65. data/app/models/answers/administrator.rb +5 -0
  66. data/app/models/answers/answer.rb +6 -0
  67. data/app/models/answers/api/v1/api_user.rb +5 -0
  68. data/app/models/answers/question.rb +31 -0
  69. data/app/models/answers/user.rb +30 -0
  70. data/app/views/answers/admin/contacts/_article.html.erb +0 -0
  71. data/app/views/answers/admin/dashboard/_dashboard.html.erb +5 -0
  72. data/app/views/answers/admin/guide_steps/_form.html.erb +17 -0
  73. data/app/views/answers/api/v1/answers/_answer.json.jbuilder +2 -0
  74. data/app/views/answers/api/v1/answers/index.json.jbuilder +1 -0
  75. data/app/views/answers/api/v1/answers/show.json.jbuilder +1 -0
  76. data/app/views/answers/api/v1/questions/_question.json.jbuilder +2 -0
  77. data/app/views/answers/api/v1/questions/index.json.jbuilder +1 -0
  78. data/app/views/answers/api/v1/questions/show.json.jbuilder +1 -0
  79. data/app/views/answers/api/v1/taggings/_tagging.json.jbuilder +3 -0
  80. data/app/views/answers/api/v1/taggings/index.json.jbuilder +1 -0
  81. data/app/views/answers/api/v1/taggings/show.json.jbuilder +1 -0
  82. data/app/views/answers/api/v1/tags/_tag.json.jbuilder +2 -0
  83. data/app/views/answers/api/v1/tags/index.json.jbuilder +1 -0
  84. data/app/views/answers/api/v1/tags/show.json.jbuilder +1 -0
  85. data/app/views/answers/devise/confirmations/new.html.erb +12 -0
  86. data/app/views/answers/devise/mailer/confirmation_instructions.html.erb +5 -0
  87. data/app/views/answers/devise/mailer/reset_password_instructions.html.erb +8 -0
  88. data/app/views/answers/devise/mailer/unlock_instructions.html.erb +7 -0
  89. data/app/views/answers/devise/passwords/edit.html.erb +24 -0
  90. data/app/views/answers/devise/passwords/new.html.erb +20 -0
  91. data/app/views/answers/devise/registrations/edit.html.erb +25 -0
  92. data/app/views/answers/devise/registrations/new.html.erb +18 -0
  93. data/app/views/answers/devise/sessions/new.html.erb +25 -0
  94. data/app/views/answers/devise/shared/_links.erb +25 -0
  95. data/app/views/answers/devise/unlocks/new.html.erb +12 -0
  96. data/app/views/answers/home/_article.html.erb +3 -0
  97. data/app/views/answers/home/_category.html.erb +8 -0
  98. data/app/views/answers/home/about.html.erb +72 -0
  99. data/app/views/answers/home/index.html.erb +44 -0
  100. data/app/views/answers/questions/index.html.erb +21 -0
  101. data/app/views/answers/questions/show.html.erb +31 -0
  102. data/app/views/answers/search/index.html.erb +32 -0
  103. data/app/views/answers/shared/_articles_sidebar.html.erb +22 -0
  104. data/app/views/answers/shared/_autocomplete.html.erb +8 -0
  105. data/app/views/answers/shared/_categories_sidebar.html.erb +12 -0
  106. data/app/views/answers/shared/_search_form.html.erb +4 -0
  107. data/app/views/answers/shared/admin/_administration.html.erb +38 -0
  108. data/app/views/answers/shared/admin/_article_actions.html.erb +86 -0
  109. data/app/views/answers/shared/admin/_article_content.html.erb +27 -0
  110. data/app/views/answers/shared/admin/_article_details.html.erb +11 -0
  111. data/app/views/answers/shared/admin/_article_form.html.erb +20 -0
  112. data/app/views/answers/shared/admin/_author_pic.html.erb +0 -0
  113. data/app/views/answers/tags/index.html.erb +34 -0
  114. data/app/views/answers/tags/show.html.erb +31 -0
  115. data/app/views/layouts/answers/application.html.erb +97 -0
  116. data/config.ru +5 -0
  117. data/config/initializers/active_admin.rb +245 -0
  118. data/config/initializers/devise.rb +228 -0
  119. data/config/locales/devise.en.yml +57 -0
  120. data/config/locales/en.yml +129 -0
  121. data/config/routes.rb +22 -0
  122. data/config/secrets.yml +68 -0
  123. data/db/migrate/20140911060606_answers_up.rb +79 -0
  124. data/lib/answers-core.rb +1 -0
  125. data/lib/answers.rb +175 -0
  126. data/lib/answers/admin/answer.rb +29 -0
  127. data/lib/answers/admin/dashboard.rb +75 -0
  128. data/lib/answers/admin/question.rb +57 -0
  129. data/lib/answers/admin/tag.rb +12 -0
  130. data/lib/answers/admin/users.rb +65 -0
  131. data/lib/answers/core.rb +25 -0
  132. data/lib/answers/core/configuration.rb +90 -0
  133. data/lib/answers/core/engine.rb +116 -0
  134. data/lib/answers/engine.rb +62 -0
  135. data/lib/answers/errors.rb +13 -0
  136. data/lib/answers/plugin.rb +75 -0
  137. data/lib/answers/plugins.rb +73 -0
  138. data/lib/answers/version.rb +16 -0
  139. data/lib/api_client.rb +20 -0
  140. data/lib/assets/.gitkeep +0 -0
  141. data/lib/assets/eng_stop.csv +1 -0
  142. data/lib/generators/answers/clash_keywords.yml +3 -0
  143. data/lib/generators/answers/cms/cms_generator.rb +314 -0
  144. data/lib/generators/answers/cms/templates/.gitignore +91 -0
  145. data/lib/generators/answers/cms/templates/app/decorators/controllers/answers/.keep +0 -0
  146. data/lib/generators/answers/cms/templates/app/decorators/models/answers/.keep +0 -0
  147. data/lib/generators/answers/cms/templates/app/views/sitemap/index.xml.builder +15 -0
  148. data/lib/generators/answers/cms/templates/config/database.yml.mysql +20 -0
  149. data/lib/generators/answers/cms/templates/config/database.yml.postgresql +58 -0
  150. data/lib/generators/answers/cms/templates/config/database.yml.sqlite3 +18 -0
  151. data/lib/generators/answers/core/core_generator.rb +10 -0
  152. data/lib/generators/answers/core/templates/config/initializers/answers/core.rb.erb +35 -0
  153. data/lib/generators/answers/dummy/dummy_generator.rb +86 -0
  154. data/lib/generators/answers/dummy/templates/rails/Rakefile +7 -0
  155. data/lib/generators/answers/dummy/templates/rails/application.js +3 -0
  156. data/lib/generators/answers/dummy/templates/rails/application.rb.erb +12 -0
  157. data/lib/generators/answers/dummy/templates/rails/boot.rb.erb +6 -0
  158. data/lib/generators/answers/dummy/templates/rails/database.yml +34 -0
  159. data/lib/generators/answers/dummy/templates/rails/routes.rb +3 -0
  160. data/lib/generators/answers/engine/USAGE +24 -0
  161. data/lib/generators/answers/engine/engine_generator.rb +44 -0
  162. data/lib/generators/answers/engine/templates/.gitignore +2 -0
  163. data/lib/generators/answers/engine/templates/Gemfile +42 -0
  164. data/lib/generators/answers/engine/templates/Rakefile +19 -0
  165. data/lib/generators/answers/engine/templates/answers-extension_plural_name.gemspec +19 -0
  166. data/lib/generators/answers/engine/templates/app/controllers/answers/namespace/admin/plural_name_controller.rb.erb +14 -0
  167. data/lib/generators/answers/engine/templates/app/controllers/answers/namespace/plural_name_controller.rb.erb +34 -0
  168. data/lib/generators/answers/engine/templates/app/models/answers/namespace/singular_name.rb.erb +37 -0
  169. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_actions.html.erb +25 -0
  170. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_form.html.erb +65 -0
  171. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_plural_name.html.erb +2 -0
  172. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_records.html.erb +16 -0
  173. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_singular_name.html.erb +33 -0
  174. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/_sortable_list.html.erb +5 -0
  175. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/edit.html.erb +1 -0
  176. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/index.html.erb +7 -0
  177. data/lib/generators/answers/engine/templates/app/views/answers/namespace/admin/plural_name/new.html.erb +1 -0
  178. data/lib/generators/answers/engine/templates/app/views/answers/namespace/plural_name/index.html.erb +11 -0
  179. data/lib/generators/answers/engine/templates/app/views/answers/namespace/plural_name/show.html.erb +39 -0
  180. data/lib/generators/answers/engine/templates/config/locales/cs.yml +28 -0
  181. data/lib/generators/answers/engine/templates/config/locales/en.yml +28 -0
  182. data/lib/generators/answers/engine/templates/config/locales/es.yml +29 -0
  183. data/lib/generators/answers/engine/templates/config/locales/fr.yml +28 -0
  184. data/lib/generators/answers/engine/templates/config/locales/it.yml +28 -0
  185. data/lib/generators/answers/engine/templates/config/locales/nb.yml +28 -0
  186. data/lib/generators/answers/engine/templates/config/locales/nl.yml +28 -0
  187. data/lib/generators/answers/engine/templates/config/locales/sk.yml +28 -0
  188. data/lib/generators/answers/engine/templates/config/locales/tr.yml +28 -0
  189. data/lib/generators/answers/engine/templates/config/locales/zh-CN.yml +30 -0
  190. data/lib/generators/answers/engine/templates/config/routes.rb.erb +19 -0
  191. data/lib/generators/answers/engine/templates/db/migrate/1_create_namespace_plural_name.rb.erb +39 -0
  192. data/lib/generators/answers/engine/templates/db/seeds.rb.erb +21 -0
  193. data/lib/generators/answers/engine/templates/lib/answers-extension_plural_name.rb.erb +1 -0
  194. data/lib/generators/answers/engine/templates/lib/answers/plural_name.rb.erb +21 -0
  195. data/lib/generators/answers/engine/templates/lib/answers/plural_name/engine.rb.erb +23 -0
  196. data/lib/generators/answers/engine/templates/lib/generators/answers/extension_plural_name_generator.rb.erb +19 -0
  197. data/lib/generators/answers/engine/templates/lib/tasks/answers/extension_plural_name.rake +13 -0
  198. data/lib/generators/answers/engine/templates/readme.md +10 -0
  199. data/lib/generators/answers/engine/templates/script/rails +10 -0
  200. data/lib/generators/answers/engine/templates/spec/features/answers/namespace/admin/plural_name_spec.rb.erb +200 -0
  201. data/lib/generators/answers/engine/templates/spec/models/answers/namespace/singular_name_spec.rb.erb +20 -0
  202. data/lib/generators/answers/engine/templates/spec/spec_helper.rb +31 -0
  203. data/lib/generators/answers/engine/templates/spec/support/factories/answers/plural_name.rb.erb +7 -0
  204. data/lib/generators/answers/engine/templates/tasks/rspec.rake +6 -0
  205. data/lib/generators/answers/engine/templates/tasks/testing.rake +8 -0
  206. data/lib/generators/answers/generator.rb +292 -0
  207. data/lib/markdownifier.rb +11 -0
  208. data/log/.gitkeep +0 -0
  209. data/log/development.log +12870 -0
  210. data/log/newrelic_agent.log +1339 -0
  211. data/log/test.log +233181 -0
  212. data/public/404.html +25 -0
  213. data/public/422.html +25 -0
  214. data/public/500.html +24 -0
  215. data/public/favicon.ico +0 -0
  216. data/public/robots.txt +5 -0
  217. data/script/delayed_job +5 -0
  218. data/spec/controllers/answers_controller_spec.rb +55 -0
  219. data/spec/controllers/api/v1/answers_controller_spec.rb +144 -0
  220. data/spec/controllers/api/v1/questions_controller_spec.rb +144 -0
  221. data/spec/controllers/api/v1/taggings_controller_spec.rb +126 -0
  222. data/spec/controllers/api/v1/tags_controller_spec.rb +126 -0
  223. data/spec/controllers/home_controller_spec.rb +60 -0
  224. data/spec/controllers/questions_controller_spec.rb +55 -0
  225. data/spec/controllers/tags_controller_spec.rb +42 -0
  226. data/spec/factories/answers.rb +10 -0
  227. data/spec/factories/questions.rb +8 -0
  228. data/spec/factories/tags.rb +8 -0
  229. data/spec/factories/user.rb +32 -0
  230. data/spec/features/admin_dashboard_spec.rb +53 -0
  231. data/spec/features/admin_user_spec.rb +61 -0
  232. data/spec/features/searches_spec.rb +101 -0
  233. data/spec/fixtures/Article/_before_validation/sets_access_count_if_nil.yml +223 -0
  234. data/spec/fixtures/Article/_delete_orphaned_keywords/updating_an_article/destroys_orphaned_keywords_associated.yml +223 -0
  235. data/spec/fixtures/Article/_delete_orphaned_keywords/when_deleting_an_article/destroys_all_keywords_associated.yml +223 -0
  236. data/spec/fixtures/Article/_find_by_friendly_id/when_an_article_does_not_exist/does_not_raise_an_exception.yml +223 -0
  237. data/spec/fixtures/Article/_find_by_friendly_id/when_an_article_exists/returns_the_corresponding_article.yml +223 -0
  238. data/spec/fixtures/Article/_find_by_type/excludes_articles_not_matching_specified_type.yml +223 -0
  239. data/spec/fixtures/Article/_find_by_type/returns_articles_matching_type.yml +223 -0
  240. data/spec/fixtures/Article/_hits/before_an_article_has_been_viewed/has_zero_hits.yml +223 -0
  241. data/spec/fixtures/Article/_hits/returns_number_of_views/has_seven_views.yml +223 -0
  242. data/spec/fixtures/Article/_indexable_/returns_false_if_article_is_not_published.yml +223 -0
  243. data/spec/fixtures/Article/_indexable_/returns_true_if_article_is_published.yml +223 -0
  244. data/spec/fixtures/Article/_legacy_/returns_true_if_render_markdown_is_false.yml +223 -0
  245. data/spec/fixtures/Article/_qm_after_create/creates_wordcounts_for_relevant_keywords.yml +223 -0
  246. data/spec/fixtures/Article/_record_hit/viewing_an_article/increases_hit_by_one.yml +223 -0
  247. data/spec/fixtures/Article/_related/has_no_related_articles/.yml +223 -0
  248. data/spec/fixtures/Article/_related/has_related_articles/.yml +223 -0
  249. data/spec/fixtures/Article/_remove_stop_words/removes_common_english_words_from_the_string.yml +223 -0
  250. data/spec/fixtures/Article/_search/_search_titles/query_is_present_in_the_title/.yml +223 -0
  251. data/spec/fixtures/Article/_search/_search_titles/returns_an_empty_array_when_the_search_term_is_present_in_an_article_but_not_the_title.yml +223 -0
  252. data/spec/fixtures/Article/_search/matches_articles_in_the_database.yml +223 -0
  253. data/spec/fixtures/Article/_search/query_does_not_match_anything_in_the_database/returns_an_empty_array.yml +223 -0
  254. data/spec/fixtures/Article/_search/query_is_a_single_space/.yml +223 -0
  255. data/spec/fixtures/Article/_search/query_is_an_empty_string/.yml +223 -0
  256. data/spec/fixtures/Article/_to_s/when_an_article_has_a_category/returns_a_string_containing_title_id_and_category.yml +223 -0
  257. data/spec/fixtures/Article/can_be_published/an_unpublished_article/is_published.yml +223 -0
  258. data/spec/fixtures/Article/can_be_published/an_unpublished_article/returns_status_Published.yml +223 -0
  259. data/spec/fixtures/Article/has_a_friendly_url.yml +223 -0
  260. data/spec/fixtures/Article/is_valid_with_a_title.yml +223 -0
  261. data/spec/fixtures/Searches/search_results/1_result_found/.yml +22047 -0
  262. data/spec/fixtures/Searches/search_results/no_results_found/.yml +393 -0
  263. data/spec/fixtures/Searches/search_results/several_results_found/should_contain_the_title_and_preview_of_both_articles.yml +223 -0
  264. data/spec/fixtures/Searches/search_results/several_results_found/show_the_query.yml +277 -0
  265. data/spec/fixtures/articles.yml +428 -0
  266. data/spec/fixtures/categories.yml +17 -0
  267. data/spec/fixtures/contacts.yml +11 -0
  268. data/spec/fixtures/dragon_keyword_cassette.yml +77 -0
  269. data/spec/fixtures/oakland_answers.yml +2379 -0
  270. data/spec/helpers/tags_helper_spec.rb +15 -0
  271. data/spec/lib/markdownifier_spec.rb +12 -0
  272. data/spec/models/ability_spec.rb +36 -0
  273. data/spec/models/answer_spec.rb +5 -0
  274. data/spec/models/question_spec.rb +70 -0
  275. data/spec/models/user_spec.rb +55 -0
  276. data/spec/routing/answers_routing_spec.rb +19 -0
  277. data/spec/routing/questions_routing_spec.rb +19 -0
  278. data/spec/routing/routes_spec.rb +13 -0
  279. data/spec/security/brakeman_spec.rb +37 -0
  280. data/spec/spec_helper.rb +61 -0
  281. data/spec/support/login_helpers.rb +10 -0
  282. data/spec/support/wait_for_ajax_helper.rb +7 -0
  283. data/spec/support/wait_for_dom_helper.rb +12 -0
  284. data/spec/views/questions/index.html.erb_spec.rb +16 -0
  285. data/spec/views/questions/show.html.erb_spec.rb +14 -0
  286. data/spec/views/tags/index.html.erb_spec.rb +5 -0
  287. data/spec/views/tags/show.html.erb_spec.rb +5 -0
  288. data/vendor/assets/javascripts/.gitkeep +0 -0
  289. data/vendor/assets/stylesheets/.gitkeep +0 -0
  290. data/vendor/assets/stylesheets/bootstrap.css +3990 -0
  291. data/vendor/crudgen/lib/generators/crudgen/install_generator.rb +23 -0
  292. data/vendor/plugins/.gitkeep +0 -0
  293. metadata +484 -0
@@ -0,0 +1,29 @@
1
+ module Answers
2
+ ActiveAdmin.register Answer, as: 'Answer' do
3
+ permit_params :question_id, :text, :in_language, :need_to_know
4
+
5
+ form do |f|
6
+ f.inputs "Details" do
7
+ f.input :question, :as => :select, :collection => Question.all.map {|q| [q.text, q.id]}, :include_blank => false
8
+ f.input :need_to_know
9
+ f.input :text
10
+ f.input :in_language
11
+ end
12
+ f.actions
13
+ end
14
+
15
+ # See permitted parameters documentation:
16
+ # https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
17
+ #
18
+ # permit_params :list, :of, :attributes, :on, :model
19
+ #
20
+ # or
21
+ #
22
+ # permit_params do
23
+ # permitted = [:permitted, :attributes]
24
+ # permitted << :other if resource.something?
25
+ # permitted
26
+ # end
27
+
28
+ end
29
+ end
@@ -0,0 +1,75 @@
1
+ module Answers
2
+ # def recent_articles_table
3
+ # table_for Article.order("created_at DESC").limit(5), title: "My Title" do
4
+ # column "Article Title", :title do |article|
5
+ # title = ""
6
+ # if article.title.present?
7
+ # title = article.title
8
+ # elsif article.title_es.present?
9
+ # title = article.title_es
10
+ # elsif article.title_cn.present?
11
+ # title = article.title_cn
12
+ # end
13
+ # link_to title, [:admin, article]
14
+ # end
15
+ # column "Author", :user do |article|
16
+ # article.user.try(:email)
17
+ # end
18
+ # column "Status", :status
19
+ # column "Date Created", :created_at
20
+ # column "Date Updated", :updated_at
21
+ # end
22
+ # end
23
+
24
+ # def your_articles_table
25
+ # table_for current_user.articles.order("created_at DESC") do
26
+ # column "Article Title", :title do |article|
27
+ # link_to article.title, [:admin, article]
28
+ # end
29
+ # column "Author", :user do |article|
30
+ # article.user.try(:email)
31
+ # end
32
+ # column "Status", :status
33
+ # column "Date Created", :created_at
34
+ # end
35
+ # end
36
+
37
+
38
+
39
+ ActiveAdmin.register_page "Dashboard" do
40
+ menu priority: 1, label: proc{ I18n.t("active_admin.dashboard") }
41
+
42
+ content title: proc{ I18n.t("active_admin.dashboard") } do
43
+ div class: "blank_slate_container", id: "dashboard_default_message" do
44
+ span class: "blank_slate" do
45
+ span I18n.t("active_admin.dashboard_welcome.welcome")
46
+ small I18n.t("active_admin.dashboard_welcome.call_to_action")
47
+ end
48
+ end
49
+ end
50
+
51
+ # content do
52
+
53
+ # # TODO: replace with Question and Answer
54
+ # # if current_user.is_admin? || current_user.is_editor?
55
+ # # panel "Recent Articles" do recent_articles_table end
56
+ # # end
57
+
58
+ # # if current_user.is_writer?
59
+ # # panel "Your Articles" do your_articles_table end
60
+ # # end
61
+
62
+ # if current_user.is_admin?
63
+ # panel "Users" do
64
+ # table_for User.order("created_at DESC").limit(5) do
65
+ # column "User", :email do |user|
66
+ # link_to user.email, [:admin, user]
67
+ # end
68
+ # end
69
+
70
+ # end
71
+ # end
72
+
73
+ # end
74
+ end
75
+ end
@@ -0,0 +1,57 @@
1
+ module Answers
2
+ ActiveAdmin.register Question, as: 'Question' do
3
+ permit_params :text, :in_language, :tags, :tag_list
4
+
5
+ #override questions controller strong params until implemented.
6
+ controller do
7
+ def permitted_params
8
+ params.permit!
9
+ end
10
+ end
11
+
12
+ form do |f|
13
+ f.inputs "Details", :multipart => true do
14
+ f.input :text
15
+ f.input :in_language
16
+ f.input :tag_list, :as => :select,
17
+ :multiple => true,
18
+ :collection => ActsAsTaggableOn::Tag.all.map(&:name)
19
+ f.actions
20
+ end
21
+ end
22
+
23
+ index do
24
+ column :text
25
+ column :in_language
26
+ column :tag_list
27
+ column :created_at
28
+ column :updated_at
29
+ actions
30
+ end
31
+
32
+ show do
33
+ attributes_table do
34
+ row :text
35
+ row :in_language
36
+ row :tag_list
37
+ row :created_at
38
+ row :updated_at
39
+ end
40
+ active_admin_comments
41
+ end
42
+
43
+ # See permitted parameters documentation:
44
+ # https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
45
+ #
46
+ # permit_params :list, :of, :attributes, :on, :model
47
+ #
48
+ # or
49
+ #
50
+ # permit_params do
51
+ # permitted = [:permitted, :attributes]
52
+ # permitted << :other if resource.something?
53
+ # permitted
54
+ # end
55
+
56
+ end
57
+ end
@@ -0,0 +1,12 @@
1
+ module Answers
2
+ ActiveAdmin.register ActsAsTaggableOn::Tag, as: 'Tag' do
3
+ permit_params :name, :taggings_count
4
+
5
+ index do
6
+ column :id
7
+ column :name
8
+ column :taggings_count
9
+ actions
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,65 @@
1
+ module Answers
2
+ ActiveAdmin.register User do
3
+
4
+ controller do
5
+ before_filter :check_access, :only => [:show, :edit, :update, :destroy]
6
+
7
+ private
8
+
9
+ def update_resource(object, attributes)
10
+ if current_admin_user
11
+
12
+ end
13
+ attributes.delete_if do |k,v|
14
+ [:is_admin, :is_editor, :is_writer].include?(k) and !current_admin_user?
15
+ end
16
+ update_method = attributes.first[:password].present? ? :update_attributes : :update_without_password
17
+ object.send(update_method, *attributes)
18
+ end
19
+
20
+ def check_access
21
+ correct_user? unless current_admin_user
22
+ end
23
+ end
24
+
25
+ permit_params :is_admin, :is_editor, :is_writer, :email, :password, :password_confirmation
26
+
27
+ menu :if => proc{ current_user.is_admin? || current_user.is_editor? }, :label => 'Users'
28
+
29
+ index do
30
+ column :email
31
+ column :is_admin
32
+ column :is_editor
33
+ column :is_writer
34
+ actions
35
+ end
36
+
37
+ form do |f|
38
+ f.inputs "User Details" do
39
+ f.input :email
40
+ f.input :password
41
+ f.input :password_confirmation
42
+ end
43
+ if current_admin_user
44
+ f.inputs "Type of User" do
45
+ f.input :is_admin, :label => "Administrator"
46
+ f.input :is_editor, :label => "Editor"
47
+ f.input :is_writer, :label => "Writer"
48
+ end
49
+ end
50
+ f.actions
51
+ end
52
+
53
+ show do |user|
54
+ attributes_table do
55
+ row :email
56
+ row :is_editor
57
+ row :is_writer
58
+ row :is_admin
59
+ row :created_at
60
+ row :updated_at
61
+ end
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../../answers', __FILE__)
2
+ #require 'truncate_html'
3
+ #require 'will_paginate'
4
+ #surrequire 'answers/i18n'
5
+
6
+ module Answers
7
+ module Core
8
+ require 'answers/core/engine'
9
+ require 'answers/core/configuration'
10
+
11
+ class << self
12
+ def root
13
+ @root ||= Pathname.new(File.expand_path('../../../', __FILE__))
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ # this require has to be down here
20
+ # see https://github.com/refinery/refinerycms/issues/2273
21
+ #require 'decorators'
22
+ #require 'jquery-rails'
23
+ #require 'jquery-ui-rails'
24
+ #require 'sass-rails'
25
+ #require 'coffee-rails'
@@ -0,0 +1,90 @@
1
+ module Answers
2
+ module Core
3
+ include ActiveSupport::Configurable
4
+
5
+ config_accessor :rescue_not_found, :s3_backend, :base_cache_key, :site_name,
6
+ :google_analytics_page_code, :authenticity_token_on_frontend,
7
+ :dragonfly_secret, :javascripts, :stylesheets,
8
+ :s3_bucket_name, :s3_region, :s3_access_key_id,
9
+ :s3_secret_access_key, :force_ssl, :backend_route,
10
+ :dragonfly_custom_backend_class, :dragonfly_custom_backend_opts,
11
+ :visual_editor_javascripts, :visual_editor_stylesheets
12
+
13
+ self.rescue_not_found = false
14
+ self.s3_backend = false
15
+ self.base_cache_key = :answers
16
+ self.site_name = "Company Name"
17
+ self.google_analytics_page_code = "UA-xxxxxx-x"
18
+ self.authenticity_token_on_frontend = false
19
+ self.dragonfly_secret = Array.new(24) { rand(256) }.pack('C*').unpack('H*').first
20
+ self.javascripts = []
21
+ self.stylesheets = []
22
+ self.s3_bucket_name = ENV['S3_BUCKET']
23
+ self.s3_region = ENV['S3_REGION']
24
+ self.s3_access_key_id = ENV['S3_KEY']
25
+ self.s3_secret_access_key = ENV['S3_SECRET']
26
+ self.force_ssl = false
27
+ self.backend_route = "answers"
28
+ self.dragonfly_custom_backend_class = ''
29
+ self.dragonfly_custom_backend_opts = {}
30
+ self.visual_editor_javascripts = []
31
+ self.visual_editor_stylesheets = []
32
+
33
+ def config.register_javascript(name)
34
+ self.javascripts << name
35
+ end
36
+
37
+ def config.register_stylesheet(*args)
38
+ self.stylesheets << Stylesheet.new(*args)
39
+ end
40
+
41
+ def config.register_visual_editor_javascript(name)
42
+ self.visual_editor_javascripts << name
43
+ end
44
+
45
+ def config.register_visual_editor_stylesheet(*args)
46
+ self.visual_editor_stylesheets << Stylesheet.new(*args)
47
+ end
48
+
49
+ class << self
50
+ def backend_route
51
+ # prevent / at the start.
52
+ config.backend_route.to_s.gsub(%r{\A/}, '')
53
+ end
54
+
55
+ def clear_javascripts!
56
+ self.javascripts = []
57
+ end
58
+
59
+ def clear_stylesheets!
60
+ self.stylesheets = []
61
+ end
62
+
63
+ def dragonfly_custom_backend?
64
+ config.dragonfly_custom_backend_class.present?
65
+ end
66
+
67
+ def dragonfly_custom_backend_class
68
+ config.dragonfly_custom_backend_class.constantize if dragonfly_custom_backend?
69
+ end
70
+
71
+ def site_name
72
+ ::I18n.t('site_name', :scope => 'answers.core.config', :default => config.site_name)
73
+ end
74
+
75
+ def wymeditor_whitelist_tags=(tags)
76
+ raise "Please ensure answers-wymeditor is being used and use Answers::Wymeditor.whitelist_tags instead of Answers::Core.wymeditor_whitelist_tags"
77
+ end
78
+ end
79
+
80
+ # wrapper for stylesheet registration
81
+ class Stylesheet
82
+ attr_reader :options, :path
83
+ def initialize(*args)
84
+ @options = args.extract_options!
85
+ @path = args.first if args.first
86
+ end
87
+ end
88
+
89
+ end
90
+ end
@@ -0,0 +1,116 @@
1
+ module Answers
2
+ module Core
3
+ class Engine < ::Rails::Engine
4
+ extend Answers::Engine
5
+
6
+ isolate_namespace Answers
7
+ engine_name :answers
8
+
9
+ class << self
10
+ # Register all decorators from app/decorators/ and registered plugins' paths.
11
+ def register_decorators!
12
+ #Decorators.register! Rails.root, Answers::Plugins.registered.pathnames
13
+ end
14
+
15
+ # Performs the Answers inclusion process which extends the currently loaded Rails
16
+ # applications with Answers's controllers and helpers. The process is wrapped by
17
+ # a before_inclusion and after_inclusion step that calls procs registered by the
18
+ # Answers::Engine#before_inclusion and Answers::Engine#after_inclusion class methods
19
+ def answers_inclusion!
20
+ before_inclusion_procs.each(&:call)
21
+
22
+ #Answers.include_once(::ApplicationController, Answers::ApplicationController)
23
+ #::ApplicationController.send :helper, Answers::Core::Engine.helpers
24
+
25
+ after_inclusion_procs.each(&:call)
26
+ end
27
+ end
28
+
29
+ require 'devise'
30
+ config.to_prepare do
31
+ Devise::SessionsController.layout "answers/application"
32
+ end
33
+
34
+ config.autoload_paths += %W( #{config.root}/lib )
35
+
36
+ config.generators do |g|
37
+ g.test_framework :rspec, fixture: false
38
+ g.fixture_replacement :factory_girl, dir: 'spec/factories'
39
+ g.assets false
40
+ g.helper false
41
+ end
42
+
43
+ # Include the answers controllers and helpers dynamically
44
+ config.to_prepare &method(:answers_inclusion!).to_proc
45
+
46
+ after_inclusion &method(:register_decorators!).to_proc
47
+
48
+ # Wrap errors in spans
49
+ config.to_prepare do
50
+ ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
51
+ "<span class=\"fieldWithErrors\">#{html_tag}</span>".html_safe
52
+ end
53
+ end
54
+
55
+ initializer "register answers_core plugin" do
56
+ Answers::Plugin.register do |plugin|
57
+ plugin.pathname = root
58
+ plugin.name = 'answers_core'
59
+ plugin.class_name = 'AnswersEngine'
60
+ plugin.hide_from_menu = true
61
+ plugin.always_allow_access = true
62
+ plugin.menu_match = /answers\/(answers_)?core$/
63
+ end
64
+ end
65
+
66
+ initializer "answers.routes", :after => :set_routes_reloader_hook do |app|
67
+ Answers::Core::Engine.routes.append do
68
+ get "#{Answers::Core.backend_route}/*path" => 'admin#error_404'
69
+ end
70
+ end
71
+
72
+ initializer "answers.autoload_paths" do |app|
73
+ app.config.autoload_paths += [
74
+ Rails.root.join('app', 'presenters'),
75
+ Rails.root.join('vendor', '**', '**', 'app', 'presenters'),
76
+ Answers.roots.map{|r| r.join('**', 'app', 'presenters')}
77
+ ].flatten
78
+ end
79
+
80
+ # set the manifests and assets to be precompiled
81
+ config.to_prepare do
82
+ Rails.application.config.assets.precompile += %w(
83
+ answers/*
84
+ answers/icons/*
85
+ modernizr-min.js
86
+ admin.js
87
+ )
88
+ end
89
+
90
+ # active model fields which may contain sensitive data to filter
91
+ initializer "answers.params.filter" do |app|
92
+ app.config.filter_parameters += [:password, :password_confirmation]
93
+ end
94
+
95
+ initializer "answers.encoding" do |app|
96
+ app.config.encoding = 'utf-8'
97
+ end
98
+
99
+ initializer "answers.memory_store" do |app|
100
+ app.config.cache_store = :memory_store
101
+ end
102
+
103
+ initializer 'append_migrations' do |app|
104
+ unless app.root.to_s.match root.to_s
105
+ config.paths['db/migrate'].expanded.each do |expanded_path|
106
+ app.config.paths['db/migrate'] << expanded_path
107
+ end
108
+ end
109
+ end
110
+
111
+ config.after_initialize do
112
+ Answers.register_extension(Answers::Core)
113
+ end
114
+ end
115
+ end
116
+ end