From ef55f81792f4ead601be37297f4e7daeb58bf9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=A3is=20Ozols?= Date: Tue, 5 Jul 2011 14:21:17 +0300 Subject: [PATCH] Rails 3.1 support. Wip. --- app/controllers/admin/inquiries_controller.rb | 41 ------ .../admin/inquiry_settings_controller.rb | 48 ------ app/controllers/inquiries_controller.rb | 43 ------ .../refinery/admin/inquiries_controller.rb | 48 ++++++ .../admin/inquiry_settings_controller.rb | 53 +++++++ .../refinery/inquiries_controller.rb | 45 ++++++ app/mailers/inquiry_mailer.rb | 20 --- app/mailers/refinery/inquiry_mailer.rb | 22 +++ app/models/inquiry.rb | 21 --- app/models/inquiry_setting.rb | 41 ------ app/models/refinery/inquiry.rb | 23 +++ app/models/refinery/inquiry_setting.rb | 43 ++++++ app/views/admin/inquiries/_submenu.html.erb | 27 ---- .../admin/inquiries/_inquiry.html.erb | 10 +- .../admin/inquiries/_submenu.html.erb | 27 ++++ .../admin/inquiries/index.html.erb | 8 +- .../admin/inquiries/show.html.erb | 0 .../_confirmation_email_form.html.erb | 0 .../_notification_recipients_form.html.erb | 0 .../admin/inquiry_settings/edit.html.erb | 0 .../{ => refinery}/inquiries/new.html.erb | 0 .../inquiries/thank_you.html.erb | 0 .../inquiry_mailer/confirmation.html.erb | 0 .../inquiry_mailer/notification.html.erb | 0 config/locales/en.yml | 137 +++++++++--------- config/routes.rb | 34 +++-- db/migrate/20101208082840_create_inquiries.rb | 24 +-- ...remove_position_and_open_from_inquiries.rb | 12 +- db/seeds/pages_for_inquiries.rb | 10 +- features/support/factories.rb | 2 +- lib/refinerycms-inquiries.rb | 7 +- spec/models/inquiry_spec.rb | 59 -------- spec/models/refinery/inquiry_spec.rb | 61 ++++++++ 33 files changed, 448 insertions(+), 418 deletions(-) delete mode 100644 app/controllers/admin/inquiries_controller.rb delete mode 100644 app/controllers/admin/inquiry_settings_controller.rb delete mode 100644 app/controllers/inquiries_controller.rb create mode 100644 app/controllers/refinery/admin/inquiries_controller.rb create mode 100644 app/controllers/refinery/admin/inquiry_settings_controller.rb create mode 100644 app/controllers/refinery/inquiries_controller.rb delete mode 100644 app/mailers/inquiry_mailer.rb create mode 100644 app/mailers/refinery/inquiry_mailer.rb delete mode 100644 app/models/inquiry.rb delete mode 100644 app/models/inquiry_setting.rb create mode 100644 app/models/refinery/inquiry.rb create mode 100644 app/models/refinery/inquiry_setting.rb delete mode 100644 app/views/admin/inquiries/_submenu.html.erb rename app/views/{ => refinery}/admin/inquiries/_inquiry.html.erb (56%) create mode 100644 app/views/refinery/admin/inquiries/_submenu.html.erb rename app/views/{ => refinery}/admin/inquiries/index.html.erb (78%) rename app/views/{ => refinery}/admin/inquiries/show.html.erb (100%) rename app/views/{ => refinery}/admin/inquiry_settings/_confirmation_email_form.html.erb (100%) rename app/views/{ => refinery}/admin/inquiry_settings/_notification_recipients_form.html.erb (100%) rename app/views/{ => refinery}/admin/inquiry_settings/edit.html.erb (100%) rename app/views/{ => refinery}/inquiries/new.html.erb (100%) rename app/views/{ => refinery}/inquiries/thank_you.html.erb (100%) rename app/views/{ => refinery}/inquiry_mailer/confirmation.html.erb (100%) rename app/views/{ => refinery}/inquiry_mailer/notification.html.erb (100%) delete mode 100644 spec/models/inquiry_spec.rb create mode 100644 spec/models/refinery/inquiry_spec.rb diff --git a/app/controllers/admin/inquiries_controller.rb b/app/controllers/admin/inquiries_controller.rb deleted file mode 100644 index ce481865..00000000 --- a/app/controllers/admin/inquiries_controller.rb +++ /dev/null @@ -1,41 +0,0 @@ -class Admin::InquiriesController < Admin::BaseController - - crudify :inquiry, :title_attribute => "name", :order => "created_at DESC" - helper_method :group_by_date - - before_filter :find_all_ham, :only => [:index] - before_filter :find_all_spam, :only => [:spam] - before_filter :get_spam_count, :only => [:index, :spam] - - def index - @inquiries = @inquiries.with_query(params[:search]) if searching? - @inquiries = @inquiries.paginate({:page => params[:page]}) - end - - def spam - self.index - render :action => 'index' - end - - def toggle_spam - find_inquiry - @inquiry.toggle!(:spam) - - redirect_to :back - end - -protected - - def find_all_ham - @inquiries = Inquiry.ham - end - - def find_all_spam - @inquiries = Inquiry.spam - end - - def get_spam_count - @spam_count = Inquiry.count(:conditions => {:spam => true}) - end - -end diff --git a/app/controllers/admin/inquiry_settings_controller.rb b/app/controllers/admin/inquiry_settings_controller.rb deleted file mode 100644 index 684491a9..00000000 --- a/app/controllers/admin/inquiry_settings_controller.rb +++ /dev/null @@ -1,48 +0,0 @@ -class Admin::InquirySettingsController < Admin::BaseController - - crudify :refinery_setting, - :title_attribute => "name", - :order => 'name ASC', - :redirect_to_url => "admin_inquiries_url" - - before_filter :set_url_override?, :only => [:edit, :update] - after_filter :save_subject_for_confirmation?, :only => :update - after_filter :save_message_for_confirmation?, :only => :update - around_filter :rewrite_flash?, :only => :update - -protected - def rewrite_flash? - yield - - flash[:notice] = flash[:notice].to_s.gsub(/(\'.*\')/) {|m| m.titleize}.gsub('Inquiry ', '') - end - - def save_subject_for_confirmation? - InquirySetting.confirmation_subject = params[:subject] if params.keys.include?('subject') - end - - def save_message_for_confirmation? - InquirySetting.confirmation_message = params[:message] if params.keys.include?('message') - end - - def set_url_override? - @url_override = admin_inquiry_setting_url(@refinery_setting, :dialog => from_dialog?) - end - - def find_refinery_setting - # ensure that we're dealing with the name of the setting, not the id. - begin - if params[:id].to_i.to_s == params[:id] - params[:id] = RefinerySetting.find(params[:id]).name.to_s - end - rescue - end - - # prime the setting first, if it's valid. - if InquirySetting.methods.map(&:to_sym).include?(params[:id].to_s.gsub('inquiry_', '').to_sym) - InquirySetting.send(params[:id].to_s.gsub('inquiry_', '').to_sym) - end - @refinery_setting = RefinerySetting.find_by_name(params[:id]) - end - -end diff --git a/app/controllers/inquiries_controller.rb b/app/controllers/inquiries_controller.rb deleted file mode 100644 index 8b658dfb..00000000 --- a/app/controllers/inquiries_controller.rb +++ /dev/null @@ -1,43 +0,0 @@ -class InquiriesController < ApplicationController - - before_filter :find_page, :only => [:create, :new] - - def thank_you - @page = Page.find_by_link_url("/contact/thank_you", :include => [:parts, :slugs]) - end - - def new - @inquiry = Inquiry.new - end - - def create - @inquiry = Inquiry.new(params[:inquiry]) - - if @inquiry.save - if @inquiry.ham? - begin - InquiryMailer.notification(@inquiry, request).deliver - rescue - logger.warn "There was an error delivering an inquiry notification.\n#{$!}\n" - end - - begin - InquiryMailer.confirmation(@inquiry, request).deliver - rescue - logger.warn "There was an error delivering an inquiry confirmation:\n#{$!}\n" - end - end - - redirect_to thank_you_inquiries_url - else - render :action => 'new' - end - end - -protected - - def find_page - @page = Page.find_by_link_url('/contact', :include => [:parts, :slugs]) - end - -end diff --git a/app/controllers/refinery/admin/inquiries_controller.rb b/app/controllers/refinery/admin/inquiries_controller.rb new file mode 100644 index 00000000..b18cb579 --- /dev/null +++ b/app/controllers/refinery/admin/inquiries_controller.rb @@ -0,0 +1,48 @@ +module Refinery + module Admin + class InquiriesController < ::Admin::BaseController + + crudify :'refinery/inquiry', + :title_attribute => "name", + :order => "created_at DESC" + + helper_method :group_by_date + + before_filter :find_all_ham, :only => [:index] + before_filter :find_all_spam, :only => [:spam] + before_filter :get_spam_count, :only => [:index, :spam] + + def index + @inquiries = @inquiries.with_query(params[:search]) if searching? + @inquiries = @inquiries.page(params[:page]) + end + + def spam + self.index + render :action => 'index' + end + + def toggle_spam + find_inquiry + @inquiry.toggle!(:spam) + + redirect_to :back + end + + protected + + def find_all_ham + @inquiries = Refinery::Inquiry.ham + end + + def find_all_spam + @inquiries = Refinery::Inquiry.spam + end + + def get_spam_count + @spam_count = Refinery::Inquiry.count(:conditions => {:spam => true}) + end + + end + end +end diff --git a/app/controllers/refinery/admin/inquiry_settings_controller.rb b/app/controllers/refinery/admin/inquiry_settings_controller.rb new file mode 100644 index 00000000..5bac036f --- /dev/null +++ b/app/controllers/refinery/admin/inquiry_settings_controller.rb @@ -0,0 +1,53 @@ +module Refinery + module Admin + class InquirySettingsController < ::Admin::BaseController + + crudify :'refinery/setting', + :title_attribute => "name", + :order => 'name ASC', + :redirect_to_url => main_app.refinery_admin_inquiries_path + + before_filter :set_url_override?, :only => [:edit, :update] + after_filter :save_subject_for_confirmation?, :only => :update + after_filter :save_message_for_confirmation?, :only => :update + around_filter :rewrite_flash?, :only => :update + + protected + + def rewrite_flash? + yield + + flash[:notice] = flash[:notice].to_s.gsub(/(\'.*\')/) {|m| m.titleize}.gsub('Inquiry ', '') + end + + def save_subject_for_confirmation? + Refinery::InquirySetting.confirmation_subject = params[:subject] if params.keys.include?('subject') + end + + def save_message_for_confirmation? + Refinery::InquirySetting.confirmation_message = params[:message] if params.keys.include?('message') + end + + def set_url_override? + @url_override = admin_inquiry_setting_url(@refinery_setting, :dialog => from_dialog?) + end + + def find_refinery_setting + # ensure that we're dealing with the name of the setting, not the id. + begin + if params[:id].to_i.to_s == params[:id] + params[:id] = Refinery::RefinerySetting.find(params[:id]).name.to_s + end + rescue + end + + # prime the setting first, if it's valid. + if Refinery::InquirySetting.methods.map(&:to_sym).include?(params[:id].to_s.gsub('inquiry_', '').to_sym) + Refinery::InquirySetting.send(params[:id].to_s.gsub('inquiry_', '').to_sym) + end + @refinery_setting = Refinery::RefinerySetting.find_by_name(params[:id]) + end + + end + end +end \ No newline at end of file diff --git a/app/controllers/refinery/inquiries_controller.rb b/app/controllers/refinery/inquiries_controller.rb new file mode 100644 index 00000000..957722ea --- /dev/null +++ b/app/controllers/refinery/inquiries_controller.rb @@ -0,0 +1,45 @@ +module Refinery + class InquiriesController < ::ApplicationController + + before_filter :find_page, :only => [:create, :new] + + def thank_you + @page = Refinery::Page.find_by_link_url("/contact/thank_you", :include => [:parts, :slugs]) + end + + def new + @inquiry = Refinery::Inquiry.new + end + + def create + @inquiry = Refinery::Inquiry.new(params[:inquiry]) + + if @inquiry.save + if @inquiry.ham? + begin + Refinery::InquiryMailer.notification(@inquiry, request).deliver + rescue + logger.warn "There was an error delivering an inquiry notification.\n#{$!}\n" + end + + begin + Refinery::InquiryMailer.confirmation(@inquiry, request).deliver + rescue + logger.warn "There was an error delivering an inquiry confirmation:\n#{$!}\n" + end + end + + redirect_to thank_you_inquiries_url + else + render :action => 'new' + end + end + + protected + + def find_page + @page = Refinery::Page.find_by_link_url('/contact', :include => [:parts, :slugs]) + end + + end +end \ No newline at end of file diff --git a/app/mailers/inquiry_mailer.rb b/app/mailers/inquiry_mailer.rb deleted file mode 100644 index 27f6ace5..00000000 --- a/app/mailers/inquiry_mailer.rb +++ /dev/null @@ -1,20 +0,0 @@ -class InquiryMailer < ActionMailer::Base - - def confirmation(inquiry, request) - subject InquirySetting.confirmation_subject(Globalize.locale) - recipients inquiry.email - from "\"#{RefinerySetting[:site_name]}\" " - reply_to InquirySetting.notification_recipients.split(',').first - sent_on Time.now - @inquiry = inquiry - end - - def notification(inquiry, request) - subject InquirySetting.notification_subject - recipients InquirySetting.notification_recipients - from "\"#{RefinerySetting[:site_name]}\" " - sent_on Time.now - @inquiry = inquiry - end - -end diff --git a/app/mailers/refinery/inquiry_mailer.rb b/app/mailers/refinery/inquiry_mailer.rb new file mode 100644 index 00000000..f59a035a --- /dev/null +++ b/app/mailers/refinery/inquiry_mailer.rb @@ -0,0 +1,22 @@ +module Refinery + class InquiryMailer < ActionMailer::Base + + def confirmation(inquiry, request) + subject Refinery::InquirySetting.confirmation_subject(Globalize.locale) + recipients inquiry.email + from "\"#{Refinery::RefinerySetting[:site_name]}\" " + reply_to Refinery::InquirySetting.notification_recipients.split(',').first + sent_on Time.now + @inquiry = inquiry + end + + def notification(inquiry, request) + subject Refinery::InquirySetting.notification_subject + recipients Refinery::InquirySetting.notification_recipients + from "\"#{Refinery::RefinerySetting[:site_name]}\" " + sent_on Time.now + @inquiry = inquiry + end + + end +end diff --git a/app/models/inquiry.rb b/app/models/inquiry.rb deleted file mode 100644 index 9e16ff52..00000000 --- a/app/models/inquiry.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Inquiry < ActiveRecord::Base - - filters_spam :message_field => :message, - :email_field => :email, - :author_field => :name, - :other_fields => [:phone], - :extra_spam_words => %w() - - validates :name, :presence => true - validates :message, :presence => true - validates :email, :format=> { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i } - - acts_as_indexed :fields => [:name, :email, :message, :phone] - - default_scope :order => 'created_at DESC' # previously scope :newest - - def self.latest(number = 7, include_spam = false) - include_spam ? limit(number) : ham.limit(number) - end - -end diff --git a/app/models/inquiry_setting.rb b/app/models/inquiry_setting.rb deleted file mode 100644 index 2e1969fd..00000000 --- a/app/models/inquiry_setting.rb +++ /dev/null @@ -1,41 +0,0 @@ -class InquirySetting < ActiveRecord::Base - - def self.confirmation_body - RefinerySetting.find_or_set(:inquiry_confirmation_body, - "Thank you for your inquiry %name%,\n\nThis email is a receipt to confirm we have received your inquiry and we'll be in touch shortly.\n\nThanks." - ) - end - - def self.confirmation_subject(locale='en') - RefinerySetting.find_or_set("inquiry_confirmation_subject_#{locale}".to_sym, - "Thank you for your inquiry") - end - - def self.confirmation_subject=(value) - value.first.keys.each do |locale| - RefinerySetting.set("inquiry_confirmation_subject_#{locale}".to_sym, value.first[locale.to_sym]) - end - end - - def self.confirmation_message(locale='en') - RefinerySetting.find_or_set("inquiry_confirmation_messeage_#{locale}".to_sym, - RefinerySetting[:inquiry_confirmation_body]) - end - - def self.confirmation_message=(value) - value.first.keys.each do |locale| - RefinerySetting.set("inquiry_confirmation_messeage_#{locale}".to_sym, value.first[locale.to_sym]) - end - end - - def self.notification_recipients - RefinerySetting.find_or_set(:inquiry_notification_recipients, - ((Role[:refinery].users.first.email rescue nil) if defined?(Role)).to_s) - end - - def self.notification_subject - RefinerySetting.find_or_set(:inquiry_notification_subject, - "New inquiry from your website") - end - -end diff --git a/app/models/refinery/inquiry.rb b/app/models/refinery/inquiry.rb new file mode 100644 index 00000000..faf6d71d --- /dev/null +++ b/app/models/refinery/inquiry.rb @@ -0,0 +1,23 @@ +module Refinery + class Inquiry < ActiveRecord::Base + + filters_spam :message_field => :message, + :email_field => :email, + :author_field => :name, + :other_fields => [:phone], + :extra_spam_words => %w() + + validates :name, :presence => true + validates :message, :presence => true + validates :email, :format=> { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i } + + acts_as_indexed :fields => [:name, :email, :message, :phone] + + default_scope :order => 'created_at DESC' + + def self.latest(number = 7, include_spam = false) + include_spam ? limit(number) : ham.limit(number) + end + + end +end diff --git a/app/models/refinery/inquiry_setting.rb b/app/models/refinery/inquiry_setting.rb new file mode 100644 index 00000000..19986038 --- /dev/null +++ b/app/models/refinery/inquiry_setting.rb @@ -0,0 +1,43 @@ +module Refinery + class InquirySetting < ActiveRecord::Base + + def self.confirmation_body + Refinery::RefinerySetting.find_or_set(:inquiry_confirmation_body, + "Thank you for your inquiry %name%,\n\nThis email is a receipt to confirm we have received your inquiry and we'll be in touch shortly.\n\nThanks." + ) + end + + def self.confirmation_subject(locale='en') + Refinery::RefinerySetting.find_or_set("inquiry_confirmation_subject_#{locale}".to_sym, + "Thank you for your inquiry") + end + + def self.confirmation_subject=(value) + value.first.keys.each do |locale| + Refinery::RefinerySetting.set("inquiry_confirmation_subject_#{locale}".to_sym, value.first[locale.to_sym]) + end + end + + def self.confirmation_message(locale='en') + Refinery::RefinerySetting.find_or_set("inquiry_confirmation_messeage_#{locale}".to_sym, + Refinery::RefinerySetting[:inquiry_confirmation_body]) + end + + def self.confirmation_message=(value) + value.first.keys.each do |locale| + Refinery::RefinerySetting.set("inquiry_confirmation_messeage_#{locale}".to_sym, value.first[locale.to_sym]) + end + end + + def self.notification_recipients + Refinery::RefinerySetting.find_or_set(:inquiry_notification_recipients, + ((Refinery::Role[:refinery].users.first.email rescue nil) if defined?(Refinery::Role)).to_s) + end + + def self.notification_subject + Refinery::RefinerySetting.find_or_set(:inquiry_notification_subject, + "New inquiry from your website") + end + + end +end \ No newline at end of file diff --git a/app/views/admin/inquiries/_submenu.html.erb b/app/views/admin/inquiries/_submenu.html.erb deleted file mode 100644 index 4a5d08dd..00000000 --- a/app/views/admin/inquiries/_submenu.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
-
    -
  • - <%= render :partial => "/shared/admin/search", :locals => {:url => request.path} %> -
  • -
  • > - <%= link_to t('.inbox'), admin_inquiries_url, :class => "email_icon" %> -
  • -
  • > - <% if @spam_count > 0 %> - <%= link_to "#{t('.spam')} (#{@spam_count})", spam_admin_inquiries_url, :class => "spam_icon" %> - <% else %> - <%= link_to t('.spam'), spam_admin_inquiries_url, :class => "spam_empty_icon" %> - <% end %> -
  • -
  • - <%= link_to t('.update_notified'), - edit_admin_inquiry_setting_url(:inquiry_notification_recipients, :dialog => true, :height => 300), - :class => "user_comment_icon" %> -
  • -
  • - <%= link_to t('.edit_confirmation_email'), - edit_admin_inquiry_setting_url(:inquiry_confirmation_body, :dialog => true), - :class => "edit_email_icon" %> -
  • -
-
diff --git a/app/views/admin/inquiries/_inquiry.html.erb b/app/views/refinery/admin/inquiries/_inquiry.html.erb similarity index 56% rename from app/views/admin/inquiries/_inquiry.html.erb rename to app/views/refinery/admin/inquiries/_inquiry.html.erb index 06cca304..84318018 100644 --- a/app/views/admin/inquiries/_inquiry.html.erb +++ b/app/views/refinery/admin/inquiries/_inquiry.html.erb @@ -1,23 +1,23 @@
  • - <%= link_to inquiry.name, admin_inquiry_url(inquiry) %> <%= t('.said') %> + <%= link_to inquiry.name, main_app.refinery_admin_inquiry_path(inquiry) %> <%= t('.said') %> <%= truncate(strip_tags(inquiry.message), :length => 60) -%> - <%= link_to refinery_icon_tag('delete.png'), admin_inquiry_url(inquiry), + <%= link_to refinery_icon_tag('delete.png'), main_app.refinery_admin_inquiry_path(inquiry), { :method => :delete, :confirm => t('shared.admin.delete.message', :title => inquiry.name) }, :class => "cancel confirm-delete", :title => t('admin.inquiries.delete') -%> - <%= link_to refinery_icon_tag('zoom.png'), admin_inquiry_url(inquiry), + <%= link_to refinery_icon_tag('zoom.png'), main_app.refinery_admin_inquiry_path(inquiry), :title => t('.read_inquiry') -%> <% if inquiry.spam? %> - <%= link_to refinery_icon_tag('email.png'), toggle_spam_admin_inquiry_url(inquiry), + <%= link_to refinery_icon_tag('email.png'), main_app.toggle_spam_refinery_admin_inquiry_path(inquiry), :title => t('.mark_as_ham') -%> <% else %> - <%= link_to refinery_icon_tag('bin_closed.png'), toggle_spam_admin_inquiry_url(inquiry), + <%= link_to refinery_icon_tag('bin_closed.png'), main_app.toggle_spam_refinery_admin_inquiry_path(inquiry), :title => t('.mark_as_spam') -%> <% end %> diff --git a/app/views/refinery/admin/inquiries/_submenu.html.erb b/app/views/refinery/admin/inquiries/_submenu.html.erb new file mode 100644 index 00000000..2982d6d1 --- /dev/null +++ b/app/views/refinery/admin/inquiries/_submenu.html.erb @@ -0,0 +1,27 @@ +
    +
      +
    • + <%= render :partial => "/refinery/admin/search", :locals => {:url => request.path} %> +
    • +
    • > + <%= link_to t('.inbox'), main_app.refinery_admin_inquiries_path, :class => "email_icon" %> +
    • +
    • > + <% if @spam_count > 0 %> + <%= link_to "#{t('.spam')} (#{@spam_count})", main_app.spam_refinery_admin_inquiries_path, :class => "spam_icon" %> + <% else %> + <%= link_to t('.spam'), main_app.spam_refinery_admin_inquiries_path, :class => "spam_empty_icon" %> + <% end %> +
    • +
    • + <%= link_to t('.update_notified'), + main_app.edit_refinery_admin_inquiry_setting_path(:inquiry_notification_recipients, :dialog => true, :height => 300), + :class => "user_comment_icon" %> +
    • +
    • + <%= link_to t('.edit_confirmation_email'), + main_app.edit_refinery_admin_inquiry_setting_path(:inquiry_confirmation_body, :dialog => true), + :class => "edit_email_icon" %> +
    • +
    +
    diff --git a/app/views/admin/inquiries/index.html.erb b/app/views/refinery/admin/inquiries/index.html.erb similarity index 78% rename from app/views/admin/inquiries/index.html.erb rename to app/views/refinery/admin/inquiries/index.html.erb index e0a0dae0..4512b82a 100644 --- a/app/views/admin/inquiries/index.html.erb +++ b/app/views/refinery/admin/inquiries/index.html.erb @@ -1,7 +1,7 @@ <%= render :partial => "submenu" %>
    <% if searching? %> -

    <%= t('shared.admin.search.results_for', :query => params[:search]) %>

    +

    <%= t('refinery.admin.search.results_for', :query => params[:search]) %>

    <% if @inquiries.any? %> <%= will_paginate @inquiries %>
      @@ -9,18 +9,18 @@
    <%= will_paginate @inquiries %> <% else %> -

    <%= t('shared.admin.search.no_results') %>

    +

    <%= t('refinery.admin.search.no_results') %>

    <% end %> <% else %> <% if @inquiries.any? -%> - <%= will_paginate @inquiries %> + <%= paginate @inquiries %> <% group_by_date(@inquiries).each do |container| %>

    <%= l((inquiry_group = container.last).first.created_at, :format => :short) %>

      <%= render :partial => 'inquiry', :collection => inquiry_group %>
    <% end %> - <%= will_paginate @inquiries %> + <%= paginate @inquiries %> <% else -%>

    <%= t(".no_#{action_name == 'index' ? 'inquiries' : 'spam'}") %> diff --git a/app/views/admin/inquiries/show.html.erb b/app/views/refinery/admin/inquiries/show.html.erb similarity index 100% rename from app/views/admin/inquiries/show.html.erb rename to app/views/refinery/admin/inquiries/show.html.erb diff --git a/app/views/admin/inquiry_settings/_confirmation_email_form.html.erb b/app/views/refinery/admin/inquiry_settings/_confirmation_email_form.html.erb similarity index 100% rename from app/views/admin/inquiry_settings/_confirmation_email_form.html.erb rename to app/views/refinery/admin/inquiry_settings/_confirmation_email_form.html.erb diff --git a/app/views/admin/inquiry_settings/_notification_recipients_form.html.erb b/app/views/refinery/admin/inquiry_settings/_notification_recipients_form.html.erb similarity index 100% rename from app/views/admin/inquiry_settings/_notification_recipients_form.html.erb rename to app/views/refinery/admin/inquiry_settings/_notification_recipients_form.html.erb diff --git a/app/views/admin/inquiry_settings/edit.html.erb b/app/views/refinery/admin/inquiry_settings/edit.html.erb similarity index 100% rename from app/views/admin/inquiry_settings/edit.html.erb rename to app/views/refinery/admin/inquiry_settings/edit.html.erb diff --git a/app/views/inquiries/new.html.erb b/app/views/refinery/inquiries/new.html.erb similarity index 100% rename from app/views/inquiries/new.html.erb rename to app/views/refinery/inquiries/new.html.erb diff --git a/app/views/inquiries/thank_you.html.erb b/app/views/refinery/inquiries/thank_you.html.erb similarity index 100% rename from app/views/inquiries/thank_you.html.erb rename to app/views/refinery/inquiries/thank_you.html.erb diff --git a/app/views/inquiry_mailer/confirmation.html.erb b/app/views/refinery/inquiry_mailer/confirmation.html.erb similarity index 100% rename from app/views/inquiry_mailer/confirmation.html.erb rename to app/views/refinery/inquiry_mailer/confirmation.html.erb diff --git a/app/views/inquiry_mailer/notification.html.erb b/app/views/refinery/inquiry_mailer/notification.html.erb similarity index 100% rename from app/views/inquiry_mailer/notification.html.erb rename to app/views/refinery/inquiry_mailer/notification.html.erb diff --git a/config/locales/en.yml b/config/locales/en.yml index f4310beb..819e31a7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,75 +1,78 @@ en: - plugins: - refinery_inquiries: - title: Inquiries - description: Provides a contact form and stores inquiries - inquiries: - new: - send: Send message - privacy_policy: We value your privacy - admin: + refinery: + plugins: + refinery_inquiries: + title: Inquiries + description: Provides a contact form and stores inquiries inquiries: - delete: Remove this inquiry forever - inquiry: - read_inquiry: Read the inquiry - said: said - mark_as_spam: Mark as spam - mark_as_ham: Move to inbox - submenu: - inbox: Inbox - spam: Spam - update_notified: Update who gets notified - edit_confirmation_email: Edit confirmation email - index: - no_inquiries: You have not received any inquiries yet. - no_spam: Hooray! You don't have any spam. - show: - details: Details - age: Age - actions: Actions - back_to_all_inquiries: Back to all Inquiries - spam: Spam - spam_yes: 'yes' - inquiry: Inquiry - to: To + new: + send: Send message + privacy_policy: We value your privacy + admin: + inquiries: + delete: Remove this inquiry forever + inquiry: + read_inquiry: Read the inquiry + said: said + mark_as_spam: Mark as spam + mark_as_ham: Move to inbox + submenu: + inbox: Inbox + spam: Spam + update_notified: Update who gets notified + edit_confirmation_email: Edit confirmation email + index: + no_inquiries: You have not received any inquiries yet. + no_spam: Hooray! You don't have any spam. + show: + details: Details + age: Age + actions: Actions + back_to_all_inquiries: Back to all Inquiries + spam: Spam + spam_yes: 'yes' + inquiry: Inquiry + to: To + from: From + click_to_email: Click to email this address + phone: Phone + date: Date + message: Message + inquiry_settings: + notification_recipients_form: + inquiry_settings_value_name: Send notifications to + hint: When a new inquiry is submitted, Refinery will send an email notification to you. + example: "Enter your email address(es) like: jack@work.com, jill@office.com" + confirmation_email_form: + to: To + from: From + subject: Subject + click_to_edit_subject: Click here to edit the subject + explanation: Every time someone contacts you on your website, Refinery sends out an email to confirm the inquiry with the person who made it. + below_edit_email_sent: Below you can edit the email that is sent out. + the_customer_making_inquiry: The customer making the inquiry + message: Message + note: "Note: place the text %name% where you'd like the customer's name to appear in the email" + inquiry_mailer: + notification: + greeting: Hi there + you_recieved_new_inquiry: You just received a new inquiry on your website. + inquiry_starts: --- inquiry starts --- + inquiry_ends: --- inquiry ends --- from: From - click_to_email: Click to email this address + email: Email phone: Phone - date: Date - message: Message - inquiry_settings: - notification_recipients_form: - inquiry_settings_value_name: Send notifications to - hint: When a new inquiry is submitted, Refinery will send an email notification to you. - example: "Enter your email address(es) like: jack@work.com, jill@office.com" - confirmation_email_form: - to: To - from: From - subject: Subject - click_to_edit_subject: Click here to edit the subject - explanation: Every time someone contacts you on your website, Refinery sends out an email to confirm the inquiry with the person who made it. - below_edit_email_sent: Below you can edit the email that is sent out. - the_customer_making_inquiry: The customer making the inquiry message: Message - note: "Note: place the text %name% where you'd like the customer's name to appear in the email" - inquiry_mailer: - notification: - greeting: Hi there - you_recieved_new_inquiry: You just received a new inquiry on your website. - inquiry_starts: --- inquiry starts --- - inquiry_ends: --- inquiry ends --- - from: From - email: Email - phone: Phone - message: Message - closing_line: Kind Regards - ps: P.S. All your inquiries are stored in the "Inquiries" section of Refinery should you ever want to view it later there. + closing_line: Kind Regards + ps: P.S. All your inquiries are stored in the "Inquiries" section of Refinery should you ever want to view it later there. activerecord: models: - inquiry: inquiry + refinery: + inquiry: inquiry attributes: - inquiry: - name: Name - email: Email - phone: Phone - message: Message + refinery: + inquiry: + name: Name + email: Email + phone: Phone + message: Message diff --git a/config/routes.rb b/config/routes.rb index 47311356..91037678 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,23 +1,25 @@ Refinery::Application.routes.draw do - get '/contact', :to => 'inquiries#new', :as => 'new_inquiry' - resources :contact, - :only => :create, - :as => :inquiries, - :controller => 'inquiries' do - collection do - get :thank_you - end - end - - scope(:path => 'refinery', :as => 'admin', :module => 'admin') do - resources :inquiries, :only => [:index, :show, :destroy] do + scope(:module => 'refinery') do + get '/contact', :to => 'inquiries#new', :as => 'new_inquiry' + resources :contact, + :only => :create, + :as => :inquiries, + :controller => 'inquiries' do collection do - get :spam + get :thank_you end - member do - get :toggle_spam + end + + scope(:path => 'refinery', :as => 'refinery_admin', :module => 'admin') do + resources :inquiries, :only => [:index, :show, :destroy] do + collection do + get :spam + end + member do + get :toggle_spam + end end + resources :inquiry_settings, :only => [:edit, :update] end - resources :inquiry_settings, :only => [:edit, :update] end end diff --git a/db/migrate/20101208082840_create_inquiries.rb b/db/migrate/20101208082840_create_inquiries.rb index d8545492..eed7362d 100644 --- a/db/migrate/20101208082840_create_inquiries.rb +++ b/db/migrate/20101208082840_create_inquiries.rb @@ -1,7 +1,7 @@ class CreateInquiries < ActiveRecord::Migration - def self.up - unless ::Inquiry.table_exists? - create_table ::Inquiry.table_name, :force => true do |t| + def up + unless ::Refinery::Inquiry.table_exists? + create_table ::Refinery::Inquiry.table_name, :force => true do |t| t.string "name" t.string "email" t.string "phone" @@ -13,30 +13,30 @@ def self.up t.boolean "spam", :default => false end - add_index ::Inquiry.table_name, :id + add_index ::Refinery::Inquiry.table_name, :id end # todo: remove at 1.0 - create_table ::InquirySetting.table_name, :force => true do |t| + create_table ::Refinery::InquirySetting.table_name, :force => true do |t| t.string "name" t.text "value" t.boolean "destroyable" t.datetime "created_at" t.datetime "updated_at" - end unless ::InquirySetting.table_exists? + end unless ::Refinery::InquirySetting.table_exists? - ::Page.reset_column_information if defined?(::Page) + ::Refinery::Page.reset_column_information if defined?(::Refinery::Page) load(Rails.root.join('db', 'seeds', 'pages_for_inquiries.rb').to_s) end - def self.down - drop_table ::Inquiry.table_name + def down + drop_table ::Refinery::Inquiry.table_name # todo: remove at 1.0 - drop_table ::InquirySetting.table_name + drop_table ::Refinery::InquirySetting.table_name - ::Page.delete_all({ + ::Refinery::Page.delete_all({ :link_url => ("/contact" || "/contact/thank_you") - }) if defined?(::Page) + }) if defined?(::Refinery::Page) end end \ No newline at end of file diff --git a/db/migrate/20101208082841_remove_position_and_open_from_inquiries.rb b/db/migrate/20101208082841_remove_position_and_open_from_inquiries.rb index 3b23048a..65c1f15e 100644 --- a/db/migrate/20101208082841_remove_position_and_open_from_inquiries.rb +++ b/db/migrate/20101208082841_remove_position_and_open_from_inquiries.rb @@ -1,11 +1,11 @@ class RemovePositionAndOpenFromInquiries < ActiveRecord::Migration - def self.up - remove_column :inquiries, :position - remove_column :inquiries, :open + def up + remove_column ::Refinery::Inquiry.table_name, :position + remove_column ::Refinery::Inquiry.table_name, :open end - def self.down - add_column :inquiries, :position, :integer - add_column :inquiries, :open, :boolean, :default => true + def down + add_column ::Refinery::Inquiry.table_name, :position, :integer + add_column ::Refinery::Inquiry.table_name, :open, :boolean, :default => true end end diff --git a/db/seeds/pages_for_inquiries.rb b/db/seeds/pages_for_inquiries.rb index f3c650ec..c5c95826 100644 --- a/db/seeds/pages_for_inquiries.rb +++ b/db/seeds/pages_for_inquiries.rb @@ -1,14 +1,14 @@ -::User.find(:all).each do |user| +::Refinery::User.find(:all).each do |user| if user.plugins.where(:name => 'refinery_inquiries').blank? user.plugins.create(:name => "refinery_inquiries", :position => (user.plugins.maximum(:position) || -1) +1) end -end if defined?(::User) +end if defined?(::Refinery::User) -if defined?(::Page) - page_position = (::Page.maximum(:position, :conditions => {:parent_id => nil}) || -1) +if defined?(::Refinery::Page) + page_position = (::Refinery::Page.maximum(:position, :conditions => {:parent_id => nil}) || -1) - contact_us_page = ::Page.create({ + contact_us_page = ::Refinery::Page.create({ :title => "Contact", :link_url => "/contact", :menu_match => "^/(inquiries|contact).*$", diff --git a/features/support/factories.rb b/features/support/factories.rb index c5b58423..3581e734 100644 --- a/features/support/factories.rb +++ b/features/support/factories.rb @@ -1,6 +1,6 @@ require 'factory_girl' -Factory.define :inquiry do |i| +Factory.define :inquiry, :class => Refinery::Inquiry do |i| i.name "Refinery" i.email "refinery@cms.com" i.message "Hello..." diff --git a/lib/refinerycms-inquiries.rb b/lib/refinerycms-inquiries.rb index 45012dfd..e60e1ea2 100644 --- a/lib/refinerycms-inquiries.rb +++ b/lib/refinerycms-inquiries.rb @@ -3,18 +3,21 @@ module Refinery module Inquiries class Engine < Rails::Engine + isolate_namespace Refinery + config.to_prepare do require 'filters_spam' end - config.after_initialize do + initializer "init plugin", :after => :set_routes_reloader do |app| Refinery::Plugin.register do |plugin| plugin.pathname = root plugin.name = "refinery_inquiries" plugin.directory = "inquiries" plugin.menu_match = /(refinery|admin)\/inquir(ies|y_settings)$/ + plugin.url = app.routes.url_helpers.refinery_admin_inquiries_path plugin.activity = { - :class => InquirySetting, + :class => Refinery::InquirySetting, :title => 'name' } end diff --git a/spec/models/inquiry_spec.rb b/spec/models/inquiry_spec.rb deleted file mode 100644 index cde968bb..00000000 --- a/spec/models/inquiry_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'spec_helper' - -Dir[File.expand_path('../../../features/support/factories.rb', __FILE__)].each {|f| require f} - -describe Inquiry do - describe "validations" do - before(:each) do - @attr = { - :name => "rspec", - :email => "rspec@refinery.com", - :message => "test" - } - end - - it "rejects empty name" do - Inquiry.new(@attr.merge(:name => "")).should_not be_valid - end - - it "rejects empty message" do - Inquiry.new(@attr.merge(:message => "")).should_not be_valid - end - - it "rejects invalid email format" do - ["", "@refinerycms.com", "refinery@cms", "refinery@cms.123"].each do |email| - Inquiry.new(@attr.merge(:email => email)).should_not be_valid - end - end - end - - describe "default scope" do - it "orders by created_at in desc" do - inquiry1 = Factory(:inquiry, :created_at => 1.hour.ago) - inquiry2 = Factory(:inquiry, :created_at => 2.hours.ago) - inquiries = Inquiry.all - inquiries.first.should == inquiry1 - inquiries.second.should == inquiry2 - end - end - - describe ".latest" do - it "returns latest 7 non-spam inquiries by default" do - 8.times { Factory(:inquiry) } - Inquiry.last.toggle!(:spam) - Inquiry.latest.length.should == 7 - end - - it "returns latest 7 inquiries including spam ones" do - 4.times { Factory(:inquiry) } - 3.times { Factory(:inquiry) } - Inquiry.all[0..2].each { |inquiry| inquiry.toggle!(:spam) } - Inquiry.latest(7, true).length.should == 7 - end - - it "returns latest n inquiries" do - 4.times { Factory(:inquiry) } - Inquiry.latest(3).length.should == 3 - end - end -end diff --git a/spec/models/refinery/inquiry_spec.rb b/spec/models/refinery/inquiry_spec.rb new file mode 100644 index 00000000..4ded857d --- /dev/null +++ b/spec/models/refinery/inquiry_spec.rb @@ -0,0 +1,61 @@ +require 'spec_helper' + +require File.expand_path('../../../../features/support/factories.rb', __FILE__) + +module Refinery + describe Inquiry do + describe "validations" do + before(:each) do + @attr = { + :name => "rspec", + :email => "rspec@refinery.com", + :message => "test" + } + end + + it "rejects empty name" do + Inquiry.new(@attr.merge(:name => "")).should_not be_valid + end + + it "rejects empty message" do + Inquiry.new(@attr.merge(:message => "")).should_not be_valid + end + + it "rejects invalid email format" do + ["", "@refinerycms.com", "refinery@cms", "refinery@cms.123"].each do |email| + Inquiry.new(@attr.merge(:email => email)).should_not be_valid + end + end + end + + describe "default scope" do + it "orders by created_at in desc" do + inquiry1 = Factory(:inquiry, :created_at => 1.hour.ago) + inquiry2 = Factory(:inquiry, :created_at => 2.hours.ago) + inquiries = Inquiry.all + inquiries.first.should == inquiry1 + inquiries.second.should == inquiry2 + end + end + + describe ".latest" do + it "returns latest 7 non-spam inquiries by default" do + 8.times { Factory(:inquiry) } + Inquiry.last.toggle!(:spam) + Inquiry.latest.length.should == 7 + end + + it "returns latest 7 inquiries including spam ones" do + 4.times { Factory(:inquiry) } + 3.times { Factory(:inquiry) } + Inquiry.all[0..2].each { |inquiry| inquiry.toggle!(:spam) } + Inquiry.latest(7, true).length.should == 7 + end + + it "returns latest n inquiries" do + 4.times { Factory(:inquiry) } + Inquiry.latest(3).length.should == 3 + end + end + end +end