adminpanel 1.2.8 → 1.2.9

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 (44) hide show
  1. data/Gemfile +1 -1
  2. data/adminpanel.gemspec +2 -2
  3. data/app/controllers/adminpanel/{pages_controller.rb → analytics_controller.rb} +11 -6
  4. data/app/controllers/adminpanel/application_controller.rb +5 -6
  5. data/app/controllers/adminpanel/galleries_controller.rb +23 -23
  6. data/app/controllers/adminpanel/sections_controller.rb +5 -1
  7. data/app/controllers/adminpanel/sessions_controller.rb +7 -3
  8. data/app/helpers/adminpanel/application_helper.rb +7 -3
  9. data/app/helpers/adminpanel/rest_actions_helper.rb +20 -0
  10. data/app/helpers/adminpanel/router_helper.rb +2 -32
  11. data/app/helpers/adminpanel/shared_pages_helper.rb +8 -8
  12. data/app/models/adminpanel/analytic.rb +12 -0
  13. data/app/models/adminpanel/gallery.rb +48 -43
  14. data/app/models/adminpanel/section.rb +6 -2
  15. data/app/models/adminpanel/user.rb +4 -0
  16. data/app/views/adminpanel/{pages → analytics}/index.html.erb +0 -0
  17. data/app/views/adminpanel/sessions/new.html.erb +1 -1
  18. data/app/views/layouts/_side_menu.html.erb +7 -89
  19. data/app/views/shared/_gallery_entries.html.erb +11 -0
  20. data/app/views/shared/gallery_entries.js.erb +1 -0
  21. data/app/views/shared/show.html.erb +21 -9
  22. data/config/routes.rb +28 -22
  23. data/lib/adminpanel/active_record/adminpanel_extension.rb +63 -4
  24. data/lib/adminpanel/engine.rb +7 -2
  25. data/lib/adminpanel/version.rb +1 -1
  26. data/lib/generators/adminpanel/gallery/gallery_generator.rb +1 -1
  27. data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +6 -0
  28. data/lib/generators/adminpanel/gallery/templates/uploader.rb +2 -2
  29. data/lib/generators/adminpanel/initialize/initialize_generator.rb +23 -7
  30. data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +8 -3
  31. data/lib/generators/adminpanel/initialize/templates/category_template.rb +22 -9
  32. data/lib/generators/adminpanel/resource/resource_generator.rb +8 -4
  33. data/lib/tasks/adminpanel/adminpanel.rake +9 -23
  34. data/spec/dummy/.gitignore +1 -0
  35. data/spec/dummy/app/models/adminpanel/category.rb +3 -3
  36. data/spec/dummy/app/models/adminpanel/product.rb +3 -3
  37. data/spec/dummy/config/initializers/adminpanel_setup.rb +22 -0
  38. data/spec/features/galleries_pages_spec.rb +3 -28
  39. data/spec/generators/gallery_generator_spec.rb +40 -44
  40. data/spec/generators/initialize_generator_spec.rb +46 -19
  41. data/spec/generators/resource_generator_spec.rb +101 -129
  42. data/spec/spec_helper.rb +1 -2
  43. data/spec/tasks/adminpanel_rake_spec.rb +4 -4
  44. metadata +21 -14
data/Gemfile CHANGED
@@ -23,5 +23,5 @@ group :test do
23
23
  gem "capybara", "~> 1.1.4"
24
24
  gem "nokogiri", "~> 1.5.9"
25
25
  gem "rubyzip", "~> 0.9.9"
26
- gem "genspec", "~> 0.2.8"
26
+ gem "ammeter", "~> 0.2.9"
27
27
  end
data/adminpanel.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 1.3"
32
32
  spec.add_development_dependency "activerecord", "~> 3.2.12"
33
- spec.add_development_dependency "rake"
33
+ spec.add_development_dependency "rake", '10.1.1'
34
34
  spec.add_development_dependency "sqlite3"
35
35
  spec.add_development_dependency "factory_girl", "2.6.4"
36
36
  spec.add_development_dependency "rspec", "~> 2.14.0"
@@ -38,5 +38,5 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "capybara", "1.1.4"
39
39
  spec.add_development_dependency "nokogiri", "1.5.9"
