diff --git a/Cargo.lock b/Cargo.lock
index 00d71b0..112e2dd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -428,6 +428,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde",
+ "serde_json",
"syn",
"toml",
]
@@ -658,9 +659,9 @@ dependencies = [
[[package]]
name = "crypto-common"
-version = "0.1.3"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
+checksum = "2ccfd8c0ee4cce11e45b3fd6f9d5e69e0cc62912aa6a0cb1bf4617b0eba5a12f"
dependencies = [
"generic-array",
"typenum",
@@ -950,9 +951,9 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.12.1"
+version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
+checksum = "607c8a29735385251a339424dd462993c0fed8fa09d378f259377df08c126022"
dependencies = [
"ahash",
]
@@ -1281,9 +1282,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.12.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "opaque-debug"
@@ -1395,18 +1396,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pin-project"
-version = "1.0.10"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e"
+checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
-version = "1.0.10"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
+checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74"
dependencies = [
"proc-macro2",
"quote",
@@ -1537,9 +1538,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.5.6"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
@@ -1548,9 +1549,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.26"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "ring"
@@ -1621,24 +1622,24 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.11"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d92beeab217753479be2f74e54187a6aed4c125ff0703a866c3147a02f0c6dd"
+checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
[[package]]
name = "serde"
-version = "1.0.137"
+version = "1.0.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
+checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.137"
+version = "1.0.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
+checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb"
dependencies = [
"proc-macro2",
"quote",
@@ -1955,10 +1956,11 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.19.2"
+version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439"
+checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e"
dependencies = [
+ "autocfg",
"bytes",
"libc",
"memchr",
@@ -2045,9 +2047,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.21"
+version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c"
+checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
dependencies = [
"proc-macro2",
"quote",
@@ -2087,9 +2089,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.13"
+version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0a07fefe56b3bf1902c19c4eced76e43cdf40e6bac95cf71d873f6dd9a8a9af"
+checksum = "3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59"
dependencies = [
"ansi_term",
"sharded-slab",
@@ -2144,9 +2146,9 @@ checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-normalization"
-version = "0.1.20"
+version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd"
+checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
dependencies = [
"tinyvec",
]
@@ -2344,9 +2346,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.22.3"
+version = "0.22.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf"
+checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf"
dependencies = [
"webpki",
]
diff --git a/Cargo.toml b/Cargo.toml
index c8462df..2f22475 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,7 +14,7 @@ actix-rt = { version = "*" }
actix-utils = { version = "3.0.0" }
actix-web = { version = "*" }
argon2 = { version = "0.4.1" }
-askama = { version = "*" }
+askama = { version = "*", features = ["serde-json"] }
chrono = { version = "*", features = ["serde"] }
futures = { version = "0.3.21", features = ["async-await", "std"] }
futures-util = { version = "0.3.21", features = [] }
diff --git a/assets/templates/admin/edit.html b/assets/templates/admin/edit.html
new file mode 100644
index 0000000..8338c14
--- /dev/null
+++ b/assets/templates/admin/edit.html
@@ -0,0 +1,12 @@
+{% extends "layout.html" %}
+{% block content %}
+
+ {{ article.body|safe }}
+
+{% endblock %}
diff --git a/assets/templates/admin/index.html b/assets/templates/admin/index.html
new file mode 100644
index 0000000..b005ce7
--- /dev/null
+++ b/assets/templates/admin/index.html
@@ -0,0 +1,20 @@
+{% extends "layout.html" %}
+{% block content %}
+
+
+ {% for article in news %}
+
+
+ {{article.body|safe}}
+
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/assets/templates/admin.html b/assets/templates/admin/layout.html
similarity index 75%
rename from assets/templates/admin.html
rename to assets/templates/admin/layout.html
index c57a8ec..ada7c48 100644
--- a/assets/templates/admin.html
+++ b/assets/templates/admin/layout.html
@@ -1,4 +1,4 @@
-{% extends "base.html" %}
+{% extends "../base.html" %}
{% block head %}
{% endblock %}
diff --git a/assets/templates/admin_panel.html b/assets/templates/admin_panel.html
deleted file mode 100644
index f1b47e3..0000000
--- a/assets/templates/admin_panel.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends "admin.html" %}
-{% block content %}
-
-
- {% for article in news %}
-
- {{article.body|safe}}
-
- {% endfor %}
-
-
-{% endblock %}
diff --git a/assets/templates/news.html b/assets/templates/news.html
index b2c7ffc..1c679da 100644
--- a/assets/templates/news.html
+++ b/assets/templates/news.html
@@ -3,11 +3,11 @@
{% for article in news %}
{{article.body|safe}}
diff --git a/client/src/admin.js b/client/src/admin.js
index 1978f6e..e522e30 100644
--- a/client/src/admin.js
+++ b/client/src/admin.js
@@ -1,3 +1,4 @@
import "./admin/ow-admin";
import "./admin/article-form";
+import "./admin/edit-news-article";
diff --git a/client/src/admin/article-form.js b/client/src/admin/article-form.js
index 249a700..8059033 100644
--- a/client/src/admin/article-form.js
+++ b/client/src/admin/article-form.js
@@ -1,6 +1,10 @@
import { Component, FORM_STYLE } from "../shared";
customElements.define('article-form', class extends Component {
+ static get observedAttributes() {
+ return ['article-id', 'article-title', 'status'];
+ }
+
constructor() {
super(`
+
+
+
+
+
+ Edytuj
+
+
+
+ `);
+
+ this.shadowRoot.querySelector('#edit').addEventListener('click', ev => {
+ ev.preventDefault();
+ ev.stopPropagation();
+ });
+ this.shadowRoot.querySelector('#delete').addEventListener('click', ev => {
+ ev.preventDefault();
+ ev.stopPropagation();
+ });
+ }
+
+ get article_id() {
+ const v = parseInt(this.getAttribute('article-id'));
+ return isNaN(v) ? null : v;
+ }
+
+ set article_id(v) {
+ this.setAttribute('article-id', v);
+ const id = this.article_id;
+ if (id === null) return;
+ this.shadowRoot.querySelector('ow-path').path = `/admin/news/${id}`;
+ }
+});
diff --git a/client/src/nav/ow-path.js b/client/src/nav/ow-path.js
index 18f9aa3..675267b 100644
--- a/client/src/nav/ow-path.js
+++ b/client/src/nav/ow-path.js
@@ -16,7 +16,6 @@ customElements.define('ow-path', class extends Component {
text-decoration: none;
color: #495057;
text-transform: uppercase;
-
border: none;
border-bottom: 1px solid var(--border-slim-color);
}
@@ -29,14 +28,9 @@ customElements.define('ow-path', class extends Component {
`);
- }
-
- connectedCallback() {
- this.selected = this.getAttribute('selected');
- }
-
- attributeChangedCallback(name, oldV, newV) {
- super.attributeChangedCallback(name, oldV, newV);
+ this.shadowRoot.querySelector('a').addEventListener('click', ev => {
+ document.location = this.path;
+ });
}
get selected() {
diff --git a/client/src/news/news-article.js b/client/src/news/news-article.js
index b6ca343..585a4ef 100644
--- a/client/src/news/news-article.js
+++ b/client/src/news/news-article.js
@@ -9,7 +9,7 @@ customElements.define('news-article', class extends Component {
constructor() {
super(`