diff --git a/fuel/app/classes/controller/rest/install.php b/fuel/app/classes/controller/rest/install.php index 3ccd0f7..74ff450 100755 --- a/fuel/app/classes/controller/rest/install.php +++ b/fuel/app/classes/controller/rest/install.php @@ -229,6 +229,7 @@ class Controller_Rest_Install extends Controller_Rest ), array('id'), false, 'InnoDB', 'utf8_unicode_ci' ); + DBUtil::create_index('movie', 'title', 'searchTitle', 'fulltext'); $logs .= 'Movie table create!'."\r\n"; $logs .= 'Creation table configuration'."\r\n"; diff --git a/fuel/app/classes/controller/rest/search.php b/fuel/app/classes/controller/rest/search.php new file mode 100644 index 0000000..d68c553 --- /dev/null +++ b/fuel/app/classes/controller/rest/search.php @@ -0,0 +1,26 @@ +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]); + } +} \ No newline at end of file diff --git a/fuel/app/views/layout/body.php b/fuel/app/views/layout/body.php index b0fdefb..7abdcaf 100644 --- a/fuel/app/views/layout/body.php +++ b/fuel/app/views/layout/body.php @@ -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); + }); + }); }); + \ No newline at end of file diff --git a/fuel/app/views/layout/search.php b/fuel/app/views/layout/search.php new file mode 100644 index 0000000..538a07c --- /dev/null +++ b/fuel/app/views/layout/search.php @@ -0,0 +1,77 @@ + \ No newline at end of file