adminpanel 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/adminpanel/section.rb +4 -1
- data/lib/adminpanel/version.rb +1 -1
- data/lib/tasks/adminpanel/adminpanel.rake +93 -43
- data/spec/tasks/adminpanel_rake_spec.rb +18 -2
- metadata +4 -8
- data/app/views/adminpanel/sections/create.html.erb +0 -2
- data/app/views/adminpanel/sections/destroy.html.erb +0 -2
- data/app/views/adminpanel/sections/new.html.erb +0 -27
- data/app/views/adminpanel/sections/update.html.erb +0 -2
@@ -3,8 +3,11 @@ require 'carrierwave/orm/activerecord'
|
|
3
3
|
module Adminpanel
|
4
4
|
class Section < ActiveRecord::Base
|
5
5
|
attr_accessible :description, :has_image, :key, :page, :name, :has_description, :images_attributes
|
6
|
+
|
6
7
|
has_many :images, :foreign_key => "foreign_key", :conditions => { :model => "Section" }
|
7
8
|
accepts_nested_attributes_for :images, :allow_destroy => true
|
9
|
+
|
10
|
+
|
8
11
|
validates_length_of :description, :minimum => 10, :maximum => 10, :on => :update, :if => lambda{|section| section.key == "telephone"}
|
9
12
|
validates_presence_of :description, :minimum => 9, :on => :update, :if => lambda{|section| section.has_description == true}
|
10
13
|
validates :description, :numericality => { :only_integer => true }, :on => :update, :if => lambda{|section| section.key == "telephone"}
|
@@ -20,4 +23,4 @@ module Adminpanel
|
|
20
23
|
"Section"
|
21
24
|
end
|
22
25
|
end
|
23
|
-
end
|
26
|
+
end
|
data/lib/adminpanel/version.rb
CHANGED
@@ -1,75 +1,125 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
namespace :adminpanel do
|
2
|
+
desc "Interact with adminpanel models :D"
|
3
|
+
|
4
|
+
task :section, [:section, :name, :type] => :environment do |t, args|
|
5
|
+
args.with_defaults(:section => "home", :name => "greeting", :type => "wysiwyg")
|
6
|
+
puts "Creating #{args[:name]} in #{args[:section]} section"
|
7
|
+
|
8
|
+
s = Adminpanel::Section.new(
|
9
|
+
:name => args[:name].titleize,
|
10
|
+
:has_description => false,
|
11
|
+
:description => "",
|
12
|
+
:key => args[:name].underscore,
|
13
|
+
:page => args[:section],
|
14
|
+
:has_image => false
|
15
|
+
)
|
16
|
+
|
17
|
+
args[:type].split(" ").each do |type|
|
18
|
+
case type
|
19
|
+
when "wysiwyg" || "description"
|
20
|
+
s.has_description = true
|
21
|
+
when "images"
|
22
|
+
s.has_image = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
s.save
|
26
|
+
end
|
3
27
|
|
4
|
-
|
28
|
+
task :dump_sections => :environment do |t|
|
29
|
+
puts "Dumping adminpanel_sections table into db/seeds.rb"
|
30
|
+
File.open("db/seeds.rb", "w") do |f|
|
31
|
+
f << "Adminpanel::Section.delete_all\n"
|
32
|
+
Adminpanel::Section.all.each do |section|
|
33
|
+
f << "#{creation_command(section)}"
|
34
|
+
end
|
5
35
|
|
6
|
-
|
36
|
+
end
|
7
37
|
|
8
|
-
|
38
|
+
end
|
9
39
|
|
10
|
-
|
40
|
+
task :dump => :dump_sections
|
11
41
|
|
12
|
-
|
42
|
+
task :populate, [:times, :model, :attributes] => :environment do |t, args|
|
13
43
|
|
14
|
-
|
15
|
-
args[:times].to_i.times do |time|
|
16
|
-
instance = model.new
|
17
|
-
attributes.each do |attribute|
|
18
|
-
field = attribute.split(":").first
|
19
|
-
type = attribute.split(":").second
|
44
|
+
puts "Generating #{args[:times]} records of #{args[:model]}"
|
20
45
|
|
21
|
-
|
22
|
-
when "name" #generate a name
|
23
|
-
value = generate_name
|
46
|
+
model = "adminpanel/#{args[:model]}".classify.constantize
|
24
47
|
|
25
|
-
|
26
|
-
value = @things.sample.pluralize
|
48
|
+
attributes = args[:attributes].split(" ")
|
27
49
|
|
28
|
-
|
29
|
-
value = generate_lorem_name #lorem random short sentence
|
50
|
+
init_variables
|
30
51
|
|
31
|
-
|
32
|
-
|
52
|
+
has_image = false
|
53
|
+
args[:times].to_i.times do |time|
|
54
|
+
instance = model.new
|
55
|
+
attributes.each do |attribute|
|
56
|
+
field = attribute.split(":").first
|
57
|
+
type = attribute.split(":").second
|
33
58
|
|
34
|
-
|
35
|
-
|
59
|
+
case type
|
60
|
+
when "name" #generate a name
|
61
|
+
value = generate_name
|
36
62
|
|
37
|
-
|
38
|
-
|
39
|
-
field = "#{field}_id"
|
63
|
+
when "category" || "category_name" #generate a category name
|
64
|
+
value = @things.sample.pluralize
|
40
65
|
|
41
|
-
|
42
|
-
|
66
|
+
when "lorem_name" || "sentence"
|
67
|
+
value = generate_lorem_name #lorem random short sentence
|
43
68
|
|
44
|
-
|
45
|
-
|
46
|
-
@file_url = "http://placehold.it/#{field}"
|
69
|
+
when "description" || "lorem" #large paragraph.
|
70
|
+
value = generate_lorem
|
47
71
|
|
48
|
-
|
49
|
-
|
72
|
+
when "number" #generate a number
|
73
|
+
value = [*1..5000].sample
|
50
74
|
|
51
|
-
|
75
|
+
when "id" #assign field_id it to a random instance of Adminpanel::field
|
76
|
+
value = "adminpanel/#{field}".classify.constantize.order("RAND()").first.id
|
77
|
+
field = "#{field}_id"
|
52
78
|
|
53
|
-
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
79
|
+
when "email" #generates a random email
|
80
|
+
value = generate_email
|
57
81
|
|
58
|
-
|
82
|
+
when "image" #force an image...
|
83
|
+
has_image = true
|
84
|
+
@file_url = "http://placehold.it/#{field}"
|
59
85
|
|
60
|
-
|
86
|
+
else #no type
|
87
|
+
value = "#{time + 1} Lorem ipsum dolor sit amec"
|
61
88
|
|
62
|
-
if(has_image) #forcing the image into the db
|
63
|
-
create_image_associated_to_id(instance.id)
|
64
89
|
end
|
65
90
|
|
91
|
+
if(type != "image")
|
92
|
+
instance.send("#{field}=", value)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
instance.save
|
97
|
+
|
98
|
+
change_update_date(instance)
|
99
|
+
|
100
|
+
if(has_image) #forcing the image into the db
|
101
|
+
create_image_associated_to_id(instance.id)
|
66
102
|
end
|
67
103
|
|
68
104
|
end
|
105
|
+
|
69
106
|
end
|
107
|
+
end
|
70
108
|
|
71
109
|
private
|
72
110
|
|
111
|
+
def creation_command(section)
|
112
|
+
"Adminpanel::Section.new(\n" +
|
113
|
+
":name => \"#{section.name}\",\n" +
|
114
|
+
"\t:has_description => #{section.has_description},\n" +
|
115
|
+
"\t:description => \"#{section.description}\",\n" +
|
116
|
+
"\t:key => \"#{section.key}\",\n" +
|
117
|
+
"\t:page => \"#{section.page}\",\n" +
|
118
|
+
"\t:has_image => #{section.has_image}\n" +
|
119
|
+
").save\n"
|
120
|
+
|
121
|
+
end
|
122
|
+
|
73
123
|
def create_image_of(model_id)
|
74
124
|
image_instance = Adminpanel::Image.new(
|
75
125
|
:model => model.display_name,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "adminpanel
|
3
|
+
describe "adminpanel rake task" do
|
4
4
|
|
5
5
|
before :all do
|
6
6
|
Rake.application.rake_require "tasks/adminpanel/adminpanel"
|
@@ -16,7 +16,7 @@ describe "adminpanel namespace task" do
|
|
16
16
|
|
17
17
|
|
18
18
|
it "should generate 20 product records" do
|
19
|
-
Adminpanel::Product.count.should eq 20
|
19
|
+
Adminpanel::Product.all.count.should eq 20
|
20
20
|
end
|
21
21
|
|
22
22
|
it "attributes shouldn't be nil" do
|
@@ -29,4 +29,20 @@ describe "adminpanel namespace task" do
|
|
29
29
|
has_nil_attribute.should eq false
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
describe "adminpanel:section[about, mission]" do
|
34
|
+
before do
|
35
|
+
Rake.application.invoke_task "adminpanel:section[about, mission]"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should create a section with name 'mission' and section 'about'" do
|
39
|
+
(
|
40
|
+
(Adminpanel::Section.last.name.should eq("Mission")) &&
|
41
|
+
(Adminpanel::Section.last.page.should eq("about")) &&
|
42
|
+
(Adminpanel::Section.last.key.should eq("mission")) &&
|
43
|
+
(Adminpanel::Section.last.has_description.should be_true) &&
|
44
|
+
(Adminpanel::Section.last.has_image.should be_false)
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
32
48
|
end
|
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: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 2
|
10
|
+
version: 1.2.2
|
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-03-
|
19
|
+
date: 2014-03-10 00:00:00 -06:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -446,13 +446,9 @@ files:
|
|
446
446
|
- app/views/adminpanel/pages/index.html.erb
|
447
447
|
- app/views/adminpanel/sections/_image_fields.html.erb
|
448
448
|
- app/views/adminpanel/sections/_sections_table.html.erb
|
449
|
-
- app/views/adminpanel/sections/create.html.erb
|
450
|
-
- app/views/adminpanel/sections/destroy.html.erb
|
451
449
|
- app/views/adminpanel/sections/edit.html.erb
|
452
450
|
- app/views/adminpanel/sections/index.html.erb
|
453
|
-
- app/views/adminpanel/sections/new.html.erb
|
454
451
|
- app/views/adminpanel/sections/show.html.erb
|
455
|
-
- app/views/adminpanel/sections/update.html.erb
|
456
452
|
- app/views/adminpanel/sessions/new.html.erb
|
457
453
|
- app/views/adminpanel/users/_user_form.html.erb
|
458
454
|
- app/views/adminpanel/users/edit.html.erb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
<% provide(:page_title, "Nueva") %>
|
2
|
-
<% breadcrumb_add('Secciones', sections_path) %>
|
3
|
-
<div class="row-fluid">
|
4
|
-
<div class = "widget widget-padding span12">
|
5
|
-
<div class = "widget-header"><i class = "icon-tasks"></i><h5>Sección</h5></div>
|
6
|
-
<div class = "widget-body">
|
7
|
-
<div class = "widget-forms clearfix">
|
8
|
-
<%= custom_form_for(@section, :url => sections_path) do |f| %>
|
9
|
-
<%= render 'shared/error_messages', :object => @section %>
|
10
|
-
<%= f.text_field :name, :label => "Nombre", :placeholder => "Nombre de la seccion" %>
|
11
|
-
<%= f.text_field :key, :label => "Identificador", :placeholder => "Identificador" %>
|
12
|
-
<div class="control-group">
|
13
|
-
<label class="control-label">Descripción</label>
|
14
|
-
<div class="controls">
|
15
|
-
<%= f.cktext_area :description, :label => t("Description") %>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
<%= f.radio_button_group :has_image, ['1', '0'], :label => "Tiene Imagen" %>
|
19
|
-
<%= f.radio_button_group :has_description, ['1', '0'], :label => "Tiene Descripcion" %>
|
20
|
-
</div>
|
21
|
-
</div>
|
22
|
-
<div class = "widget-footer">
|
23
|
-
<%= f.submit "Agregar", :disable_with => 'Submiting...' %>
|
24
|
-
</div>
|
25
|
-
<% end -%>
|
26
|
-
</div>
|
27
|
-
</div>
|