appyantra_admin 0.0.1

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 (261) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +24 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +101 -0
  5. data/Rakefile +26 -0
  6. data/app/assets/images/appyantra_admin/.gitkeep +0 -0
  7. data/app/assets/images/appyantra_admin/breadcrumb_divider.png +0 -0
  8. data/app/assets/images/appyantra_admin/btn_submit.png +0 -0
  9. data/app/assets/images/appyantra_admin/btn_submit_2.png +0 -0
  10. data/app/assets/images/appyantra_admin/btn_view_site.png +0 -0
  11. data/app/assets/images/appyantra_admin/header_bg.png +0 -0
  12. data/app/assets/images/appyantra_admin/header_shadow.png +0 -0
  13. data/app/assets/images/appyantra_admin/icn_add_user.png +0 -0
  14. data/app/assets/images/appyantra_admin/icn_alert_error.png +0 -0
  15. data/app/assets/images/appyantra_admin/icn_alert_info.png +0 -0
  16. data/app/assets/images/appyantra_admin/icn_alert_success.png +0 -0
  17. data/app/assets/images/appyantra_admin/icn_alert_warning.png +0 -0
  18. data/app/assets/images/appyantra_admin/icn_audio.png +0 -0
  19. data/app/assets/images/appyantra_admin/icn_categories.png +0 -0
  20. data/app/assets/images/appyantra_admin/icn_edit.png +0 -0
  21. data/app/assets/images/appyantra_admin/icn_edit_article.png +0 -0
  22. data/app/assets/images/appyantra_admin/icn_folder.png +0 -0
  23. data/app/assets/images/appyantra_admin/icn_jump_back.png +0 -0
  24. data/app/assets/images/appyantra_admin/icn_logout.png +0 -0
  25. data/app/assets/images/appyantra_admin/icn_new_article.png +0 -0
  26. data/app/assets/images/appyantra_admin/icn_photo.png +0 -0
  27. data/app/assets/images/appyantra_admin/icn_profile.png +0 -0
  28. data/app/assets/images/appyantra_admin/icn_search.png +0 -0
  29. data/app/assets/images/appyantra_admin/icn_security.png +0 -0
  30. data/app/assets/images/appyantra_admin/icn_settings.png +0 -0
  31. data/app/assets/images/appyantra_admin/icn_tags.png +0 -0
  32. data/app/assets/images/appyantra_admin/icn_trash.png +0 -0
  33. data/app/assets/images/appyantra_admin/icn_user.png +0 -0
  34. data/app/assets/images/appyantra_admin/icn_video.png +0 -0
  35. data/app/assets/images/appyantra_admin/icn_view_users.png +0 -0
  36. data/app/assets/images/appyantra_admin/module_footer_bg.png +0 -0
  37. data/app/assets/images/appyantra_admin/post_message.png +0 -0
  38. data/app/assets/images/appyantra_admin/secondary_bar.png +0 -0
  39. data/app/assets/images/appyantra_admin/secondary_bar_shadow.png +0 -0
  40. data/app/assets/images/appyantra_admin/sidebar.png +0 -0
  41. data/app/assets/images/appyantra_admin/sidebar_divider.png +0 -0
  42. data/app/assets/images/appyantra_admin/sidebar_shadow.png +0 -0
  43. data/app/assets/images/appyantra_admin/table_sorter_header.png +0 -0
  44. data/app/assets/images/appyantra_admin/trash.png +0 -0
  45. data/app/assets/images/appyantra_admin/view.png +0 -0
  46. data/app/assets/images/website/600x300.gif +0 -0
  47. data/app/assets/images/website/alert-overlay.png +0 -0
  48. data/app/assets/images/website/bg.png +0 -0
  49. data/app/assets/images/website/link_bg.png +0 -0
  50. data/app/assets/images/website/link_border.png +0 -0
  51. data/app/assets/images/website/place_holder_img.png +0 -0
  52. data/app/assets/images/website/triangle.gif +0 -0
  53. data/app/assets/javascripts/appyantra_admin/admin_settings.js.coffee +3 -0
  54. data/app/assets/javascripts/appyantra_admin/admins/profiles.js.coffee +3 -0
  55. data/app/assets/javascripts/appyantra_admin/application.js +9 -0
  56. data/app/assets/javascripts/appyantra_admin/hideshow.js +39 -0
  57. data/app/assets/javascripts/appyantra_admin/home.js.coffee +3 -0
  58. data/app/assets/javascripts/appyantra_admin/jquery-1.5.2.min.js +16 -0
  59. data/app/assets/javascripts/appyantra_admin/jquery.equalHeight.js +20 -0
  60. data/app/assets/javascripts/appyantra_admin/jquery.tablesorter.min.js +4 -0
  61. data/app/assets/javascripts/appyantra_admin/managed_models.js.coffee +7 -0
  62. data/app/assets/javascripts/website/application.js +8 -0
  63. data/app/assets/javascripts/website/ie/DD_belatedPNG_0.0.8a-min.js +13 -0
  64. data/app/assets/javascripts/website/jquery.easing.1.3.js +205 -0
  65. data/app/assets/javascripts/website/jquery.roundabout-1.0.min.js +41 -0
  66. data/app/assets/javascripts/website/jquery.roundabout-shapes-1.1.js +150 -0
  67. data/app/assets/stylesheets/appyantra_admin/admin_settings.css.scss +3 -0
  68. data/app/assets/stylesheets/appyantra_admin/admins/profiles.css.scss +3 -0
  69. data/app/assets/stylesheets/appyantra_admin/application.css +7 -0
  70. data/app/assets/stylesheets/appyantra_admin/ie/ie.css +43 -0
  71. data/app/assets/stylesheets/appyantra_admin/main.css +1191 -0
  72. data/app/assets/stylesheets/appyantra_admin/managed_models.css.scss +3 -0
  73. data/app/assets/stylesheets/website/application.css +7 -0
  74. data/app/assets/stylesheets/website/reset.css +53 -0
  75. data/app/assets/stylesheets/website/styles.css +889 -0
  76. data/app/controllers/appyantra_admin/admin_settings_controller.rb +101 -0
  77. data/app/controllers/appyantra_admin/application_controller.rb +30 -0
  78. data/app/controllers/appyantra_admin/assets_controller.rb +91 -0
  79. data/app/controllers/appyantra_admin/home_controller.rb +24 -0
  80. data/app/controllers/appyantra_admin/pages_controller.rb +123 -0
  81. data/app/controllers/appyantra_admin/passwords_controller.rb +28 -0
  82. data/app/controllers/appyantra_admin/profiles_controller.rb +94 -0
  83. data/app/controllers/appyantra_admin/sessions_controller.rb +20 -0
  84. data/app/controllers/appyantra_admin/users/confirmations_controller.rb +15 -0
  85. data/app/controllers/appyantra_admin/users/passwords_controller.rb +16 -0
  86. data/app/controllers/appyantra_admin/users/registrations_controller.rb +16 -0
  87. data/app/controllers/appyantra_admin/users/sessions_controller.rb +15 -0
  88. data/app/controllers/appyantra_admin/users/user_paths.rb +33 -0
  89. data/app/controllers/appyantra_admin/users_controller.rb +92 -0
  90. data/app/helpers/appyantra_admin/admin_settings_helper.rb +9 -0
  91. data/app/helpers/appyantra_admin/application_helper.rb +73 -0
  92. data/app/helpers/appyantra_admin/pages_helper.rb +38 -0
  93. data/app/models/activity_feed.rb +5 -0
  94. data/app/models/activity_log_observer.rb +58 -0
  95. data/app/models/admin.rb +11 -0
  96. data/app/models/admin_setting.rb +74 -0
  97. data/app/models/encrypted_text.rb +20 -0
  98. data/app/models/link.rb +5 -0
  99. data/app/models/page.rb +24 -0
  100. data/app/models/page_keyword.rb +4 -0
  101. data/app/models/person.rb +14 -0
  102. data/app/models/short_text.rb +23 -0
  103. data/app/models/text.rb +11 -0
  104. data/app/models/user.rb +11 -0
  105. data/app/sweepers/appyantra_admin/pages_sweeper.rb +20 -0
  106. data/app/views/appyantra_admin/admin_settings/edit.html.haml +7 -0
  107. data/app/views/appyantra_admin/admin_settings/index.html.haml +56 -0
  108. data/app/views/appyantra_admin/admin_settings/mail_settings.html.haml +7 -0
  109. data/app/views/appyantra_admin/admin_settings/new.html.haml +7 -0
  110. data/app/views/appyantra_admin/assets/display.js.haml +3 -0
  111. data/app/views/appyantra_admin/assets/edit.html.haml +7 -0
  112. data/app/views/appyantra_admin/assets/new.html.haml +7 -0
  113. data/app/views/appyantra_admin/assets/show.html.haml +55 -0
  114. data/app/views/appyantra_admin/home/index.html.haml +74 -0
  115. data/app/views/appyantra_admin/mailer/reset_password_instructions.html.haml +6 -0
  116. data/app/views/appyantra_admin/mailer/unlock_instructions.html.haml +6 -0
  117. data/app/views/appyantra_admin/pages/_form.html.haml +40 -0
  118. data/app/views/appyantra_admin/pages/_page.html.haml +43 -0
  119. data/app/views/appyantra_admin/pages/edit.html.haml +19 -0
  120. data/app/views/appyantra_admin/pages/index.html.haml +46 -0
  121. data/app/views/appyantra_admin/pages/new.html.haml +7 -0
  122. data/app/views/appyantra_admin/pages/show.html.haml +1 -0
  123. data/app/views/appyantra_admin/passwords/edit.html.haml +15 -0
  124. data/app/views/appyantra_admin/passwords/new.html.haml +11 -0
  125. data/app/views/appyantra_admin/profiles/_admin_profile_form.html.haml +12 -0
  126. data/app/views/appyantra_admin/profiles/_admin_user.html.haml +11 -0
  127. data/app/views/appyantra_admin/profiles/edit.html.haml +18 -0
  128. data/app/views/appyantra_admin/profiles/index.html.haml +51 -0
  129. data/app/views/appyantra_admin/profiles/new.html.haml +6 -0
  130. data/app/views/appyantra_admin/profiles/show.html.haml +10 -0
  131. data/app/views/appyantra_admin/profiles/show.js.haml +3 -0
  132. data/app/views/appyantra_admin/sessions/new.html.haml +17 -0
  133. data/app/views/appyantra_admin/shared/_asset_item.html.haml +15 -0
  134. data/app/views/appyantra_admin/shared/_assets_list.html.haml +6 -0
  135. data/app/views/appyantra_admin/shared/_formtastic_semantic_form.html.haml +3 -0
  136. data/app/views/appyantra_admin/shared/_hash_form.html.haml +7 -0
  137. data/app/views/appyantra_admin/shared/_links.haml +6 -0
  138. data/app/views/appyantra_admin/shared/types/_encrypted_text.html.haml +1 -0
  139. data/app/views/appyantra_admin/shared/types/_link.html.haml +1 -0
  140. data/app/views/appyantra_admin/shared/types/_short_text.html.haml +1 -0
  141. data/app/views/appyantra_admin/shared/types/_text.html.haml +1 -0
  142. data/app/views/appyantra_admin/unlocks/new.html.haml +10 -0
  143. data/app/views/appyantra_admin/users/_form.html.haml +12 -0
  144. data/app/views/appyantra_admin/users/_user.html.haml +11 -0
  145. data/app/views/appyantra_admin/users/edit.html.haml +18 -0
  146. data/app/views/appyantra_admin/users/index.html.haml +54 -0
  147. data/app/views/appyantra_admin/users/new.html.haml +6 -0
  148. data/app/views/appyantra_admin/users/show.html.haml +10 -0
  149. data/app/views/appyantra_admin/users/show.js.haml +3 -0
  150. data/app/views/layouts/application.html.haml +98 -0
  151. data/app/views/layouts/appyantra_admin/application.html.haml +106 -0
  152. data/app/views/layouts/appyantra_admin/landing_page.html.haml +30 -0
  153. data/app/views/layouts/appyantra_admin/website.html.haml +96 -0
  154. data/app/views/pages/_google_analytics.html.haml +11 -0
  155. data/app/views/pages/_meta_tags.html.haml +2 -0
  156. data/app/views/pages/page.html.haml +4 -0
  157. data/app/views/users/confirmations/new.html.haml +26 -0
  158. data/app/views/users/mailer/confirmation_instructions.html.haml +4 -0
  159. data/app/views/users/mailer/reset_password_instructions.html.haml +6 -0
  160. data/app/views/users/mailer/unlock_instructions.html.haml +5 -0
  161. data/app/views/users/passwords/edit.html.haml +31 -0
  162. data/app/views/users/passwords/new.html.haml +22 -0
  163. data/app/views/users/registrations/edit.html.haml +42 -0
  164. data/app/views/users/registrations/new.html.haml +35 -0
  165. data/app/views/users/sessions/new.html.haml +26 -0
  166. data/app/views/website/index.html.haml +50 -0
  167. data/appyantra_admin.gemspec +24 -0
  168. data/config/initializers/devise.rb +209 -0
  169. data/config/initializers/formtastic.rb +82 -0
  170. data/config/initializers/mail_settings.rb +11 -0
  171. data/config/initializers/secret_token.rb +7 -0
  172. data/config/initializers/session_store.rb +8 -0
  173. data/config/initializers/wrap_parameters.rb +14 -0
  174. data/config/routes.rb +71 -0
  175. data/db/migrate/20120123093508_create_links.rb +15 -0
  176. data/db/migrate/20120123093916_create_texts.rb +10 -0
  177. data/db/migrate/20120123094124_create_admin_settings.rb +12 -0
  178. data/db/migrate/20120124202814_devise_create_admins.rb +25 -0
  179. data/db/migrate/20120125093505_add_name_to_admins.rb +6 -0
  180. data/db/migrate/20120217075442_devise_create_users.rb +25 -0
  181. data/db/migrate/20120217090326_add_name_to_users.rb +6 -0
  182. data/db/migrate/20120224210009_create_pages.rb +19 -0
  183. data/db/migrate/20120302084134_add_group_to_admin_settings.rb +5 -0
  184. data/db/migrate/20120309075847_create_encrypted_texts.rb +10 -0
  185. data/db/migrate/20120309075904_create_short_texts.rb +10 -0
  186. data/db/migrate/20120312234850_add_seo_to_pages.rb +5 -0
  187. data/db/migrate/20120312235235_create_keywords.rb +10 -0
  188. data/db/migrate/20120314063338_create_activity_feeds.rb +15 -0
  189. data/lib/appyantra_admin.rb +49 -0
  190. data/lib/appyantra_admin/crypto.rb +43 -0
  191. data/lib/appyantra_admin/engine.rb +17 -0
  192. data/lib/appyantra_admin/utils.rb +27 -0
  193. data/lib/appyantra_admin/version.rb +3 -0
  194. data/lib/generators/appyantra_admin/install/USAGE +8 -0
  195. data/lib/generators/appyantra_admin/install/install_generator.rb +34 -0
  196. data/lib/generators/appyantra_admin/install/templates/appyantra_admin.rb +28 -0
  197. data/lib/tasks/appyantra_admin_tasks.rake +47 -0
  198. data/script/rails +6 -0
  199. data/test/dummy/.gitignore +36 -0
  200. data/test/dummy/.rspec +1 -0
  201. data/test/dummy/Gemfile +43 -0
  202. data/test/dummy/Guardfile +19 -0
  203. data/test/dummy/README +261 -0
  204. data/test/dummy/Rakefile +8 -0
  205. data/test/dummy/app/assets/javascripts/application.js +9 -0
  206. data/test/dummy/app/assets/stylesheets/application.css +7 -0
  207. data/test/dummy/app/controllers/application_controller.rb +3 -0
  208. data/test/dummy/app/helpers/application_helper.rb +2 -0
  209. data/test/dummy/app/models/product.rb +2 -0
  210. data/test/dummy/config.ru +4 -0
  211. data/test/dummy/config/application.rb +48 -0
  212. data/test/dummy/config/boot.rb +6 -0
  213. data/test/dummy/config/environment.rb +5 -0
  214. data/test/dummy/config/environments/development.rb +30 -0
  215. data/test/dummy/config/environments/production.rb +60 -0
  216. data/test/dummy/config/environments/test.rb +39 -0
  217. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  218. data/test/dummy/config/initializers/inflections.rb +10 -0
  219. data/test/dummy/config/initializers/mime_types.rb +5 -0
  220. data/test/dummy/config/initializers/secret_token.rb +7 -0
  221. data/test/dummy/config/initializers/session_store.rb +8 -0
  222. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  223. data/test/dummy/config/locales/en.yml +5 -0
  224. data/test/dummy/config/routes.rb +4 -0
  225. data/test/dummy/db/migrate/20120213070715_create_products.rb +11 -0
  226. data/test/dummy/db/seeds.rb +7 -0
  227. data/test/dummy/doc/README_FOR_APP +2 -0
  228. data/test/dummy/public/404.html +26 -0
  229. data/test/dummy/public/422.html +26 -0
  230. data/test/dummy/public/500.html +26 -0
  231. data/test/dummy/public/favicon.ico +0 -0
  232. data/test/dummy/public/robots.txt +5 -0
  233. data/test/dummy/script/rails +6 -0
  234. data/test/dummy/spec/controllers/appyantra_admin/admin_settings_controller_spec.rb +56 -0
  235. data/test/dummy/spec/controllers/appyantra_admin/assets_controller_spec.rb +64 -0
  236. data/test/dummy/spec/controllers/appyantra_admin/home_controller_spec.rb +28 -0
  237. data/test/dummy/spec/controllers/appyantra_admin/passwords_controller_spec.rb +40 -0
  238. data/test/dummy/spec/controllers/appyantra_admin/profiles_controller_spec.rb +88 -0
  239. data/test/dummy/spec/controllers/appyantra_admin/sessions_controller_spec.rb +32 -0
  240. data/test/dummy/spec/factories.rb +55 -0
  241. data/test/dummy/spec/factories/products.rb +9 -0
  242. data/test/dummy/spec/helpers/appyantra_admin/application_helper_spec.rb +31 -0
  243. data/test/dummy/spec/models/admin_setting_spec.rb +22 -0
  244. data/test/dummy/spec/models/admin_spec.rb +10 -0
  245. data/test/dummy/spec/models/encrypted_text_spec.rb +13 -0
  246. data/test/dummy/spec/models/link_spec.rb +5 -0
  247. data/test/dummy/spec/models/text_spec.rb +5 -0
  248. data/test/dummy/spec/requests/appyantra_admin/admin_user_auth_spec.rb +54 -0
  249. data/test/dummy/spec/requests/appyantra_admin/dashboard_spec.rb +34 -0
  250. data/test/dummy/spec/requests/appyantra_admin/mailer_spec.rb +72 -0
  251. data/test/dummy/spec/requests/appyantra_admin/manage_pages_spec.rb +209 -0
  252. data/test/dummy/spec/requests/appyantra_admin/manage_website_users_spec.rb +97 -0
  253. data/test/dummy/spec/requests/appyantra_admin/website_users_spec.rb +25 -0
  254. data/test/dummy/spec/routing/sessions_routing_spec.rb +11 -0
  255. data/test/dummy/spec/spec_helper.rb +51 -0
  256. data/test/dummy/spec/support/capybara.rb +7 -0
  257. data/test/dummy/spec/support/controller_macros.rb +8 -0
  258. data/test/dummy/spec/support/integration_macros.rb +40 -0
  259. data/test/dummy/spec/support/load_routes.rb +5 -0
  260. data/test/dummy/spec/support/matchers/user_matcher.rb +13 -0
  261. metadata +428 -0
