mirror of
https://github.com/openvk/openvk
synced 2025-04-22 16:13:06 +03:00
# Аудио - Добавлена вкладка в аудио "загруженное" которую я забыл добавить в октябре 2023. Она показывает загруженные аудио в порядке возрастания. Есть так же идеи для вкладок "недавно прослушанное" и "ваши друзья слушают" (последняя добавит иммерсивности, или как это называется, персональности на сайт, хотя по факту она просто соберёт id всех друзей и выдаст их недавние добавления в коллекцию), но тогда будет нагромождение вкладок и придётся какое то сворачивание добавлять. - Если аудио больше 10 и ты на странице аудио, то показывается мелкая кнопка в правом нижнем углу которая развернёт счётчик и пагинатор. - Если аудио обрабатывается (processed как я назвал в css) то появится кнопка "всё равно хочу воспроизвести". - При переключении трека меняется заголовок вкладки - Если ты вызвал контекстное меню но оно ушло за экран, то оно будет повыше. # Уязвимости - Убрана уязвимость в audio api что можно было посмотреть айди владельца удалённого аудио. В целом непонятно использование id в тексте ошибки, поскольку он не должен изменятся и быть обобщённым, по типу access to audio denied. Но да ладно, коду три года всё таки. - Удалённый контент заменяется "[deleted]" в /fave. Я бы на самом деле не добавлял это, но меня испугал последний абзац fixed #1258 поэтому добавил.
42 lines
2.7 KiB
XML
42 lines
2.7 KiB
XML
<div class='verticalGrayTabsWrapper'>
|
|
<div class="verticalGrayTabs">
|
|
<div class='with_padding'>
|
|
<a n:if="isset($thisUser)" n:attr="id => $mode === 'list' && $isMy ? 'used' : 'ki'" href="/audios{$thisUser->getId()}">{_my_music}</a>
|
|
<a n:attr="id => $mode === 'uploaded' ? 'used' : 'ki'" href="/audios/uploaded">{_my_audios_small_uploaded}</a>
|
|
{* TODO: show upload link as and plusick (little plus) in button up*}
|
|
<a n:if="isset($thisUser)" href="/player/upload{if $isMyClub}?gid={abs($ownerId)}{/if}">{_upload_audio}</a>
|
|
<a n:if="isset($thisUser)" n:attr="id => $mode === 'new' ? 'used' : 'ki'" href="/search?section=audios">{_audio_new}</a>
|
|
<a n:if="isset($thisUser)" n:attr="id => $mode === 'popular' ? 'used' : 'ki'" href="/search?section=audios&order=listens">{_audio_popular}</a>
|
|
|
|
<hr n:if="isset($thisUser)">
|
|
|
|
<a n:attr="id => $mode === 'playlists' && $ownerId == $thisUser->getId() ? 'used' : 'ki'" href="/playlists{$thisUser->getId()}" n:if="isset($thisUser)">{_my_playlists}</a>
|
|
|
|
<a n:if="isset($thisUser)" href="/audios/newPlaylist">{_new_playlist}</a>
|
|
|
|
{if !$isMy && $mode !== 'popular' && $mode !== 'new' && $mode != 'alone_audio' && $mode != 'uploaded'}
|
|
<hr>
|
|
|
|
<a n:if="!$isMy" n:attr="id => $mode === 'list' ? 'used' : 'ki'" href="/audios{$ownerId}">{if $ownerId > 0}{_music_user}{else}{_music_club}{/if}</a>
|
|
<a href="/player/upload?gid={abs($ownerId)}" n:if="isset($thisUser) && isset($club) && $club->canUploadAudio($thisUser)">{_upload_audio}</a>
|
|
<a n:attr="id => $mode === 'playlists' && $ownerId != $thisUser->getId() ? 'used' : 'ki'" class='noOverflow' href="/playlists{$ownerId}" n:if="isset($thisUser) && isset($ownerId) && !$isMy">{if $ownerId > 0}{_playlists_user}{else}{_playlists_club}{/if}</a>
|
|
<a href="/audios/newPlaylist{if $isMyClub}?gid={abs($ownerId)}{/if}" n:if="isset($thisUser) && $isMyClub">{_new_playlist}</a>
|
|
{/if}
|
|
</div>
|
|
|
|
{if $friendsAudios}
|
|
<div class="friendsAudiosList">
|
|
<a href="/audios{$friend->getRealId()}" n:foreach="$friendsAudios as $friend">
|
|
<div class="elem">
|
|
<img src="{$friend->getAvatarURL()}" />
|
|
|
|
<div class="additionalInfo">
|
|
<span class="name noOverflow">{$friend->getCanonicalName()}</span>
|
|
<span class="desc">{$audioStatus ? $audioStatus->getName() : tr("audios_count", $friend->getAudiosCollectionSize())}</span>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|