adminpanel 0.0.7 → 0.1.0cl
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/app/controllers/adminpanel/clients_controller.rb +45 -0
- data/app/controllers/adminpanel/galleries_controller.rb +1 -1
- data/app/controllers/adminpanel/users_controller.rb +1 -1
- data/app/helpers/adminpanel/application_helper.rb +1 -1
- data/app/models/adminpanel/client.rb +11 -0
- data/app/models/adminpanel/section.rb +1 -2
- data/app/uploaders/adminpanel/{section_uploader.rb → client_uploader.rb} +7 -5
- data/app/views/adminpanel/clients/_client_form.html.erb +22 -0
- data/app/views/adminpanel/clients/edit.html.erb +9 -0
- data/app/views/adminpanel/clients/index.html.erb +53 -0
- data/app/views/adminpanel/clients/new.html.erb +9 -0
- data/app/views/adminpanel/clients/show.html.erb +18 -0
- data/app/views/adminpanel/galleries/index.html.erb +7 -7
- data/app/views/adminpanel/galleries/new.html.erb +3 -3
- data/app/views/adminpanel/products/_product_form.html.erb +1 -1
- data/app/views/adminpanel/products/index.html.erb +0 -2
- data/app/views/adminpanel/products/show.html.erb +1 -1
- data/app/views/adminpanel/sections/_image_fields.html.erb +1 -1
- data/app/views/adminpanel/sections/edit.html.erb +4 -4
- data/app/views/adminpanel/sections/show.html.erb +4 -5
- data/app/views/adminpanel/users/index.html.erb +12 -18
- data/app/views/adminpanel/users/new.html.erb +1 -1
- data/app/views/layouts/_side_menu.html.erb +22 -16
- data/app/views/layouts/_top_bar.html.erb +11 -11
- data/config/locales/es.yml +20 -2
- data/config/routes.rb +1 -0
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/install/templates/migrations/create_adminpanel_tables.rb +7 -1
- data/spec/dummy/config/application.rb +2 -2
- data/spec/dummy/public/uploads/gallery/file/1/hipster.jpg +0 -0
- data/spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg +0 -0
- data/spec/features/categories_pages_spec.rb +3 -3
- data/spec/features/galleries_pages_spec.rb +57 -0
- data/spec/features/product_pages_spec.rb +15 -4
- data/spec/features/section_pages_spec.rb +38 -0
- data/spec/features/user_pages_spec.rb +49 -0
- data/spec/models/section_spec.rb +0 -2
- data/spec/support/define_factory_models.rb +19 -0
- data/spec/support/helper_methods.rb +16 -0
- data/spec/support/schema.rb +0 -1
- metadata +23 -6
- data/spec/uploaders/section_uploader_spec.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA512:
|
3
|
-
data.tar.gz:
|
4
|
-
metadata.gz:
|
3
|
+
data.tar.gz: 3ec3f7c88d058c6ccddc7998c704088b73e406e1c9d964777cf600a68aa24031a68304dcbe15dbd1ea3ffbbc553f5d0468ffabc9b2105889d6efae37e881ed34
|
4
|
+
metadata.gz: 591f31d3c086c95ca937c363576041d62e1895e2e6f8dd7925a496cbf8b5673758f7b13c6a7b2985ed5baec8bf497c8e170dd3fdeb33d5e8d0b70a5e9c849a58
|
5
5
|
SHA1:
|
6
|
-
data.tar.gz:
|
7
|
-
metadata.gz:
|
6
|
+
data.tar.gz: 87188479938bf9f0d71305622f5017355b1fb30e
|
7
|
+
metadata.gz: ccfea816f9624ede5eb1848370c3d32848540cf0
|
data/README.md
CHANGED
@@ -35,7 +35,7 @@ Then, mount the gem wherever you like!
|
|
35
35
|
|
36
36
|
mount Adminpanel::Engine => "/admin"
|
37
37
|
|
38
|
-
|
38
|
+
The version 0.1.0 is the first stable version, feel free to use it, any doubts or errors feel free to ask me!
|
39
39
|
|
40
40
|
## Contributing
|
41
41
|
|
@@ -49,3 +49,6 @@ Any doubts or errors feel free to ask me!
|
|
49
49
|
|
50
50
|
1. Add english support
|
51
51
|
2. Add the medium editor to the custom builder so it inits itself
|
52
|
+
3. Get a section generator or some kind of it
|
53
|
+
4. Add test to section edit(the only tests remaining)
|
54
|
+
5. Add a generator that let you create scaffolded model/controller/view in way that you can change them in the main app.
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Adminpanel
|
2
|
+
class ClientsController < Adminpanel::ApplicationController
|
3
|
+
def index
|
4
|
+
@clients = Client.find(:all)
|
5
|
+
end
|
6
|
+
|
7
|
+
def show
|
8
|
+
@client = Client.find(params[:id])
|
9
|
+
end
|
10
|
+
|
11
|
+
def edit
|
12
|
+
@client = Client.find(params[:id])
|
13
|
+
end
|
14
|
+
|
15
|
+
def create
|
16
|
+
@client = Client.new(params[:client])
|
17
|
+
|
18
|
+
if @client.save
|
19
|
+
redirect_to client_path(@client), :notice => "El cliente ha sido guardado"
|
20
|
+
else
|
21
|
+
render 'new'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy
|
26
|
+
@client = Client.find(params[:id])
|
27
|
+
@client.destroy
|
28
|
+
|
29
|
+
redirect_to clients_path, :notice => "El cliente ha sido eliminada"
|
30
|
+
end
|
31
|
+
|
32
|
+
def update
|
33
|
+
@client = Client.find(params[:id])
|
34
|
+
if @client.update_attributes(params[:client])
|
35
|
+
redirect_to client_path(@client)
|
36
|
+
else
|
37
|
+
render 'edit'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def new
|
42
|
+
@client = Client.new
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -16,7 +16,7 @@ module Adminpanel
|
|
16
16
|
@gallery = Gallery.new(params[:gallery])
|
17
17
|
|
18
18
|
if @gallery.save
|
19
|
-
redirect_to gallery_path(@gallery), :notice => "
|
19
|
+
redirect_to gallery_path(@gallery), :notice => t("gallery.success")
|
20
20
|
else
|
21
21
|
render 'new'
|
22
22
|
end
|
@@ -45,7 +45,7 @@ module Adminpanel
|
|
45
45
|
|
46
46
|
respond_to do |format|
|
47
47
|
if @user.save
|
48
|
-
format.html { redirect_to @user, :notice =>
|
48
|
+
format.html { redirect_to @user, :notice => t("user.success") }
|
49
49
|
format.json { render :json => @user, :status => :created, :location => @user }
|
50
50
|
else
|
51
51
|
format.html { render :action => "new" }
|
@@ -32,7 +32,7 @@ module Adminpanel
|
|
32
32
|
render(association.to_s.singularize + "_fields", :f => builder, :model_name => model_name)
|
33
33
|
end
|
34
34
|
link_to(content_tag(:div, content_tag(:button,
|
35
|
-
content_tag(:h6, name, :id => "add-
|
35
|
+
content_tag(:h6, name, :id => "add-image-button"),
|
36
36
|
:class => "btn btn-success btn-mini"), :class => "mws-form-row"),
|
37
37
|
'#', :class => "add_fields", :data => {:id => id, :fields => fields.gsub("\n", "")})
|
38
38
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "carrierwave"
|
2
|
+
require "carrierwave/orm/activerecord"
|
3
|
+
module Adminpanel
|
4
|
+
class Client < ActiveRecord::Base
|
5
|
+
attr_accessible :name, :logo
|
6
|
+
mount_uploader :logo, Adminpanel::ClientUploader
|
7
|
+
|
8
|
+
validates_presence_of :name
|
9
|
+
validates_presence_of :logo
|
10
|
+
end
|
11
|
+
end
|
@@ -2,10 +2,9 @@ require 'carrierwave'
|
|
2
2
|
require 'carrierwave/orm/activerecord'
|
3
3
|
module Adminpanel
|
4
4
|
class Section < ActiveRecord::Base
|
5
|
-
attr_accessible :description, :
|
5
|
+
attr_accessible :description, :has_image, :key, :name, :has_description, :images_attributes
|
6
6
|
has_many :images, :foreign_key => "foreign_key", :conditions => { :model => "Section" }
|
7
7
|
accepts_nested_attributes_for :images, :allow_destroy => true
|
8
|
-
mount_uploader :file, Adminpanel::SectionUploader
|
9
8
|
validates_length_of :description, :minimum => 10, :maximum => 10, :on => :update, :if => lambda{|section| section.key == "telephone"}
|
10
9
|
validates_presence_of :description, :minimum => 9, :on => :update, :if => lambda{|section| section.has_description == true}
|
11
10
|
validates :description, :numericality => { :only_integer => true }, :on => :update, :if => lambda{|section| section.key == "telephone"}
|
@@ -1,11 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Adminpanel
|
3
|
-
class
|
3
|
+
class ClientUploader < CarrierWave::Uploader::Base
|
4
4
|
|
5
5
|
# Include RMagick or MiniMagick support:
|
6
6
|
include CarrierWave::RMagick
|
7
7
|
# include CarrierWave::MiniMagick
|
8
|
-
|
9
8
|
# Choose what kind of storage to use for this uploader:
|
10
9
|
storage :file
|
11
10
|
# storage :fog
|
@@ -17,7 +16,7 @@ module Adminpanel
|
|
17
16
|
# Override the directory where uploaded files will be stored.
|
18
17
|
# This is a sensible default for uploaders that are meant to be mounted:
|
19
18
|
def store_dir
|
20
|
-
"uploads/
|
19
|
+
"uploads/client/#{mounted_as}/#{model.id}"
|
21
20
|
end
|
22
21
|
|
23
22
|
# Provide a default URL as a default if there hasn't been a file uploaded:
|
@@ -29,15 +28,18 @@ module Adminpanel
|
|
29
28
|
# end
|
30
29
|
|
31
30
|
# Process files as they are uploaded:
|
32
|
-
|
31
|
+
process :resize_to_fill => [1366, 768]
|
33
32
|
#
|
34
33
|
# def scale(width, height)
|
35
34
|
# # do something
|
36
35
|
# end
|
36
|
+
version :portfolio do
|
37
|
+
process :resize_to_fill => [240, 130]
|
38
|
+
end
|
37
39
|
|
38
40
|
# Create different versions of your uploaded files:
|
39
41
|
version :thumb do
|
40
|
-
process :resize_to_limit => [
|
42
|
+
process :resize_to_limit => [220, 220]
|
41
43
|
end
|
42
44
|
|
43
45
|
# Add a white list of extensions which are allowed to be uploaded.
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class = "widget-body">
|
2
|
+
<div class = "widget-forms clearfix">
|
3
|
+
<%= custom_form_for(@client, :html => {:class => "form-horizontal"}) do |f| %>
|
4
|
+
<%= render 'shared/error_messages', :object => @client %>
|
5
|
+
|
6
|
+
<%= f.text_field :name, :label => "Nombre" -%>
|
7
|
+
|
8
|
+
<% if @client.logo %>
|
9
|
+
<div class="controls">
|
10
|
+
<div class="control-group">
|
11
|
+
<%= image_tag @client.logo_url(:thumb) %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<%= f.custom_file_field :logo, :label => "Imagen" -%>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div class = "widget-footer">
|
20
|
+
<%= f.submit t("client.new"), :disable_with => 'Submiting...' %>
|
21
|
+
</div>
|
22
|
+
<% end -%>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% provide(:page_title, "Editar") %>
|
2
|
+
<% breadcrumb_add(t("Clientes"), clients_path) %>
|
3
|
+
<% breadcrumb_add(@client.name, client_path(@client)) %>
|
4
|
+
<div class="row-fluid">
|
5
|
+
<div class = "widget widget-padding span12">
|
6
|
+
<div class = "widget-header"><i class = "icon-picture"></i><h5>Cliente</h5></div>
|
7
|
+
<%= render "client_form" %>
|
8
|
+
</div>
|
9
|
+
</div>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<%= provide(:page_title, "Clientes") %>
|
2
|
+
<div class="row-fluid">
|
3
|
+
<%=
|
4
|
+
link_to(
|
5
|
+
content_tag(:div,
|
6
|
+
content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, t("client.new"), nil),
|
7
|
+
:class => "btn btn-box span2"),
|
8
|
+
new_client_path,
|
9
|
+
:id => "new-client-button"
|
10
|
+
)
|
11
|
+
%>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="row-fluid">
|
15
|
+
<div class="widget widget-padding span12">
|
16
|
+
<div class="widget-header">
|
17
|
+
<i class="icon-truck"></i>
|
18
|
+
<h5>Clientes</h5>
|
19
|
+
</div>
|
20
|
+
<div class="widget-body">
|
21
|
+
<div class="dataTables_wrapper form-inline">
|
22
|
+
<table id="information-table" class="table table-striped table-bordered dataTable">
|
23
|
+
<thead>
|
24
|
+
<tr>
|
25
|
+
<th>Nombre</th>
|
26
|
+
<th>Acción</th>
|
27
|
+
</tr>
|
28
|
+
</thead>
|
29
|
+
<tbody>
|
30
|
+
<% @clients.each do |client| %>
|
31
|
+
<tr>
|
32
|
+
<td><%= link_to client.name, client_path(client) %></td>
|
33
|
+
<td>
|
34
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_client_path(client), :title => t("action.edit") %>
|
35
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-remove'), client_path(client),
|
36
|
+
:title => t("action.delete"),
|
37
|
+
:id => "client-delete",
|
38
|
+
:method => :delete,
|
39
|
+
:data => { :confirm => "Seguro?" }
|
40
|
+
%>
|
41
|
+
</td>
|
42
|
+
</tr>
|
43
|
+
<% end %>
|
44
|
+
</tbody>
|
45
|
+
</table>
|
46
|
+
<div class="row-fluid">
|
47
|
+
<div class="span6"></div>
|
48
|
+
<div class="span6"></div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% provide(:page_title, t("client.new")) %>
|
2
|
+
<% breadcrumb_add(t("model.Adminpanel::Client"), clients_path) %>
|
3
|
+
<div class="row-fluid">
|
4
|
+
<div class = "widget widget-padding span12">
|
5
|
+
<div class = "widget-header"><i class = "icon-picture"></i><h5>Cliente</h5></div>
|
6
|
+
|
7
|
+
<%= render 'client_form' %>
|
8
|
+
</div>
|
9
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<% provide(:page_title, @client.name) %>
|
2
|
+
<% breadcrumb_add("Clientes", clients_path) %>
|
3
|
+
|
4
|
+
<div class="row-fluid">
|
5
|
+
<div class="widget widget-padding span12">
|
6
|
+
<div class="widget-header">
|
7
|
+
<i class="icon-picture"></i>
|
8
|
+
<h5><%= @client.name %>
|
9
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_client_path(@client), :title => "Editar Cliente" %>
|
10
|
+
</h5>
|
11
|
+
</div>
|
12
|
+
<div class="widget-body row-fluid">
|
13
|
+
<div class="span12">
|
14
|
+
<%= image_tag @client.logo_url %>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= provide(:page_title, t("Gallery")) %>
|
1
|
+
<%= provide(:page_title, t("model.Adminpanel::Gallery")) %>
|
2
2
|
<div class="row-fluid">
|
3
3
|
<%=
|
4
4
|
link_to(
|
@@ -11,7 +11,7 @@
|
|
11
11
|
) +
|
12
12
|
content_tag(
|
13
13
|
:span,
|
14
|
-
|
14
|
+
t("gallery.new"),
|
15
15
|
nil
|
16
16
|
),
|
17
17
|
:class => "btn btn-box span2"
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<div class="widget widget-padding span12">
|
26
26
|
<div class="widget-header">
|
27
27
|
<i class="icon-picture"></i>
|
28
|
-
<h5
|
28
|
+
<h5><%= t("model.Adminpanel::Gallery") %></h5>
|
29
29
|
</div>
|
30
30
|
<div class="widget-body">
|
31
31
|
<div class="dataTables_wrapper form-inline">
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<thead>
|
34
34
|
<tr>
|
35
35
|
<th>Imagen</th>
|
36
|
-
|
36
|
+
<th>Acción</th>
|
37
37
|
</tr>
|
38
38
|
</thead>
|
39
39
|
<tbody>
|
@@ -41,9 +41,9 @@
|
|
41
41
|
<tr>
|
42
42
|
<td><%= link_to image_tag(gallery.file_url(:thumb)), gallery_path(gallery) %></td>
|
43
43
|
<td>
|
44
|
-
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_gallery_path(gallery), :title => "
|
45
|
-
<%= link_to content_tag(:i, nil, :class => 'icon-remove'), gallery_path(gallery), :title => "
|
46
|
-
:data => { :confirm => "
|
44
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_gallery_path(gallery), :title => t("action.edit") %>
|
45
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-remove'), gallery_path(gallery), :title => t("action.delete"), :method => :delete,
|
46
|
+
:data => { :confirm => t("action.delete confirmation") }
|
47
47
|
%>
|
48
48
|
</td>
|
49
49
|
</tr>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<% provide(:page_title, "
|
2
|
-
<% breadcrumb_add(t("Gallery"), galleries_path) %>
|
1
|
+
<% provide(:page_title, t("gallery.new")) %>
|
2
|
+
<% breadcrumb_add(t("model.Adminpanel::Gallery"), galleries_path) %>
|
3
3
|
<div class="row-fluid">
|
4
4
|
<div class = "widget widget-padding span12">
|
5
5
|
<div class = "widget-header"><i class = "icon-picture"></i><h5>Imagen</h5></div>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
</div>
|
12
12
|
</div>
|
13
13
|
<div class = "widget-footer">
|
14
|
-
<%= f.submit "
|
14
|
+
<%= f.submit t("gallery.new"), :disable_with => 'Submiting...' %>
|
15
15
|
</div>
|
16
16
|
<% end -%>
|
17
17
|
</div>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<% if @product.description.nil? %>
|
13
13
|
<%= content_tag(:div, @product.description, :class => "editable", "data-placeholder" => t("Write description here")) %>
|
14
14
|
<% else %>
|
15
|
-
<%= content_tag(:div, @product.description.html_safe, :class => "editable", "data-placeholder" => t("Write description here")) %>
|
15
|
+
<%= content_tag(:div, @product.description.html_safe, :class => "editable controls", "data-placeholder" => t("Write description here")) %>
|
16
16
|
<% end %>
|
17
17
|
</div>
|
18
18
|
</div>
|
@@ -31,14 +31,12 @@
|
|
31
31
|
<tr>
|
32
32
|
<td><%= link_to product.name, product_path(product) %></td>
|
33
33
|
<td><%= strip_tags product.description %></td>
|
34
|
-
<% #if can? :manage, product %>
|
35
34
|
<td>
|
36
35
|
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_product_path(product), :title => "Editar"%>
|
37
36
|
<%= link_to content_tag(:i, nil, :class => 'icon-remove'), product_path(product), :title => "Borrar", :method => :delete,
|
38
37
|
:data => { :confirm => "Seguro?" }
|
39
38
|
%>
|
40
39
|
</td>
|
41
|
-
<% #end %>
|
42
40
|
</tr>
|
43
41
|
<% end %>
|
44
42
|
</tbody>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
<% end %>
|
9
9
|
<div class="control-group">
|
10
|
-
<%= f.label t("model.Image"), :class => "control-label" %>
|
10
|
+
<%= f.label t("model.Adminpanel::Image"), :class => "control-label" %>
|
11
11
|
<div class="controls">
|
12
12
|
<%= f.file_field :file %>
|
13
13
|
<%= f.hidden_field :model, :value => model_name %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% provide(:page_title, "
|
1
|
+
<% provide(:page_title, t("section.edit")) %>
|
2
2
|
<% breadcrumb_add('Secciones', sections_path) %>
|
3
3
|
<% breadcrumb_add(@section.name, section_path(@section)) %>
|
4
4
|
<div class="row-fluid">
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
<% if @section.has_description %>
|
13
13
|
<div class="control-group">
|
14
|
-
<label class="control-label"><%= t
|
14
|
+
<label class="control-label"><%= t("model.attributes.Adminpanel::Section.description") %></label>
|
15
15
|
<div class="controls">
|
16
16
|
<%= f.hidden_field :description, :id => "description-field" %>
|
17
17
|
<% if @section.description.nil? %>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
</div>
|
23
23
|
</div>
|
24
24
|
<% else %>
|
25
|
-
<%= f.text_field :description, :label => t("
|
25
|
+
<%= f.text_field :description, :label => t("model.attributes.Adminpanel::Section.description") %>
|
26
26
|
<% end %>
|
27
27
|
|
28
28
|
<% if @section.has_image %>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
</div>
|
36
36
|
</div>
|
37
37
|
<div class = "widget-footer">
|
38
|
-
<%= f.submit "
|
38
|
+
<%= f.submit t("action.save"), :disable_with => t("action.submiting"), :id => "save-button" %>
|
39
39
|
</div>
|
40
40
|
<% end -%>
|
41
41
|
</div>
|
@@ -10,22 +10,21 @@
|
|
10
10
|
</h5>
|
11
11
|
</div>
|
12
12
|
<div class="widget-body row-fluid">
|
13
|
-
|
13
|
+
|
14
|
+
<div class="span2">
|
14
15
|
<b>Descripción</b>
|
15
16
|
</div>
|
16
|
-
<div class="
|
17
|
+
<div class="span10">
|
17
18
|
<% if @section.description.nil? %>
|
18
|
-
<%= t("no description") %>
|
19
|
+
<%= t("other.no description") %>
|
19
20
|
<% else %>
|
20
21
|
<%= @section.description.html_safe %>
|
21
22
|
<% end %>
|
22
23
|
</div>
|
23
24
|
<div class="span12">
|
24
|
-
<% if @section.has_image %>
|
25
25
|
<% @section.images.each do |image|-%>
|
26
26
|
<%= image_tag(image.file_url :thumb) %>
|
27
27
|
<% end %>
|
28
|
-
<% end %>
|
29
28
|
</div>
|
30
29
|
</div>
|
31
30
|
</div>
|
@@ -1,16 +1,14 @@
|
|
1
|
-
<%= provide(:page_title, "
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
content_tag(:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
</div>
|
13
|
-
<% #end %>
|
1
|
+
<%= provide(:page_title, t("model.Adminpanel::User")) %>
|
2
|
+
<div class="row-fluid">
|
3
|
+
<%=
|
4
|
+
link_to(
|
5
|
+
content_tag(:div,
|
6
|
+
content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, t("user.new"), nil),
|
7
|
+
:class => "btn btn-box span2"),
|
8
|
+
new_user_path
|
9
|
+
)
|
10
|
+
%>
|
11
|
+
</div>
|
14
12
|
|
15
13
|
<div class="row-fluid">
|
16
14
|
<div class="widget widget-padding span12">
|
@@ -24,23 +22,19 @@
|
|
24
22
|
<thead>
|
25
23
|
<tr>
|
26
24
|
<th>Nombre</th>
|
27
|
-
|
28
|
-
<th>Acción</th>
|
29
|
-
<% #end %>
|
25
|
+
<th>Acción</th>
|
30
26
|
</tr>
|
31
27
|
</thead>
|
32
28
|
<tbody>
|
33
29
|
<% @users.each do |user| %>
|
34
30
|
<tr>
|
35
31
|
<td><%= link_to user.name, user_path(user) %></td>
|
36
|
-
<% #if can? :manage, user %>
|
37
32
|
<td>
|
38
33
|
<%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_user_path(user), :title => "Editar"%>
|
39
34
|
<%= link_to content_tag(:i, nil, :class => 'icon-remove'), user_path(user), :title => "Borrar", :method => :delete,
|
40
35
|
:data => { :confirm => "Seguro?" }
|
41
36
|
%>
|
42
37
|
</td>
|
43
|
-
<% #end %>
|
44
38
|
</tr>
|
45
39
|
<% end %>
|
46
40
|
</tbody>
|
@@ -10,29 +10,35 @@
|
|
10
10
|
<% end %>
|
11
11
|
<div class="accordion" id="accordion2">
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</div>
|
13
|
+
<div class="accordion-group">
|
14
|
+
<div class="accordion-heading">
|
15
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-truck') + content_tag(:span, ' Productos'), products_path, :class => "accordion-toggle b_F79999 #{is_current_section?('products')}" %>
|
17
16
|
</div>
|
17
|
+
</div>
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
</div>
|
19
|
+
<div class="accordion-group">
|
20
|
+
<div class="accordion-heading">
|
21
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-user') + content_tag(:span, ' Usuarios'), users_path, :class => "accordion-toggle b_9FDDF6 #{is_current_section?('users')}" %>
|
23
22
|
</div>
|
23
|
+
</div>
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
</div>
|
25
|
+
<div class="accordion-group">
|
26
|
+
<div class="accordion-heading">
|
27
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-picture') + content_tag(:span, " #{t("model.Adminpanel::Gallery")}"), galleries_path, :class => "accordion-toggle b_C3F7A7 #{is_current_section?('galleries')}" %>
|
29
28
|
</div>
|
29
|
+
</div>
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
<div class="accordion-group">
|
32
|
+
<div class="accordion-heading">
|
33
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-tasks') + content_tag(:span, ' Secciones'), sections_path, :class => "accordion-toggle b_F6F1A2 #{is_current_section?('sections')}" %>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="accordion-group">
|
38
|
+
<div class="accordion-heading">
|
39
|
+
<%= link_to content_tag(:i, nil, :class => 'icon-star') + content_tag(:span, ' Clientes'), clients_path, :class => "accordion-toggle b_9FDDF6 #{is_current_section?('clients')}" %>
|
35
40
|
</div>
|
41
|
+
</div>
|
36
42
|
|
37
43
|
<div class="accordion-group">
|
38
44
|
<div class="accordion-heading">
|
@@ -5,17 +5,17 @@
|
|
5
5
|
<%= link_to image_tag("logo.png", :alt => "PCP del Sureste"), root_path %>
|
6
6
|
</div>
|
7
7
|
<% if signed_in? %>
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
<a class="btn btn-navbar visible-phone" data-toggle="collapse" data-target=".nav-collapse">
|
9
|
+
<span class="icon-bar"></span>
|
10
|
+
<span class="icon-bar"></span>
|
11
|
+
<span class="icon-bar"></span>
|
12
|
+
</a>
|
13
|
+
<a class="btn btn-navbar slide_menu_left visible-tablet">
|
14
|
+
<span class="icon-bar"></span>
|
15
|
+
<span class="icon-bar"></span>
|
16
|
+
<span class="icon-bar"></span>
|
17
|
+
</a>
|
18
|
+
<% end %>
|
19
19
|
|
20
20
|
<div class="top-menu visible-desktop">
|
21
21
|
<ul class="pull-right">
|
data/config/locales/es.yml
CHANGED
@@ -6,6 +6,7 @@ es:
|
|
6
6
|
Adminpanel::Section: "Sección"
|
7
7
|
Adminpanel::Image: "Imagen"
|
8
8
|
Adminpanel::Category: "Categoría"
|
9
|
+
Adminpanel::Client: "Cliente"
|
9
10
|
attributes:
|
10
11
|
Adminpanel::User:
|
11
12
|
email: "Correo electrónico"
|
@@ -20,6 +21,9 @@ es:
|
|
20
21
|
file: "Imagen"
|
21
22
|
Adminpanel::Category:
|
22
23
|
name: "Nombre"
|
24
|
+
Adminpanel::Client:
|
25
|
+
name: "Nombre"
|
26
|
+
logo: "Nombre"
|
23
27
|
Adminpanel::Product:
|
24
28
|
name: "Nombre"
|
25
29
|
brief: "Pequeña descripción"
|
@@ -90,9 +94,11 @@ es:
|
|
90
94
|
Panel title: "Panel Administrativo"
|
91
95
|
New: "Nuevo"
|
92
96
|
action:
|
97
|
+
submiting: "Enviando..."
|
93
98
|
save: "Guardar"
|
94
99
|
edit: "Editar"
|
95
100
|
delete: "Eliminar"
|
101
|
+
delete confirmation: "Estás seguro que desea eliminar?"
|
96
102
|
authentication:
|
97
103
|
welcome: "Bienvenido! Inicia Sesión"
|
98
104
|
signin error: "Contraseña incorrecta"
|
@@ -101,8 +107,20 @@ es:
|
|
101
107
|
new: "Agregar Categoría"
|
102
108
|
success: "La categoría ha sido guardada"
|
103
109
|
product:
|
104
|
-
new: "Agregar Producto"
|
110
|
+
new: "Agregar Producto"
|
105
111
|
success: "El producto ha sido guardado"
|
112
|
+
gallery:
|
113
|
+
new: "Agregar Imagen"
|
114
|
+
success: "La imagen ha sido guardada"
|
115
|
+
user:
|
116
|
+
new: "Agregar Usuario"
|
117
|
+
success: "El usuario ha sido guardado"
|
118
|
+
client:
|
119
|
+
new: "Agregar Cliente"
|
120
|
+
section:
|
121
|
+
edit: "Editar Sección"
|
106
122
|
session:
|
107
123
|
password: "Contraseña"
|
108
|
-
email: "Correo electrónico"
|
124
|
+
email: "Correo electrónico"
|
125
|
+
other:
|
126
|
+
no description: "No tiene descripción aún"
|
data/config/routes.rb
CHANGED
@@ -4,6 +4,7 @@ Adminpanel::Engine.routes.draw do
|
|
4
4
|
resources :galleries
|
5
5
|
resources :sessions, :only => [:new, :create, :destroy]
|
6
6
|
resources :products
|
7
|
+
resources :clients
|
7
8
|
resources :categories
|
8
9
|
root :to => 'products#index'
|
9
10
|
match '/signout', :to => 'sessions#destroy', :via => :delete, :as => "signout"
|
data/lib/adminpanel/version.rb
CHANGED
@@ -36,9 +36,15 @@ class CreateAdminpanelTables < ActiveRecord::Migration
|
|
36
36
|
t.text :description
|
37
37
|
t.string :key
|
38
38
|
t.boolean :has_image
|
39
|
-
t.string :file
|
40
39
|
t.timestamps
|
41
40
|
end
|
41
|
+
|
42
|
+
create_table :adminpanel_clients do |t|
|
43
|
+
t.string :name
|
44
|
+
t.string :logo
|
45
|
+
t.timestamps
|
46
|
+
end
|
47
|
+
|
42
48
|
add_index :adminpanel_sections, [:key]
|
43
49
|
|
44
50
|
create_table :adminpanel_categories do |t|
|
@@ -28,8 +28,8 @@ module Dummy
|
|
28
28
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
29
29
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
30
30
|
config.i18n.default_locale = :es
|
31
|
-
config.
|
32
|
-
|
31
|
+
I18n.config.enforce_available_locales = true
|
32
|
+
|
33
33
|
# Configure the default encoding used in templates for Ruby 1.9.
|
34
34
|
config.encoding = "utf-8"
|
35
35
|
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe "Categories" do
|
3
|
+
describe "Categories pages" do
|
4
4
|
subject {page}
|
5
5
|
|
6
6
|
let(:user) { Factory(:user) }
|
@@ -9,7 +9,7 @@ describe "Categories" do
|
|
9
9
|
valid_signin(user)
|
10
10
|
end
|
11
11
|
|
12
|
-
describe "
|
12
|
+
describe "index" do
|
13
13
|
let(:category) { Factory(:category) }
|
14
14
|
before do
|
15
15
|
visit adminpanel.categories_path
|
@@ -20,7 +20,7 @@ describe "Categories" do
|
|
20
20
|
it { should have_link("i", adminpanel.edit_category_path(category)) }
|
21
21
|
end
|
22
22
|
|
23
|
-
describe "
|
23
|
+
describe "new" do
|
24
24
|
before { visit adminpanel.new_category_path }
|
25
25
|
|
26
26
|
it { should have_title(I18n.t("category.new")) }
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Gallery pages" do
|
4
|
+
subject {page}
|
5
|
+
|
6
|
+
let(:user) { Factory(:user) }
|
7
|
+
before do
|
8
|
+
visit adminpanel.signin_path
|
9
|
+
valid_signin(user)
|
10
|
+
clean_uploads_folder
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "galleries" do
|
14
|
+
let(:gallery) { Factory(:gallery) }
|
15
|
+
before do
|
16
|
+
visit adminpanel.galleries_path
|
17
|
+
end
|
18
|
+
|
19
|
+
it { should have_link(I18n.t("gallery.new"), adminpanel.new_gallery_path)}
|
20
|
+
it { should have_link("i", adminpanel.gallery_path(gallery)) }
|
21
|
+
it { should have_link("i", adminpanel.edit_gallery_path(gallery)) }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "new" do
|
25
|
+
before do
|
26
|
+
visit adminpanel.new_gallery_path
|
27
|
+
end
|
28
|
+
|
29
|
+
it { should have_title(I18n.t("gallery.new")) }
|
30
|
+
|
31
|
+
describe "with invalid information" do
|
32
|
+
before { find("form#new_gallery").submit_form! }
|
33
|
+
|
34
|
+
it { should have_title(I18n.t("gallery.new")) }
|
35
|
+
it { should have_selector("div#alerts") }
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "with valid information" do
|
39
|
+
before do
|
40
|
+
attach_file('gallery_file', File.join(Rails.root, '/app/assets/images/hipster.jpg'))
|
41
|
+
find("form#new_gallery").submit_form!
|
42
|
+
end
|
43
|
+
|
44
|
+
it { should have_content(I18n.t("gallery.success"))}
|
45
|
+
it { File.exists? File.join(Rails.root, '/public/uploads/gallery/file/1/thumb_hipster.jpg') }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "show" do
|
50
|
+
let(:gallery) { Factory(:gallery) }
|
51
|
+
before do
|
52
|
+
visit adminpanel.gallery_path(gallery)
|
53
|
+
end
|
54
|
+
|
55
|
+
it { page.should have_selector("img", :src => gallery.file_url) }
|
56
|
+
end
|
57
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "Product pages" do
|
4
4
|
subject {page}
|
5
5
|
|
6
6
|
let(:user) { Factory(:user) }
|
@@ -9,7 +9,7 @@ describe "Products" do
|
|
9
9
|
valid_signin(user)
|
10
10
|
end
|
11
11
|
|
12
|
-
describe "
|
12
|
+
describe "index" do
|
13
13
|
let(:product) { Factory(:product) }
|
14
14
|
before do
|
15
15
|
visit adminpanel.products_path
|
@@ -20,7 +20,7 @@ describe "Products" do
|
|
20
20
|
it { should have_link("i", adminpanel.edit_product_path(product)) }
|
21
21
|
end
|
22
22
|
|
23
|
-
describe "
|
23
|
+
describe "new" do
|
24
24
|
let(:category) { Factory(:category) }
|
25
25
|
before do
|
26
26
|
category.id = 1 #to force instantiation so it becomes available in the select
|
@@ -47,7 +47,18 @@ describe "Products" do
|
|
47
47
|
|
48
48
|
it { should have_content(I18n.t("product.success"))}
|
49
49
|
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "show" do
|
53
|
+
let(:product) { Factory(:product) }
|
54
|
+
|
55
|
+
before do
|
56
|
+
visit adminpanel.product_path(product)
|
57
|
+
end
|
50
58
|
|
51
|
-
|
59
|
+
it { page.should have_selector("div", :text => product.name.humanize) }
|
60
|
+
it { page.should have_selector("div", :text => product.brief) }
|
61
|
+
it { page.should have_selector("div", :text => product.description) }
|
62
|
+
it { page.should have_selector("div", :text => product.category.name) }
|
52
63
|
end
|
53
64
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Section pages" do
|
4
|
+
subject {page}
|
5
|
+
|
6
|
+
let(:user) { Factory(:user) }
|
7
|
+
before do
|
8
|
+
visit adminpanel.signin_path
|
9
|
+
valid_signin(user)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "index" do
|
13
|
+
let(:section) { Factory(:section_with_gallery) }
|
14
|
+
before do
|
15
|
+
visit adminpanel.sections_path
|
16
|
+
end
|
17
|
+
|
18
|
+
it { should have_link("i", adminpanel.section_path(section)) }
|
19
|
+
it { should have_link("i", adminpanel.edit_section_path(section)) }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "show" do
|
23
|
+
describe "with gallery" do
|
24
|
+
let(:section) { Factory(:section_with_gallery) }
|
25
|
+
let(:image) { Factory(:image_section, :foreign_key => section.id) }
|
26
|
+
# let(:image2) { Factory(:image_section, :foreign_key => section.id) }
|
27
|
+
# let(:image3) { Factory(:image_section, :foreign_key => section.id) }
|
28
|
+
|
29
|
+
before do
|
30
|
+
visit adminpanel.section_path(section)
|
31
|
+
end
|
32
|
+
|
33
|
+
it { should have_title(section.name.humanize) }
|
34
|
+
it { should have_content(section.description) }
|
35
|
+
it { should have_link("i", adminpanel.edit_section_path(section)) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "User pages" do
|
4
|
+
subject {page}
|
5
|
+
|
6
|
+
let(:user) { Factory(:user) }
|
7
|
+
before do
|
8
|
+
visit adminpanel.signin_path
|
9
|
+
valid_signin(user)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "index" do
|
13
|
+
before do
|
14
|
+
visit adminpanel.users_path
|
15
|
+
end
|
16
|
+
|
17
|
+
it { should have_link(I18n.t("user.new"), adminpanel.new_user_path)}
|
18
|
+
it { should have_link("i", adminpanel.user_path(user)) }
|
19
|
+
it { should have_link("i", adminpanel.edit_user_path(user)) }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "new" do
|
23
|
+
let(:category) { Factory(:category) }
|
24
|
+
before do
|
25
|
+
visit adminpanel.new_user_path
|
26
|
+
end
|
27
|
+
|
28
|
+
it { should have_title(I18n.t("user.new")) }
|
29
|
+
|
30
|
+
describe "with invalid information" do
|
31
|
+
before { find("form#new_user").submit_form! }
|
32
|
+
|
33
|
+
it { should have_title(I18n.t("user.new")) }
|
34
|
+
it { should have_selector("div#alerts") }
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "with valid information" do
|
38
|
+
before do
|
39
|
+
fill_in "user_name", :with => "user_name"
|
40
|
+
fill_in "user_email", :with => "user@example.com"
|
41
|
+
fill_in "user_password", :with => "123456"
|
42
|
+
fill_in "user_password_confirmation", :with => "123456"
|
43
|
+
find("form#new_user").submit_form!
|
44
|
+
end
|
45
|
+
|
46
|
+
it { should have_content(I18n.t("user.success"))}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/spec/models/section_spec.rb
CHANGED
@@ -4,7 +4,6 @@ describe Adminpanel::Section do
|
|
4
4
|
before do
|
5
5
|
@section = Adminpanel::Section.new(
|
6
6
|
:description => "Test description for product",
|
7
|
-
:file => "example.png",
|
8
7
|
:has_image => true,
|
9
8
|
:key => "example_key",
|
10
9
|
:has_description => true
|
@@ -14,7 +13,6 @@ describe Adminpanel::Section do
|
|
14
13
|
subject { @section }
|
15
14
|
|
16
15
|
it { should respond_to(:description) }
|
17
|
-
it { should respond_to(:file) }
|
18
16
|
it { should respond_to(:has_image) }
|
19
17
|
it { should respond_to(:key) }
|
20
18
|
it { should respond_to(:name) }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
include ActionDispatch::TestProcess
|
2
|
+
|
1
3
|
Factory.define :user, :class => Adminpanel::User do |user|
|
2
4
|
user.name "test user"
|
3
5
|
user.email "email@test.com"
|
@@ -14,4 +16,21 @@ Factory.define :product, :class => Adminpanel::Product do |product|
|
|
14
16
|
product.brief "very little description"
|
15
17
|
product.description "this is a little longer description, can be very long"
|
16
18
|
product.association :category, :factory => :category
|
19
|
+
end
|
20
|
+
|
21
|
+
Factory.define :gallery, :class => Adminpanel::Gallery do |gallery|
|
22
|
+
gallery.file { fixture_file_upload(Rails.root.join('app', 'assets', 'images', 'hipster.jpg'), 'image/jpeg') }
|
23
|
+
end
|
24
|
+
|
25
|
+
Factory.define :image_section, :class => Adminpanel::Image do |image|
|
26
|
+
image.model "Section"
|
27
|
+
image.file { fixture_file_upload(Rails.root.join('app', 'assets', 'images', 'hipster.jpg'), 'image/jpeg') }
|
28
|
+
end
|
29
|
+
|
30
|
+
Factory.define :section_with_gallery, :class => Adminpanel::Section do |section|
|
31
|
+
section.key "key"
|
32
|
+
# section.description "<p>description</p>"
|
33
|
+
section.has_image true
|
34
|
+
section.has_description false
|
35
|
+
section.name "section_name"
|
17
36
|
end
|
@@ -8,4 +8,20 @@ RSpec::Matchers::define :have_title do |text|
|
|
8
8
|
match do |page|
|
9
9
|
Capybara.string(page.body).has_selector?('title', :text => text)
|
10
10
|
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def clean_uploads_folder
|
14
|
+
FileUtils.rm_rf(Dir["#{Rails.root}/public/uploads/."])
|
15
|
+
end
|
16
|
+
|
17
|
+
RSpec::Matchers.define(:have_image) do |src|
|
18
|
+
match { |node| node.has_selector? %(img[src="#{src}"]) }
|
19
|
+
|
20
|
+
failure_message_for_should do
|
21
|
+
"Expected an image with src #{src.inspect}"
|
22
|
+
end
|
23
|
+
|
24
|
+
failure_message_for_should_not do
|
25
|
+
"Found image with src #{src.inspect}!"
|
26
|
+
end
|
11
27
|
end
|
data/spec/support/schema.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adminpanel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0cl
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Ramon Camacho
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2013-12-
|
13
|
+
date: 2013-12-11 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -260,6 +260,7 @@ files:
|
|
260
260
|
- app/assets/stylesheets/application-admin.css
|
261
261
|
- app/controllers/adminpanel/application_controller.rb
|
262
262
|
- app/controllers/adminpanel/categories_controller.rb
|
263
|
+
- app/controllers/adminpanel/clients_controller.rb
|
263
264
|
- app/controllers/adminpanel/galleries_controller.rb
|
264
265
|
- app/controllers/adminpanel/products_controller.rb
|
265
266
|
- app/controllers/adminpanel/sections_controller.rb
|
@@ -270,19 +271,25 @@ files:
|
|
270
271
|
- app/helpers/adminpanel/sessions_helper.rb
|
271
272
|
- app/helpers/custom_form_builder.rb
|
272
273
|
- app/models/adminpanel/category.rb
|
274
|
+
- app/models/adminpanel/client.rb
|
273
275
|
- app/models/adminpanel/gallery.rb
|
274
276
|
- app/models/adminpanel/image.rb
|
275
277
|
- app/models/adminpanel/product.rb
|
276
278
|
- app/models/adminpanel/section.rb
|
277
279
|
- app/models/adminpanel/user.rb
|
280
|
+
- app/uploaders/adminpanel/client_uploader.rb
|
278
281
|
- app/uploaders/adminpanel/gallery_uploader.rb
|
279
282
|
- app/uploaders/adminpanel/image_uploader.rb
|
280
|
-
- app/uploaders/adminpanel/section_uploader.rb
|
281
283
|
- app/views/adminpanel/.DS_Store
|
282
284
|
- app/views/adminpanel/categories/edit.html.erb
|
283
285
|
- app/views/adminpanel/categories/index.html.erb
|
284
286
|
- app/views/adminpanel/categories/new.html.erb
|
285
287
|
- app/views/adminpanel/categories/show.html.erb
|
288
|
+
- app/views/adminpanel/clients/_client_form.html.erb
|
289
|
+
- app/views/adminpanel/clients/edit.html.erb
|
290
|
+
- app/views/adminpanel/clients/index.html.erb
|
291
|
+
- app/views/adminpanel/clients/new.html.erb
|
292
|
+
- app/views/adminpanel/clients/show.html.erb
|
286
293
|
- app/views/adminpanel/galleries/create.html.erb
|
287
294
|
- app/views/adminpanel/galleries/delete.html.erb
|
288
295
|
- app/views/adminpanel/galleries/edit.html.erb
|
@@ -363,10 +370,15 @@ files:
|
|
363
370
|
- spec/dummy/public/422.html
|
364
371
|
- spec/dummy/public/500.html
|
365
372
|
- spec/dummy/public/favicon.ico
|
373
|
+
- spec/dummy/public/uploads/gallery/file/1/hipster.jpg
|
374
|
+
- spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg
|
366
375
|
- spec/dummy/script/rails
|
367
376
|
- spec/features/authentication_pages_spec.rb
|
368
377
|
- spec/features/categories_pages_spec.rb
|
378
|
+
- spec/features/galleries_pages_spec.rb
|
369
379
|
- spec/features/product_pages_spec.rb
|
380
|
+
- spec/features/section_pages_spec.rb
|
381
|
+
- spec/features/user_pages_spec.rb
|
370
382
|
- spec/models/category_spec.rb
|
371
383
|
- spec/models/gallery_spec.rb
|
372
384
|
- spec/models/product_spec.rb
|
@@ -380,7 +392,6 @@ files:
|
|
380
392
|
- spec/support/submit_forms_without_button.rb
|
381
393
|
- spec/uploaders/gallery_uploader_spec.rb
|
382
394
|
- spec/uploaders/image_uploader_spec.rb
|
383
|
-
- spec/uploaders/section_uploader_spec.rb
|
384
395
|
homepage: https://github.com/joseramonc/adminpanel
|
385
396
|
licenses:
|
386
397
|
- MIT
|
@@ -397,7 +408,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
397
408
|
- *id012
|
398
409
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
399
410
|
requirements:
|
400
|
-
-
|
411
|
+
- - ">"
|
412
|
+
- !ruby/object:Gem::Version
|
413
|
+
version: 1.3.1
|
401
414
|
requirements: []
|
402
415
|
|
403
416
|
rubyforge_project:
|
@@ -442,10 +455,15 @@ test_files:
|
|
442
455
|
- spec/dummy/public/422.html
|
443
456
|
- spec/dummy/public/500.html
|
444
457
|
- spec/dummy/public/favicon.ico
|
458
|
+
- spec/dummy/public/uploads/gallery/file/1/hipster.jpg
|
459
|
+
- spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg
|
445
460
|
- spec/dummy/script/rails
|
446
461
|
- spec/features/authentication_pages_spec.rb
|
447
462
|
- spec/features/categories_pages_spec.rb
|
463
|
+
- spec/features/galleries_pages_spec.rb
|
448
464
|
- spec/features/product_pages_spec.rb
|
465
|
+
- spec/features/section_pages_spec.rb
|
466
|
+
- spec/features/user_pages_spec.rb
|
449
467
|
- spec/models/category_spec.rb
|
450
468
|
- spec/models/gallery_spec.rb
|
451
469
|
- spec/models/product_spec.rb
|
@@ -459,4 +477,3 @@ test_files:
|
|
459
477
|
- spec/support/submit_forms_without_button.rb
|
460
478
|
- spec/uploaders/gallery_uploader_spec.rb
|
461
479
|
- spec/uploaders/image_uploader_spec.rb
|
462
|
-
- spec/uploaders/section_uploader_spec.rb
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'support/active_record'
|
3
|
-
require 'carrierwave/test/matchers'
|
4
|
-
|
5
|
-
describe Adminpanel::SectionUploader do
|
6
|
-
include CarrierWave::Test::Matchers
|
7
|
-
|
8
|
-
before do
|
9
|
-
Adminpanel::SectionUploader.enable_processing = true
|
10
|
-
@section = Adminpanel::Section.new(
|
11
|
-
:file => "test.jpg",
|
12
|
-
:description => nil,
|
13
|
-
:has_image => true,
|
14
|
-
:key => "section_key",
|
15
|
-
:name => "identifier name",
|
16
|
-
:has_description => false
|
17
|
-
)
|
18
|
-
@section_uploader = Adminpanel::SectionUploader.new(@section, :file)
|
19
|
-
@section_uploader.store!(File.open(Rails.root + "app/assets/images/test.jpg"))
|
20
|
-
end
|
21
|
-
|
22
|
-
after do
|
23
|
-
Adminpanel::SectionUploader.enable_processing = false
|
24
|
-
@section_uploader.remove!
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'the section.thumb version' do
|
28
|
-
it "should scale down a landscape image to be exactly 460 by 355 pixels" do
|
29
|
-
@section_uploader.thumb.should be_no_larger_than(460, 355)
|
30
|
-
end
|
31
|
-
end\
|
32
|
-
end
|