adminpanel 1.2.11 → 1.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/images/adminpanel/favicon.ico +0 -0
- data/app/assets/javascripts/adminpanel/images_form.js +11 -5
- data/app/controllers/adminpanel/analytics_controller.rb +19 -14
- data/app/models/adminpanel/gallery.rb +1 -1
- data/app/views/adminpanel/categories/index.html.erb +1 -1
- data/app/views/adminpanel/sections/edit.html.erb +6 -4
- data/app/views/shared/_form_fields.html.erb +7 -5
- data/app/views/shared/index.html.erb +2 -2
- data/app/views/shared/show.html.erb +1 -1
- data/lib/adminpanel/active_record/adminpanel_extension.rb +4 -2
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/gallery/gallery_generator.rb +0 -6
- data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +2 -1
- data/lib/generators/adminpanel/resource/resource_generator.rb +10 -9
- data/lib/tasks/adminpanel/adminpanel.rake +6 -1
- data/spec/generators/resource_generator_spec.rb +4 -0
- metadata +4 -4
Binary file
|
@@ -1,14 +1,20 @@
|
|
1
1
|
$(document).ready(function(){
|
2
2
|
$('form').on('click', '.add_fields', function(e) {
|
3
|
-
time = new Date().getTime();
|
4
|
-
regexp = new RegExp($(this).data('id'), 'g');
|
5
|
-
$(this).before($(this).data('fields').replace(regexp, time));
|
6
3
|
e.preventDefault();
|
4
|
+
var $collectionContainer = $(this).closest('.file-collection-container');
|
5
|
+
var maxFiles = $collectionContainer.data('max');
|
6
|
+
var numberOfFiles = $collectionContainer.find('.product-image:not(.hidden)').length + 1;
|
7
|
+
|
8
|
+
if (maxFiles == '0' || numberOfFiles <= maxFiles) {
|
9
|
+
time = new Date().getTime();
|
10
|
+
regexp = new RegExp($(this).data('id'), 'g');
|
11
|
+
$(this).before($(this).data('fields').replace(regexp, time));
|
12
|
+
}
|
7
13
|
});
|
8
14
|
|
9
15
|
$('form').on('click', '.remove_fields', function(e){
|
10
16
|
$(this).prev('input[type=hidden]').val('1');
|
11
|
-
$(this).parent().parent().parent().
|
17
|
+
$(this).parent().parent().parent().addClass('hidden');
|
12
18
|
e.preventDefault();
|
13
19
|
});
|
14
|
-
});
|
20
|
+
});
|
@@ -15,8 +15,9 @@ module Adminpanel
|
|
15
15
|
|
16
16
|
|
17
17
|
client = Google::APIClient.new(
|
18
|
-
:application_name => '
|
19
|
-
:application_version => '1.0.0'
|
18
|
+
:application_name => 'AdminPanel',
|
19
|
+
:application_version => '1.0.0'
|
20
|
+
)
|
20
21
|
|
21
22
|
analytics = nil
|
22
23
|
# Load cached discovered API, if it exists. This prevents retrieving the
|
@@ -35,10 +36,11 @@ module Adminpanel
|
|
35
36
|
key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret)
|
36
37
|
client.authorization = Signet::OAuth2::Client.new(
|
37
38
|
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
:audience => 'https://accounts.google.com/o/oauth2/token',
|
40
|
+
:authorization_uri => 'https://accounts.google.com/o/oauth2/auth',
|
41
|
+
:scope => 'https://www.googleapis.com/auth/analytics.readonly',
|
42
|
+
:issuer => service_account_email,
|
43
|
+
:signing_key => key
|
42
44
|
)
|
43
45
|
# Request a token for our service account
|
44
46
|
client.authorization.fetch_access_token!
|
@@ -46,14 +48,17 @@ module Adminpanel
|
|
46
48
|
startDate = DateTime.now.prev_month.strftime("%Y-%m-%d")
|
47
49
|
endDate = DateTime.now.strftime("%Y-%m-%d")
|
48
50
|
|
49
|
-
@visitCount = client.execute(
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
@visitCount = client.execute(
|
52
|
+
:api_method => analytics.data.ga.get,
|
53
|
+
:parameters => {
|
54
|
+
'ids' => "ga:#{profileID}",
|
55
|
+
'start-date' => startDate,
|
56
|
+
'end-date' => endDate,
|
57
|
+
'dimensions' => "ga:day,ga:month",
|
58
|
+
'metrics' => "ga:visits",
|
59
|
+
'sort' => "ga:month,ga:day"
|
60
|
+
}
|
61
|
+
)
|
57
62
|
|
58
63
|
@visits = @visitCount.data.rows.collect do |r|
|
59
64
|
r[2]
|
@@ -22,11 +22,13 @@
|
|
22
22
|
<% end %>
|
23
23
|
|
24
24
|
<% if @section.has_image %>
|
25
|
-
<%=
|
26
|
-
<%=
|
27
|
-
|
25
|
+
<%= content_tag :div, :class => 'file-collection-container', :data => {:max => 1} do %>
|
26
|
+
<%= f.fields_for :images do |builder| %>
|
27
|
+
<%= render 'shared/image_fields', :f => builder %>
|
28
|
+
<% end -%>
|
28
29
|
|
29
|
-
|
30
|
+
<%= link_to_add_fields "Agregar Imagen", f, :images %>
|
31
|
+
<% end %>
|
30
32
|
<% end %>
|
31
33
|
</div>
|
32
34
|
</div>
|
@@ -14,10 +14,12 @@
|
|
14
14
|
|
15
15
|
<% elsif properties["type"] == "adminpanel_file_field" %>
|
16
16
|
<% if !defined? remote_request %>
|
17
|
-
<%=
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
<%= content_tag :div, :class => 'file-collection-container', :data => {:max => properties['max-files'].nil? ? 0 : properties['max-files'] } do %>
|
18
|
+
<%= f.fields_for(attribute) do |builder| %>
|
19
|
+
<%= render 'shared/image_fields', :f => builder %>
|
20
|
+
<% end -%>
|
21
|
+
<%= link_to_add_fields t("Add Image"), f, attribute %>
|
22
|
+
<% end %>
|
21
23
|
|
22
24
|
<% end %>
|
23
25
|
<% elsif properties["type"] == "belongs_to" %>
|
@@ -88,7 +90,7 @@
|
|
88
90
|
%>
|
89
91
|
<% end %>
|
90
92
|
<% end %>
|
91
|
-
|
93
|
+
|
92
94
|
<% else %>
|
93
95
|
<% type = properties["type"] %>
|
94
96
|
<% args = properties.except("type", "name") %>
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<table id="information-table" class="table table-striped table-bordered dataTable">
|
26
26
|
<thead><!-- model attributes -->
|
27
27
|
<tr>
|
28
|
-
<% @model.display_attributes.each do |fields| %>
|
28
|
+
<% @model.display_attributes('index').each do |fields| %>
|
29
29
|
<% fields.each do |attribute, properties| %>
|
30
30
|
<% if properties["type"] != "adminpanel_file_field" && properties["type"] != "has_many" %>
|
31
31
|
<th><%= properties["label"] %></th>
|
@@ -38,7 +38,7 @@
|
|
38
38
|
<tbody>
|
39
39
|
<% collection.each do |member| %>
|
40
40
|
<tr>
|
41
|
-
<% @model.display_attributes.each do |fields| %>
|
41
|
+
<% @model.display_attributes('index').each do |fields| %>
|
42
42
|
<% fields.each do |attribute, properties| %>
|
43
43
|
<% if properties["type"] == "wysiwyg_field" %>
|
44
44
|
<td><%= member.send(attribute).html_safe -%></td>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
</div>
|
18
18
|
<div class="widget-body">
|
19
19
|
<div class="widget-tickets widget-tickets-large clearfix"><ul>
|
20
|
-
<% @model.display_attributes.each do |fields| %>
|
20
|
+
<% @model.display_attributes('show').each do |fields| %>
|
21
21
|
<% fields.each do |attribute, properties| %>
|
22
22
|
<% if properties["type"] != "adminpanel_file_field" %>
|
23
23
|
<li class="priority-high">
|
@@ -89,11 +89,13 @@ module ActiveRecord
|
|
89
89
|
return ":("
|
90
90
|
end
|
91
91
|
|
92
|
-
def display_attributes
|
92
|
+
def display_attributes(type)
|
93
93
|
display_attributes = []
|
94
94
|
form_attributes.each do |attribute|
|
95
95
|
attribute.each do |name, properties|
|
96
|
-
if properties[
|
96
|
+
if properties['show'].nil? ||
|
97
|
+
properties['show'] == 'true' ||
|
98
|
+
properties['show'] == type
|
97
99
|
display_attributes << attribute
|
98
100
|
end
|
99
101
|
end
|
data/lib/adminpanel/version.rb
CHANGED
@@ -5,12 +5,6 @@ module Adminpanel
|
|
5
5
|
source_root File.expand_path("../templates", __FILE__)
|
6
6
|
desc "Generate the resource files necessary to use a model"
|
7
7
|
|
8
|
-
# argument :reference_model,
|
9
|
-
# :aliases => "-m",
|
10
|
-
# :type => :string,
|
11
|
-
# :require => true,
|
12
|
-
# :desc => 'Choose the model that you want the uploader to belong_to'
|
13
|
-
|
14
8
|
def create_model
|
15
9
|
template 'gallery_template.rb', "app/models/adminpanel/#{lower_name}.rb"
|
16
10
|
end
|
@@ -6,7 +6,7 @@ class CreateAdminpanelTables < ActiveRecord::Migration
|
|
6
6
|
if Rails.env.development?
|
7
7
|
group = Adminpanel::Group.new(:name => "Admin")
|
8
8
|
group.save
|
9
|
-
Adminpanel::User.new(:email => 'admin@admin.com', :name => "Admin", :password => 'password', :password_confirmation => 'password', :group_id => group.
|
9
|
+
Adminpanel::User.new(:email => 'admin@admin.com', :name => "Admin", :password => 'password', :password_confirmation => 'password', :group_id => group.id).save
|
10
10
|
puts "The password for admin@admin.com is: password"
|
11
11
|
|
12
12
|
end
|
@@ -17,6 +17,7 @@ class CreateAdminpanelTables < ActiveRecord::Migration
|
|
17
17
|
create_table :adminpanel_users do |t|
|
18
18
|
t.string :name
|
19
19
|
t.string :email
|
20
|
+
t.string :group_id
|
20
21
|
t.string :password_digest
|
21
22
|
t.string :remember_token
|
22
23
|
t.timestamps
|
@@ -112,20 +112,22 @@ module Adminpanel
|
|
112
112
|
fields.each do |attribute|
|
113
113
|
|
114
114
|
assign_attributes_variables(attribute)
|
115
|
-
|
116
|
-
|
115
|
+
case(@attr_type)
|
116
|
+
when 'string', 'float'
|
117
117
|
form_hash = form_hash + "#{attribute_hash('text_field')}"
|
118
|
-
|
118
|
+
when 'text', 'wysiwyg'
|
119
119
|
form_hash = form_hash + "#{attribute_hash('wysiwyg_field')}"
|
120
|
-
|
120
|
+
when 'integer'
|
121
121
|
form_hash = form_hash + "#{attribute_hash('number_field')}"
|
122
|
-
|
122
|
+
when 'boolean'
|
123
|
+
form_hash = form_hash + "#{attribute_hash('boolean')}"
|
124
|
+
when 'datepicker'
|
123
125
|
form_hash = form_hash + "#{attribute_hash('datepicker')}"
|
124
|
-
|
126
|
+
when 'images'
|
125
127
|
form_hash = form_hash + "#{file_field_hash}"
|
126
|
-
|
128
|
+
when 'belongs_to'
|
127
129
|
form_hash = form_hash + "#{belongs_to_attribute_hash(belongs_to_field(@attr_field))}"
|
128
|
-
|
130
|
+
when 'has_many', 'has_many_through'
|
129
131
|
if models_in_parameter(@attr_field).second.nil?
|
130
132
|
through_model = @attr_field
|
131
133
|
else
|
@@ -187,7 +189,6 @@ module Adminpanel
|
|
187
189
|
|
188
190
|
def model_type(type)
|
189
191
|
"\n\t\t\t\t\t'model' => 'Adminpanel::#{type}'"
|
190
|
-
|
191
192
|
end
|
192
193
|
|
193
194
|
def migration_string(field, type)
|
@@ -41,12 +41,17 @@ namespace :adminpanel do
|
|
41
41
|
user.delete
|
42
42
|
end
|
43
43
|
|
44
|
+
group = Adminpanel::Group.find_by_name("Admin")
|
45
|
+
if group.nil?
|
46
|
+
group = Adminpanel::Group.new(:name => "Admin")
|
47
|
+
group.save
|
48
|
+
end
|
44
49
|
Adminpanel::User.new(
|
45
50
|
:email => 'admin@codn.com',
|
46
51
|
:name => 'CoDN',
|
47
52
|
:password => password,
|
48
53
|
:password_confirmation => password,
|
49
|
-
:group_id =>
|
54
|
+
:group_id => group.id
|
50
55
|
).save
|
51
56
|
end
|
52
57
|
|
@@ -22,6 +22,7 @@ describe Adminpanel::Generators::ResourceGenerator do
|
|
22
22
|
name
|
23
23
|
description:wysiwyg
|
24
24
|
number:float
|
25
|
+
flag:boolean
|
25
26
|
quantity:integer
|
26
27
|
date:datepicker
|
27
28
|
photo:images
|
@@ -37,6 +38,7 @@ describe Adminpanel::Generators::ResourceGenerator do
|
|
37
38
|
migration_file('db/migrate/create_posts_table.rb').should(
|
38
39
|
contain(/t.string :name/) &&
|
39
40
|
contain(/t.float :number/) &&
|
41
|
+
contain(/t.boolean :flag/) &&
|
40
42
|
contain(/t.integer :quantity/) &&
|
41
43
|
contain(/t.string :date/) &&
|
42
44
|
contain(/t.text :description/)
|
@@ -70,6 +72,8 @@ describe Adminpanel::Generators::ResourceGenerator do
|
|
70
72
|
contain(/'type' => 'text_field',/) &&
|
71
73
|
contain(/'number' => \{/) &&
|
72
74
|
contain(/'type' => 'text_field',/) &&
|
75
|
+
contain(/'flag' => \{/) &&
|
76
|
+
contain(/'type' => 'boolean',/) &&
|
73
77
|
contain(/'quantity' => \{/) &&
|
74
78
|
contain(/'type' => 'number_field',/) &&
|
75
79
|
contain(/'date' => \{/) &&
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adminpanel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 12
|
10
|
+
version: 1.2.12
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jose Ramon Camacho
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2014-04-
|
19
|
+
date: 2014-04-30 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|