refinerycms-recommendations 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ module Refinery
13
13
 
14
14
  def show
15
15
  @recommendation = Recommendation.find(params[:id])
16
-
16
+ @other_recommendations = Recommendation.find(:all, :conditions => ["slug != ?", params[:id]])
17
17
  # you can use meta fields from your model instead (e.g. browser_title)
18
18
  # by swapping @page for @recommendation in the line below:
19
19
  present(@page)
@@ -1,15 +1,23 @@
1
1
  module Refinery
2
2
  module Recommendations
3
3
  class Recommendation < Refinery::Core::BaseModel
4
+ extend FriendlyId
4
5
  self.table_name = 'refinery_recommendations'
5
-
6
- attr_accessible :name, :position
6
+
7
+ friendly_id :friendly_id_source, :use => [:slugged]
8
+
9
+ attr_accessible :name, :position, :role, :company, :company_url, :source_url, :publish_date, :description, :youtube_id, :photo_id, :widget_visible
7
10
 
8
11
  acts_as_indexed :fields => [:name, :company, :company_url, :source_url, :role, :description, :youtube_id]
9
12
 
10
13
  validates :name, :presence => true, :uniqueness => true
11
-
14
+
12
15
  belongs_to :photo, :class_name => '::Refinery::Image'
16
+
17
+ def friendly_id_source
18
+ "#{name} #{role} #{company}"
19
+ end
20
+
13
21
  end
14
22
  end
15
23
  end
@@ -5,39 +5,33 @@
5
5
 
6
6
 
7
7
  <div class='field'>
8
- <%= f.label :name -%>
8
+ <%= f.label "Recommender's Name" -%>
9
9
  <%= f.text_field :name, :class => 'larger widest' -%>
10
-
11
10
  </div>
12
11
 
13
12
  <div class='field'>
14
- <%= f.label :role -%>
13
+ <%= f.label "Job Role" -%>
15
14
  <%= f.text_field :role -%>
16
-
17
15
  </div>
18
16
 
19
17
  <div class='field'>
20
18
  <%= f.label :company -%>
21
19
  <%= f.text_field :company -%>
22
-
23
20
  </div>
24
21
 
25
22
  <div class='field'>
26
23
  <%= f.label :company_url -%>
27
24
  <%= f.text_field :company_url -%>
28
-
29
25
  </div>
30
26
 
31
27
  <div class='field'>
32
28
  <%= f.label :source_url -%>
33
29
  <%= f.text_field :source_url -%>
34
-
35
30
  </div>
36
31
 
37
32
  <div class='field'>
38
33
  <%= f.label :publish_date -%>
39
34
  <%= f.datetime_select :publish_date -%>
40
-
41
35
  </div>
42
36
 
43
37
  <div class='field'>
@@ -1,7 +1,9 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(recommendation) -%>">
2
2
  <span class='title'>
3
3
  <%= recommendation.name %>
4
-
4
+ <span class="preview">
5
+ <%= l(recommendation.publish_date, :format => :short) %>
6
+ </span>
5
7
  </span>
6
8
  <span class='actions'>
7
9
 
