38.patch

jobin dcruz, 03/27/2010 03:40 am

Download (8.9 kB)

 
b/ajax/search.php
1
<?php
2

  
3
require '../include/config.php';
4

  
5
$keyword = isset($_POST['search_keyword']) ? $_POST['search_keyword'] : '';
6

  
7
if ($keyword != '')
8
{
9
	$sql = "SELECT * FROM `tags` WHERE
10
		   `tag` LIKE '" . mysql_clean($keyword) . "%' AND
11
		   `active`='1'
12
		    ORDER BY `tag_count` DESC
13
		    LIMIT 10";
14
	$result = mysql_query($sql) or die(mysql_error());
15
	
16
	if (mysql_num_rows($result) > 0)
17
	{
18
		while ($tag = mysql_fetch_assoc($result))
19
		{
20
			echo $tag['tag'] . "|";
21
		}
22
	}
23
}
b/js/search.js
1
$(document).ready(function() {
2
	
3
	var searchLabel = $('#search label').remove().text();
4
	
5
	$('#search_keyword').addClass('placeholder').val(searchLabel).focus(function() {
6
		if (this.value == searchLabel) {
7
			$(this).val('');//.removeClass('placeholder')
8
		};
9
	}).blur(function() {
10
		if (this.value == '') {
11
			$(this).addClass('placeholder').val(searchLabel);
12
		};
13
	});
14
	
15
	$('#search').submit(function() {
16
		if ($('#search_keyword').val() == searchLabel) {
17
			$('#search_keyword').val('');
18
		}
19
	});
20
	var width = $('#search_keyword').css('width');
21
	width1 = width.replace('px', '');	
22
	width = width1 - 35 + "px";
23
	
24
	var textbox_left = $('#search_keyword').offset().left;
25
	var p_left = $("#search form p").offset().left;
26
	var diff = textbox_left - p_left;
27
	
28
	var $autocomplete = $('<ul class="autocomplete"></ul>').hide().insertAfter('#search_keyword').css('width', width).css('margin-left', diff + 'px');
29
	
30
	var selectedItem = null;
31
	var setSelectedItem = function(item) {
32
		selectedItem = item;
33
		
34
		if (selectedItem === null) {
35
			$autocomplete.hide();
36
			return;
37
		}
38
		
39
		if (selectedItem < 0) {
40
			selectedItem = 0;
41
		}
42
		
43
		if (selectedItem >= $autocomplete.find('li').length - 1) {
44
			selectedItem = $autocomplete.find('li').length - 1;
45
		}
46
		
47
		$autocomplete.find('li').removeClass('selected').eq(selectedItem).addClass('selected');
48
		
49
		$autocomplete.show();
50
	};
51
	
52
	var populateSearchField = function() {
53
		$('#search_keyword').val($autocomplete.find('li').eq(selectedItem).text());
54
	};
55
	
56
	var keywords_length;
57
	
58
	$('#search_keyword').attr('autocomplete', 'off').keyup(function(event) {
59
		if ( (event.keyCode > 40 || event.keyCode == 8) && $('#search_keyword').val() != '') {
60
			
61
			$.ajax({
62
				'url': baseurl + '/ajax/search.php',
63
				'data': {'search_keyword': $('#search_keyword').val()},
64
				'dataType': 'html',
65
				'type': 'POST',
66
				'success': function(data) {
67
					data = data.split('|');
68
					keywords_length = data.length;
69
					
70
					if (data.length > 1) {
71
						$autocomplete.empty();
72
						$.each(data, function(index, term) {
73
							if (index != data.length-1)
74
                            {
75
                                $('<li></li>').text(term).appendTo($autocomplete).mouseover(function() {
76
                                    setSelectedItem(index);
77
                                }).click(function(){
78
                                    populateSearchField();
79
                                    setSelectedItem(null);
80
                                });
81
                            }
82
						});
83

  
84
						$('<li style="text-align: right;"></li>').appendTo($autocomplete).html('<a class="close-btn" href="javascript:void(0);">close</a>');
85
					
86
						setSelectedItem(0);
87
					} else {
88
						
89
						setSelectedItem(null);
90
					}
91
			},
92
			'error': function(){
93
					alert('failed');
94
			}
95
		});
96
		}
97
		else if (event.keyCode == 38 && selectedItem !== null) {
98
			
99
			if (selectedItem - 1 < 0)
100
			{
101
				setSelectedItem(keywords_length - 2);
102
			}
103
			else
104
			{
105
				setSelectedItem(selectedItem - 1);
106
			}
107
			
108
			populateSearchField();
109
			event.preventDefault();
110
		}
111
		else if (event.keyCode == 40 && selectedItem !== null) {
112
;
113
			if (selectedItem + 1 <= keywords_length - 2)
114
			{
115
				setSelectedItem(selectedItem + 1);
116
			}
117
			else
118
			{
119
				setSelectedItem(0);
120
			}
121
			
122
			populateSearchField();
123
			event.preventDefault();
124
		}
125
		else if (event.keyCode == 27 && selectedItem !== null) {
126
			setSelectedItem(null);
127
		}
128
	}).keypress(function(event) {
129
		if (event.keyCode == 13 && selectedItem !== null) {			
130
			populateSearchField();
131
			setSelectedItem(null);
132
			event.preventDefault();
133
		}
134
	}).blur(function(event) {
135
		setTimeout(function() {
136
			setSelectedItem(null);
137
		}, 250);
138
	});
139
});
0
- 
b/templates/css/style.css
1240 1240
    margin:0px;
