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.
- data/.gitignore +6 -0
- data/Gemfile +24 -0
- data/MIT-LICENSE +20 -0
- data/README.md +101 -0
- data/Rakefile +26 -0
- data/app/assets/images/appyantra_admin/.gitkeep +0 -0
- data/app/assets/images/appyantra_admin/breadcrumb_divider.png +0 -0
- data/app/assets/images/appyantra_admin/btn_submit.png +0 -0
- data/app/assets/images/appyantra_admin/btn_submit_2.png +0 -0
- data/app/assets/images/appyantra_admin/btn_view_site.png +0 -0
- data/app/assets/images/appyantra_admin/header_bg.png +0 -0
- data/app/assets/images/appyantra_admin/header_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/icn_add_user.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_error.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_info.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_success.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_warning.png +0 -0
- data/app/assets/images/appyantra_admin/icn_audio.png +0 -0
- data/app/assets/images/appyantra_admin/icn_categories.png +0 -0
- data/app/assets/images/appyantra_admin/icn_edit.png +0 -0
- data/app/assets/images/appyantra_admin/icn_edit_article.png +0 -0
- data/app/assets/images/appyantra_admin/icn_folder.png +0 -0
- data/app/assets/images/appyantra_admin/icn_jump_back.png +0 -0
- data/app/assets/images/appyantra_admin/icn_logout.png +0 -0
- data/app/assets/images/appyantra_admin/icn_new_article.png +0 -0
- data/app/assets/images/appyantra_admin/icn_photo.png +0 -0
- data/app/assets/images/appyantra_admin/icn_profile.png +0 -0
- data/app/assets/images/appyantra_admin/icn_search.png +0 -0
- data/app/assets/images/appyantra_admin/icn_security.png +0 -0
- data/app/assets/images/appyantra_admin/icn_settings.png +0 -0
- data/app/assets/images/appyantra_admin/icn_tags.png +0 -0
- data/app/assets/images/appyantra_admin/icn_trash.png +0 -0
- data/app/assets/images/appyantra_admin/icn_user.png +0 -0
- data/app/assets/images/appyantra_admin/icn_video.png +0 -0
- data/app/assets/images/appyantra_admin/icn_view_users.png +0 -0
- data/app/assets/images/appyantra_admin/module_footer_bg.png +0 -0
- data/app/assets/images/appyantra_admin/post_message.png +0 -0
- data/app/assets/images/appyantra_admin/secondary_bar.png +0 -0
- data/app/assets/images/appyantra_admin/secondary_bar_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar_divider.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/table_sorter_header.png +0 -0
- data/app/assets/images/appyantra_admin/trash.png +0 -0
- data/app/assets/images/appyantra_admin/view.png +0 -0
- data/app/assets/images/website/600x300.gif +0 -0
- data/app/assets/images/website/alert-overlay.png +0 -0
- data/app/assets/images/website/bg.png +0 -0
- data/app/assets/images/website/link_bg.png +0 -0
- data/app/assets/images/website/link_border.png +0 -0
- data/app/assets/images/website/place_holder_img.png +0 -0
- data/app/assets/images/website/triangle.gif +0 -0
- data/app/assets/javascripts/appyantra_admin/admin_settings.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/admins/profiles.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/application.js +9 -0
- data/app/assets/javascripts/appyantra_admin/hideshow.js +39 -0
- data/app/assets/javascripts/appyantra_admin/home.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/jquery-1.5.2.min.js +16 -0
- data/app/assets/javascripts/appyantra_admin/jquery.equalHeight.js +20 -0
- data/app/assets/javascripts/appyantra_admin/jquery.tablesorter.min.js +4 -0
- data/app/assets/javascripts/appyantra_admin/managed_models.js.coffee +7 -0
- data/app/assets/javascripts/website/application.js +8 -0
- data/app/assets/javascripts/website/ie/DD_belatedPNG_0.0.8a-min.js +13 -0
- data/app/assets/javascripts/website/jquery.easing.1.3.js +205 -0
- data/app/assets/javascripts/website/jquery.roundabout-1.0.min.js +41 -0
- data/app/assets/javascripts/website/jquery.roundabout-shapes-1.1.js +150 -0
- data/app/assets/stylesheets/appyantra_admin/admin_settings.css.scss +3 -0
- data/app/assets/stylesheets/appyantra_admin/admins/profiles.css.scss +3 -0
- data/app/assets/stylesheets/appyantra_admin/application.css +7 -0
- data/app/assets/stylesheets/appyantra_admin/ie/ie.css +43 -0
- data/app/assets/stylesheets/appyantra_admin/main.css +1191 -0
- data/app/assets/stylesheets/appyantra_admin/managed_models.css.scss +3 -0
- data/app/assets/stylesheets/website/application.css +7 -0
- data/app/assets/stylesheets/website/reset.css +53 -0
- data/app/assets/stylesheets/website/styles.css +889 -0
- data/app/controllers/appyantra_admin/admin_settings_controller.rb +101 -0
- data/app/controllers/appyantra_admin/application_controller.rb +30 -0
- data/app/controllers/appyantra_admin/assets_controller.rb +91 -0
- data/app/controllers/appyantra_admin/home_controller.rb +24 -0
- data/app/controllers/appyantra_admin/pages_controller.rb +123 -0
- data/app/controllers/appyantra_admin/passwords_controller.rb +28 -0
- data/app/controllers/appyantra_admin/profiles_controller.rb +94 -0
- data/app/controllers/appyantra_admin/sessions_controller.rb +20 -0
- data/app/controllers/appyantra_admin/users/confirmations_controller.rb +15 -0
- data/app/controllers/appyantra_admin/users/passwords_controller.rb +16 -0
- data/app/controllers/appyantra_admin/users/registrations_controller.rb +16 -0
- data/app/controllers/appyantra_admin/users/sessions_controller.rb +15 -0
- data/app/controllers/appyantra_admin/users/user_paths.rb +33 -0
- data/app/controllers/appyantra_admin/users_controller.rb +92 -0
- data/app/helpers/appyantra_admin/admin_settings_helper.rb +9 -0
- data/app/helpers/appyantra_admin/application_helper.rb +73 -0
- data/app/helpers/appyantra_admin/pages_helper.rb +38 -0
- data/app/models/activity_feed.rb +5 -0
- data/app/models/activity_log_observer.rb +58 -0
- data/app/models/admin.rb +11 -0
- data/app/models/admin_setting.rb +74 -0
- data/app/models/encrypted_text.rb +20 -0
- data/app/models/link.rb +5 -0
- data/app/models/page.rb +24 -0
- data/app/models/page_keyword.rb +4 -0
- data/app/models/person.rb +14 -0
- data/app/models/short_text.rb +23 -0
- data/app/models/text.rb +11 -0
- data/app/models/user.rb +11 -0
- data/app/sweepers/appyantra_admin/pages_sweeper.rb +20 -0
- data/app/views/appyantra_admin/admin_settings/edit.html.haml +7 -0
- data/app/views/appyantra_admin/admin_settings/index.html.haml +56 -0
- data/app/views/appyantra_admin/admin_settings/mail_settings.html.haml +7 -0
- data/app/views/appyantra_admin/admin_settings/new.html.haml +7 -0
- data/app/views/appyantra_admin/assets/display.js.haml +3 -0
- data/app/views/appyantra_admin/assets/edit.html.haml +7 -0
- data/app/views/appyantra_admin/assets/new.html.haml +7 -0
- data/app/views/appyantra_admin/assets/show.html.haml +55 -0
- data/app/views/appyantra_admin/home/index.html.haml +74 -0
- data/app/views/appyantra_admin/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/appyantra_admin/mailer/unlock_instructions.html.haml +6 -0
- data/app/views/appyantra_admin/pages/_form.html.haml +40 -0
- data/app/views/appyantra_admin/pages/_page.html.haml +43 -0
- data/app/views/appyantra_admin/pages/edit.html.haml +19 -0
- data/app/views/appyantra_admin/pages/index.html.haml +46 -0
- data/app/views/appyantra_admin/pages/new.html.haml +7 -0
- data/app/views/appyantra_admin/pages/show.html.haml +1 -0
- data/app/views/appyantra_admin/passwords/edit.html.haml +15 -0
- data/app/views/appyantra_admin/passwords/new.html.haml +11 -0
- data/app/views/appyantra_admin/profiles/_admin_profile_form.html.haml +12 -0
- data/app/views/appyantra_admin/profiles/_admin_user.html.haml +11 -0
- data/app/views/appyantra_admin/profiles/edit.html.haml +18 -0
- data/app/views/appyantra_admin/profiles/index.html.haml +51 -0
- data/app/views/appyantra_admin/profiles/new.html.haml +6 -0
- data/app/views/appyantra_admin/profiles/show.html.haml +10 -0
- data/app/views/appyantra_admin/profiles/show.js.haml +3 -0
- data/app/views/appyantra_admin/sessions/new.html.haml +17 -0
- data/app/views/appyantra_admin/shared/_asset_item.html.haml +15 -0
- data/app/views/appyantra_admin/shared/_assets_list.html.haml +6 -0
- data/app/views/appyantra_admin/shared/_formtastic_semantic_form.html.haml +3 -0
- data/app/views/appyantra_admin/shared/_hash_form.html.haml +7 -0
- data/app/views/appyantra_admin/shared/_links.haml +6 -0
- data/app/views/appyantra_admin/shared/types/_encrypted_text.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_link.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_short_text.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_text.html.haml +1 -0
- data/app/views/appyantra_admin/unlocks/new.html.haml +10 -0
- data/app/views/appyantra_admin/users/_form.html.haml +12 -0
- data/app/views/appyantra_admin/users/_user.html.haml +11 -0
- data/app/views/appyantra_admin/users/edit.html.haml +18 -0
- data/app/views/appyantra_admin/users/index.html.haml +54 -0
- data/app/views/appyantra_admin/users/new.html.haml +6 -0
- data/app/views/appyantra_admin/users/show.html.haml +10 -0
- data/app/views/appyantra_admin/users/show.js.haml +3 -0
- data/app/views/layouts/application.html.haml +98 -0
- data/app/views/layouts/appyantra_admin/application.html.haml +106 -0
- data/app/views/layouts/appyantra_admin/landing_page.html.haml +30 -0
- data/app/views/layouts/appyantra_admin/website.html.haml +96 -0
- data/app/views/pages/_google_analytics.html.haml +11 -0
- data/app/views/pages/_meta_tags.html.haml +2 -0
- data/app/views/pages/page.html.haml +4 -0
- data/app/views/users/confirmations/new.html.haml +26 -0
- data/app/views/users/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/users/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/users/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/users/passwords/edit.html.haml +31 -0
- data/app/views/users/passwords/new.html.haml +22 -0
- data/app/views/users/registrations/edit.html.haml +42 -0
- data/app/views/users/registrations/new.html.haml +35 -0
- data/app/views/users/sessions/new.html.haml +26 -0
- data/app/views/website/index.html.haml +50 -0
- data/appyantra_admin.gemspec +24 -0
- data/config/initializers/devise.rb +209 -0
- data/config/initializers/formtastic.rb +82 -0
- data/config/initializers/mail_settings.rb +11 -0
- data/config/initializers/secret_token.rb +7 -0
- data/config/initializers/session_store.rb +8 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/routes.rb +71 -0
- data/db/migrate/20120123093508_create_links.rb +15 -0
- data/db/migrate/20120123093916_create_texts.rb +10 -0
- data/db/migrate/20120123094124_create_admin_settings.rb +12 -0
- data/db/migrate/20120124202814_devise_create_admins.rb +25 -0
- data/db/migrate/20120125093505_add_name_to_admins.rb +6 -0
- data/db/migrate/20120217075442_devise_create_users.rb +25 -0
- data/db/migrate/20120217090326_add_name_to_users.rb +6 -0
- data/db/migrate/20120224210009_create_pages.rb +19 -0
- data/db/migrate/20120302084134_add_group_to_admin_settings.rb +5 -0
- data/db/migrate/20120309075847_create_encrypted_texts.rb +10 -0
- data/db/migrate/20120309075904_create_short_texts.rb +10 -0
- data/db/migrate/20120312234850_add_seo_to_pages.rb +5 -0
- data/db/migrate/20120312235235_create_keywords.rb +10 -0
- data/db/migrate/20120314063338_create_activity_feeds.rb +15 -0
- data/lib/appyantra_admin.rb +49 -0
- data/lib/appyantra_admin/crypto.rb +43 -0
- data/lib/appyantra_admin/engine.rb +17 -0
- data/lib/appyantra_admin/utils.rb +27 -0
- data/lib/appyantra_admin/version.rb +3 -0
- data/lib/generators/appyantra_admin/install/USAGE +8 -0
- data/lib/generators/appyantra_admin/install/install_generator.rb +34 -0
- data/lib/generators/appyantra_admin/install/templates/appyantra_admin.rb +28 -0
- data/lib/tasks/appyantra_admin_tasks.rake +47 -0
- data/script/rails +6 -0
- data/test/dummy/.gitignore +36 -0
- data/test/dummy/.rspec +1 -0
- data/test/dummy/Gemfile +43 -0
- data/test/dummy/Guardfile +19 -0
- data/test/dummy/README +261 -0
- data/test/dummy/Rakefile +8 -0
- data/test/dummy/app/assets/javascripts/application.js +9 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/product.rb +2 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +48 -0
- data/test/dummy/config/boot.rb +6 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/migrate/20120213070715_create_products.rb +11 -0
- data/test/dummy/db/seeds.rb +7 -0
- data/test/dummy/doc/README_FOR_APP +2 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/robots.txt +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/spec/controllers/appyantra_admin/admin_settings_controller_spec.rb +56 -0
- data/test/dummy/spec/controllers/appyantra_admin/assets_controller_spec.rb +64 -0
- data/test/dummy/spec/controllers/appyantra_admin/home_controller_spec.rb +28 -0
- data/test/dummy/spec/controllers/appyantra_admin/passwords_controller_spec.rb +40 -0
- data/test/dummy/spec/controllers/appyantra_admin/profiles_controller_spec.rb +88 -0
- data/test/dummy/spec/controllers/appyantra_admin/sessions_controller_spec.rb +32 -0
- data/test/dummy/spec/factories.rb +55 -0
- data/test/dummy/spec/factories/products.rb +9 -0
- data/test/dummy/spec/helpers/appyantra_admin/application_helper_spec.rb +31 -0
- data/test/dummy/spec/models/admin_setting_spec.rb +22 -0
- data/test/dummy/spec/models/admin_spec.rb +10 -0
- data/test/dummy/spec/models/encrypted_text_spec.rb +13 -0
- data/test/dummy/spec/models/link_spec.rb +5 -0
- data/test/dummy/spec/models/text_spec.rb +5 -0
- data/test/dummy/spec/requests/appyantra_admin/admin_user_auth_spec.rb +54 -0
- data/test/dummy/spec/requests/appyantra_admin/dashboard_spec.rb +34 -0
- data/test/dummy/spec/requests/appyantra_admin/mailer_spec.rb +72 -0
- data/test/dummy/spec/requests/appyantra_admin/manage_pages_spec.rb +209 -0
- data/test/dummy/spec/requests/appyantra_admin/manage_website_users_spec.rb +97 -0
- data/test/dummy/spec/requests/appyantra_admin/website_users_spec.rb +25 -0
- data/test/dummy/spec/routing/sessions_routing_spec.rb +11 -0
- data/test/dummy/spec/spec_helper.rb +51 -0
- data/test/dummy/spec/support/capybara.rb +7 -0
- data/test/dummy/spec/support/controller_macros.rb +8 -0
- data/test/dummy/spec/support/integration_macros.rb +40 -0
- data/test/dummy/spec/support/load_routes.rb +5 -0
- data/test/dummy/spec/support/matchers/user_matcher.rb +13 -0
- metadata +428 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class SessionsController < Devise::SessionsController
|
|
3
|
+
|
|
4
|
+
layout '/appyantra_admin/application'
|
|
5
|
+
layout '/appyantra_admin/landing_page', only: [:new]
|
|
6
|
+
|
|
7
|
+
before_filter(only: [:new]) { @page_title = 'Sign In'}
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def after_sign_out_path_for(resource)
|
|
12
|
+
main_app.new_admin_session_path
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def after_sign_in_path_for(resource)
|
|
16
|
+
main_app.appyantra_admin_home_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class Users::ConfirmationsController < Devise::ConfirmationsController
|
|
3
|
+
|
|
4
|
+
layout 'application'
|
|
5
|
+
|
|
6
|
+
before_filter(only: [:new]) { @page_title = 'Resend confirmation instructions'}
|
|
7
|
+
|
|
8
|
+
helper AppyantraAdmin::ApplicationHelper
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
include AppyantraAdmin::Users::UserPaths
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class Users::PasswordsController < Devise::PasswordsController
|
|
3
|
+
|
|
4
|
+
layout 'application'
|
|
5
|
+
|
|
6
|
+
before_filter(only: [:edit]) { @page_title = 'Change your password'}
|
|
7
|
+
before_filter(only: [:new]) { @page_title = 'Forgot your password?'}
|
|
8
|
+
|
|
9
|
+
helper AppyantraAdmin::ApplicationHelper
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
include AppyantraAdmin::Users::UserPaths
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class Users::RegistrationsController < Devise::RegistrationsController
|
|
3
|
+
|
|
4
|
+
layout 'application'
|
|
5
|
+
|
|
6
|
+
before_filter(only: [:new]) { @page_title = 'Sign Up'}
|
|
7
|
+
before_filter(only: [:edit]) { @page_title = 'Update Account'}
|
|
8
|
+
|
|
9
|
+
helper AppyantraAdmin::ApplicationHelper
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
include AppyantraAdmin::Users::UserPaths
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class Users::SessionsController < Devise::SessionsController
|
|
3
|
+
|
|
4
|
+
layout 'application'
|
|
5
|
+
|
|
6
|
+
before_filter(only: [:new]) { @page_title = 'Sign In' }
|
|
7
|
+
|
|
8
|
+
helper AppyantraAdmin::ApplicationHelper
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
include AppyantraAdmin::Users::UserPaths
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
module Users::UserPaths
|
|
3
|
+
|
|
4
|
+
def after_sign_out_path_for(resource)
|
|
5
|
+
main_app.root_path
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def after_sign_in_path_for(resource)
|
|
9
|
+
main_app.root_path
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def after_inactive_sign_up_path_for(resource)
|
|
13
|
+
main_app.root_path
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def after_update_path_for(resource)
|
|
17
|
+
main_app.root_path
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def after_resending_confirmation_instructions_path_for(resource_name)
|
|
21
|
+
main_app.root_path
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def after_confirmation_path_for(resource_name, resource)
|
|
25
|
+
main_app.root_path
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def after_sending_reset_password_instructions_path_for(resource_name)
|
|
29
|
+
main_app.root_path
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
module AppyantraAdmin
|
|
2
|
+
class UsersController < 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(['User Profiles', main_app.appyantra_admin_users_path])}
|
|
11
|
+
|
|
12
|
+
def index
|
|
13
|
+
@page_title = 'User Profiles'
|
|
14
|
+
current_breadcrumb @page_title
|
|
15
|
+
@users = User.all
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def new
|
|
19
|
+
@page_title = 'New User'
|
|
20
|
+
current_breadcrumb 'New'
|
|
21
|
+
@user = User.new
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def create
|
|
25
|
+
selected_user = User.new(params[:user])
|
|
26
|
+
password = random_password
|
|
27
|
+
selected_user.password = password
|
|
28
|
+
selected_user.password_confirmation = password
|
|
29
|
+
respond_to do |format|
|
|
30
|
+
if selected_user.save
|
|
31
|
+
format.html do |format|
|
|
32
|
+
flash[:notice] = "User Profile was successfully created"
|
|
33
|
+
redirect_to main_app.appyantra_admin_users_path
|
|
34
|
+
end
|
|
35
|
+
else
|
|
36
|
+
# TODO handle errors
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def show
|
|
42
|
+
@selected_user = User.find(params[:id])
|
|
43
|
+
@page_title = 'User | ' + @selected_user.display_name
|
|
44
|
+
current_breadcrumb @selected_user.display_name
|
|
45
|
+
respond_to do |format|
|
|
46
|
+
format.html
|
|
47
|
+
format.js
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def edit
|
|
52
|
+
@user = User.find(params[:id])
|
|
53
|
+
@page_title = 'User | ' + @user.display_name
|
|
54
|
+
add_breadcrumb([@user.display_name, main_app.edit_appyantra_admin_user_path(@user)])
|
|
55
|
+
current_breadcrumb 'Edit'
|
|
56
|
+
render 'edit'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def update
|
|
60
|
+
selected_user = User.find(params[:id])
|
|
61
|
+
respond_to do |format|
|
|
62
|
+
if selected_user.update_attributes(params[:user])
|
|
63
|
+
format.html do |format|
|
|
64
|
+
flash[:notice] = "User Profile was successfully updated."
|
|
65
|
+
redirect_to main_app.appyantra_admin_users_path
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
# TODO handle errors
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def update_password
|
|
74
|
+
user = User.find(params[:id])
|
|
75
|
+
password_params = params[:user]
|
|
76
|
+
user.reset_password!(password_params[:password], password_params[:password_confirmation])
|
|
77
|
+
# TODO Fix auto logout issue when password is changed
|
|
78
|
+
# sign_in(current_admin, :bypass => true)
|
|
79
|
+
flash[:notice] = "Password was successfully updated."
|
|
80
|
+
redirect_to main_app.appyantra_admin_users_path
|
|
81
|
+
# TODO handle errors
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def destroy
|
|
85
|
+
user = User.find(params[:id])
|
|
86
|
+
user.destroy
|
|
87
|
+
flash[:notice] = "User was successfully deleted."
|
|
88
|
+
redirect_to main_app.appyantra_admin_users_path
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
module AppyantraAdmin::ApplicationHelper
|
|
2
|
+
def display_date(date)
|
|
3
|
+
date.strftime("%m-%d-%Y %H:%M")
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def setting_value(entity_name, default='Not Set')
|
|
7
|
+
setting = AdminSetting.find_by_name(entity_name)
|
|
8
|
+
if setting && setting.entity
|
|
9
|
+
render partial: "/appyantra_admin/shared/types/#{setting.entity.class.name.underscore}", locals: { entity: setting.entity}
|
|
10
|
+
else
|
|
11
|
+
default
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def breadcrumb
|
|
16
|
+
breadcrumb_html = ''
|
|
17
|
+
if @breadcrumbs
|
|
18
|
+
while !@breadcrumbs.empty? do
|
|
19
|
+
curr_breadcrumb = @breadcrumbs.pop
|
|
20
|
+
breadcrumb_html << "<a href='#{curr_breadcrumb[1]}'>#{curr_breadcrumb[0]}</a><div class='breadcrumb_divider'></div>"
|
|
21
|
+
end
|
|
22
|
+
breadcrumb_html << "<a class='current'>#{@current_breadcrumb}</a>"
|
|
23
|
+
end
|
|
24
|
+
breadcrumb_html
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# displays the name of the first field of a model
|
|
28
|
+
def asset_display_field(asset_class_name)
|
|
29
|
+
asset_class = eval asset_class_name
|
|
30
|
+
asset_class.column_names[1].capitalize
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# displays the value of the first field of a model object (asset)
|
|
34
|
+
def asset_display_name(asset)
|
|
35
|
+
field_name = asset.class.column_names[1]
|
|
36
|
+
asset[field_name]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def page_title
|
|
40
|
+
if @page
|
|
41
|
+
@page.title
|
|
42
|
+
elsif @page_title
|
|
43
|
+
@page_title
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def path_for slug
|
|
48
|
+
if Page.where(slug: slug).exists?
|
|
49
|
+
main_app.display_page_path(slug)
|
|
50
|
+
else
|
|
51
|
+
'#'
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def include_rich_text_editor
|
|
56
|
+
if AdminSetting.value_of('rich_text_editor') == 'ckeditor'
|
|
57
|
+
javascript_include_tag "ckeditor/ckeditor.js"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def google_analytics_script
|
|
62
|
+
analytics_settings = AdminSetting.group_settings('Google Analytics')
|
|
63
|
+
if analytics_settings.has_key?(:tracking_code) && analytics_settings.has_key?(:domain)
|
|
64
|
+
tracking_code = analytics_settings[:tracking_code]
|
|
65
|
+
domain = analytics_settings[:domain]
|
|
66
|
+
render partial: '/pages/google_analytics', locals: { analytics_tracking_code: tracking_code, analytics_domain: domain }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def fetch_activity_feeds
|
|
71
|
+
ActivityFeed.latest
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module AppyantraAdmin::PagesHelper
|
|
2
|
+
def categories
|
|
3
|
+
Page.where('category is not null').select('distinct category')
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def default_category
|
|
7
|
+
page = Page.where('category is not null').select('distinct category').first
|
|
8
|
+
if page
|
|
9
|
+
page.category
|
|
10
|
+
else
|
|
11
|
+
''
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def published_status page
|
|
16
|
+
if page.published
|
|
17
|
+
'Yes'
|
|
18
|
+
else
|
|
19
|
+
'No'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def page_category page
|
|
24
|
+
unless page.category.empty?
|
|
25
|
+
page.category
|
|
26
|
+
else
|
|
27
|
+
'Not specified.'
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def page_keywords(page)
|
|
32
|
+
(page.keywords.collect{|pk| pk.keyword}).join(', ')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def page_layouts
|
|
36
|
+
['None'] + AppyantraAdmin.page_layouts
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ActivityLogObserver < ActiveRecord::Observer
|
|
2
|
+
|
|
3
|
+
observe :page, :user, :admin
|
|
4
|
+
|
|
5
|
+
def after_create(record)
|
|
6
|
+
log_activity record, 'created', :created_by
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def after_update(record)
|
|
10
|
+
log_activity record, 'updated', :last_updated_by
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def after_destroy(record)
|
|
14
|
+
log_activity record, 'deleted', :deleted_by
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def infer_actor(record, actor_method)
|
|
20
|
+
if record.respond_to?(actor_method)
|
|
21
|
+
# actor e.g. page.created_by --> admin
|
|
22
|
+
actor_obj = record.send(actor_method)
|
|
23
|
+
if actor_obj
|
|
24
|
+
# check if the actor has a display_name
|
|
25
|
+
if actor_obj.respond_to?(:display_name)
|
|
26
|
+
display_name = actor_obj.send(:display_name)
|
|
27
|
+
else
|
|
28
|
+
display_name = actor_obj.class.name
|
|
29
|
+
end
|
|
30
|
+
# create a hash for the actor
|
|
31
|
+
actor = { type: actor_obj.class.name, id: actor_obj.id, display_name: display_name }
|
|
32
|
+
else
|
|
33
|
+
actor = {}
|
|
34
|
+
end
|
|
35
|
+
else
|
|
36
|
+
actor = {}
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def log_activity(record, action, actor_method)
|
|
41
|
+
actor = infer_actor(record, actor_method)
|
|
42
|
+
ActivityFeed.create(item_type: record.class.name, item_id: record.id,
|
|
43
|
+
item: record_identifier(record), actor: actor[:display_name],
|
|
44
|
+
actor_type: actor[:type], actor_id: actor[:id], activity: action)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def record_identifier(record)
|
|
48
|
+
if record.respond_to?(:identifier)
|
|
49
|
+
record.send(:identifier)
|
|
50
|
+
elsif record.respond_to?(:display_name)
|
|
51
|
+
record.send(:display_name)
|
|
52
|
+
else
|
|
53
|
+
record.class.name << '#' << record.id
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
data/app/models/admin.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class Admin < ActiveRecord::Base
|
|
2
|
+
# Include default devise modules. Others available are:
|
|
3
|
+
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
|
|
4
|
+
devise :database_authenticatable,
|
|
5
|
+
:recoverable, :rememberable, :trackable, :validatable
|
|
6
|
+
|
|
7
|
+
# Setup accessible (or protected) attributes for your model
|
|
8
|
+
attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name
|
|
9
|
+
|
|
10
|
+
include Person
|
|
11
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
class AdminSetting < ActiveRecord::Base
|
|
2
|
+
|
|
3
|
+
validates :name, uniqueness: { scope: :group }
|
|
4
|
+
|
|
5
|
+
scope :managed_groups, where("admin_settings.group != 'Mail'").select("distinct admin_settings.group")
|
|
6
|
+
|
|
7
|
+
after_create :clear_pages
|
|
8
|
+
after_update :clear_pages
|
|
9
|
+
after_destroy :clear_pages
|
|
10
|
+
|
|
11
|
+
def entity
|
|
12
|
+
type_class = eval self.entity_type
|
|
13
|
+
type_class.find self.entity_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.create_from_entity(name, entity, group='General', display_name=name.titleize)
|
|
17
|
+
self.create(name: name, display_name: display_name,
|
|
18
|
+
entity_type: entity.class.name,
|
|
19
|
+
entity_id: entity.id,
|
|
20
|
+
group: group)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# finds a setting by name and returns the value of the setting's entity. The entity should implement a entity_value method
|
|
24
|
+
# if no setting exists for the name then returns nil
|
|
25
|
+
def self.value_of(setting_name)
|
|
26
|
+
setting = AdminSetting.find_by_name(setting_name)
|
|
27
|
+
if setting && setting.entity
|
|
28
|
+
setting.entity.entity_value
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# convenience method for initializing a settings group with empty values
|
|
33
|
+
# fields should be a hash { <field_type(string))> : <field_names(string_array)> }
|
|
34
|
+
# Only fields (model classes) having a name/value properties are supported (Text, ShortText etc.)
|
|
35
|
+
# returns a hash of type { <field_name> : nil }
|
|
36
|
+
def self.initialize_group(group, fields)
|
|
37
|
+
group_settings = Hash.new
|
|
38
|
+
fields.each do |field_type, field_names|
|
|
39
|
+
field_names.each do |field_name|
|
|
40
|
+
field_class = eval field_type
|
|
41
|
+
field = field_class.create(name: field_name, value: nil)
|
|
42
|
+
group_settings[field_name] = nil
|
|
43
|
+
AdminSetting.create_from_entity(field_name, field, group, field_name.humanize)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
group_settings
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.group_settings(group)
|
|
50
|
+
group_settings = AdminSetting.where(group: group)
|
|
51
|
+
settings_hash = Hash.new
|
|
52
|
+
group_settings.each do |setting|
|
|
53
|
+
entity_value = setting.entity.entity_value
|
|
54
|
+
settings_hash[setting.name.to_sym] = entity_value
|
|
55
|
+
end
|
|
56
|
+
settings_hash
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.update_group_settings(group, settings_hash)
|
|
60
|
+
settings_hash.each do |setting_name, setting_value|
|
|
61
|
+
setting = AdminSetting.find_by_group_and_name(group, setting_name)
|
|
62
|
+
setting.entity.entity_value = setting_value
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def clear_pages
|
|
69
|
+
if self.group == 'Google Analytics'
|
|
70
|
+
# clears all the cached pages
|
|
71
|
+
FileUtils.rm_rf Rails.root.join("public/pages")
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|