rails_admin_cms 0.0.7 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -1
- data/app/assets/javascripts/rails_admin_cms/cms.js.coffee +4 -0
- data/app/controllers/cms/mailchimp_controller.rb +24 -0
- data/app/controllers/cms/pages_controller.rb +4 -2
- data/app/controllers/cms/viewables_controller.rb +2 -0
- data/app/controllers/concerns/cms/rescue.rb +1 -0
- data/app/helpers/cms/viewable_helper.rb +6 -1
- data/app/models/admin/viewable/string.rb +15 -0
- data/app/models/viewable/string.rb +6 -0
- data/app/views/cms/mailchimp/subscribe.js.erb +1 -0
- data/app/views/cms/shared/_flash_messages.js.erb +1 -1
- data/app/views/cms/shared/_mailchimp.html.erb +7 -0
- data/config/locales/flash.en.yml +4 -0
- data/config/locales/flash.fr.yml +4 -0
- data/config/locales/simple_form.en.yml +5 -0
- data/config/locales/simple_form.fr.yml +5 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20160201181310_create_viewable_string.rb +9 -0
- data/lib/rails_admin_cms/utils.rb +3 -0
- data/lib/rails_admin_cms/version.rb +1 -1
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf5853464f21749a2648751253c62546a51ccb93
|
4
|
+
data.tar.gz: 57179f31f7a558b898a255a64ad0b51fab8ceb00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3ef20bac7f0ce1bde7fb9ab5012113e7c5de0429037bf73a2321a701c8a98025e7855d8ea48193f5b52f4757db47ca4d7d60cea7026e8280838c23854672ea8
|
7
|
+
data.tar.gz: 75ee89c13537b749efc125c3ab885f2f6bae8cfdf58de6c9bab08d755ca7df991e8e5068d93e1182b9e5e230e2c739a59da86f7155dfa8ac592cea9e8f00359c
|
data/README.md
CHANGED
@@ -47,6 +47,19 @@ What's going on:
|
|
47
47
|
1. `cms_link_to_edit_mode`
|
48
48
|
1. `current_admin?`
|
49
49
|
|
50
|
+
## Mailchimp
|
51
|
+
|
52
|
+
First, `mailchimp_api_key` and `mailchimp_list_id_en` (and `mailchimp_list_id_xx` where `xx` is the locale) need to be defined within `config/secrets.yml`.
|
53
|
+
Then, use the partial `app/views/cms/shared/_mailchimp.html.erb` to output the mailchimp form:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
<%= render 'cms/shared/mailchimp' %>
|
57
|
+
```
|
58
|
+
|
59
|
+
1. Flash messages could be overriden by the keys `flash_messages.mailchimp.subscribe.(success|error)`.
|
60
|
+
1. Input placeholder could be overriden by the key `simple_form.placeholders.mailchimp.email`.
|
61
|
+
1. Input and submit button are wrapper in a div tag with the class `cms-mailchimp`.
|
62
|
+
|
50
63
|
## TODO
|
51
64
|
|
52
65
|
* Documentation
|
@@ -57,7 +70,6 @@ What's going on:
|
|
57
70
|
* Link to image edit in edit form (for cropping)
|
58
71
|
* Confirmation email for forms
|
59
72
|
* Published Pages/Forms
|
60
|
-
* Mailchimp integration
|
61
73
|
* Redirector
|
62
74
|
* Setting fetched from Yaml file
|
63
75
|
* Pretty Url for Viewable::LinkPresenter#url as file_url
|
@@ -12,6 +12,7 @@ class CMS
|
|
12
12
|
@ready =>
|
13
13
|
@clear_event_handlers()
|
14
14
|
@flash_messages()
|
15
|
+
@validate_mailchimp()
|
15
16
|
|
16
17
|
@ready_with_scope 'cms-forms', =>
|
17
18
|
@validate()
|
@@ -45,6 +46,9 @@ class CMS
|
|
45
46
|
@validate: =>
|
46
47
|
$.validate(validateOnBlur: false)
|
47
48
|
|
49
|
+
@validate_mailchimp: =>
|
50
|
+
$.validate(form: '#mailchimp_form', validateOnBlur: false)
|
51
|
+
|
48
52
|
@with_scope_any: (body_classes..., handler) =>
|
49
53
|
for body_class in body_classes
|
50
54
|
if @with_scope(body_class, handler)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CMS
|
2
|
+
class MailchimpController < RailsAdminCMS::Config.parent_controller
|
3
|
+
invisible_captcha only: [:subscribe]
|
4
|
+
|
5
|
+
def subscribe
|
6
|
+
respond_to do |format|
|
7
|
+
format.js do
|
8
|
+
begin
|
9
|
+
gb = Gibbon::API.new(Rails.application.secrets.mailchimp_api_key, { timeout: 15 })
|
10
|
+
gb.lists.subscribe(
|
11
|
+
id: Rails.application.secrets.send(:"mailchimp_list_id_#{I18n.locale}"),
|
12
|
+
email: { email: params[:mailchimp][:email] },
|
13
|
+
double_optin: false
|
14
|
+
)
|
15
|
+
flash_now!(:success)
|
16
|
+
rescue Gibbon::MailChimpError => exception
|
17
|
+
cms_logger exception, 'mailchimp'
|
18
|
+
flash_now!(:error)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module CMS
|
2
2
|
class PagesController < RailsAdminCMS::Config.parent_controller
|
3
|
-
after_action :allow_iframe
|
3
|
+
after_action :allow_iframe
|
4
4
|
|
5
5
|
def show
|
6
6
|
@cms_view = Viewable::Page.find(params[:id]) if params[:id].present?
|
@@ -15,7 +15,9 @@ module CMS
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def allow_iframe
|
18
|
-
|
18
|
+
if RailsAdminCMS::Config.allow_iframe_from.present?
|
19
|
+
response.headers['X-FRAME-OPTIONS'] = RailsAdminCMS::Config.allow_iframe_from
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -2,6 +2,7 @@ module CMS
|
|
2
2
|
class ViewablesController < RailsAdminCMS::Config.parent_controller
|
3
3
|
before_action :authenticate_admin_user!
|
4
4
|
|
5
|
+
# used by the add viewable link
|
5
6
|
def create
|
6
7
|
current_count = UniqueKey.where(list_key_params).count
|
7
8
|
|
@@ -22,6 +23,7 @@ module CMS
|
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
26
|
+
# used by [data-js-cms-sortable] element to modify the viewable position within the list
|
25
27
|
def update
|
26
28
|
unique_key = UniqueKey.find(params[:id])
|
27
29
|
|
@@ -11,7 +11,7 @@ module CMS
|
|
11
11
|
::Naming::Viewable::Block.names.each do |type|
|
12
12
|
define_cms_view_helper(type)
|
13
13
|
|
14
|
-
define_method "cms_#{type}" do |name = 'cms', min = 1, max = nil|
|
14
|
+
define_method "cms_#{type}" do |name = 'cms', min = 1, max = nil|
|
15
15
|
name, min, max = adjust_arguments(name, min, max)
|
16
16
|
|
17
17
|
cms_block("#{type}/#{name}", min, max)
|
@@ -21,6 +21,11 @@ module CMS
|
|
21
21
|
::Naming::Viewable.names.each do |type|
|
22
22
|
define_cms_view_helper(type)
|
23
23
|
|
24
|
+
# access a Viewable within the current context
|
25
|
+
# name(optional):
|
26
|
+
# min (optional): defines how many viewables are created by default
|
27
|
+
# max (optional): defines the limit of viewables that could added (must be greater than min)
|
28
|
+
# * if min = 1, then a single ViewablePresenter is returned, otherwise, a ViewablePresenterList is returned
|
24
29
|
define_method "cms_#{type}" do |name = 'cms', min = 1, max = nil| # max = FLOAT::INFINITY
|
25
30
|
name, min, max = adjust_arguments(name, min, max)
|
26
31
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'cms/shared/flash_messages' %>
|
@@ -1,2 +1,2 @@
|
|
1
|
-
CMS.
|
1
|
+
CMS.data_js('cms-flash').replaceWith("<%= j cms_flash_messages %>");
|
2
2
|
CMS.flash_messages();
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= simple_form_for :mailchimp, url: main_app.mailchimp_url(format: :js), remote: true, html: { id: 'mailchimp_form' } do |f| %>
|
2
|
+
<%= invisible_captcha %>
|
3
|
+
<div class="cms-mailchimp">
|
4
|
+
<%= f.input :email, label: false, wrapper: false, input_html: cms_validate_email %>
|
5
|
+
<%= f.submit cms_form_send, cms_form_sending %>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
data/config/locales/flash.en.yml
CHANGED
@@ -18,6 +18,10 @@ en:
|
|
18
18
|
# error: "Something went wrong. Please take a look at the form to see what went wrong."
|
19
19
|
#
|
20
20
|
# Add flash messages for controller actions:
|
21
|
+
mailchimp:
|
22
|
+
subscribe:
|
23
|
+
success: Thanks for subscribing to our newsletter.
|
24
|
+
error: Sorry, an error happened (you might already be subscribed or your email is not valid).
|
21
25
|
# products:
|
22
26
|
# create:
|
23
27
|
# success: "This is a notification"
|
data/config/locales/flash.fr.yml
CHANGED
@@ -18,6 +18,10 @@ fr:
|
|
18
18
|
# error: "Something went wrong. Please take a look at the form to see what went wrong."
|
19
19
|
#
|
20
20
|
# Add flash messages for controller actions:
|
21
|
+
mailchimp:
|
22
|
+
subscribe:
|
23
|
+
success: Merci pour votre inscription à notre infolettre.
|
24
|
+
error: Désolé, une erreur est survenue (vous êtes peut-être déjà inscrit, veuillez vérifier votre boîte de courriels).
|
21
25
|
# products:
|
22
26
|
# create:
|
23
27
|
# success: "This is a notification"
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
scope module: 'cms' do
|
3
|
+
post 'mailchimp/subscribe' => 'mailchimp#subscribe', format: true, constraints: { format: :js }, as: :mailchimp
|
4
|
+
|
3
5
|
get 'viewables/new' => 'viewables#create', format: false, as: :new_viewable
|
4
6
|
post 'viewables/edit' => 'viewables#update', format: true, constraints: { format: :js }, as: :edit_viewable
|
5
7
|
|
@@ -8,18 +8,21 @@ module CMS
|
|
8
8
|
rb_names(dirname)
|
9
9
|
end
|
10
10
|
|
11
|
+
# list the ruby file names within a directory (ex.: used to get all viewable names)
|
11
12
|
def rb_names(dirname)
|
12
13
|
Dir["#{Rails.root}/#{dirname}/*.rb"].map do |name|
|
13
14
|
File.basename(name).sub(/\.rb$/, '')
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
18
|
+
# list the html file names within a directory (ex.: used to get all page templates)
|
17
19
|
def html_names(dirname)
|
18
20
|
Dir["#{Rails.root}/#{dirname}/*.html.*"].map do |name|
|
19
21
|
File.basename(name).sub(/\.html\..+$/, '').sub(/^_/, '')
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
25
|
+
# list the folder names within a directory (ex.: used to get all form models)
|
23
26
|
def dir_names(dirname)
|
24
27
|
Dir["#{Rails.root}/#{dirname}/*"].select{ |name|
|
25
28
|
File.directory? name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrice Lebel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -392,6 +392,20 @@ dependencies:
|
|
392
392
|
- - ">="
|
393
393
|
- !ruby/object:Gem::Version
|
394
394
|
version: 1.0.1
|
395
|
+
- !ruby/object:Gem::Dependency
|
396
|
+
name: gibbon
|
397
|
+
requirement: !ruby/object:Gem::Requirement
|
398
|
+
requirements:
|
399
|
+
- - "~>"
|
400
|
+
- !ruby/object:Gem::Version
|
401
|
+
version: '1.1'
|
402
|
+
type: :runtime
|
403
|
+
prerelease: false
|
404
|
+
version_requirements: !ruby/object:Gem::Requirement
|
405
|
+
requirements:
|
406
|
+
- - "~>"
|
407
|
+
- !ruby/object:Gem::Version
|
408
|
+
version: '1.1'
|
395
409
|
- !ruby/object:Gem::Dependency
|
396
410
|
name: paper_trail
|
397
411
|
requirement: !ruby/object:Gem::Requirement
|
@@ -660,6 +674,7 @@ files:
|
|
660
674
|
- app/controllers/cms/attachments_controller.rb
|
661
675
|
- app/controllers/cms/files_controller.rb
|
662
676
|
- app/controllers/cms/forms_controller.rb
|
677
|
+
- app/controllers/cms/mailchimp_controller.rb
|
663
678
|
- app/controllers/cms/pages_controller.rb
|
664
679
|
- app/controllers/cms/viewables_controller.rb
|
665
680
|
- app/controllers/concerns/cms/editing.rb
|
@@ -688,6 +703,7 @@ files:
|
|
688
703
|
- app/models/admin/viewable/link.rb
|
689
704
|
- app/models/admin/viewable/page.rb
|
690
705
|
- app/models/admin/viewable/select.rb
|
706
|
+
- app/models/admin/viewable/string.rb
|
691
707
|
- app/models/admin/viewable/text.rb
|
692
708
|
- app/models/callbacks/form/field_after_create.rb
|
693
709
|
- app/models/callbacks/form/field_after_destroy.rb
|
@@ -723,6 +739,7 @@ files:
|
|
723
739
|
- app/models/viewable/link.rb
|
724
740
|
- app/models/viewable/page.rb
|
725
741
|
- app/models/viewable/select.rb
|
742
|
+
- app/models/viewable/string.rb
|
726
743
|
- app/models/viewable/text.rb
|
727
744
|
- app/presenters/base_list_presenter.rb
|
728
745
|
- app/presenters/base_presenter.rb
|
@@ -739,7 +756,9 @@ files:
|
|
739
756
|
- app/presenters/viewable_list_presenter.rb
|
740
757
|
- app/presenters/viewable_presenter.rb
|
741
758
|
- app/views/cms/forms/create.js.erb
|
759
|
+
- app/views/cms/mailchimp/subscribe.js.erb
|
742
760
|
- app/views/cms/shared/_flash_messages.js.erb
|
761
|
+
- app/views/cms/shared/_mailchimp.html.erb
|
743
762
|
- app/views/cms/viewables/update.js.erb
|
744
763
|
- app/views/layouts/rails_admin/_secondary_navigation.html.haml
|
745
764
|
- config/initializers/assets.rb
|
@@ -750,6 +769,8 @@ files:
|
|
750
769
|
- config/locales/flash.fr.yml
|
751
770
|
- config/locales/routes.en.yml
|
752
771
|
- config/locales/routes.fr.yml
|
772
|
+
- config/locales/simple_form.en.yml
|
773
|
+
- config/locales/simple_form.fr.yml
|
753
774
|
- config/routes.rb
|
754
775
|
- config/spring.rb
|
755
776
|
- db/migrate/20150111082038_create_versions.rb
|
@@ -771,6 +792,7 @@ files:
|
|
771
792
|
- db/migrate/20160102010317_create_form_field.rb
|
772
793
|
- db/migrate/20160103120544_create_form_email.rb
|
773
794
|
- db/migrate/20160111072418_add_cms_og_tags_settings.rb
|
795
|
+
- db/migrate/20160201181310_create_viewable_string.rb
|
774
796
|
- lib/active_type/virtual_attributes_decorator.rb
|
775
797
|
- lib/generators/cms/install/USAGE
|
776
798
|
- lib/generators/cms/install/install_generator.rb
|