adminpanel 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. data/.rspec +2 -2
  2. data/.ruby-version +1 -0
  3. data/.travis.yml +8 -8
  4. data/Gemfile +26 -24
  5. data/README.md +57 -57
  6. data/adminpanel.gemspec +41 -39
  7. data/app/assets/fonts/fontawesome-webfont.svg +254 -254
  8. data/app/assets/javascripts/adminpanel/bootstrap-datepicker.js +1159 -1159
  9. data/app/assets/javascripts/adminpanel/bootstrap-timepicker.js +803 -803
  10. data/app/assets/javascripts/adminpanel/bootstrap.js +2170 -2170
  11. data/app/assets/javascripts/adminpanel/{products.js → images_form.js} +13 -13
  12. data/app/assets/javascripts/adminpanel/imagesloaded.js +12 -12
  13. data/app/assets/javascripts/adminpanel/jquery.dataTables.min.js +155 -155
  14. data/app/assets/javascripts/adminpanel/jquery.facybox.js +395 -395
  15. data/app/assets/javascripts/adminpanel/jquery.masonry.min.js +9 -9
  16. data/app/assets/javascripts/adminpanel/jquery.slimscroll.min.js +13 -13
  17. data/app/assets/javascripts/adminpanel/medium-editor.js +702 -702
  18. data/app/assets/javascripts/adminpanel/realm.js +87 -87
  19. data/app/assets/javascripts/adminpanel/tables.js +126 -126
  20. data/app/assets/javascripts/application-admin.js +15 -15
  21. data/app/assets/stylesheets/adminpanel/_clearfix.css.scss +7 -7
  22. data/app/assets/stylesheets/adminpanel/alertify.css +241 -241
  23. data/app/assets/stylesheets/adminpanel/bootstrap.css +6103 -6103
  24. data/app/assets/stylesheets/adminpanel/colorpicker.css +6 -6
  25. data/app/assets/stylesheets/adminpanel/datepicker.css +9 -9
  26. data/app/assets/stylesheets/adminpanel/elfinder.min.css +59 -59
  27. data/app/assets/stylesheets/adminpanel/facybox.css +146 -146
  28. data/app/assets/stylesheets/adminpanel/font-awesome.min.css +33 -33
  29. data/app/assets/stylesheets/adminpanel/fullcalendar.css +618 -618
  30. data/app/assets/stylesheets/adminpanel/fullcalendar.print.css +61 -61
  31. data/app/assets/stylesheets/adminpanel/select2.css +524 -524
  32. data/app/assets/stylesheets/adminpanel/theme.css +1571 -1571
  33. data/app/assets/stylesheets/adminpanel/timepicker.css +82 -82
  34. data/app/assets/stylesheets/application-admin.css +13 -13
  35. data/app/controllers/adminpanel/application_controller.rb +32 -17
  36. data/app/controllers/adminpanel/galleries_controller.rb +80 -80
  37. data/app/controllers/adminpanel/sections_controller.rb +45 -45
  38. data/app/controllers/adminpanel/sessions_controller.rb +26 -26
  39. data/app/controllers/adminpanel/users_controller.rb +84 -84
  40. data/app/helpers/adminpanel/application_helper.rb +41 -51
  41. data/app/helpers/adminpanel/breadcrumbs_helper.rb +16 -0
  42. data/app/helpers/adminpanel/custom_form_builder.rb +248 -0
  43. data/app/helpers/adminpanel/images_helper.rb +9 -9
  44. data/app/helpers/adminpanel/rest_actions_helper.rb +47 -0
  45. data/app/helpers/adminpanel/router_helper.rb +33 -0
  46. data/app/helpers/adminpanel/sessions_helper.rb +25 -25
  47. data/app/models/adminpanel/gallery.rb +60 -60
  48. data/app/models/adminpanel/image.rb +14 -14
  49. data/app/models/adminpanel/section.rb +22 -22
  50. data/app/models/adminpanel/user.rb +35 -35
  51. data/app/uploaders/adminpanel/gallery_uploader.rb +55 -55
  52. data/app/uploaders/adminpanel/image_uploader.rb +57 -57
  53. data/app/views/adminpanel/galleries/_galleries_table.html.erb +14 -14
  54. data/app/views/adminpanel/galleries/create.html.erb +2 -2
  55. data/app/views/adminpanel/galleries/delete.html.erb +2 -2
  56. data/app/views/adminpanel/galleries/edit.html.erb +25 -25
  57. data/app/views/adminpanel/galleries/index.html.erb +51 -51
  58. data/app/views/adminpanel/galleries/new.html.erb +17 -17
  59. data/app/views/adminpanel/galleries/show.html.erb +17 -17
  60. data/app/views/adminpanel/galleries/update.html.erb +2 -2
  61. data/app/views/adminpanel/sections/_image_fields.html.erb +23 -23
  62. data/app/views/adminpanel/sections/_sections_table.html.erb +16 -16
  63. data/app/views/adminpanel/sections/create.html.erb +2 -2
  64. data/app/views/adminpanel/sections/destroy.html.erb +2 -2
  65. data/app/views/adminpanel/sections/edit.html.erb +41 -41
  66. data/app/views/adminpanel/sections/index.html.erb +44 -44
  67. data/app/views/adminpanel/sections/new.html.erb +26 -26
  68. data/app/views/adminpanel/sections/show.html.erb +30 -30
  69. data/app/views/adminpanel/sections/update.html.erb +2 -2
  70. data/app/views/adminpanel/sessions/new.html.erb +25 -25
  71. data/app/views/adminpanel/users/_user_form.html.erb +20 -20
  72. data/app/views/adminpanel/users/edit.html.erb +5 -5
  73. data/app/views/adminpanel/users/index.html.erb +49 -49
  74. data/app/views/adminpanel/users/new.html.erb +5 -5
  75. data/app/views/adminpanel/users/show.html.erb +20 -20
  76. data/app/views/layouts/_shim.html.erb +3 -3
  77. data/app/views/layouts/_side_menu.html.erb +49 -43
  78. data/app/views/layouts/_top_bar.html.erb +43 -43
  79. data/app/views/layouts/admin-login.html.erb +28 -28
  80. data/app/views/layouts/admin.html.erb +41 -39
  81. data/app/views/shared/_breadcrumb.html.erb +6 -6
  82. data/app/views/shared/_error_messages.html.erb +16 -16
  83. data/app/views/shared/_form_fields.html.erb +25 -0
  84. data/app/views/{adminpanel/products → shared}/_image_fields.html.erb +23 -23
  85. data/app/views/shared/_init_editor.html.erb +24 -0
  86. data/app/views/shared/edit.html.erb +28 -0
  87. data/app/views/shared/index.html.erb +94 -0
  88. data/app/views/shared/new.html.erb +28 -0
  89. data/app/views/shared/show.html.erb +63 -0
  90. data/config/locales/en.yml +5 -5
  91. data/config/locales/es.yml +127 -129
  92. data/config/routes.rb +24 -16
  93. data/lib/adminpanel.rb +9 -7
  94. data/lib/adminpanel/active_record_extension.rb +38 -0
  95. data/lib/adminpanel/engine.rb +5 -5
  96. data/lib/adminpanel/version.rb +3 -3
  97. data/lib/generators/adminpanel/initialize/initialize_generator.rb +17 -0
  98. data/lib/generators/adminpanel/{install/templates/migrations → initialize/templates}/create_adminpanel_tables.rb +45 -64
  99. data/lib/generators/adminpanel/resource/resource_generator.rb +105 -0
  100. data/lib/generators/adminpanel/resource/templates/controller.rb +4 -0
  101. data/lib/generators/adminpanel/resource/templates/migration.rb +9 -0
  102. data/lib/generators/adminpanel/resource/templates/resource.rb +19 -0
  103. data/spec/dummy/.gitignore +17 -17
  104. data/spec/dummy/README.rdoc +261 -261
  105. data/spec/dummy/Rakefile +7 -7
  106. data/{app/views/adminpanel/categories/show.html.erb → spec/dummy/app/adminpanel/products.rb} +0 -0
  107. data/spec/dummy/app/assets/javascripts/application.js +13 -13
  108. data/spec/dummy/app/assets/stylesheets/application.css +13 -13
  109. data/spec/dummy/app/controllers/adminpanel/.gitkeep +0 -0
  110. data/spec/dummy/app/controllers/application_controller.rb +3 -11
  111. data/spec/dummy/app/helpers/application_helper.rb +2 -2
  112. data/spec/dummy/app/views/layouts/application.html.erb +14 -14
  113. data/spec/dummy/config.ru +4 -4
  114. data/spec/dummy/config/application.rb +62 -62
  115. data/spec/dummy/config/boot.rb +9 -9
  116. data/spec/dummy/config/carrierwve.rb +5 -5
  117. data/spec/dummy/config/database.yml +24 -24
  118. data/spec/dummy/config/environment.rb +5 -5
  119. data/spec/dummy/config/environments/development.rb +41 -41
  120. data/spec/dummy/config/environments/production.rb +72 -72
  121. data/spec/dummy/config/environments/test.rb +41 -41
  122. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -7
  123. data/spec/dummy/config/initializers/inflections.rb +15 -15
  124. data/spec/dummy/config/initializers/mime_types.rb +5 -5
  125. data/spec/dummy/config/initializers/secret_token.rb +8 -8
  126. data/spec/dummy/config/initializers/session_store.rb +8 -8
  127. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -14
  128. data/spec/dummy/config/locales/en.yml +5 -5
  129. data/spec/dummy/config/routes.rb +4 -4
  130. data/spec/dummy/db/schema.rb +15 -15
  131. data/spec/dummy/public/404.html +26 -26
  132. data/spec/dummy/public/422.html +26 -26
  133. data/spec/dummy/public/500.html +25 -25
  134. data/spec/dummy/public/uploads/gallery/file/1/hipster.jpg +0 -0
  135. data/spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg +0 -0
  136. data/spec/dummy/script/rails +6 -6
  137. data/spec/features/authentication_pages_spec.rb +43 -43
  138. data/spec/features/galleries_pages_spec.rb +124 -124
  139. data/spec/features/section_pages_spec.rb +37 -37
  140. data/spec/features/user_pages_spec.rb +48 -48
  141. data/spec/generators/initialize_spec.rb +9 -0
  142. data/spec/generators/resource_spec.rb +122 -0
  143. data/spec/models/gallery_spec.rb +21 -21
  144. data/spec/models/section_spec.rb +66 -66
  145. data/spec/models/user_spec.rb +105 -105
  146. data/spec/spec_helper.rb +32 -31
  147. data/spec/support/define_factory_models.rb +25 -36
  148. data/spec/support/helper_methods.rb +26 -26
  149. data/spec/support/submit_forms_without_button.rb +16 -16
  150. data/spec/support/test_database.rb +45 -58
  151. data/spec/uploaders/gallery_uploader_spec.rb +36 -30
  152. data/spec/uploaders/image_uploader_spec.rb +30 -29
  153. metadata +208 -64
  154. checksums.yaml +0 -7
  155. data/app/assets/javascripts/adminpanel/init_editor.js +0 -28
  156. data/app/controllers/adminpanel/categories_controller.rb +0 -41
  157. data/app/controllers/adminpanel/products_controller.rb +0 -88
  158. data/app/helpers/custom_form_builder.rb +0 -219
  159. data/app/models/adminpanel/category.rb +0 -7
  160. data/app/models/adminpanel/product.rb +0 -24
  161. data/app/views/adminpanel/categories/edit.html.erb +0 -18
  162. data/app/views/adminpanel/categories/index.html.erb +0 -55
  163. data/app/views/adminpanel/categories/new.html.erb +0 -18
  164. data/app/views/adminpanel/products/.DS_Store +0 -0
  165. data/app/views/adminpanel/products/_product_form.html.erb +0 -31
  166. data/app/views/adminpanel/products/edit.html.erb +0 -10
  167. data/app/views/adminpanel/products/index.html.erb +0 -51
  168. data/app/views/adminpanel/products/new.html.erb +0 -10
  169. data/app/views/adminpanel/products/show.html.erb +0 -61
  170. data/config/database.yml +0 -24
  171. data/lib/generators/adminpanel/install/install_generator.rb +0 -12
  172. data/spec/features/categories_pages_spec.rb +0 -44
  173. data/spec/features/product_pages_spec.rb +0 -64
  174. data/spec/models/category_spec.rb +0 -58
  175. data/spec/models/product_spec.rb +0 -51
