integral 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -30
- data/Rakefile +1 -1
- data/app/assets/images/integral/defaults/no_image_available.jpg +0 -0
- data/app/assets/javascripts/integral/backend.js +102 -11
- data/app/assets/javascripts/integral/frontend.js +37 -0
- data/app/assets/javascripts/integral/support/confirm_modal.coffee +2 -2
- data/app/assets/javascripts/integral/support/gallery.coffee +71 -54
- data/app/assets/javascripts/integral/support/lib/lazysizes.js +755 -0
- data/app/assets/javascripts/integral/support/lib/materialize-tags.js +49 -44
- data/app/assets/javascripts/integral/support/ls.instagram.js +57 -0
- data/app/assets/javascripts/integral/support/ls.twitter.js +66 -0
- data/app/assets/javascripts/integral/support/record_selector.coffee +1 -1
- data/app/assets/javascripts/integral/support/remote_form.coffee +5 -2
- data/app/assets/stylesheets/integral/backend.sass +2 -1
- data/app/assets/stylesheets/integral/backend/_foundation_settings.scss +3 -4
- data/app/assets/stylesheets/integral/backend/dashboard-layout.scss +4 -1
- data/app/assets/stylesheets/integral/backend/materialize-tags.sass +1 -1
- data/app/assets/stylesheets/integral/backend/modules/timeline.scss +214 -0
- data/app/assets/stylesheets/integral/backend/shared.sass +80 -11
- data/app/assets/stylesheets/integral/frontend.scss +45 -0
- data/app/assets/stylesheets/integral/frontend/_foundation_settings.scss +2 -2
- data/app/assets/stylesheets/integral/frontend/blog.sass +155 -142
- data/app/assets/stylesheets/integral/frontend/layout.sass +3 -3
- data/app/assets/stylesheets/integral/frontend/modules/article-footer.scss +55 -0
- data/app/assets/stylesheets/integral/frontend/modules/article.scss +34 -0
- data/app/assets/stylesheets/integral/frontend/modules/horizontal-post.scss +44 -0
- data/app/assets/stylesheets/integral/frontend/modules/inline-articles.scss +23 -0
- data/app/assets/stylesheets/integral/frontend/modules/latest-post.scss +37 -0
- data/app/assets/stylesheets/integral/frontend/modules/list-widget.scss +50 -0
- data/app/assets/stylesheets/integral/frontend/modules/piped-list.scss +33 -0
- data/app/assets/stylesheets/integral/frontend/modules/post-tags.scss +19 -0
- data/app/assets/stylesheets/integral/frontend/modules/scroll-container.scss +9 -0
- data/app/assets/stylesheets/integral/frontend/modules/sidebar-articles.scss +42 -0
- data/app/assets/stylesheets/integral/frontend/modules/sidebar-tags.scss +6 -0
- data/app/assets/stylesheets/integral/frontend/modules/sidebar-widget.scss +47 -0
- data/app/assets/stylesheets/integral/frontend/modules/vertical-post.scss +31 -0
- data/app/assets/stylesheets/integral/frontend/share_modal.sass +0 -5
- data/app/assets/stylesheets/integral/support/gallery.sass +8 -0
- data/app/assets/stylesheets/integral/support/media-query-indicator.sass +6 -0
- data/app/controllers/integral/application_controller.rb +7 -1
- data/app/controllers/integral/backend/activities_controller.rb +13 -2
- data/app/controllers/integral/backend/base_controller.rb +60 -7
- data/app/controllers/integral/backend/categories_controller.rb +49 -0
- data/app/controllers/integral/backend/pages_controller.rb +7 -2
- data/app/controllers/integral/backend/posts_controller.rb +8 -3
- data/app/controllers/integral/backend/static_pages_controller.rb +4 -0
- data/app/controllers/integral/backend/users_controller.rb +13 -7
- data/app/controllers/integral/categories_controller.rb +31 -0
- data/app/controllers/integral/pages_controller.rb +1 -1
- data/app/controllers/integral/posts_controller.rb +5 -3
- data/app/decorators/integral/category_decorator.rb +30 -0
- data/app/decorators/integral/category_version_decorator.rb +7 -0
- data/app/decorators/integral/image_version_decorator.rb +7 -0
- data/app/decorators/integral/list_decorator.rb +1 -1
- data/app/decorators/integral/list_version_decorator.rb +7 -0
- data/app/decorators/integral/page_version_decorator.rb +7 -0
- data/app/decorators/integral/post_decorator.rb +9 -1
- data/app/decorators/integral/post_version_decorator.rb +7 -0
- data/app/decorators/integral/user_decorator.rb +1 -1
- data/app/decorators/integral/user_version_decorator.rb +7 -0
- data/app/decorators/integral/version_decorator.rb +51 -12
- data/app/helpers/integral/backend/base_helper.rb +56 -2
- data/app/helpers/integral/blog_helper.rb +21 -4
- data/app/jobs/integral/webhook/delivery_job.rb +37 -0
- data/app/mailers/integral/contact_mailer.rb +4 -1
- data/app/models/concerns/integral/lazy_contentable.rb +54 -0
- data/app/models/concerns/integral/webhook/delivery.rb +30 -0
- data/app/models/concerns/integral/webhook/observable.rb +23 -0
- data/app/models/integral/category.rb +20 -0
- data/app/models/integral/category_version.rb +8 -0
- data/app/models/integral/list_item.rb +1 -2
- data/app/models/integral/page.rb +18 -3
- data/app/models/integral/post.rb +28 -1
- data/app/models/integral/version.rb +2 -2
- data/app/models/integral/webhook/endpoint.rb +40 -0
- data/app/models/integral/webhook/event.rb +20 -0
- data/app/policies/integral/base_policy.rb +1 -0
- data/app/policies/integral/category_policy.rb +9 -0
- data/app/serializers/integral/post_serializer.rb +24 -0
- data/app/uploaders/integral/avatar_uploader.rb +1 -1
- data/app/views/integral/backend/activities/_activity.haml +21 -0
- data/app/views/integral/backend/activities/_grid.haml +1 -2
- data/app/views/integral/backend/activities/shared/_grid.haml +3 -2
- data/app/views/integral/backend/activities/shared/{_listing.haml → index.haml} +1 -0
- data/app/views/integral/backend/activities/shared/{_log.haml → show.haml} +0 -0
- data/app/views/integral/backend/categories/_modal.haml +25 -0
- data/app/views/integral/backend/lists/_child_fields.haml +1 -1
- data/app/views/integral/backend/lists/_item_container.haml +1 -1
- data/app/views/integral/backend/lists/_item_modal.haml +1 -1
- data/app/views/integral/backend/lists/_list_item_fields.haml +1 -1
- data/app/views/integral/backend/pages/_form.haml +1 -4
- data/app/views/integral/backend/pages/_grid.haml +34 -9
- data/app/views/integral/backend/pages/edit.haml +9 -3
- data/app/views/integral/backend/pages/index.haml +11 -21
- data/app/views/integral/backend/pages/list.haml +22 -0
- data/app/views/integral/backend/pages/show.haml +48 -0
- data/app/views/integral/backend/posts/_form.haml +8 -6
- data/app/views/integral/backend/posts/_grid.haml +33 -7
- data/app/views/integral/backend/posts/index.haml +13 -19
- data/app/views/integral/backend/posts/list.haml +20 -0
- data/app/views/integral/backend/posts/show.haml +54 -0
- data/app/views/integral/backend/shared/_activity_modal.haml +13 -0
- data/app/views/integral/backend/shared/cards/_categories.haml +34 -0
- data/app/views/integral/backend/{static_pages/_card.haml → shared/cards/_object.haml} +0 -0
- data/app/views/integral/backend/shared/cards/_recent_activity.haml +20 -0
- data/app/views/integral/backend/shared/cards/_recent_pages.haml +19 -0
- data/app/views/integral/backend/shared/cards/_recent_posts.haml +18 -0
- data/app/views/integral/backend/shared/cards/_recent_user_activity.haml +1 -0
- data/app/views/integral/backend/shared/cards/_recent_users.haml +19 -0
- data/app/views/integral/backend/shared/cards/_top_post_authors.haml +19 -0
- data/app/views/integral/backend/shared/record_selector/_record.haml +6 -4
- data/app/views/integral/backend/static_pages/dashboard.haml +13 -11
- data/app/views/integral/backend/users/_grid.haml +24 -7
- data/app/views/integral/backend/users/index.haml +11 -17
- data/app/views/integral/backend/users/list.haml +18 -0
- data/app/views/integral/backend/users/show.haml +5 -11
- data/app/views/integral/categories/show.haml +5 -0
- data/app/views/integral/posts/_article_footer.haml +17 -0
- data/app/views/integral/posts/_card.haml +11 -0
- data/app/views/integral/posts/_latest_post.haml +8 -0
- data/app/views/integral/posts/_most_read_section.haml +8 -0
- data/app/views/integral/posts/_post.haml +11 -0
- data/app/views/integral/posts/_similar_posts.haml +5 -0
- data/app/views/integral/posts/index.haml +6 -5
- data/app/views/integral/posts/templates/default.haml +34 -33
- data/app/views/integral/shared/_subscribe_modal.haml +14 -0
- data/app/views/integral/shared/blog/_categories.haml +15 -0
- data/app/views/integral/shared/blog/_layout.haml +9 -0
- data/app/views/integral/shared/blog/_sidebar.haml +10 -0
- data/app/views/integral/shared/gallery/_placeholder.haml +1 -1
- data/app/views/integral/shared/gallery/_slide.haml +2 -2
- data/app/views/integral/shared/gallery/gallery.haml +5 -2
- data/app/views/integral/shared/sidebar/_item.haml +8 -0
- data/app/views/integral/shared/sidebar/_newsletter_signup.haml +7 -0
- data/app/views/integral/shared/sidebar/_popular_posts.haml +7 -0
- data/app/views/integral/shared/sidebar/_popular_tags.haml +7 -0
- data/app/views/integral/shared/sidebar/_recent_posts.haml +7 -0
- data/app/views/integral/tags/index.haml +2 -2
- data/app/views/integral/tags/show.haml +3 -6
- data/app/views/layouts/integral/backend.html.haml +3 -0
- data/app/views/layouts/integral/backend/_main_menu_items.haml +10 -0
- data/app/views/layouts/integral/frontend.html.haml +3 -3
- data/config/locales/en.yml +52 -49
- data/db/migrate/20190414172018_create_webhook_endpoints.rb +10 -0
- data/db/migrate/20190929191412_add_integral_post_categories.rb +13 -0
- data/db/migrate/20191203090008_add_image_to_integral_categories.rb +6 -0
- data/db/migrate/20200401210442_create_category_versions.rb +20 -0
- data/db/seeds.rb +3 -1
- data/lib/generators/integral/assets_generator.rb +2 -2
- data/lib/generators/integral/install_generator.rb +1 -1
- data/lib/generators/integral/views_generator.rb +1 -1
- data/lib/generators/templates/integral.rb +5 -0
- data/lib/integral.rb +3 -30
- data/lib/integral/acts_as_listable.rb +2 -2
- data/lib/integral/chart_renderer/base.rb +2 -0
- data/lib/integral/content_renderer.rb +2 -2
- data/lib/integral/engine.rb +2 -2
- data/lib/integral/grids/activities_grid.rb +15 -1
- data/lib/integral/list_item_renderer.rb +4 -2
- data/lib/integral/list_renderer.rb +1 -0
- data/lib/integral/middleware/page_router.rb +15 -6
- data/lib/integral/router.rb +19 -3
- data/lib/integral/version.rb +1 -1
- data/lib/integral/widgets/swiper_list.rb +3 -2
- data/public/images/integral/demo/continous-integration.png +0 -0
- data/public/images/integral/demo/foundation-frontend-framework.jpg +0 -0
- data/public/images/integral/demo/heroku.png +0 -0
- data/public/images/integral/demo/integral-cms-without-hassle.jpg +0 -0
- data/public/images/integral/demo/integral-features-activity-tracking.jpg +0 -0
- data/public/images/integral/demo/integral-features-contact-form.png +0 -0
- data/public/images/integral/demo/integral-features-design.jpg +0 -0
- data/public/images/integral/demo/integral-features-dynamic-pages.jpg +0 -0
- data/public/images/integral/demo/integral-features-image-management.jpg +0 -0
- data/public/images/integral/demo/integral-features-integrated-blog.jpg +0 -0
- data/public/images/integral/demo/integral-features-list-management.jpg +0 -0
- data/public/images/integral/demo/integral-features-seo-ready.jpg +0 -0
- data/public/images/integral/demo/integral-features-user-management.jpg +0 -0
- data/public/images/integral/demo/integral-presentation.png +0 -0
- data/spec/factories.rb +15 -7
- metadata +110 -98
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/copywidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/editwidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/hidpi/copywidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/hidpi/editwidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/hidpi/removewidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/hidpi/widget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/removewidget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/icons/widget.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/integral-card/plugin.js +0 -86
- data/app/assets/javascripts/ckeditor/plugins/integralrecentposts/dialogs/integralrecentposts.js +0 -40
- data/app/assets/javascripts/ckeditor/plugins/integralrecentposts/plugin.js +0 -32
- data/app/assets/javascripts/ckeditor/plugins/numericinput/LICENSE.md +0 -363
- data/app/assets/javascripts/ckeditor/plugins/numericinput/README.md +0 -16
- data/app/assets/javascripts/ckeditor/plugins/numericinput/plugin.js +0 -354
- data/app/assets/stylesheets/integral/frontend.sass +0 -25
- data/app/views/integral/backend/pages/activities.haml +0 -2
- data/app/views/integral/backend/pages/activity.haml +0 -1
- data/app/views/integral/backend/posts/activities.haml +0 -3
- data/app/views/integral/backend/posts/activity.haml +0 -1
- data/app/views/integral/posts/_collection.haml +0 -4
- data/app/views/integral/posts/_item.haml +0 -16
- data/app/views/integral/shared/_blog_layout.haml +0 -15
- data/app/views/integral/shared/_blog_sidebar.haml +0 -49
- data/lib/integral/slack_bot.rb +0 -45
@@ -0,0 +1,5 @@
|
|
1
|
+
- if @related_posts.present?
|
2
|
+
%h2.blog-subheading= t('integral.blog.widgets.related_posts')
|
3
|
+
.scroll-container{ 'data-item-width' => 250 }
|
4
|
+
.grid-x.grid-margin-x.scroll-wrapper
|
5
|
+
= render partial: 'integral/posts/card', collection: Integral::PostDecorator.decorate_collection(@related_posts), as: :post
|
@@ -1,7 +1,8 @@
|
|
1
1
|
= render_posts_as_json_ld(@posts.decorate)
|
2
2
|
|
3
|
-
= render layout: 'integral/shared/
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
=
|
3
|
+
= render layout: 'integral/shared/blog/layout', locals: { title: t('.title') } do
|
4
|
+
- if @latest_post.present?
|
5
|
+
= render partial: 'latest_post', locals: { post: @latest_post }
|
6
|
+
= render partial: @posts.decorate, cached: true
|
7
|
+
= render partial: 'most_read_section' if display_most_read_posts_widget?
|
8
|
+
.center= will_paginate @posts, renderer: FoundationPagination::Rails
|
@@ -1,37 +1,38 @@
|
|
1
1
|
= render_post_as_json_ld(@post)
|
2
|
-
= link_to 'Edit', edit_backend_post_url(@post.id), class: 'button primary button--edit-resource', data: { 'turbolinks' => 'false' } if current_user.present?
|
3
|
-
= link_to posts_url, class: 'view-all' do
|
4
|
-
= icon('list')
|
5
|
-
VIEW ALL BLOG POSTS
|
6
|
-
= render layout: 'integral/shared/blog_layout', locals: { title: @post.title, subtitle: @post.header_tags, image: @post.image(:large) } do
|
7
|
-
%p
|
8
|
-
%span.post-date= @post.published_at
|
9
|
-
%article#post-content.wysiwyg-content
|
10
|
-
= @post.body.html_safe
|
11
2
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
3
|
+
= render partial: 'integral/shared/breadcrumbs'
|
4
|
+
#blog-wrapper.grid-container
|
5
|
+
.grid-x.grid-padding-x
|
6
|
+
.cell.large-9
|
7
|
+
%article.article
|
8
|
+
%header
|
9
|
+
%h1
|
10
|
+
= @post.title
|
11
|
+
- if user_signed_in?
|
12
|
+
%span.label.entity-status{ class: @post.status }= @post.status
|
13
|
+
%span.small= link_to 'Edit', integral.edit_backend_post_url(@post.id), class: "button medium", data: { 'turbolinks' => 'false' }
|
14
|
+
.grid-x
|
15
|
+
.cell.medium-8
|
16
|
+
.article-author
|
17
|
+
%span= @post.avatar
|
18
|
+
= @post.author.name
|
19
|
+
%ul.list-unstyled.piped-list
|
20
|
+
%li= @post.published_at
|
21
|
+
%li= link_to @post.category.title, category_path(@post.category)
|
22
|
+
.cell.small-4.text-right.show-for-medium
|
23
|
+
%button.button{ 'data-open' => 'share-modal' }
|
24
|
+
= icon('share', class: 'show-for-medium')
|
25
|
+
= t('integral.actions.share')
|
26
|
+
%section.wysiwyg-content.wysiwyg-content--post
|
27
|
+
= @post.body.html_safe
|
28
|
+
= render partial: 'integral/posts/article_footer'
|
29
|
+
.hide-for-large= render partial: 'similar_posts'
|
21
30
|
|
22
|
-
|
23
|
-
- @post.tags_on(@post.tag_context).each do |tag|
|
24
|
-
%li.post-tag
|
25
|
-
= link_to tag_url(tag.name) do
|
26
|
-
= tag.name
|
31
|
+
= render partial: 'integral/shared/blog/sidebar'
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
= link_to integral.post_url(p) do
|
35
|
-
= image_tag p.image(:medium)
|
36
|
-
%h5= p.title
|
37
|
-
%span.subtitle= p.published_at
|
33
|
+
.grid-container.show-for-large
|
34
|
+
= render partial: 'similar_posts'
|
35
|
+
|
36
|
+
= render partial: 'integral/shared/blog/categories'
|
37
|
+
= render partial: 'integral/shared/share_modal'
|
38
|
+
= render partial: 'integral/shared/subscribe_modal'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#subscribe-modal.reveal.text-center{ data: { reveal: '' } }
|
2
|
+
%button.close-button{ data: { close: '' }, aria: { label: "Close modal" }}
|
3
|
+
%span{ aria: { hidden: true } } ×
|
4
|
+
|
5
|
+
%h3= t('integral.blog.widgets.newsletter_signup.title')
|
6
|
+
%hr.modal-topbar
|
7
|
+
|
8
|
+
%p= t('integral.blog.widgets.newsletter_signup.subtitle')
|
9
|
+
|
10
|
+
= simple_form_for Integral::NewsletterSignup.new, url: newsletter_signup_url, validate: true, remote: true, html: { class: 'remote-form', data: { 'remote-form-success-message' => t('integral.blog.widgets.newsletter_signup.success') }} do |f|
|
11
|
+
= f.input :email, placeholder: t('integral.blog.widgets.newsletter_signup.placeholder'), label: false
|
12
|
+
= f.button :submit, t('integral.blog.widgets.newsletter_signup.submit'), class: 'button expanded'
|
13
|
+
|
14
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
.grid-container
|
2
|
+
%h2.blog-subheading= t('integral.blog.widgets.categories')
|
3
|
+
.scroll-container{ 'data-item-width' => 250 }
|
4
|
+
.grid-x.grid-margin-x.scroll-wrapper
|
5
|
+
- featured_categories.decorate.each do |category|
|
6
|
+
.cell.medium-3
|
7
|
+
.list-widget
|
8
|
+
.list-widget-image
|
9
|
+
= link_to category_path(category) do
|
10
|
+
= image_tag category.image_url
|
11
|
+
.list-widget-tag= category.title
|
12
|
+
%ul.no-bullet
|
13
|
+
- category.posts(4).each do |post|
|
14
|
+
%li= link_to post.title, integral.post_path(post)
|
15
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
= render partial: 'integral/shared/breadcrumbs'
|
2
|
+
|
3
|
+
#blog-wrapper.grid-container
|
4
|
+
%h1= title
|
5
|
+
.grid-x.grid-padding-x
|
6
|
+
.cell.large-9{ 'data-post-list' => true }
|
7
|
+
= yield
|
8
|
+
= render partial: 'integral/shared/blog/sidebar'
|
9
|
+
= render partial: 'integral/shared/blog/categories'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.cell.small-12.large-3
|
2
|
+
- if display_newsletter_signup_widget?
|
3
|
+
= render partial: 'integral/shared/sidebar/newsletter_signup'
|
4
|
+
|
5
|
+
- if display_recent_posts_widget?
|
6
|
+
= render partial: 'integral/shared/sidebar/recent_posts'
|
7
|
+
|
8
|
+
- if display_popular_posts_widget?
|
9
|
+
= render partial: 'integral/shared/sidebar/popular_posts'
|
10
|
+
= render partial: 'integral/shared/sidebar/popular_tags'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#gallery-placeholder.reveal.full.modal--gallery{ data: {reveal: true }}
|
2
2
|
%button.close-button{ data: { close: '' }, aria: { label: "Close modal" }}
|
3
3
|
%span{ aria: { hidden: true } } ×
|
4
|
-
.content
|
5
4
|
.placeholder
|
6
5
|
= icon('spinner', class: 'fa-pulse')
|
7
6
|
%p Loading..
|
7
|
+
.content
|
@@ -1,5 +1,5 @@
|
|
1
1
|
- if type == 'Integral::Link'
|
2
|
-
.
|
3
|
-
|
2
|
+
-# Assumes url is a YouTube embed URL i.e -> https://www.youtube.com/embed/mNzvpFcJXU
|
3
|
+
%iframe{ src: "#{url}?enablejsapi=1", frameborder: '0', allow: 'autoplay; encrypted-media', allowfullscreen: true }
|
4
4
|
- else
|
5
5
|
= image_tag image
|
@@ -1,6 +1,9 @@
|
|
1
1
|
- if @list.list_items.present?
|
2
|
-
|
3
|
-
|
2
|
+
- if @list.list_items.count > 1
|
3
|
+
= render_gallery(@list, { html_classes: 'main-swiper'})
|
4
|
+
= render_thumb_gallery(@list, { html_classes: 'thumb-swiper'})
|
5
|
+
- else
|
6
|
+
= Integral::PartialListItemRenderer.new(@list.list_items.first, partial_path: 'integral/shared/gallery/slide').render_item
|
4
7
|
- else
|
5
8
|
%p.text-center
|
6
9
|
Sorry, no media available.
|
@@ -0,0 +1,7 @@
|
|
1
|
+
.sidebar-widget.newsletter-signup
|
2
|
+
= icon('envelope-open')
|
3
|
+
%h4= t('integral.blog.widgets.newsletter_signup.title')
|
4
|
+
%p= t('integral.blog.widgets.newsletter_signup.subtitle')
|
5
|
+
= simple_form_for Integral::NewsletterSignup.new, url: newsletter_signup_url, validate: true, remote: true, html: { class: 'remote-form', data: { 'remote-form-success-message' => t('integral.blog.widgets.newsletter_signup.success') }} do |f|
|
6
|
+
= f.input :email, placeholder: t('integral.blog.widgets.newsletter_signup.placeholder'), label: false
|
7
|
+
= f.button :submit, t('integral.blog.widgets.newsletter_signup.submit'), class: 'button'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
- cache [@popular_posts.map(&:id), @popular_posts.maximum(:updated_at)] do
|
2
|
+
.sidebar-widget
|
3
|
+
%h2.sidebar-widget-title= t('integral.blog.widgets.popular_posts')
|
4
|
+
.sidebar-articles
|
5
|
+
-# TODO: Use collection rendering - possibly create a post sidebar item partial?
|
6
|
+
- @popular_posts.decorate.each do |post|
|
7
|
+
= render 'integral/shared/sidebar/item', url: integral.post_url(post), image: post.image(:small), title: post.title, subtitle: t('integral.blog.posted_ago', time: time_ago_in_words(post.published_at))
|
@@ -0,0 +1,7 @@
|
|
1
|
+
- cache [@recent_posts.map(&:id), @recent_posts.maximum(:updated_at)] do
|
2
|
+
.sidebar-widget
|
3
|
+
%h2.sidebar-widget-title= t('integral.blog.widgets.recent_posts')
|
4
|
+
.sidebar-articles
|
5
|
+
-# TODO: Use collection rendering - possibly create a post sidebar item partial?
|
6
|
+
- @recent_posts.decorate.each do |post|
|
7
|
+
= render 'integral/shared/sidebar/item', url: integral.post_url(post), image: post.image(:small), title: post.title, subtitle: t('integral.blog.posted_ago', time: time_ago_in_words(post.published_at))
|
@@ -1,5 +1,5 @@
|
|
1
|
-
= render layout: 'integral/shared/
|
2
|
-
%ul.
|
1
|
+
= render layout: 'integral/shared/blog/layout', locals: { title: t('.title') } do
|
2
|
+
%ul.post-tags.text-center
|
3
3
|
- @tags.each do |tag|
|
4
4
|
%li
|
5
5
|
= link_to tag_url(tag.name) do
|
@@ -1,6 +1,3 @@
|
|
1
|
-
= render layout: 'integral/shared/
|
2
|
-
|
3
|
-
|
4
|
-
%li= render partial: 'integral/posts/item', locals: { post: post }
|
5
|
-
= will_paginate @tagged_posts, renderer: FoundationPagination::Rails
|
6
|
-
|
1
|
+
= render layout: 'integral/shared/blog/layout', locals: { title: "##{@tag.name}" } do
|
2
|
+
= render partial: @tagged_posts.decorate, cached: true
|
3
|
+
.center= will_paginate @tagged_posts, renderer: FoundationPagination::Rails
|
@@ -18,6 +18,10 @@
|
|
18
18
|
%li
|
19
19
|
= link_to new_backend_page_url do
|
20
20
|
%span= t('integral.actions.create')
|
21
|
+
%li
|
22
|
+
= link_to list_backend_pages_url do
|
23
|
+
%span= t('integral.navigation.listing')
|
24
|
+
|
21
25
|
|
22
26
|
- if policy(Integral::Post).index? && Integral.blog_enabled?
|
23
27
|
%li
|
@@ -33,6 +37,9 @@
|
|
33
37
|
%li
|
34
38
|
= link_to new_backend_post_url do
|
35
39
|
%span= t('integral.actions.create')
|
40
|
+
%li
|
41
|
+
= link_to list_backend_posts_url do
|
42
|
+
%span= t('integral.navigation.listing')
|
36
43
|
|
37
44
|
- if policy(Integral::List).index?
|
38
45
|
%li
|
@@ -77,6 +84,9 @@
|
|
77
84
|
%li
|
78
85
|
= link_to new_backend_user_url do
|
79
86
|
%span= t('integral.actions.create')
|
87
|
+
%li
|
88
|
+
= link_to list_backend_users_url do
|
89
|
+
%span= t('integral.navigation.listing')
|
80
90
|
|
81
91
|
- if policy(Integral::Version).manager?
|
82
92
|
%li
|
@@ -16,19 +16,19 @@
|
|
16
16
|
= render 'layouts/integral/frontend/admin_bar' if user_signed_in?
|
17
17
|
|
18
18
|
-# Off Canvas - Mobile Menu
|
19
|
-
#offCanvas.off-canvas.position-
|
19
|
+
#offCanvas.off-canvas.position-right{ 'data-off-canvas' => true }
|
20
20
|
= link_to site_title, root_url, class: 'site-title'
|
21
21
|
= render_list(main_menu_list, { html_classes: 'menu vertical'})
|
22
22
|
|
23
23
|
-# Off Canvas - Main Content
|
24
24
|
.off-canvas-content{ 'data-off-canvas-content' => true }
|
25
|
-
%header
|
25
|
+
%header.body-header
|
26
26
|
= render partial: 'layouts/integral/frontend/header'
|
27
27
|
|
28
28
|
%main
|
29
29
|
= yield
|
30
30
|
|
31
|
-
%footer
|
31
|
+
%footer.body-footer
|
32
32
|
= render partial: 'layouts/integral/frontend/footer'
|
33
33
|
|
34
34
|
= render partial: 'integral/shared/share_modal'
|
data/config/locales/en.yml
CHANGED
@@ -4,7 +4,7 @@ en:
|
|
4
4
|
default: "%d %B"
|
5
5
|
time:
|
6
6
|
formats:
|
7
|
-
default: "%
|
7
|
+
default: "%b %d %Y, %l:%M %P"
|
8
8
|
blog: "%B %d, %Y"
|
9
9
|
twelve_hour: "%I:%M %p"
|
10
10
|
|
@@ -46,6 +46,12 @@ en:
|
|
46
46
|
forward_enquiry:
|
47
47
|
subject: Website Enquiry
|
48
48
|
actions:
|
49
|
+
tense:
|
50
|
+
past:
|
51
|
+
update: Updated
|
52
|
+
create: Created
|
53
|
+
publish: Published
|
54
|
+
destroy: Deleted
|
49
55
|
confirmation:
|
50
56
|
deletion: If you delete this item it will be gone forever. Are you sure you want to proceed?
|
51
57
|
clone: Are you sure you want to clone this item?
|
@@ -55,6 +61,8 @@ en:
|
|
55
61
|
add_image: Add Image
|
56
62
|
add_image_or_video: Add an image or video
|
57
63
|
view_main_site: View main site
|
64
|
+
view_on_site: View on site
|
65
|
+
publish: Publish
|
58
66
|
create: Create
|
59
67
|
clone: Clone
|
60
68
|
save: Save
|
@@ -66,18 +74,23 @@ en:
|
|
66
74
|
view: View
|
67
75
|
view_record: View Record
|
68
76
|
view_user: View User
|
77
|
+
view_history: View history
|
69
78
|
read_more: Read more..
|
70
79
|
reply: Reply
|
71
80
|
log_out: Logout
|
72
81
|
upload: Upload
|
73
|
-
share: Share
|
82
|
+
share: Share
|
74
83
|
apply: Apply
|
75
84
|
select: Select
|
76
85
|
copy_url: Copy URL
|
77
86
|
copied: Copied
|
78
87
|
search: Search
|
88
|
+
subscribe: Subscribe
|
79
89
|
confirm: Confirm
|
80
90
|
cancel: Cancel
|
91
|
+
view_all: View All
|
92
|
+
view_more: View More
|
93
|
+
open_in_new_tab: Open in new tab
|
81
94
|
prompts:
|
82
95
|
select_image: Select Image..
|
83
96
|
select_type: Select Type..
|
@@ -91,6 +104,7 @@ en:
|
|
91
104
|
archived: Archived
|
92
105
|
records:
|
93
106
|
attributes:
|
107
|
+
category: Category
|
94
108
|
locale: Language
|
95
109
|
image: Image
|
96
110
|
featured_image: Featured Image
|
@@ -135,6 +149,7 @@ en:
|
|
135
149
|
home: Home
|
136
150
|
posts: Posts
|
137
151
|
post: Post
|
152
|
+
tags: Tags
|
138
153
|
pages: Pages
|
139
154
|
page: Page
|
140
155
|
users: Users
|
@@ -148,6 +163,7 @@ en:
|
|
148
163
|
log_out: Logout
|
149
164
|
my_account: Account & Profile
|
150
165
|
settings: Settings
|
166
|
+
listing: Listing
|
151
167
|
|
152
168
|
posts:
|
153
169
|
index:
|
@@ -155,6 +171,8 @@ en:
|
|
155
171
|
subtitle: All things Integral
|
156
172
|
show:
|
157
173
|
subtitle: An interesting read
|
174
|
+
footer:
|
175
|
+
blurb: Have questions about this article, want to provide feedback or contact us for any reason? Get in touch with us today. We'd love to hear from you.
|
158
176
|
item:
|
159
177
|
read_more: Read More
|
160
178
|
tags:
|
@@ -166,7 +184,9 @@ en:
|
|
166
184
|
subtitle: Related Articles
|
167
185
|
description: "All articles tagged %{tag_name} within our blog"
|
168
186
|
blog:
|
187
|
+
posted_ago: "Published %{time} ago"
|
169
188
|
widgets:
|
189
|
+
most_read: Most Read Articles
|
170
190
|
related_posts: Related Posts
|
171
191
|
recent_posts: Recent Posts
|
172
192
|
popular_posts: Popular Posts
|
@@ -180,9 +200,27 @@ en:
|
|
180
200
|
submit: Sign Up
|
181
201
|
success: Great choice! Stay tuned for some quality content direct to your inbox.
|
182
202
|
backend:
|
203
|
+
titles:
|
204
|
+
new: "New %{type_singular}"
|
205
|
+
create: "Create %{type_singular}"
|
206
|
+
edit: "Edit %{type_singular}"
|
207
|
+
update: "Update %{type_singular}"
|
208
|
+
index: "%{type_plural}"
|
209
|
+
list: "%{type_singular} Listing"
|
210
|
+
notifications:
|
211
|
+
clone_success: "%{type} successfully cloned."
|
212
|
+
clone_failure: "%{type} clone failed."
|
213
|
+
creation_success: "%{type} successfully created."
|
214
|
+
creation_failure: "%{type} creation failed."
|
215
|
+
edit_success: "%{type} successfully updated."
|
216
|
+
edit_failure: "%{type} update failed."
|
217
|
+
delete_success: "%{type} successfully deleted."
|
218
|
+
delete_failure: "%{type} deletion failed."
|
183
219
|
graphs:
|
184
220
|
data_unavailable: Data Unavailable
|
185
221
|
cards:
|
222
|
+
your_activity: Your Activity
|
223
|
+
recent_activity: Recent Activity
|
186
224
|
at_a_glance: At a glance
|
187
225
|
last_week: Last week
|
188
226
|
shared:
|
@@ -227,6 +265,9 @@ en:
|
|
227
265
|
activities:
|
228
266
|
index:
|
229
267
|
title: Website Activity
|
268
|
+
shared:
|
269
|
+
index:
|
270
|
+
title: "Activities: %{title}"
|
230
271
|
lists:
|
231
272
|
items:
|
232
273
|
type:
|
@@ -247,15 +288,6 @@ en:
|
|
247
288
|
columns:
|
248
289
|
title: 'Title'
|
249
290
|
description: 'Description'
|
250
|
-
notification:
|
251
|
-
clone_success: 'List successfully cloned.'
|
252
|
-
clone_failure: 'List clone failed.'
|
253
|
-
creation_success: 'List successfully created.'
|
254
|
-
creation_failure: 'List creation failed.'
|
255
|
-
edit_success: 'List successfully updated.'
|
256
|
-
edit_failure: 'Failed to update list.'
|
257
|
-
delete_success: 'List successfully deleted.'
|
258
|
-
delete_failure: 'Failed to delete list.'
|
259
291
|
settings:
|
260
292
|
index:
|
261
293
|
title: Settings
|
@@ -296,7 +328,6 @@ en:
|
|
296
328
|
views: 'Views'
|
297
329
|
status: 'Status'
|
298
330
|
index:
|
299
|
-
title: 'Posts'
|
300
331
|
new_post: 'Create post'
|
301
332
|
published_count: "%{count} published"
|
302
333
|
drafts_count: "%{count} drafted"
|
@@ -305,22 +336,13 @@ en:
|
|
305
336
|
title: 'Edit Post'
|
306
337
|
new:
|
307
338
|
title: 'New Post'
|
308
|
-
activities:
|
309
|
-
title: "Activities: %{title}"
|
310
|
-
notification:
|
311
|
-
clone_success: 'Post successfully cloned.'
|
312
|
-
clone_failure: 'Post clone failed.'
|
313
|
-
creation_success: 'Post successfully created.'
|
314
|
-
creation_failure: 'Post creation failed.'
|
315
|
-
edit_success: 'Post successfully updated.'
|
316
|
-
edit_failure: 'Failed to update post.'
|
317
|
-
delete_success: 'Post successfully deleted.'
|
318
|
-
delete_failure: 'Failed to delete post.'
|
319
339
|
pages:
|
320
340
|
templates:
|
321
341
|
default: Default
|
322
342
|
prompts:
|
323
343
|
choose_template: Choose Template
|
344
|
+
activities:
|
345
|
+
title: Page Activity
|
324
346
|
index:
|
325
347
|
title: 'Page listing'
|
326
348
|
non_available: 'No pages available. Try creating one!'
|
@@ -333,15 +355,6 @@ en:
|
|
333
355
|
description: 'Description'
|
334
356
|
path: 'Path'
|
335
357
|
last_updated_at: 'Last updated'
|
336
|
-
notification:
|
337
|
-
clone_success: 'Page successfully cloned.'
|
338
|
-
clone_failure: 'Page clone failed.'
|
339
|
-
creation_success: 'Page successfully created.'
|
340
|
-
creation_failure: 'Page creation failed.'
|
341
|
-
edit_success: 'Page successfully updated.'
|
342
|
-
edit_failure: 'Failed to update page.'
|
343
|
-
delete_success: 'Page successfully deleted.'
|
344
|
-
delete_failure: 'Failed to delete page.'
|
345
358
|
edit:
|
346
359
|
title: 'Editing page - %{title}'
|
347
360
|
new:
|
@@ -355,15 +368,6 @@ en:
|
|
355
368
|
title: 'Image listing'
|
356
369
|
no_images_available: 'No images available. Try uploading some!'
|
357
370
|
new_image: 'New image'
|
358
|
-
notification:
|
359
|
-
creation_success: 'Image successfully created.'
|
360
|
-
creation_failure: 'Image creation failed.'
|
361
|
-
edit_success: 'Image successfully updated.'
|
362
|
-
edit_failure: 'Failed to update Image.'
|
363
|
-
delete_success: 'Image successfully deleted.'
|
364
|
-
delete_failure: 'Failed to delete image.'
|
365
|
-
edit:
|
366
|
-
title: 'Editing image - %{name}'
|
367
371
|
users:
|
368
372
|
available_locales:
|
369
373
|
en: English
|
@@ -371,13 +375,6 @@ en:
|
|
371
375
|
status:
|
372
376
|
draft: 'Draft'
|
373
377
|
published: 'Published'
|
374
|
-
notification:
|
375
|
-
creation_success: 'User has been invited.'
|
376
|
-
creation_failure: 'User creation failed.'
|
377
|
-
edit_success: 'User successfully updated.'
|
378
|
-
edit_failure: 'Failed to update user.'
|
379
|
-
delete_success: 'User successfully deleted.'
|
380
|
-
delete_failure: 'Failed to delete user.'
|
381
378
|
prompts:
|
382
379
|
select_language: 'Select language..'
|
383
380
|
grid:
|
@@ -418,7 +415,7 @@ en:
|
|
418
415
|
description: "Summarise the content. This will be displayed in search results and is an important part of on-page SEO. <a target='_blank' href='https://moz.com/learn/seo/meta-description'>Learn More.</a>"
|
419
416
|
path: Path to the record, this will be appended onto the website domain to create a URL. Example - /company/privacy-policy
|
420
417
|
parent: "You can arrange your pages in hierarchies by selecting a top level page for your other pages. <a target='_blank' href='https://en.wikipedia.org/wiki/Breadcrumb_(navigation)#Websites'>Learn More.</a>"
|
421
|
-
|
418
|
+
tag_list: Use key terms to summarise your content and seperate words with '-', i.e. internet-marketing-tips
|
422
419
|
template: Layout which will be used to render the page.
|
423
420
|
|
424
421
|
image:
|
@@ -489,3 +486,9 @@ en:
|
|
489
486
|
someone_invited_you: "%{name} has invited you to %{url}, you can accept it through the link below."
|
490
487
|
ckeditor:
|
491
488
|
populate_editor: Populate editor with example content.
|
489
|
+
|
490
|
+
activerecord:
|
491
|
+
models:
|
492
|
+
integral/post:
|
493
|
+
one: Post
|
494
|
+
other: Posts
|