Search function by name

pull/9/head
Chewbaka 5 years ago
parent b3dfbc19a4
commit 5ac3a2621c

@ -0,0 +1,26 @@
<?php
use Fuel\Core\Controller_Rest;
use Fuel\Core\Database_Result;
use Fuel\Core\DB;
use Fuel\Core\Input;
class Controller_Rest_Search extends Controller_Rest
{
public function get_index()
{
$search = '%'.Input::get('search').'%';
$query = DB::query('SELECT * FROM '.DB::table_prefix('movie').' WHERE '.DB::table_prefix('movie').'.type = :type AND ('.DB::table_prefix('movie').'.`title` LIKE :search OR MATCH('.DB::table_prefix('movie').'.`title`) AGAINST(:search)) ORDER BY MATCH('.DB::table_prefix('movie').'.`title`) AGAINST(:search) DESC LIMIT 5');
$query->bind('search', $search);
$query->param('type', 'movie');
$search_movie = $query->execute();
$query->param('type', 'episode');
$search_episode = $query->execute();
return $this->response(['movies' => $search_movie, 'episodes' => $search_episode]);
}
}

@ -79,10 +79,72 @@
if($('.Menu-menuPortal-2JtDz').css('display') !== 'none')
$('#id-3026').click();
});
$(document).on('focus focusout', '.QuickSearchInput-container-R2-wn', function (event) {
event.stopPropagation();
if(!$('.QuickSearchInput-container-R2-wn').hasClass('QuickSearchInput-focused-2kpW8'))
$('.QuickSearchInput-container-R2-wn').addClass('QuickSearchInput-focused-2kpW8');
else {
$('.QuickSearchInput-container-R2-wn').removeClass('QuickSearchInput-focused-2kpW8');
}
});
$('body').not('#search_result').on('click', function () {
if(!$('#search_result').hasClass('hidden')) {
$('#search_result').addClass('hidden');
$('input.QuickSearchInput-searchInput-2HU6-').val('');
$('._search').remove();
}
});
$(document).on('keyup', '.QuickSearchInput-searchInput-2HU6-', function (event) {
event.stopPropagation();
if($(this).val().length < 2)
return;
$.ajax({
url: '/rest/search/index',
method: 'GET',
data: {search: $(this).val()},
dataType: 'json'
}).done(function (data) {
$('._search').remove();
if(data.movies.length === 0 && data.episodes.length === 0)
return;
$('#search_result').removeClass('hidden');
data.movies.forEach(function (movie, index) {
let template = $('#film_template').clone();
template.removeClass('hidden');
template.addClass('_search');
template.html(template.html().replace(/{\$TITLE\$}/g, movie.title));
template.html(template.html().replace(/{\$YEAR\$}/g, movie.year));
template.html(template.html().replace(/{\$MOVIEID\$}/g, movie.id));
$('#film_template').after(template);
});
data.episodes.forEach(function (episode, index) {
let template = $('#episode_template').clone();
template.removeClass('hidden');
template.addClass('_search');
template.html(template.html().replace(/{\$TITLE\$}/g, episode.title));
template.html(template.html().replace(/{\$YEAR\$}/g, episode.year));
template.html(template.html().replace(/{\$MOVIEID\$}/g, episode.id));
$('#episode_template').after(template);
});
}).fail(function (data) {
console.error(data.responseText);
show_alert('error', data.responseText);
});
});
});
</script>
<?php
echo \Asset::js(['bootstrap.min.js']);
echo \Asset::js(isset($js_bottom) ? $js_bottom : null);
?>
<devBy class="hidden">Created By Chewbaka69 // https://github.com/Chewbaka69/PlexShare</devBy>
</body>