@@ -0,0 +1,18 @@
1
+ <div class="recommendation">
2
+ <div class="left-media">
3
+ <% if recommendation.photo.present? %>
4
+ <%= image_fu recommendation.photo, '120x150#' %>
5
+ <% end %>
6
+ </div>
7
+ <div class="right-media">
8
+ <% if recommendation.youtube_id.present? %>
9
+ <iframe width="240" height="140" src="http://www.youtube.com/embed/<%= recommendation.youtube_id%>" frameborder="0" allowfullscreen></iframe>
10
+ <% end %>
11
+ </div>
12
+ <blockquote>
13
+ <p><%= raw recommendation.description %></p>
14
+ <p><cite><%= raw citation_line(recommendation) %></cite></p>
15
+ </blockquote>
16
+ </div>
17
+
18
+
@@ -0,0 +1,10 @@
1
+ <% content_for :body_content_left do %>
2
+ <div class="recommendations">
3
+ <% @recommendations.each do |rec| %>
4
+ <%= render 'item', :recommendation => rec %>
5
+ <% end %>
6
+ </div>
7
+ <% end %>
8
+
9
+
10
+
@@ -0,0 +1,14 @@
1
+ <aside>
2
+ <nav id="latest_recommendations">
3
+ <h2><%= t('.other') %></h2>
4
+ <ul id="recommendations">
5
+ <% @recommendations.each do |recommendation| %>
6
+ <li>
7
+ <%= link_to recommendation.name, refinery.recommendations_recommendation_path(recommendation) %>
8
+ </li>
9
+ <% end %>
10
+ </ul>
11
+ </nav>
12
+ </aside>
13
+
14
+
@@ -1,11 +1,2 @@
1
- <% content_for :body_content_left do %>
2
- <ul id="recommendations">
3
- <% @recommendations.each do |recommendation| %>
4
- <li>
5
- <%= link_to recommendation.name, refinery.recommendations_recommendation_path(recommendation) %>
6
- </li>
7
- <% end %>
8
- </ul>
9
- <% end %>
10
-
1
+ <%= render 'items' %>
11
2
  <%= render '/refinery/content_page' %>
@@ -1,81 +1,16 @@
1
- <% content_for :body_content_title do %>
2
- <%= @recommendation.name %>
3
- <% end %>
4
-
5
1
  <% content_for :body_content_left do %>
6
- <section>
7
- <h1>Name</h1>
8
- <p>
9
- <%=raw @recommendation.name %>
10
- </p>
11
- </section>
12
- <section>
13
- <h1>Role</h1>
14
- <p>
15
- <%=raw @recommendation.role %>
16
- </p>
17
- </section>
18
- <section>
19
- <h1>Company</h1>
20
- <p>
21
- <%=raw @recommendation.company %>
22
- </p>
23
- </section>
24
- <section>
25
- <h1>Company Url</h1>
26
- <p>
27
- <%=raw @recommendation.company_url %>
28
- </p>
29
- </section>
30
- <section>
31
- <h1>Source Url</h1>
32
- <p>
33
- <%=raw @recommendation.source_url %>
34
- </p>
35
- </section>
36
- <section>
37
- <h1>Publish Date</h1>
38
- <p>
39
- <%=raw @recommendation.publish_date %>
40
- </p>
41
- </section>
42
- <section>
43
- <h1>Description</h1>
44
- <p>
45
- <%=raw @recommendation.description %>
46
- </p>
47
- </section>
48
- <section>
49
- <h1>Youtube</h1>
50
- <p>
51
- <%=raw @recommendation.youtube_id %>
52
- </p>
53
- </section>
54
- <section>
55
- <h1>Photo</h1>
56
- <p>
57
- <%= image_fu @recommendation.photo, nil %>
58
- </p>
59
- </section>
60
- <section>
61
- <h1>Widget Visible</h1>
62
- <p>
63
- <%=raw @recommendation.widget_visible %>
64
- </p>
65
- </section>
2
+ <div class="recommendations">
3
+ <%= render 'item', :recommendation => @recommendation %>
4
+ <% @other_recommendations.each do |rec| %>
5
+ <%= render 'item', :recommendation => rec %>
6
+ <% end %>
7
+ </div>
66
8
  <% end %>
9
+ <%= render '/refinery/content_page' %>
10
+
11
+
12
+
13
+
14
+
67
15
 
68
- <% content_for :body_content_right do %>
69
- <aside>
70
- <h2><%= t('.other') %></h2>
71
- <ul id="recommendations">
72
- <% @recommendations.each do |recommendation| %>
73
- <li>
74
- <%= link_to recommendation.name, refinery.recommendations_recommendation_path(recommendation) %>
75
- </li>
76
- <% end %>
77
- </ul>
78
- </aside>
79
- <% end %>
80
16
 
