Version Notes
New Features:
Import State/Region with 2 digit region code.
Import the same shipping method that the customer sees in the iGlobal checkout.
Allow changing which product attributes are sent to iglobal
Save the customer Notes onto the order
Download this release
Release Info
Developer | Brian Olsen |
Extension | Iglobal_Main |
Version | 1.5.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.0 to 1.5.0
- app/code/community/Iglobal/Stores/Helper/Data.php +20 -5
- app/code/community/Iglobal/Stores/Model/Configoptions.php +9 -7
- app/code/community/Iglobal/Stores/Model/Observer.php +2 -2
- app/code/community/Iglobal/Stores/Model/Order.php +58 -33
- app/code/community/Iglobal/Stores/Model/Rest.php +7 -7
- app/code/community/Iglobal/Stores/etc/config.xml +9 -2
- app/code/community/Iglobal/Stores/etc/system.xml +133 -6
- app/etc/modules/Iglobal_Ship.xml +0 -9
- app/etc/modules/Iglobal_Stores.xml +0 -14
- js/iGlobal/ig_welcome_mat_default.css +59 -26
- js/iGlobal/ig_welcome_mat_default.js +129 -589
- package.xml +29 -28
app/code/community/Iglobal/Stores/Helper/Data.php
CHANGED
@@ -53,10 +53,10 @@ class Iglobal_Stores_Helper_Data extends Mage_Core_Helper_Abstract
|
|
53 |
$weight = $item->getWeight();
|
54 |
}
|
55 |
$dimensions = array(
|
56 |
-
'weight' => $this->units2lbs($weight, $product->getAttributeText('ig_weight_units')),
|
57 |
-
'length' => $this->dim2inch($
|
58 |
-
'width' => $this->dim2inch($
|
59 |
-
'height' => $this->dim2inch($
|
60 |
);
|
61 |
return $dimensions;
|
62 |
}
|
@@ -85,7 +85,15 @@ class Iglobal_Stores_Helper_Data extends Mage_Core_Helper_Abstract
|
|
85 |
'itemURL' => $product->getProductUrl(),
|
86 |
'imageURL' => str_replace("http:", "https:", Mage::helper('catalog/image')->init($product, 'thumbnail')),
|
87 |
'itemDescriptionLong' => $optionList,
|
88 |
-
'countryOfOrigin' => $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
) + $this->getDimensions($product, $item);
|
90 |
return $details;
|
91 |
}
|
@@ -209,6 +217,13 @@ class Iglobal_Stores_Helper_Data extends Mage_Core_Helper_Abstract
|
|
209 |
return $this->_files;
|
210 |
}
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
protected function _getConfigValue($key, $store)
|
213 |
{
|
214 |
return Mage::getStoreConfig(self::XML_CONFIG_PATH . $key, $store = '');
|
53 |
$weight = $item->getWeight();
|
54 |
}
|
55 |
$dimensions = array(
|
56 |
+
'weight' => $this->units2lbs($this->getProductAttribute($product, 'weight'), $product->getAttributeText('ig_weight_units')),
|
57 |
+
'length' => $this->dim2inch($this->getProductAttribute($product, 'length'), $dim),
|
58 |
+
'width' => $this->dim2inch($this->getProductAttribute($product, 'width'), $dim),
|
59 |
+
'height' => $this->dim2inch($this->getProductAttribute($product, 'height'), $dim),
|
60 |
);
|
61 |
return $dimensions;
|
62 |
}
|
85 |
'itemURL' => $product->getProductUrl(),
|
86 |
'imageURL' => str_replace("http:", "https:", Mage::helper('catalog/image')->init($product, 'thumbnail')),
|
87 |
'itemDescriptionLong' => $optionList,
|
88 |
+
'countryOfOrigin' => $this->getProductAttribute($product, 'country_of_origin'),
|
89 |
+
'itemBrand' => $this->getProductAttribute($product, 'brand'),
|
90 |
+
'itemCategory' => $this->getProductAttribute($product, 'category'),
|
91 |
+
'itemHSCode' => $this->getProductAttribute($product, 'hs_code'),
|
92 |
+
'itemCustomization' => $this->getProductAttribute($product, 'customization'),
|
93 |
+
'itemColor' => $this->getProductAttribute($product, 'color'),
|
94 |
+
'itemMaterial' => $this->getProductAttribute($product, 'material'),
|
95 |
+
'status' => $this->getProductAttribute($product, 'status'),
|
96 |
+
'nonShippable' => (bool)$this->getProductAttribute($product, 'non_shippable'),
|
97 |
) + $this->getDimensions($product, $item);
|
98 |
return $details;
|
99 |
}
|
217 |
return $this->_files;
|
218 |
}
|
219 |
|
220 |
+
protected function getProductAttribute($product, $attributeName) {
|
221 |
+
$value = Mage::getStoreconfig('iglobal_integration/ig_item_attribute/' . $attributeName);
|
222 |
+
if($value) {
|
223 |
+
return $product->getData($value);
|
224 |
+
}
|
225 |
+
return null;
|
226 |
+
}
|
227 |
protected function _getConfigValue($key, $store)
|
228 |
{
|
229 |
return Mage::getStoreConfig(self::XML_CONFIG_PATH . $key, $store = '');
|
app/code/community/Iglobal/Stores/Model/Configoptions.php
CHANGED
@@ -1,15 +1,17 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class Iglobal_Stores_Model_ConfigOptions
|
4 |
{
|
5 |
public function toOptionArray()
|
6 |
{
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
|
|
13 |
}
|
14 |
|
15 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class Iglobal_Stores_Model_ConfigOptions extends Mage_Eav_Model_Entity_Attribute_Source_Store
|
4 |
{
|
5 |
public function toOptionArray()
|
6 |
{
|
7 |
+
$collection = Mage::getResourceModel('catalog/product_attribute_collection')->load();
|
8 |
+
$options = array(array('value'=> null, 'label'=> '- Not mapped -' ));
|
9 |
+
foreach($collection as $attr) {
|
10 |
+
if($attr->getIsVisible()) {
|
11 |
+
$options[] = array('value' => $attr->getAttributeCode(), 'label' => $attr->getFrontendLabel());
|
12 |
+
}
|
13 |
+
}
|
14 |
+
return $options;
|
15 |
}
|
16 |
|
17 |
}
|
app/code/community/Iglobal/Stores/Model/Observer.php
CHANGED
@@ -69,9 +69,9 @@ class Iglobal_Stores_Model_Observer
|
|
69 |
foreach ($orders as $order) {
|
70 |
$magentoOrders[$order->getIgOrderNumber()] = $order;
|
71 |
}
|
72 |
-
|
73 |
//get array with all orders in past
|
74 |
-
$data = Mage::getModel('stores/rest')->getAllOrdersSinceDate(
|
75 |
foreach ($data->orders as $igOrder)
|
76 |
{
|
77 |
|
69 |
foreach ($orders as $order) {
|
70 |
$magentoOrders[$order->getIgOrderNumber()] = $order;
|
71 |
}
|
72 |
+
$date = date("Ymd", strtotime("-1 week"));
|
73 |
//get array with all orders in past
|
74 |
+
$data = Mage::getModel('stores/rest')->getAllOrdersSinceDate($date);
|
75 |
foreach ($data->orders as $igOrder)
|
76 |
{
|
77 |
|
app/code/community/Iglobal/Stores/Model/Order.php
CHANGED
@@ -29,8 +29,8 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
29 |
$order->hold();
|
30 |
$order->addStatusHistoryComment("Order Set to {$status} by iGlobal", false);
|
31 |
$order->save();
|
32 |
-
} elseif ($status == self::STATUS_IN_PROCESS && $order->
|
33 |
-
$order->
|
34 |
$order->addStatusHistoryComment("Order Set to {$status} by iGlobal", false);
|
35 |
$order->save();
|
36 |
}
|
@@ -78,7 +78,25 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
78 |
Mage::unregister('shipping_methodtitle');
|
79 |
return $order;
|
80 |
}
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
protected function setContactInfo()
|
83 |
{
|
84 |
//set customer info
|
@@ -102,27 +120,6 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
102 |
$street = array($street, $this->iglobal_order->address2);
|
103 |
}
|
104 |
|
105 |
-
$region = Mage::getModel('directory/region')
|
106 |
-
->loadbyName($this->iglobal_order->state, $this->iglobal_order->countryCode);
|
107 |
-
if (!$region->getId())
|
108 |
-
{
|
109 |
-
// Lookup region from iGlobalstores
|
110 |
-
$regionId = $this->rest->getRegionId(
|
111 |
-
$this->iglobal_order->countryCode,
|
112 |
-
$this->iglobal_order->state,
|
113 |
-
$this->iglobal_order_id);
|
114 |
-
$region->load($regionId->magentoRegionId);
|
115 |
-
if (!$region->getId())
|
116 |
-
{
|
117 |
-
// Create a new region
|
118 |
-
$region->setData(array(
|
119 |
-
'country_id' => $this->iglobal_order->countryCode,
|
120 |
-
'defalt_name' => $this->iglobal_order->state
|
121 |
-
))->save();
|
122 |
-
|
123 |
-
}
|
124 |
-
}
|
125 |
-
|
126 |
$addressData = array(
|
127 |
'firstname' => $name_first,
|
128 |
'lastname' => $name_last,
|
@@ -131,9 +128,9 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
131 |
'postcode' => $this->iglobal_order->zip,
|
132 |
'telephone' => $this->iglobal_order->phone,
|
133 |
'region' => $this->iglobal_order->state,
|
134 |
-
'region_id' => $
|
135 |
'country_id' => $this->iglobal_order->countryCode,
|
136 |
-
'company' =>
|
137 |
);
|
138 |
|
139 |
if (!empty($this->iglobal_order->billingAddress1)) {
|
@@ -158,9 +155,10 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
158 |
'city' => $this->iglobal_order->billingCity,
|
159 |
'postcode' => $this->iglobal_order->billingZip,
|
160 |
'telephone' => $this->iglobal_order->billingPhone,
|
161 |
-
'region' => $this->iglobal_order->
|
162 |
-
'region_id' => $
|
163 |
'country_id' => $this->iglobal_order->billingCountryCode,
|
|
|
164 |
);
|
165 |
|
166 |
} else {
|
@@ -206,7 +204,7 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
206 |
}
|
207 |
foreach($extra as $item)
|
208 |
{
|
209 |
-
$this->quote->removeItem($item->getId());
|
210 |
}
|
211 |
}
|
212 |
|
@@ -254,11 +252,14 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
254 |
$carrierMethod = 'default';
|
255 |
}
|
256 |
$shipper = $shippers[$carrierMethod];
|
257 |
-
|
|
|
|
|
|
|
258 |
//Add things to the register so they can be used by the shipping method
|
259 |
Mage::register('shipping_cost', $this->iglobal_order->shippingTotal);
|
260 |
Mage::register('shipping_carriertitle', $shipper[0]);
|
261 |
-
Mage::register('shipping_methodtitle', $
|
262 |
$shippingAddress->setCollectShippingRates(true)
|
263 |
->collectShippingRates()
|
264 |
->setShippingMethod('excellence_excellence');
|
@@ -291,9 +292,14 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
291 |
$service = Mage::getModel('stores/service_quote', $this->quote);
|
292 |
$service->submitAll();
|
293 |
$order = $service->getOrder();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
|
295 |
-
// cleaning up
|
296 |
-
Mage::getSingleton('checkout/session')->clear();
|
297 |
|
298 |
$id = $order->getEntityId();
|
299 |
|
@@ -347,6 +353,25 @@ class Iglobal_Stores_Model_Order extends Mage_Core_Model_Abstract
|
|
347 |
}
|
348 |
}
|
349 |
$this->checkStatus($order);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
} catch (Exception $e) {
|
351 |
$order->addStatusHistoryComment('iGlobal Invoicer: Exception occurred during automatically invoicing. Exception message: '.$e->getMessage(), false);
|
352 |
$order->save();
|
29 |
$order->hold();
|
30 |
$order->addStatusHistoryComment("Order Set to {$status} by iGlobal", false);
|
31 |
$order->save();
|
32 |
+
} elseif ($status == self::STATUS_IN_PROCESS && $order->canUnhold()) {
|
33 |
+
$order->unhold();
|
34 |
$order->addStatusHistoryComment("Order Set to {$status} by iGlobal", false);
|
35 |
$order->save();
|
36 |
}
|
78 |
Mage::unregister('shipping_methodtitle');
|
79 |
return $order;
|
80 |
}
|
81 |
+
protected function regionId($state, $countryCode){
|
82 |
+
$region = Mage::getModel('directory/region')->loadbyName($state, $countryCode);
|
83 |
+
if (!$region->getId())
|
84 |
+
{
|
85 |
+
// Lookup region from iGlobalstores
|
86 |
+
$regionId = $this->rest->getRegionId($countryCode, $state, $this->iglobal_order_id);
|
87 |
+
$region->load($regionId->magentoRegionId);
|
88 |
+
if (!$region->getId())
|
89 |
+
{
|
90 |
+
try {
|
91 |
+
// Create a new region
|
92 |
+
$region->setData(array('country_id' => $countryCode, 'code'=> $regionId->isoCode,'default_name' => $state))->save();
|
93 |
+
} catch (Exception $e) {
|
94 |
+
return null;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
}
|
98 |
+
return $region->getId();
|
99 |
+
}
|
100 |
protected function setContactInfo()
|
101 |
{
|
102 |
//set customer info
|
120 |
$street = array($street, $this->iglobal_order->address2);
|
121 |
}
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
$addressData = array(
|
124 |
'firstname' => $name_first,
|
125 |
'lastname' => $name_last,
|
128 |
'postcode' => $this->iglobal_order->zip,
|
129 |
'telephone' => $this->iglobal_order->phone,
|
130 |
'region' => $this->iglobal_order->state,
|
131 |
+
'region_id' => $this->regionId($this->iglobal_order->state, $this->iglobal_order->countryCode),
|
132 |
'country_id' => $this->iglobal_order->countryCode,
|
133 |
+
'company' => $this->iglobal_order->company,
|
134 |
);
|
135 |
|
136 |
if (!empty($this->iglobal_order->billingAddress1)) {
|
155 |
'city' => $this->iglobal_order->billingCity,
|
156 |
'postcode' => $this->iglobal_order->billingZip,
|
157 |
'telephone' => $this->iglobal_order->billingPhone,
|
158 |
+
'region' => $this->iglobal_order->billingState,
|
159 |
+
'region_id' => $this->regionId($this->iglobal_order->billingState, $this->iglobal_order->billingCountryCode),
|
160 |
'country_id' => $this->iglobal_order->billingCountryCode,
|
161 |
+
'company' => $this->iglobal_order->company,
|
162 |
);
|
163 |
|
164 |
} else {
|
204 |
}
|
205 |
foreach($extra as $item)
|
206 |
{
|
207 |
+
// $this->quote->removeItem($item->getId());
|
208 |
}
|
209 |
}
|
210 |
|
252 |
$carrierMethod = 'default';
|
253 |
}
|
254 |
$shipper = $shippers[$carrierMethod];
|
255 |
+
$shippingMethod = $shipper[1];
|
256 |
+
if($this->iglobal_order->customerSelectedShippingName) {
|
257 |
+
$shippingMethod = $this->iglobal_order->customerSelectedShippingName;
|
258 |
+
}
|
259 |
//Add things to the register so they can be used by the shipping method
|
260 |
Mage::register('shipping_cost', $this->iglobal_order->shippingTotal);
|
261 |
Mage::register('shipping_carriertitle', $shipper[0]);
|
262 |
+
Mage::register('shipping_methodtitle', $shippingMethod);
|
263 |
$shippingAddress->setCollectShippingRates(true)
|
264 |
->collectShippingRates()
|
265 |
->setShippingMethod('excellence_excellence');
|
292 |
$service = Mage::getModel('stores/service_quote', $this->quote);
|
293 |
$service->submitAll();
|
294 |
$order = $service->getOrder();
|
295 |
+
if($order) {
|
296 |
+
// cleaning up
|
297 |
+
Mage::getSingleton('checkout/session')->clear();
|
298 |
+
} else {
|
299 |
+
$this->quote->setIsActive(1)->save();
|
300 |
+
return;
|
301 |
+
}
|
302 |
|
|
|
|
|
303 |
|
304 |
$id = $order->getEntityId();
|
305 |
|
353 |
}
|
354 |
}
|
355 |
$this->checkStatus($order);
|
356 |
+
|
357 |
+
// add customer notes
|
358 |
+
if($this->iglobal_order->notes){
|
359 |
+
foreach ($this->iglobal_order->notes as $note) {
|
360 |
+
if($note->customerNote) {
|
361 |
+
$order->addStatusHistoryComment($note->note, false);
|
362 |
+
}
|
363 |
+
}
|
364 |
+
}
|
365 |
+
$extraNote = "";
|
366 |
+
if($this->iglobal_order->birthDate) {
|
367 |
+
$extraNote .= "Birthdate: " . $this->iglobal_order->birthDate . "\n";
|
368 |
+
}
|
369 |
+
if($this->iglobal_order->nationalIdentifier) {
|
370 |
+
$extraNote .= "National Identifier: " . $this->iglobal_order->nationalIdentifier . "\n";
|
371 |
+
}
|
372 |
+
if($extraNote) {
|
373 |
+
$order->addStatusHistoryComment($extraNote, false);
|
374 |
+
}
|
375 |
} catch (Exception $e) {
|
376 |
$order->addStatusHistoryComment('iGlobal Invoicer: Exception occurred during automatically invoicing. Exception message: '.$e->getMessage(), false);
|
377 |
$order->save();
|
app/code/community/Iglobal/Stores/Model/Rest.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
class Iglobal_Stores_Model_Rest extends Mage_Core_Model_Abstract
|
4 |
{
|
5 |
-
protected $_entryPoint = 'https://api.iglobalstores.com/
|
6 |
protected $_store = 3; // default store ID
|
7 |
protected $_key = '';
|
8 |
|
@@ -38,36 +38,36 @@ class Iglobal_Stores_Model_Rest extends Mage_Core_Model_Abstract
|
|
38 |
public function getAllOrders()
|
39 |
{
|
40 |
$data = array('sinceDate'=>'20100101');
|
41 |
-
return $this->callApi('orderNumbers', $data);
|
42 |
}
|
43 |
|
44 |
public function getAllOrdersSinceDate($data)
|
45 |
{
|
46 |
$data = array('sinceDate'=>$data);
|
47 |
-
return $this->callApi('orderNumbers', $data);
|
48 |
}
|
49 |
|
50 |
public function getOrder($order)
|
51 |
{
|
52 |
$data = array('orderId' => $order);
|
53 |
-
return $this->callApi('orderDetail', $data);
|
54 |
}
|
55 |
|
56 |
public function sendMagentoOrderId($igc_order_id, $magento_order_id) {
|
57 |
$data = array('orderId' => $igc_order_id, 'merchantOrderId' => $magento_order_id);
|
58 |
-
return $this->callApi('updateMerchantOrderId', $data);
|
59 |
}
|
60 |
|
61 |
public function createTempCart(array $data)
|
62 |
{
|
63 |
-
return $this->callApi('createTempCart', $data);
|
64 |
}
|
65 |
|
66 |
public function getRegionId($countryId, $region, $orderid)
|
67 |
{
|
68 |
$data = array('countryCode'=> $countryId,'region'=> $region, 'orderId' => $orderid);
|
69 |
return $this->callApi(
|
70 |
-
'magento-region',
|
71 |
$data,
|
72 |
array("serviceToken" => "31ae7155-5b9e-461f-8353-9a8c3f8ae35974ffec3a-88dc-4acb-8420-270df7967338")
|
73 |
);
|
2 |
|
3 |
class Iglobal_Stores_Model_Rest extends Mage_Core_Model_Abstract
|
4 |
{
|
5 |
+
protected $_entryPoint = 'https://api.iglobalstores.com/';
|
6 |
protected $_store = 3; // default store ID
|
7 |
protected $_key = '';
|
8 |
|
38 |
public function getAllOrders()
|
39 |
{
|
40 |
$data = array('sinceDate'=>'20100101');
|
41 |
+
return $this->callApi('v1/orderNumbers', $data);
|
42 |
}
|
43 |
|
44 |
public function getAllOrdersSinceDate($data)
|
45 |
{
|
46 |
$data = array('sinceDate'=>$data);
|
47 |
+
return $this->callApi('v1/orderNumbers', $data);
|
48 |
}
|
49 |
|
50 |
public function getOrder($order)
|
51 |
{
|
52 |
$data = array('orderId' => $order);
|
53 |
+
return $this->callApi('v2/orderDetail', $data);
|
54 |
}
|
55 |
|
56 |
public function sendMagentoOrderId($igc_order_id, $magento_order_id) {
|
57 |
$data = array('orderId' => $igc_order_id, 'merchantOrderId' => $magento_order_id);
|
58 |
+
return $this->callApi('v1/updateMerchantOrderId', $data);
|
59 |
}
|
60 |
|
61 |
public function createTempCart(array $data)
|
62 |
{
|
63 |
+
return $this->callApi('v1/createTempCart', $data);
|
64 |
}
|
65 |
|
66 |
public function getRegionId($countryId, $region, $orderid)
|
67 |
{
|
68 |
$data = array('countryCode'=> $countryId,'region'=> $region, 'orderId' => $orderid);
|
69 |
return $this->callApi(
|
70 |
+
'v1/magento-region',
|
71 |
$data,
|
72 |
array("serviceToken" => "31ae7155-5b9e-461f-8353-9a8c3f8ae35974ffec3a-88dc-4acb-8420-270df7967338")
|
73 |
);
|
app/code/community/Iglobal/Stores/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Iglobal_Stores>
|
5 |
-
<version>1.
|
6 |
<currencies>
|
7 |
<AED></AED>
|
8 |
<ARS>&#8371;</ARS>
|
@@ -315,6 +315,13 @@
|
|
315 |
<igc_dev>
|
316 |
<dev_on>0</dev_on>
|
317 |
</igc_dev>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
318 |
</iglobal_integration>
|
319 |
|
320 |
<general>
|
@@ -366,7 +373,7 @@
|
|
366 |
<crontab>
|
367 |
<jobs>
|
368 |
<iglobal_order_update>
|
369 |
-
<schedule><cron_expr
|
370 |
<run><model>stores/observer::orderRec</model></run>
|
371 |
</iglobal_order_update>
|
372 |
</jobs>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Iglobal_Stores>
|
5 |
+
<version>1.5.0</version>
|
6 |
<currencies>
|
7 |
<AED></AED>
|
8 |
<ARS>&#8371;</ARS>
|
315 |
<igc_dev>
|
316 |
<dev_on>0</dev_on>
|
317 |
</igc_dev>
|
318 |
+
<ig_item_attribute>
|
319 |
+
<weight>weight</weight>
|
320 |
+
<length>ig_length</length>
|
321 |
+
<width>ig_width</width>
|
322 |
+
<height>ig_height</height>
|
323 |
+
<country_of_origin>country_of_manufacture</country_of_origin>
|
324 |
+
</ig_item_attribute>
|
325 |
</iglobal_integration>
|
326 |
|
327 |
<general>
|
373 |
<crontab>
|
374 |
<jobs>
|
375 |
<iglobal_order_update>
|
376 |
+
<schedule><cron_expr>*/30 * * * *</cron_expr></schedule>
|
377 |
<run><model>stores/observer::orderRec</model></run>
|
378 |
</iglobal_order_update>
|
379 |
</jobs>
|
app/code/community/Iglobal/Stores/etc/system.xml
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<config>
|
4 |
<tabs>
|
5 |
<iglobal translate="label" module="stores">
|
6 |
-
<label>iGlobal Stores
|
7 |
<sort_order>150</sort_order>
|
8 |
</iglobal>
|
9 |
</tabs>
|
@@ -37,7 +37,7 @@
|
|
37 |
|
38 |
<sections>
|
39 |
<iglobal_integration translate="label" module="stores">
|
40 |
-
<label>iGlobal Integration
|
41 |
<tab>iglobal</tab>
|
42 |
<frontend_type>text</frontend_type>
|
43 |
<sort_order>1000</sort_order>
|
@@ -107,7 +107,7 @@
|
|
107 |
|
108 |
<ice>
|
109 |
<label>ICE script</label>
|
110 |
-
<comment>Paste the provided link here. Please Be sure to include "https://" at the
|
111 |
<frontend_type>text</frontend_type>
|
112 |
<sort_order>50</sort_order>
|
113 |
<show_in_default>1</show_in_default>
|
@@ -259,7 +259,7 @@
|
|
259 |
</welcome_mat_css>
|
260 |
|
261 |
<flag_parent>
|
262 |
-
<label>Flag
|
263 |
<comment>Enter the code provided to customize the location of the Welcome Mat flag, or leave blank to use the default location.</comment>
|
264 |
<frontend_type>text</frontend_type>
|
265 |
<sort_order>40</sort_order>
|
@@ -270,7 +270,7 @@
|
|
270 |
</flag_parent>
|
271 |
|
272 |
<!-- <flag_method>
|
273 |
-
<label>Flag
|
274 |
<comment>Enter the code provided to customize the location of the Welcome Mat flag, or leave blank to use the default location.</comment>
|
275 |
<frontend_type>select</frontend_type>
|
276 |
<source_model>iglobal_stores/system_config_source_dropdown_method</source_model>
|
@@ -319,7 +319,134 @@
|
|
319 |
</fields>
|
320 |
|
321 |
</igmat>
|
322 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
<igjq translate="label">
|
324 |
<label>jQuery Settings</label>
|
325 |
<frontend_type>text</frontend_type>
|
3 |
<config>
|
4 |
<tabs>
|
5 |
<iglobal translate="label" module="stores">
|
6 |
+
<label>iGlobal Stores</label>
|
7 |
<sort_order>150</sort_order>
|
8 |
</iglobal>
|
9 |
</tabs>
|
37 |
|
38 |
<sections>
|
39 |
<iglobal_integration translate="label" module="stores">
|
40 |
+
<label>iGlobal Integration</label>
|
41 |
<tab>iglobal</tab>
|
42 |
<frontend_type>text</frontend_type>
|
43 |
<sort_order>1000</sort_order>
|
107 |
|
108 |
<ice>
|
109 |
<label>ICE script</label>
|
110 |
+
<comment>Paste the provided link here. Please Be sure to include "https://" at the beginning.</comment>
|
111 |
<frontend_type>text</frontend_type>
|
112 |
<sort_order>50</sort_order>
|
113 |
<show_in_default>1</show_in_default>
|
259 |
</welcome_mat_css>
|
260 |
|
261 |
<flag_parent>
|
262 |
+
<label>Flag position selector</label>
|
263 |
<comment>Enter the code provided to customize the location of the Welcome Mat flag, or leave blank to use the default location.</comment>
|
264 |
<frontend_type>text</frontend_type>
|
265 |
<sort_order>40</sort_order>
|
270 |
</flag_parent>
|
271 |
|
272 |
<!-- <flag_method>
|
273 |
+
<label>Flag attachment method</label>
|
274 |
<comment>Enter the code provided to customize the location of the Welcome Mat flag, or leave blank to use the default location.</comment>
|
275 |
<frontend_type>select</frontend_type>
|
276 |
<source_model>iglobal_stores/system_config_source_dropdown_method</source_model>
|
319 |
</fields>
|
320 |
|
321 |
</igmat>
|
322 |
+
<ig_item_attribute translate="label">
|
323 |
+
<label>Cart Item Attribute Mapping</label>
|
324 |
+
<comment><![CDATA[ <div style="padding:10px;background-color:#fff;border:1px solid #ddd;margin-bottom:7px;">Map your existing and/or custom fields back to iGlobal for added product info and custom rules built around your store.</div>]]></comment>
|
325 |
+
<frontend_type>text</frontend_type>
|
326 |
+
<sort_order>19</sort_order>
|
327 |
+
<show_in_default>1</show_in_default>
|
328 |
+
<show_in_website>1</show_in_website>
|
329 |
+
<show_in_store>1</show_in_store>
|
330 |
+
<fields>
|
331 |
+
<weight translate="label">
|
332 |
+
<label>Weight</label>
|
333 |
+
<frontend_type>select</frontend_type>
|
334 |
+
<source_model>stores/configoptions</source_model>
|
335 |
+
<sort_order>1</sort_order>
|
336 |
+
<show_in_default>1</show_in_default>
|
337 |
+
<show_in_website>1</show_in_website>
|
338 |
+
<show_in_store>1</show_in_store>
|
339 |
+
</weight>
|
340 |
+
<length translate="label">
|
341 |
+
<label>Length</label>
|
342 |
+
<frontend_type>select</frontend_type>
|
343 |
+
<source_model>stores/configoptions</source_model>
|
344 |
+
<sort_order>2</sort_order>
|
345 |
+
<show_in_default>1</show_in_default>
|
346 |
+
<show_in_website>1</show_in_website>
|
347 |
+
<show_in_store>1</show_in_store>
|
348 |
+
</length>
|
349 |
+
<width translate="label">
|
350 |
+
<label>Width</label>
|
351 |
+
<frontend_type>select</frontend_type>
|
352 |
+
<source_model>stores/configoptions</source_model>
|
353 |
+
<sort_order>3</sort_order>
|
354 |
+
<show_in_default>1</show_in_default>
|
355 |
+
<show_in_website>1</show_in_website>
|
356 |
+
<show_in_store>1</show_in_store>
|
357 |
+
</width>
|
358 |
+
<height translate="label">
|
359 |
+
<label>Height</label>
|
360 |
+
<frontend_type>select</frontend_type>
|
361 |
+
<source_model>stores/configoptions</source_model>
|
362 |
+
<sort_order>4</sort_order>
|
363 |
+
<show_in_default>1</show_in_default>
|
364 |
+
<show_in_website>1</show_in_website>
|
365 |
+
<show_in_store>1</show_in_store>
|
366 |
+
</height>
|
367 |
+
<country_of_origin translate="label">
|
368 |
+
<label>Country of origin</label>
|
369 |
+
<frontend_type>select</frontend_type>
|
370 |
+
<source_model>stores/configoptions</source_model>
|
371 |
+
<sort_order>5</sort_order>
|
372 |
+
<show_in_default>1</show_in_default>
|
373 |
+
<show_in_website>1</show_in_website>
|
374 |
+
<show_in_store>1</show_in_store>
|
375 |
+
</country_of_origin>
|
376 |
+
<category translate="label">
|
377 |
+
<label>Category</label>
|
378 |
+
<frontend_type>select</frontend_type>
|
379 |
+
<source_model>stores/configoptions</source_model>
|
380 |
+
<sort_order>6</sort_order>
|
381 |
+
<show_in_default>1</show_in_default>
|
382 |
+
<show_in_website>1</show_in_website>
|
383 |
+
<show_in_store>1</show_in_store>
|
384 |
+
</category>
|
385 |
+
<brand translate="label">
|
386 |
+
<label>Brand</label>
|
387 |
+
<frontend_type>select</frontend_type>
|
388 |
+
<source_model>stores/configoptions</source_model>
|
389 |
+
<sort_order>13</sort_order>
|
390 |
+
<show_in_default>1</show_in_default>
|
391 |
+
<show_in_website>1</show_in_website>
|
392 |
+
<show_in_store>1</show_in_store>
|
393 |
+
</brand>
|
394 |
+
<hs_code translate="label">
|
395 |
+
<label>HS code</label>
|
396 |
+
<frontend_type>select</frontend_type>
|
397 |
+
<source_model>stores/configoptions</source_model>
|
398 |
+
<sort_order>8</sort_order>
|
399 |
+
<show_in_default>1</show_in_default>
|
400 |
+
<show_in_website>1</show_in_website>
|
401 |
+
<show_in_store>1</show_in_store>
|
402 |
+
</hs_code>
|
403 |
+
<customization translate="label">
|
404 |
+
<label>Customization</label>
|
405 |
+
<frontend_type>select</frontend_type>
|
406 |
+
<source_model>stores/configoptions</source_model>
|
407 |
+
<sort_order>14</sort_order>
|
408 |
+
<show_in_default>1</show_in_default>
|
409 |
+
<show_in_website>1</show_in_website>
|
410 |
+
<show_in_store>1</show_in_store>
|
411 |
+
</customization>
|
412 |
+
<color translate="label">
|
413 |
+
<label>Color</label>
|
414 |
+
<frontend_type>select</frontend_type>
|
415 |
+
<source_model>stores/configoptions</source_model>
|
416 |
+
<sort_order>10</sort_order>
|
417 |
+
<show_in_default>1</show_in_default>
|
418 |
+
<show_in_website>1</show_in_website>
|
419 |
+
<show_in_store>1</show_in_store>
|
420 |
+
</color>
|
421 |
+
<material translate="label">
|
422 |
+
<label>Material</label>
|
423 |
+
<frontend_type>select</frontend_type>
|
424 |
+
<source_model>stores/configoptions</source_model>
|
425 |
+
<sort_order>11</sort_order>
|
426 |
+
<show_in_default>1</show_in_default>
|
427 |
+
<show_in_website>1</show_in_website>
|
428 |
+
<show_in_store>1</show_in_store>
|
429 |
+
</material>
|
430 |
+
<status translate="label">
|
431 |
+
<label>Status</label>
|
432 |
+
<frontend_type>select</frontend_type>
|
433 |
+
<source_model>stores/configoptions</source_model>
|
434 |
+
<sort_order>12</sort_order>
|
435 |
+
<show_in_default>1</show_in_default>
|
436 |
+
<show_in_website>1</show_in_website>
|
437 |
+
<show_in_store>1</show_in_store>
|
438 |
+
</status>
|
439 |
+
<non_shippable translate="label">
|
440 |
+
<label>Non Shippable</label>
|
441 |
+
<frontend_type>select</frontend_type>
|
442 |
+
<source_model>stores/configoptions</source_model>
|
443 |
+
<sort_order>7</sort_order>
|
444 |
+
<show_in_default>1</show_in_default>
|
445 |
+
<show_in_website>1</show_in_website>
|
446 |
+
<show_in_store>1</show_in_store>
|
447 |
+
</non_shippable>
|
448 |
+
</fields>
|
449 |
+
</ig_item_attribute>
|
450 |
<igjq translate="label">
|
451 |
<label>jQuery Settings</label>
|
452 |
<frontend_type>text</frontend_type>
|
app/etc/modules/Iglobal_Ship.xml
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<config>
|
3 |
-
<modules>
|
4 |
-
<Iglobal_Ship>
|
5 |
-
<active>true</active>
|
6 |
-
<codePool>community</codePool>
|
7 |
-
</Iglobal_Ship>
|
8 |
-
</modules>
|
9 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/etc/modules/Iglobal_Stores.xml
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<config>
|
3 |
-
<modules>
|
4 |
-
<Iglobal_Stores>
|
5 |
-
|
6 |
-
<!-- Whether our module is active: true or false -->
|
7 |
-
<active>true</active>
|
8 |
-
|
9 |
-
<!-- Which code pool to use: core, community or local -->
|
10 |
-
<codePool>community</codePool>
|
11 |
-
|
12 |
-
</Iglobal_Stores>
|
13 |
-
</modules>
|
14 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
js/iGlobal/ig_welcome_mat_default.css
CHANGED
@@ -2,40 +2,73 @@
|
|
2 |
/* Authored by iGlobal Stores (www.iglobalstores.com) */
|
3 |
|
4 |
/* Google Fonts - If you're using your own fonts, you can remove these */
|
5 |
-
@
|
6 |
-
@
|
7 |
|
8 |
/* igFlag controls the placement of the country flag on your website */
|
9 |
#igFlag { width: 30px; }
|
10 |
-
#igFlag img { max-width: 25px; margin-bottom: -3px; cursor: pointer; margin-left: 5px;
|
|
|
|
|
|
|
11 |
|
12 |
/* Begin Modal Styles */
|
13 |
-
#igSplashElement {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
.closeButton { position: absolute; top: 3px; right: 3px; }
|
15 |
-
.close {
|
16 |
-
.
|
17 |
-
.
|
18 |
-
.
|
19 |
-
.
|
20 |
-
.
|
21 |
-
.
|
22 |
-
.
|
|
|
23 |
.headerTwo { color: #999; margin-top: 7px; font-size: 12px; }
|
24 |
-
.
|
25 |
-
.
|
26 |
-
|
|
|
|
|
27 |
select::-ms-expand { display: none; }
|
28 |
-
ul.featureList { padding:
|
29 |
-
ul.featureList li { list-style-type: none; padding:
|
30 |
-
ul.featureList li
|
31 |
-
|
32 |
-
.igWelcomeCTAButton {
|
33 |
-
.igWelcomeCTAButton button {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
@media screen and (max-width: 600px) { /* Responsive design sets a width of 400px for all devices <= 600px */
|
36 |
-
#igSplashElement { width:
|
37 |
-
.igModalHeader { width:
|
38 |
-
.logoWrapper { float: none; width: auto; }
|
39 |
-
.modalLogo { float: none; margin: 10px auto; }
|
40 |
.messageWrapper { clear: both; }
|
41 |
-
}
|
2 |
/* Authored by iGlobal Stores (www.iglobalstores.com) */
|
3 |
|
4 |
/* Google Fonts - If you're using your own fonts, you can remove these */
|
5 |
+
@import 'https://fonts.googleapis.com/css?family=Material+Icons';
|
6 |
+
@import 'https://fonts.googleapis.com/css?family=Roboto:100,300,400,400i,500,700,900';
|
7 |
|
8 |
/* igFlag controls the placement of the country flag on your website */
|
9 |
#igFlag { width: 30px; }
|
10 |
+
#igFlag img { max-width: 25px; margin-bottom: -3px; cursor: pointer; margin-left: 5px;}
|
11 |
+
|
12 |
+
/* Background blur effect */
|
13 |
+
body.welcome-mat-blur > *:not(#igSplashElement) { -webkit-filter: blur(8px); -moz-filter: blur(8px); -o-filter: blur(8px); -ms-filter: blur(8px); filter: blur(8px); }
|
14 |
|
15 |
/* Begin Modal Styles */
|
16 |
+
#igSplashElement {
|
17 |
+
position: absolute;
|
18 |
+
max-width: 500px;
|
19 |
+
background-color: #fff;
|
20 |
+
top: 50%;
|
21 |
+
left: 50%;
|
22 |
+
width: 100%;
|
23 |
+
-webkit-box-shadow: 0px 0px 60px 0px rgba(0, 0, 0, 0.5);
|
24 |
+
box-shadow: 0px 0px 60px 0px rgba(0, 0, 0, 0.5);
|
25 |
+
color: rgba(0,0,0,.87);
|
26 |
+
font-size: 14px;
|
27 |
+
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
28 |
+
/* The CSS below is for the opening and closing animation */
|
29 |
+
-webkit-transform: translateY(20%) translateX(-50%);
|
30 |
+
-moz-transform: translateY(20%) translateX(-50%);
|
31 |
+
-ms-transform: translateY(20%) translateX(-50%);
|
32 |
+
transform: translateY(20%) translateX(-50%);
|
33 |
+
opacity: 0;
|
34 |
+
-webkit-transition: all 0.3s;
|
35 |
+
-moz-transition: all 0.3s;
|
36 |
+
transition: all 0.3s;
|
37 |
+
z-index: 2001;
|
38 |
+
}
|
39 |
.closeButton { position: absolute; top: 3px; right: 3px; }
|
40 |
+
.close { padding: 5px 8px; background: #eee; text-align: right; }
|
41 |
+
.close i { cursor: pointer; }
|
42 |
+
.igModalHeader {background-color: #fff;text-align: center;color: rgba(0,0,0,.87);box-sizing: border-box;}
|
43 |
+
.logoWrapper { width: 100%; padding: 30px; text-align: center; float: none; border-bottom: 1px solid #eee; box-sizing: border-box; }
|
44 |
+
.messageWrapper { width: 100%; padding: 30px 30px 10px; box-sizing: border-box; }
|
45 |
+
.modalLogo { max-width: 100%; max-height: 160px; display: inline;}
|
46 |
+
.igModalHeader img.headerFlag {max-width: 50px;position: absolute;left: 5px;top: 5px;}
|
47 |
+
.headerZero { margin-bottom: 8px; font-size: 30px; font-weight: 600; margin-top:0; }
|
48 |
+
.headerOne {font-size: 30px;padding-left: 0.5em; /* Set the color of your choice here */text-transform: uppercase;font-weight: 600;}
|
49 |
.headerTwo { color: #999; margin-top: 7px; font-size: 12px; }
|
50 |
+
.countryP { font-size: 16px; text-transform: uppercase; }
|
51 |
+
.igModalBody {background-color: white;width: 100%;}
|
52 |
+
.countryDropDownWrapper {width: 100%;min-height: 25px;-webkit-border-radius: 2px;border-radius: 2px;background: #eee;border: 0px; /* Set the color of your choice here */margin: 0 auto;padding: 0px;cursor: pointer;position: relative;}
|
53 |
+
.countryDropDownWrapper i { position: absolute; right: 10px; top: 10px; color: rgba(0,0,0,.3); }
|
54 |
+
#countrySelect { width:100%; position: relative; box-shadow: 0px 0px 0px; padding: 10px 15px;margin: 0px;font-size: 14px;line-height: 14px;color: #333 !important;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;-o-user-select: none;user-select: none;background: none !important;border: 0 !important;-webkit-appearance: none;-moz-appearance: window;appearance: none;ms-appearance: none;overflow: hidden;height: 44px;text-align: center;text-align-last: center;}
|
55 |
select::-ms-expand { display: none; }
|
56 |
+
ul.featureList { padding: 30px; margin: 20px 0px 30px; background-color: #eee; display: none !important; }
|
57 |
+
ul.featureList li { list-style-type: none; padding: 5px 0px; }
|
58 |
+
ul.featureList li i { position: relative; top: 6px; }
|
59 |
+
.igWelcomeCTAButton { width: 100%;padding: 0px 30px 30px; box-sizing: border-box;}
|
60 |
+
.igWelcomeCTAButton button {width: 100%;height: 44px;-webkit-border-radius: 2px;border-radius: 2px;color: white;margin: 0 auto;border: none;font-size: 14px;font-weight: normal; background-color: #333;opacity: 1;text-shadow: none;float: none;text-transform: uppercase;text-align: center;}
|
61 |
+
.igWelcomeCTAButton button:hover { color: white; background-color: #666; opacity: 1; }
|
62 |
+
.modal-open {
|
63 |
+
-webkit-transform: translateY(-50%) translateX(-50%) !important;
|
64 |
+
-moz-transform: translateY(-50%) translateX(-50%) !important;
|
65 |
+
-ms-transform: translateY(-50%) translateX(-50%) !important;
|
66 |
+
transform: translateY(-50%) translateX(-50%) !important;
|
67 |
+
opacity: 1 !important;
|
68 |
+
}
|
69 |
|
70 |
@media screen and (max-width: 600px) { /* Responsive design sets a width of 400px for all devices <= 600px */
|
71 |
+
#igSplashElement { width: 95%; top: 10px; }
|
72 |
+
.igModalHeader { width: 100%; }
|
|
|
|
|
73 |
.messageWrapper { clear: both; }
|
74 |
+
}
|
js/iGlobal/ig_welcome_mat_default.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
// iGlobal Welcome Mat Script
|
2 |
// Authored by iGlobal Stores (www.iglobalstores.com)
|
3 |
-
// Copyright iGlobal Stores
|
4 |
|
5 |
//
|
6 |
// Store specific settings
|
@@ -15,7 +15,11 @@ var ig_logoUrl = ig_vars.storeLogo || "http://iglobalstores.com/images/iglobal-s
|
|
15 |
var ig_flagLocation = ig_vars.flag_parent || "body";
|
16 |
var ig_flagMethod = ig_vars.flag_method || "prepend";
|
17 |
var ig_flagCode = ig_vars.flag_code || '<div id="igFlag"></div>';
|
|
|
|
|
|
|
18 |
// Can set to existing $ on page, or can include Jquery here, and set igJq to jquery-no-conflict
|
|
|
19 |
igJq = jQuery;
|
20 |
|
21 |
igJq(function(){
|
@@ -36,16 +40,7 @@ igJq(function(){
|
|
36 |
}
|
37 |
});
|
38 |
|
39 |
-
|
40 |
-
// END Store specific settings
|
41 |
-
//
|
42 |
-
|
43 |
-
///////////////////////////////////////////////////////////////////////////////
|
44 |
-
|
45 |
-
//
|
46 |
-
// Begin jquery jsonp plugin
|
47 |
-
//
|
48 |
-
/*
|
49 |
* jQuery JSONP Core Plugin 2.4.0 (2012-08-21)
|
50 |
*
|
51 |
* https://github.com/jaubourg/jquery-jsonp
|
@@ -55,508 +50,21 @@ igJq(function(){
|
|
55 |
* This document is licensed as free software under the terms of the
|
56 |
* MIT License: http://www.opensource.org/licenses/mit-license.php
|
57 |
*/
|
58 |
-
( function(
|
59 |
-
|
60 |
-
// ###################### UTILITIES ##
|
61 |
-
|
62 |
-
// Noop
|
63 |
-
function noop() {
|
64 |
-
}
|
65 |
-
|
66 |
-
// Generic callback
|
67 |
-
function genericCallback( data ) {
|
68 |
-
lastValue = [ data ];
|
69 |
-
}
|
70 |
-
|
71 |
-
// Call if defined
|
72 |
-
function callIfDefined( method , object , parameters ) {
|
73 |
-
return method && method.apply( object.context || object , parameters );
|
74 |
-
}
|
75 |
-
|
76 |
-
// Give joining character given url
|
77 |
-
function qMarkOrAmp( url ) {
|
78 |
-
return /\?/ .test( url ) ? "&" : "?";
|
79 |
-
}
|
80 |
-
|
81 |
-
var // String constants (for better minification)
|
82 |
-
STR_ASYNC = "async",
|
83 |
-
STR_CHARSET = "charset",
|
84 |
-
STR_EMPTY = "",
|
85 |
-
STR_ERROR = "error",
|
86 |
-
STR_INSERT_BEFORE = "insertBefore",
|
87 |
-
STR_JQUERY_JSONP = "_jqjsp",
|
88 |
-
STR_ON = "on",
|
89 |
-
STR_ON_CLICK = STR_ON + "click",
|
90 |
-
STR_ON_ERROR = STR_ON + STR_ERROR,
|
91 |
-
STR_ON_LOAD = STR_ON + "load",
|
92 |
-
STR_ON_READY_STATE_CHANGE = STR_ON + "readystatechange",
|
93 |
-
STR_READY_STATE = "readyState",
|
94 |
-
STR_REMOVE_CHILD = "removeChild",
|
95 |
-
STR_SCRIPT_TAG = "<script>",
|
96 |
-
STR_SUCCESS = "success",
|
97 |
-
STR_TIMEOUT = "timeout",
|
98 |
-
|
99 |
-
// Window
|
100 |
-
win = window,
|
101 |
-
// Deferred
|
102 |
-
Deferred = igJq.Deferred,
|
103 |
-
// Head element
|
104 |
-
head = igJq( "head" )[ 0 ] || document.documentElement,
|
105 |
-
// Page cache
|
106 |
-
pageCache = {},
|
107 |
-
// Counter
|
108 |
-
count = 0,
|
109 |
-
// Last returned value
|
110 |
-
lastValue,
|
111 |
-
|
112 |
-
// ###################### DEFAULT OPTIONS ##
|
113 |
-
xOptionsDefaults = {
|
114 |
-
//beforeSend: undefined,
|
115 |
-
//cache: false,
|
116 |
-
callback: STR_JQUERY_JSONP,
|
117 |
-
//callbackParameter: undefined,
|
118 |
-
//charset: undefined,
|
119 |
-
//complete: undefined,
|
120 |
-
//context: undefined,
|
121 |
-
//data: "",
|
122 |
-
//dataFilter: undefined,
|
123 |
-
//error: undefined,
|
124 |
-
//pageCache: false,
|
125 |
-
//success: undefined,
|
126 |
-
//timeout: 0,
|
127 |
-
//traditional: false,
|
128 |
-
url: location.href
|
129 |
-
},
|
130 |
-
|
131 |
-
// opera demands sniffing :/
|
132 |
-
opera = win.opera,
|
133 |
-
|
134 |
-
// IE < 10
|
135 |
-
oldIE = !!igJq( "<div>" ).html( "<!--[if IE]><i><![endif]-->" ).find("i").length;
|
136 |
-
|
137 |
-
// ###################### MAIN FUNCTION ##
|
138 |
-
function jsonp( xOptions ) {
|
139 |
-
|
140 |
-
// Build data with default
|
141 |
-
xOptions = igJq.extend( {} , xOptionsDefaults , xOptions );
|
142 |
-
|
143 |
-
// References to xOptions members (for better minification)
|
144 |
-
var successCallback = xOptions.success,
|
145 |
-
errorCallback = xOptions.error,
|
146 |
-
completeCallback = xOptions.complete,
|
147 |
-
dataFilter = xOptions.dataFilter,
|
148 |
-
callbackParameter = xOptions.callbackParameter,
|
149 |
-
successCallbackName = xOptions.callback,
|
150 |
-
cacheFlag = xOptions.cache,
|
151 |
-
pageCacheFlag = xOptions.pageCache,
|
152 |
-
charset = xOptions.charset,
|
153 |
-
url = xOptions.url,
|
154 |
-
data = xOptions.data,
|
155 |
-
timeout = xOptions.timeout,
|
156 |
-
pageCached,
|
157 |
-
|
158 |
-
// Abort/done flag
|
159 |
-
done = 0,
|
160 |
-
|
161 |
-
// Life-cycle functions
|
162 |
-
cleanUp = noop,
|
163 |
-
|
164 |
-
// Support vars
|
165 |
-
supportOnload,
|
166 |
-
supportOnreadystatechange,
|
167 |
-
|
168 |
-
// Request execution vars
|
169 |
-
firstChild,
|
170 |
-
script,
|
171 |
-
scriptAfter,
|
172 |
-
timeoutTimer;
|
173 |
-
|
174 |
-
// If we have Deferreds:
|
175 |
-
// - substitute callbacks
|
176 |
-
// - promote xOptions to a promise
|
177 |
-
Deferred && Deferred(function( defer ) {
|
178 |
-
defer.done( successCallback ).fail( errorCallback );
|
179 |
-
successCallback = defer.resolve;
|
180 |
-
errorCallback = defer.reject;
|
181 |
-
}).promise( xOptions );
|
182 |
-
|
183 |
-
// Create the abort method
|
184 |
-
xOptions.abort = function() {
|
185 |
-
!( done++ ) && cleanUp();
|
186 |
-
};
|
187 |
-
|
188 |
-
// Call beforeSend if provided (early abort if false returned)
|
189 |
-
if ( callIfDefined( xOptions.beforeSend , xOptions , [ xOptions ] ) === !1 || done ) {
|
190 |
-
return xOptions;
|
191 |
-
}
|
192 |
-
|
193 |
-
// Control entries
|
194 |
-
url = url || STR_EMPTY;
|
195 |
-
data = data ? ( (typeof data) == "string" ? data : igJq.param( data , xOptions.traditional ) ) : STR_EMPTY;
|
196 |
-
|
197 |
-
// Build final url
|
198 |
-
url += data ? ( qMarkOrAmp( url ) + data ) : STR_EMPTY;
|
199 |
-
|
200 |
-
// Add callback parameter if provided as option
|
201 |
-
callbackParameter && ( url += qMarkOrAmp( url ) + encodeURIComponent( callbackParameter ) + "=?" );
|
202 |
-
|
203 |
-
// Add anticache parameter if needed
|
204 |
-
!cacheFlag && !pageCacheFlag && ( url += qMarkOrAmp( url ) + "_" + ( new Date() ).getTime() + "=" );
|
205 |
-
|
206 |
-
// Replace last ? by callback parameter
|
207 |
-
url = url.replace( /=\?(&|$)/ , "=" + successCallbackName + "$1" );
|
208 |
-
|
209 |
-
// Success notifier
|
210 |
-
function notifySuccess( json ) {
|
211 |
-
|
212 |
-
if ( !( done++ ) ) {
|
213 |
-
|
214 |
-
cleanUp();
|
215 |
-
// Pagecache if needed
|
216 |
-
pageCacheFlag && ( pageCache [ url ] = { s: [ json ] } );
|
217 |
-
// Apply the data filter if provided
|
218 |
-
dataFilter && ( json = dataFilter.apply( xOptions , [ json ] ) );
|
219 |
-
// Call success then complete
|
220 |
-
callIfDefined( successCallback , xOptions , [ json , STR_SUCCESS, xOptions ] );
|
221 |
-
callIfDefined( completeCallback , xOptions , [ xOptions , STR_SUCCESS ] );
|
222 |
-
|
223 |
-
}
|
224 |
-
}
|
225 |
-
|
226 |
-
// Error notifier
|
227 |
-
function notifyError( type ) {
|
228 |
-
|
229 |
-
if ( !( done++ ) ) {
|
230 |
-
|
231 |
-
// Clean up
|
232 |
-
cleanUp();
|
233 |
-
// If pure error (not timeout), cache if needed
|
234 |
-
pageCacheFlag && type != STR_TIMEOUT && ( pageCache[ url ] = type );
|
235 |
-
// Call error then complete
|
236 |
-
callIfDefined( errorCallback , xOptions , [ xOptions , type ] );
|
237 |
-
callIfDefined( completeCallback , xOptions , [ xOptions , type ] );
|
238 |
-
|
239 |
-
}
|
240 |
-
}
|
241 |
-
|
242 |
-
// Check page cache
|
243 |
-
if ( pageCacheFlag && ( pageCached = pageCache[ url ] ) ) {
|
244 |
-
|
245 |
-
pageCached.s ? notifySuccess( pageCached.s[ 0 ] ) : notifyError( pageCached );
|
246 |
-
|
247 |
-
} else {
|
248 |
-
|
249 |
-
// Install the generic callback
|
250 |
-
// (BEWARE: global namespace pollution ahoy)
|
251 |
-
win[ successCallbackName ] = genericCallback;
|
252 |
-
|
253 |
-
// Create the script tag
|
254 |
-
script = igJq( STR_SCRIPT_TAG )[ 0 ];
|
255 |
-
script.id = STR_JQUERY_JSONP + count++;
|
256 |
-
|
257 |
-
// Set charset if provided
|
258 |
-
if ( charset ) {
|
259 |
-
script[ STR_CHARSET ] = charset;
|
260 |
-
}
|
261 |
-
|
262 |
-
opera && opera.version() < 11.60 ?
|
263 |
-
// onerror is not supported: do not set as async and assume in-order execution.
|
264 |
-
// Add a trailing script to emulate the event
|
265 |
-
( ( scriptAfter = igJq( STR_SCRIPT_TAG )[ 0 ] ).text = "document.getElementById('" + script.id + "')." + STR_ON_ERROR + "()" )
|
266 |
-
:
|
267 |
-
// onerror is supported: set the script as async to avoid requests blocking each others
|
268 |
-
( script[ STR_ASYNC ] = STR_ASYNC )
|
269 |
-
|
270 |
-
;
|
271 |
-
|
272 |
-
// Internet Explorer: event/htmlFor trick
|
273 |
-
if ( oldIE ) {
|
274 |
-
script.htmlFor = script.id;
|
275 |
-
script.event = STR_ON_CLICK;
|
276 |
-
}
|
277 |
-
|
278 |
-
// Attached event handlers
|
279 |
-
script[ STR_ON_LOAD ] = script[ STR_ON_ERROR ] = script[ STR_ON_READY_STATE_CHANGE ] = function ( result ) {
|
280 |
-
|
281 |
-
// Test readyState if it exists
|
282 |
-
if ( !script[ STR_READY_STATE ] || !/i/.test( script[ STR_READY_STATE ] ) ) {
|
283 |
-
|
284 |
-
try {
|
285 |
-
|
286 |
-
script[ STR_ON_CLICK ] && script[ STR_ON_CLICK ]();
|
287 |
-
|
288 |
-
} catch( _ ) {}
|
289 |
-
|
290 |
-
result = lastValue;
|
291 |
-
lastValue = 0;
|
292 |
-
result ? notifySuccess( result[ 0 ] ) : notifyError( STR_ERROR );
|
293 |
-
|
294 |
-
}
|
295 |
-
};
|
296 |
-
|
297 |
-
// Set source
|
298 |
-
script.src = url;
|
299 |
-
|
300 |
-
// Re-declare cleanUp function
|
301 |
-
cleanUp = function( i ) {
|
302 |
-
timeoutTimer && clearTimeout( timeoutTimer );
|
303 |
-
script[ STR_ON_READY_STATE_CHANGE ] = script[ STR_ON_LOAD ] = script[ STR_ON_ERROR ] = null;
|
304 |
-
head[ STR_REMOVE_CHILD ]( script );
|
305 |
-
scriptAfter && head[ STR_REMOVE_CHILD ]( scriptAfter );
|
306 |
-
};
|
307 |
-
|
308 |
-
// Append main script
|
309 |
-
head[ STR_INSERT_BEFORE ]( script , ( firstChild = head.firstChild ) );
|
310 |
-
|
311 |
-
// Append trailing script if needed
|
312 |
-
scriptAfter && head[ STR_INSERT_BEFORE ]( scriptAfter , firstChild );
|
313 |
-
|
314 |
-
// If a timeout is needed, install it
|
315 |
-
timeoutTimer = timeout > 0 && setTimeout( function() {
|
316 |
-
notifyError( STR_TIMEOUT );
|
317 |
-
} , timeout );
|
318 |
-
|
319 |
-
}
|
320 |
|
321 |
-
return xOptions;
|
322 |
-
}
|
323 |
-
|
324 |
-
// ###################### SETUP FUNCTION ##
|
325 |
-
jsonp.setup = function( xOptions ) {
|
326 |
-
igJq.extend( xOptionsDefaults , xOptions );
|
327 |
-
};
|
328 |
-
|
329 |
-
// ###################### INSTALL in jQuery ##
|
330 |
-
igJq.jsonp = jsonp;
|
331 |
-
|
332 |
-
} )( igJq );
|
333 |
-
//
|
334 |
-
// End jquery jsonp plugin
|
335 |
-
//
|
336 |
-
|
337 |
-
//
|
338 |
-
// Begin embedded easyModal.js
|
339 |
-
//
|
340 |
/**
|
341 |
* easyModal.js v1.1.0
|
342 |
* A minimal jQuery modal that works with your CSS.
|
343 |
* Author: Flavius Matis - http://flaviusmatis.github.com/
|
344 |
* URL: https://github.com/flaviusmatis/easyModal.js
|
345 |
*/
|
|
|
346 |
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
var defaults = {
|
353 |
-
top: '100',
|
354 |
-
autoOpen: false,
|
355 |
-
overlayOpacity: 0.5,
|
356 |
-
overlayColor: '#000',
|
357 |
-
overlayClose: true,
|
358 |
-
overlayParent: 'body',
|
359 |
-
closeOnEscape: true,
|
360 |
-
closeButtonClass: '.close',
|
361 |
-
onOpen: false,
|
362 |
-
onClose: false
|
363 |
-
};
|
364 |
-
|
365 |
-
options = igJq.extend(defaults, options);
|
366 |
-
|
367 |
-
return this.each(function() {
|
368 |
-
|
369 |
-
var o = options;
|
370 |
-
|
371 |
-
var $overlay = igJq('<div class="lean-overlay"></div>');
|
372 |
-
|
373 |
-
$overlay.css({
|
374 |
-
'display': 'none',
|
375 |
-
'position': 'fixed',
|
376 |
-
'z-index': 2000,
|
377 |
-
'top': 0,
|
378 |
-
'left': 0,
|
379 |
-
'height': 100 + '%',
|
380 |
-
'width': 100+ '%',
|
381 |
-
'background': o.overlayColor,
|
382 |
-
'opacity': o.overlayOpacity
|
383 |
-
}).appendTo(o.overlayParent);
|
384 |
-
|
385 |
-
var $modal = igJq(this);
|
386 |
-
|
387 |
-
$modal.css({
|
388 |
-
'display': 'none',
|
389 |
-
'position' : 'absolute',
|
390 |
-
'z-index': 2001,
|
391 |
-
'left' : 50 + '%',
|
392 |
-
'top' : parseInt(o.top) > -1 ? o.top + 'px' : 50 + '%'
|
393 |
-
});
|
394 |
-
|
395 |
-
$modal.bind('openModal', function(){
|
396 |
-
igJq(this).css({
|
397 |
-
'display' : 'block',
|
398 |
-
'margin-left' : -($modal.outerWidth()/2) + 'px',
|
399 |
-
'margin-top' : (parseInt(o.top) > -1 ? 0 : -($modal.outerHeight()/2)) + 'px'
|
400 |
-
});
|
401 |
-
$overlay.fadeIn(200, function(){
|
402 |
-
if (o.onOpen && typeof (o.onOpen) === 'function') {
|
403 |
-
// onOpen callback receives as argument the modal window
|
404 |
-
o.onOpen($modal[0]);
|
405 |
-
}
|
406 |
-
});
|
407 |
-
});
|
408 |
-
|
409 |
-
$modal.bind('closeModal', function(){
|
410 |
-
igJq(this).css('display', 'none');
|
411 |
-
$overlay.fadeOut(200, function(){
|
412 |
-
if (o.onClose && typeof(o.onClose) === 'function') {
|
413 |
-
// onClose callback receives as argument the modal window
|
414 |
-
o.onClose($modal[0]);
|
415 |
-
}
|
416 |
-
});
|
417 |
-
});
|
418 |
-
|
419 |
-
// Close on overlay click
|
420 |
-
$overlay.click(function() {
|
421 |
-
if (o.overlayClose)
|
422 |
-
$modal.trigger('closeModal');
|
423 |
-
});
|
424 |
-
|
425 |
-
igJq(document).keydown(function(e) {
|
426 |
-
// ESCAPE key pressed
|
427 |
-
if (o.closeOnEscape && e.keyCode == 27) {
|
428 |
-
$modal.trigger('closeModal');
|
429 |
-
}
|
430 |
-
});
|
431 |
-
|
432 |
-
// Close when button pressed
|
433 |
-
$modal.on('click', o.closeButtonClass, function(e) {
|
434 |
-
$modal.trigger('closeModal');
|
435 |
-
e.preventDefault();
|
436 |
-
});
|
437 |
-
|
438 |
-
// Automatically open modal if option set
|
439 |
-
if (o.autoOpen)
|
440 |
-
$modal.trigger('openModal');
|
441 |
-
|
442 |
-
});
|
443 |
-
|
444 |
-
}
|
445 |
-
};
|
446 |
-
|
447 |
-
igJq.fn.easyModal = function(method) {
|
448 |
-
|
449 |
-
// Method calling logic
|
450 |
-
if (methods[method]) {
|
451 |
-
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
452 |
-
} else if (typeof method === 'object' || ! method) {
|
453 |
-
return methods.init.apply(this, arguments);
|
454 |
-
} else {
|
455 |
-
igJq.error('Method ' + method + ' does not exist on jQuery.easyModal');
|
456 |
-
}
|
457 |
-
|
458 |
-
};
|
459 |
-
|
460 |
-
})(igJq);
|
461 |
-
//
|
462 |
-
// End embedded easyModal.js
|
463 |
-
//
|
464 |
-
|
465 |
-
|
466 |
-
//
|
467 |
-
// Begin embedded jquery cookie plugin, for readying and writing cookies easily
|
468 |
-
//
|
469 |
-
(function (factory) {
|
470 |
-
if (typeof define === 'function' && define.amd) {
|
471 |
-
// AMD. Register as anonymous module.
|
472 |
-
define(['jquery'], factory);
|
473 |
-
} else {
|
474 |
-
// Browser globals.
|
475 |
-
factory(igJq);
|
476 |
-
}
|
477 |
-
}(function (igJq) {
|
478 |
-
|
479 |
-
var pluses = /\+/g;
|
480 |
-
|
481 |
-
function raw(s) {
|
482 |
-
return s;
|
483 |
-
}
|
484 |
-
|
485 |
-
function decoded(s) {
|
486 |
-
return decodeURIComponent(s.replace(pluses, ' '));
|
487 |
-
}
|
488 |
-
|
489 |
-
function converted(s) {
|
490 |
-
if (s.indexOf('"') === 0) {
|
491 |
-
// This is a quoted cookie as according to RFC2068, unescape
|
492 |
-
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
493 |
-
}
|
494 |
-
try {
|
495 |
-
return config.json ? JSON.parse(s) : s;
|
496 |
-
} catch(er) {}
|
497 |
-
}
|
498 |
|
499 |
-
var config = igJq.cookie = function (key, value, options) {
|
500 |
-
|
501 |
-
// write
|
502 |
-
if (value !== undefined) {
|
503 |
-
options = igJq.extend({}, config.defaults, options);
|
504 |
-
|
505 |
-
if (typeof options.expires === 'number') {
|
506 |
-
var days = options.expires, t = options.expires = new Date();
|
507 |
-
t.setDate(t.getDate() + days);
|
508 |
-
}
|
509 |
-
|
510 |
-
value = config.json ? JSON.stringify(value) : String(value);
|
511 |
-
|
512 |
-
return (document.cookie = [
|
513 |
-
config.raw ? key : encodeURIComponent(key),
|
514 |
-
'=',
|
515 |
-
config.raw ? value : encodeURIComponent(value),
|
516 |
-
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
517 |
-
options.path ? '; path=' + options.path : '',
|
518 |
-
options.domain ? '; domain=' + options.domain : '',
|
519 |
-
options.secure ? '; secure' : ''
|
520 |
-
].join(''));
|
521 |
-
}
|
522 |
-
|
523 |
-
// read
|
524 |
-
var decode = config.raw ? raw : decoded;
|
525 |
-
var cookies = document.cookie.split('; ');
|
526 |
-
var result = key ? undefined : {};
|
527 |
-
for (var i = 0, l = cookies.length; i < l; i++) {
|
528 |
-
var parts = cookies[i].split('=');
|
529 |
-
var name = decode(parts.shift());
|
530 |
-
var cookie = decode(parts.join('='));
|
531 |
-
|
532 |
-
if (key && key === name) {
|
533 |
-
result = converted(cookie);
|
534 |
-
break;
|
535 |
-
}
|
536 |
-
|
537 |
-
if (!key) {
|
538 |
-
result[name] = converted(cookie);
|
539 |
-
}
|
540 |
-
}
|
541 |
-
|
542 |
-
return result;
|
543 |
-
};
|
544 |
-
|
545 |
-
config.defaults = {};
|
546 |
-
|
547 |
-
igJq.removeCookie = function (key, options) {
|
548 |
-
if (igJq.cookie(key) !== undefined) {
|
549 |
-
// Must not alter options, thus extending a fresh object...
|
550 |
-
igJq.cookie(key, '', igJq.extend({}, options, { expires: -1 }));
|
551 |
-
return true;
|
552 |
-
}
|
553 |
-
return false;
|
554 |
-
};
|
555 |
-
|
556 |
-
}));
|
557 |
-
//
|
558 |
-
// End embedded jquery cookie plugin, for readying and writing cookies easily
|
559 |
-
//
|
560 |
|
561 |
|
562 |
//
|
@@ -566,12 +74,12 @@ igJq(function(){
|
|
566 |
function ig_getParameterByName(name) {
|
567 |
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
568 |
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
569 |
-
|
570 |
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
571 |
}
|
572 |
|
573 |
function ig_createSplashHtml() {
|
574 |
-
var ig_splashHtml = '<div id="igSplashElement" style="
|
575 |
ig_splashHtml += ig_createSplashContentsHtml();
|
576 |
ig_splashHtml += '</div><!--/#igSplashElement -->';
|
577 |
return ig_splashHtml;
|
@@ -579,60 +87,59 @@ function ig_createSplashHtml() {
|
|
579 |
|
580 |
function ig_createSplashContentsHtml() { // Feel free to edit the HTML below to match your site
|
581 |
var ig_splashHtml = '' +
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
|
|
|
|
606 |
|
607 |
if (ig_isDomesticCountry()) {
|
608 |
-
|
609 |
-
|
610 |
-
'<ul class="featureList">' +
|
611 |
-
'<div class="igFeatureHeader">Welcome to our website!</div>' +
|
612 |
-
'</ul>';
|
613 |
} else {
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
}
|
628 |
|
629 |
ig_splashHtml += '' +
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
|
637 |
return ig_splashHtml;
|
638 |
}
|
@@ -651,39 +158,42 @@ function ig_showTheSplash() {
|
|
651 |
|
652 |
//init easyModal.js modal, after modal content was placed on the page (line above)
|
653 |
igJq("#igSplashElement").easyModal({
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
|
|
|
|
659 |
});
|
660 |
|
661 |
//Fire the modal!
|
662 |
igJq("#igSplashElement").trigger('openModal');
|
|
|
|
|
663 |
|
664 |
//Set cookie for Splash shown
|
665 |
if (ig_validateCountryCode(igJq.cookie("igCountry"))) { // Only set the splashShown cookie, if there is a valid countryCookie
|
666 |
-
|
667 |
}
|
668 |
}
|
669 |
-
|
670 |
function ig_createNestContents() {
|
671 |
-
return '<img onclick="ig_showTheSplash();" src="https://d1vyngmisxigjx.cloudfront.net/images/flags/96x64/'+((ig_country)?ig_country.toUpperCase():'
|
672 |
}
|
673 |
|
674 |
function ig_placeNestHtml() {
|
675 |
igJq(function(){
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
});
|
680 |
}
|
681 |
|
682 |
function ig_setCountry(country) {
|
683 |
ig_country = country;
|
684 |
if (ig_country) {
|
685 |
-
|
686 |
-
|
687 |
}
|
688 |
ig_placeNestHtml();
|
689 |
}
|
@@ -700,9 +210,9 @@ function ig_validateCountryCode(countryCode) {
|
|
700 |
//Return the country code if valid, return null if not valid
|
701 |
var countryDisplayName = ig_countries[countryCode];
|
702 |
if (typeof countryDisplayName !== 'undefined' && countryDisplayName) {
|
703 |
-
|
704 |
} else {
|
705 |
-
|
706 |
}
|
707 |
}
|
708 |
|
@@ -722,37 +232,31 @@ function ig_detectCountryCallbackError() { // Error handling method for when the
|
|
722 |
|
723 |
function ig_detectCountry() {
|
724 |
igJq.jsonp({
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
});
|
730 |
}
|
731 |
|
732 |
function ig_pingIglobal() {
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
}
|
740 |
-
} catch (err) {
|
741 |
-
// do nothing
|
742 |
}
|
|
|
|
|
|
|
743 |
}
|
744 |
|
745 |
-
//function ig_errorPingIglobal() {
|
746 |
-
// console.log("Couldn't update iGlobal");
|
747 |
-
//}
|
748 |
-
|
749 |
function ig_finishLoading() {
|
750 |
ig_placeNestHtml();
|
751 |
if (!ig_isDomesticCountry() && (!ig_splashCookie || !ig_country || ig_countryParam)) {
|
752 |
-
|
753 |
}
|
754 |
-
//Removed to avoid circular onReady dependency with iCE Script
|
755 |
-
// ig_alertIceOfCountryChange();
|
756 |
ig_pingIglobal();
|
757 |
}
|
758 |
|
@@ -777,3 +281,39 @@ if (!ig_country) {
|
|
777 |
} else { // else go with whatever country we have, even no country
|
778 |
ig_finishLoading();
|
779 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
// iGlobal Welcome Mat Script
|
2 |
// Authored by iGlobal Stores (www.iglobalstores.com)
|
3 |
+
// Copyright iGlobal Stores 2016
|
4 |
|
5 |
//
|
6 |
// Store specific settings
|
15 |
var ig_flagLocation = ig_vars.flag_parent || "body";
|
16 |
var ig_flagMethod = ig_vars.flag_method || "prepend";
|
17 |
var ig_flagCode = ig_vars.flag_code || '<div id="igFlag"></div>';
|
18 |
+
var ig_nestElementId = "igFlag";
|
19 |
+
//
|
20 |
+
// Set internal JQuery Variable
|
21 |
// Can set to existing $ on page, or can include Jquery here, and set igJq to jquery-no-conflict
|
22 |
+
//
|
23 |
igJq = jQuery;
|
24 |
|
25 |
igJq(function(){
|
40 |
}
|
41 |
});
|
42 |
|
43 |
+
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
* jQuery JSONP Core Plugin 2.4.0 (2012-08-21)
|
45 |
*
|
46 |
* https://github.com/jaubourg/jquery-jsonp
|
50 |
* This document is licensed as free software under the terms of the
|
51 |
* MIT License: http://www.opensource.org/licenses/mit-license.php
|
52 |
*/
|
53 |
+
!function(e){function t(){}function n(e){r=[e]}function c(e,t,n){return e&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function o(o){function m(e){V++||(W(),L&&(I[N]={s:[e]}),A&&(e=A.apply(o,[e])),c(R,o,[e,k,o]),c(z,o,[o,k]))}function F(e){V++||(W(),L&&e!=x&&(I[N]=e),c(U,o,[o,e]),c(z,o,[o,e]))}o=e.extend({},q,o);var S,$,_,J,P,R=o.success,U=o.error,z=o.complete,A=o.dataFilter,G=o.callbackParameter,H=o.callback,K=o.cache,L=o.pageCache,M=o.charset,N=o.url,O=o.data,Q=o.timeout,V=0,W=t;return w&&w(function(e){e.done(R).fail(U),R=e.resolve,U=e.reject}).promise(o),o.abort=function(){!V++&&W()},c(o.beforeSend,o,[o])===!1||V?o:(N=N||l,O=O?"string"==typeof O?O:e.param(O,o.traditional):l,N+=O?i(N)+O:l,G&&(N+=i(N)+encodeURIComponent(G)+"=?"),!K&&!L&&(N+=i(N)+"_"+(new Date).getTime()+"="),N=N.replace(/=\?(&|$)/,"="+H+"$1"),L&&(S=I[N])?S.s?m(S.s[0]):F(S):(C[H]=n,_=e(j)[0],_.id=f+T++,M&&(_[u]=M),B&&B.version()<11.6?(J=e(j)[0]).text="document.getElementById('"+_.id+"')."+h+"()":_[a]=a,D&&(_.htmlFor=_.id,_.event=p),_[y]=_[h]=_[g]=function(e){if(!_[v]||!/i/.test(_[v])){try{_[p]&&_[p]()}catch(t){}e=r,r=0,e?m(e[0]):F(s)}},_.src=N,W=function(e){P&&clearTimeout(P),_[g]=_[y]=_[h]=null,E[b](_),J&&E[b](J)},E[d](_,$=E.firstChild),J&&E[d](J,$),P=Q>0&&setTimeout(function(){F(x)},Q)),o)}var r,a="async",u="charset",l="",s="error",d="insertBefore",f="_jqjsp",m="on",p=m+"click",h=m+s,y=m+"load",g=m+"readystatechange",v="readyState",b="removeChild",j="<script>",k="success",x="timeout",C=window,w=e.Deferred,E=e("head")[0]||document.documentElement,I={},T=0,q={callback:f,url:location.href},B=C.opera,D=!!e("<div>").html("<!--[if IE]><i><![endif]-->").find("i").length;o.setup=function(t){e.extend(q,t)},e.jsonp=o}(igJq);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
/**
|
56 |
* easyModal.js v1.1.0
|
57 |
* A minimal jQuery modal that works with your CSS.
|
58 |
* Author: Flavius Matis - http://flaviusmatis.github.com/
|
59 |
* URL: https://github.com/flaviusmatis/easyModal.js
|
60 |
*/
|
61 |
+
!function(o){var e={init:function(e){var n={top:"100",autoOpen:!1,overlayOpacity:.7,overlayColor:"#9aa0a3",overlayClose:!0,overlayParent:"body",closeOnEscape:!0,closeButtonClass:".close",onOpen:!1,onClose:!1};return e=o.extend(n,e),this.each(function(){var n=e,t=o('<div class="lean-overlay"></div>');t.css({display:"none",position:"fixed","z-index":2e3,top:0,left:0,height:"100%",width:"100%",background:n.overlayColor,opacity:n.overlayOpacity}).appendTo(n.overlayParent);var a=o(this);a.css({opacity:"0"}),a.bind("openModal",function(){o(this).css({opacity:"1"}),t.fadeIn(200,function(){n.onOpen&&"function"==typeof n.onOpen&&n.onOpen(a[0])})}),a.bind("closeModal",function(){o(this).css("opacity","0"),t.fadeOut(200,function(){n.onClose&&"function"==typeof n.onClose&&n.onClose(a[0])})}),t.click(function(){n.overlayClose&&a.trigger("closeModal")}),o(document).keydown(function(o){n.closeOnEscape&&27==o.keyCode&&a.trigger("closeModal")}),a.on("click",n.closeButtonClass,function(o){a.trigger("closeModal"),o.preventDefault()}),n.autoOpen&&a.trigger("openModal")})}};o.fn.easyModal=function(n){return e[n]?e[n].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof n&&n?void o.error("Method "+n+" does not exist on jQuery.easyModal"):e.init.apply(this,arguments)}}(igJq);
|
62 |
|
63 |
+
/**
|
64 |
+
* Begin embedded jquery cookie plugin, for readying and writing cookies easily
|
65 |
+
*/
|
66 |
+
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(igJq)}(function(e){function n(e){return e}function o(e){return decodeURIComponent(e.replace(t," "))}function i(e){0===e.indexOf('"')&&(e=e.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return r.json?JSON.parse(e):e}catch(n){}}var t=/\+/g,r=e.cookie=function(t,c,a){if(void 0!==c){if(a=e.extend({},r.defaults,a),"number"==typeof a.expires){var f=a.expires,u=a.expires=new Date;u.setDate(u.getDate()+f)}return c=r.json?JSON.stringify(c):String(c),document.cookie=[r.raw?t:encodeURIComponent(t),"=",r.raw?c:encodeURIComponent(c),a.expires?"; expires="+a.expires.toUTCString():"",a.path?"; path="+a.path:"",a.domain?"; domain="+a.domain:"",a.secure?"; secure":""].join("")}for(var d=r.raw?n:o,p=document.cookie.split("; "),s=t?void 0:{},m=0,x=p.length;x>m;m++){var g=p[m].split("="),l=d(g.shift()),v=d(g.join("="));if(t&&t===l){s=i(v);break}t||(s[l]=i(v))}return s};r.defaults={},e.removeCookie=function(n,o){return void 0!==e.cookie(n)?(e.cookie(n,"",e.extend({},o,{expires:-1})),!0):!1}});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
|
70 |
//
|
74 |
function ig_getParameterByName(name) {
|
75 |
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
76 |
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
77 |
+
results = regex.exec(location.search);
|
78 |
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
79 |
}
|
80 |
|
81 |
function ig_createSplashHtml() {
|
82 |
+
var ig_splashHtml = '<div id="igSplashElement" class="modal-open" style="opacity: 0;">';
|
83 |
ig_splashHtml += ig_createSplashContentsHtml();
|
84 |
ig_splashHtml += '</div><!--/#igSplashElement -->';
|
85 |
return ig_splashHtml;
|
87 |
|
88 |
function ig_createSplashContentsHtml() { // Feel free to edit the HTML below to match your site
|
89 |
var ig_splashHtml = '' +
|
90 |
+
'<div class="close">' +
|
91 |
+
'<i class="material-icons"></i>' +
|
92 |
+
'</div>' +
|
93 |
+
'<div class="igModalHeader">' +
|
94 |
+
'<div class="logoWrapper">' +
|
95 |
+
'<img class="modalLogo" src="'+ig_logoUrl+'" alt="" />' +
|
96 |
+
'</div><!--/.logoWrapper -->' +
|
97 |
+
'<div class="messageWrapper">' +
|
98 |
+
'<p class="headerZero">Hello!</p>' +
|
99 |
+
'<p class="countryP">Select your country</p> ' +
|
100 |
+
'<div class="countryDropDownWrapper">' +
|
101 |
+
'<img src="https://d1vyngmisxigjx.cloudfront.net/images/flags/96x64/'+((ig_country)?ig_country.toUpperCase():'undefined')+'.png" alt="Flag of '+ig_countries[ig_country]+'" class="headerFlag">' +
|
102 |
+
'<i class="material-icons"></i>' +
|
103 |
+
'<select id="countrySelect" class=".coreUISelect" onchange="ig_countrySelected();"> ' +
|
104 |
+
'<option value="">Select your country</option>';
|
105 |
+
|
106 |
+
for(var countryCode in ig_countries){
|
107 |
+
ig_splashHtml += '<option '+((countryCode===ig_country)?'selected="selected" ':'')+'value="'+countryCode+'">'+ig_countries[countryCode]+'</option>';
|
108 |
+
}
|
109 |
+
|
110 |
+
ig_splashHtml += '' +
|
111 |
+
'</select>' +
|
112 |
+
'</div><!--/.countryDropDownWrapper -->' +
|
113 |
+
'</div><!--/.messageWrapper -->' +
|
114 |
+
'</div><!--/.igModalHeader -->' +
|
115 |
+
'<div class="igModalBody">';
|
116 |
|
117 |
if (ig_isDomesticCountry()) {
|
118 |
+
//Don't show international shopping features
|
119 |
+
|
|
|
|
|
|
|
120 |
} else {
|
121 |
+
//Show international shopping features
|
122 |
+
ig_splashHtml += ''+
|
123 |
+
'<ul class="featureList">' +
|
124 |
+
'<div class="igFeatureHeader">We offer the following services to shoppers in ' +ig_countries[ig_country]+'.</div>' +
|
125 |
+
'<li><i class="material-icons"></i> See totals and pay in your currency' +
|
126 |
+
'</li>' +
|
127 |
+
'<li><i class="material-icons"></i> Multiple payment methods available' +
|
128 |
+
'</li>' +
|
129 |
+
'<li><i class="material-icons"></i> Option to prepay duties and taxes' +
|
130 |
+
'</li>' +
|
131 |
+
'<li><i class="material-icons"></i> Multiple shipping options available' +
|
132 |
+
'</li>' +
|
133 |
+
'</ul>';
|
134 |
}
|
135 |
|
136 |
ig_splashHtml += '' +
|
137 |
+
'<div class="igWelcomeCTAButton">' +
|
138 |
+
'<button class="close">Start Shopping</button>' +
|
139 |
+
'</div><!--/.igWelcomeCTAButton -->' +
|
140 |
+
'</div><!--/.igModalBody -->' +
|
141 |
+
'<div class="igModalFooter">' +
|
142 |
+
'</div><!--/.igModalFooter-->';
|
143 |
|
144 |
return ig_splashHtml;
|
145 |
}
|
158 |
|
159 |
//init easyModal.js modal, after modal content was placed on the page (line above)
|
160 |
igJq("#igSplashElement").easyModal({
|
161 |
+
onClose: function(myModal){
|
162 |
+
//on close, let's remove the modal contents and the modal smokescreen created by easyModal.js
|
163 |
+
igJq("#igSplashElement").remove();
|
164 |
+
igJq(".lean-overlay").remove();
|
165 |
+
igJq("body").removeClass("welcome-mat-blur welcome-mat-open");
|
166 |
+
igJq("#igSplashElement").removeClass("modal-open");
|
167 |
+
}
|
168 |
});
|
169 |
|
170 |
//Fire the modal!
|
171 |
igJq("#igSplashElement").trigger('openModal');
|
172 |
+
igJq("body").addClass("welcome-mat-blur welcome-mat-open");
|
173 |
+
igJq("#igSplashElement").addClass("modal-open");
|
174 |
|
175 |
//Set cookie for Splash shown
|
176 |
if (ig_validateCountryCode(igJq.cookie("igCountry"))) { // Only set the splashShown cookie, if there is a valid countryCookie
|
177 |
+
igJq.cookie('igSplash', 'igSplash', { expires: 7, path: '/', domain: ig_cookieDomain });
|
178 |
}
|
179 |
}
|
|
|
180 |
function ig_createNestContents() {
|
181 |
+
return '<img onclick="ig_showTheSplash();" src="https://d1vyngmisxigjx.cloudfront.net/images/flags/96x64/'+((ig_country)?ig_country.toUpperCase():'undefined')+'.png" class="igWelcomeFlagHeader" alt="Select your country." />';
|
182 |
}
|
183 |
|
184 |
function ig_placeNestHtml() {
|
185 |
igJq(function(){
|
186 |
+
if (igJq("#"+ig_nestElementId)) {
|
187 |
+
igJq("#"+ig_nestElementId).html(ig_createNestContents());
|
188 |
+
}
|
189 |
});
|
190 |
}
|
191 |
|
192 |
function ig_setCountry(country) {
|
193 |
ig_country = country;
|
194 |
if (ig_country) {
|
195 |
+
//Set country cookie
|
196 |
+
igJq.cookie('igCountry', ig_country, { expires: 365, path: '/', domain: ig_cookieDomain });
|
197 |
}
|
198 |
ig_placeNestHtml();
|
199 |
}
|
210 |
//Return the country code if valid, return null if not valid
|
211 |
var countryDisplayName = ig_countries[countryCode];
|
212 |
if (typeof countryDisplayName !== 'undefined' && countryDisplayName) {
|
213 |
+
return countryCode;
|
214 |
} else {
|
215 |
+
return null;
|
216 |
}
|
217 |
}
|
218 |
|
232 |
|
233 |
function ig_detectCountry() {
|
234 |
igJq.jsonp({
|
235 |
+
url: 'https://iprecon.iglobalstores.com/iGlobalIp.js?p=igcCallback',
|
236 |
+
callback:'igcCallback',
|
237 |
+
success: function(json, textStatus, xOptions){ig_detectCountryCallback(json);},
|
238 |
+
error: function(){ig_detectCountryCallbackError();}
|
239 |
});
|
240 |
}
|
241 |
|
242 |
function ig_pingIglobal() {
|
243 |
+
try { // Don't break if this doesn't work
|
244 |
+
if (!ig_countryParam) {//Only ping iGlobal for real visitors, not url parameter testing
|
245 |
+
igJq.ajax({//we do not need to trap errors like 503's, for this call
|
246 |
+
dataType: "jsonp",
|
247 |
+
url: 'https://iprecon.iglobalstores.com/ping.js?s='+ig_storeId+'&c='+((ig_country)?ig_country:'')
|
248 |
+
});
|
|
|
|
|
|
|
249 |
}
|
250 |
+
} catch (err) {
|
251 |
+
// do nothing
|
252 |
+
}
|
253 |
}
|
254 |
|
|
|
|
|
|
|
|
|
255 |
function ig_finishLoading() {
|
256 |
ig_placeNestHtml();
|
257 |
if (!ig_isDomesticCountry() && (!ig_splashCookie || !ig_country || ig_countryParam)) {
|
258 |
+
igJq(ig_showTheSplash); //Schedule Showing the Splash
|
259 |
}
|
|
|
|
|
260 |
ig_pingIglobal();
|
261 |
}
|
262 |
|
281 |
} else { // else go with whatever country we have, even no country
|
282 |
ig_finishLoading();
|
283 |
}
|
284 |
+
|
285 |
+
// Redirect to int'l checkout if country is changed on domestic page
|
286 |
+
function ig_countryRedirect(selectedCountry){
|
287 |
+
if(ig_domesticCountryCodes.indexOf(selectedCountry) == -1){
|
288 |
+
ig_setCountry(selectedCountry);
|
289 |
+
window.location.pathname = window.location.pathname.replace("/checkout/onepage/", "/iglobal/checkout/");
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
// check for change in shipping country on domestic checkout page.
|
294 |
+
igJq(document).ready(function(){
|
295 |
+
billing_select = igJq("select[id *= 'billing:country_id']");
|
296 |
+
shipping_select = igJq("select[id *= 'shipping:country_id']");
|
297 |
+
rdo_same_as_billing = igJq("input[id *= 'billing:use_for_shipping_yes']");
|
298 |
+
|
299 |
+
// check for redirect if country selected and billing is same as shipping
|
300 |
+
igJq("select[id *= 'billing:country_id']").change(function(){
|
301 |
+
if(igJq(this).val() && rdo_same_as_billing.checked === true){
|
302 |
+
ig_countryRedirect(igJq(this).val());
|
303 |
+
}
|
304 |
+
});
|
305 |
+
|
306 |
+
//change in shipping country
|
307 |
+
igJq("select[id *= 'shipping:country_id']").change(function(){
|
308 |
+
if(igJq(this).val()){
|
309 |
+
ig_countryRedirect(igJq(this).val());
|
310 |
+
}
|
311 |
+
});
|
312 |
+
|
313 |
+
// same as shipping button is checked
|
314 |
+
igJq(rdo_same_as_billing).change(function(){
|
315 |
+
if(this.checked === true && billing_select.val()){
|
316 |
+
ig_countryRedirect(billing_select.val());
|
317 |
+
}
|
318 |
+
});
|
319 |
+
});
|
package.xml
CHANGED
@@ -1,45 +1,46 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Iglobal_Main</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Leverage iGlobal Stores' technology for international eCommerce</summary>
|
10 |
<description>International eCommerce Done Right
|
11 |
-
|
12 |
-

|
13 |
-

|
14 |
Improved Global Conversion Rates - Direct international visitors to the iGlobal checkout to keep your conversion rates at their highest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |

|
16 |
-
|
17 |
-

|
18 |
-
Duty, Tax, VAT? Done. - Calculate customs, duties, taxes and VAT and let your customers prepay them right in the checkout!
|
19 |
-

|
20 |
-
Your Shipping Carriers - Work with the shipping carriers of your choice, at your rates.
|
21 |
-

|
22 |
-
Direct Shipping to the World- Ship directly from your warehouse to anywhere in the world with iGlobal Stores' easy print and ship technology. We'll take care of the paperwork
|
23 |
-

|
24 |
-
Their Currency - Show customers their order totals in their local currency, making the buying decision that much easier
|
25 |
-

|
26 |
-
Your Payment Processor or Ours - Use your own payment processor or leverage the integrated payment system to settle in foreign currencies - it's up to you.
|
27 |

|
28 |
-
|
29 |
-
The iGlobal Stores extension will have limited use for stores that are not set up with an iGlobal Stores account. In order to accept orders internationally through iGlobal Stores, please contact us at 1-800-942-0721, at www.iglobalstores.com or at info@iglobalstores.com.</description>
|
30 |
-
<notes>New Features:
|
31 |
-
Mobile responsive iframe
|
32 |
-
Send address info for logged in users to the checkout.
|
33 |
-
Send product country of manufacture to iGlobal
|
34 |

|
|
|
35 |

|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
<
|
40 |
-
<
|
41 |
-
<
|
42 |
-
<contents><target name="mageetc"><dir name="modules"><file name="Iglobal_Stores.xml" hash="56839ad045b6a99f97564de63ebed700"/><file name="Iglobal_Ship.xml" hash="6d40f1c84e29bb7d8b70eadd77a03917"/></dir></target><target name="magecommunity"><dir name="Iglobal"><dir name="Ship"><dir name="Block"><file name="Ship.php" hash="a802b4d42e72997ec4ab466dec75b743"/></dir><dir name="Helper"><file name="Data.php" hash="fe9f074c1cb74260fa134efa94eb67c9"/></dir><dir name="Model"><dir name="Carrier"><file name="Excellence.php" hash="d1814260e342346b74d7ff3543499d4f"/></dir></dir><dir name="controllers"><file name="IndexController.php" hash="3355a75caf30f4ff96499da3d8a4102a"/></dir><dir name="etc"><file name="config.xml" hash="adecbc76332ffb4b0f8918d3166c655c"/><file name="system.xml" hash="fea6b2ed9b7fdf5748cb57e53fe1301b"/></dir></dir><dir name="Stores"><dir name="Block"><file name="Ajax.php" hash="5d288c6bc298db3bdc86adcdd036bdd6"/><file name="Cart.php" hash="a162e67a8c445b911dd25897e4d886a3"/><file name="Includes.php" hash="8214ef5eae6a83e2909f8ebeee6ea1f7"/><file name="Link.php" hash="69b0efcc8d2ffd6ca9daed407260d793"/></dir><dir name="Helper"><file name="Configoptions.php" hash="b129e55b21f845a20d6e7fdb3b532be3"/><file name="Data.php" hash="aa6a697c4382dd36680c592228e57a5d"/><file name="Url.php" hash="e430471ab463e1fc7812c4a96d5f3208"/></dir><dir name="Model"><file name="Configoptions.php" hash="56a5c17a3e71079ecf574fd4a0e69011"/><dir name="International"><file name="International.php" hash="c0d897eafe1fe60f725147c5e8789131"/></dir><file name="Observer.php" hash="9b1aaebfc83c9aca25f4d711f10fede5"/><file name="Order.php" hash="42558f6c350618879c00fdf5583797c2"/><dir name="Payment"><file name="Iglobal.php" hash="9ac8f8d81b8f8d547831ad6db8a1c7fc"/><file name="Iglobalcreditcard.php" hash="f2f5cf4507a128fadc95071951ca2a41"/><file name="Iglobalpaypal.php" hash="3a566289db82b177ce6b52ce205728f6"/></dir><dir name="Resource"><file name="Setup.php" hash="f725924af461644af75a455210097a53"/></dir><file name="Rest.php" hash="0b3fd2a4bffc0a4a5e8aca28ad3fce5f"/><dir name="Service"><file name="Quote.php" hash="bae0e5a710b9e3aa1427bb78a08fbfd8"/></dir><file name="Tax.php" hash="9645d04415913bea333b5aba99b1909c"/></dir><dir name="controllers"><file name="AjaxController.php" hash="62228ca95872788a18256bbf20839a07"/><file name="CheckoutController.php" hash="dc79a1b3d6734051ea0081f272432911"/><file name="SuccessController.php" hash="ed6df1368ce185de7bf6c557e55d2339"/></dir><dir name="etc"><file name="adminhtml.xml" hash="7f10c9724b1294a506df47cf569bc9e6"/><file name="config.xml" hash="4acf4539f3e24e0af387c69832dd651e"/><file name="system.xml" hash="a69d4f11b37f4ea3197978240cbe5eda"/></dir><dir name="sql"><dir name="iglobal_stores_setup"><file name="mysql4-install-0.1.0.php" hash="72c543090fe27608e582d22494b65d75"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="51e83dd266d7b232d42f03cac66350df"/><file name="mysql4-upgrade-0.1.1-0.1.2.php" hash="4dc024ad63d7a7ea20697ddef4b60a29"/><file name="mysql4-upgrade-0.1.2-0.1.3.php" hash="51e83dd266d7b232d42f03cac66350df"/><file name="mysql4-upgrade-0.1.3-1.0.0.php" hash="829b7c08d5bce22b5c1750a3d72e21ca"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="iglobal.xml" hash="6df6f5f0aceab891d0cd13061a3b5e55"/></dir><dir name="template"><dir name="iglobal"><dir name="sales"><dir name="order"><dir name="view"><file name="info.phtml" hash="06280040dd9521efcd36c12779648108"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="iglobal.xml" hash="d49680762997b0480aaaeae331dc4695"/></dir><dir name="template"><dir name="iglobal"><dir name="checkout"><dir name="cart"><dir name="item"><dir name="configure"><file name="updatecart.phtml" hash="9eaac8c650b6986db7c0a5005966c4ee"/></dir></dir></dir><dir name="onepage"><file name="link.phtml" hash="12a68b6580f9441bc0400b72c66b8358"/></dir></dir><dir name="stores"><file name="cart.phtml" hash="6afb67cae6995499ad5d13bbf56b1b0a"/><file name="igcincludes.phtml" hash="43752aafba25bc795f9f708c0d470181"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="iGlobal"><file name="ig_welcome_mat_default.css" hash="b71a0e407204ad9c8c2158910c3600a7"/><file name="ig_welcome_mat_default.js" hash="3406af1dd7347050f19cd755aae21e62"/><file name="igc.cs.magento_default_ice.js" hash="eb2507a442883dda09975301455877a7"/><dir><dir name="jquery"><file name="jquery.js" hash="6903c661e9db496b11e737478528318f"/><file name="jquery.noconflict.js" hash="09bfdd3b964eb2b17b5d6caa1d20a607"/></dir></dir></dir></dir></target></contents>
|
43 |
<compatible/>
|
44 |
<dependencies><required><php><min>5.2.0</min><max>7.0.7</max></php></required></dependencies>
|
45 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Iglobal_Main</name>
|
4 |
+
<version>1.5.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Leverage iGlobal Stores' technology for international eCommerce</summary>
|
10 |
<description>International eCommerce Done Right
|
11 |
+
Thanks for checking out the iGlobal Stores extension for Magento Community Edition! This extension gives you access to the many features of iGlobal Stores services. For more information on this extension and iGlobal's services, please visit http://www.iglobalstores.com/magento
|
12 |
+

|
13 |
+

|
14 |
Improved Global Conversion Rates - Direct international visitors to the iGlobal checkout to keep your conversion rates at their highest
|
15 |
+

|
16 |
+
Worldwide Geolocation- Automatically detect international visitors (by IP address) and show them a welcome mat, letting them know about all the ways you make ordering easy for them
|
17 |
+

|
18 |
+
Duty, Tax, VAT? Done. - Calculate customs, duties, taxes and VAT and let your customers prepay them right in the checkout!
|
19 |
+

|
20 |
+
Your Shipping Carriers - Work with the shipping carriers of your choice, at your rates.
|
21 |
+

|
22 |
+
Direct Shipping to the World- Ship directly from your warehouse to anywhere in the world with iGlobal Stores' easy print and ship technology. We'll take care of the paperwork
|
23 |
+

|
24 |
+
Their Currency - Show customers their order totals in their local currency, making the buying decision that much easier
|
25 |
+

|
26 |
+
Your Payment Processor or Ours - Use your own payment processor or leverage the integrated payment system to settle in foreign currencies - it's up to you.
|
27 |
+

|
28 |
+
Before You Install
|
29 |
+
The iGlobal Stores extension will have limited use for stores that are not set up with an iGlobal Stores account. In order to accept orders internationally through iGlobal Stores, please contact us at 1-800-942-0721, at www.iglobalstores.com or at info@iglobalstores.com.</description>
|
30 |
+
<notes>New Features:
|
31 |

|
32 |
+
Import State/Region with 2 digit region code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |

|
34 |
+
Import the same shipping method that the customer sees in the iGlobal checkout.
|
|
|
|
|
|
|
|
|
|
|
35 |

|
36 |
+
Allow changing which product attributes are sent to iglobal
|
37 |

|
38 |
+
Save the customer Notes onto the order
|
39 |
+
</notes>
|
40 |
+
<authors><author><name>Brian Olsen</name><user>brianolsen</user><email>brian@iglobalstores.com</email></author></authors>
|
41 |
+
<date>2017-02-22</date>
|
42 |
+
<time>16:51:03</time>
|
43 |
+
<contents><target name="mageetc"><dir name="."><file name="Iglobal_Stores.xml" hash=""/><file name="Iglobal_Ship.xml" hash=""/></dir></target><target name="magecommunity"><dir name="Iglobal"><dir name="Ship"><dir name="Block"><file name="Ship.php" hash="a802b4d42e72997ec4ab466dec75b743"/></dir><dir name="Helper"><file name="Data.php" hash="fe9f074c1cb74260fa134efa94eb67c9"/></dir><dir name="Model"><dir name="Carrier"><file name="Excellence.php" hash="d1814260e342346b74d7ff3543499d4f"/></dir></dir><dir name="controllers"><file name="IndexController.php" hash="3355a75caf30f4ff96499da3d8a4102a"/></dir><dir name="etc"><file name="config.xml" hash="adecbc76332ffb4b0f8918d3166c655c"/><file name="system.xml" hash="fea6b2ed9b7fdf5748cb57e53fe1301b"/></dir></dir><dir name="Stores"><dir name="Block"><file name="Ajax.php" hash="5d288c6bc298db3bdc86adcdd036bdd6"/><file name="Cart.php" hash="a162e67a8c445b911dd25897e4d886a3"/><file name="Includes.php" hash="8214ef5eae6a83e2909f8ebeee6ea1f7"/><file name="Link.php" hash="69b0efcc8d2ffd6ca9daed407260d793"/></dir><dir name="Helper"><file name="Configoptions.php" hash="b129e55b21f845a20d6e7fdb3b532be3"/><file name="Data.php" hash="4b4d51e05c6565a4413d68a9ef3ae555"/><file name="Url.php" hash="e430471ab463e1fc7812c4a96d5f3208"/></dir><dir name="Model"><file name="Configoptions.php" hash="2cbd3eb8357f80c2de5a48f32709b1c5"/><dir name="International"><file name="International.php" hash="c0d897eafe1fe60f725147c5e8789131"/></dir><file name="Observer.php" hash="8bca52293f76cab0c92e8e30ada75662"/><file name="Order.php" hash="f880f8edd039bcfa878804b9c03a02ba"/><dir name="Payment"><file name="Iglobal.php" hash="9ac8f8d81b8f8d547831ad6db8a1c7fc"/><file name="Iglobalcreditcard.php" hash="f2f5cf4507a128fadc95071951ca2a41"/><file name="Iglobalpaypal.php" hash="3a566289db82b177ce6b52ce205728f6"/></dir><dir name="Resource"><file name="Setup.php" hash="f725924af461644af75a455210097a53"/></dir><file name="Rest.php" hash="98750cee4441854556cd5fe283e4e13e"/><dir name="Service"><file name="Quote.php" hash="bae0e5a710b9e3aa1427bb78a08fbfd8"/></dir><file name="Tax.php" hash="9645d04415913bea333b5aba99b1909c"/></dir><dir name="controllers"><file name="AjaxController.php" hash="62228ca95872788a18256bbf20839a07"/><file name="CheckoutController.php" hash="dc79a1b3d6734051ea0081f272432911"/><file name="SuccessController.php" hash="ed6df1368ce185de7bf6c557e55d2339"/></dir><dir name="etc"><file name="adminhtml.xml" hash="7f10c9724b1294a506df47cf569bc9e6"/><file name="config.xml" hash="58c4052642509193411c33d9bfad627d"/><file name="system.xml" hash="c916869addc050f6b2e4d7b01cc7a6b2"/></dir><dir name="sql"><dir name="iglobal_stores_setup"><file name="mysql4-install-0.1.0.php" hash="72c543090fe27608e582d22494b65d75"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="51e83dd266d7b232d42f03cac66350df"/><file name="mysql4-upgrade-0.1.1-0.1.2.php" hash="4dc024ad63d7a7ea20697ddef4b60a29"/><file name="mysql4-upgrade-0.1.2-0.1.3.php" hash="51e83dd266d7b232d42f03cac66350df"/><file name="mysql4-upgrade-0.1.3-1.0.0.php" hash="829b7c08d5bce22b5c1750a3d72e21ca"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="iglobal.xml" hash="6df6f5f0aceab891d0cd13061a3b5e55"/></dir><dir name="template"><dir name="iglobal"><dir name="sales"><dir name="order"><dir name="view"><file name="info.phtml" hash="06280040dd9521efcd36c12779648108"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="iglobal.xml" hash="d49680762997b0480aaaeae331dc4695"/></dir><dir name="template"><dir name="iglobal"><dir name="checkout"><dir name="cart"><dir name="item"><dir name="configure"><file name="updatecart.phtml" hash="9eaac8c650b6986db7c0a5005966c4ee"/></dir></dir></dir><dir name="onepage"><file name="link.phtml" hash="12a68b6580f9441bc0400b72c66b8358"/></dir></dir><dir name="stores"><file name="cart.phtml" hash="6afb67cae6995499ad5d13bbf56b1b0a"/><file name="igcincludes.phtml" hash="43752aafba25bc795f9f708c0d470181"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="iGlobal"><file name="ig_welcome_mat_default.css" hash="71fd2550937bb39f4669e0da861b5e9a"/><file name="ig_welcome_mat_default.js" hash="0e36108bb586c79c00a6f5499575f42d"/><file name="igc.cs.magento_default_ice.js" hash="eb2507a442883dda09975301455877a7"/><dir name="jquery"><file name="jquery.js" hash="6903c661e9db496b11e737478528318f"/><file name="jquery.noconflict.js" hash="09bfdd3b964eb2b17b5d6caa1d20a607"/></dir></dir></dir></target></contents>
|
|
|
44 |
<compatible/>
|
45 |
<dependencies><required><php><min>5.2.0</min><max>7.0.7</max></php></required></dependencies>
|
46 |
</package>
|