diff --git a/src/web/presentation/music/edit/editMusic.view.php b/src/web/presentation/music/edit/editMusic.view.php index db72787c5c8780f49474661131b4973d24eaa445..829fcd6557e6e2fa4309c3d7d4f0de6766507b8d 100644 --- a/src/web/presentation/music/edit/editMusic.view.php +++ b/src/web/presentation/music/edit/editMusic.view.php @@ -58,7 +58,7 @@ if (is_numeric($id)) { <?php require 'presentation/template/navbar.php' ?> <p id="title">Edit Music</p> <div class="img-container"> - <img src="<?php if ($exists) echo getAlbumImage(); else echo '/presentation/music/edit/img/defalbum.jpg' ?>" alt="Album"> + <img src="<?php if ($exists) echo getAlbumImageFromMusic(); else echo '/presentation/music/edit/img/defalbum.jpg' ?>" alt="Album"> </div> <div class="fields" id="form-d"> <form method="post" id="form"> diff --git a/src/web/presentation/music/info/albumInfo.php b/src/web/presentation/music/info/albumInfo.php index d1078fb4c1a980ae05b9d1edade08dfd35ff253b..4781662b50e4519b42b6c71272da5464aff1e1a4 100644 --- a/src/web/presentation/music/info/albumInfo.php +++ b/src/web/presentation/music/info/albumInfo.php @@ -1,5 +1,9 @@ <?php +require_once 'auth/authorizer.php'; + +$is_admin = authorizeAdmin($_COOKIE['token']) != null; + if ($_SERVER['REQUEST_METHOD'] == 'GET') { require 'albumInfo.view.php'; } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { @@ -38,13 +42,23 @@ function secondsToMinutes($duration): string { } function createListItem($class, $id, $title, $duration): void { - echo '<li class="'.$class.'">'; + global $is_admin; + + if ($is_admin) { + echo '<div class="hidden">'; + } + + echo '<li class="'.$class.'" id="'.$id.'">'; echo ' <p class="music-title" id="music-title">'.$title.'</p>'; echo ' <div class="music-sub-item">'; - echo ' <p style="display: none" id="music-id">'.$id.'</p>'; echo ' <p class="music-duration">'.secondsToMinutes($duration).'</p>'; echo ' </div>'; echo '</li>'; + + if ($is_admin) { + echo ' <button class="edit-music" id="'.$id.'-b">Edit</button>'; + echo '</div>'; + } } function populateList($album_id): void { diff --git a/src/web/presentation/music/info/albumInfo.view.php b/src/web/presentation/music/info/albumInfo.view.php index 526929d8f4fffd40eca06e87dde97a04aae29c6c..c8e58b03105513277d5ce64bd0f3b91357fcbce7 100644 --- a/src/web/presentation/music/info/albumInfo.view.php +++ b/src/web/presentation/music/info/albumInfo.view.php @@ -1,5 +1,6 @@ <?php +global $is_admin; require_once 'util/album-finder.php'; require_once 'util/account-finder.php'; @@ -49,7 +50,7 @@ if (is_numeric($id)) { <div class="img-container"> <img src="<?php echo getAlbumImage() ?>" alt="Album"> </div> - <?php if (authorizeAdmin($_COOKIE['token']) != null) {?> + <?php if ($is_admin) {?> <div id="edit-b"> <button id="edit-button">Edit</button> </div> diff --git a/src/web/presentation/music/info/css/albumInfo.css b/src/web/presentation/music/info/css/albumInfo.css index c6e24ac75ff37a2f9f3c7123d528f58e33bc4c2f..9285fd4b6bfaea471838d346db19ab6ebb8a89ae 100644 --- a/src/web/presentation/music/info/css/albumInfo.css +++ b/src/web/presentation/music/info/css/albumInfo.css @@ -107,6 +107,24 @@ body { margin-right: 8px; } +.edit-music { + display: flex; + justify-content: center; + width: 50px; + height: 20px; + border: none; + border-radius: 5px; + background-color: #da0f47; + color: white; + font-size: 12px; + font-weight: 500; + cursor: pointer; +} + +#hidden { + overflow: hidden; +} + #audio-d { position: fixed; bottom: 0; diff --git a/src/web/presentation/music/info/js/albumInfo.js b/src/web/presentation/music/info/js/albumInfo.js index 9e603a24c3c837c0f28a3c9646b541276462b267..af92874d26992bc465d32c096584f9b7d1726b60 100644 --- a/src/web/presentation/music/info/js/albumInfo.js +++ b/src/web/presentation/music/info/js/albumInfo.js @@ -1,12 +1,12 @@ -const list = document.querySelector('#music-list').getElementsByTagName('li'); -// const audioPlayer = document.createElement('audio'); +const listItems = document.querySelector('#music-list').getElementsByTagName('li'); +const editButtons = document.querySelector('#music-list').getElementsByClassName('edit-music'); const audioPlayer = document.querySelector('#audio'); -for (let item of list) { +for (let item of listItems) { item.addEventListener('click', (e) => { e.preventDefault(); - let id = item.querySelector('#music-id').innerHTML; + let id = item.id; let url = '/album'; let xhr = new XMLHttpRequest(); @@ -28,4 +28,16 @@ for (let item of list) { xhr.send(JSON.stringify(data)); }); +} + +if (editButtons && editButtons.length > 0) { + for (let item of editButtons) { + item.addEventListener('click', (e) => { + e.preventDefault(); + + let id = item.id.substring(0, item.id.length - 2); + + window.location.href = '/music/edit?id=' + id; + }); + } } \ No newline at end of file diff --git a/src/web/util/album-finder.php b/src/web/util/album-finder.php index 111134e9438b88e6da7a4b397355bb84f99271ae..cf0827fd070738481f8e6784ed1186e66caeff3c 100644 --- a/src/web/util/album-finder.php +++ b/src/web/util/album-finder.php @@ -5,6 +5,47 @@ function getAlbumName(mixed $album_id) { return $result[0]['name']; } +function getAlbumImageFromMusic(): string { + $image = '/presentation/music/edit/img/defalbum.jpg'; + + if (!isset($_GET['id'])) { + return $image; + } + + // get album id from db + $album_id = execSelect("SELECT album_id FROM music WHERE music_id = :id", ['id' => $_GET['id']])[0]['album_id']; + + // get album cover filename from db + $q_result = execSelect("SELECT owner_account_id, album_cover_filename FROM album WHERE album_id = :id", ['id' => $album_id]); + $accountId = $q_result[0]['owner_account_id']; + + if (count($q_result) != 0) { + $filename = $q_result[0]['album_cover_filename']; + + // prepare curl request + $url = 'object-storage:80/object'; + + $data = http_build_query(array( + 'owner' => $accountId, // account id, + 'fileType' => 'album-cover', + 'fileName' => $filename + )); + $getUrl = $url.'?'.$data; + + $curl = curl_init($getUrl); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + $result = curl_exec($curl); + + if (!curl_errno($curl) && curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) { + $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); + $image = 'data:'.$contentType.';base64,'.base64_encode($result); + } + curl_close($curl); + } + + return $image; +} + function getAlbumImage(): string { $image = '/presentation/music/edit/img/defalbum.jpg';