81
- <%= render '/refinery/content_page' %>
@@ -21,6 +21,14 @@ en:
21
21
  recommendations:
22
22
  show:
23
23
  other: Other Recommendations
24
+ back_to_index: "Back to all recommendations"
25
+ latest:
26
+ other: Other Recommendations
27
+ index:
28
+ published: Published
29
+ read_more: Read more
30
+ no_items_yet: There are no news item entries yet.
31
+
24
32
  activerecord:
25
33
  attributes:
26
34
  'refinery/recommendations/recommendation':
@@ -33,4 +41,10 @@ en:
33
41
  description: Description
34
42
  youtube_id: Youtube
35
43
  photo: Photo
36
- widget_visible: Widget Visible
44
+ widget_visible: Widget Visible
45
+
46
+
47
+
48
+
49
+
50
+
@@ -0,0 +1,11 @@
1
+ class AddSlugToRecommendationsRecommendations < ActiveRecord::Migration
2
+ def up
3
+ add_column :refinery_recommendations, :slus, :string
4
+ end
5
+
6
+ def down
7
+ remove_column :refinery_recommendations, :slug
8
+ end
9
+ end
10
+
11
+
@@ -1,6 +1,9 @@
1
1
  module Refinery
2
2
  class RecommendationsGenerator < Rails::Generators::Base
3
3
 
4
+ source_root File.expand_path("../templates", __FILE__)
5
+ desc "This generator installs Refinery-Recomendations (including Assets)"
6
+
4
7
  def rake_db
5
8
  rake("refinery_recommendations:install:migrations")
6
9
  end
@@ -15,5 +18,23 @@ Refinery::Recommendations::Engine.load_seed
15
18
  EOH
16
19
  end
17
20
  end
21
+
22
+ def add_assets
23
+ insert_into_file "app/assets/javascripts/application.js", "//= require recommendations \n", :after => "jquery_ujs\n"
24
+
25
+ # Add our own require:
26
+ content = File.read("app/assets/stylesheets/application.css")
27
+ if content.match(/require_tree\s+\.\s*$/)
28
+ # Good enough - that'll include our recommendationd.css
29
+ else
30
+ style_require_block = " *= require recommendations\n"
31
+ insert_into_file "app/assets/stylesheets/application.css", style_require_block, :after => "require_self\n"
32
+ end
33
+
34
+ copy_file "recommendations.js", "app/assets/javascripts/recommendations.js"
35
+ copy_file "recommendations.css.scss", "app/assets/stylesheets/recommendations.css.scss"
36
+ directory 'images', 'app/assets/images'
37
+ directory 'helpers', 'app/helpers'
38
+ end
18
39
  end
19
- end
40
+ end
@@ -0,0 +1,19 @@
1
+ module RecommendationsHelper
2
+
3
+ def citation_line(t)
4
+ [
5
+ content_tag(:b, h(t.name)),
6
+ h(t.role),
7
+ website_or_company(t)
8
+ ].reject{|o| o.blank?}.join(', ').sub(/,\s/, ': ')
9
+ end
10
+
11
+ def website_or_company(t)
12
+ if t.company_url.blank?
13
+ h(t.company)
14
+ else
15
+ content_tag(:a, h(t.company.blank? ? t.company_url : t.company), :href => h(t.company_url))
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,44 @@
1
+ .recommendations {
2
+ border-bottom:1px dashed #ddd; margin:20px 0;
3
+ }
4
+
5
+ .recommendation {
6
+ border-top:1px dashed #ddd;
7
+ width: 100%;
8
+ min-height: 180px;
9
+ clear: both;
10
+ position: relative;
11
+
12
+ .left-media{
13
+ left: 0;
14
+ position: absolute;
15
+ top: 0;
16
+ width:200px;
17
+ height:100%;
18
+ padding:25px;
19
+ }
20
+ .right-media{
21
+ width:280px;
22
+ height:100%;
23
+ float: right;
24
+ padding:25px;
25
+ padding-top:30px;
26
+ }
27
+ }
28
+
29
+ cite {font-style:normal;}
30
+ blockquote p {
31
+ padding: 0 10px 0 240px;}
32
+
33
+ blockquote p:first-child {
34
+ background: transparent url(open_quote.gif) no-repeat scroll 0 0;
35
+ padding-top:36px;
36
+ margin-left:200px;
37
+ }
38
+
39
+ blockquote {
40
+ background: transparent url(close_quote.gif) no-repeat scroll right bottom;
41
+ margin:0 0 14px;
42
+ margin-right:320px;
43
+ }
44
+
data/readme.md CHANGED
@@ -1,10 +1,23 @@
1
- # Recommendations extension for Refinery CMS.
1
+ ###Usage:
2
+ The usual:
3
+ * bundle install
4
+ * rails generate refinery:recommendations
5
+ * rake db:migrate db:seed
2
6
 