@@ -0,0 +1,101 @@
1
+ module AppyantraAdmin
2
+ class AdminSettingsController < ApplicationController
3
+
4
+ before_filter :authenticate_admin!
5
+ before_filter :init_type, only: [:create, :new]
6
+ # breadcrumbs
7
+ before_filter(only: [:index, :new, :edit, :new_mail_settings, :edit_mail_settings]) { |c| c.add_breadcrumb(['Home', main_app.appyantra_admin_home_path])}
8
+ before_filter(only: [:new, :edit, :new_mail_settings, :edit_mail_settings]) { |c| c.add_breadcrumb(['Settings', main_app.settings_path])}
9
+
10
+ def index
11
+ @page_title = 'Settings'
12
+ current_breadcrumb @page_title
13
+ end
14
+
15
+ def new
16
+ @page_title = 'New'
17
+ current_breadcrumb @page_title
18
+ @entity_object = @type_class.new
19
+ end
20
+
21
+ def create
22
+ type_object_name = get_object_name @type_class # e.g. Link -> link
23
+ type_object = @type_class.new(params[type_object_name.to_sym])
24
+ # TODO set name as slug
25
+ AdminSetting.create({ name: @setting_name, display_name: @setting_name, entity_type: @entity_type, entity_id: type_object.id, group: @group }) if type_object.save #TODO error handling
26
+
27
+ respond_to do |format|
28
+ format.html do |format|
29
+ flash[:notice] = "Setting was successfully added."
30
+ redirect_to main_app.settings_path
31
+ end
32
+ end
33
+ end
34
+
35
+ def update
36
+ setting = AdminSetting.find(params[:id])
37
+ type_object_name = get_object_name setting.entity.class
38
+ respond_to do |format|
39
+ if setting.entity.update_attributes(params[type_object_name.to_sym])
40
+ format.html do |format|
41
+ flash[:notice] = "Setting was successfully updated."
42
+ redirect_to main_app.settings_path
43
+ end
44
+ else
45
+ # TODO handle errors
46
+ end
47
+ end
48
+ end
49
+
50
+ def destroy
51
+ setting = AdminSetting.find(params[:id])
52
+ # TODO error handling
53
+ setting.entity.destroy
54
+ setting.destroy
55
+
56
+ respond_to do |format|
57
+ format.html do |format|
58
+ flash[:notice] = "Setting was successfully removed."
59
+ redirect_to main_app.settings_path
60
+ end
61
+ end
62
+ end
63
+
64
+ def edit
65
+ @page_title = 'Edit'
66
+ current_breadcrumb @page_title
67
+ @setting = AdminSetting.find(params[:id])
68
+ end
69
+
70
+ def new_mail_settings
71
+ @page_title = 'Mail Settings'
72
+ current_breadcrumb @page_title
73
+ @mail_settings = AdminSetting.initialize_group 'Mail', AppyantraAdmin.mail_settings_fields
74
+ render 'mail_settings'
75
+ end
76
+
77
+ def edit_mail_settings
78
+ @page_title = 'Mail Settings'
79
+ current_breadcrumb @page_title
80
+ @mail_settings = AdminSetting.group_settings 'Mail'
81
+ render 'mail_settings'
82
+ end
83
+
84
+ def update_mail_settings
85
+ mail_settings = params[:mail_settings]
86
+ AdminSetting.update_group_settings 'Mail', mail_settings
87
+ AppyantraAdmin.setup_mailer
88
+ redirect_to main_app.settings_path
89
+ end
90
+
91
+ private
92
+
93
+ def init_type
94
+ @setting_name = params[:setting_name] # e.g. website_url
95
+ @entity_type = params[:entity_type] # e.g. Link
96
+ @group = params[:group] # e.g. General
97
+ @type_class = eval @entity_type
98
+ end
99
+
100
+ end
101
+ end
@@ -0,0 +1,30 @@
1
+ module AppyantraAdmin
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery
4
+
5
+ before_filter :set_objects
6
+
7
+ def set_objects
8
+ @assets = AppyantraAdmin.assets
9
+ end
10
+
11
+ def get_object_name(asset_class)
12
+ asset_class.table_name.singularize
13
+ end
14
+
15
+ def add_breadcrumb(breadcrumb)
16
+ @breadcrumbs = Queue.new unless @breadcrumbs
17
+ @breadcrumbs << breadcrumb
18
+ end
19
+
20
+ def current_breadcrumb(breadcrumb)
21
+ @current_breadcrumb = breadcrumb
22
+ end
23
+
24
+ def asset_display_name(asset)
25
+ field_name = asset.class.column_names[1]
26
+ asset[field_name]
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,91 @@
1
+ module AppyantraAdmin
2
+ class AssetsController < ApplicationController
3
+ before_filter :authenticate_admin!
4
+ before_filter :set_asset
5
+ # breadcrumbs
6
+ before_filter(only: [:show, :new, :edit]) { |c| c.add_breadcrumb(['Home', main_app.appyantra_admin_home_path])}
7
+ before_filter(only: [:new, :edit]) { |c| c.add_breadcrumb([@asset_name.pluralize, "/appyantra_admin/assets/#{@asset_name}"])}
8
+
9
+ def show
10
+ @page_title = @asset_name.pluralize
11
+ current_breadcrumb @page_title
12
+ @asset_objects = @asset_class.all
13
+ @asset_object = @asset_class.find(params[:id]) if params[:id]
14
+ end
15
+
16
+ def new
17
+ @page_title = 'New'
18
+ current_breadcrumb @page_title
19
+ @asset_object = @asset_class.new
20
+ end
21
+
22
+ def create
23
+ asset_object_name = get_object_name @asset_class
24
+ @asset_object = @asset_class.new(params[asset_object_name.to_sym])
25
+
26
+ respond_to do |format|
27
+ if @asset_object.save
28
+ format.html do |format|
29
+ flash[:notice] = "#{@asset_name} was successfully created."
30
+ redirect_to "/appyantra_admin/assets/#{@asset_name}/#{@asset_object.id}/show"
31
+ end
32
+ else
33
+ # TODO handle errors
34
+ # format.html { render action: "new" }
35
+ end
36
+ end
37
+ end
38
+
39
+ def update
40
+ @asset_object = @asset_class.find(params[:id])
41
+ asset_object_name = @asset_class.table_name.singularize
42
+ respond_to do |format|
43
+ if @asset_object.update_attributes(params[asset_object_name.to_sym])
44
+ format.html do |format|
45
+ flash[:notice] = "#{@asset_name} was successfully updated."
46
+ redirect_to "/appyantra_admin/assets/#{@asset_name}/#{@asset_object.id}/show"
47
+ end
48
+ else
49
+ # TODO handle errors
50
+ end
51
+ end
52
+ end
53
+
54
+ def destroy
55
+ @asset_object = @asset_class.find(params[:id])
56
+ @asset_object.destroy
57
+
58
+ respond_to do |format|
59
+ format.html do |format|
60
+ flash[:notice] = "#{@asset_name} was successfully deleted."
61
+ redirect_to "/appyantra_admin/assets/#{@asset_name}"
62
+ end
63
+ end
64
+ end
65
+
66
+ def edit
67
+ asset_id = params[:id]
68
+ @asset_object = @asset_class.find(asset_id)
69
+ add_breadcrumb(["#{asset_display_name @asset_object}", "/appyantra_admin/assets/#{@asset_name}/#{asset_id}/show"])
70
+ @page_title = 'Edit'
71
+ current_breadcrumb @page_title
72
+ end
73
+
74
+ def display
75
+ @asset_object = @asset_class.find(params[:id])
76
+ respond_to do |format|
77
+ format.js
78
+ end
79
+ end
80
+
81
+ private
82
+
83
+ def set_asset
84
+ @asset_name = params[:asset_name]
85
+ raise "Asset #{@asset_name} cannot be managed through Admin" unless AppyantraAdmin.assets.include? @asset_name
86
+ @page_title = "Assets | #{@asset_name}"
87
+ @asset_class = eval @asset_name
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,24 @@
1
+ module AppyantraAdmin
2
+ class HomeController < ApplicationController
3
+ before_filter(except: [:index, :website]) { |c| c.authenticate_admin! }
4
+ before_filter(except: [:index]) { |c| c.add_breadcrumb(['Home', main_app.root_path])}
5
+
6
+ def index
7
+ if admin_signed_in?
8
+ @page_title = 'Home'
9
+ add_breadcrumb([@page_title, main_app.root_path])
10
+ current_breadcrumb 'Dashboard'
11
+ @assets = AppyantraAdmin.assets
12
+ @page_title = 'Home'
13
+ else
14
+ redirect_to main_app.new_admin_session_path
15
+ end
16
+ end
17
+
18
+ def website
19
+ @page_title = 'Website Home'
20
+ render '/website/index', layout: 'application'
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,123 @@
1
+ module AppyantraAdmin
2
+ class PagesController < ApplicationController
3
+
4
+ before_filter(except: [:display]) { |c| c.authenticate_admin! }
5
+
6
+ # breadcrumbs
7
+ before_filter(only: [:index, :new, :edit, :show]) { |c| c.add_breadcrumb(['Home', main_app.appyantra_admin_home_path])}
8
+ before_filter(only: [:new, :edit, :show]) { |c| c.add_breadcrumb(['Pages', main_app.appyantra_admin_pages_path])}
9
+
10
+ cache_sweeper AppyantraAdmin::PagesSweeper, only: [:update, :destroy, :update_keywords]
11
+ caches_page :display
12
+
13
+ def index
14
+ @page_title = 'Pages'
15
+ current_breadcrumb @page_title
16
+ @pages = Page.all
17
+ end
18
+
19
+ def new
20
+ @page_title = 'New Page'
21
+ current_breadcrumb 'New'
22
+ @page = Page.new
23
+ end
24
+
25
+ def create
26
+ page = Page.new(params[:page])
27
+ page.last_updated_by = current_admin
28
+ page.created_by = current_admin
29
+ page.slug = Page.generate_slug(page.title) if (page.slug == "" || page.slug.nil?)
30
+ respond_to do |format|
31
+ if page.save
32
+ format.html do |format|
33
+ flash[:notice] = "Website Page was successfully created"
34
+ redirect_to main_app.appyantra_admin_page_path(page)
35
+ end
36
+ else
37
+ # TODO handle errors
38
+ end
39
+ end
40
+ end
41
+
42
+ def show
43
+ @page = Page.find(params[:id])
44
+ @page_title = 'Page | ' + @page.title
45
+ current_breadcrumb @page.title
46
+ respond_to do |format|
47
+ format.html
48
+ end
49
+ end
50
+
51
+ def edit
52
+ @page = Page.find(params[:id])
53
+ @page_title = 'Pages | ' + @page.title
54
+ add_breadcrumb([@page.title, main_app.appyantra_admin_page_path(@page)])
55
+ current_breadcrumb 'Edit'
56
+ render 'edit'
57
+ end
58
+
59
+ def update
60
+ page = Page.find(params[:id])
61
+ page.last_updated_by = current_admin
62
+ params[:page][:slug] = Page.generate_slug(params[:page][:title]) if (params[:page][:slug] == "" || params[:page][:slug].nil?)
63
+ respond_to do |format|
64
+ if page.update_attributes(params[:page])
65
+ format.html do |format|
66
+ flash[:notice] = "Website Page was successfully updated"
67
+ redirect_to main_app.appyantra_admin_page_path(page)
68
+ end
69
+ else
70
+ # TODO handle errors
71
+ end
72
+ end
73
+ end
74
+
75
+ def destroy
76
+ page = Page.find(params[:id])
77
+ page.destroy
78
+ flash[:notice] = "Page was successfully deleted."
79
+ redirect_to main_app.appyantra_admin_pages_path
80
+ end
81
+
82
+ def display
83
+ page = Page.find_by_slug(params[:slug])
84
+ if page && page.published
85
+ @page = page
86
+ @page_title = page.title
87
+ page_layout = (page.layout == 'None' ? nil : page.layout)
88
+ render '/pages/page', layout: page_layout
89
+ else
90
+ redirect_to main_app.page_not_found_path
91
+ end
92
+ end
93
+
94
+ def update_keywords
95
+ page = Page.find(params[:id])
96
+ keywords_str = params[:keywords]
97
+ keywords = keywords_str.split(',')
98
+ # delete existing keywords
99
+ PageKeyword.where(page_id: page.id).delete_all
100
+ unless keywords.empty?
101
+ keywords.each do |keyword|
102
+ page_keyword = PageKeyword.new(keyword: keyword.strip)
103
+ page.keywords << page_keyword
104
+ end
105
+ end
106
+ if page.save
107
+ flash[:notice] = "Page keywords were successfully updated"
108
+ redirect_to main_app.appyantra_admin_page_path(page)
109
+ else
110
+ # TODO handle errors
111
+ end
112
+ end
113
+
114
+ def page_not_found
115
+ # TODO redirect to 404 page and better error handing
116
+ @page = Page.new
117
+ @page_title = 'Page not found'
118
+ @page.content = @page_title
119
+ render '/pages/page', layout: 'application'
120
+ end
121
+
122
+ end
123
+ end
@@ -0,0 +1,28 @@
1
+ module AppyantraAdmin
2
+ class PasswordsController < Devise::PasswordsController
3
+
4
+ layout "/appyantra_admin/landing_page"
5
+
6
+ private
7
+
8
+ def after_sending_reset_password_instructions_path_for(resource)
9
+ if resource.is_a?(Admin)
10
+ main_app.new_admin_session_path
11
+ else
12
+ # TODO make this configurable
13
+ main_app.new_admin_session_path
14
+ end
15
+ end
16
+
17
+ # TODO remove duplicate code (present in sessions controller also)
18
+ def after_sign_in_path_for(resource)
19
+ if resource.is_a?(Admin)
20
+ main_app.appyantra_admin_home_path
21
+ else
22
+ # TODO error page
23
+ main_app.appyantra_admin_home_path
24
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,94 @@
1
+ module AppyantraAdmin
2
+ class ProfilesController < ApplicationController
3
+
4
+ include AppyantraAdmin::Utils
5
+
6
+ before_filter :authenticate_admin!
7
+
8
+ # breadcrumbs
9
+ before_filter(only: [:index, :new, :edit, :show]) { |c| c.add_breadcrumb(['Home', main_app.appyantra_admin_home_path])}
10
+ before_filter(only: [:new, :edit, :show]) { |c| c.add_breadcrumb(['Admin Profiles', main_app.admin_profiles_path])}
11
+
12
+ def index
13
+ @page_title = 'Admin Profiles'
14
+ current_breadcrumb @page_title
15
+ @admin_users = Admin.all
16
+ render 'index'
17
+ end
18
+
19
+ def new
20
+ @page_title = 'New Admin User'
21
+ current_breadcrumb 'New'
22
+ @admin_user = Admin.new
23
+ end
24
+
25
+ def create
26
+ selected_admin_user = Admin.new(params[:admin_user])
27
+ # TODO random password
28
+ password = random_password
29
+ selected_admin_user.password = password
30
+ selected_admin_user.password_confirmation = password
31
+ respond_to do |format|
32
+ if selected_admin_user.save
33
+ format.html do |format|
34
+ flash[:notice] = "Admin user was successfully created"
35
+ redirect_to main_app.admin_profiles_path
36
+ end
37
+ else
38
+ # TODO handle errors
39
+ end
40
+ end
41
+ end
42
+
43
+ def show
44
+ @selected_admin_user = Admin.find(params[:id])
45
+ @page_title = 'Admin User | ' + @selected_admin_user.display_name
46
+ current_breadcrumb @selected_admin_user.display_name
47
+ respond_to do |format|
48
+ format.html
49
+ format.js
50
+ end
51
+ end
52
+
53
+ def edit
54
+ @admin_user = Admin.find(params[:id])
55
+ @page_title = 'Admin User | ' + @admin_user.display_name
56
+ add_breadcrumb([@admin_user.display_name, main_app.admin_profile_path(@admin_user)])
57
+ current_breadcrumb 'Edit'
58
+ render 'edit'
59
+ end
60
+
61
+ def update
62
+ selected_admin_user = Admin.find(params[:id])
63
+ respond_to do |format|
64
+ if selected_admin_user.update_attributes(params[:admin_user])
65
+ format.html do |format|
66
+ flash[:notice] = "Profile was successfully updated."
67
+ redirect_to main_app.admin_profiles_path
68
+ end
69
+ else
70
+ # TODO handle errors
71
+ end
72
+ end
73
+ end
74
+
75
+ def update_password
76
+ admin_user = Admin.find(params[:id])
77
+ password_params = params[:admin_user]
78
+ admin_user.reset_password!(password_params[:password], password_params[:password_confirmation])
79
+ # TODO Fix auto logout issue when password is changed
80
+ sign_in(current_admin, :bypass => true)
81
+ flash[:notice] = "Password was successfully updated."
82
+ redirect_to main_app.admin_profiles_path
83
+ # TODO handle errors
84
+ end
85
+
86
+ def destroy
87
+ admin_user = Admin.find(params[:id])
88
+ admin_user.destroy
89
+ flash[:notice] = "Admin was successfully deleted."
90
+ redirect_to main_app.admin_profiles_path
91
+ end
92
+
93
+ end
94
+ end