adminpanel 1.2.8 → 1.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/adminpanel.gemspec +2 -2
- data/app/controllers/adminpanel/{pages_controller.rb → analytics_controller.rb} +11 -6
- data/app/controllers/adminpanel/application_controller.rb +5 -6
- data/app/controllers/adminpanel/galleries_controller.rb +23 -23
- data/app/controllers/adminpanel/sections_controller.rb +5 -1
- data/app/controllers/adminpanel/sessions_controller.rb +7 -3
- data/app/helpers/adminpanel/application_helper.rb +7 -3
- data/app/helpers/adminpanel/rest_actions_helper.rb +20 -0
- data/app/helpers/adminpanel/router_helper.rb +2 -32
- data/app/helpers/adminpanel/shared_pages_helper.rb +8 -8
- data/app/models/adminpanel/analytic.rb +12 -0
- data/app/models/adminpanel/gallery.rb +48 -43
- data/app/models/adminpanel/section.rb +6 -2
- data/app/models/adminpanel/user.rb +4 -0
- data/app/views/adminpanel/{pages → analytics}/index.html.erb +0 -0
- data/app/views/adminpanel/sessions/new.html.erb +1 -1
- data/app/views/layouts/_side_menu.html.erb +7 -89
- data/app/views/shared/_gallery_entries.html.erb +11 -0
- data/app/views/shared/gallery_entries.js.erb +1 -0
- data/app/views/shared/show.html.erb +21 -9
- data/config/routes.rb +28 -22
- data/lib/adminpanel/active_record/adminpanel_extension.rb +63 -4
- data/lib/adminpanel/engine.rb +7 -2
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/gallery/gallery_generator.rb +1 -1
- data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +6 -0
- data/lib/generators/adminpanel/gallery/templates/uploader.rb +2 -2
- data/lib/generators/adminpanel/initialize/initialize_generator.rb +23 -7
- data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +8 -3
- data/lib/generators/adminpanel/initialize/templates/category_template.rb +22 -9
- data/lib/generators/adminpanel/resource/resource_generator.rb +8 -4
- data/lib/tasks/adminpanel/adminpanel.rake +9 -23
- data/spec/dummy/.gitignore +1 -0
- data/spec/dummy/app/models/adminpanel/category.rb +3 -3
- data/spec/dummy/app/models/adminpanel/product.rb +3 -3
- data/spec/dummy/config/initializers/adminpanel_setup.rb +22 -0
- data/spec/features/galleries_pages_spec.rb +3 -28
- data/spec/generators/gallery_generator_spec.rb +40 -44
- data/spec/generators/initialize_generator_spec.rb +46 -19
- data/spec/generators/resource_generator_spec.rb +101 -129
- data/spec/spec_helper.rb +1 -2
- data/spec/tasks/adminpanel_rake_spec.rb +4 -4
- metadata +21 -14
File without changes
|
@@ -12,42 +12,8 @@
|
|
12
12
|
%>
|
13
13
|
</div>
|
14
14
|
<div class="accordion" id="accordion2">
|
15
|
-
|
16
|
-
|
17
|
-
<div class="accordion-group">
|
18
|
-
<div class="accordion-heading">
|
19
|
-
<%=
|
20
|
-
link_to(
|
21
|
-
content_tag(
|
22
|
-
:i,
|
23
|
-
nil,
|
24
|
-
:class => 'icon-dashboard') +
|
25
|
-
content_tag(:span," #{I18n.t('model.Analytics')}"),
|
26
|
-
pages_path,
|
27
|
-
:class => "accordion-toggle b_D1B2D1 #{is_current_section?('pages')}"
|
28
|
-
)
|
29
|
-
%>
|
30
|
-
</div>
|
31
|
-
</div>
|
32
|
-
<% end %>
|
33
|
-
|
34
|
-
<div class="accordion-group">
|
35
|
-
<div class="accordion-heading">
|
36
|
-
<%=
|
37
|
-
link_to(
|
38
|
-
content_tag(
|
39
|
-
:i,
|
40
|
-
nil,
|
41
|
-
:class => 'icon-user') +
|
42
|
-
content_tag(:span,' Usuarios'),
|
43
|
-
users_path,
|
44
|
-
:class => "accordion-toggle b_9FDDF6 #{is_current_section?('users')}"
|
45
|
-
)
|
46
|
-
%>
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
|
50
|
-
<% if !Adminpanel.unincluded_modules.include?(:gallery) %>
|
15
|
+
<% Adminpanel.displayable_resources.each do |resource| %>
|
16
|
+
<% resource_class = symbol_class(resource) %>
|
51
17
|
<div class="accordion-group">
|
52
18
|
<div class="accordion-heading">
|
53
19
|
<%=
|
@@ -55,65 +21,17 @@
|
|
55
21
|
content_tag(
|
56
22
|
:i,
|
57
23
|
nil,
|
58
|
-
:class =>
|
59
|
-
content_tag(:span,
|
60
|
-
|
61
|
-
:class => "accordion-toggle
|
62
|
-
|
63
|
-
%>
|
64
|
-
</div>
|
65
|
-
</div>
|
66
|
-
<% end %>
|
67
|
-
|
68
|
-
<% if !Adminpanel.unincluded_modules.include?(:sections) %>
|
69
|
-
<div class="accordion-group">
|
70
|
-
<div class="accordion-heading">
|
71
|
-
<%=
|
72
|
-
link_to(
|
73
|
-
content_tag(:i, nil, :class => 'icon-tasks') +
|
74
|
-
content_tag(:span, ' Secciones'),
|
75
|
-
sections_path,
|
76
|
-
:class => "accordion-toggle b_F6F1A2 #{is_current_section?('sections')}"
|
77
|
-
)
|
78
|
-
%>
|
79
|
-
</div>
|
80
|
-
</div>
|
81
|
-
<% end %>
|
82
|
-
|
83
|
-
<% if !Adminpanel.unincluded_modules.include?(:categories) %>
|
84
|
-
<div class="accordion-group">
|
85
|
-
<div class="accordion-heading">
|
86
|
-
<%=
|
87
|
-
link_to(
|
88
|
-
content_tag(:i, nil, :class => 'icon-bookmark') +
|
89
|
-
content_tag(:span, " #{t('model.Categories')}"),
|
90
|
-
categories_path,
|
91
|
-
:class => "accordion-toggle b_99FFCC #{is_current_section?('categories')}"
|
24
|
+
:class => resource_class.icon) +
|
25
|
+
content_tag(:span," #{resource_class.display_name}"),
|
26
|
+
[route_symbol(resource.to_s)],
|
27
|
+
:class => "accordion-toggle b_99FFCC
|
28
|
+
#{is_current_section?(resource_class.display_name)}"
|
92
29
|
)
|
93
30
|
%>
|
94
31
|
</div>
|
95
32
|
</div>
|
96
33
|
<% end %>
|
97
34
|
|
98
|
-
|
99
|
-
<% @menu_items.each do |menu| %>
|
100
|
-
<div class="accordion-group">
|
101
|
-
<div class="accordion-heading">
|
102
|
-
<%=
|
103
|
-
link_to content_tag(
|
104
|
-
:i,
|
105
|
-
nil,
|
106
|
-
:class => "Adminpanel::#{menu}".constantize.icon
|
107
|
-
) + content_tag(
|
108
|
-
:span,
|
109
|
-
" " + pluralize_es("Adminpanel::#{menu}".constantize.display_name)
|
110
|
-
),
|
111
|
-
[route_symbol(menu)],
|
112
|
-
:class => "accordion-toggle b_F5C294 #{is_current_section?(menu)}"
|
113
|
-
%>
|
114
|
-
</div>
|
115
|
-
</div>
|
116
|
-
<% end %>
|
117
35
|
</div>
|
118
36
|
</div>
|
119
37
|
<!-- /Side menu -->
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% images.each do |image| %>
|
2
|
+
<li>
|
3
|
+
<%= link_to (image_tag image.file_url(:thumb)), image.file.to_s, :rel => "group", :name => @model.display_name %>
|
4
|
+
<ul class="rightboxes">
|
5
|
+
<li>
|
6
|
+
<%= link_to content_tag(:i, nil, :class => "icon-chevron-up"), [:move_to_better, image], :method => :put, :remote => true %>
|
7
|
+
<%= link_to content_tag(:i, nil, :class => "icon-chevron-down"), [:move_to_worst, image], :method => :put, :remote => true %>
|
8
|
+
</li>
|
9
|
+
</ul>
|
10
|
+
</li>
|
11
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
$('#gallery-entries').html("<%= escape_javascript(render 'shared/gallery_entries', :images => collection) %>")
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<div class="widget-body">
|
19
19
|
<div class="widget-tickets widget-tickets-large clearfix"><ul>
|
20
20
|
<% @model.display_attributes.each do |fields| %>
|
21
|
-
|
21
|
+
<% fields.each do |attribute, properties| %>
|
22
22
|
<% if properties["type"] != "adminpanel_file_field" %>
|
23
23
|
<li class="priority-high">
|
24
24
|
<div class="span3">
|
@@ -36,6 +36,10 @@
|
|
36
36
|
<li class="priority-low"><%= member.name %></li>
|
37
37
|
<% end %>
|
38
38
|
</ul>
|
39
|
+
<% elsif properties['type'] == 'file_field' %>
|
40
|
+
<ul>
|
41
|
+
<%= image_tag(resource.send("#{attribute}_url", :thumb)) %>
|
42
|
+
</ul>
|
39
43
|
<% else %>
|
40
44
|
<%= resource.send(attribute) -%>
|
41
45
|
<% end %>
|
@@ -56,16 +60,24 @@
|
|
56
60
|
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), [:edit, resource], :title => t("action.update") + " #{@model.display_name}" %>
|
57
61
|
</h5>
|
58
62
|
</div>
|
59
|
-
|
60
|
-
<div
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
<% if @model.act_as_a_gallery?.nil? %>
|
64
|
+
<div class="widget-body row-fluid">
|
65
|
+
<div id="gallery-container" class="js-masonry"
|
66
|
+
data-masonry-options='{ "columnWidth": 3, "itemSelector": ".gallery-item" }'>
|
67
|
+
<% resource.send(@model.get_image_relationship).each do |image|%>
|
68
|
+
<div class="gallery-item">
|
69
|
+
<%= link_to (image_tag image.file_url(:thumb)), image.file_url(:thumb).to_s, :rel => "group", :name => @model.display_name %>
|
70
|
+
</div>
|
71
|
+
<% end %>
|
72
|
+
</div>
|
66
73
|
</div>
|
67
|
-
|
74
|
+
<% else %>
|
75
|
+
<div class="widget-body widget-tasks-assigned clearfix">
|
76
|
+
<ul id="gallery-entries">
|
77
|
+
<%= render 'shared/gallery_entries', :images => resource.send(@model.get_image_relationship) %>
|
78
|
+
</ul>
|
68
79
|
</div>
|
80
|
+
<% end %>
|
69
81
|
</div>
|
70
82
|
</div>
|
71
83
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -2,34 +2,40 @@ include Adminpanel::RouterHelper
|
|
2
2
|
|
3
3
|
Adminpanel::Engine.routes.draw do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
match '/signout', :to => 'sessions#destroy', :via => :delete, :as => "signout"
|
13
|
-
match '/signin', :to => 'sessions#new', :as => "signin"
|
14
|
-
resources :users
|
15
|
-
if !Adminpanel.unincluded_modules.include?(:categories)
|
16
|
-
resources :categories
|
17
|
-
end
|
18
|
-
|
19
|
-
if !Adminpanel.unincluded_modules.include?(:gallery)
|
5
|
+
Adminpanel.displayable_resources.each do |resource|
|
6
|
+
case resource
|
7
|
+
when :sections
|
8
|
+
resources :sections, :except => [:new, :create, :destroy]
|
9
|
+
when :users
|
10
|
+
resources :users
|
11
|
+
when :galleries
|
20
12
|
resources :galleries do
|
21
13
|
member do
|
22
14
|
put :move_better, :as => "move_to_better"
|
23
15
|
put :move_worst, :as => "move_to_worst"
|
24
16
|
end
|
25
17
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
resources :pages, :path => 'analytics', :only => [:index]
|
31
|
-
root :to => 'pages#index'
|
18
|
+
when :categories
|
19
|
+
resources :categories
|
20
|
+
when :analytics
|
21
|
+
resources :analytics, :only => [:index]
|
32
22
|
else
|
33
|
-
|
23
|
+
if !acts_as_a_gallery?(resource).nil?
|
24
|
+
resources resource
|
25
|
+
resources acts_as_a_gallery?(resource).to_sym, :only => [:index] do
|
26
|
+
member do
|
27
|
+
put :move_better, :as => 'move_to_better'
|
28
|
+
put :move_worst, :as => 'move_to_worst'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
else
|
32
|
+
resources resource
|
33
|
+
end
|
34
34
|
end
|
35
|
+
end
|
36
|
+
|
37
|
+
root :to => "#{Adminpanel.displayable_resources.first}#index"
|
38
|
+
resources :sessions, :only => [:new, :create, :destroy]
|
39
|
+
match '/signout', :to => 'sessions#destroy', :via => :delete, :as => "signout"
|
40
|
+
match '/signin', :to => 'sessions#new', :as => "signin"
|
35
41
|
end
|
@@ -2,18 +2,51 @@ module ActiveRecord
|
|
2
2
|
module AdminpanelExtension
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
#instance methods
|
5
|
-
|
5
|
+
def move_to_better_position
|
6
|
+
if self.position > 1
|
7
|
+
conflicting_gallery = self.class.where(self.class.relation_field => self.send(self.class.relation_field)).find_by_position(position - 1)
|
8
|
+
self.update_attribute(:position, self.position - 1)
|
9
|
+
conflicting_gallery.update_attribute(
|
10
|
+
:position, conflicting_gallery.position + 1
|
11
|
+
)
|
12
|
+
true
|
13
|
+
else
|
14
|
+
false
|
15
|
+
end
|
16
|
+
end
|
6
17
|
|
7
|
-
|
18
|
+
def move_to_worst_position
|
19
|
+
records = self.class.count
|
20
|
+
if self.position < records
|
21
|
+
conflicting_gallery = self.class.where(self.class.relation_field => self.send(self.class.relation_field)).find_by_position(position + 1)
|
22
|
+
update_attribute(:position, self.position + 1)
|
23
|
+
conflicting_gallery.update_attribute(
|
24
|
+
:position, conflicting_gallery.position - 1
|
25
|
+
)
|
26
|
+
true
|
27
|
+
else
|
28
|
+
false
|
29
|
+
end
|
30
|
+
end
|
8
31
|
|
9
32
|
# static(class) methods
|
10
33
|
module ClassMethods
|
11
|
-
|
12
34
|
def mount_images(relation)
|
13
35
|
has_many relation, :dependent => :destroy
|
14
36
|
accepts_nested_attributes_for relation, :allow_destroy => true
|
15
37
|
end
|
16
38
|
|
39
|
+
def act_as_a_gallery
|
40
|
+
before_create :set_position
|
41
|
+
before_destroy :rearrange_positions
|
42
|
+
|
43
|
+
default_scope { order("position ASC")}
|
44
|
+
end
|
45
|
+
|
46
|
+
# def self.of_parent(field, id)
|
47
|
+
# where(field.to_sym => id)
|
48
|
+
# end
|
49
|
+
|
17
50
|
def form_attributes
|
18
51
|
[{
|
19
52
|
"name" => {
|
@@ -122,9 +155,35 @@ module ActiveRecord
|
|
122
155
|
def icon
|
123
156
|
"icon-truck"
|
124
157
|
end
|
158
|
+
|
159
|
+
def act_as_a_gallery?
|
160
|
+
nil
|
161
|
+
end
|
162
|
+
|
163
|
+
def self.relation_field
|
164
|
+
'undefined_relation_field'
|
165
|
+
end
|
125
166
|
end
|
126
|
-
end
|
127
167
|
|
168
|
+
private
|
169
|
+
def rearrange_positions
|
170
|
+
unarranged_galleries = self.class.where(self.class.relation_field => self.send(self.class.relation_field)).where("position > ?", self.position)
|
171
|
+
unarranged_galleries.each do |gallery|
|
172
|
+
gallery.update_attribute(:position, gallery.position - 1)
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
def set_position
|
178
|
+
last_record = self.class.where(self.class.relation_field => self.send(self.class.relation_field)).last
|
179
|
+
if last_record.nil?
|
180
|
+
self.position = 1
|
181
|
+
else
|
182
|
+
self.position = last_record.position + 1
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
end
|
128
187
|
# include the extension
|
129
188
|
ActiveRecord::Base.send(:include, AdminpanelExtension)
|
130
189
|
end
|
data/lib/adminpanel/engine.rb
CHANGED
@@ -5,11 +5,16 @@ module Adminpanel
|
|
5
5
|
|
6
6
|
class << self
|
7
7
|
mattr_accessor :analytics_profile_id, :analytics_key_path, :analytics_key_filename,
|
8
|
-
:
|
8
|
+
:displayable_resources
|
9
9
|
self.analytics_profile_id = nil
|
10
10
|
self.analytics_key_path = "config/analytics"
|
11
11
|
self.analytics_key_filename = nil
|
12
|
-
self.
|
12
|
+
self.displayable_resources = [
|
13
|
+
:analytics,
|
14
|
+
:users,
|
15
|
+
:galleries,
|
16
|
+
:sections
|
17
|
+
]
|
13
18
|
end
|
14
19
|
|
15
20
|
def self.setup(&block)
|
data/lib/adminpanel/version.rb
CHANGED
@@ -17,7 +17,7 @@ module Adminpanel
|
|
17
17
|
|
18
18
|
# THE THUMB VERSION IS NECESSARY!!!!
|
19
19
|
version :thumb do
|
20
|
-
process :resize_to_limit => [
|
20
|
+
process :resize_to_limit => [80, 80]
|
21
21
|
end
|
22
22
|
|
23
23
|
# however, you can create your own versions:
|
@@ -70,7 +70,7 @@ module Adminpanel
|
|
70
70
|
# resize_to_limit(width, height)
|
71
71
|
#
|
72
72
|
# Resize the image to fit within the specified dimensions while retaining
|
73
|
-
# the original aspect ratio. Will only resize the image if it is larger than
|
73
|
+
# the original aspect ratio. Will only resize the image if it is larger than
|
74
74
|
# the specified dimensions. The resulting image may be shorter or narrower
|
75
75
|
# than specified in the smaller dimension but will not be larger than the
|
76
76
|
# specified values.
|
@@ -5,10 +5,26 @@ module Adminpanel
|
|
5
5
|
desc "Generate the migrations necessary to start the gem"
|
6
6
|
source_root File.expand_path("../templates", __FILE__)
|
7
7
|
argument :name, :type => :string, :default => "default", :require => false
|
8
|
-
class_option :'skip-category',
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
class_option :'skip-category',
|
9
|
+
:type => :boolean,
|
10
|
+
:aliases => '-c',
|
11
|
+
:default => false,
|
12
|
+
:desc => "Skip category skeleton and migration for it if true"
|
13
|
+
class_option :'skip-section-uploader',
|
14
|
+
:type => :boolean,
|
15
|
+
:aliases => '-u',
|
16
|
+
:default => false,
|
17
|
+
:desc => 'Skip section uploader if true'
|
18
|
+
class_option :'skip-migration',
|
19
|
+
:type => :boolean,
|
20
|
+
:aliases => '-m',
|
21
|
+
:default => false,
|
22
|
+
:desc => 'Skip initial migrations if true'
|
23
|
+
class_option :'skip-setup',
|
24
|
+
:type => :boolean,
|
25
|
+
:aliases => '-p',
|
26
|
+
:default => false,
|
27
|
+
:desc => 'Skip setup if true'
|
12
28
|
|
13
29
|
def create_initializers
|
14
30
|
if !options[:'skip-setup']
|
@@ -25,12 +41,12 @@ module Adminpanel
|
|
25
41
|
end
|
26
42
|
|
27
43
|
def create_section_uploader
|
28
|
-
if !options[:'skip-uploader']
|
29
|
-
copy_file "section_uploader.rb", 'app/
|
44
|
+
if !options[:'skip-section-uploader']
|
45
|
+
copy_file "section_uploader.rb", 'app/uploaders/adminpanel/section_uploader.rb'
|
30
46
|
end
|
31
47
|
end
|
32
48
|
|
33
|
-
def
|
49
|
+
def create_adminpanel_migration
|
34
50
|
if !options[:'skip-migration']
|
35
51
|
migration_template 'create_adminpanel_tables.rb', 'db/migrate/create_adminpanel_tables.rb'
|
36
52
|
end
|