alchemy_cms 5.3.2 → 5.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2df8b8b8a114a3c838038e49ed3f464fdb45aca2706d7a691aa9674a6d0fceb
4
- data.tar.gz: e94ecf5d831ada56e030d86f83e98e79dca35a9cd8638349aca7d3376ad20cd0
3
+ metadata.gz: 0f18c2fd116b7cecb0091d78a0e3d7bdad8a996e03b04c53e56e04a651a5d47b
4
+ data.tar.gz: 35f9e7ed5ef6c525348a5d885c50d448376ce03f2ce0955037ed3a05c4733ade
5
5
  SHA512:
6
- metadata.gz: 24b96afb3447382b6d66cdf47be50ba012e83c86236fd9bd8b45a83b8685752c8820a938829920ba615c45217863966a7e46af07db027b04cff24ee9227879ae
7
- data.tar.gz: e2206807c7a623254540441742d1017c40d75fabd8cc097793d040c55271f0c33a6feedee3994deb68d75dc3fddcf0f1b2a8ad98205ce254852f164877d5940a
6
+ metadata.gz: 23b529d54cdc27a766208ee9750e282349b184feec1cc21f398a01caccd970d2dc5a9bdd7f500f52fe165f306bf32052d8d48f2e892b83af92037d65fcec33c9
7
+ data.tar.gz: f733eee0bb31d47a489657d66c741fb983f1a363e017756f3be0ced53a589e3978e51f5240c8bdd3fa6d405a89bf8c89d6a7ff3b17d6de4631d638f7206dcb90
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 5.3.3 (2022-03-24)
2
+
3
+ - fix admin sitemap feature specs ([tvdeyen](https://github.com/tvdeyen))
4
+ - fix: Add support for ajax.get query params ([tvdeyen](https://github.com/tvdeyen))
5
+ - fix(Sitemap): Use response data ([tvdeyen](https://github.com/tvdeyen))
6
+ - Revert "Ajax: Send method override" ([tvdeyen](https://github.com/tvdeyen))
7
+
1
8
  ## 5.3.2 (2022-03-24)
2
9
 
3
10
  - ImageLoader: Add error handling ([tvdeyen](https://github.com/tvdeyen))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "5.3.2"
4
+ VERSION = "5.3.3"
5
5
 
6
6
  def self.version
7
7
  VERSION
@@ -11,7 +11,7 @@ function onFinishDragging(evt) {
11
11
 
12
12
  patch(url, data)
13
13
  .then(async (response) => {
14
- const pageData = await response.json()
14
+ const pageData = await response.data
15
15
  const pageEl = document.getElementById(`page_${pageId}`)
16
16
  const urlPathEl = pageEl.querySelector(".sitemap_url")
17
17
 
@@ -1,7 +1,7 @@
1
1
  // The admin sitemap Alchemy class
2
2
  import PageSorter from "./page_sorter"
3
3
  import { on } from "./utils/events"
4
- import { patch } from "./utils/ajax"
4
+ import { get, patch } from "./utils/ajax"
5
5
  import { createSortables, displayPageFolders } from "./page_sorter"
6
6
 
7
7
  export default class Sitemap {
@@ -31,9 +31,9 @@ export default class Sitemap {
31
31
  const spinTarget = this.sitemap_wrapper
32
32
  spinTarget.innerHTML = ""
33
33
  spinner.spin(spinTarget)
34
- fetch(`${this.options.url}?id=${pageId}`)
34
+ get(this.options.url, { id: pageId })
35
35
  .then(async (response) => {
36
- this.render(await response.json())
36
+ this.render(await response.data)
37
37
  this.handlePageFolders()
38
38
  spinner.stop()
39
39
  })
@@ -55,7 +55,7 @@ export default class Sitemap {
55
55
 
56
56
  patch(Alchemy.routes.fold_admin_page_path(pageId))
57
57
  .then(async (response) => {
58
- this.reRender(pageId, await response.json())
58
+ this.reRender(pageId, await response.data)
59
59
  spinner.stop()
60
60
  })
61
61
  .catch(this.errorHandler)
@@ -10,7 +10,7 @@ beforeEach(() => {
10
10
 
11
11
  describe("get", () => {
12
12
  it("sends X-CSRF-TOKEN header", async () => {
13
- xhrMock.get("/users", (req, res) => {
13
+ xhrMock.get("http://localhost/users", (req, res) => {
14
14
  expect(req.header("X-CSRF-TOKEN")).toEqual(token)
15
15
  return res.status(200).body('{"message":"Ok"}')
16
16
  })
@@ -18,7 +18,7 @@ describe("get", () => {
18
18
  })
19
19
 
20
20
  it("sends Content-Type header", async () => {
21
- xhrMock.get("/users", (req, res) => {
21
+ xhrMock.get("http://localhost/users", (req, res) => {
22
22
  expect(req.header("Content-Type")).toEqual(
23
23
  "application/json; charset=utf-8"
24
24
  )
@@ -28,7 +28,7 @@ describe("get", () => {
28
28
  })
29
29
 
30
30
  it("sends Accept header", async () => {
31
- xhrMock.get("/users", (req, res) => {
31
+ xhrMock.get("http://localhost/users", (req, res) => {
32
32
  expect(req.header("Accept")).toEqual("application/json")
33
33
  return res.status(200).body('{"message":"Ok"}')
34
34
  })
@@ -36,7 +36,7 @@ describe("get", () => {
36
36
  })
37
37
 
38
38
  it("returns JSON", async () => {
39
- xhrMock.get("/users", (_req, res) => {
39
+ xhrMock.get("http://localhost/users", (_req, res) => {
40
40
  return res.status(200).body('{"email":"mail@example.com"}')
41
41
  })
42
42
  await get("/users").then((res) => {
@@ -45,7 +45,7 @@ describe("get", () => {
45
45
  })
46
46
 
47
47
  it("JSON parse errors get rejected", async () => {
48
- xhrMock.get("/users", (_req, res) => {
48
+ xhrMock.get("http://localhost/users", (_req, res) => {
49
49
  return res.status(200).body('email => "mail@example.com"')
50
50
  })
51
51
  expect.assertions(1)
@@ -55,7 +55,7 @@ describe("get", () => {
55
55
  })
56
56
 
57
57
  it("network errors get rejected", async () => {
58
- xhrMock.get("/users", () => {
58
+ xhrMock.get("http://localhost/users", () => {
59
59
  return Promise.reject(new Error())
60
60
  })
61
61
  expect.assertions(1)
@@ -65,7 +65,7 @@ describe("get", () => {
65
65
  })
66
66
 
67
67
  it("server errors get rejected", async () => {
68
- xhrMock.get("/users", (_req, res) => {
68
+ xhrMock.get("http://localhost/users", (_req, res) => {
69
69
  return res.status(401).body('{"error":"Unauthorized"}')
70
70
  })
71
71
  expect.assertions(1)
@@ -75,7 +75,7 @@ describe("get", () => {
75
75
  })
76
76
 
77
77
  it("server errors parsing errors get rejected", async () => {
78
- xhrMock.get("/users", (_req, res) => {
78
+ xhrMock.get("http://localhost/users", (_req, res) => {
79
79
  return res.status(401).body("Unauthorized")
80
80
  })
81
81
  expect.assertions(1)
@@ -83,11 +83,19 @@ describe("get", () => {
83
83
  expect(e.message).toMatch("Unexpected token")
84
84
  })
85
85
  })
86
+
87
+ it("params get attached as query string", async () => {
88
+ xhrMock.get("http://localhost/users?name=foo", (_req, res) => {
89
+ return res.status(200).body(`{"name":"foo"}`)
90
+ })
91
+ const { data } = await get("/users", { name: "foo" })
92
+ expect(data.name).toEqual("foo")
93
+ })
86
94
  })
87
95
 
88
96
  describe("patch", () => {
89
97
  it("sends X-CSRF-TOKEN header", async () => {
90
- xhrMock.post("/users", (req, res) => {
98
+ xhrMock.patch("http://localhost/users", (req, res) => {
91
99
  expect(req.header("X-CSRF-TOKEN")).toEqual(token)
92
100
  return res.status(200).body('{"message":"Ok"}')
93
101
  })
@@ -95,7 +103,7 @@ describe("patch", () => {
95
103
  })
96
104
 
97
105
  it("sends Content-Type header", async () => {
98
- xhrMock.post("/users", (req, res) => {
106
+ xhrMock.patch("http://localhost/users", (req, res) => {
99
107
  expect(req.header("Content-Type")).toEqual(
100
108
  "application/json; charset=utf-8"
101
109
  )
@@ -105,26 +113,16 @@ describe("patch", () => {
105
113
  })
106
114
 
107
115
  it("sends Accept header", async () => {
108
- xhrMock.post("/users", (req, res) => {
116
+ xhrMock.patch("http://localhost/users", (req, res) => {
109
117
  expect(req.header("Accept")).toEqual("application/json")
110
118
  return res.status(200).body('{"message":"Ok"}')
111
119
  })
112
120
  await patch("/users")
113
121
  })
114
122
 
115
- it("sends method override data", async () => {
116
- xhrMock.post("/users", (req, res) => {
117
- expect(req.body()).toEqual('{"_method":"patch"}')
118
- return res.status(200).body('{"message":"Ok"}')
119
- })
120
- await patch("/users")
121
- })
122
-
123
123
  it("sends JSON data", async () => {
124
- xhrMock.post("/users", (req, res) => {
125
- expect(req.body()).toEqual(
126
- '{"email":"mail@example.com","_method":"patch"}'
127
- )
124
+ xhrMock.patch("http://localhost/users", (req, res) => {
125
+ expect(req.body()).toEqual('{"email":"mail@example.com"}')
128
126
  return res.status(200).body('{"message":"Ok"}')
129
127
  })
130
128
  await patch("/users", { email: "mail@example.com" })
@@ -133,7 +131,7 @@ describe("patch", () => {
133
131
 
134
132
  describe("post", () => {
135
133
  it("sends X-CSRF-TOKEN header", async () => {
136
- xhrMock.post("/users", (req, res) => {
134
+ xhrMock.post("http://localhost/users", (req, res) => {
137
135
  expect(req.header("X-CSRF-TOKEN")).toEqual(token)
138
136
  return res.status(200).body('{"message":"Ok"}')
139
137
  })
@@ -141,7 +139,7 @@ describe("post", () => {
141
139
  })
142
140
 
143
141
  it("sends Content-Type header", async () => {
144
- xhrMock.post("/users", (req, res) => {
142
+ xhrMock.post("http://localhost/users", (req, res) => {
145
143
  expect(req.header("Content-Type")).toEqual(
146
144
  "application/json; charset=utf-8"
147
145
  )
@@ -151,7 +149,7 @@ describe("post", () => {
151
149
  })
152
150
 
153
151
  it("sends Accept header", async () => {
154
- xhrMock.post("/users", (req, res) => {
152
+ xhrMock.post("http://localhost/users", (req, res) => {
155
153
  expect(req.header("Accept")).toEqual("application/json")
156
154
  return res.status(200).body('{"message":"Ok"}')
157
155
  })
@@ -159,7 +157,7 @@ describe("post", () => {
159
157
  })
160
158
 
161
159
  it("sends JSON data", async () => {
162
- xhrMock.post("/users", (req, res) => {
160
+ xhrMock.post("http://localhost/users", (req, res) => {
163
161
  expect(req.body()).toEqual('{"email":"mail@example.com"}')
164
162
  return res.status(200).body('{"message":"Ok"}')
165
163
  })
@@ -33,24 +33,29 @@ export function get(url, params) {
33
33
  return ajax("GET", url, params)
34
34
  }
35
35
 
36
- export function patch(url, data = {}) {
37
- return ajax("POST", url, { ...data, _method: "patch" })
36
+ export function patch(url, data) {
37
+ return ajax("PATCH", url, data)
38
38
  }
39
39
 
40
40
  export function post(url, data) {
41
41
  return ajax("POST", url, data)
42
42
  }
43
43
 
44
- export default function ajax(method, url, data) {
44
+ export default function ajax(method, path, data) {
45
45
  const xhr = new XMLHttpRequest()
46
46
  const promise = buildPromise(xhr)
47
+ const url = new URL(window.location.origin + path)
47
48
 
48
- xhr.open(method, url)
49
+ if (data && method.toLowerCase() === "get") {
50
+ url.search = new URLSearchParams(data).toString()
51
+ }
52
+
53
+ xhr.open(method, url.toString())
49
54
  xhr.setRequestHeader("Content-type", "application/json; charset=utf-8")
50
55
  xhr.setRequestHeader("Accept", "application/json")
51
56
  xhr.setRequestHeader("X-CSRF-Token", getToken())
52
57
 
53
- if (data) {
58
+ if (data && method.toLowerCase() !== "get") {
54
59
  xhr.send(JSON.stringify(data))
55
60
  } else {
56
61
  xhr.send()
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alchemy_cms/admin",
3
- "version": "5.3.2",
3
+ "version": "5.3.3",
4
4
  "description": "AlchemyCMS",
5
5
  "browser": "package/admin.js",
6
6
  "files": [
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: 5.3.2
4
+ version: 5.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen