diff --git a/Gemfile b/Gemfile
index 6de30ef..6c42880 100644
--- a/Gemfile
+++ b/Gemfile
@@ -23,6 +23,7 @@ gem 'devise'
gem 'jbuilder'
gem 'bootstrap-tagsinput-rails'
gem 'cocoon', :git => 'git://github.com/nathanvda/cocoon'
+gem 'zeroclipboard-rails'
group :development do
diff --git a/Gemfile.lock b/Gemfile.lock
index cef1039..61a476a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -227,6 +227,8 @@ GEM
crack (>= 0.3.2)
xpath (2.0.0)
nokogiri (~> 1.3)
+ zeroclipboard-rails (0.0.12)
+ railties (>= 3.1)
PLATFORMS
ruby
@@ -270,3 +272,4 @@ DEPENDENCIES
uglifier
unicorn
webmock
+ zeroclipboard-rails
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index c048aef..2cf6289 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -14,4 +14,5 @@
//= require jquery_ujs
//= require bootstrap-tagsinput
//= require cocoon
+//= require zeroclipboard
//= require_tree .
diff --git a/app/assets/javascripts/videolistings.js b/app/assets/javascripts/videolistings.js
new file mode 100644
index 0000000..8e99ab2
--- /dev/null
+++ b/app/assets/javascripts/videolistings.js
@@ -0,0 +1,6 @@
+/**
+ * Created by tsouza on 4/28/14.
+ */
+
+
+
diff --git a/app/controllers/videolistings_controller.rb b/app/controllers/videolistings_controller.rb
index f0e39c8..b875777 100644
--- a/app/controllers/videolistings_controller.rb
+++ b/app/controllers/videolistings_controller.rb
@@ -1,5 +1,5 @@
class VideolistingsController < ApplicationController
- before_action :set_videolisting, only: [:publish]
+ before_action :set_videolisting, only: [:publish, :show]
def publish
if @videolisting.published?
@@ -14,6 +14,11 @@ class VideolistingsController < ApplicationController
end
end
+
+ def show
+ @videolisting
+ end
+
private
# Use callbacks to share common setup or constraints between actions.
def set_videolisting
diff --git a/app/models/campaign.rb b/app/models/campaign.rb
index a03b52e..9f3f5f8 100644
--- a/app/models/campaign.rb
+++ b/app/models/campaign.rb
@@ -16,7 +16,12 @@ class Campaign < ActiveRecord::Base
errors.add(:base, 'Must add at least one Videolisting') if self.videolistings.blank?
end
-
+ def video_completion_percent
+ published = videolistings.where({published: true}).length
+ ((published.to_f / videolistings.count.to_f) * 100).to_i
+ rescue
+ 0
+ end
def send_to_better_video
if self.processed_changed? && self.processed == true
diff --git a/app/views/campaigns/_videolisting.html.erb b/app/views/campaigns/_videolisting.html.erb
index 54e2fbd..0e30009 100644
--- a/app/views/campaigns/_videolisting.html.erb
+++ b/app/views/campaigns/_videolisting.html.erb
@@ -1,4 +1,10 @@
+ <% if videolisting.published %>
+ -
+
Published Video
+ <%= link_to "View Preview and Get Code", campaign_videolisting_path(@campaign.listingcode, videolisting.videocode) %>
+
+ <% end %>
-
Video Code
<%= videolisting.videocode %>
diff --git a/app/views/campaigns/index.html.erb b/app/views/campaigns/index.html.erb
index ed50382..2118eb1 100644
--- a/app/views/campaigns/index.html.erb
+++ b/app/views/campaigns/index.html.erb
@@ -6,8 +6,9 @@
Listing Code (Form Hash) |
+ Advertiser |
Processed? |
- Billing Code |
+ Percent of Videos Completed |
Address |
City |
State |
@@ -20,8 +21,9 @@
<% @campaigns.each do |campaign| %>
<%= link_to campaign.listingcode, campaign_path(campaign.listingcode) %> |
+ <%= campaign.advertisername %> |
|
- <%= campaign.billingcode %> |
+ <%= number_to_percentage(campaign.video_completion_percent, precision: 0) %> |
<%= campaign.address %> |
<%= campaign.city %> |
<%= campaign.state %> |
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index e2df355..7246e2e 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -5,7 +5,7 @@
<%= title %>
<%= stylesheet_link_tag :application, :media => 'all' %>
-
+ <%= yield :js_head %>
<%= csrf_meta_tags %>
diff --git a/app/views/videolistings/show.html.erb b/app/views/videolistings/show.html.erb
new file mode 100644
index 0000000..8106235
--- /dev/null
+++ b/app/views/videolistings/show.html.erb
@@ -0,0 +1,46 @@
+
+
+
+ <%= link_to 'Back to Campaign', campaign_path(@videolisting.campaign.listingcode) %> |
+ <%= link_to 'Back to Campaigns List', campaigns_path %>
+
+ <%= @videolisting.campaign.advertisername %>
+
+ <%= notice %>
+
+
+
+
+
+
+<% content_for :js_head do %>
+
+
+<% end %>
\ No newline at end of file
diff --git a/spec/factories/videolistings.rb b/spec/factories/videolistings.rb
index 1ecae04..5892da3 100644
--- a/spec/factories/videolistings.rb
+++ b/spec/factories/videolistings.rb
@@ -9,7 +9,7 @@ FactoryGirl.define do
producttypeid 721
toneofvideo "Upbeat, targeting families but also show business functions."
voiceoverselection 3
- published {|x| true }
+ published {|x| false }
sequence(:videocode) {|x| "video#{x}" }
end
end
diff --git a/spec/models/campaign_spec.rb b/spec/models/campaign_spec.rb
index b7131bf..121a0e3 100644
--- a/spec/models/campaign_spec.rb
+++ b/spec/models/campaign_spec.rb
@@ -14,4 +14,30 @@ describe Campaign, 'associations' do
expect(two.valid?).to be false
end
+
+ it 'shows how complete the videos are by percentage' do
+ camp = Campaign.new(campaign)
+ video_1 = FactoryGirl.create(:videolisting)
+ video_2 = FactoryGirl.create(:videolisting)
+
+ expect(camp.video_completion_percent).to eq(0) # no associations
+
+
+ camp.videolistings << video_1
+ camp.videolistings << video_2
+ camp.save
+
+ expect(camp.video_completion_percent).to eq(0)
+
+ camp.videolistings.first.published = true
+ camp.videolistings.first.save
+
+ expect(camp.video_completion_percent).to eq(50)
+
+ camp.videolistings.last.published = true
+ camp.videolistings.last.save
+
+ expect(camp.video_completion_percent).to eq(100)
+ end
+
end
\ No newline at end of file