diff --git a/VKAPI/Handlers/Audio.php b/VKAPI/Handlers/Audio.php index b84475a4..df9cf935 100644 --- a/VKAPI/Handlers/Audio.php +++ b/VKAPI/Handlers/Audio.php @@ -18,7 +18,7 @@ final class Audio extends VKAPIRequestHandler if (!$audio) { $this->fail(0o404, "Audio not found"); } elseif (!$audio->canBeViewedBy($this->getUser())) { - $this->fail(201, "Access denied to audio(" . $audio->getPrettyId() . ")"); + $this->fail(201, "Access denied to audio(" . $audio->getId() . ")"); } # рофлан ебало @@ -201,7 +201,7 @@ final class Audio extends VKAPIRequestHandler $this->fail(15, "Access denied"); } - if ($uploaded_only) { + if ($uploaded_only && $owner_id == $this->getUser()->getRealId()) { return DatabaseConnection::i()->getContext()->table("audios") ->where([ "deleted" => false, @@ -283,7 +283,7 @@ final class Audio extends VKAPIRequestHandler } $dbCtx = DatabaseConnection::i()->getContext(); - if ($uploaded_only == 1) { + if ($uploaded_only == 1 && $owner_id == $this->getUser()->getRealId()) { if ($owner_id <= 0) { $this->fail(8, "uploaded_only can only be used with owner_id > 0"); } diff --git a/Web/Presenters/AudioPresenter.php b/Web/Presenters/AudioPresenter.php index db341f83..61b0edbb 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, 10); + $audiosCount = $stream->size(); } elseif ($mode === "playlists") { if ($owner < 0) { $entity = (new Clubs())->get(abs($owner)); @@ -130,6 +134,11 @@ final class AudioPresenter extends OpenVKPresenter } } + public 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 1483ce95..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} » @@ -58,7 +66,7 @@ {block content} {* ref: https://archive.li/P32em *} - {include "bigplayer.xml"} + {include "bigplayer.xml", buttonsShow_summary => $audiosCount > 10} + +
diff --git a/Web/Presenters/templates/Audio/bigplayer.xml b/Web/Presenters/templates/Audio/bigplayer.xml index fcda029a..d30b7a07 100644 --- a/Web/Presenters/templates/Audio/bigplayer.xml +++ b/Web/Presenters/templates/Audio/bigplayer.xml @@ -52,5 +52,9 @@
+ +
+
-
+
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/Presenters/templates/User/Fave.xml b/Web/Presenters/templates/User/Fave.xml index 50ead41f..29814c39 100644 --- a/Web/Presenters/templates/User/Fave.xml +++ b/Web/Presenters/templates/User/Fave.xml @@ -36,24 +36,30 @@ {if $count > 0} {foreach $data as $dat} - {if $section == "posts"} -
- {include "../components/post.xml", post => $dat, commentSection => true} -
- {elseif $section == "comments"} -
- {include "../components/comment.xml", comment => $dat, correctLink => true, no_reply_button => true} -
- {elseif $section == "photos"} -
- - {$dat->getDescription()} - -
- {elseif $section == "videos"} -
- {include "../components/video.xml", video => $dat} + {if $dat->isDeleted()} +
+ [deleted]
+ {else} + {if $section == "posts"} +
+ {include "../components/post.xml", post => $dat, commentSection => true} +
+ {elseif $section == "comments"} +
+ {include "../components/comment.xml", comment => $dat, correctLink => true, no_reply_button => true} +
+ {elseif $section == "photos"} +
+ + {$dat->getDescription()} + +
+ {elseif $section == "videos"} +
+ {include "../components/video.xml", video => $dat} +
+ {/if} {/if} {/foreach} {else} 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/audios.css b/Web/static/css/audios.css index cd49b006..89bce6f5 100644 --- a/Web/static/css/audios.css +++ b/Web/static/css/audios.css @@ -52,6 +52,34 @@ height: 46px; } +.bigPlayer .bigPlayerWrapper .absoluteButtons { + position: absolute; + bottom: 0; + right: 0; +} + +.bigPlayer .bigPlayerWrapper .absoluteButtons > div { + width: 8px; + height: 8px; + font-size: 9px; + + display: flex; + align-items: center; + justify-content: center; + background: #ebebeb; + border: 1px solid #c3c3c3; + border-bottom: unset; + border-right: unset; + color: #c3c3c3; + cursor: pointer; + user-select: none; +} + +.bigPlayer .bigPlayerWrapper .absoluteButtons > div:active { + background: #c3c3c3; + color: #ebebeb; +} + /* Play button and arrows */ .bigPlayer .playButtons { display: flex; @@ -313,7 +341,7 @@ opacity: 0.8; } -.audioEmbed.processed { +.audioEmbed.processed .playerButton { filter: opacity(0.6); } diff --git a/Web/static/css/main.css b/Web/static/css/main.css index 81601b67..c4d0b6c0 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; @@ -4278,3 +4282,7 @@ hr { height: 30px; background-position-y: 9px; } + +.deleted_mark_average { + padding: 5px 61px; +} diff --git a/Web/static/js/al_music.js b/Web/static/js/al_music.js index 9e166d58..94ba615f 100644 --- a/Web/static/js/al_music.js +++ b/Web/static/js/al_music.js @@ -54,6 +54,9 @@ window.player = new class { current_track_id = 0 tracks = [] + // time type: + // 0 - shows remaining time before end + // 1 - shows full track time get timeType() { return localStorage.getItem('audio.timeType') ?? 0 } @@ -62,6 +65,7 @@ window.player = new class { localStorage.setItem('audio.timeType', value) } + //