From 40c24a69af7c967b6855dc64406ce5d5897496e1 Mon Sep 17 00:00:00 2001 From: veselcraft Date: Sat, 16 Jan 2021 17:29:21 -0500 Subject: [PATCH 1/4] [COMMENTS] Unicode symbol -> Image --- Web/Presenters/templates/components/comment.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Web/Presenters/templates/components/comment.xml b/Web/Presenters/templates/components/comment.xml index cff491a8..b32ebb59 100644 --- a/Web/Presenters/templates/components/comment.xml +++ b/Web/Presenters/templates/components/comment.xml @@ -29,8 +29,8 @@
- - {$comment->getLikesCount()} +
+ {$comment->getLikesCount()}
From ad2e5ec8cceb099b8af0cda6a08a7c5ea1b5e330 Mon Sep 17 00:00:00 2001 From: veselcraft Date: Sat, 16 Jan 2021 17:30:29 -0500 Subject: [PATCH 2/4] [PROFILE EDIT] Phone field will be hidden if Zadarma is disabled in config --- Web/Presenters/templates/User/Edit.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Web/Presenters/templates/User/Edit.xml b/Web/Presenters/templates/User/Edit.xml index f969576c..78bb02a4 100644 --- a/Web/Presenters/templates/User/Edit.xml +++ b/Web/Presenters/templates/User/Edit.xml @@ -62,6 +62,7 @@ + {if OPENVK_ROOT_CONF['openvk']['credentials']['zadarma']['enable']} Телефон: @@ -70,6 +71,7 @@ + {/if} {_"status"}: From b08c33e092ddebedc8e251683b9461a939a426cb Mon Sep 17 00:00:00 2001 From: veselcraft Date: Sat, 16 Jan 2021 17:45:49 -0500 Subject: [PATCH 3/4] Now Notes and Albums cannot be created with empty title --- Web/Presenters/NotesPresenter.php | 4 ++++ Web/Presenters/PhotosPresenter.php | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Web/Presenters/NotesPresenter.php b/Web/Presenters/NotesPresenter.php index 11c2e835..0353354d 100644 --- a/Web/Presenters/NotesPresenter.php +++ b/Web/Presenters/NotesPresenter.php @@ -54,6 +54,10 @@ final class NotesPresenter extends OpenVKPresenter $this->notFound(); if($_SERVER["REQUEST_METHOD"] === "POST") { + if(empty($this->postParam("name"))) { + $this->flashFail("err", tr("error"), tr("error_segmentation")); + } + $note = new Note; $note->setOwner($this->user->id); $note->setCreated(time()); diff --git a/Web/Presenters/PhotosPresenter.php b/Web/Presenters/PhotosPresenter.php index 9e842255..15438bdd 100644 --- a/Web/Presenters/PhotosPresenter.php +++ b/Web/Presenters/PhotosPresenter.php @@ -68,6 +68,9 @@ final class PhotosPresenter extends OpenVKPresenter } if($_SERVER["REQUEST_METHOD"] === "POST") { + if(empty($this->postParam("name"))) { + $this->flashFail("err", tr("error"), tr("error_segmentation")); + } $album = new Album; $album->setOwner(isset($club) ? $club->getId() * -1 : $this->user->id); $album->setName($this->postParam("name")); From b4943685859a9e4d116b0e3717989ca928718482 Mon Sep 17 00:00:00 2001 From: veselcraft Date: Sat, 16 Jan 2021 18:19:54 -0500 Subject: [PATCH 4/4] Delete notes func --- Web/Models/Entities/Traits/TOwnable.php | 2 +- Web/Presenters/NotesPresenter.php | 20 +++++++++++++++++++- Web/Presenters/templates/Notes/View.xml | 8 ++++++++ Web/routes.yml | 2 ++ Web/static/js/openvk.cls.js | 23 +++++++++++++++++++++++ 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/Web/Models/Entities/Traits/TOwnable.php b/Web/Models/Entities/Traits/TOwnable.php index 4c6c9c94..9dc9ce2a 100644 --- a/Web/Models/Entities/Traits/TOwnable.php +++ b/Web/Models/Entities/Traits/TOwnable.php @@ -6,7 +6,7 @@ trait TOwnable { function canBeModifiedBy(User $user): bool { - if(is_callable([$this, "isCreatedBySystem"])) + if(method_exists($this, "isCreatedBySystem")) if($this->isCreatedBySystem()) return false; diff --git a/Web/Presenters/NotesPresenter.php b/Web/Presenters/NotesPresenter.php index 0353354d..7dba6c65 100644 --- a/Web/Presenters/NotesPresenter.php +++ b/Web/Presenters/NotesPresenter.php @@ -57,7 +57,7 @@ final class NotesPresenter extends OpenVKPresenter if(empty($this->postParam("name"))) { $this->flashFail("err", tr("error"), tr("error_segmentation")); } - + $note = new Note; $note->setOwner($this->user->id); $note->setCreated(time()); @@ -68,4 +68,22 @@ final class NotesPresenter extends OpenVKPresenter $this->redirect("/note" . $this->user->id . "_" . $note->getId()); } } + + function renderDelete(int $owner, int $id): void + { + $this->assertUserLoggedIn(); + $this->willExecuteWriteAction(); + $this->assertNoCSRF(); + + $note = $this->notes->get($id); + if(!$note) $this->notFound(); + if($note->getOwner()->getId() . "_" . $note->getId() !== $owner . "_" . $id || $note->isDeleted()) $this->notFound(); + if(is_null($this->user) || !$note->canBeModifiedBy($this->user->identity)) + $this->flashFail("err", "Ошибка доступа", "Недостаточно прав для модификации данного ресурса."); + + $name = $note->getName(); + $note->delete(); + $this->flash("succ", "Заметка удалена", "Заметка \"$name\" была успешно удалена."); + $this->redirect("/notes" . $this->user->id); + } } diff --git a/Web/Presenters/templates/Notes/View.xml b/Web/Presenters/templates/Notes/View.xml index 9d712393..c2da6188 100644 --- a/Web/Presenters/templates/Notes/View.xml +++ b/Web/Presenters/templates/Notes/View.xml @@ -39,11 +39,19 @@
+
{include "../components/comments.xml", comments => $comments, count => $cCount, page => $cPage, model => "notes", parent => $note} +
+
+

