adminpanel 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +7 -0
  3. data/Gemfile +16 -9
  4. data/README.md +12 -1
  5. data/Rakefile +3 -0
  6. data/adminpanel.gemspec +13 -9
  7. data/app/assets/stylesheets/adminpanel/theme.css +11 -3
  8. data/app/controllers/adminpanel/categories_controller.rb +1 -1
  9. data/app/controllers/adminpanel/products_controller.rb +1 -1
  10. data/app/controllers/adminpanel/sessions_controller.rb +5 -3
  11. data/app/helpers/adminpanel/application_helper.rb +1 -1
  12. data/app/models/adminpanel/section.rb +1 -0
  13. data/app/views/adminpanel/categories/index.html.erb +9 -9
  14. data/app/views/adminpanel/categories/new.html.erb +2 -2
  15. data/app/views/adminpanel/products/_image_fields.html.erb +1 -1
  16. data/app/views/adminpanel/products/_product_form.html.erb +4 -4
  17. data/app/views/adminpanel/products/edit.html.erb +1 -1
  18. data/app/views/adminpanel/products/index.html.erb +2 -6
  19. data/app/views/adminpanel/products/new.html.erb +1 -1
  20. data/app/views/adminpanel/sections/_image_fields.html.erb +1 -1
  21. data/app/views/adminpanel/sessions/new.html.erb +4 -4
  22. data/app/views/adminpanel/users/_user_form.html.erb +21 -0
  23. data/app/views/adminpanel/users/edit.html.erb +1 -17
  24. data/app/views/adminpanel/users/new.html.erb +1 -17
  25. data/app/views/layouts/_side_menu.html.erb +10 -11
  26. data/app/views/layouts/_top_bar.html.erb +2 -3
  27. data/app/views/layouts/admin-login.html.erb +27 -0
  28. data/app/views/layouts/admin.html.erb +2 -7
  29. data/app/views/shared/_error_messages.html.erb +2 -2
  30. data/config/database.yml +24 -0
  31. data/config/locales/es.yml +81 -181
  32. data/lib/adminpanel/version.rb +1 -1
  33. data/spec/dummy/.gitignore +0 -2
  34. data/spec/dummy/config/application.rb +2 -1
  35. data/spec/dummy/config/database.yml +24 -0
  36. data/spec/dummy/config/routes.rb +1 -1
  37. data/spec/features/authentication_pages_spec.rb +44 -0
  38. data/spec/features/categories_pages_spec.rb +44 -0
  39. data/spec/features/product_pages_spec.rb +53 -0
  40. data/spec/models/{adminpanel/category_spec.rb → category_spec.rb} +0 -1
  41. data/spec/models/{adminpanel/gallery_spec.rb → gallery_spec.rb} +0 -1
  42. data/spec/models/{adminpanel/image_uploader.rb → image_uploader.rb} +0 -1
  43. data/spec/models/{adminpanel/product_spec.rb → product_spec.rb} +0 -1
  44. data/spec/models/{adminpanel/section_spec.rb → section_spec.rb} +0 -1
  45. data/spec/models/{adminpanel/user_spec.rb → user_spec.rb} +0 -1
  46. data/spec/spec_helper.rb +7 -4
  47. data/spec/support/define_factory_models.rb +17 -0
  48. data/spec/support/helper_methods.rb +11 -0
  49. data/spec/support/submit_forms_without_button.rb +17 -0
  50. data/spec/uploaders/{adminpanel/gallery_uploader_spec.rb → gallery_uploader_spec.rb} +0 -0
  51. data/spec/uploaders/{adminpanel/image_uploader_spec.rb → image_uploader_spec.rb} +0 -0
  52. data/spec/uploaders/{adminpanel/section_uploader_spec.rb → section_uploader_spec.rb} +0 -0
  53. metadata +119 -149
  54. data/app/views/adminpanel/users/_form.html.erb +0 -33
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA512:
3
+ data.tar.gz: da08a9e643114230cacbf2c777edb198ef0fcdabaa5715e8f867931f513a909658cc5ccc7c46a835edc20370929d9ab442c7959edf03369f1809ad15c2dfccf7
4
+ metadata.gz: 0bd2c489b74f7d28e3984a248efd018dec4279e28d5ed84a801edfb647bf239509eacf0b403a8aea20e794aaad2f9dd0a1131437981ea42eac5582d784124059
5
+ SHA1:
6
+ data.tar.gz: 3a587ada3b82f1222a7d88520cbceed119383e9b
7
+ metadata.gz: 23cb1d56c4ade057b41987c51f3e862dbe874bbd
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ notifications:
3
+ email: false
4
+ rvm:
5
+ - "1.8.7"
6
+ env:
7
+ - RAILS=3.2.12
data/Gemfile CHANGED
@@ -3,15 +3,22 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in adminpanel.gemspec
4
4
  # gemspec
