alchemy_cms 6.0.0.pre.rc5 → 6.0.0.pre.rc6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of alchemy_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/app/assets/javascripts/alchemy/admin.js +0 -1
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +6 -1
- data/app/assets/stylesheets/alchemy/sitemap.scss +7 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -3
- data/app/models/alchemy/page.rb +3 -2
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +8 -8
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pages/fold.js.erb +1 -1
- data/app/views/alchemy/admin/pages/update.js.erb +0 -5
- data/config/locales/alchemy.en.yml +0 -1
- data/lib/alchemy/version.rb +1 -1
- data/package/admin.js +5 -1
- data/package/src/page_publication_fields.js +27 -0
- data/package/src/sitemap.js +133 -0
- data/package.json +1 -1
- metadata +4 -3
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +0 -119
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2c4b9cbf469cb88a351047757a38e9ab434cd67006b0390170e22dd5b64d0a8
|
4
|
+
data.tar.gz: 48d6dec7c669c2f854ac0414e16801236cace3a6cef2eef5fb07fa4e509ef996
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b290944338b8ca490e0472fa886c8f4b09d47bd957a7d45c014ab328c81a9545cc74196a69eda2969dcf2e5fb0af3bad4bfc9d5079e45c645a51d41582b4137
|
7
|
+
data.tar.gz: 67c3a355c1df19256609680c562d0ae0c2bd76811daee6ea930b1425e85e3ff2087313e3a2d5d203523320f0da20d643d79b11badd1700912930e3209dfb2ddd
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 6.0.0-rc6 (2022-03-05)
|
2
|
+
|
3
|
+
- Rework sitemap JS [#2249](https://github.com/AlchemyCMS/alchemy_cms/pull/2249) ([tvdeyen](https://github.com/tvdeyen))
|
4
|
+
- Remove old page layout change code from update action [#2248](https://github.com/AlchemyCMS/alchemy_cms/pull/2248) ([tvdeyen](https://github.com/tvdeyen))
|
5
|
+
- Fix rendering errors in page configure overlay [#2247](https://github.com/AlchemyCMS/alchemy_cms/pull/2247) ([tvdeyen](https://github.com/tvdeyen))
|
6
|
+
- Fix copying page with descendants to a different language [#2243](https://github.com/AlchemyCMS/alchemy_cms/pull/2243) ([dbwinger](https://github.com/dbwinger))
|
7
|
+
- Handle copying/pasting global pages [#2241](https://github.com/AlchemyCMS/alchemy_cms/pull/2241) ([dbwinger](https://github.com/dbwinger))
|
8
|
+
|
1
9
|
## 6.0.0-rc5 (2022-02-24)
|
2
10
|
|
3
11
|
### Changes
|
@@ -38,7 +38,6 @@
|
|
38
38
|
//= require alchemy/alchemy.page_sorter
|
39
39
|
//= require alchemy/alchemy.uploader
|
40
40
|
//= require alchemy/alchemy.preview_window
|
41
|
-
//= require alchemy/alchemy.sitemap
|
42
41
|
//= require alchemy/alchemy.spinner
|
43
42
|
//= require alchemy/alchemy.tinymce
|
44
43
|
//= require alchemy/alchemy.tooltips
|
@@ -82,7 +82,12 @@ class window.Alchemy.Dialog
|
|
82
82
|
@dialog_body.hide()
|
83
83
|
@dialog_body.html(data)
|
84
84
|
@init()
|
85
|
-
@dialog.
|
85
|
+
@dialog[0].dispatchEvent(new CustomEvent(
|
86
|
+
"DialogReady.Alchemy",
|
87
|
+
bubbles: true
|
88
|
+
detail:
|
89
|
+
body: @dialog_body[0]
|
90
|
+
))
|
86
91
|
if @options.ready?
|
87
92
|
@options.ready(@dialog_body)
|
88
93
|
@dialog_body.show('fade', 200)
|
@@ -23,7 +23,7 @@ $sitemap-url-xlarge-width: 350px;
|
|
23
23
|
|
24
24
|
#sitemap-wrapper {
|
25
25
|
position: relative;
|
26
|
-
min-height: calc(100vh -
|
26
|
+
min-height: calc(100vh - 148px);
|
27
27
|
}
|
28
28
|
|
29
29
|
.sitemap_pagename_link {
|
@@ -154,6 +154,8 @@ $sitemap-url-xlarge-width: 350px;
|
|
154
154
|
position: absolute;
|
155
155
|
left: -23px;
|
156
156
|
top: 0;
|
157
|
+
width: 16px;
|
158
|
+
height: $sitemap-line-height;
|
157
159
|
}
|
158
160
|
|
159
161
|
.placeholder {
|
@@ -258,3 +260,7 @@ $sitemap-url-xlarge-width: 350px;
|
|
258
260
|
}
|
259
261
|
}
|
260
262
|
}
|
263
|
+
|
264
|
+
#search_field_clear {
|
265
|
+
cursor: pointer;
|
266
|
+
}
|
@@ -123,8 +123,6 @@ module Alchemy
|
|
123
123
|
# * fetches page via before filter
|
124
124
|
#
|
125
125
|
def update
|
126
|
-
# stores old page_layout value, because unfurtunally rails @page.changes does not work here.
|
127
|
-
@old_page_layout = @page.page_layout
|
128
126
|
if @page.update(page_params)
|
129
127
|
@notice = Alchemy.t("Page saved", name: @page.name)
|
130
128
|
@while_page_edit = request.referer.include?("edit")
|
@@ -133,7 +131,7 @@ module Alchemy
|
|
133
131
|
@tree = serialized_page_tree
|
134
132
|
end
|
135
133
|
else
|
136
|
-
configure
|
134
|
+
render :configure
|
137
135
|
end
|
138
136
|
end
|
139
137
|
|
data/app/models/alchemy/page.rb
CHANGED
@@ -245,8 +245,8 @@ module Alchemy
|
|
245
245
|
|
246
246
|
def copy_and_paste(source, new_parent, new_name)
|
247
247
|
page = copy(source, {
|
248
|
-
|
249
|
-
language: new_parent
|
248
|
+
parent: new_parent,
|
249
|
+
language: new_parent&.language,
|
250
250
|
name: new_name,
|
251
251
|
title: new_name,
|
252
252
|
})
|
@@ -448,6 +448,7 @@ module Alchemy
|
|
448
448
|
next if child == new_parent
|
449
449
|
|
450
450
|
new_child = Page.copy(child, {
|
451
|
+
parent_id: new_parent.id,
|
451
452
|
language_id: new_parent.language_id,
|
452
453
|
language_code: new_parent.language_code,
|
453
454
|
})
|
@@ -1,11 +1,10 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
</h4>
|
1
|
+
<h4 id="sitemap_heading">
|
2
|
+
<span class="page_name"><%= Alchemy::Page.human_attribute_name(:name) %></span>
|
3
|
+
<span class="page_urlname"><%= Alchemy::Page.human_attribute_name(:urlname) %></span>
|
4
|
+
<span class="page_status"><%= Alchemy.t(:page_status) %></span>
|
5
|
+
</h4>
|
7
6
|
|
8
|
-
|
7
|
+
<div id="sitemap-wrapper">
|
9
8
|
</div>
|
10
9
|
|
11
10
|
<script id="sitemap-template" type="text/x-handlebars-template">
|
@@ -22,7 +21,7 @@
|
|
22
21
|
|
23
22
|
<script type="text/javascript">
|
24
23
|
$(function() {
|
25
|
-
Alchemy.Sitemap
|
24
|
+
Alchemy.currentSitemap = new Alchemy.Sitemap({
|
26
25
|
url: '<%= alchemy.tree_admin_pages_path %>',
|
27
26
|
page_root_id: <%= @page_root.id %>,
|
28
27
|
full: <%= full %>
|
@@ -32,5 +31,6 @@
|
|
32
31
|
}
|
33
32
|
<% end %>
|
34
33
|
});
|
34
|
+
Alchemy.PagePublicationFields();
|
35
35
|
});
|
36
36
|
</script>
|
@@ -154,7 +154,7 @@
|
|
154
154
|
if (!not_dirty) Alchemy.pleaseWaitOverlay(false);
|
155
155
|
return not_dirty;
|
156
156
|
});
|
157
|
-
Alchemy.
|
157
|
+
Alchemy.PagePublicationFields();
|
158
158
|
Alchemy.PageLeaveObserver();
|
159
159
|
Alchemy.ElementsWindow.init('<%= alchemy.admin_elements_path(page_version_id: @page_version.id) %>', {
|
160
160
|
texts: {
|
@@ -1,2 +1,2 @@
|
|
1
1
|
$('#fold_button_<%= @page.id %>').css('background', 'none');
|
2
|
-
Alchemy.
|
2
|
+
Alchemy.currentSitemap.reload(<%= @page.id %>);
|
@@ -1,11 +1,6 @@
|
|
1
1
|
(function() {
|
2
2
|
var page = document.querySelector('#page_<%= @page.id %>');
|
3
3
|
|
4
|
-
<% if @old_page_layout != @page.page_layout -%>
|
5
|
-
Alchemy.ElementsWindow.reload();
|
6
|
-
Alchemy.growl('<%= j Alchemy.t(:page_layout_changed_notice) %>');
|
7
|
-
<% end -%>
|
8
|
-
|
9
4
|
<% if @while_page_edit -%>
|
10
5
|
|
11
6
|
Alchemy.reloadPreview();
|
@@ -534,7 +534,6 @@ en:
|
|
534
534
|
or_replace_it_with_an_existing_tag: 'Or replace it with an existing tag'
|
535
535
|
"Page created": "Page: '%{name}' created."
|
536
536
|
page_infos: 'Page info'
|
537
|
-
page_layout_changed_notice: "Page type was changed. Elements not usable anymore have been hided."
|
538
537
|
page_properties: "Page properties"
|
539
538
|
page_public: "published"
|
540
539
|
page_published: "Published page"
|
data/lib/alchemy/version.rb
CHANGED
data/package/admin.js
CHANGED
@@ -6,6 +6,8 @@ import pictureEditors from "./src/picture_editors"
|
|
6
6
|
import ImageLoader from "./src/image_loader"
|
7
7
|
import ImageCropper from "./src/image_cropper"
|
8
8
|
import Datepicker from "./src/datepicker"
|
9
|
+
import Sitemap from "./src/sitemap"
|
10
|
+
import PagePublicationFields from "./src/page_publication_fields.js"
|
9
11
|
|
10
12
|
// Global Alchemy object
|
11
13
|
if (typeof window.Alchemy === "undefined") {
|
@@ -22,5 +24,7 @@ Object.assign(Alchemy, {
|
|
22
24
|
pictureEditors,
|
23
25
|
ImageLoader: ImageLoader.init,
|
24
26
|
ImageCropper,
|
25
|
-
Datepicker
|
27
|
+
Datepicker,
|
28
|
+
Sitemap,
|
29
|
+
PagePublicationFields
|
26
30
|
})
|
@@ -0,0 +1,27 @@
|
|
1
|
+
// Handles the page publication date fields
|
2
|
+
export default function () {
|
3
|
+
document.addEventListener("DialogReady.Alchemy", function (evt) {
|
4
|
+
const dialog = evt.detail.body
|
5
|
+
const public_on_field = dialog.querySelector("#page_public_on")
|
6
|
+
const public_until_field = dialog.querySelector("#page_public_until")
|
7
|
+
const publication_date_fields = dialog.querySelector(
|
8
|
+
".page-publication-date-fields"
|
9
|
+
)
|
10
|
+
|
11
|
+
dialog
|
12
|
+
.querySelector("#page_public")
|
13
|
+
.addEventListener("click", function (evt) {
|
14
|
+
const checkbox = evt.target
|
15
|
+
const now = new Date()
|
16
|
+
|
17
|
+
if (checkbox.checked) {
|
18
|
+
publication_date_fields.classList.remove("hidden")
|
19
|
+
public_on_field._flatpickr.setDate(now)
|
20
|
+
} else {
|
21
|
+
publication_date_fields.classList.add("hidden")
|
22
|
+
public_on_field.value = ""
|
23
|
+
}
|
24
|
+
public_until_field.value = ""
|
25
|
+
})
|
26
|
+
})
|
27
|
+
}
|
@@ -0,0 +1,133 @@
|
|
1
|
+
// The admin sitemap Alchemy class
|
2
|
+
|
3
|
+
export default class Sitemap {
|
4
|
+
// Storing some objects.
|
5
|
+
constructor(options) {
|
6
|
+
const list_template_regexp = new RegExp("/" + options.page_root_id, "g")
|
7
|
+
const list_template_html = document
|
8
|
+
.getElementById("sitemap-list")
|
9
|
+
.innerHTML.replace(list_template_regexp, "/{{id}}")
|
10
|
+
this.search_field = document.querySelector(".search_input_field")
|
11
|
+
this.filter_field_clear = document.querySelector(".search_field_clear")
|
12
|
+
this.filter_field_clear.removeAttribute("href")
|
13
|
+
this.display = document.getElementById("page_filter_result")
|
14
|
+
this.sitemap_wrapper = document.getElementById("sitemap-wrapper")
|
15
|
+
this.template = Handlebars.compile(
|
16
|
+
document.getElementById("sitemap-template").innerHTML
|
17
|
+
)
|
18
|
+
this.list_template = Handlebars.compile(list_template_html)
|
19
|
+
this.items = null
|
20
|
+
this.options = options
|
21
|
+
Handlebars.registerPartial("list", list_template_html)
|
22
|
+
this.load(options.page_root_id)
|
23
|
+
}
|
24
|
+
|
25
|
+
// Loads the sitemap
|
26
|
+
load(pageId) {
|
27
|
+
const spinner = this.options.spinner || new Alchemy.Spinner("medium")
|
28
|
+
const spinTarget = this.sitemap_wrapper
|
29
|
+
spinTarget.innerHTML = ""
|
30
|
+
spinner.spin(spinTarget)
|
31
|
+
this.fetch(
|
32
|
+
`${this.options.url}?id=${pageId}&full=${this.options.full}`
|
33
|
+
).then(async (response) => {
|
34
|
+
this.render(await response.json())
|
35
|
+
spinner.stop()
|
36
|
+
})
|
37
|
+
}
|
38
|
+
|
39
|
+
// Reload the sitemap for a specific branch
|
40
|
+
reload(pageId) {
|
41
|
+
const spinner = new Alchemy.Spinner("small")
|
42
|
+
const spinTarget = document.getElementById(`fold_button_${pageId}`)
|
43
|
+
spinTarget.querySelector(".far").remove()
|
44
|
+
spinner.spin(spinTarget)
|
45
|
+
this.fetch(`${this.options.url}?id=${pageId}`).then(async (response) => {
|
46
|
+
this.render(await response.json(), pageId)
|
47
|
+
spinner.stop()
|
48
|
+
})
|
49
|
+
}
|
50
|
+
|
51
|
+
fetch(url) {
|
52
|
+
return fetch(url).catch((error) => console.warn(`Request failed: ${error}`))
|
53
|
+
}
|
54
|
+
|
55
|
+
// Renders the sitemap
|
56
|
+
render(data, foldingId) {
|
57
|
+
let renderTarget, renderTemplate
|
58
|
+
|
59
|
+
if (foldingId) {
|
60
|
+
renderTarget = document.getElementById(`page_${foldingId}`)
|
61
|
+
renderTemplate = this.list_template
|
62
|
+
renderTarget.outerHTML = renderTemplate({ children: data.pages })
|
63
|
+
} else {
|
64
|
+
renderTarget = this.sitemap_wrapper
|
65
|
+
renderTemplate = this.template
|
66
|
+
renderTarget.innerHTML = renderTemplate({ children: data.pages })
|
67
|
+
}
|
68
|
+
this.items = document
|
69
|
+
.getElementById("sitemap")
|
70
|
+
.querySelectorAll(".sitemap_page")
|
71
|
+
this.sitemap_wrapper = document.getElementById("sitemap-wrapper")
|
72
|
+
this._observe()
|
73
|
+
|
74
|
+
if (this.options.ready) {
|
75
|
+
this.options.ready()
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
// Filters the sitemap
|
80
|
+
filter(term) {
|
81
|
+
const results = []
|
82
|
+
|
83
|
+
this.items.forEach(function (item) {
|
84
|
+
if (
|
85
|
+
term !== "" &&
|
86
|
+
item.getAttribute("name").toLowerCase().indexOf(term) !== -1
|
87
|
+
) {
|
88
|
+
item.classList.add("highlight")
|
89
|
+
item.classList.remove("no-match")
|
90
|
+
results.push(item)
|
91
|
+
} else {
|
92
|
+
item.classList.add("no-match")
|
93
|
+
item.classList.remove("highlight")
|
94
|
+
}
|
95
|
+
})
|
96
|
+
this.filter_field_clear.style.display = "inline-block"
|
97
|
+
const { length } = results
|
98
|
+
|
99
|
+
if (length === 1) {
|
100
|
+
this.display.style.display = "block"
|
101
|
+
this.display.innerText = `1 ${Alchemy.t("page_found")}`
|
102
|
+
results[0].scrollIntoView({ behavior: "smooth", block: "center" })
|
103
|
+
} else if (length > 1) {
|
104
|
+
this.display.style.display = "block"
|
105
|
+
this.display.innerText = `${length} ${Alchemy.t("pages_found")}`
|
106
|
+
} else {
|
107
|
+
this.items.forEach((item) =>
|
108
|
+
item.classList.remove("no-match", "highlight")
|
109
|
+
)
|
110
|
+
this.display.style.display = "none"
|
111
|
+
window.scrollTo({
|
112
|
+
top: 0,
|
113
|
+
left: 0,
|
114
|
+
behavior: "smooth"
|
115
|
+
})
|
116
|
+
this.filter_field_clear.style.display = "none"
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
// Adds onkey up observer to search field
|
121
|
+
_observe() {
|
122
|
+
this.search_field.addEventListener("keyup", (evt) => {
|
123
|
+
const term = evt.target.value
|
124
|
+
this.filter(term.toLowerCase())
|
125
|
+
})
|
126
|
+
this.search_field.addEventListener("focus", () => key.setScope("search"))
|
127
|
+
this.filter_field_clear.addEventListener("click", () => {
|
128
|
+
this.search_field.value = ""
|
129
|
+
this.filter("")
|
130
|
+
return false
|
131
|
+
})
|
132
|
+
}
|
133
|
+
}
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.pre.
|
4
|
+
version: 6.0.0.pre.rc6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2022-
|
16
|
+
date: 2022-03-05 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: actionmailer
|
@@ -775,7 +775,6 @@ files:
|
|
775
775
|
- app/assets/javascripts/alchemy/alchemy.page_sorter.js
|
776
776
|
- app/assets/javascripts/alchemy/alchemy.preview.js.coffee
|
777
777
|
- app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee
|
778
|
-
- app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee
|
779
778
|
- app/assets/javascripts/alchemy/alchemy.spinner.js
|
780
779
|
- app/assets/javascripts/alchemy/alchemy.string_extension.js.coffee
|
781
780
|
- app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee
|
@@ -1431,7 +1430,9 @@ files:
|
|
1431
1430
|
- package/src/image_cropper.js
|
1432
1431
|
- package/src/image_loader.js
|
1433
1432
|
- package/src/node_tree.js
|
1433
|
+
- package/src/page_publication_fields.js
|
1434
1434
|
- package/src/picture_editors.js
|
1435
|
+
- package/src/sitemap.js
|
1435
1436
|
- package/src/translations.js
|
1436
1437
|
- package/src/utils/__tests__/ajax.spec.js
|
1437
1438
|
- package/src/utils/__tests__/events.spec.js
|
@@ -1,119 +0,0 @@
|
|
1
|
-
window.Alchemy = {} if typeof(window.Alchemy) is 'undefined'
|
2
|
-
|
3
|
-
# The admin sitemap Alchemy module
|
4
|
-
Alchemy.Sitemap =
|
5
|
-
|
6
|
-
# Storing some objects.
|
7
|
-
init: (options) ->
|
8
|
-
@search_field = $(".search_input_field")
|
9
|
-
@filter_field_clear = $('.search_field_clear')
|
10
|
-
@display = $('#page_filter_result')
|
11
|
-
@sitemap_wrapper = $('#sitemap-wrapper p.loading')
|
12
|
-
@template = Handlebars.compile($('#sitemap-template').html())
|
13
|
-
list_template_regexp = new RegExp '\/' + options.page_root_id, 'g'
|
14
|
-
list_template_html = $('#sitemap-list').html().replace(list_template_regexp, '/{{id}}')
|
15
|
-
@list_template = Handlebars.compile(list_template_html)
|
16
|
-
@items = null
|
17
|
-
@options = options
|
18
|
-
@watchPagePublicationState()
|
19
|
-
true
|
20
|
-
|
21
|
-
Handlebars.registerPartial('list', list_template_html)
|
22
|
-
|
23
|
-
@fetch()
|
24
|
-
|
25
|
-
# Fetches the sitemap from JSON
|
26
|
-
fetch: (foldingId) ->
|
27
|
-
self = Alchemy.Sitemap
|
28
|
-
|
29
|
-
if foldingId
|
30
|
-
spinner = new Alchemy.Spinner('small')
|
31
|
-
spinTarget = $('#fold_button_' + foldingId)
|
32
|
-
renderTarget = $('#page_' + foldingId)
|
33
|
-
renderTemplate = @list_template
|
34
|
-
pageId = foldingId
|
35
|
-
else
|
36
|
-
spinner = @options.spinner || new Alchemy.Spinner('medium')
|
37
|
-
spinTarget = @sitemap_wrapper
|
38
|
-
renderTarget = @sitemap_wrapper
|
39
|
-
renderTemplate = @template
|
40
|
-
pageId = @options.page_root_id
|
41
|
-
|
42
|
-
spinner.spin(spinTarget[0])
|
43
|
-
|
44
|
-
request = $.ajax url: @options.url, data:
|
45
|
-
id: pageId
|
46
|
-
full: @options.full
|
47
|
-
|
48
|
-
request.done (data) ->
|
49
|
-
# This will also remove the spinner
|
50
|
-
renderTarget.replaceWith(renderTemplate({children: data.pages}))
|
51
|
-
self.items = $(".sitemap_page", '#sitemap')
|
52
|
-
self._observe()
|
53
|
-
|
54
|
-
if self.options.ready
|
55
|
-
self.options.ready()
|
56
|
-
|
57
|
-
request.fail (jqXHR, status) ->
|
58
|
-
console.warn("Request failed: " + status)
|
59
|
-
|
60
|
-
# Filters the sitemap
|
61
|
-
filter: (term) ->
|
62
|
-
results = []
|
63
|
-
self = Alchemy.Sitemap
|
64
|
-
self.items.map ->
|
65
|
-
item = $(this)
|
66
|
-
if term != '' && item.attr('name').toLowerCase().indexOf(term) != -1
|
67
|
-
item.addClass('highlight')
|
68
|
-
item.removeClass('no-match')
|
69
|
-
results.push item
|
70
|
-
else
|
71
|
-
item.addClass('no-match')
|
72
|
-
item.removeClass('highlight')
|
73
|
-
self.filter_field_clear.show()
|
74
|
-
length = results.length
|
75
|
-
if length == 1
|
76
|
-
self.display.show().text("1 #{Alchemy.t('page_found')}")
|
77
|
-
$.scrollTo(results[0], {duration: 400, offset: -80})
|
78
|
-
else if length > 1
|
79
|
-
self.display.show().text("#{length} #{Alchemy.t('pages_found')}")
|
80
|
-
else
|
81
|
-
self.items.removeClass('no-match highlight')
|
82
|
-
self.display.hide()
|
83
|
-
$.scrollTo('0', 400)
|
84
|
-
self.filter_field_clear.hide()
|
85
|
-
|
86
|
-
# Adds onkey up observer to search field
|
87
|
-
_observe: ->
|
88
|
-
filter = @filter
|
89
|
-
@search_field.on 'keyup', ->
|
90
|
-
term = $(this).val()
|
91
|
-
filter(term.toLowerCase())
|
92
|
-
@search_field.on 'focus', ->
|
93
|
-
key.setScope('search')
|
94
|
-
@filter_field_clear.click =>
|
95
|
-
@search_field.val('')
|
96
|
-
filter('')
|
97
|
-
false
|
98
|
-
|
99
|
-
# Handles the page publication date fields
|
100
|
-
watchPagePublicationState: ->
|
101
|
-
$(document).on 'DialogReady.Alchemy', (e, $dialog) ->
|
102
|
-
$public_on_field = $('#page_public_on', $dialog)
|
103
|
-
$public_until_field = $('#page_public_until', $dialog)
|
104
|
-
$publication_date_fields = $('.page-publication-date-fields', $dialog)
|
105
|
-
|
106
|
-
$('#page_public', $dialog).click ->
|
107
|
-
$checkbox = $(this)
|
108
|
-
format = $checkbox.data('date-format')
|
109
|
-
now = new Date()
|
110
|
-
if $checkbox.is(':checked')
|
111
|
-
$publication_date_fields.removeClass('hidden')
|
112
|
-
$public_on_field[0]._flatpickr.setDate(now)
|
113
|
-
else
|
114
|
-
$publication_date_fields.addClass('hidden')
|
115
|
-
$public_on_field.val('')
|
116
|
-
$public_until_field.val('')
|
117
|
-
true
|
118
|
-
|
119
|
-
return
|