@@ -1,10 +1,10 @@
1
- module Adminpanel
2
- module ImagesHelper
3
-
4
- def is_class?(name)
5
- Module.const_get(name).is_a?(Class)
6
- rescue NameError
7
- return false
8
- end
9
- end
1
+ module Adminpanel
2
+ module ImagesHelper
3
+
4
+ def is_class?(name)
5
+ Module.const_get(name).is_a?(Class)
6
+ rescue NameError
7
+ return false
8
+ end
9
+ end
10
10
  end
@@ -0,0 +1,47 @@
1
+ module Adminpanel
2
+ module RestActionsHelper
3
+ def index
4
+ index! do |format|
5
+ format.html { render "shared/index" }
6
+ end
7
+ end
8
+
9
+ def show
10
+ show! do |format|
11
+ format.html { render "shared/show" }
12
+ end
13
+ end
14
+
15
+ def new
16
+ new! do |format|
17
+ format.html { render "shared/new" }
18
+ end
19
+ end
20
+
21
+ def create
22
+ create! do |success, failure|
23
+ success.html { render "shared/index" }
24
+ failure.html { render "shared/new"}
25
+ end
26
+ end
27
+
28
+ def edit
29
+ edit! do |format|
30
+ format.html { render "shared/edit" }
31
+ end
32
+ end
33
+
34
+ def update
35
+ update! do |success, failure|
36
+ success.html { render "shared/index" }
37
+ failure.html { render "shared/update" }
38
+ end
39
+ end
40
+
41
+ def destroy
42
+ destroy! do |format|
43
+ format.html { render "shared/index" }
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,33 @@
1
+ module Adminpanel
2
+ module RouterHelper
3
+ def adminpanel_resources
4
+ @files ||= find_resources
5
+ end
6
+
7
+ def find_resources
8
+ resources_path
9
+ if File.directory?(resources_path)
10
+ files = Dir.entries(resources_path).collect do |f|
11
+ unless default_controllers.include?(f)
12
+ file_path = "#{resources_path}#{f}"
13
+ File.file?(file_path) ? file_path.sub!(resources_path, '').sub!('_controller.rb', '') : nil
14
+ end
15
+ end
16
+
17
+ files.compact!
18
+ end
19
+ end
20
+
21
+ def menu_items
22
+ @menu ||= adminpanel_resources.each.collect { |resource| resource.classify }
23
+ end
24
+
25
+ def default_controllers
26
+ ["application_controller.rb", "sessions_controller.rb", "galleries_controller.rb", "users_controller.rb", "sections_controller.rb"]
27
+ end
28
+
29
+ def resources_path
30
+ "#{Rails.root.to_s}/app/controllers/adminpanel/"
31
+ end
32
+ end
33
+ end
@@ -1,26 +1,26 @@
1
- module Adminpanel
2
- module SessionsHelper
3
-
4
- def sign_in(user)
5
- cookies.permanent[:remember_token] = user.remember_token
6
- self.current_user = user
7
- end
8
-
9
- def signed_in?
10
- !current_user.nil?
11
- end
12
-
13
- def current_user=(user)
14
- @current_user = user
15
- end
16
-
17
- def current_user
18
- @current_user ||= User.find_by_remember_token(cookies[:remember_token])
19
- end
20
-
21
- def sign_out
22
- self.current_user = nil
23
- cookies.delete(:remember_token)
24
- end
25
- end
1
+ module Adminpanel
2
+ module SessionsHelper
3
+
4
+ def sign_in(user)
5
+ cookies.permanent[:remember_token] = user.remember_token
6
+ self.current_user = user
7
+ end
8
+
9
+ def signed_in?
10
+ !current_user.nil?
11
+ end
12
+
13
+ def current_user=(user)
14
+ @current_user = user
15
+ end
16
+
17
+ def current_user
18
+ @current_user ||= User.find_by_remember_token(cookies[:remember_token])
19
+ end
20
+
21
+ def sign_out
22
+ self.current_user = nil
23
+ cookies.delete(:remember_token)
24
+ end
25
+ end
26
26
  end