3
- ## How to build this extension as a gem
7
+ ###Functionality:
8
+ Hopefully similair to Testimonials refinery1.0 gem, but with:
9
+ * Compatability with refinerycms 2.0
10
+ * BE/admin: Ability to load new recommendations with photo, video and company links etc.
11
+ * FE: Displays all recomendations data for all on both index page and individual shows (including friendly ids to maximise seo)
4
12
 
5
- cd vendor/extensions/recommendations
6
- gem build refinerycms-recommendations.gemspec
7
- gem install refinerycms-recommendations.gem
13
+ Items todo.
14
+ * Homepage widgets (with rotating display of selections made in BE)
8
15
 
9
- # Sign up for a http://rubygems.org/ account and publish the gem
10
- gem push refinerycms-recommendations.gem
16
+ ###Additional things you might like to do
17
+ ####Change the name from recommendations to say testimonials.
18
+ * Easiest way, after installing the gem, copy across the components from config/locales/en.yml that you'd like to rename, i.e:
19
+ en:
20
+ refinery:
21
+ plugins:
22
+ recommendations:
23
+ title: Testimonials
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-recommendations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -28,6 +28,22 @@ dependencies:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  version: 2.0.4
31
+ - !ruby/object:Gem::Dependency
32
+ name: friendly_id
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 4.0.4
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 4.0.4
31
47
  - !ruby/object:Gem::Dependency
32
48
  name: refinerycms-testing
33
49
  requirement: !ruby/object:Gem::Requirement
@@ -62,6 +78,9 @@ files:
62
78
  - app/views/refinery/recommendations/admin/recommendations/edit.html.erb
63
79
  - app/views/refinery/recommendations/admin/recommendations/index.html.erb
64
80
  - app/views/refinery/recommendations/admin/recommendations/new.html.erb
81
+ - app/views/refinery/recommendations/recommendations/_item.html.erb
82
+ - app/views/refinery/recommendations/recommendations/_items.html.erb
83
+ - app/views/refinery/recommendations/recommendations/_latest.html.erb
65
84
  - app/views/refinery/recommendations/recommendations/index.html.erb
66
85
  - app/views/refinery/recommendations/recommendations/show.html.erb
67
86
  - config/locales/en.yml
@@ -71,8 +90,14 @@ files:
71
90
  - config/locales/nl.yml
72
91
  - config/routes.rb
73
92
  - db/migrate/1_create_recommendations_recommendations.rb
93
+ - db/migrate/2_add_slug_to_recommendations_recommendations.rb
74
94
  - db/seeds.rb
75
95
  - lib/generators/refinery/recommendations_generator.rb
96
+ - lib/generators/refinery/templates/helpers/recommendations_helper.rb
97
+ - lib/generators/refinery/templates/images/close_quote.gif
98
+ - lib/generators/refinery/templates/images/open_quote.gif
99
+ - lib/generators/refinery/templates/recommendations.css.scss
100
+ - lib/generators/refinery/templates/recommendations.js
76
101
  - lib/refinery/recommendations/engine.rb
77
102
  - lib/refinery/recommendations.rb
78
103
  - lib/refinerycms-recommendations.rb