Minoza Search

Тема в разделе "Open Source", создана пользователем DMS, 25 фев 2011.

Модераторы: Amazko, Aste
  1. DMS

    DMS Злодей

    Moderator
    • Супермодератор
    Регистр.:
    22 окт 2010
    Сообщения:
    629
    Симпатии:
    354
    Очередной поисковик который ищет через Google или Vkontakte
    Минимум дизайна и java позволяет вам это делать очень удобно и комфортно.
    Демо
    Скачать
     
  2. Gaudi

    Gaudi

    Регистр.:
    11 янв 2007
    Сообщения:
    406
    Симпатии:
    376
    перезалейте если не трудно, линг мертвый
     
  3. MnstD13

    MnstD13 Постоялец

    Регистр.:
    30 апр 2009
    Сообщения:
    51
    Симпатии:
    29
    Код:
    $(document).ready(function(){
    	var config = {
    		siteURL		: 'vkontakte.ru',	// Change this to your site
    		searchSite	: true,
    		type		: 'web',
    		append		: false,
    		perPage		: 8,			// A maximum of 8 is allowed by Google
    		page		: 0			// The start page
    	}
    	// The small arrow that marks the active search icon:
    	var arrow = $('<span>',{className:'arrow'}).appendTo('ul.icons');
    	$('ul.icons li').click(function(){
    		var el = $(this);
    		if(el.hasClass('active')){
    			// The icon is already active, exit
    			return false;
    		}
    		el.siblings().removeClass('active');
    		el.addClass('active');
    		// Move the arrow below this icon
    		arrow.stop().animate({
    			left		: el.position().left,
    			marginLeft	: (el.width()/2)-4
    		});
    		// Set the search type
    		config.type = el.attr('data-searchType');
    		$('#more').fadeOut();
    	});
    	// Adding the site domain as a label for the first radio button:
    	$('#siteNameLabel').append(' '+config.siteURL);
    	// Marking the Search tutorialzine.com radio as active:
    	$('#searchSite').click();	
    	// Marking the web search icon as active:
    	$('li.web').click();
    	// Focusing the input text box:
    	$('#s').focus();
    	$('#searchForm').submit(function(){
    		googleSearch();
    		return false;
    	});
    	$('#searchSite,#searchWeb').change(function(){
    		// Listening for a click on one of the radio buttons.
    		// config.searchSite is either true or false.
    		config.searchSite = this.id == 'searchSite';
    	});
    	function googleSearch(settings){
    		// If no parameters are supplied to the function,
    		// it takes its defaults from the config object above:
    		settings = $.extend({},config,settings);
    		settings.term = settings.term || $('#s').val();
    		if(settings.searchSite){
    			// Using the Google site:example.com to limit the search to a
    			// specific domain:
    			settings.term = 'site:'+settings.siteURL+' '+settings.term;
    		}
    		// URL of Google's AJAX search API
    		var apiURL = 'http://ajax.googleapis.com/ajax/services/search/'+settings.type+'?v=1.0&callback=?';
    		var resultsDiv = $('#resultsDiv');
    		$.getJSON(apiURL,{q:settings.term,rsz:settings.perPage,start:settings.page*settings.perPage},function(r){
    			var results = r.responseData.results;
    			$('#more').remove();
    			if(results.length){
    				// If results were returned, add them to a pageContainer div,
    				// after which append them to the #resultsDiv:
    				var pageContainer = $('<div>',{className:'pageContainer'});
    				for(var i=0;i<results.length;i++){
    					// Creating a new result object and firing its toString method:
    					pageContainer.append(new result(results[i]) + '');
    				}
    				if(!settings.append){
    					// This is executed when running a new search, 
    					// instead of clicking on the More button:
    					resultsDiv.empty();
    				}
    				pageContainer.append('<div class="clear"></div>')
    							 .hide().appendTo(resultsDiv)
    							 .fadeIn('slow');
    				var cursor = r.responseData.cursor;
    				// Checking if there are more pages with results, 
    				// and deciding whether to show the More button:
    				if( +cursor.estimatedResultCount > (settings.page+1)*settings.perPage){
    					$('<div>',{id:'more'}).appendTo(resultsDiv).click(function(){
    						googleSearch({append:true,page:settings.page+1});
    						$(this).fadeOut();
    					});
    				}
    			}
    			else {
    				// No results were found for this search.
    				resultsDiv.empty();
    				$('<p>',{className:'notFound',html:'Ничего не найдено!'}).hide().appendTo(resultsDiv).fadeIn();
    			}
    		});
    	}
    	function result(r){
    		// This is class definition. Object of this class are created for
    		// each result. The markup is generated by the .toString() method.
    		var arr = [];
    		// GsearchResultClass is passed by the google API
    		switch(r.GsearchResultClass){
    			case 'GwebSearch':
    				arr = [
    					'<div class="webResult">',
    					'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a></h2>',
    					'<p>',r.content,'</p>',
    					'<a href="',r.unescapedUrl,'" target="_blank">',r.visibleUrl,'</a>',
    					'</div>'
    				];
    			break;
    			case 'GimageSearch':
    				arr = [
    					'<div class="imageResult">',
    					'<a target="_blank" href="',r.unescapedUrl,'" title="',r.titleNoFormatting,'" class="pic" style="width:',r.tbWidth,'px;height:',r.tbHeight,'px;">',
    					'<img src="',r.tbUrl,'" width="',r.tbWidth,'" height="',r.tbHeight,'" /></a>',
    					'<div class="clear"></div>','<a href="',r.originalContextUrl,'" target="_blank">',r.visibleUrl,'</a>',
    					'</div>'
    				];
    			break;
    			case 'GvideoSearch':
    				arr = [
    					'<div class="imageResult">',
    					'<a target="_blank" href="',r.url,'" title="',r.titleNoFormatting,'" class="pic" style="width:150px;height:auto;">',
    					'<img src="',r.tbUrl,'" width="100%" /></a>',
    					'<div class="clear"></div>','<a href="',r.originalContextUrl,'" target="_blank">',r.publisher,'</a>',
    					'</div>'
    				];
    			break;
    			case 'GnewsSearch':
    				arr = [
    					'<div class="webResult">',
    					'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a></h2>',
    					'<p>',r.content,'</p>',
    					'<a href="',r.unescapedUrl,'" target="_blank">',r.publisher,'</a>',
    					'</div>'
    				];
    			break;
    		}
    		// The toString method.
    		this.toString = function(){
    			return arr.join('');
    		}
    	}
    });
    Гы, а весь скрипт-то в script.js :) Он еще и прокомментирован и там нет Java - шикарно!
     
  4. DMS

    DMS Злодей

    Moderator
    • Супермодератор
    Регистр.:
    22 окт 2010
    Сообщения:
    629
    Симпатии:
    354
  5. Mr.Tokio

    Mr.Tokio

    Регистр.:
    17 дек 2007
    Сообщения:
    283
    Симпатии:
    46
    Мммм, это слитый сайт??? или автор поделился?
    я к чему спрашиваю, обновления просто планируются?
     
  6. DMS

    DMS Злодей

    Moderator
    • Супермодератор
    Регистр.:
    22 окт 2010
    Сообщения:
    629
    Симпатии:
    354
    Обновлений скорей всего не будет
     
  7. trOid

    trOid Создатель

    Регистр.:
    25 окт 2007
    Сообщения:
    48
    Симпатии:
    10
    демо умерло. еще есть?