@@ -1,61 +1,61 @@
1
- require "carrierwave"
2
- require "carrierwave/orm/activerecord"
3
- module Adminpanel
4
- class Gallery < ActiveRecord::Base
5
- attr_accessible :file
6
-
7
- mount_uploader :file, Adminpanel::GalleryUploader
8
- validates_presence_of :file
9
- before_create :set_position
10
- before_destroy :rearrange_positions
11
-
12
-
13
- default_scope { order("position ASC")}
14
-
15
-
16
- def move_to_better_position
17
- if position > 1
18
- conflicting_gallery = Gallery.find_by_position(position - 1)
19
- update_attribute(:position, position - 1)
20
- conflicting_gallery.update_attribute(
21
- :position, conflicting_gallery.position + 1
22
- )
23
- true
24
- else
25
- false
26
- end
27
- end
28
-
29
- def move_to_worst_position
30
- records = Gallery.count
31
- if position < records
32
- conflicting_gallery = Gallery.find_by_position(position + 1)
33
- update_attribute(:position, position + 1)
34
- conflicting_gallery.update_attribute(
35
- :position, conflicting_gallery.position - 1
36
- )
37
- true
38
- else
39
- false
40
- end
41
- end
42
-
43
- private
44
- def rearrange_positions
45
- unarranged_galleries = Gallery.where("position > ?", position)
46
- unarranged_galleries.each do |gallery|
47
- gallery.update_attribute(:position, gallery.position - 1)
48
- end
49
-
50
- end
51
-
52
- def set_position
53
- last_record = Gallery.last
54
- if last_record.nil?
55
- self.position = 1
56
- else
57
- self.position = last_record.position + 1
58
- end
59
- end
60
- end
1
+ require "carrierwave"
2
+ require "carrierwave/orm/activerecord"
3
+ module Adminpanel
4
+ class Gallery < ActiveRecord::Base
5
+ attr_accessible :file
6
+
7
+ mount_uploader :file, Adminpanel::GalleryUploader
8
+ validates_presence_of :file
9
+ before_create :set_position
10
+ before_destroy :rearrange_positions
11
+
12
+
13
+ default_scope { order("position ASC")}
14
+
15
+
16
+ def move_to_better_position
17
+ if position > 1
18
+ conflicting_gallery = Gallery.find_by_position(position - 1)
19
+ update_attribute(:position, position - 1)
20
+ conflicting_gallery.update_attribute(
21
+ :position, conflicting_gallery.position + 1
22
+ )
23
+ true
24
+ else
25
+ false
26
+ end
27
+ end
28
+
29
+ def move_to_worst_position
30
+ records = Gallery.count
31
+ if position < records
32
+ conflicting_gallery = Gallery.find_by_position(position + 1)
33
+ update_attribute(:position, position + 1)
34
+ conflicting_gallery.update_attribute(
35
+ :position, conflicting_gallery.position - 1
36
+ )
37
+ true
38
+ else
39
+ false
40
+ end
41
+ end
42
+
43
+ private
44
+ def rearrange_positions
45
+ unarranged_galleries = Gallery.where("position > ?", position)
46
+ unarranged_galleries.each do |gallery|
47
+ gallery.update_attribute(:position, gallery.position - 1)
48
+ end
49
+
50
+ end
51
+
52
+ def set_position
53
+ last_record = Gallery.last
54
+ if last_record.nil?
55
+ self.position = 1
56
+ else
57
+ self.position = last_record.position + 1
58
+ end
59
+ end
60
+ end
61
61
  end
