class ApiSearch_Field {
var $defaults = array();
function __construct() {
add_filter('api-search-create-script', array(&$this, 'createScript'));
add_filter('api-search-create-markup', array(&$this, 'createMarkup'));
add_filter('api-search-get-field-names', array(&$this, 'getFieldNames'));
$fields = $this->getFieldNames();
foreach ($fields as $field) {
add_filter('api-search-'.$field.'-default', array(&$this, 'getDefaultFor_'.$field));
}
}
function __call($method, $args) {
$field = str_replace('getDefaultFor_', '', $method);
if (isset($this->defaults[$field])) {
return $this->defaults[$field];
}
return '';
}
function createScript($script) {
return $script;
}
function createMarkup($markup) {
return $markup;
}
function getFieldNames($fields = array()) {
return $fields;
}
function getDefaultFor($field) {
if (isset($this->defaults[$field])) {
return $this->defaults[$field];
}
return null;
}
function getValue($field) {
$getDefault = 'getDefaultFor_'.$field;
return (isset($_REQUEST[$field]) ? $_REQUEST[$field] : $this->$getDefault());
}
function buildSelectBlock($options, $name, $label, $blank = true) {
$optionsBlock = $blank ? '' : '';
$received = $this->getValue($name);
foreach ($options as $option => $value) {
$selected = ($received == $option) ? ' selected="selected" ' : '';
$optionsBlock .= "";
}
return "
";
}
function buildRadioBlock($options, $name, $label, $blank = true) {
$optionsBlock = $blank ? "" : '';
$received = $this->getValue($name);
foreach ($options as $option => $value) {
$selected = ($received == $option) ? ' checked="checked" ' : '';
$optionsBlock .= "";
}
return "
";
}
}
?>
class ApiSearch_Location extends ApiSearch_Field {
var $defaults = array(
'lat' => 51.50803,
'long' => -0.1248,
'distance' => 55,
'address' => 'London, UK'
);
function createScript($script) {
$address = $this->getValue('address');
$lat = $this->getValue('lat');
$long = $this->getValue('long');
$distance = $this->getValue('distance');
$distance = min($distance, 55);
// api key activated by adwords-admin@metropolis.co.uk
return $script."
if (Modernizr.geolocation === true) {
$('#share-location').button();
$('#share-location').click(function() {
$('#share-location').button('disable');
$('#address').val('Searching...');
$('#address').attr('disabled', 'disabled');
navigator.geolocation.getCurrentPosition(function(position) {
latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
$.ajax({
url: 'http://maps.googleapis.com/maps/api/geocode/json?latlng=' + position.coords.latitude + ',' + position.coords.longitude + '&sensor=false', //&key=AIzaSyC6TjUt41V4p7XfA0ecedg9_EH0s6Miz0g',
success: function(res) {
$('#latitude').val(position.coords.latitude);
$('#longitude').val(position.coords.longitude);
$('#address').val(res.results[0].formatted_address);
$('#share-location').button('enable');
$('#address').removeAttr('disabled');
},
error: function() {
$('#share-location').button('enable');
$('#address').removeAttr('disabled');
}
});
}, function(e) {
$('#share-location').button('enable');
}, { enableHighAccuracy:true });
return false;
});
} else {
$('#share-location').detach();
}
$('#address').keypress(function() {
$('#search_form').addClass('field-modified');
});
$('#address').autocomplete({
source: function(request, response) {
geocoder.geocode( {'address': request.term, componentRestrictions: {country: 'uk'}}, function(results, status) {
response($.map(results, function(item) {
return {
label: item.formatted_address,
value: item.formatted_address,
geocode: item
};
}));
});
},
select: function(e, u) {
$('#latitude').val(u.item.geocode.geometry.location.lat());
$('#longitude').val(u.item.geocode.geometry.location.lng());
}
});
$('#address').blur(function() {
if ($('#search_form').hasClass('field-modified')) {
geocoder.geocode({'address': $('#address').val(), componentRestrictions: {country: 'uk'}}, function(results, status) {
if (results.length > 0) {
$('#latitude').val(results[0].geometry.location.lat());
$('#longitude').val(results[0].geometry.location.lng());
$('#address').val(results[0].formatted_address);
} else {
$('#address').val('');
}
});
}
});
$('#radius-slider').slider({
min: 5,
max: 55,
step: 10,
value: {$distance},
range: 'min',
slide: function(e, u) {
$('#radius').text(u.value);
$('#distance').val(u.value);
}
});
";
}
function createMarkup($markup) {
$address = $this->getValue('address');
$lat = $this->getValue('lat');
$long = $this->getValue('long');
$distance = $this->getValue('distance');
$distance = min($distance, 55);
return $markup."
{$distance} miles
";
}
function getFieldNames($fields = array()) {
$fields[] = 'lat';
$fields[] = 'long';
$fields[] = 'distance';
return $fields;
}
}
new ApiSearch_Location();
?>
class ApiSearch_Age extends ApiSearch_Field {
var $defaults = array(
'ageMin_boys' => 0,
'ageMax_boys' => 21
);
function createScript($script) {
$min = $this->getValue('ageMin_boys');
$max = $this->getValue('ageMax_boys');
$min = min($min, 21);
$max = min($max, 21);
return $script."
$('#age-slider').slider({
min: 0,
max: 21,
range: true,
values: [{$min}, {$max}],
slide: function(e, u) {
$('#min-boys-age').val(u.values[0]);
$('#min-girls-age').val(u.values[0]);
$('#max-boys-age').val(u.values[1]);
$('#max-girls-age').val(u.values[1]);
$('#max-age-show').text(u.values[1]);
$('#min-age-show').text(u.values[0]);
}
});
";
}
function createMarkup($markup) {
$min = $this->getValue('ageMin_boys');
$max = $this->getValue('ageMax_boys');
$min = min($min, 21);
$max = min($max, 21);
return $markup."
from {$min} to {$max} years
";
}
function getFieldNames($fields = array()) {
$fields[] = 'ageMin_boys';
$fields[] = 'ageMax_boys';
$fields[] = 'ageMin_girls';
$fields[] = 'ageMax_girls';
return $fields;
}
}
new ApiSearch_Age();
?>
class ApiSearch_Fee extends ApiSearch_Field {
var $defaults = array(
'feeMin' => 2000,
'feeMax' => 13000
);
function createScript($script) {
$min = $this->getValue('feeMin');
$max = $this->getValue('feeMax');
return $script."
$('#fee-slider').slider({
min: 2000,
max: 13000,
range: true,
step: 500,
values: [{$min}, {$max}],
slide: function(e, u) {
$('#min-fee').val(u.values[0]);
$('#max-fee').val(u.values[1]);
$('#min-fee-show').text(u.values[0]);
$('#max-fee-show').text(u.values[1]);
}
});
";
}
function createMarkup($markup) {
$min = $this->getValue('feeMin');
$max = $this->getValue('feeMax');
return $markup."
£{$min} - £{$max} (per term)
";
}
function getFieldNames($fields = array()) {
$fields[] = 'feeMin';
$fields[] = 'feeMax';
return $fields;
}
}
new ApiSearch_Fee();
?>
class ApiSearch_School_Type extends ApiSearch_Field {
function createScript($script) {
return $script."
$('#school_type-inner').chosen({disable_search_threshold: 10});
";
}
function createMarkup($markup) {
// $options = array(
// 'Pre-Prep' => 'Pre-Prep',
// 'Prep' => 'Prep',
// 'Senior' => 'Senior',
// 'Sixth' => 'Sixth',
// 'Summer' => 'Summer'
// );
$options = array(
'' => 'All',
'boys' => 'Boys',
'girls' => 'Girls',
'co-educational' => 'Co-Ed',
//'boys (some girls)' => 'Boys (some girls)',
//'girls (some boys)' => 'Girls (some boys)'
);
return $markup.$this->buildSelectBlock($options, 'school_type', 'School Type', false);
}
function getFieldNames($fields = array()) {
$fields[] = 'school_type';
return $fields;
}
}
new ApiSearch_School_Type();
?>
WordPress › Error
This site is no longer available.