{_actions}

+
+ {_delete} +
+
{/block} diff --git a/Web/routes.yml b/Web/routes.yml index c7efe50f..963c53eb 100644 --- a/Web/routes.yml +++ b/Web/routes.yml @@ -173,6 +173,8 @@ routes: handler: "Notes->view" - url: "/notes/create" handler: "Notes->create" + - url: "/note{num}_{num}/delete" + handler: "Notes->delete" - url: "/invite" handler: "About->invite" - url: "/away.php" diff --git a/Web/static/js/openvk.cls.js b/Web/static/js/openvk.cls.js index 3d6443d5..7d00f07c 100644 --- a/Web/static/js/openvk.cls.js +++ b/Web/static/js/openvk.cls.js @@ -59,4 +59,27 @@ u("#_photoDelete").on("click", function(e) { return e.preventDefault(); }); +/* @rem-pai why this func wasn't named as "#_deleteDialog"? It looks universal IMO */ + +u("#_noteDelete").on("click", function(e) { + var formHtml = "
"; + formHtml += ""; + formHtml += "
"; + u("body").append(formHtml); + + MessageBox("Внимание", "Удаление нельзя отменить. Вы действительно уверены в том что хотите сделать?", [ + "Да", + "Нет" + ], [ + (function() { + u("#tmpPhDelF").nodes[0].submit(); + }), + (function() { + u("#tmpPhDelF").remove(); + }), + ]); + + return e.preventDefault(); +}); + }); //END ONREADY DECLS \ No newline at end of file