1241 1241
    padding:0px;
1242 1242
}
1243

  
1244
/* SEARCH FORM - AutoSuggestion*/
1245
.autocomplete {
1246
	list-style: none;
1247
	width: 300px;
1248
	border: 1px solid #5a5c5d;
1249
	border-width: 0 1px 1px 1px;
1250
	margin-top: 0;
1251
	position: absolute;
1252
	text-align: left;
1253
	background-color: #e1e4f2;
1254
}
1255
.autocomplete li {
1256
	margin-left: -40px;	
1257
	padding: 2px 4px 2px 4px;
1258
}
1259
.placeholder {
1260
	color: green;
1261
	width: 300px;
1262
	margin: 0;
1263
}
1264
.selected {
1265
	color: #FFFFFF;
1266
	background-color: #3366CC;
1267
	cursor:default;
1268
}
1269

  
1270
a.close-btn {
1271
	color:#0033CC;
1272
	cursor:pointer;
1273
	text-decoration:underline;
1274
	font-weight: normal;
1275
}
1243 1276
.clear {
1244 1277
    clear: both;
1245 1278
}
1246
- 
b/templates/footer.tpl
34 34
</script>
35 35
<script language="JavaScript" type="text/javascript" src="{$base_url}/js/vshare.js"></script>
36 36
{$html_extra}
37
<script language="JavaScript" type="text/javascript" src="{$base_url}/js/search.js"></script>
37
- 
b/templates/search_box.tpl
1 1
<div id="search">
2 2
    <form method="get" action="{$base_url}/search.php">
3 3
        <p>
4
            <input class="text" value="{$smarty.request.search}" name="search" />
4
            <input class="text" value="{$smarty.request.search}" name="search" id="search_keyword" autocomplete="off" />
5 5
            <select name="type">
6 6
                {if $smarty.request.type eq "video"}
7 7
                    <option value="video">Search Videos</option>
8
- 
b/ajax/search.php
6 6

  
7 7
if ($keyword != '')
8 8
{
9
	$sql = "SELECT * FROM `tags` WHERE
10
		   `tag` LIKE '" . mysql_clean($keyword) . "%' AND
11
		   `active`='1'
12
		    ORDER BY `tag_count` DESC
9
	$sql = "SELECT video_title FROM `videos` WHERE
10
		   `video_title` LIKE '" . mysql_clean($keyword) . "%' AND
11
		   `video_active`='1' AND
12
		   `video_approve`='1' AND
13
		   `video_type`='public'
14
		    group by `video_title`
15
		    ORDER BY `video_id` DESC
13 16
		    LIMIT 10";
14 17
	$result = mysql_query($sql) or die(mysql_error());
15 18
	
16 19
	if (mysql_num_rows($result) > 0)
17 20
	{
18
		while ($tag = mysql_fetch_assoc($result))
21
		while ($video = mysql_fetch_assoc($result))
19 22
		{
20
			echo $tag['tag'] . "|";
23
			echo $video['video_title'] . "|";
21 24
		}
22 25
	}
23 26
}
24
-