diff --git a/Web/Presenters/CommentPresenter.php b/Web/Presenters/CommentPresenter.php index 979a258e..6e554002 100644 --- a/Web/Presenters/CommentPresenter.php +++ b/Web/Presenters/CommentPresenter.php @@ -38,27 +38,29 @@ final class CommentPresenter extends OpenVKPresenter $entity = $repo->get($eId); if(!$entity) $this->notFound(); - try { - $comment = new Comment; - $comment->setOwner($this->user->id); - $comment->setModel(get_class($entity)); - $comment->setTarget($entity->getId()); - $comment->setContent($this->postParam("text")); - $comment->setCreated(time()); - $comment->save(); - - if($_FILES["_pic_attachment"]["error"] === UPLOAD_ERR_OK) { - try { - $photo = Photo::fastMake($this->user->id, $this->postParam("text"), $_FILES["_pic_attachment"]); - $comment->attach($photo); - } catch(ISE $ex) { - $this->flashFail("err", "Не удалось опубликовать пост", "Файл изображения повреждён, слишком велик или одна сторона изображения в разы больше другой."); - } + $photo = NULL; + if($_FILES["_pic_attachment"]["error"] === UPLOAD_ERR_OK) { + try { + $photo = Photo::fastMake($this->user->id, $this->postParam("text"), $_FILES["_pic_attachment"]); + } catch(ISE $ex) { + $this->flashFail("err", "Не удалось опубликовать пост", "Файл изображения повреждён, слишком велик или одна сторона изображения в разы больше другой."); } - } catch(\LogicException $ex) { - $this->flashFail("err", "Не удалось опубликовать комментарий", "Нельзя опубликовать пустой комментарий."); } + if(empty($this->postParam("text")) && is_null($photo)) + $this->flashFail("err", "Не удалось опубликовать комментарий", "Нельзя опубликовать пустой комментарий."); + + $comment = new Comment; + $comment->setOwner($this->user->id); + $comment->setModel(get_class($entity)); + $comment->setTarget($entity->getId()); + $comment->setContent($this->postParam("text")); + $comment->setCreated(time()); + $comment->save(); + + if(!is_null($photo)) + $comment->attach($photo); + if($entity->getOwner()->getId() !== $this->user->identity->getId()) if(($owner = $entity->getOwner()) instanceof User) (new CommentNotification($owner, $comment, $entity, $this->user->identity))->emit(); diff --git a/Web/Presenters/templates/Wall/Post.xml b/Web/Presenters/templates/Wall/Post.xml index 4699c491..433d1775 100644 --- a/Web/Presenters/templates/Wall/Post.xml +++ b/Web/Presenters/templates/Wall/Post.xml @@ -34,3 +34,7 @@ {_report} {/block} + +{block bodyScripts} + {script "js/al_comments.js"} +{/block} diff --git a/Web/Presenters/templates/components/comment.xml b/Web/Presenters/templates/components/comment.xml index 3a427d67..f6065f25 100644 --- a/Web/Presenters/templates/components/comment.xml +++ b/Web/Presenters/templates/components/comment.xml @@ -1,7 +1,7 @@ {var author = $comment->getOwner()} - +
@@ -30,9 +30,11 @@ {var canDelete = $comment->getOwner()->getId() == $thisUser->getId()} {var canDelete = $canDelete || $comment->getTarget()->getOwner()->getId() == $thisUser->getId()} {if $canDelete} - {_"delete"} + {_"delete"} |  {/if} + Ответить +
diff --git a/Web/static/js/al_comments.js b/Web/static/js/al_comments.js new file mode 100644 index 00000000..03875a39 --- /dev/null +++ b/Web/static/js/al_comments.js @@ -0,0 +1,9 @@ +u(".comment-reply").on("click", function(e) { + let inputbox = u("#write textarea"); + let comment = u(e.target).closest(".post"); + let authorId = comment.data("owner-id"); + let authorNm = u(".post-author > a > b", comment.first()).text().trim(); + + inputbox.text("[id" + authorId + "|" + authorNm + "], "); + inputbox.trigger("focusin"); +});