@@ -1,15 +1,15 @@
1
- module Adminpanel
2
- class Image < ActiveRecord::Base
3
- extend ImagesHelper
4
-
5
- attr_accessible :file, :foreign_key, :model
6
- validates_presence_of :model
7
- validates_presence_of :file
8
-
9
- if is_class?("ProductUploader")
10
- mount_uploader :file, ProductUploader
11
- else
12
- mount_uploader :file, Adminpanel::ImageUploader
13
- end
14
- end
1
+ module Adminpanel
2
+ class Image < ActiveRecord::Base
3
+ extend ImagesHelper
4
+
5
+ attr_accessible :file, :foreign_key, :model
6
+ validates_presence_of :model
7
+ validates_presence_of :file
8
+
9
+ if is_class?("CustomImageUploader")
10
+ mount_uploader :file, CustomImageUploader
11
+ else
12
+ mount_uploader :file, Adminpanel::ImageUploader
13
+ end
14
+ end
15
15
  end
@@ -1,23 +1,23 @@
1
- require 'carrierwave'
2
- require 'carrierwave/orm/activerecord'
3
- module Adminpanel
4
- class Section < ActiveRecord::Base
5
- attr_accessible :description, :has_image, :key, :page, :name, :has_description, :images_attributes
6
- has_many :images, :foreign_key => "foreign_key", :conditions => { :model => "Section" }
7
- accepts_nested_attributes_for :images, :allow_destroy => true
8
- validates_length_of :description, :minimum => 10, :maximum => 10, :on => :update, :if => lambda{|section| section.key == "telephone"}
9
- validates_presence_of :description, :minimum => 9, :on => :update, :if => lambda{|section| section.has_description == true}
10
- validates :description, :numericality => { :only_integer => true }, :on => :update, :if => lambda{|section| section.key == "telephone"}
11
- validates_presence_of :key
12
- validates_presence_of :name
13
- validates_presence_of :page
14
-
15
- default_scope { order("page ASC")}
16
-
17
- scope :of_page, lambda{|page| where(:page => page)}
18
-
19
- def simple_name
20
- "Section"
21
- end
22
- end
1
+ require 'carrierwave'
2
+ require 'carrierwave/orm/activerecord'
3
+ module Adminpanel
4
+ class Section < ActiveRecord::Base
5
+ attr_accessible :description, :has_image, :key, :page, :name, :has_description, :images_attributes
6
+ has_many :images, :foreign_key => "foreign_key", :conditions => { :model => "Section" }
7
+ accepts_nested_attributes_for :images, :allow_destroy => true
8
+ validates_length_of :description, :minimum => 10, :maximum => 10, :on => :update, :if => lambda{|section| section.key == "telephone"}
9
+ validates_presence_of :description, :minimum => 9, :on => :update, :if => lambda{|section| section.has_description == true}
10
+ validates :description, :numericality => { :only_integer => true }, :on => :update, :if => lambda{|section| section.key == "telephone"}
11
+ validates_presence_of :key
12
+ validates_presence_of :name
13
+ validates_presence_of :page
14
+
15
+ default_scope { order("page ASC")}
16
+
17
+ scope :of_page, lambda{|page| where(:page => page)}
18
+
19
+ def simple_name
20
+ "Section"
21
+ end
22
+ end
23
23
  end
