diff --git a/Controller/LaguController.php b/Controller/LaguController.php index 282410c06c0f3866fed892f055a87f1d087f8d5c..2536f64af05a909c34ffcfda055cb15923c90dd7 100644 --- a/Controller/LaguController.php +++ b/Controller/LaguController.php @@ -127,13 +127,27 @@ const SONG_sIZE = 10; } + static function redirectSearchLagu(IRequest $req, IResponse $res){ + $sortType = $req->getQuery("sortsType")!==null?$req->getQuery("sortsType"):"titleASC"; + $genre = $req->getQuery("filteredGenre")!==null?$req->getQuery("filteredGenre"):"nofilter"; + $filteredGenre = strtolower($genre); + $queryString = strtolower($req->getQuery("q")); + return $res->redirect("/search?sortsType=$sortType&q=$queryString+&filteredGenre=$filteredGenre"); + } + static function searchLagu(IRequest $req,IResponse $res){ $lagu_db = new Song($req->db); $transaction = $lagu_db->transaction(); - $sortType = $req->getQuery("sortsType"); - $filteredGenre = strtolower($req->getQuery("filteredGenre")); + $sortType = $req->getQuery("sortsType")!==null?$req->getQuery("sortsType"):"titleASC"; + $genre = $req->getQuery("filteredGenre")!==null?$req->getQuery("filteredGenre"):"nofilter"; + $filteredGenre = strtolower($genre); $lagu = $transaction->select(["*"]); $queryString = strtolower($req->getQuery("q")); + if($req->getHeader("accept")==="text/html"){ + $res->setHeader("content-type","text/html"); + return $res->redirect("/search?sortsType=$sortType&q=$queryString+&filteredGenre=$filteredGenre"); + } + if(!is_null($queryString) && strlen($queryString)>0){ $lagu->where("LOWER(title) LIKE ?",["%".$queryString."%"]); } @@ -176,7 +190,12 @@ const SONG_sIZE = 10; } if ($page > $total_page) { - return $res->redirect("/"); + if($total_page>0){ + return $res->redirect("/search?sortsType=$sortType&q=$queryString&filteredGenre=$filteredGenre&page=1"); + } + else{ + return $res->redirect("/"); + } } $transaction->commit(); @@ -186,6 +205,7 @@ const SONG_sIZE = 10; } // print_r($hasil); // print_r($total_page); + print_r($filteredGenre); return $res->view("Pages/SearchLagu", [ "songs" =>$hasil, "sortsType"=>$sortType, diff --git a/Controller/SubsciberController.php b/Controller/SubsciberController.php index 98abb2acaba11121bb927249c5f3855c6f9b7c6d..7c443466bbe21ec372b13557ffd3a02ba783c08f 100644 --- a/Controller/SubsciberController.php +++ b/Controller/SubsciberController.php @@ -205,7 +205,7 @@ class SubsciberController { ($req->getQuery("limit")>0?$req->getQuery("limit"):SubsciberController::DEFAULT_LIMIT) :SubsciberController::DEFAULT_LIMIT; $data = SubsciberController::fetchSubscriptions($page,$limit,$user_id,$req->db); - if(!$data){ + if($data===false){ // return $res->json([ // "status"=>"failed", // "message"=>"fetch operations failed", diff --git a/Router/AppRoutes.php b/Router/AppRoutes.php index bda19082c6a6c355810b2b8bc422f2cda6063b42..7e5bdbb4b887751fa56c2adb01329fd7112b5f5a 100644 --- a/Router/AppRoutes.php +++ b/Router/AppRoutes.php @@ -27,6 +27,7 @@ class AppRoutes $route->route(HttpMethod::Get, "/", [HomeController::class, "homepage"]); //halaman lihat lagu + $route->route(HttpMethod::Get, "/redirect/search", [LaguController::class, "redirectSearchLagu"]); $route->route(HttpMethod::Get, "/search", [LaguController::class, "searchLagu"]); $route->route(HttpMethod::Post, "/lagu/add", [LaguController::class, "addLagu"]); $route->route(HttpMethod::Get, "/lagu/:id", [LaguController::class, "getLagu"]); diff --git a/View/Pages/SearchLagu.php b/View/Pages/SearchLagu.php index 5f122a1807bafd56932b4215d14f6ac76a18dc71..2d45bc3aebbefbca512f86c2d4cbeb5c35ae97e2 100644 --- a/View/Pages/SearchLagu.php +++ b/View/Pages/SearchLagu.php @@ -35,7 +35,7 @@ <?php foreach($genreList as $_genre){ ?> <option value="<?=$_genre["genre"]?>" - <?php if($selectedGenre===$_genre){ ?> + <?php if($selectedGenre===strtolower($_genre["genre"])){ ?> selected <?php } ?> > diff --git a/View/Partials/Header.php b/View/Partials/Header.php index b75ebc1ee672c272d48b72982c6a359232b3336f..96f89c4726a181bfd205341ddc0e87b54076073c 100644 --- a/View/Partials/Header.php +++ b/View/Partials/Header.php @@ -14,8 +14,6 @@ <img src="/static/img/search.png" alt="Webtune logo" /> </div> <input type="text" name="q" placeholder="Lagu Dinosaurus" /> - <input type="hidden" name="sortsType" value="titleASC"/> - <input type="hidden" name="filteredGenre" value="nofilter" /> </label> </form> </div> diff --git a/static/js/searchlagu.js b/static/js/searchlagu.js index 65dd62dc5f8680e162bb8fe913a40678578f3879..9fbbd27244f80d052b087fd58e128004055a69b0 100644 --- a/static/js/searchlagu.js +++ b/static/js/searchlagu.js @@ -3,9 +3,9 @@ const container = document.querySelector("#list__container") //const searchBar = document.querySelector("#searchbar") const searchBar = document.querySelector(".header__search-bar > input") const genreFilter = document.querySelector("#filteredGenre") +const pagination_number = document.querySelector(".pagination__page") //const searchButton = document.querySelector("#searchButton") - function regenerateData(data){ html = '' data.forEach(song => { @@ -32,28 +32,11 @@ function regenerateData(data){ container.innerHTML = html } -async function fetchContent(type){ - const data = await http.get("/search?sortsType="+type+"&q="+searchBar.value+"&filteredGenre="+genreFilter.value, { - json: true, - headers: { - "Accept": "application/json" - }, - }); - const lagu = data["data"]["hasil"] - document.querySelector(".pagination__page").innerHTML = "Page "+data["data"]["page"] - page = data["data"]["page"] - let total_page = data["data"]["total_page"] - if(page>total_page){ - document.querySelector("#next_button").display = "hidden"; - } - if(page<=1){ - document.querySelector("#prev_button").display = "hidden"; - } - console.log(lagu) - container.innerHTML = '' - console.log(container) - console.log(lagu) - regenerateData(lagu) +async function resortPage(type){ + let page = pagination_number.innerText.split(" ")[1] + let url = `/search?sortsType=${type}&q=${searchBar.value}&filteredGenre=${genreFilter.value}&page=${page}` + await http.get(url, {}); + window.location = url } async function searchResult(query){ @@ -82,35 +65,40 @@ async function searchResult(query){ } async function filterSearch(genre){ - console.log("/search?sortsType="+sort_type_selector.value+"&q="+searchBar.value+"&filteredGenre="+genre) - const data = await http.get("/search?sortsType="+sort_type_selector.value+"&q="+searchBar.value+"&filteredGenre="+genre, { - json: true, - headers: { - "Accept": "application/json" - }, - }); - const lagu = data["data"]["hasil"] - document.querySelector(".pagination__page").innerHTML = "Page "+data["data"]["page"] - page = data["data"]["page"] - let total_page = data["data"]["total_page"] - if(page>total_page){ - document.querySelector("#next_button").display = "hidden"; - } - if(page<=1){ - document.querySelector("#prev_button").display = "hidden"; - } - console.log(lagu) - container.innerHTML = '' - console.log(container) - console.log(lagu) - regenerateData(lagu) + let page = pagination_number.innerText.split(" ")[1] + let url = `/search?sortsType=${sort_type_selector.value}&q=${searchBar.value}&filteredGenre=${genre}&page=${page}` + await http.get(url, {}); + window.location = url + + // console.log("/search?sortsType="+sort_type_selector.value+"&q="+searchBar.value+"&filteredGenre="+genre) + // const data = await http.get("/search?sortsType="+sort_type_selector.value+"&q="+searchBar.value+"&filteredGenre="+genre, { + // json: true, + // headers: { + // "Accept": "application/json" + // }, + // }); + // const lagu = data["data"]["hasil"] + // document.querySelector(".pagination__page").innerHTML = "Page "+data["data"]["page"] + // page = data["data"]["page"] + // let total_page = data["data"]["total_page"] + // if(page>total_page){ + // document.querySelector("#next_button").display = "hidden"; + // } + // if(page<=1){ + // document.querySelector("#prev_button").display = "hidden"; + // } + // console.log(lagu) + // container.innerHTML = '' + // console.log(container) + // console.log(lagu) + // regenerateData(lagu) } sort_type_selector.onchange = (e)=>{ type = e.target.value; setTimeout(() => { - fetchContent(type) + resortPage(type) }, 100); } @@ -119,13 +107,4 @@ genreFilter.onchange = (e)=>{ setTimeout(()=>{ filterSearch(genre) },100) -} - -/* -searchButton.onclick = (e)=> -{ - query = searchBar.value - setTimeout(()=>{ - searchResult(query) - },100) -}*/ \ No newline at end of file +} \ No newline at end of file