Messages: Redesign, Date fix, Pagination

Search: Kind of fix by adding more shitcode xdddddd

Co-authored-by: Daniel <60743585+myslivets@users.noreply.github.com>
This commit is contained in:
veselcraft 2022-05-31 17:39:52 +03:00
parent 6cc7d9c553
commit db3789bef8
No known key found for this signature in database
GPG key ID: AED66BC1AC628A4E
8 changed files with 116 additions and 30 deletions

View file

@ -60,6 +60,17 @@ class Message extends RowModel
{ {
return new DateTime($this->getRecord()->created); return new DateTime($this->getRecord()->created);
} }
function getSendTimeHumanized(): string
{
$dateTime = new DateTime($this->getRecord()->created);
if($dateTime->format("%d.%m.%y") == ovk_strftime_safe("%d.%m.%y", time())) {
return $dateTime->format("%T %p");
} else {
return $dateTime->format("%d.%m.%y");
}
}
/** /**
* Get date of last edit, if any edits were made, otherwise null. * Get date of last edit, if any edits were made, otherwise null.
@ -125,7 +136,7 @@ class Message extends RowModel
"name" => $author->getFirstName().$unreadmsg, "name" => $author->getFirstName().$unreadmsg,
], ],
"timing" => [ "timing" => [
"sent" => (string) $this->getSendTime()->format("%e %B %G" . tr("time_at_sp") . "%X"), "sent" => (string) $this->getSendTimeHumanized(),
"edited" => is_null($this->getEditTime()) ? NULL : (string) $this->getEditTime(), "edited" => is_null($this->getEditTime()) ? NULL : (string) $this->getEditTime(),
], ],
"text" => $this->getText(), "text" => $this->getText(),

View file

@ -44,4 +44,15 @@ class Messages
yield new Correspondence($correspondent, $anotherCorrespondent); yield new Correspondence($correspondent, $anotherCorrespondent);
} }
} }
function getCorrespondenciesCount(RowModel $correspondent): ?int
{
$id = $correspondent->getId();
$class = get_class($correspondent);
$query = file_get_contents(__DIR__ . "/../sql/get-correspondencies-count.tsql");
DatabaseConnection::i()->getConnection()->query(file_get_contents(__DIR__ . "/../sql/mysql-msg-fix.tsql"));
$count = DatabaseConnection::i()->getConnection()->query($query, $id, $class, $id, $class)->fetch()->cnt;
bdump($count);
return $count;
}
} }

View file

@ -0,0 +1,20 @@
SELECT COUNT(id) AS cnt FROM
(
(
SELECT
recipient_id AS id
FROM messages
WHERE
sender_id = ?
AND
sender_type = ?
) UNION (
SELECT
sender_id AS id
FROM messages
WHERE
recipient_id = ?
AND
recipient_type = ?
)
) dt

View file

@ -34,10 +34,18 @@ final class MessengerPresenter extends OpenVKPresenter
if(isset($_GET["sel"])) if(isset($_GET["sel"]))
$this->pass("openvk!Messenger->app", $_GET["sel"]); $this->pass("openvk!Messenger->app", $_GET["sel"]);
$page = $_GET["p"] ?? 1; $page = (int) ($_GET["p"] ?? 1);
$correspondences = iterator_to_array($this->messages->getCorrespondencies($this->user->identity, $page)); $correspondences = iterator_to_array($this->messages->getCorrespondencies($this->user->identity, $page));
// #КакаоПрокакалось
$this->template->corresps = $correspondences; $this->template->corresps = $correspondences;
$this->template->paginatorConf = (object) [
"count" => $this->messages->getCorrespondenciesCount($this->user->identity),
"page" => (int) ($_GET["p"] ?? 1),
"amount" => sizeof($this->template->corresps),
"perPage" => OPENVK_DEFAULT_PER_PAGE,
];
} }
function renderApp(int $sel): void function renderApp(int $sel): void

View file

@ -4,7 +4,7 @@
<div class="wrap2"> <div class="wrap2">
<div class="wrap1"> <div class="wrap1">
<div class="page_wrap padding_top"> <div class="page_wrap padding_top">
<div n:ifset="tabs" n:ifcontent class="tabs"> <div n:ifset="tabs" n:ifcontent class="tabs stupid-fix">
{include tabs} {include tabs}
</div> </div>

View file

@ -30,7 +30,7 @@
</div> </div>
<div class="crp-entry--info"> <div class="crp-entry--info">
<a href="{$recipient->getURL()}">{$recipient->getCanonicalName()}</a><br/> <a href="{$recipient->getURL()}">{$recipient->getCanonicalName()}</a><br/>
<span>{$lastMsg->getSendTime()->format("%e %B %G" . tr("time_at_sp") . "%X")}</span> <span>{$lastMsg->getSendTimeHumanized()}</span>
</div> </div>
<div n:class="crp-entry--message, $lastMsg->getUnreadState() ? unread"> <div n:class="crp-entry--message, $lastMsg->getUnreadState() ? unread">
{var $_author = $lastMsg->getSender()} {var $_author = $lastMsg->getSender()}
@ -45,6 +45,9 @@
</div> </div>
</div> </div>
</div> </div>
<div style="margin-top: 3px;">
{include "../components/paginator.xml", conf => $paginatorConf}
</div>
{else} {else}
<br/> <br/>
<br/> <br/>

View file

@ -33,16 +33,17 @@
{_groups} {_groups}
</a> </a>
</div> </div>
</div>
<form class="header_search_inputbt">
<input name="type" type="hidden" value="{$type ?? 'users'}" />
<input name="query" class="header_search_input" placeholder="{_search_placeholder}" value="{$_GET['query'] ?? ''}" />
<button class="button_search">{_search_button}</button>
</form>
<form class="header_search_inputbt"> <p style="margin-left: 15px; margin-top: 0;">
<input name="type" type="hidden" value="{$type ?? 'users'}" /> <b>{tr("results", $count)}</b>
<input name="query" class="header_search_input" placeholder="{_search_placeholder}" value="{$_GET['query'] ?? ''}" /> </p>
<button class="button_search">{_search_button}</button> <div>
</form>
<p style="margin-left: 15px; margin-top: 0;">
<b>{tr("results", $count)}</b>
</p>
{/block} {/block}
{block link|strip|stripHtml} {block link|strip|stripHtml}

View file

@ -798,6 +798,13 @@ table.User {
.tabs { .tabs {
border-bottom: 1px solid #707070; border-bottom: 1px solid #707070;
padding: 0 10px; padding: 0 10px;
margin-left: -10px;
width: 607px;
}
.tabs.stupid-fix {
margin-left: 0;
width: auto;
} }
#activetabs { #activetabs {
@ -913,11 +920,19 @@ table.User {
} }
.crp-entry--info { .crp-entry--info {
width: 190px; width: 130px;
margin-top: 2%;
}
.crp-entry--message{
padding: 3px;
width: 395px;
border-radius: 3px;
} }
.crp-entry--image>img { .crp-entry--image>img {
max-width: 64px; max-width: 50px;
border-radius: 3px;
} }
.crp-entry--info span { .crp-entry--info span {
@ -929,15 +944,14 @@ table.User {
} }
.crp-entry--message.unread { .crp-entry--message.unread {
background-color: #ededed; padding: 3px;
padding: 5px; width: 395px;
width: 346px; background: #e6e6e6;
border-radius: 3px;
} }
.messenger-app--messages---message.unread { .messenger-app--messages---message.unread {
background-color: #ededed; background-color: #ededed;
padding: 5px;
margin: -5px;
padding-bottom: 1.2rem; padding-bottom: 1.2rem;
margin-bottom: 0; margin-bottom: 0;
} }
@ -955,20 +969,27 @@ table.User {
} }
.crp-entry--message---av img { .crp-entry--message---av img {
max-width: 42px; max-width: 32px;
border-radius: 3px;
margin-top: 20%;
margin-left: 10%;
} }
.crp-entry--message---av, .crp-entry--message---av,
.crp-entry--message---text { .crp-entry--message---text {
display: inline-block; display: inline-block;
vertical-align: top; vertical-align: top;
max-width: 50px;
border-radius: 3px;
} }
.crp-entry--message---text { .crp-entry--message---text {
max-height: 45px; max-height: 40px;
max-width: 260px; max-width: 310px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
/* white-space: nowrap; */ /* myslivets: а как........... */
margin-left: 3%;
} }
.crp-entry--message---text, .crp-entry--message---text,
@ -976,14 +997,14 @@ table.User {
color: #404036; color: #404036;
} }
.messenger-app--messages,
.messenger-app--input { .messenger-app--input {
padding: 10px 70px; padding: 10px 60px;
} }
.messenger-app--messages { .messenger-app--messages {
height: 360px; height: 360px;
overflow-y: auto; overflow-y: auto;
padding: 10px 60px;
} }
.messenger-app--messages---message, .messenger-app--messages---message,
@ -994,20 +1015,31 @@ table.User {
} }
.messenger-app--messages---message { .messenger-app--messages---message {
margin-bottom: 1.2rem; margin-bottom: 3px;
padding: 10px;
} }
.messenger-app--messages---message .ava,
.messenger-app--input>.ava { .messenger-app--input>.ava {
width: 52px; width: 52px;
height: 52px; height: 52px;
object-fit: cover;
border-radius: 3px;
}
.messenger-app--messages---message .ava {
width: 37px;
height: 37px;
object-fit: cover;
border-radius: 3px;
} }
.messenger-app--messages---message ._content { .messenger-app--messages---message ._content {
padding-left: 20px; width: 310px;
width: 300px; line-height: 13.2pt;
} }
.messenger-app--messages---message ._content span, .messenger-app--messages---message ._content span,
.messenger-app--messages---message ._content>a { .messenger-app--messages---message ._content>a {
display: block; display: block;