Skip to content
Browse files

Merge branch 'widget-cookie-errors' into retina-images

Conflicts:
	public/stylesheets/styles.css
  • Loading branch information...
2 parents 724c028 + 0fb438c commit cb192b2b4b1838d049e9bb81d9f600e9803cd7a1 @lukebaker lukebaker committed Aug 21, 2013
View
2 Gemfile
@@ -35,6 +35,7 @@ gem "haml", "~> 3.1.7"
gem "compass-rails", "~> 1.0.3"
gem "bootstrap-sass", "~> 2.1.1.0"
gem "mysql2", "0.2.18"
+gem "test-unit", "1.2.3"
group :development do
gem "engineyard"
@@ -45,7 +46,6 @@ group :production, :staging do
end
group :test, :cucumber do
- gem "test-unit", "1.2.3"
gem 'cucumber', '1.1.0'
gem 'cucumber-rails2', '~> 0.3.2'
gem "pickle", "~> 0.4.7"
View
16 app/controllers/application_controller.rb
@@ -4,7 +4,7 @@ class ApplicationController < ActionController::Base
helper :all
protect_from_forgery
- before_filter :initialize_session, :set_session_timestamp, :record_action, :view_filter, :set_pairwise_credentials, :set_locale, :set_p3p_header, :widget_has_redirected
+ before_filter :initialize_session, :set_session_timestamp, :record_action, :view_filter, :set_pairwise_credentials, :set_locale, :set_p3p_header
# preprocess photocracy_view_path on boot because
# doing pathset generation during a request is very costly.
@@ -13,19 +13,6 @@ class ApplicationController < ActionController::Base
@@photocracy_view_path = ActionView::Base.process_view_paths(File.join(Rails.root, "app", "views", "photocracy"))
@@widget_view_path = ActionView::Base.process_view_paths(File.join(Rails.root, "app", "views", "widget"))
- # for the widget third-party cookie busting attempts
- # check redis to see if we've redirected this client
- # if we have, then we won't attempt to do so again
- def widget_has_redirected
- @widget_has_redirected = false
- return unless @widget
- r = Redis.new(:host => REDIS_CONFIG['hostname'])
- redis_key = "redirect_" + Digest::MD5.hexdigest("#{request.remote_ip} #{request.env["HTTP_USER_AGENT"]} #{request.referer}")
- if r.get(redis_key) == "1"
- @widget_has_redirected = true
- end
- end
-
def view_filter
if request.url.include?('photocracy') || request.url.include?('fotocracy') || @photocracy || (RAILS_ENV == 'test' && $PHOTOCRACY)
@photocracy = true
@@ -100,6 +87,7 @@ def record_action
:user_agent => request.env["HTTP_USER_AGENT"],
:white_label_request => white_label_request?,
:visitor_id => visitor.id)
+ @user_session = user_session
sql = ActiveRecord::Base.send(:sanitize_sql_array, ["INSERT INTO `clicks` (`url`, `controller`, `action`, `user_id`, `referrer`, `session_info_id`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", request.url, controller_name, action_name, current_user.try(:id), request.referrer, user_session.try(:id), Time.now.utc, Time.now.utc])
ActiveRecord::Base.connection.execute(sql)
View
18 app/controllers/home_controller.rb
@@ -4,15 +4,7 @@ class HomeController < ApplicationController
before_filter :authenticate, :only => [:admin]
before_filter :admin_only, :only => [:no_google_tracking]
- def redirect
- # keep track of this client's redirect for 20 seconds, so we don't get in redirect loop
- r = Redis.new(:host => REDIS_CONFIG['hostname'])
- redis_key = "redirect_" + Digest::MD5.hexdigest("#{request.remote_ip} #{request.env["HTTP_USER_AGENT"]} #{params[:redirect_to]}")
- r.set(redis_key, 1)
- r.expire(redis_key, 20)
- location = params[:redirect_to] || '/'
- redirect_to(location)
- end
+ skip_before_filter :initialize_session, :set_session_timestamp, :record_action, :view_filter, :set_pairwise_credentials, :set_locale, :set_p3p_header, :only => [:cookies_blocked]
def index
@example_earl = 'planyc_example'
@@ -28,6 +20,12 @@ def index
def no_google_tracking
end
+ def cookies_blocked
+ BlockedCookie.create(:ip_addr => request.remote_ip, :question_id => params[:question_id], :referrer => params[:referrer], :source => request.referrer, :user_agent => request.env["HTTP_USER_AGENT"], :session_id => params[:session_id])
+ # send 1x1 gif in response
+ send_data(Base64.decode64('R0lGODlhAQABAAAAADs='), :type => "image/gif", :disposition => "inline")
+ end
+
def example
redirect_to("/planyc_example") and return
end
@@ -58,6 +56,8 @@ def admin
@available_charts['user_submitted_ideas'] = { :title => "Number of all submitted ideas over time"}
@available_charts['user_sessions'] = { :title => "Number of all user sessions per day"}
@available_charts['unique_users'] = { :title => "Number of all unique users per day"}
+
+ @blocked_cookies = BlockedCookie.today.group_by(&:question_id)
else
@earls = current_user.earls.sort_by {|x| [(!x.active).to_s, x.name]}
@questions = Question.find(:all, :params => {
View
3 app/models/blocked_cookie.rb
@@ -0,0 +1,3 @@
+class BlockedCookie < ActiveRecord::Base
+ named_scope :today, :conditions => ["created_at >= ?", Time.now.beginning_of_day]
+end
View
27 app/views/earls/show.html.haml
@@ -9,6 +9,15 @@
- bg_color = ab_test("bg_color_aa_#{@earl.name}", ['#F2F2F2', '#F2F2F1'], :conversion => 'voted')
.tab-content.question-vote.row-fluid{:style => "background-color: #{bg_color}"}
+ #cookies-failed{:style => "display: none;"}
+ %div
+ %h2 Cookies Blocked
+ %p
+ = link_to("Cookies are required", 'http://blog.allourideas.org/post/54515392435/cookies')
+ for voting, and it looks like cookies may be disabled in your browser.
+ In order to vote, you must allow cookies from allourideas.org. For more information, please read
+ this blog post about our
+ = link_to('cookie policy.', 'http://blog.allourideas.org/post/54515392435/cookies')
-if !session[:has_voted] && session[:welcome_msg]
.row-fluid
.span10.offset1.welcome-message
@@ -92,6 +101,24 @@
-content_for :view_javascript do
+ :plain
+ // Test if we can set and read cookies.
+ // If we can't, then the browser probably has 3rd party cookies disabled
+ // unless the user has first navigated to the domain serving the iframe source.
+ var cookieValue = "cookieTest" + new Date().getTime();
+ document.cookie = "cookieTest="+cookieValue;
+ if (document.cookie.indexOf("cookieTest="+cookieValue) === -1) {
+ var cookies_failed = document.getElementById('cookies-failed');
+ if (cookies_failed) {
+ cookies_failed.style.display = 'block';
+ var img = new Image();
+ img.src = '/cookies_blocked.gif?question_id=#{@earl.question_id}&session_id=#{@user_session.session_id}&referrer=' + encodeURIComponent(document.referrer);
+ }
+ }
+ else {
+ // cleanup test cookie
+ document.cookie = 'cookieTest=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
+ }
$('.rounded').corner('5px');
-unless session[:has_voted]
:plain
View
12 app/views/home/admin.html.haml
@@ -54,6 +54,18 @@
%p
= link_to("See all", admin_path(:all => 'true'), :class => 'btn btn-inverse')
-if current_user.admin?
+ -if @blocked_cookies && @blocked_cookies.count > 0
+ %h4 Today's Blocked Cookies
+ %table.table
+ %thead
+ %tr
+ %th Survey
+ %th Count
+ %tbody
+ - @blocked_cookies.each do |question_id, bc|
+ %tr
+ %td= "/#{Earl.find_by_question_id(question_id).name}"
+ %td= bc.count
%table.table
%thead
%tr
View
13 app/views/widget/earls/_cast_votes.html.haml
@@ -1,6 +1,17 @@
-@item_data, @item_ids = [], []
-.scrollbar_container
+#cookies-failed.scrollbar_container{:style => "display: none;"}
+ .aboutpage
+ %h2 Cookies Blocked
+ %p
+ = link_to("Cookies are required", 'http://blog.allourideas.org/post/54515392435/cookies', :target => '_blank')
+ for voting, and it looks like third-party cookies may be disabled in your browser.
+ In order to vote, you may
+ = link_to("vote on the main site", @cast_votes_url, :target => '_blank')
+ or allow
+ = link_to("third-party cookies", 'http://en.wikipedia.org/wiki/Third-party_cookie#Privacy_and_third-party_cookies', :target => '_blank')
+ in your browser.
+#voting-container.scrollbar_container
.question_container
%table.question.center.no_padding
%tr
View
194 app/views/widget/earls/show.html.haml
@@ -1,115 +1,113 @@
-%html{:xmlns => "http://www.w3.org/1999/xhtml", :'xml:lang' => "en", :lang => "en"}
- %head
- %meta{:'http-equiv' => "content-type", :content => "text/html;charset=UTF-8"}
- %meta{:NAME =>"ROBOTS", :CONTENT => "NOINDEX, NOFOLLOW"}
- :css
- .body {
- color: #{@text_on_white}; }
+- content_for :head do
+ %meta{:'http-equiv' => "content-type", :content => "text/html;charset=UTF-8"}
+ %meta{:NAME =>"ROBOTS", :CONTENT => "NOINDEX, NOFOLLOW"}
+ :css
+ .body {
+ color: #{@text_on_white}; }
- .idea_result {
- color: #{@text_on_white}; }
+ .idea_result {
+ color: #{@text_on_white}; }
- h1, h2, h3, h4, h5, h6, .large-text {
- color: #{@lighter_text_on_white}; }
+ h1, h2, h3, h4, h5, h6, .large-text {
+ color: #{@lighter_text_on_white}; }
- a {
- color: #{@flag_text_color}; }
+ a {
+ color: #{@flag_text_color}; }
- .bar-chart > div {
- background-color: #{@lighter_text_on_white}; }
+ .bar-chart > div {
+ background-color: #{@lighter_text_on_white}; }
- .bottom_status {
- color: #{@text_on_color};
- background-color: #{@vote_button_color};
- border-color: #{@vote_button_color}; }
+ .bottom_status {
+ color: #{@text_on_color};
+ background-color: #{@vote_button_color};
+ border-color: #{@vote_button_color}; }
- .question {
- color: #{@question_text_color}; }
+ .question {
+ color: #{@question_text_color}; }
- table .row0 {
- color: #{@text_on_color};
- background-color: #{@vote_button_color}; }
+ table .row0 {
+ color: #{@text_on_color};
+ background-color: #{@vote_button_color}; }
- .scrollbar_container {
- border-color: #{@vote_button_color}; }
-
- .tabs {
- border-color: #{@vote_button_color}; }
- .tabs .current_tab {
- background-color: #{@vote_button_color}; }
- .tabs .current_tab:hover {
- background-color: #{@vote_button_color};
- border-color: #{@vote_button_color}; }
- .tabs li {
- border-top-color: #{@vote_button_color};
- border-left-color: #{@vote_button_color};
- border-right-color: #{@vote_button_color}; }
- .tabs li a {
- color: #{@vote_button_color}; }
- .tabs li:hover {
- background-color: #{@tab_hover_color};
- border-color: #{@tab_hover_color}; }
-
- .votebox table td.vote_cell {
- color: #{@text_on_color};
- background: #{@vote_button_color}; }
- .votebox table td.vote_cell:hover {
- background: #{@vote_button_hover_color}; }
- .votebox table td.vote_cell a {
- color: #{@text_on_color}; }
- .votebox table td.vote_cell a:hover {
- color: #{@text_on_color}; }
-
- .new_idea_submit, .flag_submit_button, .cd_submit_button {
- color: #{@text_on_color};
- background: #{@submit_button_color}; }
- .new_idea_submit:hover, .flag_submit_button:hover, .cd_submit_button:hover {
- background-color: #{@submit_button_hover_color}; }
-
- #cant_decide_btn {
- color: #{@text_on_color};
- background: #{@cant_decide_button_color}; }
- #cant_decide_btn:hover {
- background-color: #{@cant_decide_button_hover_color}; }
- .cd_option .cd_box a {
- color: #{@text_on_color};
- background: #{@cant_decide_button_color}; }
- .cd_option .cd_box a:hover {
- background-color: #{@cant_decide_button_hover_color}; }
-
- .add_idea .add_idea_button {
- color: #{@text_on_color};
- background: #{@add_idea_button_color}; }
- .add_idea .add_idea_button a {
+ .scrollbar_container {
+ border-color: #{@vote_button_color}; }
+
+ .tabs {
+ border-color: #{@vote_button_color}; }
+ .tabs .current_tab {
+ background-color: #{@vote_button_color}; }
+ .tabs .current_tab:hover {
+ background-color: #{@vote_button_color};
+ border-color: #{@vote_button_color}; }
+ .tabs li {
+ border-top-color: #{@vote_button_color};
+ border-left-color: #{@vote_button_color};
+ border-right-color: #{@vote_button_color}; }
+ .tabs li a {
+ color: #{@vote_button_color}; }
+ .tabs li:hover {
+ background-color: #{@tab_hover_color};
+ border-color: #{@tab_hover_color}; }
+
+ .votebox table td.vote_cell {
+ color: #{@text_on_color};
+ background: #{@vote_button_color}; }
+ .votebox table td.vote_cell:hover {
+ background: #{@vote_button_hover_color}; }
+ .votebox table td.vote_cell a {
+ color: #{@text_on_color}; }
+ .votebox table td.vote_cell a:hover {
color: #{@text_on_color}; }
- .add_idea .add_idea_button:hover {
- background: #{@add_idea_button_hover_color}; }
- .link_style a {
+ .new_idea_submit, .flag_submit_button, .cd_submit_button {
+ color: #{@text_on_color};
+ background: #{@submit_button_color}; }
+ .new_idea_submit:hover, .flag_submit_button:hover, .cd_submit_button:hover {
+ background-color: #{@submit_button_hover_color}; }
+
+ #cant_decide_btn {
+ color: #{@text_on_color};
+ background: #{@cant_decide_button_color}; }
+ #cant_decide_btn:hover {
+ background-color: #{@cant_decide_button_hover_color}; }
+ .cd_option .cd_box a {
+ color: #{@text_on_color};
+ background: #{@cant_decide_button_color}; }
+ .cd_option .cd_box a:hover {
+ background-color: #{@cant_decide_button_hover_color}; }
+
+ .add_idea .add_idea_button {
+ color: #{@text_on_color};
+ background: #{@add_idea_button_color}; }
+ .add_idea .add_idea_button a {
color: #{@text_on_color}; }
+ .add_idea .add_idea_button:hover {
+ background: #{@add_idea_button_hover_color}; }
+
+ .link_style a {
+ color: #{@text_on_color}; }
-%body
- -@the_id = params[:question_id].nil? ? params[:id] : params[:question_id]
+-@the_id = params[:question_id].nil? ? params[:id] : params[:question_id]
- = render :partial => 'shared/header_vote', :locals => {:question => @question}
+= render :partial => 'shared/header_vote', :locals => {:question => @question}
- #cast_votes.current
- = render 'cast_votes.html.haml'
+#cast_votes.current
+ = render 'cast_votes.html.haml'
- #results{:style => 'display:none'}
- .scrollbar_container#render_spot
- %center
- %br
- = 'Loading results...'
- .bottom_status.link_style
- %span.bottom_padding
- /* Use a table here to fix a small issue with a non-linking space after the first link */
- %table.fleft
- %td{:style => 'padding-left: 5px;'}= link_to(t('nav.view_more_results_widget'),"http://www.allourideas.org" + @results_url, :target => '_blank', :id => 'view_more_results')
- %td= link_to(image_tag('widget/lpadded_outgoing_link.png'), "http://www.allourideas.org" + @results_url, :target => '_blank')
- %span
- %a.bottom_padding.fright.return_voting{:href => '#page1'}= t('nav.return_voting_widget');
+#results{:style => 'display:none'}
+ .scrollbar_container#render_spot
+ %center
+ %br
+ = 'Loading results...'
+ .bottom_status.link_style
+ %span.bottom_padding
+ /* Use a table here to fix a small issue with a non-linking space after the first link */
+ %table.fleft
+ %td{:style => 'padding-left: 5px;'}= link_to(t('nav.view_more_results_widget'), @results_url, :target => '_blank', :id => 'view_more_results')
+ %td= link_to(image_tag('widget/lpadded_outgoing_link.png'), @results_url, :target => '_blank')
+ %span
+ %a.bottom_padding.fright.return_voting{:href => '#page1'}= t('nav.return_voting_widget');
- #about{:style => 'display:none'}
- = render 'questions/about.html.haml'
+#about{:style => 'display:none'}
+ = render 'questions/about.html.haml'
View
34 app/views/widget/layouts/application.html.haml
@@ -1,22 +1,6 @@
!!! 1.0
%html{:xmlns => "http://www.w3.org/1999/xhtml", :'xml:lang' => "en", :lang => "en"}
%head
- - unless @widget_has_redirected
- :javascript
- // under default settings, safari will not allow iframes to set cookies
- // unless the user has first navigated to the domain serving the iframe source
- //
- // here we test to see if this page can set a cookie with JS
- // if we can't then redirect to domain serving the iframe and pass in URL to bounce user back to
- var cookieValue = "safariTest" + new Date().getTime();
- document.cookie = "safariTest="+cookieValue;
- if (document.cookie.indexOf("safariTest="+cookieValue) === -1) {
- window.top.location.href = location.origin + '/redirect?redirect_to=' + encodeURIComponent(document.referrer);
- }
- else {
- // cleanup test cookie
- document.cookie = 'safariTest=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
- }
%meta{:'http-equiv' => "content-type", :content => "text/html;charset=UTF-8"}
= yield :meta
%link{:rel => "shortcut icon", :href => "http://www.allourideas.org/favicon.ico"}
@@ -61,3 +45,21 @@
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
+ :javascript
+ // Test if we can set and read cookies.
+ // If we can't, then the browser probably has 3rd party cookies disabled
+ // unless the user has first navigated to the domain serving the iframe source.
+ var cookieValue = "cookieTest" + new Date().getTime();
+ document.cookie = "cookieTest="+cookieValue;
+ if (document.cookie.indexOf("cookieTest="+cookieValue) === -1) {
+ var cookies_failed = document.getElementById('cookies-failed');
+ if (cookies_failed) {
+ cookies_failed.style.display = 'block';
+ var img = new Image();
+ img.src = '/cookies_blocked.gif?question_id=#{@earl.question_id}&session_id=#{@user_session.session_id}&referrer=' + encodeURIComponent(document.referrer);
+ }
+ }
+ else {
+ // cleanup test cookie
+ document.cookie = 'cookieTest=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
+ }
View
90 app/views/widget/questions/_about.html.haml
@@ -1,54 +1,46 @@
-%html{:xmlns => "http://www.w3.org/1999/xhtml", :'xml:lang' => "en", :lang => "en"}
- %head
- %meta{:'http-equiv' => "content-type", :content => "text/html;charset=UTF-8"}
- %meta{:NAME =>"ROBOTS", :CONTENT => "NOINDEX, NOFOLLOW"}
- <script src="/javascripts/widget/jquery.scrollTo-1.4.2-min.js" type="text/javascript"></script>
- %body
- .scrollbar_container
- .aboutpage
- %p= t('about_page.intro')
-
- %p= t('about_page.exp_widget')
-
- %p= t('about_page.faq_widget')
-
- /* Actual ordered list doesn't work here, for some reason */
- %ol.faq
- %li
- %a{:href => '#about_q1', :id => 'faq_q1'}="1) " + t('about_page.how_many_votes_q')
- %li
- %a{:href => '#about_q2', :id => 'faq_q2'}="2) " + t('about_page.how_many_ideas_q')
- %li
- %a{:href => '#about_q3', :id => 'faq_q3'}="3) " + t('about_page.view_results_q')
- %li
- %a{:href => '#about_q4', :id => 'faq_q4'}="4) " + t('about_page.make_my_own_q')
- %li
- %a{:href => '#about_q5', :id => 'faq_q5'}="5) " + t('about_page.open_source_q_widget')
- %li
- %a{:href => '#about_q6', :id => 'faq_q6'}="6) " + t('about_page.contact_q_widget')
-
- %br
-
- %h2#about_q1="1) " + t('about_page.how_many_votes_q')
- %p= t('about_page.how_many_votes_exp')
-
- %h2#about_q2="2) " + t('about_page.how_many_ideas_q')
- %p=t('about_page.how_many_ideas_exp')
-
- %h2#about_q3="3) " + t('about_page.view_results_q')
- %p= t('about_page.view_results_exp')
+.scrollbar_container
+ .aboutpage
+ %p= t('about_page.intro')
+
+ %p= t('about_page.exp_widget')
+
+ %p= t('about_page.faq_widget')
+
+ /* Actual ordered list doesn't work here, for some reason */
+ %ol.faq
+ %li
+ %a{:href => '#about_q1', :id => 'faq_q1'}="1) " + t('about_page.how_many_votes_q')
+ %li
+ %a{:href => '#about_q2', :id => 'faq_q2'}="2) " + t('about_page.how_many_ideas_q')
+ %li
+ %a{:href => '#about_q3', :id => 'faq_q3'}="3) " + t('about_page.view_results_q')
+ %li
+ %a{:href => '#about_q4', :id => 'faq_q4'}="4) " + t('about_page.make_my_own_q')
+ %li
+ %a{:href => '#about_q5', :id => 'faq_q5'}="5) " + t('about_page.open_source_q_widget')
+ %li
+ %a{:href => '#about_q6', :id => 'faq_q6'}="6) " + t('about_page.contact_q_widget')
+
+ %br
+
+ %h2#about_q1="1) " + t('about_page.how_many_votes_q')
+ %p= t('about_page.how_many_votes_exp')
- %h2#about_q4="4) " + t('about_page.make_my_own_q')
- %p=t('about_page.make_my_own_exp_widget')
+ %h2#about_q2="2) " + t('about_page.how_many_ideas_q')
+ %p=t('about_page.how_many_ideas_exp')
- %h2#about_q5="5) " + t('about_page.open_source_q_widget')
- %p=t('about_page.open_source_exp_widget')
+ %h2#about_q3="3) " + t('about_page.view_results_q')
+ %p= t('about_page.view_results_exp')
- %h2#about_q6="6) " + t('about_page.contact_q_widget')
- %p=t('about_page.contact_exp_widget')
+ %h2#about_q4="4) " + t('about_page.make_my_own_q')
+ %p=t('about_page.make_my_own_exp_widget')
- .bottom_status.link_style
- %span.bottom_padding
- %a.fright.return_voting{:href => '#page1'}= t('nav.return_voting_widget');
+ %h2#about_q5="5) " + t('about_page.open_source_q_widget')
+ %p=t('about_page.open_source_exp_widget')
-
+ %h2#about_q6="6) " + t('about_page.contact_q_widget')
+ %p=t('about_page.contact_exp_widget')
+
+.bottom_status.link_style
+ %span.bottom_padding
+ %a.fright.return_voting{:href => '#page1'}= t('nav.return_voting_widget');
View
2 app/views/widget/shared/_header_vote.html.haml
@@ -1,5 +1,5 @@
-@the_id = params[:question_id].nil? ? params[:id] : params[:question_id]
--@cast_votes_url = url_for(:action => :show, :controller => :earls, :id => @the_id)
+-@cast_votes_url = url_for(:action => :show, :controller => :earls, :id => @the_id, :host => APP_CONFIG[:HOST])
-@results_url = url_for(:action => :results, :controller => :questions, :id => @the_id)
-@manage_url = url_for(:action => :admin, :controller => :questions, :id => @the_id)
-@all_results_url = url_for(:action => :results, :controller => :questions, :id => @the_id, :more => true)
View
2 config/routes.rb
@@ -41,7 +41,7 @@
#map.connect '/questions/:question_id/choices/:id', :controller => 'choices', :action => 'show'
map.toggle_choice_status '/questions/:earl_id/choices/:id/toggle.:format', :controller => 'choices', :action => 'toggle', :conditions => { :method => :post }
- map.about '/redirect', :controller => 'home', :action => 'redirect'
+ map.cookies_blocked '/cookies_blocked.gif', :controller => 'home', :action => 'cookies_blocked'
map.about '/about', :controller => 'home', :action => 'about'
map.admin '/admin', :controller => 'home', :action => 'admin'
map.privacy '/privacy', :controller => 'home', :action => 'privacy'
View
18 db/migrate/20130627185712_create_blocked_cookies.rb
@@ -0,0 +1,18 @@
+class CreateBlockedCookies < ActiveRecord::Migration
+ def self.up
+ create_table :blocked_cookies do |table|
+ table.string :referrer, :default => ""
+ table.integer :question_id
+ table.string :user_agent, :default => ""
+ table.string :ip_addr, :default => ""
+ table.string :source, :default => ""
+ table.string :session_id, :default => ""
+ table.timestamps
+ end
+
+ end
+
+ def self.down
+ drop_table :blocked_cookies
+ end
+end
View
12 db/migrate/20130627190740_add_indexes_to_blocked_cookies.rb
@@ -0,0 +1,12 @@
+class AddIndexesToBlockedCookies < ActiveRecord::Migration
+ def self.up
+ change_table :blocked_cookies do |t|
+ t.index :question_id
+ t.index :ip_addr
+ t.index :created_at
+ end
+ end
+
+ def self.down
+ end
+end
View
17 db/schema.rb
@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20110304211014) do
+ActiveRecord::Schema.define(:version => 20130627190740) do
create_table "alternatives", :force => true do |t|
t.integer "experiment_id"
@@ -23,6 +23,21 @@
add_index "alternatives", ["experiment_id"], :name => "index_alternatives_on_experiment_id"
add_index "alternatives", ["lookup"], :name => "index_alternatives_on_lookup"
+ create_table "blocked_cookies", :force => true do |t|
+ t.string "referrer", :default => ""
+ t.integer "question_id"
+ t.string "user_agent", :default => ""
+ t.string "ip_addr", :default => ""
+ t.string "source", :default => ""
+ t.string "session_id", :default => ""
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "blocked_cookies", ["created_at"], :name => "index_blocked_cookies_on_created_at"
+ add_index "blocked_cookies", ["ip_addr"], :name => "index_blocked_cookies_on_ip_addr"
+ add_index "blocked_cookies", ["question_id"], :name => "index_blocked_cookies_on_question_id"
+
create_table "clicks", :force => true do |t|
t.integer "user_id"
t.string "controller"
View
BIN public/images/blocked_cookies.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/images/widget/blocked_cookies.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
24 public/stylesheets/sass/styles.scss
@@ -112,6 +112,30 @@ form#new_question_form{
border-radius: 7px;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
+ position: relative;
+}
+#cookies-failed {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0,0,0, 0.8);
+ border-radius: 7px;
+ -moz-border-radius: 7px;
+ -webkit-border-radius: 7px;
+
+ >div {
+ margin: 4em 4em;
+ padding: 1em;
+ background-color: #ffffff;
+ border-radius: 7px;
+ -moz-border-radius: 7px;
+ -webkit-border-radius: 7px;
+ }
+ h2 {
+ padding-left: 25px;
+ background: url(/images/blocked_cookies.png) no-repeat left center;
+ }
}
.interior-content {
background-color: white;
View
2 public/stylesheets/styles.css
@@ -11,4 +11,4 @@
*
*/.container-fluid{max-width:1200px;margin-right:auto;margin-left:auto}/*
* AOI CSS
- */html{-webkit-overflow-scrolling:touch}body.modal-open{overflow:hidden}.logo{margin-top:1em}@media (max-width: 767px){h2{font-size:21px;line-height:30px}}@media (max-width: 767px){.pagination ul li.current{display:none}}.navbar-static-top{width:auto;min-width:100%}form#new_question_form fieldset legend{padding-top:1em}.vote-tabs{margin-bottom:0;border-bottom:none;padding-right:2em}.vote-tabs>li.active>a,.vote-tabs>li.active a:hover{background-color:#F2F2F2}.tab-content{background-color:#F2F2F2;padding:2em 0;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px}.interior-content{background-color:white;margin:0 2em;padding:0 2em;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px}@media (max-width: 767px){.welcome-message .alert{margin-left:5%;margin-right:5%}}.vote-question{text-align:center}@media (max-width: 480px){.vote-question{font-size:18px;line-height:24px}}@media (max-width: 767px){.vote-question{margin:0 5%}}@media (max-width: 767px){.answers{margin:0;padding:0 5%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.answers li{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:auto;margin-right:auto;margin-bottom:1em}}.vote_stats{text-align:center;color:#666666;font-size:12px;clear:both}.btn-vote{display:table-cell;vertical-align:middle;min-height:8em;width:100%}@media (max-width: 480px){.btn-vote{font-size:16px}}.cant_decide{text-align:center}@media (max-width: 767px){#cant_decide_btn{width:intrinsic;min-width:50%;display:block;margin-left:auto;margin-right:auto}}#cant_decide_options button.btn-primary,#cant_decide_options button.btn-vote{width:100%;min-height:3.6em}@media (min-width: 1200px){#cant_decide_options{width:600px}}@media (max-width: 979px) and (min-width: 768px){#cant_decide_options{width:500px}#cant_decide_options .span6{width:100%;margin-left:0}}@media (max-width: 767px){#cant_decide_options{position:fixed;top:10px;bottom:10px;left:10px;right:10px;width:auto}#cant_decide_options h2{font-size:14px;line-height:21px}#cant_decide_options button.btn-primary,#cant_decide_options button.btn-vote{min-height:auto}#cant_decide_options .modal-body{bottom:0px;top:60px;position:absolute;max-height:100%;height:auto;-webkit-overflow-scrolling:touch}#cant_decide_options .close{font-size:40px;line-height:30px}}#the_add_box h3{color:#367bbe}#the_add_box #new_idea_field{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;min-height:4em}.choice-progress .progress{width:85%;float:left;margin-right:1em}@media (max-width: 767px){#data-vis{display:none;visibility:hidden}}@media (max-width: 767px){body .row-fluid .offset1{margin-left:0}body .row-fluid .offset1:first-child{margin-left:0}body .row-fluid .offset2{margin-left:0}body .row-fluid .offset2:first-child{margin-left:0}body .row-fluid .offset3{margin-left:0}body .row-fluid .offset3:first-child{margin-left:0}body .row-fluid .offset4{margin-left:0}body .row-fluid .offset4:first-child{margin-left:0}body .row-fluid .offset5{margin-left:0}body .row-fluid .offset5:first-child{margin-left:0}body .row-fluid .offset6{margin-left:0}body .row-fluid .offset6:first-child{margin-left:0}body .row-fluid .offset7{margin-left:0}body .row-fluid .offset7:first-child{margin-left:0}body .row-fluid .offset8{margin-left:0}body .row-fluid .offset8:first-child{margin-left:0}body .row-fluid .offset9{margin-left:0}body .row-fluid .offset9:first-child{margin-left:0}body .row-fluid .offset10{margin-left:0}body .row-fluid .offset10:first-child{margin-left:0}body .row-fluid .offset11{margin-left:0}body .row-fluid .offset11:first-child{margin-left:0}body .row-fluid .offset12{margin-left:0}body .row-fluid .offset12:first-child{margin-left:0}body.container-fluid{padding-left:1em;padding-right:1em}}ul.footer-social-icons{list-style:none;margin-left:0;overflow:hidden;width:128px}ul.footer-social-icons li a{display:block;text-indent:-9999px;background:url(/images/social_icons.png) no-repeat;background-size:152px 64px;float:left;width:32px;height:32px;white-space:nowrap}ul.footer-social-icons li.fb a:hover{background-position:0 -32px}ul.footer-social-icons li.twitter a{background-position:-40px 0}ul.footer-social-icons li.twitter a:hover{background-position:-40px -32px}ul.footer-social-icons li.github a{background-position:-80px 0}ul.footer-social-icons li.github a:hover{background-position:-80px -32px}ul.footer-social-icons li.blog a{background-position:-120px 0}ul.footer-social-icons li.blog a:hover{background-position:-120px -32px}@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3 / 2), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){ul.footer-social-icons li a{background-image:url(/images/social_icons@2x.png)}}.navbar .brand{padding-top:1px;padding-bottom:1px}.powered-by{text-indent:-9999px;display:block;width:139px;height:29px;background:url(/images/powered-by-aoi.gif) no-repeat;font-size:0}.powered-by:hover{background-position:0 -29px}@media (max-width: 767px){.footer{margin-left:-20px;margin-right:-20px;text-align:center}.footer .powered-by{margin:0 auto}.footer .footer-right{float:none}.footer .footer-social-icons{margin:0 auto}.footer .generous-grantees{margin-bottom:40px}}.tooltip{font-size:14px}a.glyphicon{color:black}a.glyphicon:hover{text-decoration:none}a i.glyphicon{color:black}a i.glyphicon:hover{text-decoration:none}
+ */html{-webkit-overflow-scrolling:touch}body.modal-open{overflow:hidden}.logo{margin-top:1em}@media (max-width: 767px){h2{font-size:21px;line-height:30px}}@media (max-width: 767px){.pagination ul li.current{display:none}}.navbar-static-top{width:auto;min-width:100%}form#new_question_form fieldset legend{padding-top:1em}.vote-tabs{margin-bottom:0;border-bottom:none;padding-right:2em}.vote-tabs>li.active>a,.vote-tabs>li.active a:hover{background-color:#F2F2F2}.tab-content{background-color:#F2F2F2;padding:2em 0;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;position:relative}#cookies-failed{position:absolute;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.8);border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px}#cookies-failed>div{margin:4em 4em;padding:1em;background-color:#ffffff;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px}#cookies-failed h2{padding-left:25px;background:url(/images/blocked_cookies.png) no-repeat left center}.interior-content{background-color:white;margin:0 2em;padding:0 2em;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px}@media (max-width: 767px){.welcome-message .alert{margin-left:5%;margin-right:5%}}.vote-question{text-align:center}@media (max-width: 480px){.vote-question{font-size:18px;line-height:24px}}@media (max-width: 767px){.vote-question{margin:0 5%}}@media (max-width: 767px){.answers{margin:0;padding:0 5%;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.answers li{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:auto;margin-right:auto;margin-bottom:1em}}.vote_stats{text-align:center;color:#666666;font-size:12px;clear:both}.btn-vote{display:table-cell;vertical-align:middle;min-height:8em;width:100%}@media (max-width: 480px){.btn-vote{font-size:16px}}.cant_decide{text-align:center}@media (max-width: 767px){#cant_decide_btn{width:intrinsic;min-width:50%;display:block;margin-left:auto;margin-right:auto}}#cant_decide_options button.btn-primary,#cant_decide_options button.btn-vote{width:100%;min-height:3.6em}@media (min-width: 1200px){#cant_decide_options{width:600px}}@media (max-width: 979px) and (min-width: 768px){#cant_decide_options{width:500px}#cant_decide_options .span6{width:100%;margin-left:0}}@media (max-width: 767px){#cant_decide_options{position:fixed;top:10px;bottom:10px;left:10px;right:10px;width:auto}#cant_decide_options h2{font-size:14px;line-height:21px}#cant_decide_options button.btn-primary,#cant_decide_options button.btn-vote{min-height:auto}#cant_decide_options .modal-body{bottom:0px;top:60px;position:absolute;max-height:100%;height:auto;-webkit-overflow-scrolling:touch}#cant_decide_options .close{font-size:40px;line-height:30px}}#the_add_box h3{color:#367bbe}#the_add_box #new_idea_field{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;min-height:4em}.choice-progress .progress{width:85%;float:left;margin-right:1em}@media (max-width: 767px){#data-vis{display:none;visibility:hidden}}@media (max-width: 767px){body .row-fluid .offset1{margin-left:0}body .row-fluid .offset1:first-child{margin-left:0}body .row-fluid .offset2{margin-left:0}body .row-fluid .offset2:first-child{margin-left:0}body .row-fluid .offset3{margin-left:0}body .row-fluid .offset3:first-child{margin-left:0}body .row-fluid .offset4{margin-left:0}body .row-fluid .offset4:first-child{margin-left:0}body .row-fluid .offset5{margin-left:0}body .row-fluid .offset5:first-child{margin-left:0}body .row-fluid .offset6{margin-left:0}body .row-fluid .offset6:first-child{margin-left:0}body .row-fluid .offset7{margin-left:0}body .row-fluid .offset7:first-child{margin-left:0}body .row-fluid .offset8{margin-left:0}body .row-fluid .offset8:first-child{margin-left:0}body .row-fluid .offset9{margin-left:0}body .row-fluid .offset9:first-child{margin-left:0}body .row-fluid .offset10{margin-left:0}body .row-fluid .offset10:first-child{margin-left:0}body .row-fluid .offset11{margin-left:0}body .row-fluid .offset11:first-child{margin-left:0}body .row-fluid .offset12{margin-left:0}body .row-fluid .offset12:first-child{margin-left:0}body.container-fluid{padding-left:1em;padding-right:1em}}ul.footer-social-icons{list-style:none;margin-left:0;overflow:hidden;width:128px}ul.footer-social-icons li a{display:block;text-indent:-9999px;background:url(/images/social_icons.png) no-repeat;background-size:152px 64px;float:left;width:32px;height:32px;white-space:nowrap}ul.footer-social-icons li.fb a:hover{background-position:0 -32px}ul.footer-social-icons li.twitter a{background-position:-40px 0}ul.footer-social-icons li.twitter a:hover{background-position:-40px -32px}ul.footer-social-icons li.github a{background-position:-80px 0}ul.footer-social-icons li.github a:hover{background-position:-80px -32px}ul.footer-social-icons li.blog a{background-position:-120px 0}ul.footer-social-icons li.blog a:hover{background-position:-120px -32px}@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3 / 2), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){ul.footer-social-icons li a{background-image:url(/images/social_icons@2x.png)}}.navbar .brand{padding-top:1px;padding-bottom:1px}.powered-by{text-indent:-9999px;display:block;width:139px;height:29px;background:url(/images/powered-by-aoi.gif) no-repeat;font-size:0}.powered-by:hover{background-position:0 -29px}@media (max-width: 767px){.footer{margin-left:-20px;margin-right:-20px;text-align:center}.footer .powered-by{margin:0 auto}.footer .footer-right{float:none}.footer .footer-social-icons{margin:0 auto}.footer .generous-grantees{margin-bottom:40px}}.tooltip{font-size:14px}a.glyphicon{color:black}a.glyphicon:hover{text-decoration:none}a i.glyphicon{color:black}a i.glyphicon:hover{text-decoration:none}
View
12 public/stylesheets/widget/sass/screen.sass
@@ -774,3 +774,15 @@ textarea
padding: 5px 10px
&:hover
background: #b1b1b1
+
+#cookies-failed
+ position: absolute
+ background-color: rgba(0,0,0,0.8)
+
+ .aboutpage
+ margin: 4em 1em 0
+ background-color: #ffffff
+
+ h2
+ background: url(/images/widget/blocked_cookies.png) no-repeat left 40%
+ padding-left: 22px
View
750 public/stylesheets/widget/screen.css
@@ -1,749 +1 @@
-* {
- margin: 0 auto;
- padding: 0; }
-
-a {
- text-decoration: none;
- color: #54afe2; }
- a img, a:active {
- border: none; }
-
-/* a:hover {
- * border-bottom: 1px dotted #54afe2; } */
-.fleft {
- float: left; }
-
-.fright {
- float: right; }
-
-.center {
- text-align: center; }
-
-.clear {
- clear: both; }
-
-.grey, label {
- color: #555555; }
-
-body {
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12px;
- width: 100%;
- height: 100%;
- color: #555555;
- line-height: 16pt;
- float: left; }
- body.lang-ar {
- font-size: 14px; }
-
-html {
- font-size: 100%;
- min-height: 100%; }
-
-h1, h2, h3, h4, h5, h6, .large-text {
- color: #797979; }
-
-p, h1, h2, h3, h4, h5, h6, table, .large-text {
- padding: 5px 0px; }
-
-h1 {
- font-size: 20px; }
-
-h2, .large-text {
- font-size: 16px;
- font-weight: normal; }
-
-h3 {
- font-size: 14px;
- font-weight: normal; }
-
-h4 {
- font-size: 12px;
- font-weight: normal; }
-
-ul li {
- margin-left: 20px; }
-
-.full {
- width: 100%; }
-
-.half {
- width: 50%; }
-
-.ninety {
- width: 90%; }
-
-input.text {
- border: 1px solid #555555;
- padding: 3px 3px 2px; }
-
-.padding {
- margin: 5px 0px; }
-
-table {
- text-align: left;
- border-collapse: collapse; }
- table .header_padding {
- padding: 5px; }
- table .idea_padding {
- padding: 2.5px 5px 2.5px 5px; }
- table .row0 {
- background-color: #3198c1;
- color: white; }
- table .row0 td.idea {
- width: 67.5%; }
- table .row0 td.score_header {
- width: 80px; }
- table .row1 {
- background-color: #fafafa; }
- table .row2 {
- background-color: #fefefe; }
- table .thin td {
- padding: 2px 5px;
- height: 2px; }
- table.recent-winners td {
- text-align: center; }
- table.item td:last-child {
- font-weight: bold; }
- table.left {
- margin: 0; }
- table.signup td {
- max-width: 400px; }
- table .score {
- padding-right: 5px; }
-
-.create-question h2 {
- padding-bottom: 0px; }
-.create-question p {
- padding: 15px 25px;
- font-size: 14px; }
- .create-question p.ideas {
- padding-bottom: 10px;
- padding-right: 400px; }
-.create-question .fieldWithErrors {
- padding: 2px 0 3px;
- border: 1px solid #ff6464; }
-
-.errorExplanation {
- color: white;
- background: #ff6464;
- padding: 8px 5px;
- border: 1px solid black; }
- .errorExplanation h2 {
- color: white; }
- .errorExplanation ul li {
- margin-left: 40px; }
-
-.header {
- padding: 30px 5px 15px 5px;
- border-bottomf: 1px solid #f4f5f6; }
- .header .fright {
- padding-top: 18px; }
- .header .fright ul li {
- list-style-type: none;
- float: left;
- font-size: 14px;
- text-transform: uppercase;
- margin: 0; }
- .header .fright ul li a {
- padding: 5px 20px;
- color: #54afe2; }
- .header .fright ul li a:hover {
- border-top: 1px dotted #54afe2;
- border-bottom: 1px dotted #54afe2; }
- .header .fright ul li a.down {
- color: #555555; }
- .header a.logo:hover {
- border: none; }
-
-.bread-crumb {
- color: #54afe2; }
-
-.body {
- height: 100%;
- margin: 1px 0px;
- padding: 0px 0px 0px; }
- .body .center img {
- padding: 0px 0px 30px 0px; }
- .body .triple-left {
- min-height: 150px; }
- .body #body .triple-center, .body #body .triple-right {
- min-height: 150px; }
-
-.triple-left, .triple-center, .triple-right, .double-left {
- float: left; }
-
-.noborder {
- border: none; }
-
-.image-example {
- border: 2px solid #eeeeee;
- width: 250px;
- margin: 0px 0px 10px; }
-
-.button {
- border: 1px solid #3198c1;
- width: 125px;
- padding: 2px 0px;
- background-color: #54afe2;
- text-align: center;
- float: left; }
-
-.button-link {
- color: white; }
-
-.button:hover {
- border: 1px solid #3198c1; }
-
-.triple-left {
- border-right: 1px dotted #d8dbdc;
- padding: 0px 15px 2px 0px;
- width: 264px; }
-
-.triple-center {
- border-right: 1px dotted #d8dbdc;
- padding: 0px 15px 2px 15px;
- width: 249px; }
-
-.triple-right {
- padding: 0px 0px 2px 15px;
- width: 265px; }
-
-.double-left {
- padding: 0px 15px 2px 0px;
- width: 545px; }
-
-.votebox {
- width: 98.5%;
- float: center;
- height: 80%; }
-
-.votebox table {
- text-align: center;
- height: 40%; }
- .votebox table tbody {
- height: 100%; }
- .votebox table td {
- min-height: 100%; }
- .votebox table td.idea {
- cursor: pointer; }
- .votebox table td.left {
- padding: 0 2.5px 0 0; }
- .votebox table td.right {
- padding: 0 0 0 2.5px; }
- .votebox table td.vote_cell {
- font-size: 12.8px;
- color: white;
- height: 90%;
- background: #3198c1; }
- .lang-ar .votebox table td.vote_cell {
- font-size: 16px; }
- .votebox table td.vote_cell:hover {
- background: #2b88ad; }
- .votebox table td.vote_cell table {
- height: 100%; }
- .votebox table td.vote_cell a {
- color: white;
- border: none; }
- .votebox table td.vote_cell a:hover {
- color: white;
- border: none; }
- .votebox table td .five_padding {
- padding: 5px; }
- .votebox table td table tr.prompt {
- height: 100%; }
-
-.skip {
- margin: 10px 0; }
-
-.footer {
- padding: 10px 5px;
- border-top: 1px solid #f4f5f6; }
- .footer .triple-left, .footer .triple-center, .footer .triple-right {
- font-size: 10px;
- line-height: 12pt;
- color: #aaaaaa; }
- .footer img {
- padding-right: 10px;
- float: left; }
- .footer p {
- float: right;
- padding: 0; }
- .footer .triple-left p {
- width: 153px; }
- .footer .triple-center p {
- width: 205px; }
- .footer .triple-right p {
- width: 220px; }
-
-.bar-chart {
- border: 1px solid #cccccc;
- width: 97%;
- margin: 0 auto;
- padding: 1px;
- background: white; }
- .bar-chart > div {
- background-color: #797979;
- height: 12px;
- margin: 0; }
-
-hr {
- border: none;
- border-bottom: 1px dotted #bbbbbb;
- margin: 0 0 15px 0; }
-
-.add-box {
- width: 90%;
- margin-top: 10px; }
- .add-box textarea {
- border: none;
- width: 100%; }
-
-input, textarea {
- font-size: 13px;
- color: #555555;
- font-family: Arial, Helvetica, sans-serif; }
- .lang-ar input, .lang-ar textarea {
- font-size: 15px; }
-
-.form-btn {
- color: black; }
-
-.error, .notice, .vote-notice {
- color: white;
- background-color: #ff6464;
- margin: -10px 10em 25px;
- text-align: center;
- font-size: 13px; }
-
-.notice {
- background-color: #ffffcc;
- border: 1px solid #797979;
- color: #797979;
- text-align: left;
- padding: 5px 10px;
- margin: 0 40px 25px; }
- .notice span.close {
- display: block;
- text-align: right; }
- .notice span.close:hover {
- border: none; }
-
-.vote-notice {
- background-color: #00bb00; }
-
-#initial_notice {
- text-align: center; }
-
-.border *, .border-thick *, .round-filled *, .round-filled-grey * {
- font-size: 0.01px;
- line-height: 0.01px;
- display: block;
- height: 1px;
- overflow: hidden;
- padding: 0px; }
-
-.border-top, .border-bottom, .border2, .round-filled-top, .round-filled-bottom, .round-filled-grey-top, round-filled-grey-top {
- padding-left: 1px;
- padding-right: 1px; }
-
-.border-top, .border-bottom {
- margin-left: 3px;
- margin-right: 3px; }
-
-.border-top {
- border-bottom: 1px solid #e9e9e9; }
-
-.border-bottom {
- border-top: 1px solid #e9e9e9; }
-
-.border2, .border3, .border4, .border5, .borderfg {
- border-left: 1px solid #e9e9e9;
- border-right: 1px solid #e9e9e9; }
-
-.border2, .border3 {
- margin-left: 1px;
- margin-right: 1px; }
-
-.border-thick-top {
- border-bottom: 2px solid #e9e9e9; }
-
-.border-thick-bottom {
- border-top: 2px solid #e9e9e9; }
-
-.border-thick2, .border-thick3, .border-thick4, .border-thick5, .border-thickfg {
- border-left: 2px solid #e9e9e9;
- border-right: 2px solid #e9e9e9; }
-
-.round-filled-top, .round-filled-bottom {
- margin-left: 3px;
- margin-right: 3px;
- border-left: 1px solid #3198c1;
- border-right: 1px solid #3198c1;
- background: #3198c1; }
-
-.round-filled-grey-top, .round-filled-grey-bottom {
- margin-left: 3px;
- margin-right: 3px;
- border-left: 1px solid #cccccc;
- border-right: 1px solid #cccccc;
- background: #cccccc; }
-
-.round-filled-grey2, .round-filled-grey3, .round-filled-grey4, .round-filled-grey5, .round-filled-greyfg {
- border-left: 1px solid #cccccc;
- border-right: 1px solid #cccccc;
- background: #cccccc;
- color: #686868; }
-
-.round-filled2, .round-filled3, .round-filled4, .round-filled5, .round-filledfg {
- border-left: 1px solid #3198c1;
- border-right: 1px solid #3198c1;
- background: #3198c1; }
-
-.round-filled2, .round-filled3, .round-filled-grey2, .round-filled-grey3 {
- margin-left: 1px;
- margin-right: 1px; }
-
-.toggle_question_status, .toggle_choice_status, .toggle_autoactivate_status {
- text-align: center;
- color: white;
- cursor: pointer;
- line-height: 14px; }
-
-div.form_field {
- position: relative;
- float: left; }
-
-label.over-apply {
- color: #cccccc;
- position: absolute;
- top: 0px;
- left: 5px; }
-
-table.tablesorter {
- font-family: arial;
- margin: 10px 0pt 15px;
- font-size: 8pt;
- width: 100%;
- text-align: left; }
- table.tablesorter thead tr th, table.tablesorter tfoot tr th {
- border: 1px solid white;
- font-size: 8pt;
- padding: 4px 20px 4px 4px; }
- table.tablesorter thead tr .header {
- background-image: url("/images/bg.gif");
- background-repeat: no-repeat;
- background-position: center right;
- cursor: pointer; }
- table.tablesorter tbody td {
- color: #3d3d3d;
- padding: 4px;
- vertical-align: top; }
- table.tablesorter tbody tr.odd td {
- background-color: #fafafa; }
- table.tablesorter tbody tr.even td {
- background-color: #fefefe; }
- table.tablesorter thead tr .headerSortUp {
- background-image: url("/images/asc.gif"); }
- table.tablesorter thead tr .headerSortDown {
- background-image: url("/images/desc.gif"); }
- table.tablesorter thead tr .headerOver {
- background-color: #8dbdd8; }
-
-.twenty_pixel_font {
- font-size: 20px; }
-
-.sixteen_pixel_font {
- font-size: 16px; }
-
-.twelve_pixel_font {
- font-size: 12px; }
-
-.active {
- color: black; }
-
-.firsttime {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- z-index: 100;
- background: #4dbae6;
- color: #185b75;
- font-size: 15px;
- font-weight: bold;
- text-align: center;
- border-bottom: 1px solid #1f7293;
- padding: 4px;
- margin-bottom: 8px;
- display: none; }
-
-.wider {
- color: black; }
- .wider td {
- padding: 5px !important; }
- .wider td.no_bottom_padding {
- padding-bottom: 0px !important; }
- .wider td.no_top_padding {
- padding-top: 0px !important;
- vertical-align: top; }
- .wider h2 {
- font-weight: bold;
- color: #3198c1; }
-
-#cant_decide_options {
- width: 95%;
- text-align: center;
- font-size: 12px; }
- .lang-ar #cant_decide_options {
- font-size: 14px; }
-
-#cant_decide_options table {
- text-align: left; }
-
-#cant_decide_btn {
- background: #c5c5c5;
- padding: 7.5px 12px 7.5px 12px;
- font-size: 12.8px;
- color: white;
- cursor: pointer; }
- .lang-ar #cant_decide_btn {
- font-size: 16px; }
- #cant_decide_btn:hover {
- background-color: #b1b1b1; }
-
-.add_idea .add_idea_button {
- padding: 7.5px 20px 7.5px 20px;
- color: white;
- font-size: 12.8px;
- cursor: pointer;
- background: #01bb00; }
- .lang-ar .add_idea .add_idea_button {
- font-size: 16px; }
- .add_idea .add_idea_button a {
- color: white; }
- .add_idea .add_idea_button:hover {
- background: #228b53; }
-
-#facebox {
- cursor: move; }
-
-.new_idea_submit, .flag_submit_button, .cd_submit_button {
- padding: 5px 10px 5px 10px;
- background: #01bb00;
- cursor: pointer;
- color: white; }
- .new_idea_submit:hover, .flag_submit_button:hover, .cd_submit_button:hover {
- background-color: #228b53; }
-
-.no_bottom_padding {
- padding-bottom: 0px !important; }
-
-.pagination {
- text-align: center;
- padding: 0.3em; }
- .pagination a {
- padding: 0.2em 0.5em; }
- .pagination span {
- padding: 0.2em 0.5em; }
- .pagination span.disabled {
- color: #aaaaaa; }
- .pagination span.current {
- font-weight: bold; }
- .pagination a {
- border: 1px solid #dddddd;
- text-decoration: none; }
- .pagination a:hover, .pagination a:focus {
- border-color: #003366;
- background: #3198c1;
- color: white; }
- .pagination .page_info {
- color: #aaaaaa;
- padding-top: 0.8em; }
- .pagination .prev_page, .pagination .next_page {
- border-width: 2px; }
- .pagination .prev_page {
- margin-right: 1em; }
- .pagination .next_page {
- margin-left: 1em; }
-
-#radio_button {
- padding-right: 10px; }
-
-#wide_column {
- width: 50%; }
-
-#narrow_column {
- width: 40%; }
-
-.user_cd_reason {
- padding-left: 2px; }
-
-.scrollbar_container {
- height: 93%;
- border: 4px solid #3198c1;
- border-bottom: 0px;
- overflow: auto;
- overflow-x: hidden; }
-
-.bottom_status {
- height: 16px;
- line-height: 16px;
- border: 4px solid #3198c1;
- text-align: center;
- background-color: #3198c1;
- color: white; }
-
-.link_style a {
- color: white;
- font-weight: bold; }
- .link_style a:hover {
- font-weight: bolder;
- text-decoration: underline; }
-
-.tellmearea {
- font-size: 14px; }
-
-.close_and_submit {
- margin-top: 5px; }
-
-.bottom_padding {
- padding-left: 5px;
- padding-right: 5px; }
-
-.aboutpage {
- padding-left: 5px;
- padding-right: 5px; }
-
-.tabs {
- margin: 0;
- padding: 0;
- list-style: none;
- font-size: 12px;
- border-color: #3198c1; }
- .lang-ar .tabs {
- font-size: 14px; }
- .tabs .current_tab {
- font-weight: bold;
- background-color: #3198c1; }
- .tabs .current_tab a {
- color: white; }
- .tabs .current_tab:hover {
- background-color: #3198c1;
- border-color: #3198c1; }
- .tabs li {
- display: inline;
- float: left;
- border-top: 4px solid #3198c1;
- border-left: 4px solid #3198c1;
- border-right: 4px solid #3198c1;
- margin: 0 1px 0 0px;
- padding-left: 5px;
- padding-right: 5px; }
- .tabs li a {
- outline: none;
- display: block;
- color: #3198c1;
- font-weight: bold; }
- .tabs li:hover {
- background-color: #a3d4e8;
- border-color: #a3d4e8; }
-
-.vote-nav {
- height: 25.4px;
- font-size: 12px; }
-
-.question {
- font-size: 16px;
- width: 85%;
- color: black;
- height: 100%; }
- .lang-ar .question {
- font-size: 18px; }
-
-.question_container {
- height: 20%; }
-
-#new_idea_field {
- font-size: 12px; }
- .lang-ar #new_idea_field {
- font-size: 14px; }
-
-.idea_result {
- color: #555555;
- width: 67.5%; }
-
-.faq a {
- padding-left: 5px; }
-
-.showmespace {
- margin-top: 20px; }
-
-.new_tellme_text {
- margin-top: 5px; }
-
-#flag_inappropriate {
- width: 90%; }
- #flag_inappropriate textarea {
- border: none;
- width: 100%; }
-
-.vote-footer a {
- color: white; }
-
-.top_margin {
- margin-top: 5px; }
-
-.two_top_margin {
- margin-top: 10px; }
-
-.six_top_margin {
- margin-top: 30px; }
-
-.add_container {
- margin-top: 15px; }
-
-#initial_notice {
- background-color: white;
- border: none;
- font-size: 14px; }
- .lang-ar #initial_notice {
- font-size: 16px; }
-
-.bottom_status table {
- border: 0;
- cellpadding: 0; }
-
-.results_data {
- height: 80%; }
- .results_data .vote_count {
- color: #919191; }
-
-#full_height {
- height: 100%; }
-
-.no_padding {
- padding: 0 0 0 0; }
-
-.results_content {
- min-height: 100%; }
-
-.text_field_border {
- padding: 2px;
- background-color: #e9e9e9; }
- .text_field_border textarea#new_idea_field:focus {
- outline: none; }
-
-textarea {
- overflow: auto; }
-
-.cd_option .cd_box {
- margin: 5px 10px; }
- .cd_option .cd_box a {
- background: #c5c5c5;
- color: white;
- display: block;
- width: 40%;
- padding: 5px 10px; }
- .cd_option .cd_box a:hover {
- background: #b1b1b1; }
+*{margin:0 auto;padding:0}a{text-decoration:none;color:#54afe2}a img,a:active{border:none}.fleft{float:left}.fright{float:right}.center{text-align:center}.clear{clear:both}.grey,label{color:#555}body{font-family:Arial,Helvetica,sans-serif;font-size:12px;width:100%;height:100%;color:#555;line-height:16pt;float:left}body.lang-ar{font-size:14px}html{font-size:100%;min-height:100%}h1,h2,h3,h4,h5,h6,.large-text{color:#797979}p,h1,h2,h3,h4,h5,h6,table,.large-text{padding:5px 0px}h1{font-size:20px}h2,.large-text{font-size:16px;font-weight:normal}h3{font-size:14px;font-weight:normal}h4{font-size:12px;font-weight:normal}ul li{margin-left:20px}.full{width:100%}.half{width:50%}.ninety{width:90%}input.text{border:1px solid #555;padding:3px 3px 2px}.padding{margin:5px 0px}table{text-align:left;border-collapse:collapse}table .header_padding{padding:5px}table .idea_padding{padding:2.5px 5px 2.5px 5px}table .row0{background-color:#3198c1;color:#fff}table .row0 td.idea{width:67.5%}table .row0 td.score_header{width:80px}table .row1{background-color:#fafafa}table .row2{background-color:#fefefe}table .thin td{padding:2px 5px;height:2px}table.recent-winners td{text-align:center}table.item td:last-child{font-weight:bold}table.left{margin:0}table.signup td{max-width:400px}table .score{padding-right:5px}.create-question h2{padding-bottom:0px}.create-question p{padding:15px 25px;font-size:14px}.create-question p.ideas{padding-bottom:10px;padding-right:400px}.create-question .fieldWithErrors{padding:2px 0 3px;border:1px solid #ff6464}.errorExplanation{color:#fff;background:#ff6464;padding:8px 5px;border:1px solid #000}.errorExplanation h2{color:#fff}.errorExplanation ul li{margin-left:40px}.header{padding:30px 5px 15px 5px;border-bottomf:1px solid #f4f5f6}.header .fright{padding-top:18px}.header .fright ul li{list-style-type:none;float:left;font-size:14px;text-transform:uppercase;margin:0}.header .fright ul li a{padding:5px 20px;color:#54afe2}.header .fright ul li a:hover{border-top:1px dotted #54afe2;border-bottom:1px dotted #54afe2}.header .fright ul li a.down{color:#555}.header a.logo:hover{border:none}.bread-crumb{color:#54afe2}.body{height:100%;margin:1px 0px;padding:0px 0px 0px}.body .center img{padding:0px 0px 30px 0px}.body .triple-left{min-height:150px}.body #body .triple-center,.body #body .triple-right{min-height:150px}.triple-left,.triple-center,.triple-right,.double-left{float:left}.noborder{border:none}.image-example{border:2px solid #eee;width:250px;margin:0px 0px 10px}.button{border:1px solid #3198c1;width:125px;padding:2px 0px;background-color:#54afe2;text-align:center;float:left}.button-link{color:#fff}.button:hover{border:1px solid #3198c1}.triple-left{border-right:1px dotted #d8dbdc;padding:0px 15px 2px 0px;width:264px}.triple-center{border-right:1px dotted #d8dbdc;padding:0px 15px 2px 15px;width:249px}.triple-right{padding:0px 0px 2px 15px;width:265px}.double-left{padding:0px 15px 2px 0px;width:545px}.votebox{width:98.5%;float:center;height:80%}.votebox table{text-align:center;height:40%}.votebox table tbody{height:100%}.votebox table td{min-height:100%}.votebox table td.idea{cursor:pointer}.votebox table td.left{padding:0 2.5px 0 0}.votebox table td.right{padding:0 0 0 2.5px}.votebox table td.vote_cell{font-size:12.8px;color:#fff;height:90%;background:#3198c1}.lang-ar .votebox table td.vote_cell{font-size:16px}.votebox table td.vote_cell:hover{background:#2b88ad}.votebox table td.vote_cell table{height:100%}.votebox table td.vote_cell a{color:#fff;border:none}.votebox table td.vote_cell a:hover{color:#fff;border:none}.votebox table td .five_padding{padding:5px}.votebox table td table tr.prompt{height:100%}.skip{margin:10px 0}.footer{padding:10px 5px;border-top:1px solid #f4f5f6}.footer .triple-left,.footer .triple-center,.footer .triple-right{font-size:10px;line-height:12pt;color:#aaa}.footer img{padding-right:10px;float:left}.footer p{float:right;padding:0}.footer .triple-left p{width:153px}.footer .triple-center p{width:205px}.footer .triple-right p{width:220px}.bar-chart{border:1px solid #ccc;width:97%;margin:0 auto;padding:1px;background:#fff}.bar-chart>div{background-color:#797979;height:12px;margin:0}hr{border:none;border-bottom:1px dotted #bbb;margin:0 0 15px 0}.add-box{width:90%;margin-top:10px}.add-box textarea{border:none;width:100%}input,textarea{font-size:13px;color:#555;font-family:Arial,Helvetica,sans-serif}.lang-ar input,.lang-ar textarea{font-size:15px}.form-btn{color:#000}.error,.notice,.vote-notice{color:#fff;background-color:#ff6464;margin:-10px 10em 25px;text-align:center;font-size:13px}.notice{background-color:#ffc;border:1px solid #797979;color:#797979;text-align:left;padding:5px 10px;margin:0 40px 25px}.notice span.close{display:block;text-align:right}.notice span.close:hover{border:none}.vote-notice{background-color:#0b0}#initial_notice{text-align:center}.border *,.border-thick *,.round-filled *,.round-filled-grey *{font-size:0.01px;line-height:0.01px;display:block;height:1px;overflow:hidden;padding:0px}.border-top,.border-bottom,.border2,.round-filled-top,.round-filled-bottom,.round-filled-grey-top,round-filled-grey-top{padding-left:1px;padding-right:1px}.border-top,.border-bottom{margin-left:3px;margin-right:3px}.border-top{border-bottom:1px solid #e9e9e9}.border-bottom{border-top:1px solid #e9e9e9}.border2,.border3,.border4,.border5,.borderfg{border-left:1px solid #e9e9e9;border-right:1px solid #e9e9e9}.border2,.border3{margin-left:1px;margin-right:1px}.border-thick-top{border-bottom:2px solid #e9e9e9}.border-thick-bottom{border-top:2px solid #e9e9e9}.border-thick2,.border-thick3,.border-thick4,.border-thick5,.border-thickfg{border-left:2px solid #e9e9e9;border-right:2px solid #e9e9e9}.round-filled-top,.round-filled-bottom{margin-left:3px;margin-right:3px;border-left:1px solid #3198c1;border-right:1px solid #3198c1;background:#3198c1}.round-filled-grey-top,.round-filled-grey-bottom{margin-left:3px;margin-right:3px;border-left:1px solid #ccc;border-right:1px solid #ccc;background:#ccc}.round-filled-grey2,.round-filled-grey3,.round-filled-grey4,.round-filled-grey5,.round-filled-greyfg{border-left:1px solid #ccc;border-right:1px solid #ccc;background:#ccc;color:#686868}.round-filled2,.round-filled3,.round-filled4,.round-filled5,.round-filledfg{border-left:1px solid #3198c1;border-right:1px solid #3198c1;background:#3198c1}.round-filled2,.round-filled3,.round-filled-grey2,.round-filled-grey3{margin-left:1px;margin-right:1px}.toggle_question_status,.toggle_choice_status,.toggle_autoactivate_status{text-align:center;color:#fff;cursor:pointer;line-height:14px}div.form_field{position:relative;float:left}label.over-apply{color:#ccc;position:absolute;top:0px;left:5px}table.tablesorter{font-family:arial;margin:10px 0pt 15px;font-size:8pt;width:100%;text-align:left}table.tablesorter thead tr th,table.tablesorter tfoot tr th{border:1px solid #fff;font-size:8pt;padding:4px 20px 4px 4px}table.tablesorter thead tr .header{background-image:url("/images/bg.gif");background-repeat:no-repeat;background-position:center right;cursor:pointer}table.tablesorter tbody td{color:#3d3d3d;padding:4px;vertical-align:top}table.tablesorter tbody tr.odd td{background-color:#fafafa}table.tablesorter tbody tr.even td{background-color:#fefefe}table.tablesorter thead tr .headerSortUp{background-image:url("/images/asc.gif")}table.tablesorter thead tr .headerSortDown{background-image:url("/images/desc.gif")}table.tablesorter thead tr .headerOver{background-color:#8dbdd8}.twenty_pixel_font{font-size:20px}.sixteen_pixel_font{font-size:16px}.twelve_pixel_font{font-size:12px}.active{color:#000}.firsttime{position:fixed;top:0;left:0;width:100%;z-index:100;background:#4dbae6;color:#185b75;font-size:15px;font-weight:bold;text-align:center;border-bottom:1px solid #1f7293;padding:4px;margin-bottom:8px;display:none}.wider{color:#000}.wider td{padding:5px !important}.wider td.no_bottom_padding{padding-bottom:0px !important}.wider td.no_top_padding{padding-top:0px !important;vertical-align:top}.wider h2{font-weight:bold;color:#3198c1}#cant_decide_options{width:95%;text-align:center;font-size:12px}.lang-ar #cant_decide_options{font-size:14px}#cant_decide_options table{text-align:left}#cant_decide_btn{background:#c5c5c5;padding:7.5px 12px 7.5px 12px;font-size:12.8px;color:#fff;cursor:pointer}.lang-ar #cant_decide_btn{font-size:16px}#cant_decide_btn:hover{background-color:#b1b1b1}.add_idea .add_idea_button{padding:7.5px 20px 7.5px 20px;color:#fff;font-size:12.8px;cursor:pointer;background:#01bb00}.lang-ar .add_idea .add_idea_button{font-size:16px}.add_idea .add_idea_button a{color:#fff}.add_idea .add_idea_button:hover{background:#228b53}#facebox{cursor:move}.new_idea_submit,.flag_submit_button,.cd_submit_button{padding:5px 10px 5px 10px;background:#01bb00;cursor:pointer;color:#fff}.new_idea_submit:hover,.flag_submit_button:hover,.cd_submit_button:hover{background-color:#228b53}.no_bottom_padding{padding-bottom:0px !important}.pagination{text-align:center;padding:0.3em}.pagination a{padding:0.2em 0.5em}.pagination span{padding:0.2em 0.5em}.pagination span.disabled{color:#aaa}.pagination span.current{font-weight:bold}.pagination a{border:1px solid #ddd;text-decoration:none}.pagination a:hover,.pagination a:focus{border-color:#036;background:#3198c1;color:#fff}.pagination .page_info{color:#aaa;padding-top:0.8em}.pagination .prev_page,.pagination .next_page{border-width:2px}.pagination .prev_page{margin-right:1em}.pagination .next_page{margin-left:1em}#radio_button{padding-right:10px}#wide_column{width:50%}#narrow_column{width:40%}.user_cd_reason{padding-left:2px}.scrollbar_container{height:93%;border:4px solid #3198c1;border-bottom:0px;overflow:auto;overflow-x:hidden}.bottom_status{height:16px;line-height:16px;border:4px solid #3198c1;text-align:center;background-color:#3198c1;color:#fff}.link_style a{color:#fff;font-weight:bold}.link_style a:hover{font-weight:bolder;text-decoration:underline}.tellmearea{font-size:14px}.close_and_submit{margin-top:5px}.bottom_padding{padding-left:5px;padding-right:5px}.aboutpage{padding-left:5px;padding-right:5px}.tabs{margin:0;padding:0;list-style:none;font-size:12px;border-color:#3198c1}.lang-ar .tabs{font-size:14px}.tabs .current_tab{font-weight:bold;background-color:#3198c1}.tabs .current_tab a{color:#fff}.tabs .current_tab:hover{background-color:#3198c1;border-color:#3198c1}.tabs li{display:inline;float:left;border-top:4px solid #3198c1;border-left:4px solid #3198c1;border-right:4px solid #3198c1;margin:0 1px 0 0px;padding-left:5px;padding-right:5px}.tabs li a{outline:none;display:block;color:#3198c1;font-weight:bold}.tabs li:hover{background-color:#a3d4e8;border-color:#a3d4e8}.vote-nav{height:25.4px;font-size:12px}.question{font-size:16px;width:85%;color:#000;height:100%}.lang-ar .question{font-size:18px}.question_container{height:20%}#new_idea_field{font-size:12px}.lang-ar #new_idea_field{font-size:14px}.idea_result{color:#555;width:67.5%}.faq a{padding-left:5px}.showmespace{margin-top:20px}.new_tellme_text{margin-top:5px}#flag_inappropriate{width:90%}#flag_inappropriate textarea{border:none;width:100%}.vote-footer a{color:#fff}.top_margin{margin-top:5px}.two_top_margin{margin-top:10px}.six_top_margin{margin-top:30px}.add_container{margin-top:15px}#initial_notice{background-color:#fff;border:none;font-size:14px}.lang-ar #initial_notice{font-size:16px}.bottom_status table{border:0;cellpadding:0}.results_data{height:80%}.results_data .vote_count{color:#919191}#full_height{height:100%}.no_padding{padding:0 0 0 0}.results_content{min-height:100%}.text_field_border{padding:2px;background-color:#e9e9e9}.text_field_border textarea#new_idea_field:focus{outline:none}textarea{overflow:auto}.cd_option .cd_box{margin:5px 10px}.cd_option .cd_box a{background:#c5c5c5;color:#fff;display:block;width:40%;padding:5px 10px}.cd_option .cd_box a:hover{background:#b1b1b1}#cookies-failed{position:absolute;background-color:rgba(0,0,0,0.8)}#cookies-failed .aboutpage{margin:4em 1em 0;background-color:#fff}#cookies-failed .aboutpage h2{background:url(/images/widget/blocked_cookies.png) no-repeat left 40%;padding-left:22px}
View
7 test/factories/blocked_cookies.rb
@@ -0,0 +1,7 @@
+Factory.define :blocked_cookies do |blocked_cookies|
+ blocked_cookies.referrer { 'string' }
+ blocked_cookies.question_id { 1 }
+ blocked_cookies.user_agent { 'string' }
+ blocked_cookies.ip_addr { 'string' }
+ blocked_cookies.source { 'string' }
+end
View
7 test/unit/blocked_cookies_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class BlockedCookiesTest < ActiveSupport::TestCase
+ should "be valid with factory" do
+ assert_valid Factory.build(:blocked_cookies)
+ end
+end

0 comments on commit cb192b2

Please sign in to comment.
Something went wrong with that request. Please try again.