integral 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|