alchemy_cms 7.2.6 → 7.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +103 -9
- data/Gemfile +4 -3
- data/Rakefile +1 -0
- data/alchemy_cms.gemspec +7 -7
- data/app/assets/builds/alchemy/admin/page-select.css +1 -0
- data/app/assets/builds/alchemy/admin/page-select.css.map +1 -0
- 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.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.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 +2 -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 +45 -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 +21 -24
- data/app/assets/stylesheets/alchemy/_variables.scss +99 -95
- 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} +136 -96
- 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} +19 -19
- data/app/assets/stylesheets/alchemy/{node-select.scss → admin/node-select.scss} +6 -6
- data/app/assets/stylesheets/alchemy/{nodes.scss → admin/nodes.scss} +12 -12
- data/app/assets/stylesheets/alchemy/{notices.scss → admin/notices.scss} +12 -8
- data/app/assets/stylesheets/alchemy/admin/page-select.scss +81 -0
- 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} +14 -14
- data/app/assets/stylesheets/alchemy/{sitemap.scss → admin/sitemap.scss} +19 -20
- 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 +39 -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} +41 -41
- data/app/components/alchemy/admin/page_select.rb +3 -1
- 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/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/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/_toolbar.html.erb +1 -1
- 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.html.erb +2 -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 +7 -3
- 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 +130 -105
- data/app/assets/images/alchemy/lupe.cur +0 -0
- data/app/assets/stylesheets/alchemy/labels.scss +0 -3
- data/app/assets/stylesheets/alchemy/page-select.scss +0 -66
- 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
data/config/alchemy/config.yml
CHANGED
@@ -205,3 +205,12 @@ format_matchers:
|
|
205
205
|
|
206
206
|
# The layout used for rendering the +alchemy/admin/pages#show+ action.
|
207
207
|
admin_page_preview_layout: application
|
208
|
+
|
209
|
+
# The sizes for the preview size select in the page editor.
|
210
|
+
page_preview_sizes:
|
211
|
+
- 360
|
212
|
+
- 640
|
213
|
+
- 768
|
214
|
+
- 1024
|
215
|
+
- 1280
|
216
|
+
- 1440
|
@@ -140,28 +140,6 @@ en:
|
|
140
140
|
recent: Recently uploaded only
|
141
141
|
without_tag: Without tag
|
142
142
|
|
143
|
-
# === Translations for ingredient validations
|
144
|
-
# Used when a user did not enter (correct) values to the ingredient field.
|
145
|
-
#
|
146
|
-
# Tip: You can define the validation messages translations different for each element and ingredient
|
147
|
-
#
|
148
|
-
# Example:
|
149
|
-
#
|
150
|
-
# en:
|
151
|
-
# alchemy:
|
152
|
-
# ingredient_validations:
|
153
|
-
# contactform:
|
154
|
-
# success_page:
|
155
|
-
# blank: 'Please choose a follow up page.'
|
156
|
-
# mail_to:
|
157
|
-
# blank: 'Please provide an email address where the contact inquiries will be delivered to.'
|
158
|
-
#
|
159
|
-
ingredient_validations:
|
160
|
-
errors:
|
161
|
-
blank: "%{field} can't be blank"
|
162
|
-
invalid: "%{field} has wrong format"
|
163
|
-
taken: "%{field} has already been taken"
|
164
|
-
|
165
143
|
default_ingredient_texts:
|
166
144
|
lorem: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
|
167
145
|
corporate_lorem: "Appropriately enable sustainable growth strategies vis-a-vis holistic materials. Energistically orchestrate open-source e-tailers vis-a-vis plug-and-play best practices. Uniquely plagiarize client-centric opportunities whereas plug-and-play ideas. Distinctively reconceptualize backward-compatible partnerships vis-a-vis reliable total linkage. Interactively fabricate highly efficient networks for clicks-and-mortar content. Collaboratively reconceptualize holistic markets via 2.0 architectures."
|
@@ -572,14 +550,15 @@ en:
|
|
572
550
|
please_confirm: "Please confirm"
|
573
551
|
please_wait: "Please wait"
|
574
552
|
position_in_text: "Position in text"
|
575
|
-
preview_size: "Preview
|
553
|
+
preview_size: "Preview Size"
|
576
554
|
preview_sizes:
|
577
|
-
"
|
578
|
-
"
|
579
|
-
"
|
580
|
-
"768": "
|
581
|
-
"1024": "
|
582
|
-
"1280": "
|
555
|
+
"auto": "Auto"
|
556
|
+
"360": "Phone (360px)"
|
557
|
+
"640": "Small Tablet (640px)"
|
558
|
+
"768": "iPad Portrait (768px)"
|
559
|
+
"1024": "iPad Landscape (1024px)"
|
560
|
+
"1280": "Laptop (1280px)"
|
561
|
+
"1440": "Desktop (1440px)"
|
583
562
|
preview_url: Preview
|
584
563
|
publish_page_language_not_public: Cannot publish page if language is not public
|
585
564
|
publish_page_not_allowed: You have not the permission to publish this page
|
data/config/routes.rb
CHANGED
@@ -5,15 +5,15 @@ require "alchemy/routing_constraints"
|
|
5
5
|
Alchemy::Engine.routes.draw do
|
6
6
|
root to: "pages#index"
|
7
7
|
|
8
|
-
get "/sitemap.xml"
|
8
|
+
get "/sitemap.xml", to: "pages#sitemap", format: "xml"
|
9
9
|
|
10
10
|
scope Alchemy.admin_path, {constraints: Alchemy.admin_constraints} do
|
11
|
-
get "/"
|
12
|
-
get "/dashboard"
|
13
|
-
get "/dashboard/info"
|
14
|
-
get "/help"
|
15
|
-
get "/dashboard/update_check"
|
16
|
-
get "/leave"
|
11
|
+
get "/", to: redirect("#{Alchemy.admin_path}/dashboard"), as: :admin
|
12
|
+
get "/dashboard", to: "admin/dashboard#index", as: :admin_dashboard
|
13
|
+
get "/dashboard/info", to: "admin/dashboard#info", as: :dashboard_info
|
14
|
+
get "/help", to: "admin/dashboard#help", as: :help
|
15
|
+
get "/dashboard/update_check", to: "admin/dashboard#update_check", as: :update_check
|
16
|
+
get "/leave", to: "admin/base#leave", as: :leave_admin
|
17
17
|
end
|
18
18
|
|
19
19
|
namespace :admin, {path: Alchemy.admin_path, constraints: Alchemy.admin_constraints} do
|
@@ -105,13 +105,13 @@ Alchemy::Engine.routes.draw do
|
|
105
105
|
|
106
106
|
resources :sites
|
107
107
|
|
108
|
-
get "/styleguide"
|
108
|
+
get "/styleguide", to: "styleguide#index"
|
109
109
|
end
|
110
110
|
|
111
|
-
get "/attachment/:id/download(/:name)"
|
112
|
-
:
|
113
|
-
get "/attachment/:id/show(/:name)"
|
114
|
-
:
|
111
|
+
get "/attachment/:id/download(/:name)", to: "attachments#download",
|
112
|
+
as: :download_attachment
|
113
|
+
get "/attachment/:id/show(/:name)", to: "attachments#show",
|
114
|
+
as: :show_attachment
|
115
115
|
|
116
116
|
resources :messages, only: [:index, :new, :create]
|
117
117
|
resources :elements, only: :show
|
@@ -123,8 +123,8 @@ Alchemy::Engine.routes.draw do
|
|
123
123
|
resources :elements, only: [:index, :show]
|
124
124
|
|
125
125
|
resources :pages, only: [:index] do
|
126
|
-
get "elements"
|
127
|
-
get "elements/:named"
|
126
|
+
get "elements", to: "elements#index", as: "elements"
|
127
|
+
get "elements/:named", to: "elements#index", as: "named_elements"
|
128
128
|
collection do
|
129
129
|
get :nested
|
130
130
|
end
|
@@ -133,8 +133,8 @@ Alchemy::Engine.routes.draw do
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
136
|
-
get "/pages/*urlname(.:format)"
|
137
|
-
get "/admin/pages/:id(.:format)"
|
136
|
+
get "/pages/*urlname(.:format)", to: "pages#show", as: "page"
|
137
|
+
get "/admin/pages/:id(.:format)", to: "pages#show", as: "preview_page"
|
138
138
|
|
139
139
|
resources :nodes, only: [:index] do
|
140
140
|
member do
|
@@ -144,14 +144,14 @@ Alchemy::Engine.routes.draw do
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
-
get "/:locale"
|
148
|
-
:
|
149
|
-
:
|
147
|
+
get "/:locale", to: "pages#index",
|
148
|
+
constraints: {locale: Alchemy::RoutingConstraints::LOCALE_REGEXP},
|
149
|
+
as: :show_language_root
|
150
150
|
|
151
151
|
# The page show action has to be last route
|
152
152
|
constraints(locale: Alchemy::RoutingConstraints::LOCALE_REGEXP) do
|
153
|
-
get "(/:locale)/*urlname(.:format)"
|
154
|
-
:
|
155
|
-
:
|
153
|
+
get "(/:locale)/*urlname(.:format)", to: "pages#show",
|
154
|
+
constraints: Alchemy::RoutingConstraints.new,
|
155
|
+
as: :show_page
|
156
156
|
end
|
157
157
|
end
|
data/lib/alchemy/config.rb
CHANGED
@@ -46,17 +46,17 @@ module Alchemy
|
|
46
46
|
|
47
47
|
# Alchemy default configuration
|
48
48
|
def alchemy_config
|
49
|
-
read_file
|
49
|
+
read_file Engine.root.join("config/alchemy/config.yml")
|
50
50
|
end
|
51
51
|
|
52
52
|
# Application specific configuration
|
53
53
|
def main_app_config
|
54
|
-
read_file
|
54
|
+
read_file Rails.root.join("config/alchemy/config.yml")
|
55
55
|
end
|
56
56
|
|
57
57
|
# Rails Environment specific configuration
|
58
58
|
def env_specific_config
|
59
|
-
read_file
|
59
|
+
read_file Rails.root.join("config/alchemy/#{Rails.env}.config.yml")
|
60
60
|
end
|
61
61
|
|
62
62
|
# Tries to load yaml file from given path.
|
@@ -5,6 +5,8 @@ require "thor"
|
|
5
5
|
module Alchemy
|
6
6
|
module Install
|
7
7
|
class Tasks < Thor
|
8
|
+
SENTINEL = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
|
9
|
+
|
8
10
|
include Thor::Actions
|
9
11
|
|
10
12
|
no_tasks do
|
@@ -15,8 +17,9 @@ module Alchemy
|
|
15
17
|
unless auto_accept
|
16
18
|
mountpoint = ask("- At which path do you want to mount Alchemy CMS at?", default: mountpoint)
|
17
19
|
end
|
18
|
-
|
19
|
-
inject_into_file "./config/routes.rb", "\n mount Alchemy::Engine
|
20
|
+
|
21
|
+
inject_into_file "./config/routes.rb", "\n mount Alchemy::Engine, at: '#{mountpoint}'\n",
|
22
|
+
{after: SENTINEL, verbose: true}
|
20
23
|
end
|
21
24
|
|
22
25
|
def set_primary_language(code: "en", name: "English", auto_accept: false)
|
@@ -10,7 +10,7 @@ module Alchemy
|
|
10
10
|
#
|
11
11
|
|
12
12
|
def resource_window_size
|
13
|
-
@resource_window_size ||= "
|
13
|
+
@resource_window_size ||= "480x#{100 + resource_handler.attributes.length * 40}"
|
14
14
|
end
|
15
15
|
|
16
16
|
def resource_instance_variable
|
@@ -87,6 +87,8 @@ module Alchemy
|
|
87
87
|
options[:time_format] || :"alchemy.time"
|
88
88
|
end
|
89
89
|
value = l(attribute_value, format: localization_format)
|
90
|
+
elsif attribute[:type] == :boolean
|
91
|
+
value = attribute_value ? '<alchemy-icon name="check"></alchemy-icon>'.html_safe : nil
|
90
92
|
else
|
91
93
|
value = attribute_value
|
92
94
|
end
|
@@ -128,7 +130,7 @@ module Alchemy
|
|
128
130
|
# Returns the attribute's column for sorting
|
129
131
|
#
|
130
132
|
# If the attribute contains a resource_relation, then the table and column for related model will be returned.
|
131
|
-
#
|
133
|
+
# @deprecated
|
132
134
|
def sortable_resource_header_column(attribute)
|
133
135
|
if (relation = attribute[:relation])
|
134
136
|
"#{relation[:model_association].name}_#{relation[:attr_method]}"
|
@@ -136,6 +138,7 @@ module Alchemy
|
|
136
138
|
attribute[:name]
|
137
139
|
end
|
138
140
|
end
|
141
|
+
deprecate sortable_resource_header_column: "Please `render Alchemy::Admin::Resource::Table instead`", deprecator: Alchemy::Deprecation
|
139
142
|
|
140
143
|
# Renders the row for a resource record in the resources table.
|
141
144
|
#
|
@@ -154,12 +157,13 @@ module Alchemy
|
|
154
157
|
# </tr>
|
155
158
|
#
|
156
159
|
# NOTE: Alchemy gives you a local variable named like your resource
|
157
|
-
#
|
160
|
+
# @deprecated
|
158
161
|
def render_resources(icon: nil)
|
159
162
|
render partial: resource_name, collection: resources_instance_variable, locals: {icon: icon}
|
160
163
|
rescue ActionView::MissingTemplate
|
161
164
|
render partial: "resource", collection: resources_instance_variable, locals: {icon: icon}
|
162
165
|
end
|
166
|
+
deprecate render_resources: "Please `render Alchemy::Admin::Resource::Table instead`", deprecator: Alchemy::Deprecation
|
163
167
|
|
164
168
|
def resource_has_tags
|
165
169
|
resource_model.respond_to?(:tag_counts) && resource_model.tag_counts.any?
|
@@ -40,9 +40,12 @@ module Alchemy
|
|
40
40
|
|
41
41
|
within_entire_page do
|
42
42
|
find("input.select2-input.select2-focused").set(value)
|
43
|
-
expect(page).
|
44
|
-
|
45
|
-
|
43
|
+
expect(page).to_not have_selector(".select2-searching")
|
44
|
+
unless options[:select] == false
|
45
|
+
expect(page).to have_selector(".select2-result-label", visible: true)
|
46
|
+
find("div.select2-result-label", text: /#{Regexp.escape(value)}/i, match: :prefer_exact).click
|
47
|
+
expect(page).not_to have_selector(".select2-result-label")
|
48
|
+
end
|
46
49
|
end
|
47
50
|
end
|
48
51
|
|
@@ -60,8 +63,8 @@ module Alchemy
|
|
60
63
|
|
61
64
|
private
|
62
65
|
|
63
|
-
def within_entire_page(&
|
64
|
-
within(:xpath, "//body", &
|
66
|
+
def within_entire_page(&)
|
67
|
+
within(:xpath, "//body", &)
|
65
68
|
end
|
66
69
|
|
67
70
|
def find_label_by_text(text)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "thor"
|
5
|
+
|
6
|
+
module Alchemy
|
7
|
+
class Upgrader::SevenPointThree < Upgrader
|
8
|
+
include Thor::Base
|
9
|
+
include Thor::Actions
|
10
|
+
|
11
|
+
source_root Alchemy::Engine.root.join("lib/generators/alchemy/install/files")
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def remove_admin_stylesheets
|
15
|
+
if File.exist? "vendor/assets/stylesheets/alchemy/admin/all.css"
|
16
|
+
log "Removing Alchemy admin stylesheets."
|
17
|
+
FileUtils.rm_f "vendor/assets/stylesheets/alchemy/admin/all.css"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_custom_css_entrypoint
|
22
|
+
if File.exist? "app/assets/config/manifest.js"
|
23
|
+
log "Generating alchemy/admin/custom.css entrypoint file."
|
24
|
+
task.copy_file "custom.css", "app/assets/stylesheets/alchemy/admin/custom.css"
|
25
|
+
task.append_to_file "app/assets/config/manifest.js", "//= link alchemy/admin/custom.css\n"
|
26
|
+
todo(<<~TODO, "Custom styles have been moved to `app/assets/alchemy/admin/custom.css`")
|
27
|
+
Check the new `app/assets/alchemy/admin/custom.css` file for any custom styles you might
|
28
|
+
have added to the old `vendor/assets/stylesheets/alchemy/admin/all.css` file.
|
29
|
+
TODO
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def show_resource_table_notice
|
34
|
+
custom_modules = Alchemy::Modules.alchemy_modules.reject { _1["engine_name"] == "alchemy" }
|
35
|
+
return if custom_modules.none?
|
36
|
+
|
37
|
+
todo(<<~TODO, "Resource templates have been updated.")
|
38
|
+
We updated the resource templates to use the newly introduced
|
39
|
+
`Alchemy::Admin::Resource::Table` view component.
|
40
|
+
|
41
|
+
Please update your resource templates accordingly.
|
42
|
+
TODO
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def task
|
48
|
+
@_task || new
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
@@ -17,8 +17,8 @@ require "jquery-rails"
|
|
17
17
|
require "kaminari"
|
18
18
|
require "non_stupid_digest_assets"
|
19
19
|
require "ransack"
|
20
|
-
require "sassc-rails"
|
21
20
|
require "simple_form"
|
21
|
+
require "sprockets/rails"
|
22
22
|
require "turbo-rails"
|
23
23
|
require "userstamp"
|
24
24
|
require "view_component"
|
@@ -0,0 +1,25 @@
|
|
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
|
+
article h2 {
|
10
|
+
font-size: 24px;
|
11
|
+
line-height: 1.25;
|
12
|
+
font-weight: bold;
|
13
|
+
}
|
14
|
+
article a {
|
15
|
+
color: #5588D3;
|
16
|
+
}
|
17
|
+
article img {
|
18
|
+
max-width: 100%;
|
19
|
+
}
|
20
|
+
article figure {
|
21
|
+
margin: 0;
|
22
|
+
}
|
23
|
+
article figcaption {
|
24
|
+
font-size: 14px;
|
25
|
+
}
|
@@ -65,21 +65,21 @@ module Alchemy
|
|
65
65
|
|
66
66
|
def install_assets
|
67
67
|
copy_file "all.js", app_vendor_assets_path.join("javascripts", "alchemy", "admin", "all.js")
|
68
|
-
copy_file "
|
68
|
+
copy_file "custom.css", app_assets_path.join("stylesheets/alchemy/admin/custom.css")
|
69
|
+
append_to_file Rails.root.join("app/assets/config/manifest.js"), "//= link alchemy/admin/custom.css\n"
|
69
70
|
end
|
70
71
|
|
71
72
|
def copy_demo_views
|
72
73
|
return if options[:skip_demo_files]
|
73
74
|
|
74
75
|
copy_file "application.html.erb", app_views_path.join("layouts", "application.html.erb")
|
75
|
-
copy_file "article.
|
76
|
+
copy_file "article.css", app_assets_path.join("stylesheets", "alchemy", "elements", "_article.css")
|
76
77
|
|
77
|
-
stylesheet_require = "
|
78
|
+
stylesheet_require = %(@import "alchemy/elements/article";\n)
|
78
79
|
if File.exist?(app_assets_path.join("stylesheets", "application.css"))
|
79
|
-
|
80
|
-
before: " */"
|
80
|
+
prepend_file app_assets_path.join("stylesheets", "application.css"), stylesheet_require
|
81
81
|
else
|
82
|
-
create_file app_assets_path.join("stylesheets", "application.css"),
|
82
|
+
create_file app_assets_path.join("stylesheets", "application.css"), stylesheet_require
|
83
83
|
end
|
84
84
|
|
85
85
|
copy_file "_article.html.erb", app_views_path.join("alchemy", "elements", "_article.html.erb")
|
@@ -7,7 +7,8 @@ namespace :alchemy do
|
|
7
7
|
desc "Upgrades your app to AlchemyCMS v#{Alchemy::VERSION}."
|
8
8
|
task upgrade: [
|
9
9
|
"alchemy:upgrade:prepare",
|
10
|
-
"alchemy:upgrade:7.0:run"
|
10
|
+
"alchemy:upgrade:7.0:run",
|
11
|
+
"alchemy:upgrade:7.3:run"
|
11
12
|
] do
|
12
13
|
Alchemy::Upgrader.display_todos
|
13
14
|
end
|
@@ -38,6 +39,14 @@ namespace :alchemy do
|
|
38
39
|
Alchemy::Upgrader.display_todos
|
39
40
|
end
|
40
41
|
|
42
|
+
desc "Upgrade Alchemy to v7.3"
|
43
|
+
task "7.3" => [
|
44
|
+
"alchemy:upgrade:prepare",
|
45
|
+
"alchemy:upgrade:7.3:run"
|
46
|
+
] do
|
47
|
+
Alchemy::Upgrader.display_todos
|
48
|
+
end
|
49
|
+
|
41
50
|
namespace "7.0" do
|
42
51
|
task "run" => [
|
43
52
|
"alchemy:upgrade:7.0:remove_admin_entrypoint"
|
@@ -49,5 +58,24 @@ namespace :alchemy do
|
|
49
58
|
Alchemy::Upgrader::SevenPointZero.remove_admin_entrypoint
|
50
59
|
end
|
51
60
|
end
|
61
|
+
|
62
|
+
namespace "7.3" do
|
63
|
+
task "run" => [
|
64
|
+
"alchemy:upgrade:7.3:remove_admin_stylesheets",
|
65
|
+
"alchemy:upgrade:7.3:generate_custom_css_entrypoint"
|
66
|
+
] do
|
67
|
+
Alchemy::Upgrader::SevenPointThree.show_resource_table_notice
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "Remove alchemy admin stylesheets"
|
71
|
+
task remove_admin_stylesheets: [:environment] do
|
72
|
+
Alchemy::Upgrader::SevenPointThree.remove_admin_stylesheets
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Generate custom css entrypoint"
|
76
|
+
task generate_custom_css_entrypoint: [:environment] do
|
77
|
+
Alchemy::Upgrader::SevenPointThree.generate_custom_css_entrypoint
|
78
|
+
end
|
79
|
+
end
|
52
80
|
end
|
53
81
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
.select2-container{margin:0;position:relative;display:inline-block;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;overflow:hidden;position:relative;white-space:nowrap;text-decoration:none;border-radius:4px;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[dir=rtl] .select2-container .select2-choice{padding:0 8px 0 0}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#aaa;border-radius:0 0 4px 4px;background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));background-image:-webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);background-image:-moz-linear-gradient(center bottom, #eee 0%, #fff 90%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#eeeeee", GradientType=0);background-image:linear-gradient(to bottom, #eee 0%, #fff 90%)}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:38px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:none;width:auto}html[dir=rtl] .select2-container .select2-choice>.select2-chosen{margin-left:26px;margin-right:0}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:8px;font-size:1px;text-decoration:none;border:0;background:right top no-repeat;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{background-position:right -11px;cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background-color:#fff;filter:alpha(opacity=0)}.select2-drop{width:100%;margin-top:-1px;position:absolute;z-index:9999;top:100%;background:#fff;color:#000;border:1px solid #aaa;border-top:0;border-radius:0 0 4px 4px;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.select2-drop.select2-drop-above{margin-top:1px;border-top:1px solid #aaa;border-bottom:0;border-radius:4px 4px 0 0;-webkit-box-shadow:0 -4px 5px rgba(0,0,0,.15);box-shadow:0 -4px 5px rgba(0,0,0,.15)}.select2-drop-active{border:1px solid #5897fb;border-top:none}.select2-drop.select2-drop-above.select2-drop-active{border-top:1px solid #5897fb}.select2-drop-auto-width{border-top:1px solid #aaa;width:auto}.select2-container .select2-choice .select2-arrow{display:inline-block;position:absolute;right:0;border-radius:0 4px 4px 0}html[dir=rtl] .select2-container .select2-choice .select2-arrow{left:0;right:auto;border-left:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px}.select2-container .select2-choice .select2-arrow b{display:block;width:100%;height:100%}html[dir=rtl] .select2-container .select2-choice .select2-arrow b{background-position:2px 1px}.select2-search{display:inline-block;width:100%;min-height:26px;margin:0;padding:4px 4px 0 4px;position:relative;z-index:10000;white-space:nowrap}.select2-search input{width:100%;height:auto !important;min-height:26px;padding:4px 20px 4px 5px;margin:0}html[dir=rtl] .select2-search input{padding:4px 5px 4px 20px;background:#fff no-repeat -37px -22px;background:no-repeat -37px -22px,-webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));background:no-repeat -37px -22px,-webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);background:no-repeat -37px -22px,-moz-linear-gradient(center bottom, #fff 85%, #eee 99%);background:no-repeat -37px -22px,linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0}.select2-search input.select2-active{background:#fff no-repeat 100%;background:no-repeat 100%,-webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));background:no-repeat 100%,-webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);background:no-repeat 100%,-moz-linear-gradient(center bottom, #fff 85%, #eee 99%);background:no-repeat 100%,linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #5897fb;outline:none;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-dropdown-open .select2-choice{border-bottom-color:rgba(0,0,0,0);-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#eee;background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));background-image:-webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);background-image:-moz-linear-gradient(center bottom, #fff 0%, #eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee", endColorstr="#ffffff", GradientType=0);background-image:linear-gradient(to top, #fff 0%, #eee 50%)}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #5897fb;border-top-color:rgba(0,0,0,0);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));background-image:-webkit-linear-gradient(center top, #fff 0%, #eee 50%);background-image:-moz-linear-gradient(center top, #fff 0%, #eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee", endColorstr="#ffffff", GradientType=0);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%)}.select2-dropdown-open .select2-choice .select2-arrow{background:rgba(0,0,0,0);border-left:none;filter:none}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow{border-right:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow b{background-position:-16px 1px}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.select2-results{max-height:200px;padding:0 0 0 4px;margin:4px 4px 4px 0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[dir=rtl] .select2-results{padding:0 4px 0 0;margin:4px 0 4px 4px}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results li{list-style:none;display:list-item;background-image:none}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:bold}.select2-results .select2-result-label{padding:3px 7px 4px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-results-dept-1 .select2-result-label{padding-left:20px}.select2-results-dept-2 .select2-result-label{padding-left:40px}.select2-results-dept-3 .select2-result-label{padding-left:60px}.select2-results-dept-4 .select2-result-label{padding-left:80px}.select2-results-dept-5 .select2-result-label{padding-left:100px}.select2-results-dept-6 .select2-result-label{padding-left:110px}.select2-results-dept-7 .select2-result-label{padding-left:120px}.select2-results .select2-highlighted{background:#3875d7;color:#fff}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:rgba(0,0,0,0)}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-ajax-error,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding-left:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:#f4f4f4 no-repeat 100%}.select2-results .select2-ajax-error{background:rgba(255,50,50,.2)}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto !important;height:1%;margin:0;padding:0 5px 0 0;position:relative;border:1px solid #aaa;cursor:text;overflow:hidden;background-color:#fff;background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));background-image:-webkit-linear-gradient(top, #eee 1%, #fff 15%);background-image:-moz-linear-gradient(top, #eee 1%, #fff 15%);background-image:linear-gradient(to bottom, #eee 1%, #fff 15%)}html[dir=rtl] .select2-container-multi .select2-choices{padding:0 0 0 5px}.select2-locked{padding:3px 5px 3px 5px !important}.select2-container-multi .select2-choices{min-height:26px}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #5897fb;outline:none;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-container-multi .select2-choices li{float:left;list-style:none}html[dir=rtl] .select2-container-multi .select2-choices li{float:right}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field input{padding:5px;margin:1px 0;font-family:sans-serif;font-size:100%;color:#666;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,0) !important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:#fff no-repeat 100% !important}.select2-default{color:#999 !important}.select2-container-multi .select2-choices .select2-search-choice{padding:3px 5px 3px 18px;margin:3px 0 3px 5px;position:relative;line-height:13px;color:#333;cursor:default;border:1px solid #aaa;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e4e4e4;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee", endColorstr="#f4f4f4", GradientType=0);background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));background-image:-webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);background-image:-moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);background-image:linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%)}html[dir=rtl] .select2-container-multi .select2-choices .select2-search-choice{margin:3px 5px 3px 0;padding:3px 18px 3px 5px}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{background:#d4d4d4}.select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:3px;top:4px;font-size:1px;outline:none;background:right top no-repeat}html[dir=rtl] .select2-search-choice-close{right:auto;left:3px}.select2-container-multi .select2-search-choice-close{left:3px}html[dir=rtl] .select2-container-multi .select2-search-choice-close{left:auto;right:2px}.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover{background-position:right -11px}.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px 3px 5px;border:1px solid #ddd;background-image:none;background-color:#f4f4f4}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:none}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0) !important;width:1px !important;height:1px !important;border:0 !important;margin:0 !important;padding:0 !important;overflow:hidden !important;position:absolute !important;outline:0 !important;left:0px !important;top:0px !important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}@media only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (min-resolution: 2dppx){.select2-search input,.select2-search-choice-close,.select2-container .select2-choice abbr,.select2-container .select2-choice .select2-arrow b{background-image:url("select2x2.png") !important;background-repeat:no-repeat !important;background-size:60px 40px !important}.select2-search input{background-position:100% -21px !important}}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/* jquery.Jcrop.min.css v0.9.15 (build:20180819) */
|
2
|
+
.jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url("Jcrop.gif");font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none}
|