refinerycms-contacts 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/Gemfile +73 -0
  2. data/Guardfile +27 -0
  3. data/LICENSE.md +8 -0
  4. data/Rakefile +20 -0
  5. data/app/assets/javascripts/refinery/contacts/admin/contacts.js +17 -0
  6. data/app/assets/javascripts/refinery/contacts/admin/jquery.chosen.min.js +10 -0
  7. data/app/assets/javascripts/refinery/contacts/contacts.js +23 -0
  8. data/app/assets/stylesheets/refinery/contacts/admin/chosen.css.scss +396 -0
  9. data/app/assets/stylesheets/refinery/contacts/contacts.css.scss +79 -0
  10. data/app/controllers/refinery/contacts/admin/contacts_controller.rb +14 -0
  11. data/app/controllers/refinery/contacts/mail_messages_controller.rb +26 -0
  12. data/app/helpers/refinery/contacts/admin/contacts_helper.rb +18 -0
  13. data/app/mailers/refinery/contacts/contact_mailer.rb +15 -0
  14. data/app/models/refinery/contact_page.rb +11 -0
  15. data/app/models/refinery/contacts/contact.rb +18 -0
  16. data/app/models/refinery/contacts/mail.rb +13 -0
  17. data/app/models/refinery/contacts/mail_message.rb +15 -0
  18. data/app/models/refinery/contacts/table_less_model.rb +23 -0
  19. data/app/sweepers/refinery/contacts/admin/contact_sweeper.rb +22 -0
  20. data/app/views/refinery/admin/pages/tabs/contacts/_contacts.html.erb +12 -0
  21. data/app/views/refinery/admin/pages/tabs/contacts/_contacts_bar.html.erb +4 -0
  22. data/app/views/refinery/admin/pages/tabs/contacts/_form.html.erb +24 -0
  23. data/app/views/refinery/contacts/admin/contacts/_actions.html.erb +25 -0
  24. data/app/views/refinery/contacts/admin/contacts/_contact.html.erb +17 -0
  25. data/app/views/refinery/contacts/admin/contacts/_contacts.html.erb +2 -0
  26. data/app/views/refinery/contacts/admin/contacts/_form.html.erb +93 -0
  27. data/app/views/refinery/contacts/admin/contacts/_mail_fields.html.erb +7 -0
  28. data/app/views/refinery/contacts/admin/contacts/_records.html.erb +18 -0
  29. data/app/views/refinery/contacts/admin/contacts/_sortable_list.html.erb +5 -0
  30. data/app/views/refinery/contacts/admin/contacts/edit.html.erb +1 -0
  31. data/app/views/refinery/contacts/admin/contacts/index.html.erb +7 -0
  32. data/app/views/refinery/contacts/admin/contacts/new.html.erb +1 -0
  33. data/app/views/refinery/contacts/contact_mailer/contact_form.html.erb +1 -0
  34. data/app/views/refinery/contacts/contact_mailer/contact_form.text.erb +1 -0
  35. data/app/views/refinery/contacts/contacts/_error_info.html.erb +15 -0
  36. data/app/views/refinery/contacts/contacts/_form.html.erb +47 -0
  37. data/app/views/refinery/contacts/contacts/_show.html.erb +50 -0
  38. data/app/views/refinery/contacts/contacts/_success_info.html.erb +8 -0
  39. data/changelog.md +2 -0
  40. data/config/initializers/recaptcha.rb +5 -0
  41. data/config/initializers/refinery/core.rb +4 -0
  42. data/config/locales/en.yml +80 -0
  43. data/config/locales/sk.yml +80 -0
  44. data/config/routes.rb +23 -0
  45. data/db/migrate/1_create_contacts_contacts.rb +36 -0
  46. data/db/migrate/2_create_contacts_mails.rb +17 -0
  47. data/db/migrate/3_create_contact_pages.rb +20 -0
  48. data/db/migrate/4_add_homepage_to_contacts.rb +11 -0
  49. data/db/seeds.rb +13 -0
  50. data/lib/generators/refinery/contacts_generator.rb +28 -0
  51. data/lib/generators/refinery/templates/config/initializers/recaptcha.rb.erb +7 -0
  52. data/lib/generators/refinery/templates/config/initializers/refinery/contacts.rb.erb +4 -0
  53. data/lib/refinery/contacts.rb +23 -0
  54. data/lib/refinery/contacts/configuration.rb +10 -0
  55. data/lib/refinery/contacts/engine.rb +44 -0
  56. data/lib/refinery/contacts/extensions/pages_extension.rb +40 -0
  57. data/lib/refinery/contacts/version.rb +17 -0
  58. data/lib/refinerycms-contacts.rb +1 -0
  59. data/lib/tasks/refinery/contacts.rake +13 -0
  60. data/readme.md +170 -0
  61. data/refinerycms-contacts.gemspec +27 -0
  62. data/script/rails +10 -0
  63. data/spec/models/refinery/contacts/contact_spec.rb +18 -0
  64. data/spec/models/refinery/contacts/mail_spec.rb +18 -0
  65. data/spec/requests/refinery/contacts/admin/contacts_spec.rb +101 -0
  66. data/spec/requests/refinery/contacts/admin/mails_spec.rb +101 -0
  67. data/spec/spec_helper.rb +55 -0
  68. data/spec/support/factories/refinery/contacts.rb +7 -0
  69. data/spec/support/factories/refinery/mails.rb +7 -0
  70. data/tasks/rspec.rake +6 -0
  71. data/tasks/testing.rake +8 -0
  72. metadata +147 -0
