lotus_admin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +63 -0
  4. data/Rakefile +20 -0
  5. data/app/assets/config/lotus_admin_manifest.js +2 -0
  6. data/app/assets/images/lotus_admin/profile-menu.png +0 -0
  7. data/app/assets/javascripts/lotus_admin/application.js +5 -0
  8. data/app/assets/stylesheets/lotus_admin/application.css.scss +9 -0
  9. data/app/assets/stylesheets/lotus_admin/components/_alerts.scss +5 -0
  10. data/app/assets/stylesheets/lotus_admin/components/_all.scss +4 -0
  11. data/app/assets/stylesheets/lotus_admin/components/_devise.scss +3 -0
  12. data/app/assets/stylesheets/lotus_admin/components/_forms.scss +7 -0
  13. data/app/assets/stylesheets/lotus_admin/components/_tables.scss +27 -0
  14. data/app/controllers/concerns/lotus_admin/devise_controllers.rb +7 -0
  15. data/app/controllers/concerns/lotus_admin/exposure.rb +27 -0
  16. data/app/controllers/concerns/lotus_admin/permitted_params.rb +18 -0
  17. data/app/controllers/lotus_admin/application_controller.rb +20 -0
  18. data/app/controllers/lotus_admin/authenticated_controller.rb +20 -0
  19. data/app/controllers/lotus_admin/confirmations_controller.rb +3 -0
  20. data/app/controllers/lotus_admin/dashboard_controller.rb +5 -0
  21. data/app/controllers/lotus_admin/passwords_controller.rb +3 -0
  22. data/app/controllers/lotus_admin/profiles_controller.rb +20 -0
  23. data/app/controllers/lotus_admin/sessions_controller.rb +3 -0
  24. data/app/controllers/lotus_admin/users_controller.rb +45 -0
  25. data/app/helpers/lotus_admin/application_helper.rb +18 -0
  26. data/app/helpers/lotus_admin/form_helpers.rb +25 -0
  27. data/app/helpers/lotus_admin/link_helpers.rb +27 -0
  28. data/app/helpers/lotus_admin/pagination_helpers.rb +7 -0
  29. data/app/helpers/lotus_admin/panel_helpers.rb +24 -0
  30. data/app/helpers/lotus_admin/sidebar_helpers.rb +25 -0
  31. data/app/jobs/lotus_admin/application_job.rb +4 -0
  32. data/app/mailers/lotus_admin/application_mailer.rb +6 -0
  33. data/app/mailers/lotus_admin/user_mailer.rb +10 -0
  34. data/app/models/lotus_admin/application_record.rb +5 -0
  35. data/app/models/lotus_admin/user.rb +17 -0
  36. data/app/views/administrators/_links.html.haml +20 -0
  37. data/app/views/administrators/confirmations/new.html.haml +13 -0
  38. data/app/views/administrators/passwords/edit.html.haml +15 -0
  39. data/app/views/administrators/passwords/new.html.haml +11 -0
  40. data/app/views/administrators/sessions/new.html.haml +11 -0
  41. data/app/views/kaminari/lotus_admin/_first_page.html.haml +2 -0
  42. data/app/views/kaminari/lotus_admin/_gap.html.haml +1 -0
  43. data/app/views/kaminari/lotus_admin/_last_page.html.haml +2 -0
  44. data/app/views/kaminari/lotus_admin/_next_page.html.haml +2 -0
  45. data/app/views/kaminari/lotus_admin/_page.html.haml +2 -0
  46. data/app/views/kaminari/lotus_admin/_paginator.html.haml +12 -0
  47. data/app/views/kaminari/lotus_admin/_prev_page.html.haml +2 -0
  48. data/app/views/layouts/lotus_admin/_devise_footer.html.haml +0 -0
  49. data/app/views/layouts/lotus_admin/_favicons.html.haml +0 -0
  50. data/app/views/layouts/lotus_admin/_footer.html.haml +2 -0
  51. data/app/views/layouts/lotus_admin/_footer_scripts.html.haml +2 -0
  52. data/app/views/layouts/lotus_admin/_header.html.haml +31 -0
  53. data/app/views/layouts/lotus_admin/_header_dropdown_items.html.haml +0 -0
  54. data/app/views/layouts/lotus_admin/_html_head.html.haml +9 -0
  55. data/app/views/layouts/lotus_admin/_javascripts.html.haml +1 -0
  56. data/app/views/layouts/lotus_admin/_sidebar.html.haml +22 -0
  57. data/app/views/layouts/lotus_admin/_sidebar_items.html.haml +9 -0
  58. data/app/views/layouts/lotus_admin/_stylesheets.html.haml +5 -0
  59. data/app/views/layouts/lotus_admin/application.html.haml +22 -0
  60. data/app/views/layouts/lotus_admin/devise.html.haml +19 -0
  61. data/app/views/layouts/lotus_admin/mailer.html.haml +10 -0
  62. data/app/views/layouts/lotus_admin/mailer.text.erb +4 -0
  63. data/app/views/lotus_admin/dashboard/show.html.haml +1 -0
  64. data/app/views/lotus_admin/profiles/edit.html.haml +26 -0
  65. data/app/views/lotus_admin/shared/_collection_pagination.html.haml +7 -0
  66. data/app/views/lotus_admin/user_mailer/invited.html.haml +8 -0
  67. data/app/views/lotus_admin/user_mailer/invited.text.erb +5 -0
  68. data/app/views/lotus_admin/users/_form.html.haml +10 -0
  69. data/app/views/lotus_admin/users/edit.html.haml +12 -0
  70. data/app/views/lotus_admin/users/index.html.haml +30 -0
  71. data/app/views/lotus_admin/users/new.html.haml +9 -0
  72. data/app/views/lotus_admin/users/show.html.haml +24 -0
  73. data/config/initializers/devise.rb +280 -0
  74. data/config/initializers/simple_form.rb +170 -0
  75. data/config/initializers/simple_form_bootstrap.rb +155 -0
  76. data/config/initializers/simple_form_material.rb +35 -0
  77. data/config/locales/dates.en.yml +11 -0
  78. data/config/locales/devise.en.yml +64 -0
  79. data/config/locales/mailers.en.yml +5 -0
  80. data/config/locales/page_titles.en.yml +30 -0
  81. data/config/locales/simple_form.en.yml +31 -0
  82. data/config/locales/users.en.yml +29 -0
  83. data/config/routes.rb +8 -0
  84. data/db/migrate/20180228124526_devise_create_lotus_admin_users.rb +46 -0
  85. data/db/migrate/20180228210938_add_timezone_to_users.rb +5 -0
  86. data/lib/lotus_admin.rb +17 -0
  87. data/lib/lotus_admin/engine.rb +19 -0
  88. data/lib/lotus_admin/version.rb +3 -0
  89. data/lib/tasks/lotus_admin_tasks.rake +6 -0
  90. data/lib/templates/erb/scaffold/_form.html.erb +14 -0
  91. metadata +371 -0