40
40
  spec.add_development_dependency "rubyzip", "0.9.9"
41
- spec.add_development_dependency "genspec", "0.2.8"
41
+ spec.add_development_dependency "ammeter", "0.2.9"
42
42
  end
@@ -1,6 +1,6 @@
1
1
  module Adminpanel
2
- class PagesController < Adminpanel::ApplicationController
3
-
2
+ class AnalyticsController < Adminpanel::ApplicationController
3
+
4
4
  skip_before_filter :set_model
5
5
 
6
6
  API_VERSION = 'v3'
@@ -46,13 +46,13 @@ module Adminpanel
46
46
  startDate = DateTime.now.prev_month.strftime("%Y-%m-%d")
47
47
  endDate = DateTime.now.strftime("%Y-%m-%d")
48
48
 
49
- @visitCount = client.execute(:api_method => analytics.data.ga.get, :parameters => {
50
- 'ids' => "ga:" + profileID,
49
+ @visitCount = client.execute(:api_method => analytics.data.ga.get, :parameters => {
50
+ 'ids' => "ga:" + profileID,
51
51
  'start-date' => startDate,
52
52
  'end-date' => endDate,
53
53
  'dimensions' => "ga:day,ga:month",
54
54
  'metrics' => "ga:visits",
55
- 'sort' => "ga:month,ga:day"
55
+ 'sort' => "ga:month,ga:day"
56
56
  })
57
57
 
58
58
  @visits = @visitCount.data.rows.collect do |r|
@@ -60,7 +60,12 @@ module Adminpanel
60
60
  end
61
61
 
62
62
  @visitDates = @visitCount.data.rows.collect { |r| "#{r[0]}/#{r[1]}" }
63
+
63
64
  end
65
+ respond_to do |format|
66
+ format.html
67
+ format.json {render :json => {:visit_count => @visitCount, :visits => @visits, :visit_dates => @visitDates }}
68
+ end
64
69
  end
65
70
  end
66
- end
71
+ end
@@ -6,11 +6,10 @@ module Adminpanel
6
6
 
7
7
  include SessionsHelper
8
8
  include RestActionsHelper
9
- include RouterHelper
10
9
 
11
10
  layout "admin"
12
11
 
13
- before_filter :signed_in_user, :set_model, :get_menu_elements
12
+ before_filter :signed_in_user, :set_model
14
13
 
15
14
 
16
15
  def signed_in_user
@@ -26,8 +25,8 @@ module Adminpanel
26
25
  super
27
26
  end
28
27
 
29
- def get_menu_elements
30
- @menu_items = menu_items
31
- end
28
+ # def get_menu_elements
29
+ # @menu_items = menu_items
30
+ # end
32
31
  end
33
- end
32
+ end
@@ -8,9 +8,9 @@ module Adminpanel
8
8
  @gallery = Gallery.find(params[:id])
9
9
  end
10
10
 
11
- def edit
12
- @gallery = Gallery.find(params[:id])
13
- end
11
+ # def edit
12
+ # @gallery = Gallery.find(params[:id])
13
+ # end
14
14
 
15
15
  def create
16
16
  @gallery = Gallery.new(params[:gallery])
@@ -29,15 +29,15 @@ module Adminpanel
29
29
  else
30
30
  flash[:warning] = t("gallery.not-moved")
31
31
  end
32
- respond_to do |format|
33
- format.html do
34
- redirect_to galleries_path
35
- end
36
- format.js do
37
- @galleries = Gallery.all
38
- render :locals => { :galleries => @galleries }
39
- end
32
+ respond_to do |format|
33
+ format.html do
34
+ redirect_to galleries_path
40
35
  end
36
+ format.js do
37
+ @galleries = Gallery.all
38
+ render :locals => { :galleries => @galleries }
39
+ end
40
+ end
41
41
  end
42
42
 
43
43
  def move_worst
@@ -47,15 +47,15 @@ module Adminpanel
47
47
  else
48
48
  flash[:warning] = t("gallery.not-moved")
49
49
  end
50
- respond_to do |format|
51
- format.html do
52
- redirect_to galleries_path
53
- end
54
- format.js do
55
- @galleries = Gallery.all
56
- render :locals => { :galleries => @galleries }
57
- end
50
+ respond_to do |format|
51
+ format.html do
52
+ redirect_to galleries_path
58
53
  end
54
+ format.js do
55
+ @galleries = Gallery.all
56
+ render :locals => { :galleries => @galleries }
57
+ end
58
+ end
59
59
  end
60
60
 
61
61
  def destroy
@@ -74,8 +74,8 @@ module Adminpanel
74
74
  end
75
75
  end
76
76
 
77
- def new
78
- @gallery = Gallery.new
79
- end
77
+ # def new
78
+ # @gallery = Gallery.new
79
+ # end
80
80
  end
81
- end
81
+ end
@@ -16,6 +16,10 @@ module Adminpanel
16
16
 
17
17
  def edit
18
18
  @section = Section.find(params[:id])
19
+ respond_to do |format|
20
+ format.html
21
+ format.json {render :json => {:section => @section }}
22
+ end
19
23
  end
20
24
 
21
25
  def update
@@ -43,4 +47,4 @@ module Adminpanel
43
47
  @sections = Section.all
44
48
  end
45
49
  end
46
- end
50
+ end
@@ -5,16 +5,20 @@ module Adminpanel
5
5
  skip_before_filter :signed_in_user, :set_model
6
6
 
7
7
  def new
8
+ respond_to do |format|
9
+ format.html
10
+ format.json { render :json => {:session => @session }}
11
+ end
8
12
  end
9
13
 
10
14
  def create
11
15
  user = User.find_by_email(params[:session][:email].downcase)
12
16
  if user && user.authenticate(params[:session][:password])
13
17
  sign_in user
14
- flash[:success] = t("authentication.signin success")
18
+ flash[:success] = I18n.t("authentication.signin success")
15
19
  redirect_to root_url
16
20
  else
17
- flash.now[:error] = t("authentication.signin error")
21
+ flash.now[:error] = I18n.t("authentication.signin error")
18
22
  render 'new'
19
23
  end
20
24
  end
@@ -24,4 +28,4 @@ module Adminpanel
24
28
  redirect_to signin_path
25
29
  end
26
30
  end
27
- end
31
+ end
@@ -21,8 +21,8 @@ module Adminpanel
21
21
  end
22
22
  end
23
23
 
24
- def is_current_section?(controller_name)
25
- "adminpanel/#{controller_name.downcase.pluralize}".include?(params[:controller]) ? 'active' : nil
24
+ def is_current_section?(display_name)
25
+ display_name == params[:controller].classify.constantize.display_name ? 'active' : nil
26
26
  end
27
27
 
28
28
  def section_is_login(section_name)
@@ -42,7 +42,11 @@ module Adminpanel
42
42
  end
43
43
 
44
44
  def route_symbol(model_name)
45
- model_name.downcase.pluralize.downcase
45
+ model_name.pluralize.downcase
46
+ end
47
+
48
+ def symbol_class(symbol)
49
+ "adminpanel/#{symbol.to_s}".classify.constantize
46
50
  end
47
51
 
48
52
  def main_root_path
@@ -60,6 +60,26 @@ module Adminpanel
60
60
  end
61
61
  end
62
62
 
63
+ def move_better
64
+ respond_to do |format|
65
+ format.js do
66
+ resource = @model.find(params[:id])
67
+ resource.move_to_better_position
68
+ render 'shared/gallery_entries', :locals => { :collection => @model.where(@model.relation_field.to_sym => resource.send(@model.relation_field)) }
69
+ end
70
+ end
71
+ end
72
+
73
+ def move_worst
74
+ respond_to do |format|
75
+ format.js do
76
+ resource = @model.find(params[:id])
77
+ resource.move_to_worst_position
78
+ render 'shared/gallery_entries', :locals => { :collection => @model.where(@model.relation_field.to_sym => resource.send(@model.relation_field)) }
79
+ end
80
+ end
81
+ end
82
+
63
83
  private
64
84
 
65
85
  def set_collections
@@ -1,37 +1,7 @@
1
1
  module Adminpanel
2
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", "pages_controller.rb"]
27
- end
28
-
29
- def resources_path
30
- route = "#{Rails.root.to_s}/app/controllers/adminpanel/"
31
- if !File.directory?(route)
32
- Dir.mkdir(route)
33
- end
34
- route
3
+ def acts_as_a_gallery?(resource)
4
+ "adminpanel/#{resource}_controller".classify.constantize.resource_class.act_as_a_gallery?
35
5
  end
36
6
  end
37
7
  end
@@ -2,14 +2,14 @@ module Adminpanel
2
2
  module SharedPagesHelper
3
3
  def parent_object_name(resource, parent_model)
4
4
  @model.reflect_on_all_associations.each do |association|
5
- if association.klass.to_s == parent_model
6
- if !resource.send(association.name).nil?
7
- return resource.send(association.name).name
8
- else
9
- return "N/A"
10
- end
11
- end
12
- end
5
+ if association.klass.to_s == parent_model
6
+ if !resource.send(association.name).nil?
7
+ return resource.send(association.name).name
8
+ else
9
+ return "N/A"
10
+ end
11
+ end
12
+ end
13
13
  end
14
14
 
15
15
  def pluralize_model(class_name)
@@ -0,0 +1,12 @@
1
+ module Adminpanel
2
+ class Analytic #< ActiveRecord::Base
3
+
4
+ def self.display_name
5
+ "Google Analytics"
6
+ end
7
+
8
+ def self.icon
9
+ 'icon-dashboard'
10
+ end
11
+ end
12
+ end
@@ -6,43 +6,43 @@ module Adminpanel
6
6
 
7
7
  mount_uploader :file, Adminpanel::GalleryUploader
8
8
  validates_presence_of :file
9
- before_create :set_position
10
- before_destroy :rearrange_positions
11
9
 
10
+ act_as_a_gallery
12
11
 
13
- default_scope { order("position ASC")}
14
-
12
+ def move_to_better_position
13
+ if self.position > 1
14
+ conflicting_gallery = Gallery.find_by_position(position - 1)
15
+ self.update_attribute(:position, self.position - 1)
16
+ conflicting_gallery.update_attribute(
17
+ :position, conflicting_gallery.position + 1
18
+ )
19
+ true
20
+ else
21
+ false
22
+ end
23
+ end
15
24
 
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
25
+ def move_to_worst_position
26
+ records = self.class.count
27
+ if self.position < records
28
+ conflicting_gallery = Gallery.find_by_position(position + 1)
29
+ update_attribute(:position, self.position + 1)
30
+ conflicting_gallery.update_attribute(
31
+ :position, conflicting_gallery.position - 1
32
+ )
33
+ true
34
+ else
35
+ false
36
+ end
37
+ end
28
38
 
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
39
 
43
40
  def self.form_attributes
44
41
  [
45
- {'file' => { 'name' => 'Archivo' }}
42
+ {'file' => {
43
+ 'type' => 'file_field',
44
+ 'name' => 'Archivo' }
45
+ }
46
46
  ]
47
47
  end
48
48
 
@@ -50,22 +50,27 @@ module Adminpanel
50
50
  "Galería"
51
51
  end
52
52
 
53
- private
54
- def rearrange_positions
55
- unarranged_galleries = Gallery.where("position > ?", position)
56
- unarranged_galleries.each do |gallery|
57
- gallery.update_attribute(:position, gallery.position - 1)
58
- end
53
+ def self.icon
54
+ 'icon-picture'
55
+ end
59
56
 
60
- end
57
+ private
58
+ def rearrange_positions
59
+ unarranged_galleries = Gallery.where("position > ?", self.position)
60
+ unarranged_galleries.each do |gallery|
61
+ gallery.update_attribute(:position, gallery.position - 1)
62
+ end
63
+
64
+ end
61
65
 
62
66
  def set_position
63
- last_record = Gallery.last
64
- if last_record.nil?
65
- self.position = 1
66
- else
67
- self.position = last_record.position + 1
68
- end
67
+ last_record = Gallery.last
68
+ if last_record.nil?
69
+ self.position = 1
70
+ else
71
+ self.position = last_record.position + 1
72
+ end
69
73
  end
74
+
70
75
  end
71
76
  end