ecm_cms2 1.0.1 → 1.1.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/app/services/ecm/cms/import_partials_service.rb +114 -0
- data/lib/ecm/cms/database_template.rb +8 -0
- data/lib/ecm/cms/version.rb +1 -1
- data/lib/tasks/ecm_cms_tasks.rake +5 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3afe34cc5af630dfb47930fc5ba8df17e0fcfb7
|
4
|
+
data.tar.gz: 604019f4cecd2c2c74edaf9050504f6bc5c50409
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa9101074e1f281cc61f4d15f17b84ca50b725b834df9e3cbb25cfb24823aeaaf826de7f4b891542d7fd62ffe7218cb273f0b34a1ce5dcae9826c05c7bd5119
|
7
|
+
data.tar.gz: b5882957087f8e09211f2b787bf7f430f5cdd75b8a507cd5e57881070ba2fc8b609eee5e00db7a092c45edd9fa1d309c7cf4d762c334408b3d837e2be5937174
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Ecm::Cms
|
2
|
+
class ImportPartialsService
|
3
|
+
|
4
|
+
class PartialInFileSystem
|
5
|
+
def initialize(filename, view_path)
|
6
|
+
@filename = filename
|
7
|
+
@view_path = view_path
|
8
|
+
end
|
9
|
+
|
10
|
+
def pathname
|
11
|
+
@pathname ||= File.dirname(relative_filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
def basename
|
15
|
+
@basename ||= File.basename(relative_filename).split('.').first
|
16
|
+
end
|
17
|
+
|
18
|
+
def locale
|
19
|
+
locale = File.basename(relative_filename).split('.')[-3]
|
20
|
+
if I18n.available_locales.map(&:to_s).include?(locale)
|
21
|
+
@locale ||= locale
|
22
|
+
else
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def format
|
28
|
+
format = File.basename(relative_filename).split('.')[-2]
|
29
|
+
if Mime::SET.symbols.map(&:to_s).include?(format)
|
30
|
+
@format ||= format
|
31
|
+
else
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def handler
|
37
|
+
handler = File.basename(relative_filename).split('.').last
|
38
|
+
if ActionView::Template::Handlers.extensions.map(&:to_s).include?(handler)
|
39
|
+
@handler ||= handler
|
40
|
+
else
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def body
|
46
|
+
File.read(@filename)
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_partial_attributes_hash
|
50
|
+
{
|
51
|
+
pathname: pathname,
|
52
|
+
basename: basename,
|
53
|
+
locale: locale,
|
54
|
+
format: format,
|
55
|
+
handler: handler,
|
56
|
+
body: body
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def human
|
61
|
+
"#{relative_filename} (#{body.size} bytes)"
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def relative_filename
|
67
|
+
@relative_filename ||= @filename.gsub(view_path.to_s, '')
|
68
|
+
end
|
69
|
+
|
70
|
+
def view_path
|
71
|
+
@view_path
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.call(*args)
|
76
|
+
new(*args).do_work
|
77
|
+
end
|
78
|
+
|
79
|
+
def initialize(options = {})
|
80
|
+
options.reverse_merge!({ view_path: Rails.root.join(*%w(app views)) })
|
81
|
+
@view_path = options[:view_path]
|
82
|
+
end
|
83
|
+
|
84
|
+
def do_work
|
85
|
+
puts "Environment: #{Rails.env}"
|
86
|
+
@partials = load_partials
|
87
|
+
partials_count = @partials.size
|
88
|
+
puts "Processing #{partials_count} partials in #{view_path}:"
|
89
|
+
@partials.each_with_index do |partial, index|
|
90
|
+
puts " (#{index + 1}/#{partials_count}) #{partial.human}"
|
91
|
+
partial = Partial.new(partial.to_partial_attributes_hash)
|
92
|
+
if partial.save
|
93
|
+
puts " Created #{partial.human}"
|
94
|
+
else
|
95
|
+
puts " Could not create #{partial.human}. Errors: #{partial.errors.full_messages}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def load_partials
|
103
|
+
load_partials_absolute.collect { |file| PartialInFileSystem.new(file, view_path) }
|
104
|
+
end
|
105
|
+
|
106
|
+
def load_partials_absolute
|
107
|
+
Dir.glob("#{view_path}/**/_*.*")
|
108
|
+
end
|
109
|
+
|
110
|
+
def view_path
|
111
|
+
@view_path
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -30,6 +30,10 @@ module Ecm
|
|
30
30
|
module ClassMethods
|
31
31
|
end
|
32
32
|
|
33
|
+
def human
|
34
|
+
"#{self.class.name}: #{path_and_filename}"
|
35
|
+
end
|
36
|
+
|
33
37
|
def filename
|
34
38
|
filename = basename.dup
|
35
39
|
filename << ".#{locale}" if locale.present?
|
@@ -38,6 +42,10 @@ module Ecm
|
|
38
42
|
filename
|
39
43
|
end
|
40
44
|
|
45
|
+
def path_and_filename
|
46
|
+
"#{pathname}#{filename}"
|
47
|
+
end
|
48
|
+
|
41
49
|
private
|
42
50
|
|
43
51
|
def assert_trailing_slash_on_pathname
|
data/lib/ecm/cms/version.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
namespace :ecm do
|
2
2
|
namespace :cms do
|
3
|
+
desc 'Imports partials from app/views into the database'
|
4
|
+
task :import_partials, [:view_path] => [:environment] do |t, args|
|
5
|
+
args.with_defaults(:view_path => Rails.root.join(*%(app views)))
|
6
|
+
Ecm::Cms::ImportPartialsService.call(args)
|
7
|
+
end
|
3
8
|
end
|
4
9
|
end
|
5
10
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecm_cms2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
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: 2015-11-
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -417,6 +417,7 @@ files:
|
|
417
417
|
- app/models/ecm/cms/page/content_block.rb
|
418
418
|
- app/models/ecm/cms/partial.rb
|
419
419
|
- app/models/ecm/cms/template.rb
|
420
|
+
- app/services/ecm/cms/import_partials_service.rb
|
420
421
|
- config/locales/ecm.cms.content_box.de.yml
|
421
422
|
- config/locales/ecm.cms.content_box.en.yml
|
422
423
|
- config/locales/ecm.cms.de.yml
|