adminpanel 0.1.0cl.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -4
- data/app/views/layouts/_side_menu.html.erb +16 -22
- data/app/views/layouts/admin.html.erb +1 -1
- data/config/locales/es.yml +0 -6
- data/config/routes.rb +0 -1
- data/lib/adminpanel/version.rb +3 -3
- data/lib/generators/adminpanel/install/templates/migrations/create_adminpanel_tables.rb +0 -7
- 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/dummy/public/uploads/image/file/1/hipster.jpg +0 -0
- data/spec/dummy/public/uploads/image/file/1/portfolio_hipster.jpg +0 -0
- data/spec/dummy/public/uploads/image/file/1/thumb_hipster.jpg +0 -0
- data/spec/features/section_pages_spec.rb +1 -1
- metadata +9 -13
- data/app/controllers/adminpanel/clients_controller.rb +0 -45
- data/app/models/adminpanel/client.rb +0 -11
- data/app/uploaders/adminpanel/client_uploader.rb +0 -58
- data/app/views/adminpanel/clients/_client_form.html.erb +0 -22
- data/app/views/adminpanel/clients/edit.html.erb +0 -9
- data/app/views/adminpanel/clients/index.html.erb +0 -53
- data/app/views/adminpanel/clients/new.html.erb +0 -9
- data/app/views/adminpanel/clients/show.html.erb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA512:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d8f123e3a3faf4e15d9314743b74780780988363dcb070d23b4cea17671beb6fc807be8ac42f392cdee3949c4dea68ceb824bfe8226f311d465475f5e39a8d7
|
4
|
+
data.tar.gz: 819a1638157388e34921f75d3fe4f707fd8f6a6cc7e102da078ce0761ad3aa4d474b1e1d6b2d61df54beeca2b9f7ae7851fc2515b7af3d53f5668e07f8e3cd74
|
5
5
|
SHA1:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b1cb78b89c6b70303680facd5f010f5ac177828
|
7
|
+
data.tar.gz: 459579d0e5a2168f0a4cc4d31a4dc83912cd2612
|
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
|
+
Any doubts or errors feel free to ask me!
|
39
39
|
|
40
40
|
## Contributing
|
41
41
|
|
@@ -49,6 +49,3 @@ The version 0.1.0 is the first stable version, feel free to use it, any doubts o
|
|
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.
|
@@ -10,35 +10,29 @@
|
|
10
10
|
<% end %>
|
11
11
|
<div class="accordion" id="accordion2">
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
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')}" %>
|
16
|
+
</div>
|
16
17
|
</div>
|
17
|
-
</div>
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
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')}" %>
|
22
|
+
</div>
|
22
23
|
</div>
|
23
|
-
</div>
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
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')}" %>
|
28
|
+
</div>
|
28
29
|
</div>
|
29
|
-
</div>
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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')}" %>
|
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>
|
40
35
|
</div>
|
41
|
-
</div>
|
42
36
|
|
43
37
|
<div class="accordion-group">
|
44
38
|
<div class="accordion-heading">
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<%= csrf_meta_tags %>
|
11
11
|
<link rel="shortcut icon" href="favicon.ico">
|
12
12
|
<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet" type="text/css">
|
13
|
-
|
13
|
+
<link rel="Favicon Icon" href="favicon.ico">
|
14
14
|
<%= render 'layouts/shim' %>
|
15
15
|
</head>
|
16
16
|
|
data/config/locales/es.yml
CHANGED
@@ -6,7 +6,6 @@ es:
|
|
6
6
|
Adminpanel::Section: "Sección"
|
7
7
|
Adminpanel::Image: "Imagen"
|
8
8
|
Adminpanel::Category: "Categoría"
|
9
|
-
Adminpanel::Client: "Cliente"
|
10
9
|
attributes:
|
11
10
|
Adminpanel::User:
|
12
11
|
email: "Correo electrónico"
|
@@ -21,9 +20,6 @@ es:
|
|
21
20
|
file: "Imagen"
|
22
21
|
Adminpanel::Category:
|
23
22
|
name: "Nombre"
|
24
|
-
Adminpanel::Client:
|
25
|
-
name: "Nombre"
|
26
|
-
logo: "Nombre"
|
27
23
|
Adminpanel::Product:
|
28
24
|
name: "Nombre"
|
29
25
|
brief: "Pequeña descripción"
|
@@ -115,8 +111,6 @@ es:
|
|
115
111
|
user:
|
116
112
|
new: "Agregar Usuario"
|
117
113
|
success: "El usuario ha sido guardado"
|
118
|
-
client:
|
119
|
-
new: "Agregar Cliente"
|
120
114
|
section:
|
121
115
|
edit: "Editar Sección"
|
122
116
|
session:
|
data/config/routes.rb
CHANGED
@@ -4,7 +4,6 @@ Adminpanel::Engine.routes.draw do
|
|
4
4
|
resources :galleries
|
5
5
|
resources :sessions, :only => [:new, :create, :destroy]
|
6
6
|
resources :products
|
7
|
-
resources :clients
|
8
7
|
resources :categories
|
9
8
|
root :to => 'products#index'
|
10
9
|
match '/signout', :to => 'sessions#destroy', :via => :delete, :as => "signout"
|
data/lib/adminpanel/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Adminpanel
|
2
|
-
VERSION = "0.1.
|
3
|
-
end
|
1
|
+
module Adminpanel
|
2
|
+
VERSION = "0.1.0"
|
3
|
+
end
|
@@ -38,13 +38,6 @@ class CreateAdminpanelTables < ActiveRecord::Migration
|
|
38
38
|
t.boolean :has_image
|
39
39
|
t.timestamps
|
40
40
|
end
|
41
|
-
|
42
|
-
create_table :adminpanel_clients do |t|
|
43
|
-
t.string :name
|
44
|
-
t.string :logo
|
45
|
-
t.timestamps
|
46
|
-
end
|
47
|
-
|
48
41
|
add_index :adminpanel_sections, [:key]
|
49
42
|
|
50
43
|
create_table :adminpanel_categories do |t|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
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.1.
|
4
|
+
version: 0.1.0
|
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,7 +260,6 @@ 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
|
264
263
|
- app/controllers/adminpanel/galleries_controller.rb
|
265
264
|
- app/controllers/adminpanel/products_controller.rb
|
266
265
|
- app/controllers/adminpanel/sections_controller.rb
|
@@ -271,13 +270,11 @@ files:
|
|
271
270
|
- app/helpers/adminpanel/sessions_helper.rb
|
272
271
|
- app/helpers/custom_form_builder.rb
|
273
272
|
- app/models/adminpanel/category.rb
|
274
|
-
- app/models/adminpanel/client.rb
|
275
273
|
- app/models/adminpanel/gallery.rb
|
276
274
|
- app/models/adminpanel/image.rb
|
277
275
|
- app/models/adminpanel/product.rb
|
278
276
|
- app/models/adminpanel/section.rb
|
279
277
|
- app/models/adminpanel/user.rb
|
280
|
-
- app/uploaders/adminpanel/client_uploader.rb
|
281
278
|
- app/uploaders/adminpanel/gallery_uploader.rb
|
282
279
|
- app/uploaders/adminpanel/image_uploader.rb
|
283
280
|
- app/views/adminpanel/.DS_Store
|
@@ -285,11 +282,6 @@ files:
|
|
285
282
|
- app/views/adminpanel/categories/index.html.erb
|
286
283
|
- app/views/adminpanel/categories/new.html.erb
|
287
284
|
- 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
|
293
285
|
- app/views/adminpanel/galleries/create.html.erb
|
294
286
|
- app/views/adminpanel/galleries/delete.html.erb
|
295
287
|
- app/views/adminpanel/galleries/edit.html.erb
|
@@ -372,6 +364,9 @@ files:
|
|
372
364
|
- spec/dummy/public/favicon.ico
|
373
365
|
- spec/dummy/public/uploads/gallery/file/1/hipster.jpg
|
374
366
|
- spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg
|
367
|
+
- spec/dummy/public/uploads/image/file/1/hipster.jpg
|
368
|
+
- spec/dummy/public/uploads/image/file/1/portfolio_hipster.jpg
|
369
|
+
- spec/dummy/public/uploads/image/file/1/thumb_hipster.jpg
|
375
370
|
- spec/dummy/script/rails
|
376
371
|
- spec/features/authentication_pages_spec.rb
|
377
372
|
- spec/features/categories_pages_spec.rb
|
@@ -408,9 +403,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
408
403
|
- *id012
|
409
404
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
410
405
|
requirements:
|
411
|
-
-
|
412
|
-
- !ruby/object:Gem::Version
|
413
|
-
version: 1.3.1
|
406
|
+
- *id012
|
414
407
|
requirements: []
|
415
408
|
|
416
409
|
rubyforge_project:
|
@@ -457,6 +450,9 @@ test_files:
|
|
457
450
|
- spec/dummy/public/favicon.ico
|
458
451
|
- spec/dummy/public/uploads/gallery/file/1/hipster.jpg
|
459
452
|
- spec/dummy/public/uploads/gallery/file/1/thumb_hipster.jpg
|
453
|
+
- spec/dummy/public/uploads/image/file/1/hipster.jpg
|
454
|
+
- spec/dummy/public/uploads/image/file/1/portfolio_hipster.jpg
|
455
|
+
- spec/dummy/public/uploads/image/file/1/thumb_hipster.jpg
|
460
456
|
- spec/dummy/script/rails
|
461
457
|
- spec/features/authentication_pages_spec.rb
|
462
458
|
- spec/features/categories_pages_spec.rb
|
@@ -1,45 +0,0 @@
|
|
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
|
@@ -1,11 +0,0 @@
|
|
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
|
@@ -1,58 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Adminpanel
|
3
|
-
class ClientUploader < CarrierWave::Uploader::Base
|
4
|
-
|
5
|
-
# Include RMagick or MiniMagick support:
|
6
|
-
include CarrierWave::RMagick
|
7
|
-
# include CarrierWave::MiniMagick
|
8
|
-
# Choose what kind of storage to use for this uploader:
|
9
|
-
storage :file
|
10
|
-
# storage :fog
|
11
|
-
|
12
|
-
def root
|
13
|
-
Rails.root.join 'public/'
|
14
|
-
end
|
15
|
-
|
16
|
-
# Override the directory where uploaded files will be stored.
|
17
|
-
# This is a sensible default for uploaders that are meant to be mounted:
|
18
|
-
def store_dir
|
19
|
-
"uploads/client/#{mounted_as}/#{model.id}"
|
20
|
-
end
|
21
|
-
|
22
|
-
# Provide a default URL as a default if there hasn't been a file uploaded:
|
23
|
-
# def default_url
|
24
|
-
# # For Rails 3.1+ asset pipeline compatibility:
|
25
|
-
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
26
|
-
#
|
27
|
-
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
28
|
-
# end
|
29
|
-
|
30
|
-
# Process files as they are uploaded:
|
31
|
-
process :resize_to_fill => [1366, 768]
|
32
|
-
#
|
33
|
-
# def scale(width, height)
|
34
|
-
# # do something
|
35
|
-
# end
|
36
|
-
version :portfolio do
|
37
|
-
process :resize_to_fill => [240, 130]
|
38
|
-
end
|
39
|
-
|
40
|
-
# Create different versions of your uploaded files:
|
41
|
-
version :thumb do
|
42
|
-
process :resize_to_limit => [220, 220]
|
43
|
-
end
|
44
|
-
|
45
|
-
# Add a white list of extensions which are allowed to be uploaded.
|
46
|
-
# For images you might use something like this:
|
47
|
-
def extension_white_list
|
48
|
-
%w(jpg jpeg png)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Override the filename of the uploaded files:
|
52
|
-
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
53
|
-
# def filename
|
54
|
-
# "something.jpg" if original_filename
|
55
|
-
# end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
@@ -1,22 +0,0 @@
|
|
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.present? %>
|
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 -%>
|
@@ -1,9 +0,0 @@
|
|
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>
|
@@ -1,53 +0,0 @@
|
|
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>
|
@@ -1,9 +0,0 @@
|
|
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>
|
@@ -1,18 +0,0 @@
|
|
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>
|