This commit is contained in:
parent
8cdb232cb7
commit
4268d64d74
@ -2,16 +2,27 @@
|
||||
|
||||
class Controller_api_config extends Crunchbutton_Controller_Rest {
|
||||
public function init() {
|
||||
$config = c::appConfig();
|
||||
if ($_REQUEST['lat'] && $_REQUEST['lon']) {
|
||||
$restaurants = Restaurant::byRange([
|
||||
'lat' => $_REQUEST['lat'],
|
||||
'lon' => $_REQUEST['lon']
|
||||
]);
|
||||
foreach ($restaurants as $restaurant) {
|
||||
$config['restaurants'][] = $restaurant->exports();
|
||||
}
|
||||
switch ($this->method()) {
|
||||
case 'post':
|
||||
if ($this->request()['ab']) {
|
||||
echo 'saving';
|
||||
print_r($this->request()['ab']);
|
||||
c::auth()->set('ab', json_encode($this->request()['ab']));
|
||||
}
|
||||
break;
|
||||
case 'get':
|
||||
$config = c::appConfig();
|
||||
if ($_REQUEST['lat'] && $_REQUEST['lon']) {
|
||||
$restaurants = Restaurant::byRange([
|
||||
'lat' => $_REQUEST['lat'],
|
||||
'lon' => $_REQUEST['lon']
|
||||
]);
|
||||
foreach ($restaurants as $restaurant) {
|
||||
$config['restaurants'][] = $restaurant->exports();
|
||||
}
|
||||
}
|
||||
echo json_encode($config);
|
||||
break;
|
||||
}
|
||||
echo json_encode($config);
|
||||
}
|
||||
}
|
||||
@ -300,6 +300,7 @@ class Crunchbutton_App extends Cana_App {
|
||||
$config = [];
|
||||
$config['user'] = c::user()->exports();
|
||||
$config['env'] = $this->env();
|
||||
$config['ab'] = json_decode($this->auth()->get('ab'));
|
||||
return $config;
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<div class="restaurant-name"><h1><%= restaurant.name %></h1></div>
|
||||
|
||||
<% if (restaurant.image) { %>
|
||||
<div class="restaurant-pic-wrapper">
|
||||
<div class="restaurant-pic-wrapper<%= (App.config.ab.restaurantPage == 'restaurant-page-noimage') ? ' restaurant-pic-wrapper-hidden' : '' %>">
|
||||
<div class="restaurant-pic" style="background: url(<%= restaurant.img %>);"></div>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
@ -2106,7 +2106,11 @@ html[xmlns] .clearfix {
|
||||
.restaurant-pic-wrapper {
|
||||
height: 190px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: -50px;
|
||||
}
|
||||
|
||||
.restaurant-pic-wrapper.restaurant-pic-wrapper-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.restaurant-name {
|
||||
@ -2114,7 +2118,7 @@ html[xmlns] .clearfix {
|
||||
}
|
||||
|
||||
.cart-items {
|
||||
margin-top: 20px;
|
||||
margin-top: 70px;
|
||||
}
|
||||
|
||||
.button-bottom.button-letseat-form {
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
var App = {
|
||||
cartHighlightEnabled: false,
|
||||
currentPage: null,
|
||||
slogans: ['Push a button. Get Food.'],
|
||||
tagline: '',
|
||||
service: '/api/',
|
||||
cached: {},
|
||||
@ -36,7 +35,6 @@ var App = {
|
||||
_init: false,
|
||||
_pageInit: false,
|
||||
_identified: false,
|
||||
isDeliveryAddressOk : false,
|
||||
tips: [0,5,10,15,20,25]
|
||||
};
|
||||
|
||||
@ -286,21 +284,81 @@ App.identify = function() {
|
||||
/**
|
||||
* generate ab formulas
|
||||
*/
|
||||
App.AB = function() {
|
||||
// random taglines
|
||||
App.taglines = [
|
||||
{
|
||||
name: 'tagline-for-free',
|
||||
tagline: 'Order the top food %s. For free. <br /> After you order, everything is saved for future 1 click ordering. <br /><strong>Choose a restaurant:</strong>'
|
||||
},
|
||||
{ name: 'tagline-no-free',
|
||||
tagline: 'Order the top food %s. <br /> After you order, everything is saved for future 1 click ordering. <br /><strong>Choose a restaurant:</strong>'
|
||||
App.AB = {
|
||||
options: {
|
||||
tagline: [
|
||||
{
|
||||
name: 'tagline-for-free',
|
||||
tagline: 'Order the top food %s. For free. <br /> After you order, everything is saved for future 1 click ordering. <br /><strong>Choose a restaurant:</strong>'
|
||||
},
|
||||
{
|
||||
name: 'tagline-no-free',
|
||||
tagline: 'Order the top food %s. <br /> After you order, everything is saved for future 1 click ordering. <br /><strong>Choose a restaurant:</strong>'
|
||||
}
|
||||
],
|
||||
slogan: [
|
||||
{
|
||||
name: 'slogan-push-food',
|
||||
slogan: 'Push a button. Get Food.'
|
||||
}
|
||||
],
|
||||
restaurantPage: [
|
||||
{
|
||||
name: 'restaurant-page-noimage'
|
||||
},
|
||||
{
|
||||
name: 'restaurant-page-image',
|
||||
disabled: true
|
||||
}
|
||||
]
|
||||
},
|
||||
init: function() {
|
||||
if (!App.config.ab) {
|
||||
// we dont have ab variables. generate them
|
||||
App.AB.create(true);
|
||||
}
|
||||
];
|
||||
|
||||
App.slogan = App.slogans[Math.floor(Math.random()*App.slogans.length)];
|
||||
App.tagline = App.taglines[Math.floor(Math.random()*App.taglines.length)];
|
||||
App.trackProperty('restaurant-tagline', App.tagline.name);
|
||||
App.AB.load();
|
||||
},
|
||||
create: function(clear) {
|
||||
if (clear) {
|
||||
App.config.ab = {};
|
||||
}
|
||||
|
||||
_.each(App.AB.options, function(option, key) {
|
||||
if (App.config.ab[key]) {
|
||||
return;
|
||||
}
|
||||
var opts = _.filter(App.AB.options[key], function(o) { return o.disabled ? false : true; });
|
||||
var opt = opts[Math.floor(Math.random()*opts.length)];
|
||||
App.config.ab[key] = opt.name
|
||||
App.trackProperty('AB-' + key, opt.name);
|
||||
});
|
||||
|
||||
App.AB.save();
|
||||
console.log(App.config.ab);
|
||||
|
||||
},
|
||||
load: function() {
|
||||
App.slogan = _.where(App.AB.options.slogans, {name: App.config.ab.slogan});
|
||||
App.tagline = _.where(App.AB.options.tagline, {name: App.config.ab.tagline});
|
||||
|
||||
if (!App.slogan || !App.tagline) {
|
||||
App.AB.create(true);
|
||||
App.AB.load(true);
|
||||
}
|
||||
|
||||
},
|
||||
save: function() {
|
||||
$.ajax({
|
||||
url: App.service + 'config',
|
||||
data: {ab: App.config.ab},
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
complete: function(json) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
App.cart = {
|
||||
@ -776,27 +834,6 @@ Issue 13: Removed the password for while
|
||||
return;
|
||||
}
|
||||
|
||||
// Check the distance between the user and the restaurant
|
||||
if( order.delivery_type == 'delivery' && !App.isDeliveryAddressOk ){
|
||||
App.loc.geocodeDelivery( order.address,
|
||||
function(){
|
||||
if( App.isDeliveryAddressOk ){
|
||||
if( !App.restaurant.deliveryHere( { lat : App.loc.lat, lon : App.loc.lon } )){
|
||||
alert( 'Sorry, you are too far from this restaurant!' );
|
||||
App.isDeliveryAddressOk = false;
|
||||
App.busy.unBusy();
|
||||
return;
|
||||
} else {
|
||||
App.busy.unBusy();
|
||||
App.cart.submit();
|
||||
}
|
||||
} else {
|
||||
App.busy.unBusy();
|
||||
}
|
||||
} );
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: App.service + 'order',
|
||||
data: order,
|
||||
@ -1037,7 +1074,7 @@ App.test = {
|
||||
|
||||
$('[name="pay-name"]').val('MR TEST');
|
||||
$('[name="pay-phone"]').val('***REMOVED***');
|
||||
$('[name="pay-address"]').val( App.restaurant.address || "123 main\nsanta monica ca" );
|
||||
$('[name="pay-address"]').val("123 main\nsanta monica ca");
|
||||
|
||||
App.order.cardChanged = true;
|
||||
},
|
||||
@ -1057,7 +1094,7 @@ App.test = {
|
||||
|
||||
App.processConfig = function(json) {
|
||||
App.config = json;
|
||||
App.AB();
|
||||
App.AB.init();
|
||||
if (App.config.user) {
|
||||
App.identify();
|
||||
App.order['pay_type'] = App.config.user['pay_type'];
|
||||
@ -1070,16 +1107,17 @@ App.loc = {
|
||||
distance: function(params) {
|
||||
try{
|
||||
var R = 6371; // Radius of the earth in km
|
||||
var dLat = _toRad(params.to.lat - params.from.lat);
|
||||
var dLon = _toRad(params.to.lon - params.from.lon);
|
||||
var dLat = (params.to.lat - params.from.lat).toRad();
|
||||
|
||||
var dLon = (params.to.lon - params.from.lon).toRad();
|
||||
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
|
||||
Math.cos(_toRad(params.from.lat)) * Math.cos(_toRad(params.to.lat)) *
|
||||
Math.cos(params.from.lat.toRad()) * Math.cos(params.to.lat.toRad()) *
|
||||
Math.sin(dLon/2) * Math.sin(dLon/2);
|
||||
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
|
||||
var d = R * c; // Distance in km
|
||||
|
||||
return d;
|
||||
} catch( e ) {
|
||||
console.log( 'error', e );
|
||||
App.track('Location Error', {
|
||||
lat: App.loc.lat,
|
||||
lon: App.loc.lon,
|
||||
@ -1272,24 +1310,6 @@ App.loc = {
|
||||
complete();
|
||||
});
|
||||
},
|
||||
|
||||
geocodeDelivery : function( address, complete ){
|
||||
var geocoder = new google.maps.Geocoder();
|
||||
geocoder.geocode({'address': address}, function(results, status) {
|
||||
if (status == google.maps.GeocoderStatus.OK) {
|
||||
App.loc.lat = results[0].geometry.location.lat();
|
||||
App.loc.lon = results[0].geometry.location.lng();
|
||||
App.isDeliveryAddressOk = true;
|
||||
App.registerLocationsCookies();
|
||||
} else {
|
||||
alert( 'Oops! We couldn\'t find that address!' );
|
||||
App.isDeliveryAddressOk = false;
|
||||
}
|
||||
complete();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
reverseGeocode: function(complete) {
|
||||
App.track('Location Reverse Geocode', {
|
||||
lat: App.loc.lat,
|
||||
@ -1327,12 +1347,6 @@ App.loc = {
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
km2Miles : function( km ){
|
||||
return km * 0.621371;
|
||||
},
|
||||
Miles2Km : function( miles ){
|
||||
return miles * 1.60934;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1561,12 +1575,10 @@ $(function() {
|
||||
});
|
||||
|
||||
$(document).on('click', '.button-submitorder', function() {
|
||||
App.isDeliveryAddressOk = false;
|
||||
App.cart.submit($(this));
|
||||
});
|
||||
|
||||
$(document).on('click', '.button-submitorder-form', function() {
|
||||
App.isDeliveryAddressOk = false;
|
||||
App.cart.submit($(this),true);
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user