@@ -0,0 +1,7 @@
1
+ <div class='field'>
2
+ <%= f.label :mail %>
3
+ <%= f.text_field :mail %>
4
+
5
+ <%= f.hidden_field :_destroy %>
6
+ <%= link_to t('.remove'), '#', :class=>"remove_fields" %>
7
+ </div>
@@ -0,0 +1,18 @@
1
+ <% if searching? %>
2
+ <h2><%= t('results_for', :scope => 'refinery.admin.search', :query => params[:search]) %></h2>
3
+ <% end %>
4
+ <div class='pagination_container'>
5
+ <% if @contacts.any? %>
6
+ <%= render 'contacts' %>
7
+ <% else %>
8
+ <p>
9
+ <% unless searching? %>
10
+ <strong>
11
+ <%= t('.no_items_yet') %>
12
+ </strong>
13
+ <% else %>
14
+ <%= t('no_results', :scope => 'refinery.admin.search') %>
15
+ <% end %>
16
+ </p>
17
+ <% end %>
18
+ </div>
@@ -0,0 +1,5 @@
1
+ <ul id='sortable_list'>
2
+ <%= render :partial => 'contact', :collection => @contacts %>
3
+ </ul>
4
+ <%= render '/refinery/admin/sortable_list',
5
+ :continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true %>
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,7 @@
1
+ <section id='records'>
2
+ <%= render 'records' %>
3
+ </section>
4
+ <aside id='actions'>
5
+ <%= render 'actions' %>
6
+ </aside>
7
+ <%= render '/refinery/admin/make_sortable', :tree => false if !searching? and ::Refinery::Contacts::Admin::ContactsController.sortable? and ::Refinery::Contacts::Contact.count > 1 %>
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1 @@
1
+ <%= @mail_message.text %>
@@ -0,0 +1 @@
1
+ <%= @mail_message.text %>
@@ -0,0 +1,15 @@
1
+ <% if flash[:mail_message] # Rendering errors %>
2
+ <div class="errorExplanation" id="errorExplanation">
3
+ <p><%= t('.problems_in_following_fields') %>:</p>
4
+ <ul>
5
+ <% unless Refinery::Contacts.client_side_validations %>
6
+ <% flash[:mail_message].errors.full_messages.each do |value| %>
7
+ <li><%= value %></li>
8
+ <% end %>
9
+ <% end %>
10
+ <% if flash[:recaptcha_error].present? %>
11
+ <li><%= t("recaptcha.errors.#{flash[:recaptcha_error]}") %></li>
12
+ <% end %>
13
+ </ul>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,47 @@
1
+ <% if @page.mails.present? %>
2
+ <%= form_for (flash[:mail_message].present?) ? flash[:mail_message] : Refinery::Contacts::MailMessage.new ,
3
+ :url=> deliver_contacts_mail_messages_path,
4
+ :validate => true do |f| %>
5
+
6
+ <%= render 'refinery/contacts/contacts/success_info' %>
7
+ <%= render 'refinery/contacts/contacts/error_info' %>
8
+
9
+
10
+ <div class="field ">
11
+ <%= f.label :recipient_id %>
12
+ <%= f.collection_select :recipient_id, @page.mails, :id, :mail, {:prompt=> true} %>
13
+ </div>
14
+
15
+
16
+ <div class="field ">
17
+ <%= f.label :name %>
18
+ <%= f.text_field :name %>
19
+ </div>
20
+
21
+ <div class="field ">
22
+ <%= f.label :sender_mail %>
23
+ <%= f.text_field :sender_mail %>
24
+ </div>
25
+
26
+ <div class="field ">
27
+ <%= f.label :subject %>
28
+ <%= f.text_field :subject%>
29
+ </div>
30
+
31
+ <div class="field ">
32
+ <%= f.label :text %>
33
+ <%= f.text_area :text, :rows=>"7", :cols=>"55" %>
34
+ </div>
35
+
36
+ <div class="field ">
37
+ <%= f.label t('.antispam') %>
38
+ <%= recaptcha_tags %>
39
+ </div>
40
+
41
+ <div class="field">
42
+ <%= f.label " " %>
43
+ <%= f.submit t('.submit') %>
44
+ </div>
45
+ <% end %>
46
+
47
+ <% end %>
@@ -0,0 +1,50 @@
1
+ <%# cache "refinery/contacts/contact/#{@page.contact.id}" do # Because of flash error rendering, caching is now commented %>
2
+ <% if @page.contact.present? %>
3
+ <% if @page.contact_page.contact_info %>
4
+ <% if @page.contact.company.present? %>
5
+ <strong><%= @page.contact.company %></strong><br/>
6
+ <% end %>
7
+
8
+ <% if @page.contact.street.present? %>
9
+ <%= @page.contact.street %><br/>
10
+ <% end %>
11
+
12
+ <% if @page.contact.city.present? %>
13
+ <%= @page.contact.city %> <%= @page.contact.zip_code %><br>
14
+ <% end %>
15
+
16
+ <% if @page.contact.province.present? %>
17
+ <%= @page.contact.province %><br/>
18
+ <% end %>
19
+
20
+ <% if @page.contact.country.present? %>
21
+ <%= @page.contact.country %><br/>
22
+ <% end %>
23
+
24
+ <br/>
25
+ <% if @page.contact.homepage.present? %>
26
+ <strong><%= t('.web') %></strong>
27
+ <%= link_to @page.contact.homepage, @page.contact.homepage, :target=>"_blank" %><br/>
28
+ <% end %>
29
+
30
+ <% if @page.contact.tel1.present? || @page.contact.tel2.present? || @page.contact.tel3.present? %>
31
+ <strong><%= t('.tel') %></strong>
32
+ <%= [@page.contact.tel1 , @page.contact.tel2, @page.contact.tel3 ].reject{|c| c.empty?}.join(' , ') %><br>
33
+ <% end %>
34
+
35
+ <% if @page.contact.fax.present? %>
36
+ <strong><%= t('.fax') %></strong>
37
+ <%= @page.contact.fax %><br/>
38
+ <% end %>
39
+ <% end %>
40
+
41
+ <%= render :partial=> 'refinery/contacts/contacts/form' %>
42
+ <% end %>
43
+
44
+
45
+
46
+
47
+
48
+ <%# end %>
49
+
50
+
@@ -0,0 +1,8 @@
1
+ <% if flash[:notice] # Success %>
2
+ <div id="flash_container">
3
+ <div id="flash" class="flash flash_notice" style='visibility: hidden;' >
4
+ <%= flash[:notice] %>
5
+ <%= link_to t("refinery.message.close_this_message"), "", :id => "flash_close" %>
6
+ </div>
7
+ </div>
8
+ <% end %>
data/changelog.md ADDED
@@ -0,0 +1,2 @@
1
+ ## 0.1.0 [21 December 2012]
2
+ * initial commit
@@ -0,0 +1,5 @@
1
+ Recaptcha.configure do |config|
2
+ config.public_key = ''
3
+ config.private_key = ''
4
+ config.proxy = ''
5
+ end
@@ -0,0 +1,4 @@
1
+ Refinery::Core.configure do |config|
2
+ # Register extra javascript for backend
3
+ config.register_javascript "refinery/contacts/admin/contacts.js"
4
+ end
@@ -0,0 +1,80 @@
1
+ en:
2
+ refinery:
3
+ plugins:
4
+ contacts:
5
+ title: Contacts
6
+ tab_name: Contact form
7
+ admin:
8
+ pages:
9
+ tabs:
10
+ contacts:
11
+ form:
12
+ show_contact_info: Show contact informations
13
+ contact_info_help: Show contact informations like company title, adress, telephone number ...
14
+ show_contact_form_for: Show contact form for
15
+ choose_contact: Click to choose contact
16
+ contacts:
17
+ admin:
18
+ contacts:
19
+ mail_fields:
20
+ remove: remove
21
+ form:
22
+ add_mail: Add e-mail
23
+ actions:
24
+ create_new: Add New Contact
25
+ reorder: Reorder Contacts
26
+ reorder_done: Done Reordering Contacts
27
+ records:
28
+ title: Contacts
29
+ sorry_no_results: Sorry! There are no results found.
30
+ no_items_yet: There are no Contacts yet. Click "Add New Contact" to add your first contact.
31
+ contact:
32
+ view_live_html: View this contact live <br/><em>(opens in a new window)</em>
33
+ edit: Edit this contact
34
+ delete: Remove this contact forever
35
+ contacts:
36
+ flash:
37
+ successfull_delivery: E-mail was send successfully.
38
+ show:
39
+ web: 'Web:'
40
+ tel: 'Tel.:'
41
+ fax: 'Fax:'
42
+ form:
43
+ submit: Send
44
+ antispam: Antispam
45
+ error_info:
46
+ problems_in_following_fields: Problems in following fields
47
+ activerecord:
48
+ attributes:
49
+ refinery/contact_page:
50
+ contact_info: Contact information
51
+ refinery/contacts/mail:
52
+ mail: E-mail
53
+ refinery/contacts/contact:
54
+ title: Title
55
+ street: Street
56
+ city: City
57
+ zip_code: Zip Code
58
+ province: Province
59
+ country: Country
60
+ tel1: Tel1
61
+ tel2: Tel2
62
+ tel3: Tel3
63
+ fax: Fax
64
+ company: Company
65
+ homepage: Homepage (starts with http://)
66
+
67
+ activemodel:
68
+ attributes:
69
+ refinery/contacts/mail_message:
70
+ recipient_id: Recipient
71
+ name: Name
72
+ subject: Subject
73
+ text: Text
74
+ sender_mail: Your e-mail
75
+ recaptcha:
76
+ errors:
77
+ incorrect-captcha-sol: Captcha code is incorrect
78
+ verification_failed: Captcha code is incorrect
79
+ recaptcha_unavailable: Captcha verification failed. Please try again.
80
+ recaptcha-not-reachable: Captcha verification failed. Please try again.
@@ -0,0 +1,80 @@
1
+ sk:
2
+ refinery:
3
+ plugins:
4
+ contacts:
5
+ title: Kontakty
6
+ tab_name: Kontaktný formulár
7
+ admin:
8
+ pages:
9
+ tabs:
10
+ contacts:
11
+ form:
12
+ show_contact_info: Zobraziť kontaktné informácie
13
+ contact_info_help: Zobrazí na stránke informácie ako názov spoločnosti, telefónny kontakt, adresa a pod.
14
+ show_contact_form_for: Zobraziť kontaktný formulár pre
15
+ choose_contact: Kliknite pre výber kontaktu
16
+ contacts:
17
+ admin:
18
+ contacts:
19
+ mail_fields:
20
+ remove: odstrániť
21
+ form:
22
+ add_mail: Pridať e-mail
23
+ actions:
24
+ create_new: Pridať kontakt
25
+ reorder: Preusporiadať kontakty
26
+ reorder_done: Uložiť usporiadanie kontaktov
27
+ records:
28
+ title: Kontakty
29
+ sorry_no_results: Ľutujeme, ale neboli nájdené žiadne výsledky.
30
+ no_items_yet: Nie sú vytvorené žiadne kontakty. Kliknite na "Pridať kontakt" pre pridanie prvého kontaktu.
31
+ contact:
32
+ view_live_html: Zobraziť náhľad kontaktu<br/><em>(otvorí sa v novom okne)</em>
33
+ edit: Upraviť kontakt
34
+ delete: Zmazať kontakt
35
+ contacts:
36
+ flash:
37
+ successfull_delivery: E-mail bol úspešne odoslaný.
38
+ show:
39
+ web: 'Web:'
40
+ tel: 'Tel.:'
41
+ fax: 'Fax:'
42
+ form:
43
+ submit: Odoslať
44
+ antispam: Antispam
45
+ error_info:
46
+ problems_in_following_fields: Vyskytli sa nasledovné problémy
47
+ activerecord:
48
+ attributes:
49
+ refinery/contact_page:
50
+ contact_info: Kontaktné informácie
51
+ refinery/contacts/mail:
52
+ mail: E-mail
53
+ refinery/contacts/contact:
54
+ title: Názov
55
+ street: Ulica
56
+ city: Mesto
57
+ zip_code: PSČ
58
+ province: Provincia
59
+ country: Štát
60
+ tel1: Tel. č1
61
+ tel2: Tel. č2
62
+ tel3: Tel. č3
63
+ fax: Fax
64
+ company: Spoločnosť
65
+ homepage: Webová stránka (začína http://)
66
+
67
+ activemodel:
68
+ attributes:
69
+ refinery/contacts/mail_message:
70
+ recipient_id: Adresát
71
+ name: Meno
72
+ subject: Predmet
73
+ text: Text
74
+ sender_mail: Váš e-mail
75
+ recaptcha:
76
+ errors:
77
+ incorrect-captcha-sol: Captcha kód je zadaný nesprávne
78
+ verification_failed: Captcha kód je zadaný nesprávne
79
+ recaptcha_unavailable: Nepodarilo sa verifikovať captchu. Skúste odoslať formulár opäť.
80
+ recaptcha-not-reachable: Nepodarilo sa verifikovať captchu. Skúste odoslať formulár opäť.
data/config/routes.rb ADDED
@@ -0,0 +1,23 @@
1
+ Refinery::Core::Engine.routes.append do
2
+
3
+ # Frontend routes
4
+ namespace :contacts, :path => '' do
5
+ resources :mail_messages, :only => :deliver do
6
+ collection do
7
+ post :deliver, :as => :deliver
8
+ end
9
+ end
10
+ end
11
+
12
+ # Admin routes
13
+ namespace :contacts, :path => '' do
14
+ namespace :admin, :path => 'refinery' do
15
+ resources :contacts, :except => :show do
16
+ collection do
17
+ post :update_positions
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,36 @@
1
+ class CreateContactsContacts < ActiveRecord::Migration
2
+
3
+ def up
4
+ create_table :refinery_contacts do |t|
5
+ t.string :title
6
+ t.string :company
7
+ t.string :street
8
+ t.string :city
9
+ t.string :zip_code
10
+ t.string :province
11
+ t.string :country
12
+ t.string :tel1
13
+ t.string :tel2
14
+ t.string :tel3
15
+ t.string :fax
16
+ t.integer :position
17
+
18
+ t.timestamps
19
+ end
20
+
21
+ end
22
+
23
+ def down
24
+ if defined?(::Refinery::UserPlugin)
25
+ ::Refinery::UserPlugin.destroy_all({:name => "refinerycms-contacts"})
26
+ end
27
+
28
+ if defined?(::Refinery::Page)
29
+ ::Refinery::Page.delete_all({:link_url => "/contacts/contacts"})
30
+ end
31
+
32
+ drop_table :refinery_contacts
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,17 @@
1
+ class CreateContactsMails < ActiveRecord::Migration
2
+
3
+ def up
4
+ create_table :refinery_contacts_mails do |t|
5
+ t.integer :contact_id
6
+ t.string :mail
7
+ end
8
+ add_index :refinery_contacts_mails, :contact_id
9
+
10
+ end
11
+
12
+ def down
13
+ remove_index :refinery_contacts_mails , :contact_id
14
+ drop_table :refinery_contacts_mails
15
+
16
+ end
17
+ end