@@ -0,0 +1,155 @@
1
+ # frozen_string_literal: true
2
+ # Use this setup block to configure all options available in SimpleForm.
3
+ SimpleForm.setup do |config|
4
+ config.error_notification_class = 'alert alert-danger'
5
+ config.button_class = 'btn btn-default'
6
+ config.boolean_label_class = nil
7
+
8
+ config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
9
+ b.use :html5
10
+ b.use :placeholder
11
+ b.optional :maxlength
12
+ b.optional :minlength
13
+ b.optional :pattern
14
+ b.optional :min_max
15
+ b.optional :readonly
16
+ b.use :label, class: 'control-label'
17
+
18
+ b.use :input, class: 'form-control'
19
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
20
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
21
+ end
22
+
23
+ config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
24
+ b.use :html5
25
+ b.use :placeholder
26
+ b.optional :maxlength
27
+ b.optional :minlength
28
+ b.optional :readonly
29
+ b.use :label, class: 'control-label'
30
+
31
+ b.use :input
32
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
33
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
34
+ end
35
+
36
+ config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
37
+ b.use :html5
38
+ b.optional :readonly
39
+
40
+ b.wrapper tag: 'div', class: 'checkbox' do |ba|
41
+ ba.use :label_input
42
+ end
43
+
44
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
45
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
46
+ end
47
+
48
+ config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
49
+ b.use :html5
50
+ b.optional :readonly
51
+ b.use :label, class: 'control-label'
52
+ b.use :input
53
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
54
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
55
+ end
56
+
57
+ config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
58
+ b.use :html5
59
+ b.use :placeholder
60
+ b.optional :maxlength
61
+ b.optional :minlength
62
+ b.optional :pattern
63
+ b.optional :min_max
64
+ b.optional :readonly
65
+ b.use :label, class: 'col-sm-3 control-label'
66
+
67
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
68
+ ba.use :input, class: 'form-control'
69
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
70
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
71
+ end
72
+ end
73
+
74
+ config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
75
+ b.use :html5
76
+ b.use :placeholder
77
+ b.optional :maxlength
78
+ b.optional :minlength
79
+ b.optional :readonly
80
+ b.use :label, class: 'col-sm-3 control-label'
81
+
82
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
83
+ ba.use :input
84
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
85
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
86
+ end
87
+ end
88
+
89
+ config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
90
+ b.use :html5
91
+ b.optional :readonly
92
+
93
+ b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
94
+ wr.wrapper tag: 'div', class: 'checkbox' do |ba|
95
+ ba.use :label_input
96
+ end
97
+
98
+ wr.use :error, wrap_with: { tag: 'span', class: 'help-block' }
99
+ wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
100
+ end
101
+ end
102
+
103
+ config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
104
+ b.use :html5
105
+ b.optional :readonly
106
+
107
+ b.use :label, class: 'col-sm-3 control-label'
108
+
109
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
110
+ ba.use :input
111
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
112
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
113
+ end
114
+ end
115
+
116
+ config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
117
+ b.use :html5
118
+ b.use :placeholder
119
+ b.optional :maxlength
120
+ b.optional :minlength
121
+ b.optional :pattern
122
+ b.optional :min_max
123
+ b.optional :readonly
124
+ b.use :label, class: 'sr-only'
125
+
126
+ b.use :input, class: 'form-control'
127
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
128
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
129
+ end
130
+
131
+ config.wrappers :multi_select, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
132
+ b.use :html5
133
+ b.optional :readonly
134
+ b.use :label, class: 'control-label'
135
+ b.wrapper tag: 'div', class: 'form-inline' do |ba|
136
+ ba.use :input, class: 'form-control'
137
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
138
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
139
+ end
140
+ end
141
+ # Wrappers for forms and inputs using the Bootstrap toolkit.
142
+ # Check the Bootstrap docs (http://getbootstrap.com)
143
+ # to learn about the different styles for forms and inputs,
144
+ # buttons and other elements.
145
+ config.default_wrapper = :vertical_form
146
+ config.wrapper_mappings = {
147
+ check_boxes: :vertical_radio_and_checkboxes,
148
+ radio_buttons: :vertical_radio_and_checkboxes,
149
+ file: :vertical_file_input,
150
+ boolean: :vertical_boolean,
151
+ datetime: :multi_select,
152
+ date: :multi_select,
153
+ time: :multi_select
154
+ }
155
+ end
@@ -0,0 +1,35 @@
1
+ # Custom form wrapper for Material Design template
2
+ SimpleForm.setup do |config|
3
+ config.boolean_style = :inline
4
+
5
+ config.wrappers :material_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
6
+ b.use :html5
7
+ b.use :placeholder
8
+ b.optional :maxlength
9
+ b.optional :minlength
10
+ b.optional :pattern
11
+ b.optional :min_max
12
+ b.optional :readonly
13
+
14
+ b.use :input, class: 'form-control', wrap_with: { tag: 'div', class: 'fg-line' }
15
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
16
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
17
+ end
18
+
19
+ config.wrappers :material_boolean_horizontal, tag: 'div', class: 'checkbox', error_class: 'has-error' do |b|
20
+ b.use :html5
21
+ b.optional :readonly
22
+
23
+ b.wrapper tag: 'label' do |append|
24
+ append.use :input
25
+ append.wrapper tag: 'i', class: 'input-helper' do |baa|
26
+
27
+ end
28
+
29
+ append.use :label_text
30
+ end
31
+
32
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
33
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ en:
2
+ date:
3
+ formats:
4
+ long: '%b %e, %Y'
5
+ extended: '%A %B %e, %Y'
6
+
7
+ time:
8
+ formats:
9
+ default: '%m/%d/%Y %l:%M %p %Z'
10
+ long: '%B %d, %Y %l:%M %p %Z'
11
+ seconds: '%l:%M:%S %p %Z'
@@ -0,0 +1,64 @@
1
+ # Additional translations at https://github.com/plataformatec/devise/wiki/I18n
2
+
3
+ en:
4
+ devise:
5
+ confirmations:
6
+ confirmed: "Your email address has been successfully confirmed."
7
+ send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
8
+ send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
9
+ failure:
10
+ already_authenticated: "You are already signed in."
11
+ inactive: "Your account is not activated yet."
12
+ invalid: "Invalid %{authentication_keys} or password."
13
+ locked: "Your account is locked."
14
+ last_attempt: "You have one more attempt before your account is locked."
15
+ not_found_in_database: "Invalid %{authentication_keys} or password."
16
+ timeout: "Your session expired. Please sign in again to continue."
17
+ unauthenticated: "You need to sign in or sign up before continuing."
18
+ unconfirmed: "You have to confirm your email address before continuing."
19
+ mailer:
20
+ confirmation_instructions:
21
+ subject: "Confirmation instructions"
22
+ reset_password_instructions:
23
+ subject: "Reset password instructions"
24
+ unlock_instructions:
25
+ subject: "Unlock instructions"
26
+ email_changed:
27
+ subject: "Email Changed"
28
+ password_change:
29
+ subject: "Password Changed"
30
+ omniauth_callbacks:
31
+ failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
32
+ success: "Successfully authenticated from %{kind} account."
33
+ passwords:
34
+ no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
35
+ send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
36
+ send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
37
+ updated: "Your password has been changed successfully. You are now signed in."
38
+ updated_not_active: "Your password has been changed successfully."
39
+ registrations:
40
+ destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
41
+ signed_up: "Welcome! You have signed up successfully."
42
+ signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
43
+ signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
44
+ signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
45
+ update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
46
+ updated: "Your account has been updated successfully."
47
+ sessions:
48
+ signed_in: "Signed in successfully."
49
+ signed_out: "Signed out successfully."
50
+ already_signed_out: "Signed out successfully."
51
+ unlocks:
52
+ send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
53
+ send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
54
+ unlocked: "Your account has been unlocked successfully. Please sign in to continue."
55
+ errors:
56
+ messages:
57
+ already_confirmed: "was already confirmed, please try signing in"
58
+ confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
59
+ expired: "has expired, please request a new one"
60
+ not_found: "not found"
61
+ not_locked: "was not locked"
62
+ not_saved:
63
+ one: "1 error prohibited this %{resource} from being saved:"
64
+ other: "%{count} errors prohibited this %{resource} from being saved:"
@@ -0,0 +1,5 @@
1
+ en:
2
+ lotus_admin:
3
+ user_mailer:
4
+ invited:
5
+ subject: You have been invited to join %{app}
@@ -0,0 +1,30 @@
1
+ en:
2
+ app:
3
+ name: Provide "app.name" translation
4
+ tagline: Provide "app.tagline" translation
5
+
6
+ lotus_admin:
7
+ sessions:
8
+ new:
9
+ title: Login
10
+
11
+ confirmations:
12
+ new:
13
+ title: Request a Confirmation Email
14
+
15
+ show:
16
+ title: Confirm Your Account
17
+
18
+ create:
19
+ title: Confirm Your Account
20
+
21
+ thanks:
22
+ title: Thanks for Confirming!
23
+
24
+ passwords:
25
+ new:
26
+ title: Request Password Reset
27
+ edit:
28
+ title: Reset Your Password
29
+ thanks:
30
+ title: Your Password was Reset
@@ -0,0 +1,31 @@
1
+ en:
2
+ simple_form:
3
+ "yes": 'Yes'
4
+ "no": 'No'
5
+ required:
6
+ text: 'required'
7
+ mark: '*'
8
+ # You can uncomment the line below if you need to overwrite the whole required html.
9
+ # When using html, text and mark won't be used.
10
+ # html: '<abbr title="required">*</abbr>'
11
+ error_notification:
12
+ default_message: "Please review the problems below:"
13
+ # Examples
14
+ # labels:
15
+ # defaults:
16
+ # password: 'Password'
17
+ # user:
18
+ # new:
19
+ # email: 'E-mail to sign in.'
20
+ # edit:
21
+ # email: 'E-mail.'
22
+ # hints:
23
+ # defaults:
24
+ # username: 'User name to sign in.'
25
+ # password: 'No special characters, please.'
26
+ # include_blanks:
27
+ # defaults:
28
+ # age: 'Rather not say'
29
+ # prompts:
30
+ # defaults:
31
+ # age: 'Select your age'
@@ -0,0 +1,29 @@
1
+ en:
2
+ activerecord:
3
+ models:
4
+ lotus_admin/user:
5
+ one: Administrator
6
+ other: Administrators
7
+
8
+ lotus_admin:
9
+ users:
10
+ new:
11
+ help: The new administrator will receive an invitation via email.
12
+
13
+ edit:
14
+ help: You may update details for the administrator below.
15
+
16
+ profiles:
17
+ edit:
18
+ help: Make any changes to your profile below, leave your password blank to skip making changes to your password.
19
+
20
+ simple_form:
21
+ placeholders:
22
+ defaults:
23
+ name: Name
24
+ first_name: First Name
25
+ last_name: Last Name
26
+ username: Email
27
+ email: Email
28
+ password: Password
29
+ password_confirmation: Confirm Password
data/config/routes.rb ADDED
@@ -0,0 +1,8 @@
1
+ LotusAdmin::Engine.routes.draw do
2
+ devise_for :administrators, class_name: "LotusAdmin::User"
3
+
4
+ resources :users
5
+ resource :profile, only: [:edit, :update]
6
+
7
+ root to: 'dashboard#show'
8
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DeviseCreateLotusAdminUsers < ActiveRecord::Migration[5.1]
4
+ def change
5
+ create_table :lotus_admin_users do |t|
6
+ ## Database authenticatable
7
+ t.string :email, null: false, default: ""
8
+ t.string :encrypted_password, null: false, default: ""
9
+
10
+ ## Recoverable
11
+ t.string :reset_password_token
12
+ t.datetime :reset_password_sent_at
13
+
14
+ ## Rememberable
15
+ t.datetime :remember_created_at
16
+
17
+ ## Trackable
18
+ t.integer :sign_in_count, default: 0, null: false
19
+ t.datetime :current_sign_in_at
20
+ t.datetime :last_sign_in_at
21
+ t.inet :current_sign_in_ip
22
+ t.inet :last_sign_in_ip
23
+
24
+ ## Confirmable
25
+ t.string :confirmation_token
26
+ t.datetime :confirmed_at
27
+ t.datetime :confirmation_sent_at
28
+ t.string :unconfirmed_email # Only if using reconfirmable
29
+
30
+ ## Lockable
31
+ # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
32
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
33
+ # t.datetime :locked_at
34
+
35
+ t.string :first_name, null: false
36
+ t.string :last_name, null: false
37
+
38
+ t.timestamps null: false
39
+ end
40
+
41
+ add_index :lotus_admin_users, :email, unique: true
42
+ add_index :lotus_admin_users, :reset_password_token, unique: true
43
+ add_index :lotus_admin_users, :confirmation_token, unique: true
44
+ # add_index :lotus_admin_users, :unlock_token, unique: true
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ class AddTimezoneToUsers < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :lotus_admin_users, :time_zone, :string, null: false, default: 'Eastern Time (US & Canada)'
4
+ end
5
+ end
@@ -0,0 +1,17 @@
1
+ require "lotus_admin/engine"
2
+
3
+ require 'devise'
4
+ require 'simple_form'
5
+
6
+ require 'haml'
7
+ require 'sass-rails'
8
+ require 'uglifier'
9
+ require 'font-awesome-rails'
10
+ require 'bootstrap-sass'
11
+ require 'jquery-rails'
12
+ require 'page_title_helper'
13
+ require 'kaminari'
14
+
15
+ module LotusAdmin
16
+ # Your code goes here...
17
+ end