@ -0,0 +1,77 @@
<div id="search_result" style="max-height: 600px; overflow-y: scroll" class="hidden QuickSearchResults-container-3IlHh Scroller-scroller-d5-b- Scroller-vertical-1bgGS">
<a tabindex="1" title="Plus de résultats..." href="#" role="link"
class="QuickSearchPlaceholderLink-placeholder-1Wxzp QuickSearchPlaceholderLink-isPlaceholderSelected-rDCpK Link-link-2XYrU Link-default-32xSO">Plus
de résultats...</a>
<div>
<div>
<div class="QuickSearchProvider-title-1DX5M" aria-label="heading" aria-level="4">Library</div>
<div>
<div>
<h5 class="QuickSearchHubContainer-hubTitle-2B0GD">Films</h5>
<div id="film_template" role="button" class="hidden QuickSearchResult-button-1ZHpO Link-link-2XYrU Link-default-32xSO">
<a tabindex="1" title="{$TITLE$}" href="/movie/{$MOVIEID$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<div class="QuickSearchResult-overlay-38WrL">
<div class="QuickSearchResult-imageContainer-DvFlp">
<div class="QuickSearchMetadataPosterCard-card-3_XFi MetadataPosterButtonCard-card-2T8TR"
style="width: 28px; height: 42px;">
<div class="PosterCardImg-imageContainer-1Ar4M">
<div style="background-image: url('/cover/movie?movie_id={$MOVIEID$}&width=42&height=63'); background-size: cover; background-position: center center; background-repeat: no-repeat; width: 100%; height: 100%; position: absolute; z-index: 2;"></div>
</div>
<button aria-label="Lire {$TITLE$}" tabindex="-1" role="button" class="MetadataPosterButtonCard-playButton-aOV1E PlayButton-playButton-3WX8X Link-link-2XYrU Link-default-32xSO" type="button">
<div class="MetadataPosterButtonCard-playCircle-366hc PlayButton-playCircle-3Evfd">
<i class="plex-icon-play-560 PlayButton-playIcon-dt3sk"
aria-hidden="true"></i></div>
</button>
</div>
</div>
<div class="QuickSearchResult-titles-3kHPx">
<div class="QuickSearchResult-title-1XJ-0 QuickSearchTitle-title-2ApAO">
<span title="{$TITLE$}">{$TITLE$}</span>
</div>
<div class=" QuickSearchTitle-title-2ApAO QuickSearchTitle-isSecondary-mxETF">
<span data-qa-id="metadataYear">{$YEAR$}</span></div>
</div>
<button id="id-1341" tabindex="-1" aria-label="Plus d'actions" aria-haspopup="true" role="button"
class="QuickSearchResult-moreButton-2Agbk Link-link-2XYrU Link-default-32xSO" type="button">
<i class="plex-icon-more-560" aria-hidden="true"></i>
</button>
</div>
</div>
</div>
<div>
<h5 class="QuickSearchHubContainer-hubTitle-2B0GD">Épisodes</h5>
<div id="episode_template" role="button" class="hidden QuickSearchResult-button-1ZHpO Link-link-2XYrU Link-default-32xSO">
<a tabindex="1" title="{$TITLE$}" href="/movie/{$MOVIEID$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<div class="QuickSearchResult-overlay-38WrL">
<div class="QuickSearchResult-imageContainer-DvFlp">
<div class="QuickSearchMetadataPosterCard-card-3_XFi MetadataPosterButtonCard-card-2T8TR"
style="width: 28px; height: 42px;">
<div class="PosterCardImg-imageContainer-1Ar4M">
<div style="background-image: url('/cover/movie?movie_id={$MOVIEID$}&width=42&height=63'); background-size: cover; background-position: center center; background-repeat: no-repeat; width: 100%; height: 100%; position: absolute; z-index: 2;"></div>
</div>
<button aria-label="Lire {$TITLE$}" tabindex="-1" role="button" class="MetadataPosterButtonCard-playButton-aOV1E PlayButton-playButton-3WX8X Link-link-2XYrU Link-default-32xSO" type="button">
<div class="MetadataPosterButtonCard-playCircle-366hc PlayButton-playCircle-3Evfd">
<i class="plex-icon-play-560 PlayButton-playIcon-dt3sk"></i>
</div>
</button>
</div>
</div>
<div class="QuickSearchResult-titles-3kHPx">
<div class="QuickSearchResult-title-1XJ-0 QuickSearchTitle-title-2ApAO ">
<span title="{$TITLE$}">{$TITLE$}</span>
</div>
<div class=" QuickSearchTitle-title-2ApAO QuickSearchTitle-isSecondary-mxETF">
<a tabindex="-1" title="{$TVSHOW$}" href="#" role="link" class=" Link-link-2XYrU Link-default-32xSO">{$TVSHOW$}</a>
</div>
</div>
<button id="id-1347" tabindex="-1" aria-label="Plus d'actions" aria-haspopup="true" role="button"
class="QuickSearchResult-moreButton-2Agbk Link-link-2XYrU Link-default-32xSO" type="button">
<i class="plex-icon-more-560" aria-hidden="true"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Loading…
Cancel
Save