alchemy_cms 7.2.5 → 7.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +97 -4
- data/Gemfile +4 -3
- data/Rakefile +1 -0
- data/alchemy_cms.gemspec +7 -7
- data/app/assets/builds/alchemy/admin/print.css +1 -0
- data/app/assets/builds/alchemy/admin/print.css.map +1 -0
- data/app/assets/builds/alchemy/admin.css +1 -0
- data/app/assets/builds/alchemy/admin.css.map +1 -0
- data/app/assets/builds/alchemy/welcome.css +1 -0
- data/app/assets/builds/alchemy/welcome.css.map +1 -0
- data/app/assets/builds/tinymce/skins/content/alchemy/content.css +1 -0
- data/app/assets/builds/tinymce/skins/content/alchemy/content.css.map +1 -0
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -0
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +1 -0
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css +1 -0
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css.map +1 -0
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -0
- data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +1 -0
- data/app/assets/config/alchemy_manifest.js +1 -5
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +4 -0
- data/app/assets/stylesheets/alchemy/{_custom-properties.scss → _custom-properties.css} +28 -25
- data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +41 -0
- data/app/assets/stylesheets/alchemy/_deprecation.scss +17 -0
- data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
- data/app/assets/stylesheets/alchemy/_mixins.scss +20 -23
- data/app/assets/stylesheets/alchemy/_variables.scss +98 -94
- data/app/assets/stylesheets/alchemy/{archive.scss → admin/archive.scss} +23 -23
- data/app/assets/stylesheets/alchemy/{attachment-select.scss → admin/attachment-select.scss} +2 -2
- data/app/assets/stylesheets/alchemy/{attachments.scss → admin/attachments.scss} +4 -4
- data/app/assets/stylesheets/alchemy/{base.scss → admin/base.scss} +9 -9
- data/app/assets/stylesheets/alchemy/{buttons.scss → admin/buttons.scss} +3 -3
- data/app/assets/stylesheets/alchemy/{clipboard.scss → admin/clipboard.scss} +9 -6
- data/app/assets/stylesheets/alchemy/{dashboard.scss → admin/dashboard.scss} +8 -8
- data/app/assets/stylesheets/alchemy/{dialogs.scss → admin/dialogs.scss} +20 -20
- data/app/assets/stylesheets/alchemy/{elements.scss → admin/elements.scss} +128 -88
- data/app/assets/stylesheets/alchemy/{errors.scss → admin/errors.scss} +22 -6
- data/app/assets/stylesheets/alchemy/{flash.scss → admin/flash.scss} +3 -3
- data/app/assets/stylesheets/alchemy/{flatpickr.scss → admin/flatpickr.scss} +55 -35
- data/app/assets/stylesheets/alchemy/{form_fields.scss → admin/form_fields.scss} +8 -6
- data/app/assets/stylesheets/alchemy/{forms.scss → admin/forms.scss} +20 -16
- data/app/assets/stylesheets/alchemy/{frame.scss → admin/frame.scss} +9 -9
- data/app/assets/stylesheets/alchemy/{image_library.scss → admin/image_library.scss} +34 -33
- data/app/assets/stylesheets/alchemy/admin/labels.scss +3 -0
- data/app/assets/stylesheets/alchemy/{list_filter.scss → admin/list_filter.scss} +4 -4
- data/app/assets/stylesheets/alchemy/{lists.scss → admin/lists.scss} +9 -7
- data/app/assets/stylesheets/alchemy/{navigation.scss → admin/navigation.scss} +17 -17
- data/app/assets/stylesheets/alchemy/{node-select.scss → admin/node-select.scss} +5 -5
- data/app/assets/stylesheets/alchemy/{nodes.scss → admin/nodes.scss} +11 -11
- data/app/assets/stylesheets/alchemy/{notices.scss → admin/notices.scss} +11 -7
- data/app/assets/stylesheets/alchemy/{page-select.scss → admin/page-select.scss} +10 -10
- data/app/assets/stylesheets/alchemy/{pagination.scss → admin/pagination.scss} +10 -10
- data/app/assets/stylesheets/alchemy/{print.scss → admin/print.scss} +2 -6
- data/app/assets/stylesheets/alchemy/{resource_info.scss → admin/resource_info.scss} +6 -7
- data/app/assets/stylesheets/alchemy/{search.scss → admin/search.scss} +6 -6
- data/app/assets/stylesheets/alchemy/{selects.scss → admin/selects.scss} +46 -39
- data/app/assets/stylesheets/alchemy/{shoelace.scss → admin/shoelace.scss} +10 -10
- data/app/assets/stylesheets/alchemy/{sitemap.scss → admin/sitemap.scss} +18 -19
- data/app/assets/stylesheets/alchemy/{tables.scss → admin/tables.scss} +26 -22
- data/app/assets/stylesheets/alchemy/admin/tags.scss +158 -0
- data/app/assets/stylesheets/alchemy/{toolbar.scss → admin/toolbar.scss} +10 -10
- data/app/assets/stylesheets/alchemy/{typography.scss → admin/typography.scss} +3 -3
- data/app/assets/stylesheets/alchemy/{upload.scss → admin/upload.scss} +1 -1
- data/app/assets/stylesheets/alchemy/admin.scss +40 -45
- data/app/assets/stylesheets/alchemy/welcome.scss +57 -0
- data/app/assets/stylesheets/tinymce/skins/content/alchemy/{content.min.scss → content.scss} +5 -4
- data/app/assets/stylesheets/tinymce/skins/ui/alchemy/{skin.min.scss → skin.scss} +40 -40
- data/app/components/alchemy/admin/resource/action.rb +46 -0
- data/app/components/alchemy/admin/resource/cell.rb +34 -0
- data/app/components/alchemy/admin/resource/header.rb +46 -0
- data/app/components/alchemy/admin/resource/table.rb +153 -0
- data/app/components/alchemy/ingredients/datetime_view.rb +2 -2
- data/app/controllers/alchemy/admin/base_controller.rb +2 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +7 -3
- data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pictures_controller.rb +2 -2
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/base_controller.rb +2 -0
- data/app/controllers/alchemy/messages_controller.rb +1 -0
- data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +2 -11
- data/app/decorators/alchemy/ingredient_editor.rb +17 -0
- data/app/helpers/alchemy/admin/pages_helper.rb +6 -10
- data/app/helpers/alchemy/base_helper.rb +2 -2
- data/app/helpers/alchemy/elements_block_helper.rb +13 -1
- data/app/helpers/alchemy/elements_helper.rb +1 -1
- data/app/helpers/alchemy/pages_helper.rb +2 -2
- data/app/javascript/alchemy_admin/components/element_editor.js +23 -31
- data/app/javascript/alchemy_admin/components/preview_window.js +2 -3
- data/app/javascript/alchemy_admin/picture_selector.js +38 -10
- data/app/models/alchemy/attachment.rb +0 -8
- data/app/models/alchemy/element/dom_id.rb +1 -0
- data/app/models/alchemy/element/element_ingredients.rb +0 -73
- data/app/models/alchemy/element/presenters.rb +4 -1
- data/app/models/alchemy/element.rb +6 -0
- data/app/models/alchemy/elements_repository.rb +2 -2
- data/app/models/alchemy/ingredient_validator.rb +10 -0
- data/app/models/alchemy/page/page_scopes.rb +1 -1
- data/app/models/alchemy/page.rb +3 -3
- data/app/models/alchemy/picture.rb +0 -10
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +74 -16
- data/app/views/alchemy/admin/clipboard/index.html.erb +38 -33
- data/app/views/alchemy/admin/dashboard/_dashboard.html.erb +3 -0
- data/app/views/alchemy/admin/dashboard/_left_column.html.erb +4 -0
- data/app/views/alchemy/admin/dashboard/_right_column.html.erb +9 -0
- data/app/views/alchemy/admin/dashboard/_top.html.erb +12 -0
- data/app/views/alchemy/admin/dashboard/index.html.erb +1 -25
- data/app/views/alchemy/admin/elements/_element.html.erb +1 -2
- data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +10 -3
- data/app/views/alchemy/admin/ingredients/update.turbo_stream.erb +7 -0
- data/app/views/alchemy/admin/languages/_table.html.erb +16 -42
- data/app/views/alchemy/admin/nodes/_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_table.html.erb +92 -27
- data/app/views/alchemy/admin/pages/edit.html.erb +6 -8
- data/app/views/alchemy/admin/pages/index.html.erb +0 -4
- data/app/views/alchemy/admin/pictures/_form.html.erb +14 -12
- data/app/views/alchemy/admin/pictures/index.html.erb +1 -11
- data/app/views/alchemy/admin/pictures/update.turbo_stream.erb +6 -0
- data/app/views/alchemy/admin/resources/_resource_table.html.erb +3 -0
- data/app/views/alchemy/admin/resources/_table.html.erb +2 -0
- data/app/views/alchemy/admin/resources/index.html.erb +1 -1
- data/app/views/alchemy/admin/sites/index.html.erb +1 -1
- data/app/views/alchemy/admin/styleguide/index.html.erb +0 -4
- data/app/views/alchemy/admin/tags/index.html.erb +15 -14
- data/app/views/alchemy/base/403.html.erb +6 -0
- data/app/views/alchemy/base/500.html.erb +14 -12
- data/app/views/alchemy/ingredients/_datetime_editor.html.erb +13 -11
- data/app/views/alchemy/ingredients/_headline_editor.html.erb +29 -22
- data/app/views/alchemy/ingredients/_link_editor.html.erb +17 -11
- data/app/views/alchemy/ingredients/_page_editor.html.erb +1 -0
- data/app/views/alchemy/ingredients/_picture_editor.html.erb +3 -4
- data/app/views/alchemy/ingredients/_richtext_editor.html.erb +5 -1
- data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
- data/app/views/alchemy/ingredients/_text_editor.html.erb +20 -14
- data/app/views/alchemy/ingredients/shared/_picture_css_class.html.erb +6 -0
- data/app/views/layouts/alchemy/admin.html.erb +4 -2
- data/bin/setup +2 -0
- data/bin/start +1 -1
- data/bun.lockb +0 -0
- data/config/alchemy/config.yml +9 -0
- data/config/locales/alchemy.en.yml +8 -29
- data/config/routes.rb +22 -22
- data/lib/alchemy/config.rb +3 -3
- data/lib/alchemy/install/tasks.rb +5 -2
- data/lib/alchemy/resources_helper.rb +3 -1
- data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
- data/lib/alchemy/test_support/shared_uploader_examples.rb +0 -1
- data/lib/alchemy/upgrader/seven_point_three.rb +52 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -1
- data/lib/generators/alchemy/install/files/article.css +25 -0
- data/lib/generators/alchemy/install/files/custom.css +4 -0
- data/lib/generators/alchemy/install/install_generator.rb +6 -6
- data/lib/tasks/alchemy/upgrade.rake +29 -1
- data/vendor/assets/stylesheets/alchemy_admin/select2.css +1 -0
- data/vendor/assets/stylesheets/jquery.Jcrop.min.css +2 -0
- data/vendor/javascript/shoelace.min.js +62 -63
- data/vendor/javascript/tinymce.min.js +1 -1
- metadata +132 -105
- data/app/assets/images/alchemy/lupe.cur +0 -0
- data/app/assets/stylesheets/alchemy/labels.scss +0 -3
- data/app/assets/stylesheets/alchemy/tags.scss +0 -155
- data/app/assets/stylesheets/alchemy/welcome.sass +0 -49
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +0 -81
- data/app/views/alchemy/admin/languages/_language.html.erb +0 -50
- data/app/views/alchemy/admin/pages/_table_row.html.erb +0 -111
- data/app/views/alchemy/admin/pages/list/_table.html.erb +0 -31
- data/app/views/alchemy/admin/pictures/update.js.erb +0 -6
- data/app/views/alchemy/admin/tags/_tag.html.erb +0 -32
- data/app/views/alchemy/base/update.js.erb +0 -5
- data/lib/generators/alchemy/install/files/all.css +0 -11
- data/lib/generators/alchemy/install/files/article.scss +0 -30
- data/package.json +0 -52
- data/vendor/assets/stylesheets/alchemy_admin/select2.scss +0 -741
- data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +0 -2
- /data/app/assets/stylesheets/alchemy/{fonts.scss → _fonts.scss} +0 -0
- /data/app/assets/stylesheets/alchemy/{hints.scss → admin/hints.scss} +0 -0
- /data/app/assets/stylesheets/alchemy/{icons.scss → admin/icons.scss} +0 -0
- /data/app/assets/stylesheets/alchemy/{images.scss → admin/images.scss} +0 -0
- /data/app/assets/stylesheets/alchemy/{preview_window.scss → admin/preview_window.scss} +0 -0
- /data/app/assets/stylesheets/alchemy/{spinner.scss → admin/spinner.scss} +0 -0
- /data/app/views/alchemy/admin/dashboard/{_locked_pages.html.erb → widgets/_locked_pages.html.erb} +0 -0
- /data/app/views/alchemy/admin/dashboard/{_recent_pages.html.erb → widgets/_recent_pages.html.erb} +0 -0
- /data/app/views/alchemy/admin/dashboard/{_sites.html.erb → widgets/_sites.html.erb} +0 -0
- /data/app/views/alchemy/admin/dashboard/{_users.html.erb → widgets/_users.html.erb} +0 -0
@@ -1,155 +0,0 @@
|
|
1
|
-
.tag-list {
|
2
|
-
display: flex;
|
3
|
-
flex-direction: column;
|
4
|
-
height: 100%;
|
5
|
-
|
6
|
-
.alchemy-dialog-body & {
|
7
|
-
max-height: 316px;
|
8
|
-
}
|
9
|
-
|
10
|
-
alchemy-list-filter {
|
11
|
-
margin: 0;
|
12
|
-
|
13
|
-
input {
|
14
|
-
background-color: transparentize($white, 0.25);
|
15
|
-
|
16
|
-
&:focus {
|
17
|
-
background-color: $white;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
ul {
|
23
|
-
list-style-type: none;
|
24
|
-
padding: 0;
|
25
|
-
margin: 0;
|
26
|
-
height: 100%;
|
27
|
-
overflow-x: hidden;
|
28
|
-
overflow-y: auto;
|
29
|
-
|
30
|
-
li {
|
31
|
-
display: block;
|
32
|
-
|
33
|
-
&:first-child {
|
34
|
-
margin-top: 0;
|
35
|
-
}
|
36
|
-
|
37
|
-
a {
|
38
|
-
@include tag-base;
|
39
|
-
text-decoration: none;
|
40
|
-
display: flex;
|
41
|
-
}
|
42
|
-
|
43
|
-
&:hover {
|
44
|
-
background-color: $very-light-blue;
|
45
|
-
}
|
46
|
-
|
47
|
-
&.active {
|
48
|
-
a {
|
49
|
-
background-color: $dark-gray;
|
50
|
-
color: $light-gray;
|
51
|
-
|
52
|
-
&:before {
|
53
|
-
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="rgba(255, 255, 255, 0.95)"><path d="M10.9042 2.10025L20.8037 3.51446L22.2179 13.414L13.0255 22.6063C12.635 22.9969 12.0019 22.9969 11.6113 22.6063L1.71184 12.7069C1.32131 12.3163 1.32131 11.6832 1.71184 11.2926L10.9042 2.10025ZM11.6113 4.22157L3.83316 11.9997L12.3184 20.485L20.0966 12.7069L19.036 5.28223L11.6113 4.22157ZM13.7327 10.5855C12.9516 9.80448 12.9516 8.53815 13.7327 7.7571C14.5137 6.97606 15.78 6.97606 16.5611 7.7571C17.3421 8.53815 17.3421 9.80448 16.5611 10.5855C15.78 11.3666 14.5137 11.3666 13.7327 10.5855Z"></path></svg>');
|
54
|
-
}
|
55
|
-
}
|
56
|
-
}
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
.tag {
|
62
|
-
@include tag-base(
|
63
|
-
$margin: $default-margin/2 0,
|
64
|
-
$padding: $default-padding 2 * $default-padding $default-padding
|
65
|
-
);
|
66
|
-
pointer-events: none;
|
67
|
-
font-size: $small-font-size;
|
68
|
-
}
|
69
|
-
|
70
|
-
.tags .list .tag {
|
71
|
-
padding: 0;
|
72
|
-
}
|
73
|
-
|
74
|
-
#assign_image_list {
|
75
|
-
.tag-list ul {
|
76
|
-
height: 316px;
|
77
|
-
}
|
78
|
-
|
79
|
-
&.filtered .tag-list ul {
|
80
|
-
height: 292px;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
#assign_file_list {
|
85
|
-
.tag-list ul {
|
86
|
-
height: 396px;
|
87
|
-
}
|
88
|
-
|
89
|
-
&.filtered .tag-list ul {
|
90
|
-
height: 372px;
|
91
|
-
}
|
92
|
-
}
|
93
|
-
|
94
|
-
#overlay_file_list.with_tag_list {
|
95
|
-
padding-right: 234px;
|
96
|
-
}
|
97
|
-
|
98
|
-
#tags_tag_list {
|
99
|
-
alchemy-list-filter {
|
100
|
-
margin-top: 0;
|
101
|
-
}
|
102
|
-
|
103
|
-
ul.tags {
|
104
|
-
max-height: 10em;
|
105
|
-
padding: 1px;
|
106
|
-
margin: 0;
|
107
|
-
margin-top: 2px;
|
108
|
-
overflow: auto;
|
109
|
-
text-align: left;
|
110
|
-
list-style-type: none;
|
111
|
-
|
112
|
-
li {
|
113
|
-
background-color: $medium-gray;
|
114
|
-
padding: 4px;
|
115
|
-
margin: 0 0 4px 0;
|
116
|
-
position: relative;
|
117
|
-
border-radius: $default-border-radius;
|
118
|
-
|
119
|
-
&.odd {
|
120
|
-
background-color: #eaf3f9;
|
121
|
-
}
|
122
|
-
|
123
|
-
input {
|
124
|
-
position: absolute;
|
125
|
-
top: 3px;
|
126
|
-
left: 4px;
|
127
|
-
}
|
128
|
-
|
129
|
-
label {
|
130
|
-
display: inline-block;
|
131
|
-
margin-left: 2em;
|
132
|
-
line-height: 1.6em;
|
133
|
-
}
|
134
|
-
}
|
135
|
-
}
|
136
|
-
}
|
137
|
-
|
138
|
-
.tag_list,
|
139
|
-
.autocomplete_tag_list {
|
140
|
-
.select2-container.select2-container-multi {
|
141
|
-
.select2-search-choice {
|
142
|
-
padding: $default-padding 22px;
|
143
|
-
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#{$icon-color}"><path d="M10.9042 2.10025L20.8037 3.51446L22.2179 13.414L13.0255 22.6063C12.635 22.9969 12.0019 22.9969 11.6113 22.6063L1.71184 12.7069C1.32131 12.3163 1.32131 11.6832 1.71184 11.2926L10.9042 2.10025ZM11.6113 4.22157L3.83316 11.9997L12.3184 20.485L20.0966 12.7069L19.036 5.28223L11.6113 4.22157ZM13.7327 10.5855C12.9516 9.80448 12.9516 8.53815 13.7327 7.7571C14.5137 6.97606 15.78 6.97606 16.5611 7.7571C17.3421 8.53815 17.3421 9.80448 16.5611 10.5855C15.78 11.3666 14.5137 11.3666 13.7327 10.5855Z"></path></svg>');
|
144
|
-
background-repeat: no-repeat;
|
145
|
-
background-position: 6px;
|
146
|
-
background-color: $medium-gray;
|
147
|
-
background-size: 1rem;
|
148
|
-
|
149
|
-
> div {
|
150
|
-
position: relative;
|
151
|
-
top: -1px;
|
152
|
-
}
|
153
|
-
}
|
154
|
-
}
|
155
|
-
}
|
@@ -1,49 +0,0 @@
|
|
1
|
-
@import "alchemy/variables"
|
2
|
-
@import "alchemy/fonts"
|
3
|
-
|
4
|
-
body
|
5
|
-
background-color: $main-menu-bg-color
|
6
|
-
color: $white
|
7
|
-
font-family: $default-font-family
|
8
|
-
font-weight: normal
|
9
|
-
font-size: 15px
|
10
|
-
line-height: 22px
|
11
|
-
|
12
|
-
h3
|
13
|
-
font-weight: bold
|
14
|
-
font-size: 25px
|
15
|
-
line-height: 1.2
|
16
|
-
margin-bottom: 20px
|
17
|
-
padding-top: 20px
|
18
|
-
|
19
|
-
.container
|
20
|
-
position: absolute
|
21
|
-
top: 50%
|
22
|
-
left: 50%
|
23
|
-
width: 600px
|
24
|
-
margin-top: -50px
|
25
|
-
transform: translateY(-50%) translateX(-300px)
|
26
|
-
|
27
|
-
ul
|
28
|
-
line-height: 1.6
|
29
|
-
margin-bottom: 17px
|
30
|
-
padding: 0
|
31
|
-
padding-left: 20px
|
32
|
-
margin: 0px
|
33
|
-
list-style-position: outside
|
34
|
-
|
35
|
-
li
|
36
|
-
color: $white
|
37
|
-
margin-bottom: 12px
|
38
|
-
background-color: none
|
39
|
-
border-bottom: 0 none
|
40
|
-
line-height: 22px
|
41
|
-
|
42
|
-
a
|
43
|
-
color: $white
|
44
|
-
text-decoration: underline
|
45
|
-
transition: all 0.1s ease-in-out
|
46
|
-
|
47
|
-
&:hover
|
48
|
-
color: $white
|
49
|
-
text-decoration: none
|
@@ -1,81 +0,0 @@
|
|
1
|
-
<tr class="<%= cycle('even', 'odd') %>">
|
2
|
-
<td class="icon">
|
3
|
-
<%= render_icon attachment.icon_css_class, size: "xl" %>
|
4
|
-
</td>
|
5
|
-
<td class="name">
|
6
|
-
<% if can?(:show, attachment) %>
|
7
|
-
<%= link_to_dialog(
|
8
|
-
attachment.name,
|
9
|
-
alchemy.admin_attachment_path(attachment),
|
10
|
-
{
|
11
|
-
title: attachment.name,
|
12
|
-
size: attachment_preview_size(attachment)
|
13
|
-
},
|
14
|
-
{
|
15
|
-
title: Alchemy.t('Attachment Preview')
|
16
|
-
}
|
17
|
-
) %>
|
18
|
-
<% else %>
|
19
|
-
<%= attachment.name %>
|
20
|
-
<% end %>
|
21
|
-
</td>
|
22
|
-
<td class="file_name"><%= attachment.file_name %></td>
|
23
|
-
<td class="file_type"><%= mime_to_human(attachment.file_mime_type) %></td>
|
24
|
-
<td class="file_size"><%= number_to_human_size(attachment.file_size) %></td>
|
25
|
-
<td class="date"><%= l(attachment.created_at, format: :'alchemy.default') %></td>
|
26
|
-
<td class="tools long">
|
27
|
-
<% if can?(:show, attachment) %>
|
28
|
-
<sl-tooltip content="<%= Alchemy.t('Attachment Preview') %>">
|
29
|
-
<%= link_to_dialog(
|
30
|
-
render_icon(:information),
|
31
|
-
alchemy.admin_attachment_path(attachment),
|
32
|
-
{
|
33
|
-
title: attachment.name,
|
34
|
-
size: attachment_preview_size(attachment)
|
35
|
-
},
|
36
|
-
class: "icon_button"
|
37
|
-
) %>
|
38
|
-
</sl-tooltip>
|
39
|
-
<% end %>
|
40
|
-
<% if can?(:download, attachment) %>
|
41
|
-
<sl-tooltip content="<%= Alchemy.t("download_file", filename: attachment.file_name) %>">
|
42
|
-
<%= link_to render_icon(:download),
|
43
|
-
alchemy.download_admin_attachment_path(attachment),
|
44
|
-
target: "_blank",
|
45
|
-
class: "icon_button" %>
|
46
|
-
</sl-tooltip>
|
47
|
-
<% end %>
|
48
|
-
<% if can?(:edit, attachment) %>
|
49
|
-
<sl-tooltip content="<%= Alchemy.t(:replace_file) %>">
|
50
|
-
<%= render 'alchemy/admin/attachments/replace_button',
|
51
|
-
redirect_url: alchemy.admin_attachments_path,
|
52
|
-
object: attachment,
|
53
|
-
file_attribute: 'file' %>
|
54
|
-
</sl-tooltip>
|
55
|
-
<% end %>
|
56
|
-
<% if can?(:destroy, attachment) %>
|
57
|
-
<sl-tooltip content="<%= Alchemy.t(:delete_file) %>">
|
58
|
-
<%= link_to_confirm_dialog render_icon(:minus),
|
59
|
-
Alchemy.t(:confirm_to_delete_file),
|
60
|
-
alchemy.admin_attachment_path(
|
61
|
-
id: attachment,
|
62
|
-
q: search_filter_params[:q],
|
63
|
-
page: params[:page],
|
64
|
-
per_page: params[:per_page]
|
65
|
-
),
|
66
|
-
class: "icon_button" %>
|
67
|
-
</sl-tooltip>
|
68
|
-
<% end %>
|
69
|
-
<% if can?(:edit, attachment) %>
|
70
|
-
<sl-tooltip content="<%= Alchemy.t(:rename_file) %>">
|
71
|
-
<%= link_to_dialog render_icon(:edit),
|
72
|
-
alchemy.edit_admin_attachment_path(attachment, q: search_filter_params[:q], page: params[:page]),
|
73
|
-
{
|
74
|
-
title: Alchemy.t(:rename_file),
|
75
|
-
size: '500x250'
|
76
|
-
},
|
77
|
-
class: "icon_button" %>
|
78
|
-
</sl-tooltip>
|
79
|
-
<% end %>
|
80
|
-
</td>
|
81
|
-
</tr>
|
@@ -1,50 +0,0 @@
|
|
1
|
-
<tr class="<%= cycle('even', 'odd') %>">
|
2
|
-
<td class="icon">
|
3
|
-
<%= render_icon("translate-2", size: "xl", style: false) %>
|
4
|
-
</td>
|
5
|
-
<td>
|
6
|
-
<%= language.name %>
|
7
|
-
</td>
|
8
|
-
<td>
|
9
|
-
<%= language.language_code %>
|
10
|
-
</td>
|
11
|
-
<td>
|
12
|
-
<%= language.country_code %>
|
13
|
-
</td>
|
14
|
-
<td>
|
15
|
-
<%= language.code %>
|
16
|
-
</td>
|
17
|
-
<td>
|
18
|
-
<%= language.locale %>
|
19
|
-
</td>
|
20
|
-
<td>
|
21
|
-
<%= language.frontpage_name %>
|
22
|
-
</td>
|
23
|
-
<td>
|
24
|
-
<%= Alchemy::Page.human_layout_name(language.page_layout) %>
|
25
|
-
</td>
|
26
|
-
<td class="center">
|
27
|
-
<%= language.public? ? render_icon(:check) : nil %>
|
28
|
-
</td>
|
29
|
-
<td class="center">
|
30
|
-
<%= language.default? ? render_icon(:check) : nil %>
|
31
|
-
</td>
|
32
|
-
<td class="tools">
|
33
|
-
<%- if can?(:destroy, language) -%>
|
34
|
-
<sl-tooltip content="<%= Alchemy.t("Delete") %>">
|
35
|
-
<%= delete_button resource_path(language) %>
|
36
|
-
</sl-tooltip>
|
37
|
-
<%- end -%>
|
38
|
-
<%- if can?(:edit, language) -%>
|
39
|
-
<sl-tooltip content="<%= Alchemy.t("Edit") %>" placement="top-end">
|
40
|
-
<%= link_to_dialog render_icon(:edit),
|
41
|
-
alchemy.edit_admin_language_path(language),
|
42
|
-
{
|
43
|
-
title: Alchemy.t("Edit"),
|
44
|
-
size: "430x415"
|
45
|
-
},
|
46
|
-
class: "icon_button" %>
|
47
|
-
</sl-tooltip>
|
48
|
-
<%- end -%>
|
49
|
-
</td>
|
50
|
-
</tr>
|
@@ -1,111 +0,0 @@
|
|
1
|
-
<tr class="<%= cycle(:even, :odd) %>" data-page-id="<%= page.id %>" id="page_<%= page.id %>">
|
2
|
-
<td class="icon">
|
3
|
-
<% if can?(:edit_content, page) %>
|
4
|
-
<% if page.locked? %>
|
5
|
-
<sl-tooltip class="like-hint-tooltip" content="<%= Alchemy.t("This page is locked", name: page.locker_name) %>" placement="bottom-start">
|
6
|
-
<%= render_icon "file-edit", size: "xl" %>
|
7
|
-
</sl-tooltip>
|
8
|
-
<% else %>
|
9
|
-
<%= render_icon "file-edit", size: "xl" %>
|
10
|
-
<% end %>
|
11
|
-
<% else %>
|
12
|
-
<sl-tooltip class="like-hint-tooltip" content="<%= Alchemy.t("Your user role does not allow you to edit this page") %>" placement="bottom-start">
|
13
|
-
<%= render_icon "file-forbid", size: "xl" %>
|
14
|
-
</sl-tooltip>
|
15
|
-
<% end %>
|
16
|
-
</td>
|
17
|
-
<td class="string name">
|
18
|
-
<%= link_to_if(
|
19
|
-
can?(:edit_content, page),
|
20
|
-
page.name,
|
21
|
-
alchemy.edit_admin_page_path(page),
|
22
|
-
title: Alchemy.t(:edit_page),
|
23
|
-
) { content_tag(:span, page.name) } -%>
|
24
|
-
</td>
|
25
|
-
<td class="url">
|
26
|
-
<%= page.url_path %>
|
27
|
-
</td>
|
28
|
-
<td class="page_layout">
|
29
|
-
<%= Alchemy.t(page.page_layout, scope: "page_layout_names", default: page.page_layout.to_s.humanize) %>
|
30
|
-
</td>
|
31
|
-
<td class="tags">
|
32
|
-
<% page.tag_list.each do |tag| %>
|
33
|
-
<%= content_tag(:span, tag, class: "tag") %>
|
34
|
-
<% end %>
|
35
|
-
</td>
|
36
|
-
<td class="date">
|
37
|
-
<%= l(page.updated_at, format: :"alchemy.default") %>
|
38
|
-
</td>
|
39
|
-
<td class="status right">
|
40
|
-
<% if page.locked? %>
|
41
|
-
<span class="page_status locked">
|
42
|
-
<%= render_icon(:edit, size: "1x") %>
|
43
|
-
<%= page.status_title(:locked) %>
|
44
|
-
</span>
|
45
|
-
<% end %>
|
46
|
-
<% if page.restricted? %>
|
47
|
-
<span class="page_status">
|
48
|
-
<%= render_icon(:lock, size: "1x") %>
|
49
|
-
<%= page.status_title(:restricted) %>
|
50
|
-
</span>
|
51
|
-
<% end %>
|
52
|
-
<% unless page.public? %>
|
53
|
-
<span class="page_status">
|
54
|
-
<%= render_icon("cloud-off", size: "1x") %>
|
55
|
-
<%= page.status_title(:public) %>
|
56
|
-
</span>
|
57
|
-
<% end %>
|
58
|
-
</td>
|
59
|
-
<td class="tools">
|
60
|
-
<% if can?(:info, page) %>
|
61
|
-
<sl-tooltip content="<%= Alchemy.t(:page_infos) %>">
|
62
|
-
<%= link_to_dialog(
|
63
|
-
render_icon('info-circle'),
|
64
|
-
alchemy.info_admin_page_path(page),
|
65
|
-
{
|
66
|
-
title: Alchemy.t(:page_infos),
|
67
|
-
size: '520x290'
|
68
|
-
},
|
69
|
-
class: "icon_button"
|
70
|
-
) %>
|
71
|
-
</sl-tooltip>
|
72
|
-
<% end %>
|
73
|
-
<% if can?(:configure, page) %>
|
74
|
-
<sl-tooltip content="<%= Alchemy.t(:edit_page_properties) %>">
|
75
|
-
<%= link_to_dialog(
|
76
|
-
render_icon(:cog),
|
77
|
-
alchemy.configure_admin_page_path(page),
|
78
|
-
{
|
79
|
-
title: Alchemy.t(:edit_page_properties),
|
80
|
-
size: '450x680'
|
81
|
-
},
|
82
|
-
class: "icon_button"
|
83
|
-
) -%>
|
84
|
-
</sl-tooltip>
|
85
|
-
<% end %>
|
86
|
-
<% if can?(:copy, page) %>
|
87
|
-
<sl-tooltip content="<%= Alchemy.t(:copy_page) %>">
|
88
|
-
<%= link_to(
|
89
|
-
render_icon(:copy),
|
90
|
-
alchemy.insert_admin_clipboard_path(
|
91
|
-
remarkable_type: :pages,
|
92
|
-
remarkable_id: page.id,
|
93
|
-
),
|
94
|
-
remote: true,
|
95
|
-
method: :post,
|
96
|
-
class: "icon_button"
|
97
|
-
) %>
|
98
|
-
</sl-tooltip>
|
99
|
-
<% end %>
|
100
|
-
<% if can?(:destroy, page) %>
|
101
|
-
<sl-tooltip content="<%= Alchemy.t(:delete_page) %>">
|
102
|
-
<%= link_to_confirm_dialog(
|
103
|
-
render_icon(:minus),
|
104
|
-
Alchemy.t(:confirm_to_delete_page),
|
105
|
-
alchemy.admin_page_path(page),
|
106
|
-
class: "icon_button"
|
107
|
-
) -%>
|
108
|
-
</sl-tooltip>
|
109
|
-
<% end %>
|
110
|
-
</td>
|
111
|
-
</tr>
|
@@ -1,31 +0,0 @@
|
|
1
|
-
<% if @pages.any? %>
|
2
|
-
<table class="list">
|
3
|
-
<thead>
|
4
|
-
<tr>
|
5
|
-
<th class="icon"></th>
|
6
|
-
<th class="string name">
|
7
|
-
<%= sort_link [:alchemy, @query],
|
8
|
-
"name",
|
9
|
-
Alchemy::Page.human_attribute_name(:name),
|
10
|
-
default_order: "asc" %>
|
11
|
-
</th>
|
12
|
-
<th><%= Alchemy::Page.human_attribute_name(:urlname) %></th>
|
13
|
-
<th><%= Alchemy::Page.human_attribute_name(:page_type) %></th>
|
14
|
-
<th><%= Alchemy::Page.human_attribute_name(:tag_list) %></th>
|
15
|
-
<th class="status center"><%= Alchemy::Page.human_attribute_name(:status) %></th>
|
16
|
-
<th class="tools"></th>
|
17
|
-
</tr>
|
18
|
-
</thead>
|
19
|
-
<tbody>
|
20
|
-
<%= render partial: "page", collection: @pages %>
|
21
|
-
</tbody>
|
22
|
-
</table>
|
23
|
-
<% elsif search_filter_params.present? %>
|
24
|
-
<%= render_message do %>
|
25
|
-
<%= Alchemy.t('No pages found') %>
|
26
|
-
<% end %>
|
27
|
-
<% else %>
|
28
|
-
<%= render partial: 'alchemy/admin/pages/create_language_form' %>
|
29
|
-
<% end %>
|
30
|
-
|
31
|
-
<%= paginate @pages, scope: alchemy, theme: 'alchemy' %>
|
@@ -1,6 +0,0 @@
|
|
1
|
-
Alchemy.growl('<%= @message[:body] %>', '<%= @message[:type] %>');
|
2
|
-
$('#picture_<%= @picture.id %> .picture_name').text('<%= @picture.name %>');
|
3
|
-
$('#picture_<%= @picture.id %> .picture_tags').html('<%== @picture.tag_list.map do |tag|
|
4
|
-
"<span class=\"tag\">#{tag}</span>".html_safe
|
5
|
-
end.join %>');
|
6
|
-
$('#picture_name').blur();
|
@@ -1,32 +0,0 @@
|
|
1
|
-
<tr class="<%= cycle('even', 'odd') %>">
|
2
|
-
<td class="icon"><%= render_icon(:tag, size: "xl") %></td>
|
3
|
-
<td class="name"><%= tag.name %></td>
|
4
|
-
<td>
|
5
|
-
<% tag.taggings.collect(&:taggable).compact.uniq(&:class).each do |taggable| %>
|
6
|
-
<span class="label">
|
7
|
-
<%= taggable.class.model_name.human %>
|
8
|
-
</span>
|
9
|
-
<% end %>
|
10
|
-
</td>
|
11
|
-
<td class="count"><%= tag.taggings.count %></td>
|
12
|
-
<td class="tools">
|
13
|
-
<% if can?(:destroy, Alchemy::Tag) %>
|
14
|
-
<sl-tooltip content="<%= Alchemy.t(:delete_tag) %>">
|
15
|
-
<%= delete_button admin_tag_path(tag), {
|
16
|
-
message: Alchemy.t(:do_you_really_want_to_delete_this_tag?),
|
17
|
-
icon: :minus
|
18
|
-
} %>
|
19
|
-
</sl-tooltip>
|
20
|
-
<% end %>
|
21
|
-
<% if can?(:edit, Alchemy::Tag) %>
|
22
|
-
<sl-tooltip content="<%= Alchemy.t(:edit_tag) %>" placement="top-end">
|
23
|
-
<%= link_to_dialog render_icon(:edit),
|
24
|
-
edit_admin_tag_path(tag),
|
25
|
-
{
|
26
|
-
title: Alchemy.t(:edit_tag),
|
27
|
-
size: '360x410'
|
28
|
-
}, class: "icon_button" %>
|
29
|
-
</sl-tooltip>
|
30
|
-
<% end %>
|
31
|
-
</td>
|
32
|
-
</tr>
|
@@ -1,11 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is the AlchemyCMS stylesheet manifest that'll be compiled into alchemy/admin/all.css
|
3
|
-
*
|
4
|
-
* In order to override existing styles or add custom styles to Alchemy's admin interface just
|
5
|
-
* require the files here.
|
6
|
-
*
|
7
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
8
|
-
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
9
|
-
*
|
10
|
-
*= require alchemy/admin
|
11
|
-
*/
|
@@ -1,30 +0,0 @@
|
|
1
|
-
article {
|
2
|
-
width: 50%;
|
3
|
-
font: 16px/20px Helvetica, Arial, sans-serif;
|
4
|
-
color: #333;
|
5
|
-
margin: 1em auto;
|
6
|
-
padding: 0.5em 1em;
|
7
|
-
background: #f4f4f4;
|
8
|
-
|
9
|
-
h2 {
|
10
|
-
font-size: 24px;
|
11
|
-
line-height: 1.25;
|
12
|
-
font-weight: bold;
|
13
|
-
}
|
14
|
-
|
15
|
-
a {
|
16
|
-
color: #5588D3;
|
17
|
-
}
|
18
|
-
|
19
|
-
img {
|
20
|
-
max-width: 100%;
|
21
|
-
}
|
22
|
-
|
23
|
-
figure {
|
24
|
-
margin: 0;
|
25
|
-
}
|
26
|
-
|
27
|
-
figcaption {
|
28
|
-
font-size: 14px;
|
29
|
-
}
|
30
|
-
}
|
data/package.json
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "alchemy_admin",
|
3
|
-
"scripts": {
|
4
|
-
"test": "jest",
|
5
|
-
"lint": "prettier --check 'app/javascript/**/*.js'",
|
6
|
-
"eslint": "eslint app/javascript/**/*.js",
|
7
|
-
"build": "rollup -c"
|
8
|
-
},
|
9
|
-
"keywords": [],
|
10
|
-
"author": "Thomas von Deyen",
|
11
|
-
"license": "BSD-3-Clause",
|
12
|
-
"dependencies": {
|
13
|
-
"@rails/ujs": "^7.1.3",
|
14
|
-
"@shoelace-style/shoelace": "^2.15.1",
|
15
|
-
"@ungap/custom-elements": "^1.3.0",
|
16
|
-
"clipboard": "^2.0.11",
|
17
|
-
"flatpickr": "^4.6.13",
|
18
|
-
"keymaster": "^1.6.2",
|
19
|
-
"sortablejs": "^1.15.2",
|
20
|
-
"tinymce": "^7.1.1"
|
21
|
-
},
|
22
|
-
"devDependencies": {
|
23
|
-
"@babel/core": "^7.24.5",
|
24
|
-
"@babel/preset-env": "^7.24.5",
|
25
|
-
"@rollup/plugin-commonjs": "^25.0.7",
|
26
|
-
"@rollup/plugin-node-resolve": "^15.2.3",
|
27
|
-
"@rollup/plugin-terser": "^0.4.4",
|
28
|
-
"babel-jest": "^29.6.4",
|
29
|
-
"eslint": "^8.57.0",
|
30
|
-
"jest": "^29.6.4",
|
31
|
-
"jest-environment-jsdom": "^29.6.4",
|
32
|
-
"jquery": "^3.7.1",
|
33
|
-
"jsdom-testing-mocks": "^1.13.0",
|
34
|
-
"prettier": "^3.2.5",
|
35
|
-
"rollup": "^4.18.0",
|
36
|
-
"xhr-mock": "^2.5.1"
|
37
|
-
},
|
38
|
-
"jest": {
|
39
|
-
"globals": {
|
40
|
-
"Alchemy": {}
|
41
|
-
},
|
42
|
-
"moduleNameMapper": {
|
43
|
-
"alchemy_admin/(.*)": "<rootDir>/app/javascript/alchemy_admin/$1",
|
44
|
-
"assets/(.*)": "<rootDir>/vendor/assets/javascripts/$1",
|
45
|
-
"vendor/(.*)": "<rootDir>/vendor/javascript/$1"
|
46
|
-
},
|
47
|
-
"testEnvironment": "jsdom",
|
48
|
-
"roots": [
|
49
|
-
"spec/javascript/alchemy_admin"
|
50
|
-
]
|
51
|
-
}
|
52
|
-
}
|