cmor_cms 0.0.54.pre → 0.0.59.pre
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/app/concerns/cmor/cms/models/database_template_concern.rb +63 -0
- data/app/middlewares/cmor/cms/redirect_middleware.rb +34 -0
- data/app/models/cmor/cms/layout.rb +1 -1
- data/app/models/cmor/cms/page.rb +1 -1
- data/app/models/cmor/cms/partial.rb +1 -1
- data/app/models/cmor/cms/redirect.rb +13 -0
- data/app/models/cmor/cms/template.rb +1 -1
- data/config/locales/de.yml +8 -0
- data/config/locales/en.yml +8 -0
- data/config/routes.rb +3 -1
- data/db/migrate/20200813085847_create_cmor_cms_redirects.rb +12 -0
- data/lib/cmor/cms.rb +0 -2
- data/lib/cmor/cms/action_view/template_renderer_patch.rb +3 -2
- data/lib/cmor/cms/engine.rb +8 -0
- data/lib/cmor_cms.rb +1 -0
- data/spec/factories/cmor/cms/redirects.rb +6 -0
- metadata +26 -9
- data/config/initializers/textile_support.rb +0 -3
- data/lib/cmor/cms/database_template.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e185b056371db7d645ccb896b3a87ca63aa61427fa0bf4d27f4f8b3ae2c9cee4
|
4
|
+
data.tar.gz: b7942385f07c0dbbce28f8b129229635ab4c00af1e8ed6d92d8c29322409ffaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d976aee1a3eab730e130b8a842123d80c44342b265cdf989ac6752847a6615fa8a117393abf47db4e954f9bf64a1ce86ed6a2572957ee3846f646c0ad128979
|
7
|
+
data.tar.gz: cf09c9a732f6fdd53213e84fa1d220e2056985ba11fb682bb5e996fb0f5ce616db7359db10f1cf1612d9c2a55b8ad2c9d6bbfd268a081093cbfde22d25bfe4a2
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Cms
|
3
|
+
module Models
|
4
|
+
module DatabaseTemplateConcern
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
# callbacks
|
9
|
+
after_initialize :set_defaults
|
10
|
+
before_validation :assert_trailing_slash_on_pathname
|
11
|
+
after_save :clear_resolver_cache
|
12
|
+
|
13
|
+
# validations
|
14
|
+
validates :basename, presence: true,
|
15
|
+
uniqueness: { scope: [:pathname, :locale, :format, :handler] }
|
16
|
+
validates :handler, inclusion: { in: ActionView::Template::Handlers.extensions.map(&:to_s) }
|
17
|
+
validates :locale, inclusion: { in: I18n.available_locales.map(&:to_s) },
|
18
|
+
allow_nil: true,
|
19
|
+
allow_blank: true
|
20
|
+
validates :format, inclusion: { in: Mime::SET.symbols.map(&:to_s) },
|
21
|
+
allow_nil: true,
|
22
|
+
allow_blank: true
|
23
|
+
validates :pathname, presence: true
|
24
|
+
end
|
25
|
+
|
26
|
+
def human
|
27
|
+
"#{self.class.name}: #{path_and_filename}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def filename
|
31
|
+
filename = basename.nil? ? '' : basename.dup
|
32
|
+
filename << ".#{locale}" if locale.present?
|
33
|
+
filename << ".#{format}" if format.present?
|
34
|
+
filename << ".#{handler}" if handler.present?
|
35
|
+
filename
|
36
|
+
end
|
37
|
+
|
38
|
+
def path_and_filename
|
39
|
+
"#{pathname}#{filename}"
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def assert_trailing_slash_on_pathname
|
45
|
+
self.pathname = '/' and return if pathname.blank?
|
46
|
+
pathname << '/' unless pathname.end_with?('/')
|
47
|
+
end
|
48
|
+
|
49
|
+
def clear_resolver_cache
|
50
|
+
klass = "#{self.class.name}Resolver"
|
51
|
+
klass.constantize.instance.clear_cache
|
52
|
+
end
|
53
|
+
|
54
|
+
def set_defaults
|
55
|
+
if new_record?
|
56
|
+
self.locale ||= I18n.default_locale.to_s
|
57
|
+
self.handler ||= Cmor::Cms::Configuration.default_handlers[self.class.name.demodulize.underscore.to_sym].to_s
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Cms
|
3
|
+
class RedirectMiddleware
|
4
|
+
def initialize(app)
|
5
|
+
@app = app
|
6
|
+
end
|
7
|
+
|
8
|
+
def redirect_to(location)
|
9
|
+
[301, {'Location' => location, 'Content-Type' => 'text/html'}, ['Moved Permanently']]
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
req = Rack::Request.new(env)
|
14
|
+
if redirect = find_redirect_for(req.path)
|
15
|
+
return redirect_to(redirect.target)
|
16
|
+
end
|
17
|
+
@app.call(env)
|
18
|
+
end
|
19
|
+
|
20
|
+
def find_redirect_for(request_path)
|
21
|
+
Cmor::Cms::Redirect.published.where(source: request_path).first
|
22
|
+
end
|
23
|
+
# def call(env)
|
24
|
+
# req = Rack::Request.new(env)
|
25
|
+
# return redirect(redirects[req.path]) if redirects.include?(req.path)
|
26
|
+
# @app.call(env)
|
27
|
+
# end
|
28
|
+
|
29
|
+
# def redirects
|
30
|
+
# { '/source' => '/target' }
|
31
|
+
# end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/app/models/cmor/cms/page.rb
CHANGED
data/config/locales/de.yml
CHANGED
@@ -22,6 +22,9 @@ de:
|
|
22
22
|
cmor/cms/partial:
|
23
23
|
one: Fragment
|
24
24
|
other: Fragmente
|
25
|
+
cmor/cms/redirect:
|
26
|
+
one: Umleitung
|
27
|
+
other: Umleitungen
|
25
28
|
cmor/cms/template:
|
26
29
|
one: Vorlage
|
27
30
|
other: Vorlagen
|
@@ -113,6 +116,11 @@ de:
|
|
113
116
|
locale: Sprache
|
114
117
|
path_and_filename: Dateipfad
|
115
118
|
pathname: Pfad
|
119
|
+
cmor/cms/redirect:
|
120
|
+
<<: *defaults
|
121
|
+
source: Quelle
|
122
|
+
target: Ziel
|
123
|
+
position: Position
|
116
124
|
cmor/cms/template:
|
117
125
|
<<: *defaults
|
118
126
|
basename: Name
|
data/config/locales/en.yml
CHANGED
@@ -22,6 +22,9 @@ en:
|
|
22
22
|
cmor/cms/partial:
|
23
23
|
one: Partial
|
24
24
|
other: Partials
|
25
|
+
cmor/cms/redirect:
|
26
|
+
one: Umleitung
|
27
|
+
other: Umleitungen
|
25
28
|
cmor/cms/template:
|
26
29
|
one: Template
|
27
30
|
other: Templates
|
@@ -111,6 +114,11 @@ en:
|
|
111
114
|
locale: Language
|
112
115
|
path_and_filename: Filepath
|
113
116
|
pathname: Path
|
117
|
+
cmor/cms/redirect:
|
118
|
+
<<: *defaults
|
119
|
+
source: Source
|
120
|
+
target: Target
|
121
|
+
position: Position
|
114
122
|
cmor/cms/template:
|
115
123
|
<<: *defaults
|
116
124
|
basename: Name
|
data/config/routes.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Cmor::Cms::Engine.routes.draw do
|
2
2
|
localized do
|
3
|
-
get '/*page', to: 'page#respond', as: :page
|
3
|
+
get '/*page', to: 'page#respond', as: :page, constraints: lambda { |req|
|
4
|
+
req.path.exclude? 'rails/active_storage'
|
5
|
+
}
|
4
6
|
get '/', to: 'page#respond', page: 'home'
|
5
7
|
end
|
6
8
|
end
|
data/lib/cmor/cms.rb
CHANGED
@@ -4,8 +4,6 @@ require 'cmor/cms/action_view/template_renderer_patch'
|
|
4
4
|
require 'cmor/cms/engine'
|
5
5
|
require 'cmor/cms/configuration'
|
6
6
|
|
7
|
-
require 'cmor/cms/database_template'
|
8
|
-
|
9
7
|
require 'cmor/cms/controller_extensions/layout_resolver'
|
10
8
|
require 'cmor/cms/controller_extensions/page_resolver'
|
11
9
|
require 'cmor/cms/controller_extensions/partial_resolver'
|
@@ -55,8 +55,9 @@ module ActionView
|
|
55
55
|
template = determine_template(options)
|
56
56
|
|
57
57
|
prepend_formats(template.format)
|
58
|
-
|
59
|
-
|
58
|
+
|
59
|
+
layout = (template.respond_to?(:layout) ? template.layout : nil) || options[:layout]
|
60
|
+
render_template(context, template, (layout || options[:layout]), options[:locals] || {})
|
60
61
|
end
|
61
62
|
end
|
62
63
|
end
|
data/lib/cmor/cms/engine.rb
CHANGED
@@ -11,6 +11,14 @@ module Cmor
|
|
11
11
|
c.performance_tool :rspec
|
12
12
|
|
13
13
|
end
|
14
|
+
|
15
|
+
initializer "cmor_cms_engine.register_template_handlers" do |app|
|
16
|
+
::ActionView::Template.register_template_handler :textile, ::ActionView::Template::Handlers::Textile.new
|
17
|
+
end
|
18
|
+
|
19
|
+
initializer "cmor_cms_engine.add_redirect_middleware" do |app|
|
20
|
+
app.middleware.use Cmor::Cms::RedirectMiddleware
|
21
|
+
end
|
14
22
|
end
|
15
23
|
end
|
16
24
|
end
|
data/lib/cmor_cms.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmor_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.59.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Vasquez Angel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.
|
33
|
+
version: 0.0.59.pre
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.
|
40
|
+
version: 0.0.59.pre
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cmor_core_frontend
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0.
|
47
|
+
version: 0.0.59.pre
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0.
|
54
|
+
version: 0.0.59.pre
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,6 +318,20 @@ dependencies:
|
|
318
318
|
- - ">="
|
319
319
|
- !ruby/object:Gem::Version
|
320
320
|
version: '0'
|
321
|
+
- !ruby/object:Gem::Dependency
|
322
|
+
name: acts_as_list
|
323
|
+
requirement: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
328
|
+
type: :runtime
|
329
|
+
prerelease: false
|
330
|
+
version_requirements: !ruby/object:Gem::Requirement
|
331
|
+
requirements:
|
332
|
+
- - ">="
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: '0'
|
321
335
|
- !ruby/object:Gem::Dependency
|
322
336
|
name: awesome_nested_set
|
323
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -418,11 +432,13 @@ files:
|
|
418
432
|
- app/assets/stylesheets/cmor/cms/application.css
|
419
433
|
- app/assets/stylesheets/cmor/cms/application/keep.css
|
420
434
|
- app/assets/stylesheets/cmor_cms.css
|
435
|
+
- app/concerns/cmor/cms/models/database_template_concern.rb
|
421
436
|
- app/concerns/cmor/cms/navigation_item/properties_concern.rb~
|
422
437
|
- app/controllers/cmor/cms/page_controller.rb
|
423
438
|
- app/importers/cmor/cms/importers/navigation.rb
|
424
439
|
- app/importers/cmor/cms/importers/navigation_item.rb
|
425
440
|
- app/importers/cmor/cms/importers/page.rb
|
441
|
+
- app/middlewares/cmor/cms/redirect_middleware.rb
|
426
442
|
- app/models/cmor/cms/content_block.rb
|
427
443
|
- app/models/cmor/cms/content_box.rb
|
428
444
|
- app/models/cmor/cms/layout.rb
|
@@ -430,6 +446,7 @@ files:
|
|
430
446
|
- app/models/cmor/cms/navigation_item.rb
|
431
447
|
- app/models/cmor/cms/page.rb
|
432
448
|
- app/models/cmor/cms/partial.rb
|
449
|
+
- app/models/cmor/cms/redirect.rb
|
433
450
|
- app/models/cmor/cms/template.rb
|
434
451
|
- app/resolvers/cmor/cms/database_resolver.rb
|
435
452
|
- app/resolvers/cmor/cms/layout_resolver.rb
|
@@ -449,7 +466,6 @@ files:
|
|
449
466
|
- config/initializers/assets.rb
|
450
467
|
- config/initializers/mime_types.rb
|
451
468
|
- config/initializers/simple_navigation.rb
|
452
|
-
- config/initializers/textile_support.rb
|
453
469
|
- config/locales/de.yml
|
454
470
|
- config/locales/en.yml
|
455
471
|
- config/navigation.rb
|
@@ -467,6 +483,7 @@ files:
|
|
467
483
|
- db/migrate/20200120134422_add_published_at_to_cmor_cms_navigation_items.rb
|
468
484
|
- db/migrate/20200120141440_set_all_publishable_to_published.rb
|
469
485
|
- db/migrate/20200514115526_create_cmor_cms_layouts.rb
|
486
|
+
- db/migrate/20200813085847_create_cmor_cms_redirects.rb
|
470
487
|
- lib/cmor/cms.rb
|
471
488
|
- lib/cmor/cms/action_view/template_patch.rb
|
472
489
|
- lib/cmor/cms/action_view/template_renderer_patch.rb
|
@@ -476,7 +493,6 @@ files:
|
|
476
493
|
- lib/cmor/cms/controller_extensions/partial_resolver.rb
|
477
494
|
- lib/cmor/cms/controller_extensions/template_resolver.rb
|
478
495
|
- lib/cmor/cms/database_resolver.rb~
|
479
|
-
- lib/cmor/cms/database_template.rb
|
480
496
|
- lib/cmor/cms/engine.rb
|
481
497
|
- lib/cmor/cms/version.rb
|
482
498
|
- lib/cmor_cms.rb
|
@@ -491,6 +507,7 @@ files:
|
|
491
507
|
- spec/factories/cmor/cms/navigations.rb
|
492
508
|
- spec/factories/cmor/cms/pages.rb
|
493
509
|
- spec/factories/cmor/cms/partials.rb
|
510
|
+
- spec/factories/cmor/cms/redirects.rb
|
494
511
|
- spec/factories/cmor/cms/templates.rb
|
495
512
|
homepage: https://github.com/content-management-on-rails
|
496
513
|
licenses:
|
@@ -511,7 +528,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
511
528
|
- !ruby/object:Gem::Version
|
512
529
|
version: 1.3.1
|
513
530
|
requirements: []
|
514
|
-
rubygems_version: 3.1.
|
531
|
+
rubygems_version: 3.1.4
|
515
532
|
signing_key:
|
516
533
|
specification_version: 4
|
517
534
|
summary: CMS base module for ruby on rails.
|
@@ -1,64 +0,0 @@
|
|
1
|
-
module Cmor
|
2
|
-
module Cms
|
3
|
-
module DatabaseTemplate
|
4
|
-
def self.included(base)
|
5
|
-
base.extend(ClassMethods)
|
6
|
-
|
7
|
-
# callbacks
|
8
|
-
base.after_initialize :set_defaults
|
9
|
-
base.before_validation :assert_trailing_slash_on_pathname
|
10
|
-
base.after_save :clear_resolver_cache
|
11
|
-
|
12
|
-
# validations
|
13
|
-
base.validates :basename, presence: true,
|
14
|
-
uniqueness: { scope: [:pathname, :locale, :format, :handler] }
|
15
|
-
base.validates :handler, inclusion: ActionView::Template::Handlers.extensions.map(&:to_s)
|
16
|
-
base.validates :locale, inclusion: I18n.available_locales.map(&:to_s),
|
17
|
-
allow_nil: true,
|
18
|
-
allow_blank: true
|
19
|
-
base.validates :format, inclusion: Mime::SET.symbols.map(&:to_s),
|
20
|
-
allow_nil: true,
|
21
|
-
allow_blank: true
|
22
|
-
base.validates :pathname, presence: true
|
23
|
-
end
|
24
|
-
|
25
|
-
module ClassMethods
|
26
|
-
end
|
27
|
-
|
28
|
-
def human
|
29
|
-
"#{self.class.name}: #{path_and_filename}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def filename
|
33
|
-
filename = basename.nil? ? '' : basename.dup
|
34
|
-
filename << ".#{locale}" if locale.present?
|
35
|
-
filename << ".#{format}" if format.present?
|
36
|
-
filename << ".#{handler}" if handler.present?
|
37
|
-
filename
|
38
|
-
end
|
39
|
-
|
40
|
-
def path_and_filename
|
41
|
-
"#{pathname}#{filename}"
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def assert_trailing_slash_on_pathname
|
47
|
-
self.pathname = '/' and return if pathname.blank?
|
48
|
-
pathname << '/' unless pathname.end_with?('/')
|
49
|
-
end
|
50
|
-
|
51
|
-
def clear_resolver_cache
|
52
|
-
klass = "#{self.class.name}Resolver"
|
53
|
-
klass.constantize.instance.clear_cache
|
54
|
-
end
|
55
|
-
|
56
|
-
def set_defaults
|
57
|
-
if new_record?
|
58
|
-
self.locale ||= I18n.default_locale.to_s
|
59
|
-
self.handler ||= Cmor::Cms::Configuration.default_handlers[self.class.name.demodulize.underscore.to_sym].to_s
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|