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,11 @@
1
+ unless AppyantraAdmin.rake_running
2
+ AppyantraAdmin.setup do |config|
3
+ # initialize mailer settings
4
+ config.mail_settings_fields = {'ShortText' => ['default_url_host', 'delivery_method',
5
+ 'address', 'port', 'domain',
6
+ 'user_name', 'authentication',
7
+ 'enable_starttls_auto'],
8
+ 'EncryptedText' => ['password']}
9
+ AppyantraAdmin.setup_mailer
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Rails.application.config.secret_token = 'c6474e90448bc6e51be6992d05c52d15654b3d6a23b96f40dcc09a80d082f197433adbbc032979454cbd19f4a09138b10de714001b4122af9d12c1e964073502'
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.session_store :cookie_store, key: '_admin_poc_session'
4
+
5
+ # Use the database for sessions instead of the cookie-based default,
6
+ # which shouldn't be used to store highly confidential information
7
+ # (create the session table with "rails generate session_migration")
8
+ # AdminPoc::Application.config.session_store :active_record_store
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json]
9
+ end
10
+
11
+ # Disable root element in JSON by default.
12
+ ActiveSupport.on_load(:active_record) do
13
+ self.include_root_in_json = false
14
+ end
@@ -0,0 +1,71 @@
1
+ Rails.application.routes.draw do
2
+
3
+ # To use this engine in your app use the following
4
+ # mount AppyantraAdmin::Engine => "/appyantra_admin"
5
+ match '/appyantra_admin' => 'appyantra_admin/home#index', :as => :appyantra_admin_home, :via => :get
6
+
7
+ devise_for :users, path: 'users',
8
+ controllers: { :sessions => 'appyantra_admin/users/sessions',
9
+ passwords: 'appyantra_admin/users/passwords',
10
+ registrations: 'appyantra_admin/users/registrations',
11
+ confirmations: 'appyantra_admin/users/confirmations'
12
+ }
13
+
14
+ devise_for :admin, path: 'appyantra_admin', controllers: { :sessions => 'appyantra_admin/sessions', passwords: 'appyantra_admin/passwords' }
15
+ # match '/appyantra_admin/sign_in' => 'appyantra_admin/sessions#new', :as => :new_admin_session, :via => :get
16
+ # match '/appyantra_admin/sign_in' => 'appyantra_admin/sessions#create', :as => :admin_session, :via => :post
17
+ # match '/appyantra_admin/sign_out' => 'appyantra_admin/sessions#destroy', :as => :destroy_admin_session, :via => :delete
18
+ # match '/appyantra_admin/password' => 'appyantra_admin/passwords#create', :as => :admin_password, :via => :post
19
+ # match '/appyantra_admin/password/new' => 'appyantra_admin/passwords#new', :as => :new_admin_password, :via => :get
20
+ # match '/appyantra_admin/password/edit' => 'appyantra_admin/passwords#edit', :as => :edit_admin_password, :via => :get
21
+ # match '/appyantra_admin/password' => 'appyantra_admin/passwords#edit', :as => :update_admin_password, :via => :put
22
+
23
+ # Admin profiles
24
+ match '/appyantra_admin/profiles/new' => 'appyantra_admin/profiles#new', :as => :new_admin, :via => :get
25
+ match '/appyantra_admin/profiles/:id' => 'appyantra_admin/profiles#show', :as => :admin_profile, :via => :get
26
+ match '/appyantra_admin/profiles/:id/edit' => 'appyantra_admin/profiles#edit', :as => :edit_admin_profile, :via => :get
27
+ match '/appyantra_admin/profiles/:id' => 'appyantra_admin/profiles#destroy', :as => :delete_admin_profile, :via => :delete
28
+ match '/appyantra_admin/profiles/:id' => 'appyantra_admin/profiles#update', :as => :update_admin_profile, :via => :put
29
+ match '/appyantra_admin/profiles/:id/password' => 'appyantra_admin/profiles#update_password', :as => :update_admin_password, :via => :put
30
+ match '/appyantra_admin/profiles' => 'appyantra_admin/profiles#index', :as => :admin_profiles, :via => :get
31
+ match '/appyantra_admin/profiles' => 'appyantra_admin/profiles#create', :as => :create_admin, :via => :post
32
+
33
+ # assets
34
+ match '/appyantra_admin/assets/:asset_name' => 'appyantra_admin/assets#show', :as => :assets, :via => :get
35
+ match '/appyantra_admin/assets/:asset_name/:id/show' => 'appyantra_admin/assets#show', :as => :show_asset, :via => :get
36
+ match '/appyantra_admin/assets/:asset_name/new' => 'appyantra_admin/assets#new', :as => :new_asset, :via => :get
37
+ match '/appyantra_admin/assets/:asset_name' => 'appyantra_admin/assets#create', :as => :create_asset, :via => :post
38
+ match '/appyantra_admin/assets/:asset_name/:id' => 'appyantra_admin/assets#destroy', :as => :delete_asset, :via => :delete
39
+ match '/appyantra_admin/assets/:asset_name/:id/display' => 'appyantra_admin/assets#display', :as => :display_asset, :via => :get
40
+ match '/appyantra_admin/assets/:asset_name/:id/edit' => 'appyantra_admin/assets#edit', :as => :edit_asset, :via => :get
41
+ match '/appyantra_admin/assets/:asset_name/:id' => 'appyantra_admin/assets#update', :as => :update_asset, :via => :put
42
+
43
+ # admin settings
44
+ match '/appyantra_admin/settings' => 'appyantra_admin/admin_settings#index', :as => :settings
45
+ match '/appyantra_admin/settings/new' => 'appyantra_admin/admin_settings#new', :as => :new_setting, :via => :post
46
+ match '/appyantra_admin/settings/:group/:entity_type/:setting_name' => 'appyantra_admin/admin_settings#create', :as => :create_setting, :via => :post
47
+ match '/appyantra_admin/settings/:id/edit' => 'appyantra_admin/admin_settings#edit', :as => :edit_setting, :via => :get
48
+ match '/appyantra_admin/settings/:id' => 'appyantra_admin/admin_settings#update', :as => :update_setting, :via => :put
49
+ match '/appyantra_admin/settings/:id' => 'appyantra_admin/admin_settings#destroy', :as => :delete_setting, :via => :delete
50
+ # mail settings
51
+ match '/appyantra_admin/mail_settings/edit' => 'appyantra_admin/admin_settings#edit_mail_settings', as: :edit_mail_settings, via: :get
52
+ match '/appyantra_admin/mail_settings/new' => 'appyantra_admin/admin_settings#new_mail_settings', as: :new_mail_settings, via: :get
53
+ match '/appyantra_admin/mail_settings' => 'appyantra_admin/admin_settings#update_mail_settings', as: :update_mail_settings, via: :put
54
+
55
+
56
+ # users
57
+ namespace :appyantra_admin do
58
+ resources :users
59
+ end
60
+ match '/appyantra_admin/users/:id/password' => 'appyantra_admin/users#update_password', :as => :update_user_password, :via => :put
61
+
62
+ # pages
63
+ namespace :appyantra_admin do
64
+ resources :pages
65
+ end
66
+
67
+ match '/appyantra_admin/pages/:id/keywords' => 'appyantra_admin/pages#update_keywords', as: :page_keywords, via: :put
68
+ match '/pages/:slug' => 'appyantra_admin/pages#display', as: :display_page, via: :get
69
+ match '/page_not_found' => 'appyantra_admin/pages#page_not_found', as: :page_not_found, via: :get
70
+
71
+ end
@@ -0,0 +1,15 @@
1
+ class CreateLinks < ActiveRecord::Migration
2
+ def change
3
+ create_table :links do |t|
4
+ t.string :name
5
+ t.string :text
6
+ t.string :href
7
+ t.string :rel
8
+ t.string :target
9
+ t.string :link_type
10
+ t.string :title
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ class CreateTexts < ActiveRecord::Migration
2
+ def change
3
+ create_table :texts do |t|
4
+ t.string :name
5
+ t.text :value
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ class CreateAdminSettings < ActiveRecord::Migration
2
+ def change
3
+ create_table :admin_settings do |t|
4
+ t.string :name
5
+ t.string :display_name
6
+ t.string :entity_type
7
+ t.integer :entity_id
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ class DeviseCreateAdmins < ActiveRecord::Migration
2
+ def change
3
+ create_table(:admins) do |t|
4
+ t.database_authenticatable :null => false
5
+ t.recoverable
6
+ t.rememberable
7
+ t.trackable
8
+
9
+ # t.encryptable
10
+ # t.confirmable
11
+ # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
12
+ # t.token_authenticatable
13
+
14
+
15
+ t.timestamps
16
+ end
17
+
18
+ add_index :admins, :email, :unique => true
19
+ add_index :admins, :reset_password_token, :unique => true
20
+ # add_index :admins, :confirmation_token, :unique => true
21
+ # add_index :admins, :unlock_token, :unique => true
22
+ # add_index :admins, :authentication_token, :unique => true
23
+ end
24
+
25
+ end
@@ -0,0 +1,6 @@
1
+ class AddNameToAdmins < ActiveRecord::Migration
2
+ def change
3
+ add_column :admins, :first_name, :string
4
+ add_column :admins, :last_name, :string
5
+ end
6
+ end
@@ -0,0 +1,25 @@
1
+ class DeviseCreateUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table(:users) do |t|
4
+ t.database_authenticatable :null => false
5
+ t.recoverable
6
+ t.rememberable
7
+ t.trackable
8
+
9
+ # t.encryptable
10
+ t.confirmable
11
+ # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
12
+ # t.token_authenticatable
13
+
14
+
15
+ t.timestamps
16
+ end
17
+
18
+ add_index :users, :email, :unique => true
19
+ add_index :users, :reset_password_token, :unique => true
20
+ add_index :users, :confirmation_token, :unique => true
21
+ # add_index :users, :unlock_token, :unique => true
22
+ # add_index :users, :authentication_token, :unique => true
23
+ end
24
+
25
+ end
@@ -0,0 +1,6 @@
1
+ class AddNameToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :first_name, :string
4
+ add_column :users, :last_name, :string
5
+ end
6
+ end
@@ -0,0 +1,19 @@
1
+ class CreatePages < ActiveRecord::Migration
2
+ def change
3
+ create_table :pages do |t|
4
+ t.string :title
5
+ t.string :slug
6
+ t.text :content
7
+ t.boolean :published
8
+ t.integer :seo_settings_id
9
+ t.string :layout
10
+ t.string :category
11
+ t.integer :fb_sharing_id
12
+ t.integer :last_updated_by_id
13
+ t.integer :created_by_id
14
+ t.string :caching_strategy
15
+
16
+ t.timestamps
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ class AddGroupToAdminSettings < ActiveRecord::Migration
2
+ def change
3
+ add_column :admin_settings, :group, :string
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class CreateEncryptedTexts < ActiveRecord::Migration
2
+ def change
3
+ create_table :encrypted_texts do |t|
4
+ t.string :name
5
+ t.binary :value
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ class CreateShortTexts < ActiveRecord::Migration
2
+ def change
3
+ create_table :short_texts do |t|
4
+ t.string :name
5
+ t.string :value
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class AddSeoToPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :pages, :description, :string
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class CreateKeywords < ActiveRecord::Migration
2
+ def change
3
+ create_table :page_keywords do |t|
4
+ t.integer :page_id
5
+ t.string :keyword
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ class CreateActivityFeeds < ActiveRecord::Migration
2
+ def change
3
+ create_table :activity_feeds do |t|
4
+ t.string :item_type
5
+ t.integer :item_id
6
+ t.string :item
7
+ t.string :actor
8
+ t.string :actor_type
9
+ t.integer :actor_id
10
+ t.string :activity
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ require 'devise'
2
+ require 'formtastic'
3
+ require 'haml'
4
+ require 'appyantra_admin/utils'
5
+ require 'appyantra_admin/crypto'
6
+ require "appyantra_admin/engine" if defined?(Rails)
7
+
8
+ module AppyantraAdmin
9
+ # model names that can be managed as assets from the Admin dashboard.
10
+ mattr_accessor :assets
11
+ @@assets = []
12
+
13
+ # mail setting fields
14
+ mattr_accessor :mail_settings_fields
15
+ @@mail_settings_fields = {}
16
+
17
+ # to check if rake is running
18
+ mattr_accessor :rake_running
19
+ @@rake_running = false
20
+
21
+ # layouts for pages
22
+ mattr_accessor :page_layouts
23
+ @@page_layouts = nil
24
+
25
+ # setup for AppYantra Admin to be used in the initializer
26
+ def self.setup
27
+ yield self
28
+ end
29
+
30
+ def self.setup_mailer
31
+ return unless ActiveRecord::Base.connection.table_exists? 'admin_settings'
32
+ # get the mailer settings from the DB and set them in ActionMailer
33
+ mailer_settings = AdminSetting.group_settings 'Mail'
34
+ ActionMailer::Base.default_url_options = { :host => 'localhost:3000' }
35
+ unless mailer_settings.empty?
36
+ ActionMailer::Base.default_url_options = { :host => mailer_settings[:default_url_host] }
37
+ ActionMailer::Base.delivery_method = mailer_settings[:delivery_method].to_sym if mailer_settings[:delivery_method]
38
+ ActionMailer::Base.smtp_settings = {
39
+ :address => mailer_settings[:address],
40
+ :port => (mailer_settings[:port] || "587").to_i,
41
+ :domain => mailer_settings[:domain],
42
+ :user_name => mailer_settings[:user_name],
43
+ :password => mailer_settings[:password],
44
+ :authentication => mailer_settings[:authentication],
45
+ :enable_starttls_auto => (mailer_settings[:enable_starttls_auto] == "true")
46
+ }
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,43 @@
1
+ require 'openssl'
2
+ require 'digest/sha2'
3
+ require 'base64'
4
+
5
+ module AppyantraAdmin
6
+ module Crypto
7
+
8
+ # Symmetric-key encryption
9
+ mattr_accessor :key_phrase
10
+ @@key_phrase = 'Some random phrase'
11
+
12
+ SHA256 = Digest::SHA2.new(256)
13
+ AES = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
14
+ IV = "I" * 32
15
+ KEY = SHA256.digest(self.key_phrase)
16
+
17
+ # Encrypts the payload
18
+ def self.encrypt(payload)
19
+ AES.encrypt
20
+ AES.key = KEY
21
+ AES.iv = IV
22
+ AES.update(payload) + AES.final
23
+ end
24
+
25
+ # Decrypts the encrypted data
26
+ def self.decrypt(encrypted_data)
27
+ AES.decrypt
28
+ AES.key = KEY
29
+ AES.iv = IV
30
+ AES.update(encrypted_data) + AES.final
31
+ end
32
+
33
+ def self.encrypt_to_base64(data)
34
+ return unless data
35
+ Base64.encode64(encrypt(data))
36
+ end
37
+
38
+ def self.decrypt_from_base64(data)
39
+ return unless data
40
+ decrypt(Base64.decode64(data))
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ module AppyantraAdmin
2
+ class Engine < Rails::Engine
3
+ isolate_namespace AppyantraAdmin
4
+
5
+ config.to_prepare do
6
+ ApplicationController.helper(ApplicationHelper)
7
+ SessionsController.helper(ApplicationHelper)
8
+ PasswordsController.helper(ApplicationHelper)
9
+ end
10
+
11
+ # ensure that sweepers are loaded
12
+ config.autoload_paths << "#{config.root}/app/appyantra_admin/sweepers"
13
+
14
+ # register record observers
15
+ config.active_record.observers = :activity_log_observer
16
+ end
17
+ end
@@ -0,0 +1,27 @@
1
+ module AppyantraAdmin
2
+ module Utils
3
+ # generates a random password
4
+ def random_password(size=10)
5
+ chars = (('a'..'z').to_a + ('0'..'9').to_a) - %w(i o 0 1 l 0)
6
+ (1..size).collect{|a| chars[rand(chars.size)] }.join
7
+ end
8
+
9
+ # returns the list of available page layouts
10
+ def list_page_layouts(layouts=[])
11
+ if layouts.empty?
12
+ layouts_path = Rails.root + "app/views/layouts"
13
+ if Dir.exists? layouts_path
14
+ Dir.foreach(layouts_path) do |file_name|
15
+ if file_name.include? '.html.haml'
16
+ layouts << File.basename(file_name,'.html.haml')
17
+ elsif file_name.include? '.html.erb'
18
+ layouts << File.basename(file_name,'.html.erb')
19
+ end
20
+ end
21
+ end
22
+ layouts << 'application' if layouts.empty?
23
+ end
24
+ layouts
25
+ end
26
+ end
27
+ end