| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- /**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Zend_Gdata
- * @subpackage Demos
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- /**
- * @fileoverview Provides functions for browsing and searching YouTube
- * data API feeds using a PHP backend powered by the Zend_Gdata component
- * of the Zend Framework.
- */
- /**
- * provides namespacing for the YouTube Video Browser PHP version (ytvbp)
- */
- var ytvbp = {};
- /**
- * maximum number of results to return for list of videos
- * @type Number
- */
- ytvbp.MAX_RESULTS_LIST = 5;
- /**
- * navigation button id used to page to the previous page of
- * results in the list of videos
- * @type String
- */
- ytvbp.PREVIOUS_PAGE_BUTTON = 'previousPageButton';
- /**
- * navigation button id used to page to the next page of
- * results in the list of videos
- * @type String
- */
- ytvbp.NEXT_PAGE_BUTTON = 'nextPageButton';
- /**
- * container div id used to hold list of videos
- * @type String
- */
- ytvbp.VIDEO_LIST_CONTAINER_DIV = 'searchResultsVideoList';
- /**
- * container div id used to hold the video player
- * @type String
- */
- ytvbp.VIDEO_PLAYER_DIV = 'videoPlayer';
- /**
- * container div id used to hold the search box which displays when the page
- * first loads
- * @type String
- */
- ytvbp.MAIN_SEARCH_CONTAINER_DIV = 'mainSearchBox';
- /**
- * container div id used to hold the search box displayed at the top of
- * the browser after one search has already been performed
- * @type String
- */
- ytvbp.TOP_SEARCH_CONTAINER_DIV = 'searchBox';
- /**
- * the page number to use for the next page navigation button
- * @type Number
- */
- ytvbp.nextPage = 2;
- /**
- * the page number to use for the previous page navigation button
- * @type Number
- */
- ytvbp.previousPage = 0;
- /**
- * the last search term used to query - allows for the navigation
- * buttons to know what string query to perform when clicked
- * @type String
- */
- ytvbp.previousSearchTerm = '';
- /**
- * the last query type used for querying - allows for the navigation
- * buttons to know what type of query to perform when clicked
- * @type String
- */
- ytvbp.previousQueryType = 'all';
- /**
- * Retrieves a list of videos matching the provided criteria. The list of
- * videos can be restricted to a particular standard feed or search criteria.
- * @param {String} queryType The type of query to be done - either 'all'
- * for querying all videos, or the name of a standard feed.
- * @param {String} searchTerm The search term(s) to use for querying as the
- * 'vq' query parameter value
- * @param {Number} page The 1-based page of results to return.
- */
- ytvbp.listVideos = function(queryType, searchTerm, page) {
- ytvbp.previousSearchTerm = searchTerm;
- ytvbp.previousQueryType = queryType;
- var maxResults = ytvbp.MAX_RESULTS_LIST;
- var startIndex = (((page - 1) * ytvbp.MAX_RESULTS_LIST) + 1);
- ytvbp.presentFeed(queryType, maxResults, startIndex, searchTerm);
- ytvbp.updateNavigation(page);
- };
- /**
- * Sends an AJAX request to the server to retrieve a list of videos or
- * the video player/metadata. Sends the request to the specified filePath
- * on the same host, passing the specified params, and filling the specified
- * resultDivName with the resutls upon success.
- * @param {String} filePath The path to which the request should be sent
- * @param {String} params The URL encoded POST params
- * @param {String} resultDivName The name of the DIV used to hold the results
- */
- ytvbp.sendRequest = function(filePath, params, resultDivName) {
- if (window.XMLHttpRequest) {
- var xmlhr = new XMLHttpRequest();
- } else {
- var xmlhr = new ActiveXObject('MSXML2.XMLHTTP.3.0');
- }
-
- xmlhr.open('POST', filePath, true);
- xmlhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- xmlhr.onreadystatechange = function() {
- var resultDiv = document.getElementById(resultDivName);
- if (xmlhr.readyState == 1) {
- resultDiv.innerHTML = '<b>Loading...</b>';
- } else if (xmlhr.readyState == 4 && xmlhr.status == 200) {
- if (xmlhr.responseText) {
- resultDiv.innerHTML = xmlhr.responseText;
- }
- } else if (xmlhr.readyState == 4) {
- alert('Invalid response received - Status: ' + xmlhr.status);
- }
- }
- xmlhr.send(params);
- }
- /**
- * Uses ytvbp.sendRequest to display a YT video player and metadata for the
- * specified video ID.
- * @param {String} videoId The ID of the YouTube video to show
- */
- ytvbp.presentVideo = function(videoId) {
- var params = 'queryType=show_video&videoId=' + videoId;
- var filePath = 'index.php';
- ytvbp.sendRequest(filePath, params, ytvbp.VIDEO_PLAYER_DIV);
- }
- /**
- * Uses ytvbp.sendRequest to display a list of of YT videos.
- * @param {String} queryType The name of a standard video feed or 'all'
- * @param {Number} maxResults The maximum number of videos to list
- * @param {Number} startIndex The first video to include in the list
- * @param {String} searchTerm The search terms to pass to the specified feed
- */
- ytvbp.presentFeed = function(queryType, maxResults, startIndex, searchTerm){
- var params = 'queryType=' + queryType +
- '&maxResults=' + maxResults +
- '&startIndex=' + startIndex +
- '&searchTerm=' + searchTerm;
- var filePath = 'index.php';
- ytvbp.sendRequest(filePath, params, ytvbp.VIDEO_LIST_CONTAINER_DIV);
- }
- /**
- * Updates the variables used by the navigation buttons and the 'enabled'
- * status of the buttons based upon the current page number passed in.
- * @param {Number} page The current page number
- */
- ytvbp.updateNavigation = function(page) {
- ytvbp.nextPage = page + 1;
- ytvbp.previousPage = page - 1;
- document.getElementById(ytvbp.NEXT_PAGE_BUTTON).style.display = 'inline';
- document.getElementById(ytvbp.PREVIOUS_PAGE_BUTTON).style.display = 'inline';
- if (ytvbp.previousPage < 1) {
- document.getElementById(ytvbp.PREVIOUS_PAGE_BUTTON).disabled = true;
- } else {
- document.getElementById(ytvbp.PREVIOUS_PAGE_BUTTON).disabled = false;
- }
- document.getElementById(ytvbp.NEXT_PAGE_BUTTON).disabled = false;
- };
- /**
- * Hides the main (large) search form and enables one that's in the
- * title bar of the application. The main search form is only used
- * for the first load. Subsequent searches should use the version in
- * the title bar.
- */
- ytvbp.hideMainSearch = function() {
- document.getElementById(ytvbp.MAIN_SEARCH_CONTAINER_DIV).style.display =
- 'none';
- document.getElementById(ytvbp.TOP_SEARCH_CONTAINER_DIV).style.display =
- 'inline';
- };
- /**
- * Method called when the query type has been changed. Clears out the
- * value of the search term input box by default if one of the standard
- * feeds is selected. This is to improve usability, as many of the standard
- * feeds may not include results for even fairly popular search terms.
- * @param {String} queryType The type of query being done - either 'all'
- * for querying all videos, or the name of one of the standard feeds.
- * @param {Node} searchTermInputElement The HTML input element for the input
- * element.
- */
- ytvbp.queryTypeChanged = function(queryType, searchTermInputElement) {
- if (queryType != 'all') {
- searchTermInputElement.value = '';
- }
- };
|