5
5
 
6
- gem "rails", "3.2.12"
7
- gem "carrierwave", "0.9.0"
8
- gem "rmagick", "2.13.2"
9
- gem "ckeditor", "4.0.6"
10
- gem "jquery-rails", "3.0.4"
11
- gem "bcrypt-ruby", "3.0.0"
12
- gem "rails-i18n", "3.0.0"
6
+ gem "rails", "~> 3.2.12"
7
+ gem "carrierwave", "~> 0.9.0"
8
+ gem "rmagick", "~> 2.13.2"
9
+ gem "jquery-rails", "~> 3.0.4"
10
+ gem "bcrypt-ruby", "~> 3.0.0"
11
+ gem "rails-i18n", "~> 3.0.0"
13
12
 
14
13
  group :test do
15
- gem "rspec", "2.11.0"
16
- gem "sqlite3"
14
+ gem "bundler", "~> 1.3"
15
+ gem "activerecord", "3.2.12"
16
+ gem "rspec", "2.14.0"
17
+ gem "rspec-rails"
18
+ gem "sqlite3", :platform => [:ruby, :mswin, :mingw]
19
+ gem "rake"
20
+ gem "factory_girl", "2.6.4"
21
+ gem "capybara", "1.1.4"
22
+ gem "nokogiri", "1.5.9"
23
+ gem "rubyzip", "0.9.9"
17
24
  end
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  This gem is developed to be a CMS for Ruby 1.8.7 and Rails 3.2.12
4
4
 
