adminpanel 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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