From 41aef80e858aa2b7808a4de87acbe6c28544fc53 Mon Sep 17 00:00:00 2001
From: mrilyew <99399973+mrilyew@users.noreply.github.com>
Date: Sat, 15 Mar 2025 18:53:17 +0300
Subject: [PATCH] add uploaded tab
---
Web/Presenters/AudioPresenter.php | 13 +++++++++++++
Web/Presenters/templates/Audio/List.xml | 14 ++++++++++++++
Web/Presenters/templates/Audio/tabs.xml | 3 ++-
Web/routes.yml | 2 ++
Web/static/css/main.css | 4 ++++
Web/static/js/al_music.js | 3 +++
locales/en.strings | 1 +
locales/ru.strings | 1 +
8 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/Web/Presenters/AudioPresenter.php b/Web/Presenters/AudioPresenter.php
index db341f83..2719fb2b 100644
--- a/Web/Presenters/AudioPresenter.php
+++ b/Web/Presenters/AudioPresenter.php
@@ -78,6 +78,10 @@ final class AudioPresenter extends OpenVKPresenter
} elseif ($mode === "new") {
$audios = $this->audios->getNew();
$audiosCount = $audios->size();
+ } elseif ($mode === "uploaded") {
+ $stream = $this->audios->getByUploader($this->user->identity);
+ $audios = $stream->page($page, $perPage);
+ $audiosCount = $stream->size();
} elseif ($mode === "playlists") {
if ($owner < 0) {
$entity = (new Clubs())->get(abs($owner));
@@ -130,6 +134,11 @@ final class AudioPresenter extends OpenVKPresenter
}
}
+ function renderUploaded()
+ {
+ $this->renderList(null, "uploaded");
+ }
+
public function renderEmbed(int $owner, int $id): void
{
$audio = $this->audios->getByOwnerAndVID($owner, $id);
@@ -841,6 +850,10 @@ final class AudioPresenter extends OpenVKPresenter
$audios = [$found_audio];
$audiosCount = 1;
break;
+ case "uploaded":
+ $stream = $this->audios->getByUploader($this->user->identity);
+ $audios = $stream->page($page, $perPage);
+ $audiosCount = $stream->size();
}
$pagesCount = ceil($audiosCount / $perPage);
diff --git a/Web/Presenters/templates/Audio/List.xml b/Web/Presenters/templates/Audio/List.xml
index 606022fe..fe078cef 100644
--- a/Web/Presenters/templates/Audio/List.xml
+++ b/Web/Presenters/templates/Audio/List.xml
@@ -9,6 +9,8 @@
{/if}
{elseif $mode == 'new'}
{_audio_new}
+ {elseif $mode == 'uploaded'}
+ {_my_audios_small_uploaded}
{elseif $mode == 'popular'}
{_audio_popular}
{elseif $mode == 'alone_audio'}
@@ -32,6 +34,12 @@
+
+ {_my_audios_small}
+ »
+ {_my_audios_small_uploaded}
+
+
{_audios}
»
@@ -68,6 +76,12 @@
entity_id: {$ownerId},
page: {$page}
}
+ {elseif $mode == 'uploaded'}
+ window.__current_page_audio_context = {
+ name: 'uploaded',
+ entity_id: 0,
+ page: {$page}
+ }
{elseif $mode == 'alone_audio'}
window.__current_page_audio_context = {
name: 'alone_audio',
diff --git a/Web/Presenters/templates/Audio/tabs.xml b/Web/Presenters/templates/Audio/tabs.xml
index 8ff7bb1b..b818d44b 100644
--- a/Web/Presenters/templates/Audio/tabs.xml
+++ b/Web/Presenters/templates/Audio/tabs.xml
@@ -2,6 +2,7 @@
{_my_music}
+
{_my_audios_small_uploaded}
{* TODO: show upload link as and plusick (little plus) in button up*}
{_upload_audio}
{_audio_new}
@@ -13,7 +14,7 @@
{_new_playlist}
- {if !$isMy && $mode !== 'popular' && $mode !== 'new' && $mode != 'alone_audio'}
+ {if !$isMy && $mode !== 'popular' && $mode !== 'new' && $mode != 'alone_audio' && $mode != 'uploaded'}
{if $ownerId > 0}{_music_user}{else}{_music_club}{/if}
diff --git a/Web/routes.yml b/Web/routes.yml
index 8014b0ef..9738b740 100644
--- a/Web/routes.yml
+++ b/Web/routes.yml
@@ -201,6 +201,8 @@ routes:
handler: "Audio->upload"
- url: "/audios{num}"
handler: "Audio->list"
+ - url: "/audios/uploaded"
+ handler: "Audio->uploaded"
- url: "/audio{num}/listen"
handler: "Audio->listen"
- url: "/audio{num}_{num}"
diff --git a/Web/static/css/main.css b/Web/static/css/main.css
index 81601b67..ac2e5457 100644
--- a/Web/static/css/main.css
+++ b/Web/static/css/main.css
@@ -3039,6 +3039,10 @@ a.poll-retract-vote {
gap: 1px;
}
+.verticalGrayTabsPad {
+ padding: 0px 0px 0px 8px;
+}
+
.searchList hr, .verticalGrayTabs hr {
width: 153px;
margin-left: 0px;
diff --git a/Web/static/js/al_music.js b/Web/static/js/al_music.js
index fc35174e..94ba615f 100644
--- a/Web/static/js/al_music.js
+++ b/Web/static/js/al_music.js
@@ -235,6 +235,9 @@ window.player = new class {
'query': this.context.object.query,
}))
break
+ case "uploaded":
+ form_data.append('context', this.context.object.name)
+ break
case 'alone_audio':
form_data.append('context', this.context.object.name)
form_data.append('context_entity', this.context.object.entity_id)
diff --git a/locales/en.strings b/locales/en.strings
index b7f75d91..a4ab2411 100644
--- a/locales/en.strings
+++ b/locales/en.strings
@@ -948,6 +948,7 @@
"audio_search" = "Search";
"my_audios_small" = "My audios";
+"my_audios_small_uploaded" = "Uploaded";
"my_playlists" = "My playlists";
"playlists" = "Playlists";
"audios_explicit" = "Contains obscene language";
diff --git a/locales/ru.strings b/locales/ru.strings
index 58608b1f..1315f82b 100644
--- a/locales/ru.strings
+++ b/locales/ru.strings
@@ -903,6 +903,7 @@
"audio_search" = "Поиск";
"my_audios_small" = "Мои аудиозаписи";
+"my_audios_small_uploaded" = "Загруженное";
"my_playlists" = "Мои плейлисты";
"playlists" = "Плейлисты";
"audios_explicit" = "Содержит нецензурную лексику";