comfy_archive 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73980cbf5c9dfe489601266553d0ab4a16b369758e8f379d60861ea7f0e9cbdf
4
- data.tar.gz: 6f6b3c14ba6754b8cb01f50a3eabf2149fcad1427c960f63e9db66d4a03797a5
3
+ metadata.gz: c55ea63ba29ffb508628ff2e03e49526f078960ae53897f39bae7d87169e0f9b
4
+ data.tar.gz: 866ab58373fcbc74ba56b311359a74b01d1c891dd3a01a0badf16b8193c93f2d
5
5
  SHA512:
6
- metadata.gz: c635e6a7f305a8b9b4915c7f7051fe2c2ef3883ee0d66ec09c13761eb265da3fe33a89d95757796c8b0e3ba26f85886c713c2356543f973a9f7463a169e642a6
7
- data.tar.gz: 3a691a6cf2f79254787dd0dcf3284fd1d4ac2ef52285ea5b5660d96712d096175a45b6b8df9772e7cedd9684c2527b5e2f5de6b852328a884edc6eaef1feab9c
6
+ metadata.gz: a54e9ae15d7ec66c381ea2027a7656721dcde69927e57649d9c47946080fe1ab3faa933743125304519e67f9104ccf601e264f957d0ea7e8985c9f7f50f2a2e8
7
+ data.tar.gz: 8ef5a1444f1dadf90fc75e2ced725cb62199c062b35735868a9933477f3a414c05d4e98ea8e740281b7f9e0442d14ad0f2b8d198ef4303dacd917b3a4b297080
data/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  Copyright 2013-2018 Oleg Khabarov
2
- Copyright 2019 Discovery Map International, Inc.
2
+ Copyright 2019-2022 Discovery Map International, Inc.
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
5
5
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -12,7 +12,7 @@ Make sure that you have [ComfortableMexicanSofa](https://github.com/comfy/comfor
12
12
 
13
13
  1) Add gem definition to your Gemfile:
14
14
 
15
- gem "comfy_archive", "~> 0.2.0"
15
+ gem "comfy_archive", "~> 0.3.0"
16
16
 
17
17
  2) From your Rails project's root run:
18
18
 
@@ -25,21 +25,24 @@ Make sure that you have [ComfortableMexicanSofa](https://github.com/comfy/comfor
25
25
  comfy_route :archive_admin
26
26
  comfy_route :archive
27
27
 
28
- 4) You should also find view templates in your `/app/views/comfy/archive` folder. Feel free to adjust them as you see fit.
28
+ 4) You should also find view templates in your `/app/views/comfy/archive` folder. Feel free to adjust them as you see fit
29
29
 
30
30
  ## Configuration
31
31
 
32
- 1) Add a `datetime` tag to the layout used by any page which will be ordered chronologically under an index page, then set the field to a valid date & time in the pages themselves.
32
+ 1) Add a `datetime` tag to the layout used by any page which will be ordered chronologically under an index page, then set the field to a valid date & time in the pages themselves
33
33
 
34
34
  2) Add a new Archive Index, selecting the parent page (_Important_: can not be the root page!) which will act as an index for child pages and enter the name of the `datetime` tag you created in Step 1
35
35
 
36
+ 3) Optionally, create a `config/initializers/comfy_archive.rb` file to override default configuration options
37
+
36
38
  ## Architecture
37
39
 
38
40
  * `ComfyArchive`: Rails Engine which manages configuration, adds scopes & associations to `Comfy::Cms::Site` & `Comfy::Cms::Page` models, and adds route matching methods
41
+ * `Comfy::ArchiveHelper`: Helper methods for generating links to chronological & category archive pages
39
42
  * `Comfy::Archive::Index`: A model which represents pages which will become chronological archive pages, it has a `Comfy::Cms::Page` association and also the name of the page's `datetime` fragment to use for chronological ordering
40
43
  * `Comfy::Admin::Archive::IndicesController`: A Comfortable Mexican Sofa admin controller for managing `Comfy::Archive::Index` models
41
44
  * `Comfy::Archive::IndexController`: A controller for rendering `Comfy::Archive::Index` pages, plus chronological & categorical archive pages
42
45
 
43
46
  ---
44
47
 
45
- Copyright (c) 2019 Discovery Map International, Inc.
48
+ Copyright (c) 2019-2022 Discovery Map International, Inc.
@@ -22,8 +22,8 @@ class Comfy::Archive::IndexController < Comfy::Cms::ContentController
22
22
  scope = scope.for_month(@cms_index.datetime_fragment, @month)
23
23
  end
24
24
  elsif params[:category]
25
- @category = CGI.unescape(params[:category])
26
- scope = scope.for_category(@category).distinct(false)
25
+ load_category
26
+ scope = scope.for_category(@category.label).distinct(false)
27
27
  end
28
28
 
29
29
  @archive_pages = comfy_paginate(scope, per_page: ComfyArchive.config.posts_per_page)
@@ -46,4 +46,24 @@ class Comfy::Archive::IndexController < Comfy::Cms::ContentController
46
46
  end
47
47
  end
