From 626770ef0cc9e0abcce99cec84406fb532015c5d Mon Sep 17 00:00:00 2001 From: mrilyew <99399973+mrilyew@users.noreply.github.com> Date: Sat, 24 May 2025 21:47:11 +0300 Subject: [PATCH] feat: add comments sort --- Web/Models/Entities/Postable.php | 4 ++-- Web/Presenters/WallPresenter.php | 6 +++++- Web/Presenters/templates/Wall/Post.xml | 3 ++- .../templates/components/comments.xml | 15 ++++++++++++- Web/static/css/main.css | 20 ++++++++++++++++++ Web/static/img/wall.png | Bin 2161 -> 2561 bytes locales/en.strings | 3 +++ locales/ru.strings | 3 +++ 8 files changed, 49 insertions(+), 5 deletions(-) diff --git a/Web/Models/Entities/Postable.php b/Web/Models/Entities/Postable.php index 75d774b5..b9309c45 100644 --- a/Web/Models/Entities/Postable.php +++ b/Web/Models/Entities/Postable.php @@ -75,9 +75,9 @@ abstract class Postable extends Attachable return new DateTime($edited); } - public function getComments(int $page, ?int $perPage = null): \Traversable + public function getComments(int $page, ?int $perPage = null, string $sort = "ASC"): \Traversable { - return (new Comments())->getCommentsByTarget($this, $page, $perPage); + return (new Comments())->getCommentsByTarget($this, $page, $perPage, $sort); } public function getCommentsCount(): int diff --git a/Web/Presenters/WallPresenter.php b/Web/Presenters/WallPresenter.php index 89b1915d..dbdfdde0 100644 --- a/Web/Presenters/WallPresenter.php +++ b/Web/Presenters/WallPresenter.php @@ -469,7 +469,11 @@ final class WallPresenter extends OpenVKPresenter } $this->template->cCount = $post->getCommentsCount(); $this->template->cPage = (int) ($_GET["p"] ?? 1); - $this->template->comments = iterator_to_array($post->getComments($this->template->cPage)); + $this->template->sort = $this->queryParam("sort") ?? "asc"; + + $input_sort = $this->template->sort == "asc" ? "ASC" : "DESC"; + + $this->template->comments = iterator_to_array($post->getComments($this->template->cPage, null, $input_sort)); } public function renderLike(int $wall, int $post_id): void diff --git a/Web/Presenters/templates/Wall/Post.xml b/Web/Presenters/templates/Wall/Post.xml index 126d12b1..be8b391c 100644 --- a/Web/Presenters/templates/Wall/Post.xml +++ b/Web/Presenters/templates/Wall/Post.xml @@ -36,7 +36,8 @@ count => $cCount, page => $cPage, model => "posts", - parent => $post } + parent => $post, + sort => $sort}
4nyP>jq}>_J z4AftO|4L$N?AM!G=&tCdePy1#5u#~;eVF(j=EK2uUQ*}E9cH3&$UMNeZ|Ul4sc}Ry z;pS`?ouvKR)th h!ISFuUd~v{8j!x#n`cfW zjs;y}_g;osBZ-9gJO9~!C?O7AC90*h?Vy+j2n!4I`BL+(gUMv_W!fz rTF; zXSWR9{4qT}F+V?lWp=o9htkk+{;@311_ajA(9oE}M8!!BIs1&3_4X0VTqSJpS_KDm z{>=)_(5w}0lPRh{!w5EJysF>_xM_+R-AEzCM|aQq-v~kt&{T@K?W8>xj8`&!NwI6< zllFsG&Hcni*<8&+s^AfM1$|a&OZ;|YOUz1nOZd+$a&7H8)WBfd*T;wKr;O`}{5^8a zz`)=$g+kF~UlnB6=~yzmBZ33+Bw~eos87I6w_^td>{Mr>1q?krlrENZqoJyT!f1evot+tK+{eTlR+?@)Tar lKK_*x8 zG|itn-JC$50yoms_01-ADR&moOctwJ$5P2S+}aI|&Pv$X5M3;@D+j$(FzUP(W-&f8 zvf4ZJ7}CDCvsuLkwnu>G91)c1NHZ4*LlWg7R+C_;xhxww`Z{0HzeS36Y+*s>^}>4Q z<`gyy7;YOQ2F1P2`KNXD{tva*=OApr?ChYDQ^%ycGic3x-`$W#&HD7ot+!0tgqp-} zA@l_ANA| b z9xbk@KL;KvNJrY+AAfTf2oa^%NKuxh6ph0x$<@`dKI0AE*&qIRYtO%*>`2(*Lyj8l z=-Thy?m}jTJUnXHvBCHt9;R|(b6aQ?z$aZO{!S>vRZpaGbUnk8PCR=3E!gVDAz+2? zYQ8938?2ak(fhP`XB3CE$jdLJjX)r_dFbQ;O;jy))Y8XB_2Zv%rH-^pR1cqpQWQjv z*yJbeI7X+Zr6BuJ{ZH%|`We&mg8Z9T$>L2Ua=OD9OU-ICTOl&$t>;rV%|Jl3pVfdF z@r3C^q4$S+GUHVUPYF$Z6Czyqn&Y)_92`y!(1!Q?I;mwv8STMib0ROX=#5Eo$~$+W zCBl&Xm-995iLk)N1W>0KjeS!qKL2^_Y1HSCY)%`_npkk37Fz3Fls_CqesRp>@d974 zNP;5Xp%;Hk1X+l$YzyP5q*Y41SIF@jf=w}AT&}NnH7#{5C@9#SnE-F0O$u@Bayo<& zyzlnGAx0U7!XJVYklNP<2%6gfuMvh)rAog(AHHAqf+Mhg_H!a9Nk_XanCFazzLoRT zA;K7W%ITA4=dJpMNxG8i_9bR<=o0e;&jb~q(d}zJj7+)fVOXJ+QVSgBTZ*GF<9^WW z*+6MsQDu(1SzhX6)iVL|I4b!-a8EOZ&*2DE=UXY?32ws{f$36{g2n&$a?J^1uf(^G z?qO2cE4*~R-5l!Cvp)lzIw*;~Hm$mllR{1ookN#Fs$e;kXB_t*th2xL_@8%&E+D zTRJC^yGs~xOOHUFMtXeAkU1&qRARKEQc##eQx|HQRal%V$37i4id1AI_GE1l>1r zOHkBz{QGI=!oq#&RZ@LxF7cKOpmgpxz!n>Ku-h!^@zNCK5>hn+_s@P=XEdJq3mwro z8Ys(cv%lb}peEK^Xf7XXs**e?9UrZ7A#(0sg>4@9Jmg11%YmVHPfAgc{TXbPV`-K} z;%