5
+ [![Travis CI ](https://api.travis-ci.org/joseramonc/adminpanel.png) ](https://travis-ci.org/joseramonc/adminpanel)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -29,7 +31,11 @@ Then run:
29
31
  rake db:migrate
30
32
  to create the database that the adminpanel it's expecting.
31
33
 
32
- Any doubt feel free to ask me!
34
+ Then, mount the gem wherever you like!
35
+
36
+ mount Adminpanel::Engine => "/admin"
37
+
38
+ Any doubts or errors feel free to ask me!
33
39
 
34
40
  ## Contributing
35
41
 
@@ -38,3 +44,8 @@ Any doubt feel free to ask me!
38
44
  3. Commit your changes (`git commit -am 'Add some feature'`)
39
45
  4. Push to the branch (`git push origin my-new-feature`)
40
46
  5. Create new Pull Request
47
+
48
+ ## To Do:
49
+
50
+ 1. Add english support
51
+ 2. Add the medium editor to the custom builder so it inits itself
data/Rakefile CHANGED
@@ -1 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
data/adminpanel.gemspec CHANGED
@@ -19,17 +19,21 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib", "app/assets"]
20
20
 
21
21
 
22
- spec.add_dependency "rails", "3.2.12"
23
- spec.add_dependency "carrierwave", "0.9.0"
24
- spec.add_dependency "rmagick", "2.13.2"
25
- spec.add_dependency "ckeditor", "4.0.6"
26
- spec.add_dependency "jquery-rails", "3.0.4"
27
- spec.add_dependency "bcrypt-ruby", "3.0.0"
28
- spec.add_dependency "rails-i18n", "3.0.0"
22
+ spec.add_dependency "rails", "~> 3.2.12"
23
+ spec.add_dependency "carrierwave", "~> 0.9.0"
24
+ spec.add_dependency "rmagick", "~> 2.13.2"
25
+ spec.add_dependency "jquery-rails", "~> 3.0.4"
26
+ spec.add_dependency "bcrypt-ruby", "~> 3.0.0"
27
+ spec.add_dependency "rails-i18n", "~> 3.0.0"
29
28
 
30
29
  spec.add_development_dependency "bundler", "~> 1.3"
31
- spec.add_development_dependency "activerecord", "3.2.12"
30
+ spec.add_development_dependency "activerecord", "~> 3.2.12"
32
31
  spec.add_development_dependency "rake"
33
32
  spec.add_development_dependency "sqlite3"
34
- spec.add_development_dependency "rspec", "2.11.0"
33
+ spec.add_development_dependency "factory_girl_rails", "2.6.4"
34
+ spec.add_development_dependency "rspec", "~> 2.14.0"
35
+ spec.add_development_dependency "rspec-rails", "~> 2.14.0"
36
+ spec.add_development_dependency "capybara", "1.1.4"
37
+ spec.add_development_dependency "nokogiri", "1.5.9"
38
+ spec.add_development_dependency "rubyzip", "0.9.9"
35
39
  end
@@ -34,13 +34,20 @@ input.focused{
34
34
  position: relative;
35
35
  z-index: 2;
36
36
  }
37
- input.error, input.error:focus{
37
+
38
+ .field_with_errors > input {
38
39
  border-color: rgba(226, 119, 90, 0.6);
39
40
  outline: 0 none;
40
41
  position: relative;
41
42
  z-index: 2;
43
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(226, 119, 90, 0.6);
42
44
  }
43
- input.error:focus{
45
+
46
+ .field_with_errors > select {
47
+ border-color: rgba(226, 119, 90, 0.6);
48
+ outline: 0 none;
49
+ position: relative;
50
+ z-index: 2;
44
51
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(226, 119, 90, 0.6);
45
52
  }
46
53
  input.warning, input.warning:focus{
@@ -1560,4 +1567,5 @@ table.table thead .sorting_desc_disabled { background: url('sort_desc_disabled.p
1560
1567
  .logo {
1561
1568
  margin: 0 90px 0 15px;
1562
1569
  }
1563
- }
1570
+ }
1571
+
@@ -11,7 +11,7 @@ module Adminpanel
11
11
  def create
12
12
  @category = Category.new(params[:category])
13
13
  if @category.save
14
- redirect_to categories_path, :notice => "La categoria ha sido guardada"
14
+ redirect_to categories_path, :notice => t("category.success")
15
15
  else
16
16
  render "new"
17
17
  end
@@ -47,7 +47,7 @@ module Adminpanel
47
47
 
48
48
  respond_to do |format|
49
49
  if @product.save
50
- format.html { redirect_to product_path(@product), :notice => 'Product was successfully created.' }
50
+ format.html { redirect_to product_path(@product), :notice => t("product.success") }
51
51
  format.json { render :json => product_path(@product), :status => :created, :location => @product }
52
52
  else
53
53
  @categories = Category.all.collect{|c| [ c.name, c.id ] }
@@ -1,5 +1,7 @@
1
1
  module Adminpanel
2
2
  class SessionsController < Adminpanel::ApplicationController
3
+
4
+ layout "login"
3
5
  layout 'sessions'
4
6
  skip_before_filter :signed_in_user
5
7
 
@@ -10,17 +12,17 @@ module Adminpanel
10
12
  user = User.find_by_email(params[:session][:email].downcase)
11
13
  if user && user.authenticate(params[:session][:password])
12
14
  sign_in user
13
- flash[:success] = "Bienvenido!"
15
+ flash[:success] = t("authentication.signin success")
14
16
  redirect_to root_url
15
17
  else
16
- flash.now[:error] = "Password Incorrecto"
18
+ flash.now[:error] = t("authentication.signin error")
17
19
  render 'new'
18
20
  end
19
21
  end
20
22
 
21
23
  def destroy
22
24
  sign_out
23
- redirect_to root_url
25
+ redirect_to signin_path
24
26
  end
25
27
  end
26
28
  end
@@ -9,7 +9,7 @@ module Adminpanel
9
9
  end
10
10
 
11
11
  def full_title(page_title)
12
- base_title = "Super admin"
12
+ base_title = t("Panel title")
13
13
  if page_title.empty?
14
14
  base_title
15
15
  else
@@ -8,6 +8,7 @@ module Adminpanel
8
8
  mount_uploader :file, Adminpanel::SectionUploader
9
9
  validates_length_of :description, :minimum => 10, :maximum => 10, :on => :update, :if => lambda{|section| section.key == "telephone"}
10
10
  validates_presence_of :description, :minimum => 9, :on => :update, :if => lambda{|section| section.has_description == true}
11
+ validates :description, :numericality => { :only_integer => true }, :on => :update, :if => lambda{|section| section.key == "telephone"}
11
12
  validates_presence_of :key
12
13
  validates_presence_of :name
13
14
 
@@ -4,9 +4,10 @@
4
4
  <%=
5
5
  link_to(
6
6
  content_tag(:div,
7
- content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, 'Agregar Categoria', nil),
7
+ content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, t("category.new"), nil),
8
8
  :class => "btn btn-box span2"),
9
- new_category_path
9
+ new_category_path,
10
+ :id => "new-category-button"
10
11
  )
11
12
  %>
12
13
  </div>
@@ -24,23 +25,22 @@
24
25
  <thead>
25
26
  <tr>
26
27
  <th>Nombre</th>
27
- <% #if can? :manage, Client %>
28
28
  <th>Acción</th>
29
- <% #end %>
30
29
  </tr>
31
30
  </thead>
32
31
  <tbody>
33
32
  <% @categories.each do |category| %>
34
33
  <tr>
35
34
  <td><%= category.name %></td>
36
- <% #if can? :manage, category %>
37
35
  <td>
38
- <%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_category_path(category), :title => "Editar"%>
39
- <%= link_to content_tag(:i, nil, :class => 'icon-remove'), category_path(category), :title => "Borrar", :method => :delete,
40
- :data => { :confirm => "Seguro?" }
36
+ <%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_category_path(category), :title => t("action.edit") %>
37
+ <%= link_to content_tag(:i, nil, :class => 'icon-remove'), category_path(category),
38
+ :title => t("action.delete"),
39
+ :id => "category-delete",
40
+ :method => :delete,
41
+ :data => { :confirm => "Seguro?" }
41
42
  %>
42
43
  </td>
43
- <% #end %>
44
44
  </tr>
45
45
  <% end %>
46
46
  </tbody>
@@ -1,4 +1,4 @@
1
- <% provide(:page_title, "Nueva") %>
1
+ <% provide(:page_title, t("category.new")) %>
2
2
  <% breadcrumb_add('Categorias', products_path) %>
3
3
  <div class="row-fluid">
4
4
  <div class = "widget widget-padding span12">
@@ -11,7 +11,7 @@
11
11
  </div>
12
12
  </div>
13
13
  <div class = "widget-footer">
14
- <%= f.submit "Agregar", :disable_with => 'Submiting...' %>
14
+ <%= f.submit "Agregar", :disable_with => 'Submiting...', :id =>"new-category-button" %>
15
15
  </div>
16
16
  <% end -%>
17
17
  </div>
@@ -15,7 +15,7 @@
15
15
  <%=
16
16
  content_tag(
17
17
  :button,
18
- t("Delete"),
18
+ t("action.delete"),
19
19
  :class => "btn btn-danger remove_fields"
20
20
  )
21
21
  %>
@@ -2,11 +2,11 @@
2
2
  <div class = "widget-forms clearfix">
3
3
  <%= custom_form_for(@product, {:class => "form-horizontal"}) do |f| %>
4
4
  <%= render 'shared/error_messages', :object => @product %>
5
- <%= f.text_field :name, :label => t("model.attributes.product.Name"), :placeholder => t("Name of product") %>
6
- <%= f.text_field :brief, :label => t("Short description"), :placeholder => t("Short description of product") %>
5
+ <%= f.text_field :name, :label => t("model.attributes.Adminpanel::Product.name"), :placeholder => t("model.attributes.Adminpanel::Product.name") %>
6
+ <%= f.text_field :brief, :label => t("model.attributes.Adminpanel::Product.brief"), :placeholder => t("model.attributes.Adminpanel::Product.brief") %>
7
7
 
8
8
  <div class="control-group">
9
- <label class="control-label"><%= t "Description" %></label>
9
+ <label class="control-label"><%= t("Description") %></label>
10
10
  <div class="controls">
11
11
  <%= f.hidden_field :description, :id => "description-field" %>
12
12
  <% if @product.description.nil? %>
@@ -26,6 +26,6 @@
26
26
  </div>
27
27
  </div>
28
28
  <div class = "widget-footer">
29
- <%= f.submit t("Save"), :disable_with => 'Submiting...', :id => "save-button" %>
29
+ <%= f.submit t("action.save"), :disable_with => 'Submiting...', :id => "save-button" %>
30
30
  </div>
31
31
  <% end -%>
@@ -1,4 +1,4 @@
1
- <% provide(:page_title, t("Edit")) %>
1
+ <% provide(:page_title, t("action.edit")) %>
2
2
  <% breadcrumb_add(t("model.Products"), products_path) %>
3
3
  <% breadcrumb_add(@product.name, product_path(@product)) %>
4
4
  <div class="row-fluid">
@@ -1,16 +1,14 @@
1
1
  <%= provide(:page_title, "Productos") %>
2
- <% #if can? :create, Client %>
3
2
  <div class="row-fluid">
4
3
  <%=
5
4
  link_to(
6
5
  content_tag(:div,
7
- content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, 'Agregar Producto', nil),
6
+ content_tag(:i, nil, :class => 'icon-plus-sign icon-2x') + content_tag(:span, t("product.new"), nil),
8
7
  :class => "btn btn-box span2"),
9
8
  new_product_path
10
9
  )
11
10
  %>
12
11
  </div>
13
- <% #end %>
14
12
 
15
13
  <div class="row-fluid">
16
14
  <div class="widget widget-padding span12">
@@ -25,9 +23,7 @@
25
23
  <tr>
26
24
  <th>Nombre</th>
27
25
  <th>Descripción</th>
28
- <% #if can? :manage, Client %>
29
- <th>Acción</th>
30
- <% #end %>
26
+ <th>Acción</th>
31
27
  </tr>
32
28
  </thead>
33
29
  <tbody>
@@ -1,4 +1,4 @@
1
- <% provide(:page_title, t("New")) %>
1
+ <% provide(:page_title, t("product.new")) %>
2
2
  <% breadcrumb_add(t("model.Products"), products_path) %>
3
3
  <div class="row-fluid">
4
4
  <div class = "widget widget-padding span12">
@@ -15,7 +15,7 @@
15
15
  <%=
16
16
  content_tag(
17
17
  :button,
18
- t("Delete"),
18
+ t("action.delete"),
19
19
  :class => "btn btn-danger remove_fields"
20
20
  )
21
21
  %>
@@ -3,7 +3,7 @@
3
3
  <div class="widget container-narrow">
4
4
  <div class="widget-header">
5
5
  <i class="icon-user"></i>
6
- <h5>Bienvenido! Inicia Sesion</h5>
6
+ <h5><%= t("authentication.welcome") %></h5>
7
7
  </div>
8
8
  <div class="widget-body clearfix" style="padding:25px;">
9
9
  <% flash.each do |key, value| %>
@@ -12,15 +12,15 @@
12
12
  <%= form_for(:session, :url => sessions_path) do |f| %>
13
13
  <div class="control-group">
14
14
  <div class="controls">
15
- <%= f.email_field :email, :class => "btn-block", :id => "inputEmail" , :placeholder => "Correo" %>
15
+ <%= f.text_field :email, :class => "btn-block", :id => "inputEmail" , :placeholder => "Correo" %>
16
16
  </div>
17
17
  </div>
18
18
  <div class="control-group">
19
19
  <div class="controls">
20
- <%= f.password_field :password, :class => "btn-block", :id => "inputPassword", :placeholder => "Contrasena" %>
20
+ <%= f.password_field :password, :class => "btn-block", :id => "inputPassword", :placeholder => t("Password") %>
21
21
  </div>
22
22
  </div>
23
- <%= f.submit "Iniciar Sesión", :class => "btn pull-right" %>
23
+ <%= f.submit "Iniciar Sesión", :class => "btn pull-right", :id => "signin-button" %>
24
24
  <% end %>
25
25
  </div>
26
26
  </div>
@@ -0,0 +1,21 @@
1
+ <div class = "widget widget-padding span12">
2
+ <div class = "widget-header"><i class = "icon-user"></i><h5>Usuario</h5></div>
3
+ <div class = "widget-body">
4
+ <div class = "widget-forms clearfix">
5
+ <%= custom_form_for(@user) do |f| %>
6
+ <%= render 'shared/error_messages', :object => @user %>
7
+
8
+ <%= f.text_field :name, :label => "Nombre", :placeholder => "Nombre del usuario" %>
9
+
10
+ <%= f.text_field :email, :label => t("model.attributes.Adminpanel::User.email"), :placeholder => t("model.attributes.Adminpanel::User.email") %>
11
+
12
+ <%= f.password_field :password, :label => t("model.attributes.Adminpanel::User.password"), :placeholder => t("model.attributes.Adminpanel::User.password") %>
13
+
14
+ <%= f.password_field :password_confirmation, :label => t("model.attributes.Adminpanel::User.password_confirmation"), :placeholder => t("model.attributes.Adminpanel::User.password_confirmation") %>
15
+ </div>
16
+ </div>
17
+ <div class = "widget-footer">
18
+ <%= f.submit "Agregar", :disable_with => 'Submiting...' %>
19
+ </div>
20
+ <% end -%>
21
+ </div>
@@ -2,21 +2,5 @@
2
2
  <% breadcrumb_add('Usuarios', users_path) %>
3
3
  <% breadcrumb_add(@user.name, user_path(@user)) %>
4
4
  <div class="row-fluid">
5
- <div class = "widget widget-padding span12">
6
- <div class = "widget-header"><i class = "icon-user"></i><h5>Usuario</h5></div>
7
- <div class = "widget-body">
8
- <div class = "widget-forms clearfix">
9
- <%= custom_form_for(@user, :url => user_path(@user)) do |f| %>
10
- <%= render 'shared/error_messages', :object => @user %>
11
- <%= f.text_field :name, :label => "Nombre", :placeholder => "Nombre del usuario" %>
12
- <%= f.text_field :email, :label => t("Email"), :placeholder => t("Email") %>
13
- <%= f.password_field :password, :label => t("Password"), :placeholder => t("Password") %>
14
- <%= f.password_field :password_confirmation, :label => "Confirmar", :placeholder => "Confirmar" %>
15
- </div>
16
- </div>
17
- <div class = "widget-footer">
18
- <%= f.submit "Agregar", :disable_with => 'Submiting...' %>
19
- </div>
20
- <% end -%>
21
- </div>
5
+ <%= render 'user_form' %>
22
6
  </div>
@@ -2,21 +2,5 @@
2
2
  <% breadcrumb_add('Usuarios', users_path) %>
3
3
 
4
4
  <div class="row-fluid">
5
- <div class = "widget widget-padding span12">
6
- <div class = "widget-header"><i class = "icon-user"></i><h5>Usuario</h5></div>
7
- <div class = "widget-body">
8
- <div class = "widget-forms clearfix">
9
- <%= custom_form_for(@user, :url => users_path) do |f| %>
10
- <%= render 'shared/error_messages', :object => @user %>
11
- <%= f.text_field :name, :label => "Nombre", :placeholder => "Nombre del usuario" %>
12
- <%= f.text_field :email, :label => t("Email"), :placeholder => t("Email") %>
13
- <%= f.password_field :password, :label => t("Password"), :placeholder => t("Password") %>
14
- <%= f.password_field :password_confirmation, :label => "Confirmar", :placeholder => "Confirmar" %>
15
- </div>
16
- </div>
17
- <div class = "widget-footer">
18
- <%= f.submit "Agregar", :disable_with => 'Submiting...' %>
19
- </div>
20
- <% end -%>
21
- </div>
5
+ <%= render 'user_form' %>
22
6
  </div>