@@ -1,36 +1,36 @@
1
- module Adminpanel
2
- class User < ActiveRecord::Base
3
- attr_accessible :email, :name, :password, :password_confirmation
4
- has_secure_password
5
-
6
- #name validations
7
- validates_presence_of :name
8
- validates_length_of :name, :maximum => 25
9
-
10
- #password validations
11
- validates_confirmation_of :password
12
- validates_presence_of :password
13
- validates_length_of :password, :minimum => 6
14
-
15
- #password_confirmation validations
16
- validates_presence_of :password_confirmation
17
-
18
- #email validations
19
- validates_presence_of :email
20
- validates_uniqueness_of :email
21
- VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
22
- validates_format_of :email, :with => VALID_EMAIL_REGEX
23
-
24
- before_save{ email.downcase! }
25
- before_save :create_remember_token
26
-
27
- def has_role?(role_sym)
28
- roles.any? { |r| r.name.underscore.to_sym == role_sym }
29
- end
30
-
31
- private
32
- def create_remember_token
33
- self.remember_token = SecureRandom.base64.tr("+/", "-_")
34
- end
35
- end
1
+ module Adminpanel
2
+ class User < ActiveRecord::Base
3
+ attr_accessible :email, :name, :password, :password_confirmation
4
+ has_secure_password
5
+
6
+ #name validations
7
+ validates_presence_of :name
8
+ validates_length_of :name, :maximum => 25
9
+
10
+ #password validations
11
+ validates_confirmation_of :password
12
+ validates_presence_of :password
13
+ validates_length_of :password, :minimum => 6
14
+
15
+ #password_confirmation validations
16
+ validates_presence_of :password_confirmation
17
+
18
+ #email validations
19
+ validates_presence_of :email
20
+ validates_uniqueness_of :email
21
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
22
+ validates_format_of :email, :with => VALID_EMAIL_REGEX
23
+
24
+ before_save{ email.downcase! }
25
+ before_save :create_remember_token
26
+
27
+ def has_role?(role_sym)
28
+ roles.any? { |r| r.name.underscore.to_sym == role_sym }
29
+ end
30
+
31
+ private
32
+ def create_remember_token
33
+ self.remember_token = SecureRandom.base64.tr("+/", "-_")
34
+ end
35
+ end
36
36
  end