48
48
 
49
+ def load_category
50
+ @category = ComfyArchive.config.parameterize_category ? find_cms_category_by_parameterized_label(params[:category]) : Comfy::Cms::Category.find_by(label: CGI.unescape(params[:category]))
51
+ unless @category
52
+ if ComfyArchive.config.strict_categories
53
+ if find_cms_page_by_full_path("/404")
54
+ render_page(:not_found)
55
+ else
56
+ message = "Page Not Found at: \"#{params[:cms_path]}/category/#{params[:category]}\""
57
+ raise ActionController::RoutingError, message
58
+ end
59
+ else
60
+ @category = Comfy::Cms::Category.new(label: ComfyArchive.config.parameterize_category ? params[:category].gsub('-', ' ').titleize : CGI.unescape(params[:category]))
61
+ end
62
+ end
63
+ end
64
+
65
+ def find_cms_category_by_parameterized_label(parameterized)
66
+ @cms_index.categories.find { |c| c.label.parameterize == parameterized }
67
+ end
68
+
49
69
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Comfy
4
+ module ArchiveHelper
5
+
6
+ require 'cgi'
7
+
8
+ def comfy_archive_link_to_month(year, month)
9
+ unless !@cms_index || year.blank? || month.blank?
10
+ date = [I18n.t("date.month_names")[month.to_i], year].join(' ')
11
+ link_to date, comfy_archive_pages_of_month_path(@cms_index.url(relative: false), year: year, month: month)
12
+ end
13
+ end
14
+
15
+ def comfy_archive_link_to_category(category)
16
+ if category.is_a? Comfy::Cms::Category
17
+ label = category.label
18
+ elsif category.is_a? String
19
+ label = category
20
+ end
21
+ unless !@cms_index || category.blank?
22
+ encoded_label = ComfyArchive.config.parameterize_category ? label.parameterize : CGI.escape(label)
23
+ link_to label, comfy_archive_pages_of_category_path(@cms_index.url(relative: false), encoded_label)
24
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -1,5 +1,3 @@
1
- - require 'cgi'
2
-
3
1
  - site_path = @cms_index.url(relative: false)
4
2
 
5
3
  %h2
@@ -23,9 +21,8 @@
23
21
  - raise NotImplementedError, "Unknown adapter type '#{ActiveRecord::Base.connection.adapter_name}'"
24
22
  - dates.each do |(year, month)|
25
23
  %li
26
- - date = [I18n.t("date.month_names")[month.to_i], year].join(" ")
27
- = link_to date, comfy_archive_pages_of_month_path(site_path, year: year, month: month)
24
+ = comfy_archive_link_to_month year, month
28
25
 
29
26
  %h4 Categories
30
27
  - @cms_index.categories(true).each do |category|
31
- = link_to category.label, comfy_archive_pages_of_category_path(site_path, category: CGI.escape(category.label))
28
+ = comfy_archive_link_to_category category
@@ -6,9 +6,17 @@ module ComfyArchive
6
6
  # Number of posts per page. Default is 10
7
7
  attr_accessor :posts_per_page
8
8
 
9
+ # Parameterize category label in paths. Default is false
10
+ attr_accessor :parameterize_category
11
+
12
+ # Generate 404 error or throw warning for invalid catgegories. Default is true
13
+ attr_accessor :strict_categories
14
+
9
15
  # Configuration defaults
10
16
  def initialize
11
- @posts_per_page = 10
17
+ @posts_per_page = 10
18
+ @parameterize_category = false
19
+ @strict_categories = true
12
20
  end
13
21
 
14
22
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ComfyArchive
4
4
 
5
- VERSION = "0.2.0"
5
+ VERSION = "0.3.0"
6
6
 
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comfy_archive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Morgan Aldridge
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-05 00:00:00.000000000 Z
11
+ date: 2022-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: comfortable_mexican_sofa
@@ -39,6 +39,7 @@ files:
39
39
  - app/assets/config/manifest.js
40
40
  - app/controllers/comfy/admin/archive/indices_controller.rb
41
41
  - app/controllers/comfy/archive/index_controller.rb
42
+ - app/helpers/comfy/archive_helper.rb
42
43
  - app/models/comfy/archive/index.rb
43
44
  - app/views/comfy/admin/archive/indices/_form.html.haml
44
45
  - app/views/comfy/admin/archive/indices/edit.html.haml
@@ -79,7 +80,7 @@ homepage: http://github.com/discoverymap/comfy-archive
79
80
  licenses:
80
81
  - MIT
81
82
  metadata: {}
82
- post_install_message:
83
+ post_install_message:
83
84
  rdoc_options: []
84
85
  require_paths:
85
86
  - lib
@@ -94,8 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
95
  - !ruby/object:Gem::Version
95
96
  version: '0'
96
97
  requirements: []
97
- rubygems_version: 3.0.3
98
- signing_key:
98
+ rubygems_version: 3.0.8
99
+ signing_key:
99
100
  specification_version: 4
100
101
  summary: Chronological Archives Engine for ComfortableMexicanSofa
101
102
  test_files: []