cms9 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/app/assets/images/cms9/cms9_logo.png +0 -0
- data/app/assets/images/cms9/favicon-128.png +0 -0
- data/app/assets/images/cms9/favicon-16.png +0 -0
- data/app/assets/images/cms9/favicon-256.png +0 -0
- data/app/assets/images/cms9/favicon-32.png +0 -0
- data/app/assets/images/cms9/favicon-48.png +0 -0
- data/app/assets/images/cms9/favicon-512.png +0 -0
- data/app/controllers/cms9/application_controller.rb +8 -10
- data/app/controllers/cms9/fields_controller.rb +1 -0
- data/app/controllers/cms9/post_definitions_controller.rb +41 -30
- data/app/controllers/cms9/post_fields_controller.rb +58 -48
- data/app/controllers/cms9/posts_controller.rb +25 -17
- data/app/controllers/cms9/welcome_controller.rb +1 -0
- data/app/helpers/cms9/application_helper.rb +43 -36
- data/app/helpers/cms9/fields_helper.rb +1 -0
- data/app/helpers/cms9/post_definitions_helper.rb +1 -0
- data/app/helpers/cms9/post_fields_helper.rb +1 -0
- data/app/helpers/cms9/posts_helper.rb +1 -0
- data/app/helpers/cms9/welcome_helper.rb +1 -0
- data/app/mailers/cms9/application_mailer.rb +1 -0
- data/app/models/ckeditor/asset.rb +1 -0
- data/app/models/ckeditor/attachment_file.rb +1 -0
- data/app/models/ckeditor/picture.rb +8 -2
- data/app/models/cms9/application_record.rb +1 -0
- data/app/models/cms9/event.rb +1 -0
- data/app/models/cms9/field.rb +8 -9
- data/app/models/cms9/post.rb +4 -4
- data/app/models/cms9/post_definition.rb +6 -5
- data/app/models/cms9/post_field.rb +11 -12
- data/app/views/cms9/posts/index.html.erb +0 -1
- data/app/views/cms9/posts/inputs/_time.html.erb +1 -1
- data/app/views/layouts/cms9/application.html.erb +4 -2
- data/config/initializers/assets.rb +6 -4
- data/config/initializers/ckeditor.rb +9 -5
- data/config/initializers/ckeditor_dragonfly.rb +5 -3
- data/config/initializers/ckeditor_init.rb +2 -2
- data/config/initializers/dragonfly.rb +4 -4
- data/lib/cms9.rb +5 -4
- data/lib/cms9/engine.rb +2 -2
- data/lib/cms9/version.rb +1 -1
- data/lib/events/cms9_events.rb +30 -30
- data/lib/generators/cms9/install/install_generator.rb +46 -28
- data/lib/generators/cms9/install/templates/cms9_configurator.rb +2 -2
- metadata +33 -3
- data/app/assets/images/cms9/favicon-64.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbd78b3f88753a938d70f3ab5d0617cfcb0e59d7
|
4
|
+
data.tar.gz: 38b5b8cdba433909a0e9b9c2efb6ff857829cf4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd416f3a1b773d461e2efbf1d8f0247ab7c625fe63839d29db5f599b4c31d7a5c8a8ea6aaf04827a39494deadffc2ff17ded7134cafa271d07ec98b683cabeba
|
7
|
+
data.tar.gz: c9d98c9c389007741aaa70d38d8fe1e076858a342dfb44dd69e20e272b7a47fd6679da108728231e5ad53d15af650152c5999c3d8fb5a6fd2fafae8a21fd2302
|
data/README.md
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Cms9
|
2
|
+
# Main applicaiton contoller
|
2
3
|
class ApplicationController < ActionController::Base
|
3
4
|
protect_from_forgery with: :exception
|
4
5
|
helper_method :current_user, :user_logout
|
@@ -10,25 +11,22 @@ module Cms9
|
|
10
11
|
parent = ::ApplicationController.new
|
11
12
|
parent.request = request
|
12
13
|
|
13
|
-
if parent.respond_to?(current_user_ident)
|
14
|
-
parent.send(current_user_ident)
|
15
|
-
end
|
14
|
+
parent.send(current_user_ident) if parent.respond_to?(current_user_ident)
|
16
15
|
end
|
17
16
|
|
18
17
|
def user_logout
|
19
|
-
|
18
|
+
config = Cms9.configuration.destroy_user_session
|
19
|
+
logout_ident = config || :destroy_user_session
|
20
20
|
parent = ::ApplicationController.new
|
21
21
|
parent.request = request
|
22
22
|
|
23
|
-
if parent.respond_to?(logout_ident)
|
24
|
-
parent.send(logout_ident)
|
25
|
-
end
|
23
|
+
parent.send(logout_ident) if parent.respond_to?(logout_ident)
|
26
24
|
end
|
27
25
|
|
28
26
|
def authorize
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
message = 'Implement cms9_admin? method in current_user context.
|
28
|
+
See https://github.com/klikaba/cms9'
|
29
|
+
raise message unless current_user.try(:cms9_admin?)
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
module Cms9
|
2
|
+
# post definition controller
|
2
3
|
class PostDefinitionsController < Cms9::ApplicationController
|
3
4
|
def index
|
4
|
-
@posts = PostDefinition.order('created_at desc')
|
5
|
+
@posts = PostDefinition.order('created_at desc')
|
6
|
+
.page(params[:page])
|
7
|
+
.per(20)
|
5
8
|
end
|
6
9
|
|
7
10
|
def new
|
@@ -12,74 +15,82 @@ module Cms9
|
|
12
15
|
@post = PostDefinition.find(params[:id])
|
13
16
|
end
|
14
17
|
|
18
|
+
# rubocop:disable all
|
15
19
|
def create
|
16
20
|
@post = PostDefinition.new(post_definition_params)
|
17
|
-
|
18
21
|
@post.user_id = current_user.id
|
19
22
|
|
20
23
|
if PostDefinition.where(name: @post[:name]).blank?
|
21
|
-
|
22
24
|
if @post.save
|
23
|
-
@field = PostField.new(
|
24
|
-
|
25
|
-
|
26
|
-
'required': true,
|
27
|
-
'post_definition_id': @post.id,
|
28
|
-
'user_id': current_user.id
|
29
|
-
})
|
25
|
+
@field = PostField.new(name: 'Title', field_type: 'text',
|
26
|
+
required: true, post_definition_id: @post.id,
|
27
|
+
user_id: current_user.id)
|
30
28
|
if @field.save
|
31
|
-
|
32
|
-
|
29
|
+
create_post_event
|
33
30
|
redirect_to edit_post_definition_path(@post.id)
|
34
31
|
end
|
35
32
|
else
|
36
33
|
render :new
|
37
34
|
end
|
38
|
-
|
39
35
|
else
|
40
|
-
@post.errors.add(:name,
|
36
|
+
@post.errors.add(:name, ' Post Type already exist')
|
41
37
|
render :new
|
42
38
|
end
|
43
|
-
|
44
39
|
end
|
45
40
|
|
46
41
|
def update
|
47
42
|
@post = PostDefinition.find(params[:id])
|
48
43
|
@post.user_id = current_user.id
|
44
|
+
post_definition_name = params[:post_definition][:name]
|
49
45
|
|
50
|
-
field = PostDefinition.where(name:
|
51
|
-
|
52
|
-
if field.blank? || @post.name == params[:post_definition][:name]
|
46
|
+
field = PostDefinition.where(name: post_definition_name.downcase)
|
53
47
|
|
48
|
+
if field.blank? || @post.name == post_definition_name
|
54
49
|
if @post.update(post_definition_params)
|
55
|
-
|
56
|
-
|
50
|
+
create_post_event
|
57
51
|
redirect_to edit_post_definition_path(@post.id)
|
58
52
|
else
|
59
53
|
render :edit
|
60
54
|
end
|
61
|
-
|
62
55
|
else
|
63
|
-
@post.errors.add(:name,
|
56
|
+
@post.errors.add(:name, ' Post Type already exist')
|
64
57
|
render :edit
|
65
58
|
end
|
66
59
|
end
|
67
60
|
|
68
61
|
def destroy
|
69
62
|
@post_def = PostDefinition.find(params[:id])
|
70
|
-
@post_def.destroy
|
71
|
-
|
72
|
-
Cms9Events.new.create_event('post_definition', @post_def.id, params[:action], current_user, @post_def.name)
|
73
|
-
|
74
63
|
@posts = Post.where(post_definition_id: params[:id])
|
64
|
+
@posts.each do |post|
|
65
|
+
Cms9Events.new.create_event('post', post[:id], params[:action],
|
66
|
+
current_user, post_name(post))
|
67
|
+
end
|
75
68
|
@posts.destroy_all
|
76
|
-
|
69
|
+
@post_def.destroy
|
70
|
+
create_post_def_event(@post_def.name)
|
77
71
|
redirect_to post_definitions_path
|
78
72
|
end
|
79
73
|
|
80
74
|
private
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
|
76
|
+
def post_name(post)
|
77
|
+
Field.where(post_field_id: post.post_definition
|
78
|
+
.post_fields[0].id,
|
79
|
+
post_id: post.id)[0]['value']
|
80
|
+
end
|
81
|
+
|
82
|
+
def create_post_def_event(name)
|
83
|
+
Cms9Events.new.create_event('post_definition', @post_def.id,
|
84
|
+
params[:action], current_user, name)
|
85
|
+
end
|
86
|
+
|
87
|
+
def create_post_event
|
88
|
+
Cms9Events.new.create_event('post_definition', @post.id,
|
89
|
+
params[:action], current_user, nil)
|
90
|
+
end
|
91
|
+
|
92
|
+
def post_definition_params
|
93
|
+
params.require(:post_definition).permit(:name)
|
94
|
+
end
|
84
95
|
end
|
85
96
|
end
|
@@ -1,40 +1,42 @@
|
|
1
1
|
module Cms9
|
2
|
+
# post fields controller
|
2
3
|
class PostFieldsController < Cms9::ApplicationController
|
3
4
|
def new
|
4
5
|
@field = PostField.new
|
5
6
|
@field.post_definition_id = params[:post_definition_id]
|
6
7
|
end
|
7
8
|
|
9
|
+
# rubocop:disable all
|
8
10
|
def create
|
9
11
|
@field = PostField.new(post_field_params)
|
10
12
|
@field.user_id = current_user.id
|
11
13
|
|
12
|
-
if PostField.where(name: @field[:name],
|
13
|
-
|
14
|
+
if PostField.where(name: @field[:name],
|
15
|
+
post_definition_id: @field[:post_definition_id]).blank?
|
16
|
+
if %w(select_single select_multiple).include?(@field[:field_type])
|
14
17
|
@field.metadata = ''
|
15
18
|
values = params[:multi_values]
|
16
19
|
|
17
20
|
values.each_with_index do |value, index|
|
18
|
-
if value != ''
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@field.metadata = @field.metadata + ',' + value
|
23
|
-
end
|
21
|
+
if value != '' && index.zero?
|
22
|
+
@field.metadata = value
|
23
|
+
elsif !index.zero?
|
24
|
+
@field.metadata = @field.metadata + ',' + value
|
24
25
|
end
|
25
26
|
end
|
26
|
-
elsif
|
27
|
+
elsif !%w(select_single select_multiple image)
|
28
|
+
.include?(@field[:field_type])
|
27
29
|
@field.metadata = nil
|
28
30
|
end
|
29
31
|
|
30
32
|
if @field.save
|
31
|
-
|
33
|
+
create_post_field_event
|
32
34
|
redirect_to edit_post_definition_path(id: @field.post_definition_id)
|
33
35
|
else
|
34
36
|
render :new
|
35
37
|
end
|
36
38
|
else
|
37
|
-
@field.errors.add(:name,
|
39
|
+
@field.errors.add(:name, 'of field already exist')
|
38
40
|
render :new
|
39
41
|
end
|
40
42
|
end
|
@@ -42,51 +44,28 @@ module Cms9
|
|
42
44
|
def edit
|
43
45
|
@field = PostField.find(params[:id])
|
44
46
|
@post_name = params[:post]
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
if params[:field_name] != nil
|
51
|
-
@field.name = params[:field_name]
|
52
|
-
end
|
47
|
+
@field.field_type = params[:type] unless PostField.all_types
|
48
|
+
.index(params[:type])
|
49
|
+
.nil?
|
50
|
+
@field.name = params[:field_name] unless params[:field_name].nil?
|
53
51
|
end
|
54
52
|
|
55
53
|
def update
|
56
54
|
@field = PostField.find(params[:id])
|
57
55
|
@field.user_id = current_user.id
|
58
|
-
|
59
|
-
|
56
|
+
field = PostField.where(name: post_field_params[:name],
|
57
|
+
post_definition_id: @field[:post_definition_id])
|
60
58
|
|
61
59
|
if field.blank? || field.pluck(:id)[0].to_s == params[:id]
|
62
|
-
|
63
|
-
@field.metadata = ''
|
64
|
-
values = params[:multi_values]
|
65
|
-
|
66
|
-
values.each_with_index do |value, index|
|
67
|
-
if value != ''
|
68
|
-
if index == 0
|
69
|
-
@field.metadata = value
|
70
|
-
elsif
|
71
|
-
@field.metadata = @field.metadata + ',' + value
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
params[:post_field][:metadata] = @field.metadata
|
77
|
-
|
78
|
-
elsif @field[:field_type] != 'select_single' && @field[:field_type] != 'select_multiple' && @field[:field_type] != 'image'
|
79
|
-
@field.metadata = nil
|
80
|
-
end
|
81
|
-
|
60
|
+
check_selectors
|
82
61
|
if @field.update(post_field_params)
|
83
|
-
|
62
|
+
create_post_field_event
|
84
63
|
redirect_to edit_post_definition_path(id: @field.post_definition_id)
|
85
64
|
else
|
86
65
|
render :edit
|
87
66
|
end
|
88
67
|
else
|
89
|
-
@field.errors.add(:name,
|
68
|
+
@field.errors.add(:name, 'of field already exist')
|
90
69
|
render :edit
|
91
70
|
end
|
92
71
|
end
|
@@ -94,15 +73,46 @@ module Cms9
|
|
94
73
|
def destroy
|
95
74
|
@field = PostField.find(params[:id])
|
96
75
|
@field.destroy
|
97
|
-
|
98
|
-
Cms9Events.new.create_event('post_definition', @field[:post_definition_id], 'update', current_user, nil)
|
99
|
-
|
76
|
+
create_post_field_event
|
100
77
|
redirect_to request.referrer
|
101
78
|
end
|
102
79
|
|
103
80
|
private
|
104
|
-
|
105
|
-
|
81
|
+
|
82
|
+
def create_post_field_event
|
83
|
+
Cms9Events.new.create_event('post_definition',
|
84
|
+
@field[:post_definition_id], 'update',
|
85
|
+
current_user, nil)
|
86
|
+
end
|
87
|
+
|
88
|
+
def check_selectors
|
89
|
+
if check_single_multiple
|
90
|
+
@field.metadata = ''
|
91
|
+
params[:multi_values].each_with_index do |value, index|
|
92
|
+
if value != '' && index.zero?
|
93
|
+
@field.metadata = value
|
94
|
+
elsif !index.zero?
|
95
|
+
@field.metadata = @field.metadata + ',' + value
|
96
|
+
end
|
97
|
+
end
|
98
|
+
params[:post_field][:metadata] = @field.metadata
|
99
|
+
elsif check_select_image
|
100
|
+
@field.metadata = nil
|
106
101
|
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def check_single_multiple
|
105
|
+
['select_single', 'select_multiple'].include?(@field[:field_type])
|
106
|
+
end
|
107
|
+
|
108
|
+
def check_select_image
|
109
|
+
!['select_single', 'select_multiple', 'image'].include?(@field[:field_type])
|
110
|
+
end
|
111
|
+
|
112
|
+
def post_field_params
|
113
|
+
params.require(:post_field).permit(:name, :field_type,
|
114
|
+
:post_definition_id,
|
115
|
+
:required, :metadata)
|
116
|
+
end
|
107
117
|
end
|
108
118
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Cms9
|
2
|
+
# posts controller
|
2
3
|
class PostsController < Cms9::ApplicationController
|
3
4
|
def index
|
4
5
|
@post_definition = Cms9::PostDefinition.find(params[:post_definition_id])
|
5
6
|
@posts = Post.where(post_definition: @post_definition)
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
.order('created_at desc')
|
8
|
+
.page(params[:page])
|
9
|
+
.per(20)
|
9
10
|
end
|
10
11
|
|
11
12
|
def new
|
@@ -19,11 +20,10 @@ module Cms9
|
|
19
20
|
|
20
21
|
def create
|
21
22
|
@post = Post.new(post_params)
|
22
|
-
|
23
23
|
@post.user_id = current_user.id
|
24
24
|
|
25
25
|
if @post.save
|
26
|
-
|
26
|
+
create_post_event(@post.id, nil)
|
27
27
|
redirect_to posts_path(post_definition_id: @post.post_definition.id)
|
28
28
|
else
|
29
29
|
render :new
|
@@ -42,11 +42,10 @@ module Cms9
|
|
42
42
|
|
43
43
|
def update
|
44
44
|
@post = Post.find(params[:id])
|
45
|
-
|
46
45
|
@post.user_id = current_user.id
|
47
46
|
|
48
47
|
if @post.update(post_params)
|
49
|
-
|
48
|
+
create_post_event(@post.id, nil)
|
50
49
|
redirect_to posts_path(post_definition_id: @post.post_definition.id)
|
51
50
|
else
|
52
51
|
render :edit
|
@@ -57,20 +56,29 @@ module Cms9
|
|
57
56
|
@post = Post.find(params[:id])
|
58
57
|
post_definition_id = @post.post_definition.id
|
59
58
|
|
60
|
-
|
61
|
-
Cms9Events.new.create_event('post', @post.id, params[:action], current_user, post_name)
|
62
|
-
|
63
|
-
@post.destroy
|
64
|
-
|
59
|
+
create_post_event(@post.id, post_name) && @post.destroy
|
65
60
|
redirect_to posts_path(post_definition_id: post_definition_id)
|
66
61
|
end
|
67
62
|
|
68
63
|
private
|
69
|
-
def post_params
|
70
|
-
params.require(:post).permit(:post_definition_id, fields_attributes:
|
71
|
-
[:id, :post_id, :post_field_id, :value, { :value => [] },
|
72
|
-
:image, :image_uid, :image_name, :remove_image, :image_custom_size])
|
73
|
-
end
|
74
64
|
|
65
|
+
def post_name
|
66
|
+
Field.where(post_field_id: @post.post_definition
|
67
|
+
.post_fields[0].id,
|
68
|
+
post_id: @post.id)[0]['value']
|
69
|
+
end
|
70
|
+
|
71
|
+
def create_post_event(post_id, post_name)
|
72
|
+
Cms9Events.new.create_event('post', post_id, params[:action],
|
73
|
+
current_user, post_name)
|
74
|
+
end
|
75
|
+
|
76
|
+
def post_params
|
77
|
+
params.require(:post).permit(:post_definition_id, fields_attributes:
|
78
|
+
[:id, :post_id, :post_field_id, :value,
|
79
|
+
{ value: [] },
|
80
|
+
:image, :image_uid, :image_name,
|
81
|
+
:remove_image, :image_custom_size])
|
82
|
+
end
|
75
83
|
end
|
76
84
|
end
|
@@ -1,58 +1,65 @@
|
|
1
1
|
module Cms9
|
2
|
+
# main application fields displaying helper
|
2
3
|
module ApplicationHelper
|
4
|
+
def cms9_field(field, options = {})
|
5
|
+
check_type(field, options) if field.present?
|
6
|
+
end
|
3
7
|
|
4
|
-
def cms9_field(field, options={})
|
5
|
-
if field.present?
|
6
|
-
case field.post_field.field_type
|
7
|
-
when 'text', 'number', 'select_single', 'date', 'time', 'date_time'
|
8
|
-
return field.value.blank? ? '' : cms9_text_tag(field)
|
9
|
-
when 'text_area'
|
10
|
-
return field.value.blank? ? '' : cms9_text_area_tag(field)
|
11
|
-
when 'select_multiple'
|
12
|
-
return field.value.blank? ? '' : cms9_multiple_choice(field)
|
13
|
-
when 'image'
|
14
|
-
return field.blank? ? '' : cms9_image_tag(field, options)
|
15
|
-
else
|
16
|
-
return '<unsupported type>'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
8
|
def cms9_text_tag(model)
|
22
|
-
|
23
|
-
end
|
9
|
+
model.to_s
|
10
|
+
end
|
24
11
|
|
25
|
-
def cms9_text_area_tag(model)
|
26
|
-
|
27
|
-
end
|
12
|
+
def cms9_text_area_tag(model)
|
13
|
+
raw(model.to_s)
|
14
|
+
end
|
28
15
|
|
29
|
-
def cms9_multiple_choice(model)
|
30
|
-
|
31
|
-
|
32
|
-
end
|
16
|
+
def cms9_multiple_choice(model)
|
17
|
+
model.value.to_s.split("\' ")[0].to_s
|
18
|
+
end
|
33
19
|
|
34
|
-
def cms9_image_tag(model, options={})
|
35
|
-
|
36
|
-
end
|
20
|
+
def cms9_image_tag(model, options = {})
|
21
|
+
image_tag(model.image.url, options)
|
22
|
+
end
|
37
23
|
|
38
24
|
def cms9_number_tag(model)
|
39
|
-
|
40
|
-
end
|
25
|
+
model.to_s
|
26
|
+
end
|
41
27
|
|
42
28
|
def cms9_select_single_tag(model)
|
43
|
-
|
44
|
-
end
|
29
|
+
model.to_s
|
30
|
+
end
|
45
31
|
|
46
32
|
def cms9_date_tag(model)
|
47
|
-
|
33
|
+
model.to_s
|
48
34
|
end
|
49
35
|
|
50
36
|
def cms9_time_tag(model)
|
51
|
-
|
37
|
+
model.to_s
|
52
38
|
end
|
53
39
|
|
54
40
|
def cms9_date_time_tag(model)
|
55
|
-
|
41
|
+
model.to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
def check_type(field, options) # rubocop:disable CyclomaticComplexity
|
45
|
+
case field.post_field.field_type
|
46
|
+
when 'text', 'number', 'select_single', 'date', 'time', 'date_time'
|
47
|
+
field_value(field) ? '' : cms9_text_tag(field)
|
48
|
+
when 'text_area' then field_value(field) ? '' : cms9_text_area_tag(field)
|
49
|
+
when 'select_multiple'
|
50
|
+
field_value(field) ? '' : cms9_multiple_choice(field)
|
51
|
+
when 'image' then field_blank(field) ? '' : cms9_image_tag(field, options)
|
52
|
+
else
|
53
|
+
'<unsupported type>'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def field_blank(field)
|
58
|
+
field.blank?
|
59
|
+
end
|
60
|
+
|
61
|
+
def field_value(field)
|
62
|
+
field.value.blank?
|
56
63
|
end
|
57
64
|
end
|
58
65
|
end
|
@@ -1,7 +1,13 @@
|
|
1
1
|
module Cms9
|
2
|
+
# ckeditor picture model
|
2
3
|
class Ckeditor::Picture < Ckeditor::Asset
|
3
|
-
validates_property :format,
|
4
|
-
|
4
|
+
validates_property :format,
|
5
|
+
of: :data,
|
6
|
+
in: image_file_types unless image_file_types.empty?
|
7
|
+
validates_property :image?,
|
8
|
+
of: :data,
|
9
|
+
as: true,
|
10
|
+
message: :invalid
|
5
11
|
|
6
12
|
def url_content
|
7
13
|
data.thumb('800x800>').url
|
data/app/models/cms9/event.rb
CHANGED
data/app/models/cms9/field.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
module Cms9
|
2
|
+
# field model
|
2
3
|
class Field < ApplicationRecord
|
3
4
|
belongs_to :post_field
|
4
5
|
belongs_to :post, optional: true
|
5
6
|
dragonfly_accessor :image
|
6
7
|
|
7
8
|
def to_s
|
8
|
-
case
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
else
|
16
|
-
return ''
|
9
|
+
case post_field.field_type
|
10
|
+
when 'text', 'text_area', 'number',
|
11
|
+
'select_single', 'date', 'time', 'date_time' then value
|
12
|
+
when 'select_multiple' then value.split(',')
|
13
|
+
when 'image' then !image_uid.blank? ? image.url : ''
|
14
|
+
else
|
15
|
+
''
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
data/app/models/cms9/post.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
module Cms9
|
2
|
+
# post model
|
2
3
|
class Post < ApplicationRecord
|
3
4
|
belongs_to :post_definition
|
4
5
|
has_many :fields, dependent: :destroy
|
@@ -6,11 +7,10 @@ module Cms9
|
|
6
7
|
accepts_nested_attributes_for :fields
|
7
8
|
|
8
9
|
def field(name)
|
9
|
-
@cache_fields ||=
|
10
|
-
|
11
|
-
|
10
|
+
@cache_fields ||= fields.joins(:post_field).includes(:post_field)
|
11
|
+
.map { |field| [field.post_field.name, field] }
|
12
|
+
.to_h
|
12
13
|
@cache_fields[name]
|
13
14
|
end
|
14
|
-
|
15
15
|
end
|
16
16
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
module Cms9
|
2
|
+
# post definition model
|
2
3
|
class PostDefinition < ApplicationRecord
|
3
|
-
validates :name,
|
4
|
+
validates :name,
|
5
|
+
presence: true,
|
6
|
+
uniqueness: { case_sensitive: false },
|
4
7
|
length: { minimum: 3 }
|
5
8
|
|
6
9
|
has_many :post_fields, dependent: :destroy
|
7
10
|
has_many :posts, dependent: :destroy
|
8
11
|
|
9
|
-
|
10
12
|
def fields
|
11
13
|
if @cache_fields.nil?
|
12
|
-
@cache_fields =
|
14
|
+
@cache_fields = post_fields.map { |field| [field.name, field] }.to_h
|
13
15
|
end
|
14
16
|
|
15
17
|
@cache_fields.values
|
@@ -17,9 +19,8 @@ module Cms9
|
|
17
19
|
|
18
20
|
# Get field by name
|
19
21
|
def field(name)
|
20
|
-
fields
|
22
|
+
fields
|
21
23
|
@cache_fields[name]
|
22
24
|
end
|
23
|
-
|
24
25
|
end
|
25
26
|
end
|
@@ -1,23 +1,22 @@
|
|
1
1
|
module Cms9
|
2
|
+
# post field model
|
2
3
|
class PostField < ApplicationRecord
|
3
|
-
validates :name,
|
4
|
+
validates :name, presence: true, length: { minimum: 3, maximum: 15 }
|
4
5
|
validates :field_type, presence: true
|
5
6
|
|
6
7
|
belongs_to :post_definition
|
7
8
|
attr_accessor :multi_values
|
8
9
|
|
9
10
|
def self.all_types
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
{ key: 'image', display_name: 'Image' }
|
20
|
-
]
|
11
|
+
[{ key: 'text', display_name: 'Text' },
|
12
|
+
{ key: 'text_area', display_name: 'Text Area' },
|
13
|
+
{ key: 'number', display_name: 'Number' },
|
14
|
+
{ key: 'select_single', display_name: 'Select Single' },
|
15
|
+
{ key: 'select_multiple', display_name: 'Select Multiple' },
|
16
|
+
{ key: 'date', display_name: 'Date' },
|
17
|
+
{ key: 'time', display_name: 'Time' },
|
18
|
+
{ key: 'date_time', display_name: 'Date & Time' },
|
19
|
+
{ key: 'image', display_name: 'Image' }]
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<%= field.label field.object.post_field.name %>
|
2
|
-
<%= field.time_field :value, as: :time, value: field.object.value,
|
2
|
+
<%= field.time_field :value, as: :time, value: field.object.value, class: 'form-control', required: field.object.post_field.required %>
|
@@ -10,8 +10,10 @@
|
|
10
10
|
<%= csrf_meta_tags %>
|
11
11
|
<%= favicon_link_tag 'cms9/favicon-16.png', type: 'image/png' %>
|
12
12
|
<%= favicon_link_tag 'cms9/favicon-32.png', type: 'image/png' %>
|
13
|
-
<%= favicon_link_tag 'cms9/favicon-
|
14
|
-
<%= favicon_link_tag 'cms9/favicon-
|
13
|
+
<%= favicon_link_tag 'cms9/favicon-48.png', type: 'image/png' %>
|
14
|
+
<%= favicon_link_tag 'cms9/favicon-128.png', type: 'image/png' %>
|
15
|
+
<%= favicon_link_tag 'cms9/favicon-256.png', type: 'image/png' %>
|
16
|
+
<%= favicon_link_tag 'cms9/favicon-512.png', type: 'image/png' %>
|
15
17
|
</head>
|
16
18
|
|
17
19
|
<body class="skin-blue">
|
@@ -1,4 +1,6 @@
|
|
1
|
-
Rails.application.config.assets.precompile += %w(
|
2
|
-
Rails.application.config.assets.precompile += %w(
|
3
|
-
Rails.application.config.assets.precompile += %w(
|
4
|
-
Rails.application.config.assets.precompile += %w(
|
1
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-16.png)
|
2
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-32.png)
|
3
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-48.png)
|
4
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-128.png)
|
5
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-256.png)
|
6
|
+
Rails.application.config.assets.precompile += %w(cms9/favicon-512.png)
|
@@ -1,15 +1,17 @@
|
|
1
|
+
# ckeditor config file
|
1
2
|
module Cms9
|
2
3
|
Ckeditor.setup do |config|
|
3
4
|
# ==> ORM configuration
|
4
|
-
# Load and configure the ORM. Supports :active_record (default),
|
5
|
+
# Load and configure the ORM. Supports :active_record (default),
|
6
|
+
# :mongo_mapper and
|
5
7
|
# :mongoid (bson_ext recommended) by default. Other ORMs may be
|
6
8
|
# available as additional gems.
|
7
|
-
require
|
9
|
+
require 'ckeditor/orm/active_record'
|
8
10
|
|
9
11
|
# Allowed image file types for upload.
|
10
12
|
# Set to nil or [] (empty array) for all file types
|
11
13
|
# By default: %w(jpg jpeg png gif tiff)
|
12
|
-
|
14
|
+
config.image_file_types = %w(jpg jpeg png gif tiff)
|
13
15
|
|
14
16
|
# Allowed flash file types for upload.
|
15
17
|
# Set to nil or [] (empty array) for all file types
|
@@ -19,7 +21,8 @@ module Cms9
|
|
19
21
|
# Allowed attachment file types for upload.
|
20
22
|
# Set to nil or [] (empty array) for all file types
|
21
23
|
# By default: %w(doc docx xls odt ods pdf rar zip tar tar.gz swf)
|
22
|
-
# config.attachment_file_types =
|
24
|
+
# config.attachment_file_types =
|
25
|
+
# %w(doc docx xls odt ods pdf rar zip tar tar.gz swf)
|
23
26
|
|
24
27
|
# Setup authorization to be run as a before filter
|
25
28
|
# By default: there is no authorization.
|
@@ -41,7 +44,8 @@ module Cms9
|
|
41
44
|
# By default: nil
|
42
45
|
# config.asset_path = "http://www.example.com/assets/ckeditor/"
|
43
46
|
|
44
|
-
# To reduce the asset precompilation time, you can limit plugins and/or
|
47
|
+
# To reduce the asset precompilation time, you can limit plugins and/or
|
48
|
+
# languages to those you need:
|
45
49
|
# By default: nil (no limit)
|
46
50
|
# config.assets_languages = ['en', 'uk']
|
47
51
|
# config.assets_plugins = ['image', 'smiley']
|
@@ -3,13 +3,15 @@ require 'dragonfly'
|
|
3
3
|
|
4
4
|
Dragonfly.app(:ckeditor).configure do
|
5
5
|
plugin :imagemagick
|
6
|
-
secret
|
6
|
+
secret '761fa77ae747b0b82ddbc54f3ada94d9259690f701852a398130261e117f3798'
|
7
7
|
|
8
8
|
# Store files in public/uploads/ckeditor. This is not
|
9
9
|
# mandatory and the files don't even have to be stored under
|
10
10
|
# public. See http://markevans.github.io/dragonfly/data-stores
|
11
|
-
datastore :file,
|
12
|
-
|
11
|
+
datastore :file,
|
12
|
+
root_path: Rails.root.join('public/uploads/ckeditor',
|
13
|
+
Rails.env).to_s,
|
14
|
+
server_root: 'public'
|
13
15
|
|
14
16
|
# Accept asset requests on /ckeditor_assets. Again, this path is
|
15
17
|
# not mandatory. Just be sure to include :job somewhere.
|
@@ -1,3 +1,3 @@
|
|
1
|
-
require
|
1
|
+
require 'ckeditor/orm/active_record'
|
2
2
|
|
3
|
-
Rails.application.config.assets.precompile += %w(
|
3
|
+
Rails.application.config.assets.precompile += %w(ckeditor/*)
|
@@ -4,13 +4,13 @@ require 'dragonfly'
|
|
4
4
|
Dragonfly.app.configure do
|
5
5
|
plugin :imagemagick
|
6
6
|
|
7
|
-
secret
|
7
|
+
secret '0faed7549aa86f0847364e39af20ac099ca03cc542912c1deff473b78bd5700f'
|
8
8
|
|
9
|
-
url_format
|
9
|
+
url_format '/media/:job/:name'
|
10
10
|
|
11
11
|
datastore :file,
|
12
|
-
|
13
|
-
|
12
|
+
root_path: Rails.root.join('public/system/dragonfly', Rails.env),
|
13
|
+
server_root: Rails.root.join('public')
|
14
14
|
end
|
15
15
|
|
16
16
|
# Logger
|
data/lib/cms9.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'cms9/engine'
|
2
|
+
require 'dragonfly'
|
3
3
|
|
4
|
+
# main cms9 module
|
4
5
|
module Cms9
|
5
6
|
class << self
|
6
7
|
attr_accessor :configuration
|
@@ -10,7 +11,7 @@ module Cms9
|
|
10
11
|
self.configuration ||= Configuration.new
|
11
12
|
yield(configuration)
|
12
13
|
end
|
13
|
-
|
14
|
+
# configuration
|
14
15
|
class Configuration
|
15
16
|
attr_accessor :current_user, :destroy_user_session
|
16
17
|
|
@@ -21,4 +22,4 @@ module Cms9
|
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
|
-
require
|
25
|
+
require 'sdk/cms9'
|
data/lib/cms9/engine.rb
CHANGED
@@ -8,9 +8,10 @@ require 'rails-assets-tether'
|
|
8
8
|
require 'font-awesome-rails'
|
9
9
|
require 'ckeditor'
|
10
10
|
require 'cms9'
|
11
|
-
require
|
11
|
+
require 'events/cms9_events'
|
12
12
|
|
13
13
|
module Cms9
|
14
|
+
# main cms9 engine class
|
14
15
|
class Engine < ::Rails::Engine
|
15
16
|
isolate_namespace Cms9
|
16
17
|
|
@@ -19,6 +20,5 @@ module Cms9
|
|
19
20
|
config.to_prepare do
|
20
21
|
::ApplicationController.helper(Cms9::ApplicationHelper)
|
21
22
|
end
|
22
|
-
|
23
23
|
end
|
24
24
|
end
|
data/lib/cms9/version.rb
CHANGED
data/lib/events/cms9_events.rb
CHANGED
@@ -1,42 +1,23 @@
|
|
1
1
|
module Cms9
|
2
|
+
# Events for every action in administration part
|
2
3
|
class Cms9Events
|
3
|
-
|
4
4
|
def create_event(event_type, event_id, action, user, del_name)
|
5
|
-
post_definition_id = nil
|
6
|
-
post_id = nil
|
7
|
-
|
8
|
-
user_info = [ user.id, user.email ? user.email : nil ]
|
5
|
+
@post_definition_id = nil
|
6
|
+
@post_id = nil
|
9
7
|
|
10
|
-
|
11
|
-
when 'post_definition'
|
12
|
-
post_definition_id = event_id
|
13
|
-
when 'post'
|
14
|
-
post_id = event_id
|
15
|
-
end
|
8
|
+
check_event_type(event_type, event_id)
|
16
9
|
|
17
|
-
@event = Event.new(
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
'deleted_field': del_name
|
23
|
-
})
|
10
|
+
@event = Event.new(
|
11
|
+
user: [user.id, user.email ? user.email : nil], action: action,
|
12
|
+
post_definition_id: @post_definition_id, post_id: @post_id,
|
13
|
+
deleted_field: del_name
|
14
|
+
)
|
24
15
|
|
25
|
-
if @event.save
|
26
|
-
if del_name != nil
|
27
|
-
if event_type == 'post_definition'
|
28
|
-
Event.where(post_definition_id: post_definition_id).update_all(deleted_field: del_name)
|
29
|
-
elsif event_type == 'post'
|
30
|
-
Event.where(post_id: post_id).each do |event|
|
31
|
-
event.update(deleted_field: del_name)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
16
|
+
after_save(event_type) if @event.save && !del_name.nil?
|
36
17
|
end
|
37
18
|
|
38
19
|
def get_title_value_for_post(post_id)
|
39
|
-
|
20
|
+
@post = Cms9::Field.where(post_id: post_id)[0]
|
40
21
|
end
|
41
22
|
|
42
23
|
def timeline_events(limit)
|
@@ -46,5 +27,24 @@ module Cms9
|
|
46
27
|
Event.order('created_at desc')
|
47
28
|
end
|
48
29
|
end
|
30
|
+
|
31
|
+
def after_save(event_type)
|
32
|
+
if event_type == 'post_definition'
|
33
|
+
Event.where(post_definition_id: @post_definition_id)
|
34
|
+
.update_all(deleted_field: @event.deleted_field)
|
35
|
+
elsif event_type == 'post'
|
36
|
+
Event.where(post_id: @post_id)
|
37
|
+
.update_all(deleted_field: @event.deleted_field)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def check_event_type(event_type, event_id)
|
42
|
+
case event_type
|
43
|
+
when 'post_definition'
|
44
|
+
@post_definition_id = event_id
|
45
|
+
when 'post'
|
46
|
+
@post_id = event_id
|
47
|
+
end
|
48
|
+
end
|
49
49
|
end
|
50
50
|
end
|
@@ -1,34 +1,37 @@
|
|
1
|
-
require
|
1
|
+
require 'rails/generators/base'
|
2
2
|
require 'rails/generators/migration'
|
3
3
|
require 'rails/generators/active_record'
|
4
4
|
|
5
5
|
module Cms9
|
6
6
|
module Generators
|
7
|
+
# Install generator for route mounting and copying necessary files
|
7
8
|
class InstallGenerator < Rails::Generators::Base
|
8
9
|
include Rails::Generators::Migration
|
9
10
|
|
10
|
-
argument :def_route, type: :string, default:
|
11
|
+
argument :def_route, type: :string, default: 'cms9'
|
11
12
|
source_root File.expand_path(File.dirname(__FILE__))
|
12
13
|
|
13
14
|
def mount_engine_route
|
14
|
-
puts "\nMounting Cms9::Engine on " +
|
15
|
-
route "mount Cms9::Engine =>
|
15
|
+
puts "\nMounting Cms9::Engine on " + '/' + file_name + ' route'
|
16
|
+
route "mount Cms9::Engine => '/#{file_name}'"
|
16
17
|
puts "\n"
|
17
18
|
end
|
18
19
|
|
19
20
|
def copy_initializer
|
20
|
-
puts
|
21
|
-
copy_file 'templates/cms9_configurator.rb',
|
22
|
-
|
21
|
+
puts 'Copying necessary files...'
|
22
|
+
copy_file 'templates/cms9_configurator.rb',
|
23
|
+
'config/initializers/cms9_configurator.rb'
|
24
|
+
puts ''
|
23
25
|
end
|
24
26
|
|
25
27
|
def copy_ckeditor_config
|
26
|
-
copy_file 'templates/ckeditor_config.js',
|
28
|
+
copy_file 'templates/ckeditor_config.js',
|
29
|
+
'app/assets/javascripts/ckeditor/config.js'
|
27
30
|
|
28
|
-
data = File.read(
|
29
|
-
filtered_data = data.gsub(
|
31
|
+
data = File.read('app/assets/javascripts/ckeditor/config.js')
|
32
|
+
filtered_data = data.gsub('cms9', file_name)
|
30
33
|
|
31
|
-
File.open(
|
34
|
+
File.open('app/assets/javascripts/ckeditor/config.js', 'w') do |f|
|
32
35
|
f.write(filtered_data)
|
33
36
|
end
|
34
37
|
end
|
@@ -38,28 +41,18 @@ module Cms9
|
|
38
41
|
end
|
39
42
|
|
40
43
|
def generate_migration
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
Dir.foreach(cms9_file_dir) do |file|
|
45
|
-
files << file unless file =~ /^\.\.?$/
|
46
|
-
end
|
47
|
-
|
48
|
-
files.each do |migration|
|
49
|
-
destination = File.expand_path('db/migrate/' + migration, self.destination_root)
|
44
|
+
migraton_files.each do |migration|
|
45
|
+
destination = File.expand_path('db/migrate/' + migration,
|
46
|
+
destination_root)
|
50
47
|
migration_dir = File.dirname(destination)
|
51
48
|
only_name = File.basename(migration, File.extname(migration))
|
52
49
|
destination = self.class.migration_exists?(migration_dir, only_name)
|
53
50
|
|
54
|
-
|
55
|
-
puts "\n\e[0m\e[31mFound existing " + migration + " migration. Remove it if you want to regenerate.\e[0m"
|
56
|
-
else
|
57
|
-
puts ""
|
58
|
-
migration_template '../../../../db/migrate/' + migration, 'db/migrate/' + migration
|
59
|
-
end
|
51
|
+
migration_templating(destination, migration)
|
60
52
|
end
|
61
53
|
end
|
62
54
|
|
55
|
+
# rubocop:disable all
|
63
56
|
def show_info
|
64
57
|
puts "\n *************************************************************************"
|
65
58
|
puts " * *"
|
@@ -70,12 +63,37 @@ module Cms9
|
|
70
63
|
puts " * Visit \033[32mhttps://github.com/klikaba/cms9\033[0m for more informations *"
|
71
64
|
puts " * *"
|
72
65
|
puts " *************************************************************************\n\n"
|
66
|
+
binding.pry
|
73
67
|
end
|
74
68
|
|
75
69
|
private
|
76
|
-
|
77
|
-
|
70
|
+
|
71
|
+
def file_name
|
72
|
+
def_route.underscore
|
73
|
+
end
|
74
|
+
|
75
|
+
def migraton_files
|
76
|
+
cms9_file_dir = File.expand_path('../../../../../db/migrate/.',
|
77
|
+
__FILE__)
|
78
|
+
files = []
|
79
|
+
|
80
|
+
Dir.foreach(cms9_file_dir) do |file|
|
81
|
+
files << file unless file =~ /^\.\.?$/
|
78
82
|
end
|
83
|
+
|
84
|
+
files
|
85
|
+
end
|
86
|
+
|
87
|
+
def migration_templating(destination, migration)
|
88
|
+
if destination
|
89
|
+
puts "\n\e[0m\e[31mFound existing " + migration +
|
90
|
+
" migration. Remove it if you want to regenerate.\e[0m"
|
91
|
+
else
|
92
|
+
puts ''
|
93
|
+
migration_template '../../../../db/migrate/' + migration,
|
94
|
+
'db/migrate/' + migration
|
95
|
+
end
|
96
|
+
end
|
79
97
|
end
|
80
98
|
end
|
81
99
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cms9
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Klika.ba
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -296,6 +296,34 @@ dependencies:
|
|
296
296
|
- - ">="
|
297
297
|
- !ruby/object:Gem::Version
|
298
298
|
version: '0'
|
299
|
+
- !ruby/object:Gem::Dependency
|
300
|
+
name: rubocop
|
301
|
+
requirement: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - ">="
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: '0'
|
306
|
+
type: :development
|
307
|
+
prerelease: false
|
308
|
+
version_requirements: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: '0'
|
313
|
+
- !ruby/object:Gem::Dependency
|
314
|
+
name: brakeman
|
315
|
+
requirement: !ruby/object:Gem::Requirement
|
316
|
+
requirements:
|
317
|
+
- - ">="
|
318
|
+
- !ruby/object:Gem::Version
|
319
|
+
version: '0'
|
320
|
+
type: :development
|
321
|
+
prerelease: false
|
322
|
+
version_requirements: !ruby/object:Gem::Requirement
|
323
|
+
requirements:
|
324
|
+
- - ">="
|
325
|
+
- !ruby/object:Gem::Version
|
326
|
+
version: '0'
|
299
327
|
description: Small CMS Admin module for Rails
|
300
328
|
email:
|
301
329
|
- contact@klika.ba
|
@@ -311,8 +339,10 @@ files:
|
|
311
339
|
- app/assets/images/cms9/cms9_logo_readme.png
|
312
340
|
- app/assets/images/cms9/favicon-128.png
|
313
341
|
- app/assets/images/cms9/favicon-16.png
|
342
|
+
- app/assets/images/cms9/favicon-256.png
|
314
343
|
- app/assets/images/cms9/favicon-32.png
|
315
|
-
- app/assets/images/cms9/favicon-
|
344
|
+
- app/assets/images/cms9/favicon-48.png
|
345
|
+
- app/assets/images/cms9/favicon-512.png
|
316
346
|
- app/assets/images/cms9/iCheck/flat/blue.png
|
317
347
|
- app/assets/images/cms9/iCheck/flat/blue@2x.png
|
318
348
|
- app/assets/javascripts/cms9/admin_lte.js
|
Binary file
|