@@ -1,56 +1,56 @@
1
- # encoding: utf-8
2
- module Adminpanel
3
- class GalleryUploader < CarrierWave::Uploader::Base
4
-
5
- # Include RMagick or MiniMagick support:
6
- include CarrierWave::RMagick
7
- # include CarrierWave::MiniMagick
8
-
9
- # Choose what kind of storage to use for this uploader:
10
- storage :file
11
- # storage :fog
12
-
13
- def root
14
- Rails.root.join 'public/'
15
- end
16
-
17
- # Override the directory where uploaded files will be stored.
18
- # This is a sensible default for uploaders that are meant to be mounted:
19
- def store_dir
20
- "uploads/gallery/#{mounted_as}/#{model.id}"
21
- end
22
-
23
- # Provide a default URL as a default if there hasn't been a file uploaded:
24
- # def default_url
25
- # # For Rails 3.1+ asset pipeline compatibility:
26
- # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
27
- #
28
- # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
29
- # end
30
-
31
- # Process files as they are uploaded:
32
- process :resize_to_fill => [1024, 450]
33
- #
34
- # def scale(width, height)
35
- # # do something
36
- # end
37
-
38
- # Create different versions of your uploaded files:
39
- version :thumb do
40
- process :resize_to_limit => [200, 200]
41
- end
42
-
43
- # Add a white list of extensions which are allowed to be uploaded.
44
- # For images you might use something like this:
45
- def extension_white_list
46
- %w(jpg jpeg png)
47
- end
48
-
49
- # Override the filename of the uploaded files:
50
- # Avoid using model.id or version_name here, see uploader/store.rb for details.
51
- # def filename
52
- # "something.jpg" if original_filename
53
- # end
54
-
55
- end
1
+ # encoding: utf-8
2
+ module Adminpanel
3
+ class GalleryUploader < CarrierWave::Uploader::Base
4
+
5
+ # Include RMagick or MiniMagick support:
6
+ include CarrierWave::RMagick
7
+ # include CarrierWave::MiniMagick
8
+
9
+ # Choose what kind of storage to use for this uploader:
10
+ storage :file
11
+ # storage :fog
12
+
13
+ def root
14
+ Rails.root.join 'public/'
15
+ end
16
+
17
+ # Override the directory where uploaded files will be stored.
18
+ # This is a sensible default for uploaders that are meant to be mounted:
19
+ def store_dir
20
+ "uploads/gallery/#{mounted_as}/#{model.id}"
21
+ end
22
+
23
+ # Provide a default URL as a default if there hasn't been a file uploaded:
24
+ # def default_url
25
+ # # For Rails 3.1+ asset pipeline compatibility:
26
+ # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
27
+ #
28
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
29
+ # end
30
+
31
+ # Process files as they are uploaded:
32
+ process :resize_to_fill => [1024, 450]
33
+ #
34
+ # def scale(width, height)
35
+ # # do something
36
+ # end
37
+
38
+ # Create different versions of your uploaded files:
39
+ version :thumb do
40
+ process :resize_to_limit => [200, 200]
41
+ end
42
+
43
+ # Add a white list of extensions which are allowed to be uploaded.
44
+ # For images you might use something like this:
45
+ def extension_white_list
46
+ %w(jpg jpeg png)
47
+ end
48
+
49
+ # Override the filename of the uploaded files:
50
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
51
+ # def filename
52
+ # "something.jpg" if original_filename
53
+ # end
54
+
55
+ end
56
56
  end