publify_core 9.1.0 → 9.2.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/CHANGELOG.md +34 -1
- data/app/assets/javascripts/bootstrap-sprockets.js +8 -0
- data/app/assets/javascripts/bootstrap/affix.js +164 -0
- data/app/assets/javascripts/bootstrap/alert.js +95 -0
- data/app/assets/javascripts/bootstrap/button.js +125 -0
- data/app/assets/javascripts/bootstrap/collapse.js +212 -0
- data/app/assets/javascripts/bootstrap/dropdown.js +165 -0
- data/app/assets/javascripts/bootstrap/modal.js +358 -0
- data/app/assets/javascripts/bootstrap/tab.js +155 -0
- data/app/assets/javascripts/bootstrap/transition.js +59 -0
- data/app/assets/javascripts/lightbox.js +4 -4
- data/app/assets/javascripts/publify_admin.js +1 -35
- data/app/assets/stylesheets/_bootstrap-compass.scss +9 -0
- data/app/assets/stylesheets/_bootstrap-mincer.scss +19 -0
- data/app/assets/stylesheets/_bootstrap-sprockets.scss +9 -0
- data/app/assets/stylesheets/_bootstrap.scss +42 -0
- data/app/assets/stylesheets/administration_structure.css.scss +1 -45
- data/app/assets/stylesheets/bootstrap/_alerts.scss +73 -0
- data/app/assets/stylesheets/bootstrap/_button-groups.scss +242 -0
- data/app/assets/stylesheets/bootstrap/_buttons.scss +168 -0
- data/app/assets/stylesheets/bootstrap/_close.scss +37 -0
- data/app/assets/stylesheets/bootstrap/_code.scss +69 -0
- data/app/assets/stylesheets/bootstrap/_component-animations.scss +38 -0
- data/app/assets/stylesheets/bootstrap/_dropdowns.scss +213 -0
- data/app/assets/stylesheets/bootstrap/_forms.scss +586 -0
- data/app/assets/stylesheets/bootstrap/_grid.scss +94 -0
- data/app/assets/stylesheets/bootstrap/_labels.scss +66 -0
- data/app/assets/stylesheets/bootstrap/_media.scss +66 -0
- data/app/assets/stylesheets/bootstrap/_mixins.scss +37 -0
- data/app/assets/stylesheets/bootstrap/_modals.scss +150 -0
- data/app/assets/stylesheets/bootstrap/_navbar.scss +479 -0
- data/app/assets/stylesheets/bootstrap/_navs.scss +242 -0
- data/app/assets/stylesheets/bootstrap/_normalize.scss +427 -0
- data/app/assets/stylesheets/bootstrap/_pagination.scss +86 -0
- data/app/assets/stylesheets/bootstrap/_panels.scss +222 -0
- data/app/assets/stylesheets/bootstrap/_print.scss +99 -0
- data/app/assets/stylesheets/bootstrap/_scaffolding.scss +160 -0
- data/app/assets/stylesheets/bootstrap/_tables.scss +234 -0
- data/app/assets/stylesheets/bootstrap/_theme.scss +224 -0
- data/app/assets/stylesheets/bootstrap/_type.scss +296 -0
- data/app/assets/stylesheets/bootstrap/_utilities.scss +55 -0
- data/app/assets/stylesheets/bootstrap/_variables.scss +638 -0
- data/app/assets/stylesheets/bootstrap/_wells.scss +29 -0
- data/app/assets/stylesheets/bootstrap/mixins/_alerts.scss +15 -0
- data/app/assets/stylesheets/bootstrap/mixins/_background-variant.scss +12 -0
- data/app/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
- data/app/assets/stylesheets/bootstrap/mixins/_buttons.scss +56 -0
- data/app/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
- data/app/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
- data/app/assets/stylesheets/bootstrap/mixins/_forms.scss +82 -0
- data/app/assets/stylesheets/bootstrap/mixins/_gradients.scss +56 -0
- data/app/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
- data/app/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
- data/app/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
- data/app/assets/stylesheets/bootstrap/mixins/_image.scss +28 -0
- data/app/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
- data/app/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
- data/app/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
- data/app/assets/stylesheets/bootstrap/mixins/_opacity.scss +7 -0
- data/app/assets/stylesheets/bootstrap/mixins/_pagination.scss +24 -0
- data/app/assets/stylesheets/bootstrap/mixins/_panels.scss +20 -0
- data/app/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
- data/app/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
- data/app/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +17 -0
- data/app/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
- data/app/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
- data/app/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
- data/app/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +12 -0
- data/app/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
- data/app/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
- data/app/assets/stylesheets/lightbox.css +3 -3
- data/app/assets/stylesheets/publify_admin.css.scss +0 -1
- data/app/controllers/accounts_controller.rb +2 -0
- data/app/controllers/admin/base_controller.rb +8 -5
- data/app/controllers/admin/content_controller.rb +37 -24
- data/app/controllers/admin/dashboard_controller.rb +16 -64
- data/app/controllers/admin/feedback_controller.rb +45 -38
- data/app/controllers/admin/notes_controller.rb +15 -9
- data/app/controllers/admin/pages_controller.rb +18 -15
- data/app/controllers/admin/post_types_controller.rb +7 -5
- data/app/controllers/admin/profiles_controller.rb +4 -2
- data/app/controllers/admin/redirects_controller.rb +9 -5
- data/app/controllers/admin/resources_controller.rb +7 -4
- data/app/controllers/admin/seo_controller.rb +14 -10
- data/app/controllers/admin/settings_controller.rb +7 -5
- data/app/controllers/admin/sidebar_controller.rb +7 -4
- data/app/controllers/admin/tags_controller.rb +6 -3
- data/app/controllers/admin/themes_controller.rb +10 -7
- data/app/controllers/admin/users_controller.rb +9 -6
- data/app/controllers/articles_controller.rb +49 -33
- data/app/controllers/authors_controller.rb +6 -3
- data/app/controllers/base_controller.rb +9 -5
- data/app/controllers/comments_controller.rb +12 -8
- data/app/controllers/content_controller.rb +4 -2
- data/app/controllers/feedback_controller.rb +4 -2
- data/app/controllers/notes_controller.rb +5 -3
- data/app/controllers/setup_controller.rb +14 -10
- data/app/controllers/tags_controller.rb +6 -4
- data/app/controllers/text_controller.rb +2 -4
- data/app/controllers/textfilter_controller.rb +2 -0
- data/app/controllers/theme_controller.rb +14 -12
- data/app/controllers/xml_controller.rb +2 -0
- data/app/helpers/admin/base_helper.rb +28 -28
- data/app/helpers/admin/feedback_helper.rb +34 -24
- data/app/helpers/articles_helper.rb +4 -2
- data/app/helpers/authors_helper.rb +6 -3
- data/app/helpers/base_helper.rb +50 -34
- data/app/helpers/blog_helper.rb +4 -2
- data/app/helpers/xml_helper.rb +2 -0
- data/app/jobs/application_job.rb +2 -0
- data/app/mailers/notification_mailer.rb +5 -3
- data/app/models/ability.rb +25 -23
- data/app/models/archives_sidebar.rb +14 -11
- data/app/models/article.rb +44 -32
- data/app/models/article/factory.rb +14 -6
- data/app/models/blog.rb +85 -65
- data/app/models/comment.rb +10 -7
- data/app/models/config_manager.rb +4 -2
- data/app/models/content.rb +34 -40
- data/app/models/content_base.rb +9 -3
- data/app/models/feedback.rb +19 -16
- data/app/models/meta_sidebar.rb +5 -2
- data/app/models/note.rb +25 -23
- data/app/models/page.rb +8 -6
- data/app/models/page_sidebar.rb +4 -2
- data/app/models/ping.rb +2 -0
- data/app/models/post_type.rb +3 -1
- data/app/models/redirect.rb +11 -6
- data/app/models/redirection.rb +2 -0
- data/app/models/resource.rb +4 -2
- data/app/models/search_sidebar.rb +4 -2
- data/app/models/sidebar.rb +10 -5
- data/app/models/static_sidebar.rb +15 -12
- data/app/models/tag.rb +14 -10
- data/app/models/tag_sidebar.rb +6 -3
- data/app/models/text_filter.rb +85 -11
- data/app/models/trackback.rb +7 -11
- data/app/models/trigger.rb +6 -3
- data/app/models/user.rb +43 -42
- data/app/services/title_builder.rb +56 -45
- data/app/uploaders/resource_uploader.rb +7 -3
- data/app/views/accounts/confirm.html.erb +3 -3
- data/app/views/admin/content/_article_list.html.erb +23 -8
- data/app/views/admin/content/_form.html.erb +71 -47
- data/app/views/admin/content/edit.html.erb +1 -1
- data/app/views/admin/content/index.html.erb +25 -15
- data/app/views/admin/content/new.html.erb +2 -2
- data/app/views/admin/dashboard/_comment.html.erb +5 -5
- data/app/views/admin/dashboard/_comments.html.erb +2 -2
- data/app/views/admin/dashboard/_drafts.html.erb +5 -5
- data/app/views/admin/dashboard/_overview.html.erb +7 -9
- data/app/views/admin/dashboard/_welcome.html.erb +11 -11
- data/app/views/admin/dashboard/index.html.erb +12 -7
- data/app/views/admin/feedback/_button.html.erb +6 -6
- data/app/views/admin/feedback/_feedback.html.erb +3 -3
- data/app/views/admin/feedback/_ham.html.erb +27 -9
- data/app/views/admin/feedback/_spam.html.erb +26 -16
- data/app/views/admin/feedback/article.html.erb +20 -21
- data/app/views/admin/feedback/edit.html.erb +14 -15
- data/app/views/admin/feedback/{ham.js → ham.js.erb} +0 -0
- data/app/views/admin/feedback/index.html.erb +25 -23
- data/app/views/admin/feedback/{spam.js → spam.js.erb} +0 -0
- data/app/views/admin/migrations/show.html.erb +10 -11
- data/app/views/admin/notes/_form.html.erb +13 -13
- data/app/views/admin/notes/_list.html.erb +19 -8
- data/app/views/admin/notes/_note.html.erb +12 -7
- data/app/views/admin/notes/edit.html.erb +6 -1
- data/app/views/admin/notes/index.html.erb +5 -1
- data/app/views/admin/notes/show.html.erb +2 -2
- data/app/views/admin/pages/_form.html.erb +86 -77
- data/app/views/admin/pages/_pages.html.erb +11 -4
- data/app/views/admin/pages/edit.html.erb +3 -1
- data/app/views/admin/pages/index.html.erb +10 -6
- data/app/views/admin/pages/new.html.erb +3 -1
- data/app/views/admin/post_types/_index_and_form.html.erb +15 -16
- data/app/views/admin/post_types/edit.html.erb +1 -1
- data/app/views/admin/post_types/index.html.erb +1 -1
- data/app/views/admin/profiles/index.html.erb +2 -3
- data/app/views/admin/redirects/_index_and_form.html.erb +10 -11
- data/app/views/admin/redirects/edit.html.erb +1 -1
- data/app/views/admin/redirects/index.html.erb +1 -1
- data/app/views/admin/resources/index.html.erb +19 -16
- data/app/views/admin/seo/_general.html.erb +23 -47
- data/app/views/admin/seo/_permalinks.html.erb +14 -14
- data/app/views/admin/seo/_titles.html.erb +63 -64
- data/app/views/admin/seo/show.html.erb +14 -19
- data/app/views/admin/settings/display.html.erb +22 -25
- data/app/views/admin/settings/feedback.html.erb +31 -32
- data/app/views/admin/settings/index.html.erb +23 -24
- data/app/views/admin/settings/write.html.erb +21 -22
- data/app/views/admin/shared/_edit.html.erb +3 -3
- data/app/views/admin/shared/_menu.html.erb +26 -26
- data/app/views/admin/shared/_twitter_alert.html.erb +1 -1
- data/app/views/admin/sidebar/_config.html.erb +5 -5
- data/app/views/admin/sidebar/_target_sidebar.html.erb +4 -4
- data/app/views/admin/sidebar/index.html.erb +7 -7
- data/app/views/admin/tags/_index_and_form.html.erb +11 -12
- data/app/views/admin/tags/edit.html.erb +1 -1
- data/app/views/admin/tags/index.html.erb +1 -1
- data/app/views/admin/themes/index.html.erb +5 -6
- data/app/views/admin/users/_form.html.erb +34 -34
- data/app/views/admin/users/edit.html.erb +2 -2
- data/app/views/admin/users/index.html.erb +10 -12
- data/app/views/admin/users/new.html.erb +2 -2
- data/app/views/archives_sidebar/_content.html.erb +2 -2
- data/app/views/articles/_archives_article.html.erb +3 -3
- data/app/views/articles/_article.html.erb +7 -9
- data/app/views/articles/_article_author.html.erb +4 -0
- data/app/views/articles/_article_content.html.erb +2 -2
- data/app/views/articles/_article_excerpt.html.erb +2 -2
- data/app/views/articles/_article_links.html.erb +1 -1
- data/app/views/articles/_comment_errors.html.erb +1 -1
- data/app/views/articles/_comment_form.html.erb +12 -12
- data/app/views/articles/_comment_preview.html.erb +3 -3
- data/app/views/articles/_password_form.html.erb +4 -4
- data/app/views/articles/_trackback.html.erb +2 -2
- data/app/views/articles/archives.html.erb +1 -1
- data/app/views/articles/feedback_atom_feed.atom.builder +3 -1
- data/app/views/articles/feedback_rss_feed.rss.builder +9 -7
- data/app/views/articles/index_atom_feed.atom.builder +5 -3
- data/app/views/articles/index_rss_feed.rss.builder +10 -8
- data/app/views/articles/live_search.html.erb +3 -3
- data/app/views/articles/read.html.erb +16 -8
- data/app/views/articles/search.html.erb +2 -2
- data/app/views/articles/trackback.xml.builder +3 -1
- data/app/views/articles/view_page.html.erb +1 -1
- data/app/views/authors/show.html.erb +9 -9
- data/app/views/authors/show_atom_feed.atom.builder +4 -2
- data/app/views/authors/show_rss_feed.rss.builder +10 -8
- data/app/views/comments/_comment.html.erb +3 -3
- data/app/views/devise/mailer/reset_password_instructions.html.erb +7 -9
- data/app/views/devise/passwords/edit.html.erb +4 -4
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/new.html.erb +5 -5
- data/app/views/devise/sessions/new.html.erb +3 -3
- data/app/views/errors/404.html.erb +2 -2
- data/app/views/feedback/index.atom.builder +3 -1
- data/app/views/feedback/index.rss.builder +9 -7
- data/app/views/layouts/accounts.html.erb +26 -26
- data/app/views/layouts/administration.html.erb +31 -31
- data/app/views/layouts/default.html.erb +3 -3
- data/app/views/layouts/editor.html.erb +5 -19
- data/app/views/meta_sidebar/_content.html.erb +2 -2
- data/app/views/notes/_note.html.erb +1 -1
- data/app/views/notes/index.html.erb +1 -1
- data/app/views/notes/show_in_reply.html.erb +1 -1
- data/app/views/notification_mailer/_mail_footer.html.erb +3 -3
- data/app/views/notification_mailer/article.html.erb +2 -2
- data/app/views/notification_mailer/comment.html.erb +5 -5
- data/app/views/notification_mailer/notif_user.html.erb +1 -1
- data/app/views/page_sidebar/_content.html.erb +1 -1
- data/app/views/search_sidebar/_content.html.erb +2 -2
- data/app/views/settings/install.html.erb +2 -2
- data/app/views/setup/index.html.erb +7 -7
- data/app/views/shared/_atom_header.atom.builder +4 -2
- data/app/views/shared/_atom_item_article.atom.builder +11 -6
- data/app/views/shared/_atom_item_comment.atom.builder +4 -2
- data/app/views/shared/_atom_item_trackback.atom.builder +4 -2
- data/app/views/shared/_page_header.html.erb +9 -12
- data/app/views/shared/_rss_item_article.rss.builder +6 -3
- data/app/views/shared/_rss_item_comment.rss.builder +3 -1
- data/app/views/shared/_rss_item_trackback.rss.builder +3 -1
- data/app/views/sidebar/display_plugins.html.erb +1 -1
- data/app/views/tag_sidebar/_content.html.erb +1 -1
- data/app/views/tags/index.html.erb +1 -1
- data/app/views/xml/_googlesitemap_item_article.googlesitemap.builder +2 -0
- data/app/views/xml/_googlesitemap_item_category.googlesitemap.builder +2 -0
- data/app/views/xml/_googlesitemap_item_page.googlesitemap.builder +2 -0
- data/app/views/xml/_googlesitemap_item_tag.googlesitemap.builder +2 -0
- data/app/views/xml/sitemap.googlesitemap.builder +4 -2
- data/config/i18n-tasks.yml +0 -5
- data/config/initializers/devise.rb +10 -4
- data/config/initializers/mime_types.rb +3 -1
- data/config/locales/da.yml +134 -71
- data/config/locales/de.yml +142 -75
- data/config/locales/en.yml +128 -66
- data/config/locales/es-MX.yml +135 -69
- data/config/locales/fr.yml +167 -86
- data/config/locales/he.yml +128 -70
- data/config/locales/it.yml +136 -72
- data/config/locales/ja.yml +110 -64
- data/config/locales/lt.yml +153 -74
- data/config/locales/nb-NO.yml +123 -65
- data/config/locales/nl.yml +140 -75
- data/config/locales/pl.yml +160 -69
- data/config/locales/pt-BR.yml +137 -70
- data/config/locales/ro.yml +148 -70
- data/config/locales/ru.yml +161 -69
- data/config/locales/zh-CN.yml +106 -59
- data/config/locales/zh-TW.yml +109 -61
- data/config/routes.rb +68 -63
- data/db/migrate/113_initial_schema.rb +192 -190
- data/db/migrate/114_fixes_buggy_articles_and_notes.rb +9 -6
- data/db/migrate/115_drops_categories_for_tags.rb +3 -1
- data/db/migrate/20150207131657_add_missing_indexes.rb +2 -0
- data/db/migrate/20150807134129_simplify_redirect_relations.rb +8 -1
- data/db/migrate/20150808052637_add_blog_ids.rb +4 -2
- data/db/migrate/20150808191127_add_blog_id_to_redirects.rb +2 -0
- data/db/migrate/20150810094754_add_blog_id_to_tags.rb +2 -0
- data/db/migrate/20160108111120_add_devise_to_users.rb +4 -2
- data/db/migrate/20160108184201_move_last_connection_to_last_sign_in_at.rb +2 -0
- data/db/migrate/20160110094906_remove_profiles_rights.rb +2 -0
- data/db/migrate/20160605103918_replace_profile_id_with_string.rb +2 -0
- data/db/migrate/20160605154632_remove_profiles.rb +10 -5
- data/db/migrate/20160701061851_demand_blog_id_on_contents.rb +2 -0
- data/db/migrate/20160701062604_add_blog_id_to_resources.rb +2 -0
- data/db/migrate/20170528093024_move_resources_to_content.rb +2 -0
- data/db/migrate/20170528094923_move_tags_to_content.rb +2 -0
- data/db/migrate/20170528201606_remove_separate_published_flag.rb +2 -0
- data/db/migrate/20170605071626_remove_extra_state_columns_from_feedback.rb +2 -0
- data/db/migrate/20170702105201_remove_published_at_from_feedback.rb +2 -0
- data/db/migrate/20190208151235_add_text_filter_name_fields.rb +9 -0
- data/db/migrate/20190208152646_move_text_filter_to_name.rb +97 -0
- data/db/migrate/20190209155717_remove_text_filter_ids.rb +19 -0
- data/db/migrate/20190209160610_remove_text_filters.rb +17 -0
- data/db/migrate/20200413140440_add_unique_indexes.rb +10 -0
- data/db/seeds.rb +9 -19
- data/lib/email_notify.rb +3 -1
- data/lib/format.rb +4 -2
- data/lib/publify_core.rb +36 -35
- data/lib/publify_core/engine.rb +8 -6
- data/lib/publify_core/lang.rb +5 -1
- data/lib/publify_core/testing_support/dns_mock.rb +15 -0
- data/lib/publify_core/testing_support/factories.rb +240 -0
- data/lib/publify_core/testing_support/feed_assertions.rb +48 -0
- data/lib/publify_core/testing_support/fixtures/exploit.svg +4 -0
- data/lib/publify_core/testing_support/fixtures/fakepng.png +1 -0
- data/lib/publify_core/testing_support/fixtures/otherfile.txt +1 -0
- data/lib/publify_core/testing_support/fixtures/testfile.png +0 -0
- data/lib/publify_core/testing_support/fixtures/testfile.txt +1 -0
- data/lib/publify_core/testing_support/upload_fixtures.rb +15 -0
- data/lib/publify_core/version.rb +3 -1
- data/lib/publify_guid.rb +3 -1
- data/lib/publify_plugins.rb +10 -5
- data/lib/publify_textfilter_markdown.rb +38 -25
- data/lib/publify_textfilter_none.rb +5 -3
- data/lib/publify_textfilter_smartypants.rb +5 -3
- data/lib/publify_textfilter_textile.rb +7 -4
- data/lib/publify_textfilter_twitterfilter.rb +13 -7
- data/lib/publify_time.rb +4 -0
- data/lib/sidebar_field.rb +15 -13
- data/lib/sidebar_registry.rb +5 -3
- data/lib/spam_protection.rb +16 -13
- data/lib/tasks/i18n.rake +9 -0
- data/lib/tasks/manifest.rake +30 -0
- data/lib/tasks/publify_core_tasks.rake +2 -0
- data/lib/text_filter_plugin.rb +27 -25
- data/lib/theme.rb +5 -3
- data/lib/transforms.rb +22 -19
- metadata +217 -87
- data/app/assets/javascripts/widearea.js +0 -486
- data/app/assets/stylesheets/widearea.css +0 -133
- data/app/controllers/admin/textfilters_controller.rb +0 -6
- data/app/views/admin/dashboard/_inbound.html.erb +0 -31
- data/app/views/admin/notes/_header.html.erb +0 -6
- data/app/views/articles/_protected_article_content.html.erb +0 -6
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
class TagsController < ContentController
|
|
2
4
|
before_action :auto_discovery_feed, only: [:show, :index]
|
|
3
5
|
layout :theme_layout
|
|
@@ -5,7 +7,7 @@ class TagsController < ContentController
|
|
|
5
7
|
def index
|
|
6
8
|
@tags = Tag.page(params[:page]).per(100)
|
|
7
9
|
@page_title = controller_name.capitalize
|
|
8
|
-
@keywords =
|
|
10
|
+
@keywords = ""
|
|
9
11
|
@description = "Tags for #{this_blog.blog_name}"
|
|
10
12
|
end
|
|
11
13
|
|
|
@@ -13,7 +15,7 @@ class TagsController < ContentController
|
|
|
13
15
|
@tag = Tag.find_by!(name: params[:id])
|
|
14
16
|
|
|
15
17
|
@articles = @tag.
|
|
16
|
-
contents.includes(:blog, :user, :tags, :resources
|
|
18
|
+
contents.includes(:blog, :user, :tags, :resources).
|
|
17
19
|
published.page(params[:page]).per(10)
|
|
18
20
|
|
|
19
21
|
respond_to do |format|
|
|
@@ -30,12 +32,12 @@ class TagsController < ContentController
|
|
|
30
32
|
|
|
31
33
|
format.atom do
|
|
32
34
|
@articles = @articles[0, this_blog.limit_rss_display]
|
|
33
|
-
render_cached_xml
|
|
35
|
+
render_cached_xml "articles/index_atom_feed", @articles
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
format.rss do
|
|
37
39
|
@articles = @articles[0, this_blog.limit_rss_display]
|
|
38
|
-
render_cached_xml
|
|
40
|
+
render_cached_xml "articles/index_rss_feed", @articles
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
class ThemeController < ContentController
|
|
2
4
|
# Allow javascripts via Get request
|
|
3
5
|
skip_before_action :verify_authenticity_token, only: :javascripts
|
|
4
6
|
|
|
5
7
|
def stylesheets
|
|
6
|
-
render_theme_item(:stylesheets, params[:filename],
|
|
8
|
+
render_theme_item(:stylesheets, params[:filename], "text/css; charset=utf-8")
|
|
7
9
|
end
|
|
8
10
|
|
|
9
11
|
def javascripts
|
|
10
|
-
render_theme_item(:javascripts, params[:filename],
|
|
12
|
+
render_theme_item(:javascripts, params[:filename], "text/javascript; charset=utf-8")
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
def images
|
|
@@ -27,35 +29,35 @@ class ThemeController < ContentController
|
|
|
27
29
|
private
|
|
28
30
|
|
|
29
31
|
def render_theme_item(type, file, mime = nil)
|
|
30
|
-
return render_not_found if file.split(%r{[\\/]}).include?(
|
|
32
|
+
return render_not_found if file.split(%r{[\\/]}).include?("..")
|
|
31
33
|
|
|
32
34
|
src = this_blog.current_theme.path + "/#{type}/#{file}"
|
|
33
35
|
return render_not_found unless File.exist? src
|
|
34
36
|
|
|
35
37
|
mime ||= mime_for(file)
|
|
36
|
-
send_file(src, type: mime, disposition:
|
|
38
|
+
send_file(src, type: mime, disposition: "inline", stream: true)
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
def render_not_found
|
|
40
|
-
render plain:
|
|
42
|
+
render plain: "Not Found", status: :not_found
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
def mime_for(filename)
|
|
44
46
|
case filename.downcase
|
|
45
47
|
when /\.js$/
|
|
46
|
-
|
|
48
|
+
"text/javascript"
|
|
47
49
|
when /\.css$/
|
|
48
|
-
|
|
50
|
+
"text/css"
|
|
49
51
|
when /\.gif$/
|
|
50
|
-
|
|
52
|
+
"image/gif"
|
|
51
53
|
when /(\.jpg|\.jpeg)$/
|
|
52
|
-
|
|
54
|
+
"image/jpeg"
|
|
53
55
|
when /\.png$/
|
|
54
|
-
|
|
56
|
+
"image/png"
|
|
55
57
|
when /\.swf$/
|
|
56
|
-
|
|
58
|
+
"application/x-shockwave-flash"
|
|
57
59
|
else
|
|
58
|
-
|
|
60
|
+
"application/binary"
|
|
59
61
|
end
|
|
60
62
|
end
|
|
61
63
|
end
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Admin::BaseHelper
|
|
2
4
|
include ActionView::Helpers::DateHelper
|
|
3
5
|
|
|
4
|
-
def toggle_element(element, label = t(
|
|
6
|
+
def toggle_element(element, label = t("generic.change"))
|
|
5
7
|
link_to label, "##{element}", data: { toggle: :collapse }
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
def class_for_admin_state(sidebar, this_position)
|
|
9
11
|
case sidebar.admin_state
|
|
10
12
|
when :active
|
|
11
|
-
|
|
13
|
+
"active alert-info"
|
|
12
14
|
when :will_change_position
|
|
13
15
|
if this_position == sidebar.active_position
|
|
14
|
-
|
|
16
|
+
"will_change ghost"
|
|
15
17
|
else
|
|
16
|
-
|
|
18
|
+
"will_change alert-warning"
|
|
17
19
|
end
|
|
18
20
|
else
|
|
19
21
|
raise sidebar.admin_state.inspect
|
|
@@ -22,13 +24,7 @@ module Admin::BaseHelper
|
|
|
22
24
|
|
|
23
25
|
def text_filter_options
|
|
24
26
|
TextFilter.all.map do |filter|
|
|
25
|
-
[filter.description, filter]
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def text_filter_options_with_id
|
|
30
|
-
TextFilter.all.map do |filter|
|
|
31
|
-
[filter.description, filter.id]
|
|
27
|
+
[filter.description, filter.name]
|
|
32
28
|
end
|
|
33
29
|
end
|
|
34
30
|
|
|
@@ -39,37 +35,41 @@ module Admin::BaseHelper
|
|
|
39
35
|
end
|
|
40
36
|
|
|
41
37
|
def show_actions(item)
|
|
42
|
-
|
|
38
|
+
tag.div(class: "action", style: "") do
|
|
43
39
|
safe_join [button_to_edit(item),
|
|
44
40
|
button_to_delete(item),
|
|
45
|
-
button_to_short_url(item)],
|
|
41
|
+
button_to_short_url(item)], " "
|
|
46
42
|
end
|
|
47
43
|
end
|
|
48
44
|
|
|
49
|
-
def display_pagination(collection, cols, _first =
|
|
45
|
+
def display_pagination(collection, cols, _first = "", _last = "")
|
|
50
46
|
return if collection.count == 0
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
|
|
48
|
+
tag.tr do
|
|
49
|
+
tag.td(paginate(collection), class: "paginate", colspan: cols)
|
|
53
50
|
end
|
|
54
51
|
end
|
|
55
52
|
|
|
56
53
|
def button_to_edit(item)
|
|
57
|
-
link_to(
|
|
54
|
+
link_to(t("generic.edit"),
|
|
55
|
+
{ action: "edit", id: item.id },
|
|
56
|
+
{ class: "btn btn-primary btn-xs btn-action" })
|
|
58
57
|
end
|
|
59
58
|
|
|
60
59
|
def button_to_delete(item)
|
|
61
|
-
confirm_text = t(
|
|
62
|
-
element: item.class.
|
|
63
|
-
link_to(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
data: { confirm: confirm_text } })
|
|
60
|
+
confirm_text = t("admin.shared.destroy.are_you_sure",
|
|
61
|
+
element: item.class.model_name.human.downcase)
|
|
62
|
+
link_to(t("generic.delete"),
|
|
63
|
+
{ action: "destroy", id: item.id },
|
|
64
|
+
{ class: "btn btn-danger btn-xs btn-action", method: :delete,
|
|
65
|
+
data: { confirm: confirm_text } })
|
|
68
66
|
end
|
|
69
67
|
|
|
70
68
|
def button_to_short_url(item)
|
|
71
|
-
return
|
|
72
|
-
|
|
69
|
+
return "" if item.short_url.nil?
|
|
70
|
+
|
|
71
|
+
link_to(t("generic.short_url"), item.short_url,
|
|
72
|
+
class: "btn btn-success btn-xs btn-action")
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def twitter_available?(blog, user)
|
|
@@ -78,9 +78,9 @@ module Admin::BaseHelper
|
|
|
78
78
|
|
|
79
79
|
def menu_item(name, url)
|
|
80
80
|
if current_page? url
|
|
81
|
-
|
|
81
|
+
tag.li(link_to(name, "#"), class: "active")
|
|
82
82
|
else
|
|
83
|
-
|
|
83
|
+
tag.li(link_to(name, url))
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
end
|
|
@@ -1,42 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Admin::FeedbackHelper
|
|
2
4
|
def comment_class(state)
|
|
3
|
-
return
|
|
4
|
-
return
|
|
5
|
-
return
|
|
6
|
-
|
|
5
|
+
return "label-info" if state.to_s.casecmp("presumed_ham").zero?
|
|
6
|
+
return "label-warning" if state.to_s.casecmp("presumed_spam").zero?
|
|
7
|
+
return "label-success" if state.to_s.casecmp("ham").zero?
|
|
8
|
+
|
|
9
|
+
"label-danger"
|
|
7
10
|
end
|
|
8
11
|
|
|
9
|
-
def show_feedback_actions(item, context =
|
|
10
|
-
return unless can? :manage,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
end
|
|
12
|
+
def show_feedback_actions(item, context = "listing")
|
|
13
|
+
return unless can? :manage, "admin/feedback"
|
|
14
|
+
|
|
15
|
+
safe_join [
|
|
16
|
+
change_status(item, context),
|
|
17
|
+
button_to_edit_comment(item),
|
|
18
|
+
button_to_delete_comment(item),
|
|
19
|
+
button_to_conversation(item),
|
|
20
|
+
], " "
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
def button_to_edit_comment(item)
|
|
22
|
-
link_to(
|
|
24
|
+
link_to(t("generic.edit"),
|
|
25
|
+
{ controller: "admin/feedback", action: "edit", id: item.id },
|
|
26
|
+
{ class: "btn btn-primary btn-xs btn-action" })
|
|
23
27
|
end
|
|
24
28
|
|
|
25
29
|
def button_to_delete_comment(item)
|
|
26
|
-
link_to(
|
|
30
|
+
link_to(t("generic.delete"),
|
|
31
|
+
{ controller: "admin/feedback", action: "destroy", id: item.id },
|
|
32
|
+
{ class: "btn btn-danger btn-xs btn-action" })
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
def button_to_conversation(item)
|
|
30
|
-
link_to(
|
|
36
|
+
link_to(t("generic.conversation"),
|
|
37
|
+
{ controller: "admin/feedback", action: "article", id: item.article_id },
|
|
38
|
+
{ class: "btn btn-default btn-xs btn-action" })
|
|
31
39
|
end
|
|
32
40
|
|
|
33
|
-
def change_status(item, context =
|
|
34
|
-
spammy = item.state.to_s.downcase
|
|
35
|
-
|
|
36
|
-
button_type = spammy ?
|
|
41
|
+
def change_status(item, context = "listing")
|
|
42
|
+
spammy = item.state.to_s.downcase.include? "spam"
|
|
43
|
+
link_text = spammy ? t("generic.mark_as_ham") : t("generic.mark_as_spam")
|
|
44
|
+
button_type = spammy ? "success" : "warning"
|
|
37
45
|
|
|
38
|
-
link_to(
|
|
39
|
-
{ controller:
|
|
40
|
-
|
|
46
|
+
link_to(link_text,
|
|
47
|
+
{ controller: "admin/feedback", action: "change_state",
|
|
48
|
+
id: item.id, context: context },
|
|
49
|
+
{ class: "btn btn-#{button_type} btn-xs btn-action",
|
|
50
|
+
method: :post, remote: true })
|
|
41
51
|
end
|
|
42
52
|
end
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ArticlesHelper
|
|
2
4
|
def tag_links(article)
|
|
3
5
|
tag_arr = article.tags.map do |tag|
|
|
4
|
-
link_to tag.display_name, tag.permalink_url(nil, true), rel:
|
|
6
|
+
link_to tag.display_name, tag.permalink_url(nil, true), rel: "tag"
|
|
5
7
|
end
|
|
6
|
-
safe_join(tag_arr.sort,
|
|
8
|
+
safe_join(tag_arr.sort, ", ")
|
|
7
9
|
end
|
|
8
10
|
end
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AuthorsHelper
|
|
2
4
|
include BlogHelper
|
|
3
5
|
|
|
4
6
|
def display_profile_item(item, item_desc)
|
|
5
7
|
return if item.blank?
|
|
8
|
+
|
|
6
9
|
item = link_to(item, item) if is_url?(item)
|
|
7
|
-
|
|
8
|
-
safe_join([item_desc, item],
|
|
10
|
+
tag.li do
|
|
11
|
+
safe_join([item_desc, item], " ")
|
|
9
12
|
end
|
|
10
13
|
end
|
|
11
14
|
|
|
@@ -18,7 +21,7 @@ module AuthorsHelper
|
|
|
18
21
|
def author_description(user)
|
|
19
22
|
return if user.description.blank?
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
tag.div(user.description, id: "author-description")
|
|
22
25
|
end
|
|
23
26
|
|
|
24
27
|
def author_link(article)
|
data/app/helpers/base_helper.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# Methods added to this helper will be available to all templates in the application.
|
|
2
|
-
require
|
|
4
|
+
require "digest/sha1"
|
|
3
5
|
|
|
4
6
|
module BaseHelper
|
|
5
7
|
include BlogHelper
|
|
@@ -17,11 +19,12 @@ module BaseHelper
|
|
|
17
19
|
rescue => e
|
|
18
20
|
logger.error e
|
|
19
21
|
logger.error e.backtrace.join("\n")
|
|
20
|
-
I18n.t(
|
|
22
|
+
I18n.t("errors.render_sidebar")
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def render_sidebar(sidebar)
|
|
24
|
-
render_to_string(partial: sidebar.content_partial, locals: sidebar.to_locals_hash,
|
|
26
|
+
render_to_string(partial: sidebar.content_partial, locals: sidebar.to_locals_hash,
|
|
27
|
+
layout: false)
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
def themeable_stylesheet_link_tag(name)
|
|
@@ -38,10 +41,11 @@ module BaseHelper
|
|
|
38
41
|
controller.send(:render_to_string, *args, &block)
|
|
39
42
|
end
|
|
40
43
|
|
|
41
|
-
def link_to_permalink(item, title, anchor = nil, style = nil, nofollow = nil,
|
|
44
|
+
def link_to_permalink(item, title, anchor = nil, style = nil, nofollow = nil,
|
|
45
|
+
only_path = false)
|
|
42
46
|
options = {}
|
|
43
47
|
options[:class] = style if style
|
|
44
|
-
options[:rel] =
|
|
48
|
+
options[:rel] = "nofollow" if nofollow
|
|
45
49
|
url = item.permalink_url(anchor, only_path)
|
|
46
50
|
if url
|
|
47
51
|
link_to title, url, options
|
|
@@ -54,9 +58,10 @@ module BaseHelper
|
|
|
54
58
|
begin
|
|
55
59
|
avatar_class = this_blog.plugin_avatar.constantize
|
|
56
60
|
rescue NameError
|
|
57
|
-
return
|
|
61
|
+
return ""
|
|
58
62
|
end
|
|
59
|
-
return
|
|
63
|
+
return "" unless avatar_class.respond_to?(:get_avatar)
|
|
64
|
+
|
|
60
65
|
avatar_class.get_avatar(options)
|
|
61
66
|
end
|
|
62
67
|
|
|
@@ -66,18 +71,21 @@ module BaseHelper
|
|
|
66
71
|
|
|
67
72
|
def markup_help_popup(markup, text)
|
|
68
73
|
if markup && markup.commenthelp.size > 1
|
|
69
|
-
link_to
|
|
74
|
+
link_to(text,
|
|
75
|
+
url_for(controller: "articles", action: "markup_help", id: markup.name),
|
|
76
|
+
onclick: "return popup(this, 'Publify Markup Help')")
|
|
70
77
|
else
|
|
71
|
-
|
|
78
|
+
""
|
|
72
79
|
end
|
|
73
80
|
end
|
|
74
81
|
|
|
75
82
|
def onhover_show_admin_tools(type, id = nil)
|
|
76
|
-
admin_id = "#admin_#{[type, id].compact.join(
|
|
83
|
+
admin_id = "#admin_#{[type, id].compact.join("_")}"
|
|
77
84
|
tag = []
|
|
78
|
-
tag << %{ onmouseover="if (getCookie('publify_user_profile') == 'admin')
|
|
85
|
+
tag << %{ onmouseover="if (getCookie('publify_user_profile') == 'admin')\
|
|
86
|
+
{ $('#{admin_id}').show(); }" }
|
|
79
87
|
tag << %{ onmouseout="$('#{admin_id}').hide();" }
|
|
80
|
-
safe_join(tag,
|
|
88
|
+
safe_join(tag, " ")
|
|
81
89
|
end
|
|
82
90
|
|
|
83
91
|
def feed_title
|
|
@@ -94,51 +102,55 @@ module BaseHelper
|
|
|
94
102
|
content.html(what)
|
|
95
103
|
end
|
|
96
104
|
|
|
97
|
-
def display_user_avatar(user, size =
|
|
105
|
+
def display_user_avatar(user, size = "avatar", klass = "alignleft")
|
|
98
106
|
if user.resource.present?
|
|
99
107
|
avatar_path = case size
|
|
100
|
-
when
|
|
108
|
+
when "thumb"
|
|
101
109
|
user.resource.upload.thumb.url
|
|
102
|
-
when
|
|
110
|
+
when "medium"
|
|
103
111
|
user.resource.upload.medium.url
|
|
104
|
-
when
|
|
112
|
+
when "large"
|
|
105
113
|
user.resource.upload.large.url
|
|
106
114
|
else
|
|
107
115
|
user.resource.upload.avatar.url
|
|
108
116
|
end
|
|
109
117
|
return if avatar_path.nil?
|
|
118
|
+
|
|
110
119
|
avatar_url = this_blog.file_url(avatar_path)
|
|
111
120
|
elsif user.twitter_profile_image.present?
|
|
112
121
|
avatar_url = user.twitter_profile_image
|
|
113
122
|
end
|
|
114
123
|
return unless avatar_url
|
|
124
|
+
|
|
115
125
|
image_tag(avatar_url, alt: user.nickname, class: klass)
|
|
116
126
|
end
|
|
117
127
|
|
|
118
128
|
def author_picture(status)
|
|
119
129
|
return if status.user.twitter_profile_image.blank?
|
|
120
130
|
|
|
121
|
-
image_tag(status.user.twitter_profile_image, class:
|
|
131
|
+
image_tag(status.user.twitter_profile_image, class: "alignleft",
|
|
132
|
+
alt: status.user.nickname)
|
|
122
133
|
end
|
|
123
134
|
|
|
124
135
|
def page_header_includes
|
|
125
136
|
content_array.map(&:whiteboard).map do |w|
|
|
126
|
-
w.select { |k, _v| k
|
|
137
|
+
w.select { |k, _v| k.start_with?("page_header_") }.map do |_, v|
|
|
127
138
|
v = v.chomp
|
|
128
139
|
# trim the same number of spaces from the beginning of each line
|
|
129
140
|
# this way plugins can indent nicely without making ugly source output
|
|
130
|
-
spaces = /\A[ \t]*/.match(v)[0].gsub(/\t/,
|
|
131
|
-
|
|
141
|
+
spaces = /\A[ \t]*/.match(v)[0].gsub(/\t/, " ")
|
|
142
|
+
# add 2 spaces to line up with the assumed position of the surrounding tags
|
|
143
|
+
v.gsub!(/^#{spaces}/, " ")
|
|
132
144
|
end
|
|
133
145
|
end.flatten.uniq.join("\n")
|
|
134
146
|
end
|
|
135
147
|
|
|
136
148
|
def feed_atom
|
|
137
|
-
feed_for(
|
|
149
|
+
feed_for("atom")
|
|
138
150
|
end
|
|
139
151
|
|
|
140
152
|
def feed_rss
|
|
141
|
-
feed_for(
|
|
153
|
+
feed_for("rss")
|
|
142
154
|
end
|
|
143
155
|
|
|
144
156
|
def content_array
|
|
@@ -163,40 +175,43 @@ module BaseHelper
|
|
|
163
175
|
|
|
164
176
|
def display_date_and_time(timestamp)
|
|
165
177
|
return if timestamp.blank?
|
|
166
|
-
|
|
178
|
+
|
|
179
|
+
if this_blog.date_format == "setting_date_format_distance_of_time_in_words"
|
|
167
180
|
timeago_tag timestamp, date_only: false
|
|
168
181
|
else
|
|
169
|
-
"#{display_date(timestamp)} #{t(
|
|
182
|
+
"#{display_date(timestamp)} #{t("helper.at")} #{display_time(timestamp)}"
|
|
170
183
|
end
|
|
171
184
|
end
|
|
172
185
|
|
|
173
186
|
def show_meta_keyword
|
|
174
187
|
return unless this_blog.use_meta_keyword
|
|
175
|
-
|
|
188
|
+
|
|
189
|
+
meta_tag "keywords", @keywords if @keywords.present?
|
|
176
190
|
end
|
|
177
191
|
|
|
178
192
|
def stop_index_robots?(blog)
|
|
179
193
|
stop = (params[:year].present? || params[:page].present?)
|
|
180
|
-
stop = blog.unindex_tags if controller_name ==
|
|
181
|
-
stop = blog.unindex_categories if controller_name ==
|
|
194
|
+
stop = blog.unindex_tags if controller_name == "tags"
|
|
195
|
+
stop = blog.unindex_categories if controller_name == "categories"
|
|
182
196
|
stop
|
|
183
197
|
end
|
|
184
198
|
|
|
185
199
|
def get_reply_context_url(reply)
|
|
186
|
-
link_to(reply[
|
|
200
|
+
link_to(reply["user"]["name"],
|
|
201
|
+
reply["user"]["entities"]["url"]["urls"][0]["expanded_url"])
|
|
187
202
|
rescue
|
|
188
|
-
link_to(reply[
|
|
203
|
+
link_to(reply["user"]["name"], "https://twitter.com/#{reply["user"]["name"]}")
|
|
189
204
|
end
|
|
190
205
|
|
|
191
206
|
def get_reply_context_twitter_link(reply)
|
|
192
|
-
link_to(display_date_and_time(reply[
|
|
193
|
-
"https://twitter.com/#{reply[
|
|
207
|
+
link_to(display_date_and_time(reply["created_at"].to_time.in_time_zone),
|
|
208
|
+
"https://twitter.com/#{reply["user"]["screen_name"]}/status/#{reply["id_str"]}")
|
|
194
209
|
end
|
|
195
210
|
|
|
196
211
|
private
|
|
197
212
|
|
|
198
213
|
def feed_for(type)
|
|
199
|
-
if params[:action] ==
|
|
214
|
+
if params[:action] == "search"
|
|
200
215
|
url_for(only_path: false, format: type, q: params[:q])
|
|
201
216
|
elsif !@article.nil?
|
|
202
217
|
@article.feed_url(type)
|
|
@@ -211,7 +226,8 @@ module BaseHelper
|
|
|
211
226
|
# show the excerpt, or else we show the body
|
|
212
227
|
def fetch_html_content_for_feeds(item, this_blog)
|
|
213
228
|
if item.password_protected?
|
|
214
|
-
"<p>This article is password protected. Please
|
|
229
|
+
"<p>This article is password protected. Please " \
|
|
230
|
+
"<a href='#{item.permalink_url}'>fill in your password</a> to read it</p>"
|
|
215
231
|
elsif this_blog.hide_extended_on_rss
|
|
216
232
|
if item.excerpt? && !item.excerpt.empty?
|
|
217
233
|
item.excerpt
|
|
@@ -235,7 +251,7 @@ module BaseHelper
|
|
|
235
251
|
if this_blog.dofollowify
|
|
236
252
|
link_to(text, url)
|
|
237
253
|
else
|
|
238
|
-
link_to(text, url, rel:
|
|
254
|
+
link_to(text, url, rel: "nofollow")
|
|
239
255
|
end
|
|
240
256
|
end
|
|
241
257
|
end
|