spree_product_testimonials 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,13 @@
1
+ Testimonials
2
+ ============
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+
13
+ Copyright (c) 2010 [name of extension creator], released under the New BSD License
@@ -0,0 +1,12 @@
1
+ class Admin::TestimonialsController < Admin::BaseController
2
+ resource_controller
3
+ belongs_to :product
4
+
5
+ create.wants.html { redirect_to collection_path }
6
+ update.wants.html { redirect_to collection_path }
7
+
8
+ new_action.response do |wants|
9
+ wants.html {render :action => :new, :layout => !request.xhr?}
10
+ end
11
+
12
+ end
@@ -0,0 +1,6 @@
1
+ class Testimonial < ActiveRecord::Base
2
+ belongs_to :product
3
+ validates_presence_of :name, :location, :description
4
+
5
+ scope :featured, where(:featured => true)
6
+ end
@@ -0,0 +1,30 @@
1
+ <%- locals = {:f => f} %>
2
+
3
+ <%= render "shared/error_messages", :target => f.object %>
4
+
5
+ <%= hook :admin_testimonial_form, locals do %>
6
+
7
+ <%= f.field_container :name do %>
8
+ <%= f.label :name, t("name") %> <span class="required">*</span><br />
9
+ <%= f.text_field :name, :class => 'fullwidth title' %>
10
+ <%= f.error_message_on :name %>
11
+ <% end %>
12
+
13
+ <%= f.field_container :location do %>
14
+ <%= f.label :location, t("location") %> <span class="required">*</span><br />
15
+ <%= f.text_field :location, :class => 'fullwidth title' %>
16
+ <%= f.error_message_on :location %>
17
+ <% end %>
18
+
19
+ <%= f.field_container :description do %>
20
+ <%= f.label :description, t("description") %> <span class="required">*</span><br />
21
+ <%= f.text_area :description, :class => 'fullwidth title' %>
22
+ <%= f.error_message_on :description %>
23
+ <% end %>
24
+
25
+ <%= f.field_container :featured do %>
26
+ <%= f.check_box :featured %>
27
+ <%= f.label :featured, t("featured") %>
28
+ <%= f.error_message_on :featured %>
29
+ <% end %>
30
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <%= form_for(@testimonial, :url => object_url, :html => { :method => :put }) do |f| %>
2
+ <%= render :partial => 'form', :locals => {:f => f} %>
3
+ <%= render :partial => 'admin/shared/edit_resource_links' %>
4
+ <% end %>
@@ -0,0 +1,52 @@
1
+ <%= render :partial => 'admin/shared/product_sub_menu' %>
2
+
3
+ <%= render :partial => 'admin/shared/product_tabs', :locals => {:current => "Testimonials"} %>
4
+
5
+
6
+ <%= csrf_meta_tag %>
7
+
8
+ <div class='toolbar'>
9
+ <ul class='actions'>
10
+ <li id="new_testimonial_link">
11
+ <%= button_link_to t("new_testimonial"),
12
+ new_object_url,
13
+ {:remote => :true, :icon => 'add' } %>
14
+ </li>
15
+ </ul>
16
+ <br class='clear' />
17
+ </div>
18
+ <div id="new_testimonial"></div>
19
+
20
+ <h1><%= t("testimonials") %></h1>
21
+ <table class="index">
22
+ <thead>
23
+ <%= hook :admin_testimonials_index_headers do %>
24
+ <th><%= t("name") %></td>
25
+ <th><%= t("description") %></td>
26
+ <th><%= t("location") %></td>
27
+ <th><%= t("featured") %></td>
28
+ <% end %>
29
+ <th>
30
+ <%= hook :admin_testimonials_header_actions %>
31
+ </th>
32
+ </tr>
33
+ <thead>
34
+ <% @testimonials.each do |testimonial| %>
35
+ <tr id="<%= dom_id testimonial %>">
36
+ <%- locals = {:testimonial => testimonial} %>
37
+ <%= hook :admin_testimonials_index_rows, locals do %>
38
+ <td><%= testimonial.name %></td>
39
+ <td><%= simple_format testimonial.description %></td>
40
+ <td><%= testimonial.location %></td>
41
+ <td><%= "featured" if testimonial.featured %></td>
42
+ <% end %>
43
+ <td class="actions">
44
+ <%= hook :admin_testimonials_index_row_actions, locals do %>
45
+ <%= link_to_edit testimonial %>&nbsp;
46
+ <%= link_to_delete testimonial %>
47
+ <% end %>
48
+ </td>
49
+ </tr>
50
+ <% end %>
51
+ </tbody>
52
+ </table>
@@ -0,0 +1,4 @@
1
+ <%= form_for(@testimonial, :url => collection_url) do |f| %>
2
+ <%= render :partial => 'form', :locals => {:f => f} %>
3
+ <%= render :partial => 'admin/shared/new_resource_links' %>
4
+ <% end %>
data/config/routes.rb ADDED
@@ -0,0 +1,7 @@
1
+ Rails.application.routes.draw do
2
+ namespace :admin do
3
+ resources :products do
4
+ resources :testimonials
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ module SpreeProductTestimonials
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path("../../templates", __FILE__)
5
+
6
+ desc "Configures your Rails application for use with spree_testimonials"
7
+ def copy_migrations
8
+ directory "db"
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ class CreateTestimonials < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :testimonials do |t|
4
+ t.string :name
5
+ t.string :location
6
+ t.text :description
7
+ t.boolean :featured
8
+ t.integer :product_id
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ drop_table :testimonials
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ require 'spree_core'
2
+ require 'spree_product_testimonials_hooks'
3
+ require 'spree_product_testimonials/engine'
@@ -0,0 +1,15 @@
1
+ require "spree_product_testimonials"
2
+
3
+ module SpreeProductTestimonials
4
+
5
+ class Engine < Rails::Engine
6
+
7
+ def self.activate
8
+ Product.class_eval do
9
+ has_many :testimonials
10
+ end
11
+ end
12
+ config.to_prepare &method(:activate).to_proc
13
+ end
14
+
15
+ end
@@ -0,0 +1,8 @@
1
+ class SpreeProductTestimonialsHooks < Spree::ThemeSupport::HookListener
2
+ insert_after :admin_product_tabs do
3
+ %{<li<%== ' class="active"' if current == "Testimonials" %>>
4
+ <%= link_to t("testimonials"), admin_product_testimonials_url(@product) %>
5
+ </li>}
6
+ end
7
+ end
8
+
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_product_testimonials
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ben Hutton
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-03-16 00:00:00.000000000 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: spree_core
17
+ requirement: &15390960 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.30.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *15390960
26
+ description: With this gem you get management tools to make it very easy to update
27
+ your product testimonials thru the admin section
28
+ email: benhutton@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - README.md
34
+ - lib/spree_product_testimonials_hooks.rb
35
+ - lib/spree_product_testimonials.rb
36
+ - lib/generators/spree_product_testimonials/install_generator.rb
37
+ - lib/generators/templates/db/migrate/20101122222055_create_testimonials.rb
38
+ - lib/spree_product_testimonials/engine.rb
39
+ - app/views/admin/testimonials/new.html.erb
40
+ - app/views/admin/testimonials/edit.html.erb
41
+ - app/views/admin/testimonials/index.html.erb
42
+ - app/views/admin/testimonials/_form.html.erb
43
+ - app/models/testimonial.rb
44
+ - app/controllers/admin/testimonials_controller.rb
45
+ - config/routes.rb
46
+ has_rdoc: false
47
+ homepage:
48
+ licenses: []
49
+ post_install_message:
50
+ rdoc_options: []
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: 1.8.7
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements:
66
+ - none
67
+ rubyforge_project:
68
+ rubygems_version: 1.5.2
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: Adds the ability to manage product testimonials to a spree site
72
+ test_files: []