Version Notes
supports all the unbxd recommendor widgets
Download this release
Release Info
Developer | ananthesh |
Extension | unbxd_recommendation |
Version | 1.0.7 |
Comparing to | |
See all releases |
Code changes from version 1.0.6 to 1.0.7
- app/code/local/Unbxd/Datafeeder/Block/Edit.php +0 -12
- app/code/local/Unbxd/Datafeeder/Block/Index.php +0 -76
- app/code/local/Unbxd/Datafeeder/Helper/.DS_Store +0 -0
- app/code/local/Unbxd/Datafeeder/Helper/Analyticshelper.php +0 -105
- app/code/local/Unbxd/Datafeeder/Helper/Data.php +0 -12
- app/code/local/Unbxd/Datafeeder/Helper/UnbxdIndexingHelper.php +0 -682
- app/code/local/Unbxd/Datafeeder/Helper/UnbxdTaxonomyHelper.php +0 -318
- app/code/local/Unbxd/Datafeeder/Model/Attribute.php +0 -22
- app/code/local/Unbxd/Datafeeder/Model/Conf.php +0 -12
- app/code/local/Unbxd/Datafeeder/Model/Facet.php +0 -14
- app/code/local/Unbxd/Datafeeder/Model/Feed/Feedcreator.php +0 -321
- app/code/local/Unbxd/Datafeeder/Model/Feed/Feedmanager.php +0 -159
- app/code/local/Unbxd/Datafeeder/Model/Feed/Jsonbuilder/Jsonbuilder.php +0 -9
- app/code/local/Unbxd/Datafeeder/Model/Feed/Jsonbuilder/Schemabuilder.php +0 -51
- app/code/local/Unbxd/Datafeeder/Model/Field.php +0 -11
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Conf.php +0 -47
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Conf/Collection.php +0 -16
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Field.php +0 -192
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Field/Collection.php +0 -16
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Resource/Attribute.php +0 -22
- app/code/local/Unbxd/Datafeeder/Model/Mysql4/Upgrade.php +0 -37
- app/code/local/Unbxd/Datafeeder/controllers/ConfigController.php +0 -80
- app/code/local/Unbxd/Datafeeder/controllers/FieldController.php +0 -52
- app/code/local/Unbxd/Datafeeder/controllers/IndexController.php +0 -61
- app/code/local/Unbxd/Datafeeder/etc/adminhtml.xml +0 -16
- app/code/local/Unbxd/Datafeeder/etc/config.xml +0 -119
- app/code/local/Unbxd/Datafeeder/scripts/Cron.php +0 -25
- app/code/local/Unbxd/Datafeeder/scripts/abstract.php +0 -218
- app/code/local/Unbxd/Datafeeder/sql/datafeeder_setup/mysql4-install-1.0.5.php +0 -39
- app/code/local/Unbxd/Datafeeder/sql/datafeeder_setup/mysql4-upgrade-0.1.0-1.0.5.php +0 -39
- app/code/local/Unbxd/{Datafeeder → Recommendation}/.DS_Store +0 -0
- app/code/local/Unbxd/Recommendation/Block/Admin.php +13 -0
- app/code/local/Unbxd/Recommendation/Block/Tracker.php +0 -0
- app/code/local/Unbxd/Recommendation/Helper/Confighelper.php +333 -0
- app/code/local/Unbxd/Recommendation/Helper/Data.php +23 -0
- app/code/local/Unbxd/Recommendation/Helper/Feedhelper.php +224 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Request.php +211 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Response.php +163 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task.php +82 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Analyticsimpression.php +49 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Feeddetails.php +70 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Trackcart.php +45 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Trackorder.php +45 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Triggerfeedupload.php +40 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Updatefeaturefields.php +78 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Validatekeys.php +72 -0
- app/code/local/Unbxd/Recommendation/Model/Api/Task/Widget.php +231 -0
- app/code/local/Unbxd/Recommendation/Model/Config.php +28 -0
- app/code/local/Unbxd/Recommendation/Model/Feed/Feedcreator.php +290 -0
- app/code/local/Unbxd/Recommendation/Model/Feed/Feedmanager.php +158 -0
- app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Filemanager.php +30 -28
- app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Jsonbuilder.php +9 -0
- app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Jsonbuilder/Productbuilder.php +61 -52
- app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Schemabuilder.php +29 -0
- app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Jsonbuilder/Taxonomybuilder.php +2 -2
- app/code/local/Unbxd/Recommendation/Model/Field.php +135 -0
- app/code/local/Unbxd/Recommendation/Model/Observer.php +108 -0
- app/code/local/Unbxd/{Datafeeder/Model/Mysql4 → Recommendation/Model/Resource}/Attribute.php +1 -1
- app/code/local/Unbxd/Recommendation/Model/Resource/Config.php +90 -0
- app/code/local/Unbxd/Recommendation/Model/Resource/Config/Collection.php +20 -0
- app/code/local/Unbxd/Recommendation/Model/Resource/Field.php +108 -0
- app/code/local/Unbxd/Recommendation/Model/Resource/Field/Collection.php +65 -0
- app/code/local/Unbxd/Recommendation/Model/Resource/Product/Collection.php +16 -0
- app/code/local/Unbxd/Recommendation/controllers/AdminController.php +20 -0
- app/code/local/Unbxd/Recommendation/controllers/ConfigController.php +321 -0
- app/code/local/Unbxd/Recommendation/controllers/WidgetController.php +20 -0
- app/code/local/Unbxd/Recommendation/etc/adminhtml.xml +9 -0
- app/code/local/Unbxd/Recommendation/etc/config.xml +109 -0
- app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/mysql4-install-1.0.0.php +42 -0
- app/design/adminhtml/base/default/template/datafeeder/conf.phtml +0 -439
- app/design/adminhtml/default/default/layout/unbxd/recommendation.xml +15 -0
- app/design/adminhtml/default/default/template/unbxd/recommendation.phtml +154 -0
- app/design/frontend/base/default/layout/unbxd/recommendation.xml +33 -0
- app/design/frontend/base/default/template/unbxd/tracker.phtml +32 -0
- app/design/frontend/base/default/template/unbxd/tracking/cart.phtml +1 -0
- app/design/frontend/base/default/template/unbxd/tracking/category.phtml +14 -0
- app/design/frontend/base/default/template/unbxd/tracking/order.phtml +1 -0
- app/design/frontend/base/default/template/unbxd/tracking/product.phtml +21 -0
- app/etc/modules/Unbxd_Datafeeder.xml +0 -8
- app/etc/modules/Unbxd_Recommendation.xml +8 -0
- js/unbxd/app.js +4 -0
- js/unbxd/embed.js +176 -0
- js/unbxd/jquery.js +4 -0
- js/unbxd/unbxdAnalytics.js +843 -0
- package.xml +4 -4
- shell/UnbxdFeed.php +0 -25
- skin/adminhtml/default/default/unbxd/css/app.css +7773 -0
- skin/adminhtml/default/default/unbxd/css/bootstrap-them.css +2 -0
- skin/adminhtml/default/default/unbxd/css/bootstrap.css +38 -0
- skin/adminhtml/default/default/unbxd/css/chosen.css +429 -0
- skin/adminhtml/default/default/unbxd/css/unbxd-magento.css +632 -0
- skin/adminhtml/default/default/unbxd/img/Custom-platform.png +0 -0
- skin/adminhtml/default/default/unbxd/img/DONE.png +0 -0
- skin/adminhtml/default/default/unbxd/img/HEXAGON-Only.png +0 -0
- skin/adminhtml/default/default/unbxd/img/Magento-small.png +0 -0
- skin/adminhtml/default/default/unbxd/img/Magento.png +0 -0
- skin/adminhtml/default/default/unbxd/img/X-popup-hover.png +0 -0
- skin/adminhtml/default/default/unbxd/img/X-popup.png +0 -0
- skin/adminhtml/default/default/unbxd/img/X-pricing.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add-actv.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add-icon.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add-inactv.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add-raw-hover.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add-raw.png +0 -0
- skin/adminhtml/default/default/unbxd/img/add.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-2.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-calendar-down.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-calendar-down1.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down-disabled.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down-enabled.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down-white.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down-white1.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down-white2.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-down.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-left-white.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-left.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-mail-developer).png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-right-blue.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-right-gray.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-right-white.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-right.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-disabled.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-enabled.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-red.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-white.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up-white1.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-up.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow-white.png +0 -0
- skin/adminhtml/default/default/unbxd/img/arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/authenticated.png +0 -0
- skin/adminhtml/default/default/unbxd/img/back.png +0 -0
- skin/adminhtml/default/default/unbxd/img/bg.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/big-arrow-gray.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/bigcommerce.png +0 -0
- skin/adminhtml/default/default/unbxd/img/black-right-small.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/black-right-thick.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/btn-arrow-top.png +0 -0
- skin/adminhtml/default/default/unbxd/img/btn-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/button-arrow-blue.png +0 -0
- skin/adminhtml/default/default/unbxd/img/button-arrow-grey.png +0 -0
- skin/adminhtml/default/default/unbxd/img/button-arrow-red.png +0 -0
- skin/adminhtml/default/default/unbxd/img/cancel.png +0 -0
- skin/adminhtml/default/default/unbxd/img/card-image.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/card-image1.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/card-image2.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/card-image3.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/checkmark.png +0 -0
- skin/adminhtml/default/default/unbxd/img/chosen-sprite.png +0 -0
- skin/adminhtml/default/default/unbxd/img/close-analytics.png +0 -0
- skin/adminhtml/default/default/unbxd/img/close.png +0 -0
- skin/adminhtml/default/default/unbxd/img/color-pic.png +0 -0
- skin/adminhtml/default/default/unbxd/img/congrats.png +0 -0
- skin/adminhtml/default/default/unbxd/img/copy-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/copy-white.png +0 -0
- skin/adminhtml/default/default/unbxd/img/cros.png +0 -0
- skin/adminhtml/default/default/unbxd/img/cross-2.png +0 -0
- skin/adminhtml/default/default/unbxd/img/cvv-number.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/delete-raw-hover.png +0 -0
- skin/adminhtml/default/default/unbxd/img/delete-raw.png +0 -0
- skin/adminhtml/default/default/unbxd/img/delete-red.png +0 -0
- skin/adminhtml/default/default/unbxd/img/delete.png +0 -0
- skin/adminhtml/default/default/unbxd/img/detect.png +0 -0
- skin/adminhtml/default/default/unbxd/img/down-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/down-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/down-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/dropdown-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/edit-magento.png +0 -0
- skin/adminhtml/default/default/unbxd/img/edit.png +0 -0
- skin/adminhtml/default/default/unbxd/img/eye-hover.png +0 -0
- skin/adminhtml/default/default/unbxd/img/eye.png +0 -0
- skin/adminhtml/default/default/unbxd/img/favicon.png +0 -0
- skin/adminhtml/default/default/unbxd/img/fill.png +0 -0
- skin/adminhtml/default/default/unbxd/img/group-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/help.png +0 -0
- skin/adminhtml/default/default/unbxd/img/icon-analytics.png +0 -0
- skin/adminhtml/default/default/unbxd/img/icon-info.png +0 -0
- skin/adminhtml/default/default/unbxd/img/icon-widget.png +0 -0
- skin/adminhtml/default/default/unbxd/img/install.png +0 -0
- skin/adminhtml/default/default/unbxd/img/integration-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/introduction-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/left-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/left-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/level-arrow-active.png +0 -0
- skin/adminhtml/default/default/unbxd/img/level-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/link-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/loader-16x16.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/loader-24x24.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/loader-32x32.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/loader.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/loader_black.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/lock-image.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/logo-unbxd.png +0 -0
- skin/adminhtml/default/default/unbxd/img/logo.png +0 -0
- skin/adminhtml/default/default/unbxd/img/mail-new.png +0 -0
- skin/adminhtml/default/default/unbxd/img/mail.png +0 -0
- skin/adminhtml/default/default/unbxd/img/minus.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/nav-highlight-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/not-detected.png +0 -0
- skin/adminhtml/default/default/unbxd/img/oops.png +0 -0
- skin/adminhtml/default/default/unbxd/img/or.png +0 -0
- skin/adminhtml/default/default/unbxd/img/other-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/overview-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/plus.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/question-mark2.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/red-cross.png +0 -0
- skin/adminhtml/default/default/unbxd/img/red-loading.gif +0 -0
- skin/adminhtml/default/default/unbxd/img/remove.png +0 -0
- skin/adminhtml/default/default/unbxd/img/right-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/right-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/save.png +0 -0
- skin/adminhtml/default/default/unbxd/img/search.png +0 -0
- skin/adminhtml/default/default/unbxd/img/settings.png +0 -0
- skin/adminhtml/default/default/unbxd/img/shopify.png +0 -0
- skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-down.png +0 -0
- skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-up.png +0 -0
- skin/adminhtml/default/default/unbxd/img/slider-bg.png +0 -0
- skin/adminhtml/default/default/unbxd/img/slider-button.png +0 -0
- skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-down.png +0 -0
- skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-up.png +0 -0
- skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-down.png +0 -0
- skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-up.png +0 -0
- skin/adminhtml/default/default/unbxd/img/spree.png +0 -0
- skin/adminhtml/default/default/unbxd/img/start-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/step-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/success.png +0 -0
- skin/adminhtml/default/default/unbxd/img/tick-analytics.png +0 -0
- skin/adminhtml/default/default/unbxd/img/tick-green.png +0 -0
- skin/adminhtml/default/default/unbxd/img/tick-pricing.png +0 -0
- skin/adminhtml/default/default/unbxd/img/tick.png +0 -0
- skin/adminhtml/default/default/unbxd/img/tooltip-left-arrow.jpg +0 -0
- skin/adminhtml/default/default/unbxd/img/tooltip.png +0 -0
- skin/adminhtml/default/default/unbxd/img/up-arrow.png +0 -0
- skin/adminhtml/default/default/unbxd/img/up-black.png +0 -0
- skin/adminhtml/default/default/unbxd/img/up-gray.png +0 -0
- skin/adminhtml/default/default/unbxd/img/user.png +0 -0
- skin/adminhtml/default/default/unbxd/img/warning.png +0 -0
- skin/adminhtml/default/default/unbxd/img/x-widget.png +0 -0
- skin/adminhtml/default/default/unbxd/img/x.png +0 -0
- skin/adminhtml/default/default/unbxd/js/app.js +780 -0
- skin/adminhtml/default/default/unbxd/js/lib/bootstrap-tooltip.js +1 -0
- skin/adminhtml/default/default/unbxd/js/lib/chosen.js +2 -0
- skin/adminhtml/default/default/unbxd/js/lib/ractive-chosen.js +117 -0
- skin/adminhtml/default/default/unbxd/js/lib/ractive.js +15 -0
- skin/adminhtml/default/default/unbxd/templates/analytics.html +148 -0
- skin/adminhtml/default/default/unbxd/templates/catalog.html +297 -0
- skin/adminhtml/default/default/unbxd/templates/credentails.html +89 -0
- skin/adminhtml/default/default/unbxd/templates/custom.html +31 -0
- skin/adminhtml/default/default/unbxd/templates/widgets.html +302 -0
app/code/local/Unbxd/Datafeeder/Block/Edit.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
class Unbxd_Datafeeder_Block_Edit extends Mage_Core_Block_Template
|
5 |
-
{
|
6 |
-
|
7 |
-
public function getCollection()
|
8 |
-
{
|
9 |
-
return Mage::getModel('datafeeder/field')->getCollection();
|
10 |
-
}
|
11 |
-
}
|
12 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Block/Index.php
DELETED
@@ -1,76 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
class Unbxd_Datafeeder_Block_Index extends Mage_Adminhtml_Block_Template
|
5 |
-
{
|
6 |
-
public function getFullindexFormAction()
|
7 |
-
{
|
8 |
-
|
9 |
-
return Mage::getUrl('*/*/fullindex', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
10 |
-
}
|
11 |
-
|
12 |
-
public function getTaxonomyUploadFormAction(){
|
13 |
-
return Mage::getUrl('*/*/taxonomyindex', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
14 |
-
}
|
15 |
-
|
16 |
-
public function getSaveApiUrl(){
|
17 |
-
return Mage::getUrl('*/*/saveapi', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
18 |
-
}
|
19 |
-
|
20 |
-
public function getSaveFieldUrl()
|
21 |
-
{
|
22 |
-
return Mage::getUrl('*/field/save', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
23 |
-
}
|
24 |
-
|
25 |
-
public function saveFeedConf(){
|
26 |
-
return Mage::getUrl('*/*/savefeedconf', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
27 |
-
}
|
28 |
-
|
29 |
-
public function checkApiKeyExists()
|
30 |
-
{
|
31 |
-
if(Mage::getResourceSingleton("datafeeder/conf")->getValue("apiKey")=="empty"){
|
32 |
-
return false;
|
33 |
-
}
|
34 |
-
else{
|
35 |
-
return true;
|
36 |
-
}
|
37 |
-
}
|
38 |
-
|
39 |
-
public function getApiKey(){
|
40 |
-
return Mage::getResourceSingleton("datafeeder/conf")->getValue("apiKey");
|
41 |
-
}
|
42 |
-
|
43 |
-
public function getFields($site)
|
44 |
-
{
|
45 |
-
|
46 |
-
return Mage::getResourceSingleton('datafeeder/field')->getFields($site);
|
47 |
-
}
|
48 |
-
|
49 |
-
public function getIncrementalIndexFormAction()
|
50 |
-
{
|
51 |
-
return Mage::getUrl('*/*/incrementalindex', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
52 |
-
}
|
53 |
-
|
54 |
-
public function getProgressUrl()
|
55 |
-
{
|
56 |
-
|
57 |
-
return Mage::getUrl('datafeeder/config/progress', array('_secure' =>Mage::app()->getFrontController()->getRequest()->isSecure()));
|
58 |
-
}
|
59 |
-
|
60 |
-
public function getFeedConf()
|
61 |
-
{
|
62 |
-
|
63 |
-
return Mage::getUrl('datafeeder/config/getfeedconf', array('_secure' =>Mage::app()->getFrontController()->getRequest()->isSecure()));
|
64 |
-
}
|
65 |
-
|
66 |
-
public function getResetAction(){
|
67 |
-
return Mage::getUrl('datafeeder/config/reset', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
68 |
-
}
|
69 |
-
|
70 |
-
public function getEditUrl()
|
71 |
-
{
|
72 |
-
return Mage::getUrl('*/field/config', array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure()));
|
73 |
-
}
|
74 |
-
}
|
75 |
-
|
76 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Helper/.DS_Store
DELETED
Binary file
|
app/code/local/Unbxd/Datafeeder/Helper/Analyticshelper.php
DELETED
@@ -1,105 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Unbxd_Datafeeder_Helper_Analyticshelper extends Mage_Core_Helper_Abstract{
|
3 |
-
|
4 |
-
/**
|
5 |
-
* Returns unbxd script tag
|
6 |
-
*;
|
7 |
-
* @return String
|
8 |
-
**/
|
9 |
-
public function getAnalyticsScriptTag() {
|
10 |
-
$siteName = Mage::getResourceSingleton("datafeeder/conf")->getValue(Mage::app()->getWebsite()->getName() . "/siteName");
|
11 |
-
if(is_null($siteName) || $siteName == "" ) {
|
12 |
-
Mage::throwException("Unbxd site key is not set");
|
13 |
-
}
|
14 |
-
$scriptDiv = '<script type="text/javascript">';
|
15 |
-
$scriptDiv = $scriptDiv.'var UnbxdSiteName="'.$siteName.'";';
|
16 |
-
$scriptDiv = $scriptDiv.'var s=document.createElement("script");';
|
17 |
-
$scriptDiv = $scriptDiv.'s.src="//unbxd.s3.amazonaws.com/unbxdAnalytics.js";';
|
18 |
-
$scriptDiv = $scriptDiv.'s.type="text/javascript";';
|
19 |
-
$scriptDiv = $scriptDiv.'s.async=true;';
|
20 |
-
$scriptDiv = $scriptDiv.'document.getElementsByTagName("head").item(0).appendChild(s);';
|
21 |
-
$scriptDiv = $scriptDiv.'var s=document.createElement("script");';
|
22 |
-
$scriptDiv = $scriptDiv."</script>";
|
23 |
-
return $scriptDiv;
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Returns unbxd search box attributes
|
28 |
-
*
|
29 |
-
* @return String
|
30 |
-
**/
|
31 |
-
public function getSearchBoxAttribute() {
|
32 |
-
return 'unbxdattr="sq"';
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Returns unbxd search box button attributes
|
37 |
-
*
|
38 |
-
* @return String
|
39 |
-
**/
|
40 |
-
public function getSearchBoxButtonAttribute() {
|
41 |
-
return 'unbxdattr="sq_bt"';
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Returns unbxd navigation meta tag
|
46 |
-
*
|
47 |
-
* @return String
|
48 |
-
**/
|
49 |
-
public function getNavigationTag() {
|
50 |
-
return '<meta name="unbxd:type" content="category">';
|
51 |
-
}
|
52 |
-
|
53 |
-
/**
|
54 |
-
* Returns unbxd product click attributes
|
55 |
-
*
|
56 |
-
* @return String
|
57 |
-
**/
|
58 |
-
public function getProductClickAttributes($product, $rank) {
|
59 |
-
if (!$product instanceof Mage_Catalog_Model_Product ) {
|
60 |
-
Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
|
61 |
-
}
|
62 |
-
if (!$rank || $rank < 1 ) {
|
63 |
-
Mage::throwException("$rank parameter to getProductClickAttributes method should be greater than 0");
|
64 |
-
}
|
65 |
-
return 'unbxdattr="product" unbxdparam_sku="'.$product->getData('entity_id').'" unbxdparam_prank="'.$rank.'"';
|
66 |
-
}
|
67 |
-
|
68 |
-
/**
|
69 |
-
* Returns unbxd add to cart attributes
|
70 |
-
*
|
71 |
-
* @return String
|
72 |
-
**/
|
73 |
-
public function getAddToCartAttributes($product) {
|
74 |
-
if (!$product instanceof Mage_Catalog_Model_Product ) {
|
75 |
-
Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
|
76 |
-
}
|
77 |
-
return 'unbxdattr="AddToCart" unbxdparam_sku="'.$product->getData('entity_id').'"';
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* Returns unbxd order attributes
|
82 |
-
*
|
83 |
-
* @return String
|
84 |
-
**/
|
85 |
-
public function getOrderAttributes($product) {
|
86 |
-
if (!$product instanceof Mage_Catalog_Model_Product ) {
|
87 |
-
Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
|
88 |
-
}
|
89 |
-
return 'unbxdattr="order" unbxdparam_sku="'.$product->getData('entity_id').'"';
|
90 |
-
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* Checks whether request is a navigation
|
94 |
-
*
|
95 |
-
* @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
|
96 |
-
* @return bool
|
97 |
-
*/
|
98 |
-
public function isNavigation() {
|
99 |
-
if(Mage::app()->getRequest()->getControllerName() == "category") {
|
100 |
-
return true;
|
101 |
-
}
|
102 |
-
return false;
|
103 |
-
}
|
104 |
-
}
|
105 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Helper/Data.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
-
{
|
5 |
-
|
6 |
-
public function getsetaddressparams()
|
7 |
-
{
|
8 |
-
$params=$this->_getRequest()->getParams();
|
9 |
-
return $params;
|
10 |
-
}
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Helper/UnbxdIndexingHelper.php
DELETED
@@ -1,682 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
* Created on 14-May-2013
|
4 |
-
*
|
5 |
-
* @author antz(ananthesh@unbxd.com)
|
6 |
-
*/
|
7 |
-
|
8 |
-
class Unbxd_Datafeeder_Helper_UnbxdIndexingHelper {
|
9 |
-
// This is like to act as a temporary cache, which holds the fieldName to fieldType information
|
10 |
-
// so that just to avoid multiple database reads, and make it faster
|
11 |
-
var $fieldType = array();
|
12 |
-
// This is the name of the logFile which it is writing in to//
|
13 |
-
var $logFile;
|
14 |
-
// This is also act like a temporary cache, which holds the category id to category information,
|
15 |
-
// so that just to avoid multiple database reads, and make it faster
|
16 |
-
var $categoryMap = array();
|
17 |
-
// size to fetch how much products should it pick in batches
|
18 |
-
var $PAGE_SIZE = 500;
|
19 |
-
// the file to write to..
|
20 |
-
var $file;
|
21 |
-
// fields to be selected to push to unbxd
|
22 |
-
var $fields;
|
23 |
-
// Feed unlock interval
|
24 |
-
//LOCK_TIMEOUT = 60 * 30;
|
25 |
-
|
26 |
-
public function __construct(){
|
27 |
-
$this->logFile = Mage::getBaseDir('log').DS.'generic.log';
|
28 |
-
$this->file = Mage::getBaseDir('tmp').DS.'unbxdFeed.xml';
|
29 |
-
$this-log("calling setfeilds method");
|
30 |
-
$this->fields = array();
|
31 |
-
$this-> setFieldType();
|
32 |
-
}
|
33 |
-
|
34 |
-
public function setFields($site) {
|
35 |
-
$this->fields = Mage::getResourceSingleton('datafeeder/field')->getEnabledFields($site);
|
36 |
-
$this-log("inside setfeilds method");
|
37 |
-
$this->fields[] = 'entity_id';
|
38 |
-
$this->log("fields are " .json_encode($this->fields));
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Function to create a file
|
43 |
-
*/
|
44 |
-
private function createXmlFile(){
|
45 |
-
try{
|
46 |
-
$f=fopen($this->file,'w');
|
47 |
-
|
48 |
-
fclose($f);
|
49 |
-
if(!file_exists($this->file)) {
|
50 |
-
$this->log("UNBXD_MODULE:Couldn't create the file");
|
51 |
-
return false;
|
52 |
-
}
|
53 |
-
$this->log("UNBXD_MODULE: created the file");
|
54 |
-
return true;
|
55 |
-
} catch (Exception $ex) {
|
56 |
-
$this->log("UNBXD_MODULE:Error while creating the file");
|
57 |
-
$this->log($ex->getMessage());
|
58 |
-
return false;
|
59 |
-
}
|
60 |
-
}
|
61 |
-
|
62 |
-
/**
|
63 |
-
* Function to append the contents to the file
|
64 |
-
*/
|
65 |
-
private function appendTofile($content){
|
66 |
-
try{
|
67 |
-
|
68 |
-
if(file_put_contents($this->file, $content, FILE_APPEND)) {
|
69 |
-
return true;
|
70 |
-
} else {
|
71 |
-
return false;
|
72 |
-
}
|
73 |
-
} catch(Exception $ex) {
|
74 |
-
$this->log("UNBXD_MODULE:Error while appending the contents to feed file");
|
75 |
-
$this->log($ex->getMessage());
|
76 |
-
return false;
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
|
81 |
-
/**
|
82 |
-
* Function to create a file
|
83 |
-
*/
|
84 |
-
private function createLogFile(){
|
85 |
-
try {
|
86 |
-
$f=fopen($this->logFile,'w');
|
87 |
-
fclose($f);
|
88 |
-
return true;
|
89 |
-
} catch (Exception $ex) {
|
90 |
-
error_log("UNBXD_MODULE:Error while creating the file");
|
91 |
-
error_log($ex->getMessage());
|
92 |
-
return false;
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Function to appened the contents to the file
|
98 |
-
*/
|
99 |
-
public function log($content){
|
100 |
-
try{
|
101 |
-
$resp = file_put_contents($this->logFile, date('Y-m-d H:i:s').$content."\n", FILE_APPEND);
|
102 |
-
if($resp){
|
103 |
-
return true;
|
104 |
-
} else {
|
105 |
-
error_log("UNBXD_MODULE:Error while appending the contents to log file");
|
106 |
-
return false;
|
107 |
-
}
|
108 |
-
return true;
|
109 |
-
}catch(Exception $ex) {
|
110 |
-
error_log("UNBXD_MODULE:Error while appending the contents to log file");
|
111 |
-
Mage::throwException($ex->getMessage());
|
112 |
-
return false;
|
113 |
-
}
|
114 |
-
}
|
115 |
-
|
116 |
-
/**
|
117 |
-
* Function to delete the file
|
118 |
-
*/
|
119 |
-
private function deleteFile(){
|
120 |
-
unlink($this->file);
|
121 |
-
}
|
122 |
-
|
123 |
-
/**
|
124 |
-
* function to get the file name
|
125 |
-
*/
|
126 |
-
private function getFile(){
|
127 |
-
return $this->file;
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Write Header contents to the file
|
132 |
-
*
|
133 |
-
*/
|
134 |
-
private function writeXmlHeaderContents($operation){
|
135 |
-
$headerContent="<feed>"."<taxonomyname>".$this->tax.
|
136 |
-
"</taxonomyname><username>unbxd</username>".
|
137 |
-
"<feedname>feed</feedname>".
|
138 |
-
"<entry>"."<data>" .
|
139 |
-
"<unbxdActionType>".$operation.
|
140 |
-
"</unbxdActionType>"."<products>";
|
141 |
-
|
142 |
-
return $this->appendTofile($headerContent);
|
143 |
-
|
144 |
-
}
|
145 |
-
|
146 |
-
/**
|
147 |
-
* function to append the xml footer contents to the file
|
148 |
-
*
|
149 |
-
*/
|
150 |
-
private function writeXmlFooterContents(){
|
151 |
-
$footerContent="</products></data></entry></feed>";
|
152 |
-
return $this->appendTofile($footerContent);
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* function to append the product contents to the file
|
157 |
-
*/
|
158 |
-
private function writeXmlProductContents($fromdate,$todate,$site,$operation,$ids){
|
159 |
-
|
160 |
-
|
161 |
-
$collection=$this->getCatalogCollection($fromdate,$todate,$site,$operation,$ids);
|
162 |
-
// get total size
|
163 |
-
//set the time limit to infinite
|
164 |
-
set_time_limit(0);
|
165 |
-
$pageNum = 0;
|
166 |
-
$this->log('started writing products');
|
167 |
-
|
168 |
-
while(true){
|
169 |
-
$collection->clear();
|
170 |
-
$collection->getSelect()->limit($this->PAGE_SIZE, ($pageNum++) * $this->PAGE_SIZE);
|
171 |
-
$collection->load();
|
172 |
-
echo "<pre>";print_r($collection);echo "</pre>";
|
173 |
-
if(count($collection) == 0){
|
174 |
-
if($pageNum == 1){
|
175 |
-
$this->log("No products found");
|
176 |
-
return false;
|
177 |
-
}
|
178 |
-
break;
|
179 |
-
}
|
180 |
-
$content=$this->getCollectionInXML($collection, $operation);
|
181 |
-
$status=$this->appendTofile($content);
|
182 |
-
if(!$status){
|
183 |
-
return false;
|
184 |
-
}
|
185 |
-
$this->log('Added '.($pageNum) * $pageSize.' products');
|
186 |
-
}
|
187 |
-
|
188 |
-
$this->log('Added all products');
|
189 |
-
return true;
|
190 |
-
}
|
191 |
-
|
192 |
-
/**
|
193 |
-
** This method iterates over the collection and builds the xml for product object
|
194 |
-
**
|
195 |
-
**/
|
196 |
-
private function getCollectionInXML($collection, $operation){
|
197 |
-
|
198 |
-
$content='';
|
199 |
-
$count=0;
|
200 |
-
foreach($collection as $product){
|
201 |
-
$count++;
|
202 |
-
$content=$content.'<product>';
|
203 |
-
$content=$content.$this->getProductInXML($product, $operation);
|
204 |
-
$content=$content.'</product>';
|
205 |
-
}
|
206 |
-
|
207 |
-
return $content;
|
208 |
-
}
|
209 |
-
|
210 |
-
/**
|
211 |
-
** This method builds xml string, given the product object
|
212 |
-
**
|
213 |
-
**/
|
214 |
-
private function getProductInXML($product, $operation){
|
215 |
-
$content='';
|
216 |
-
if($operation != "add"){
|
217 |
-
return $this->getAttributesInXML('uniqueId',$product->getData('entity_id'));
|
218 |
-
}
|
219 |
-
|
220 |
-
foreach($product->getData('') as $columnHeader=>$columndata){
|
221 |
-
|
222 |
-
if(!in_array($columnHeader, $this->fields)) {
|
223 |
-
continue;
|
224 |
-
}
|
225 |
-
if(is_null($columndata)|| !isset($columndata) || $columndata==""){
|
226 |
-
continue;
|
227 |
-
}
|
228 |
-
if($columnHeader=="entity_id"){
|
229 |
-
$content=$content. $this->getAttributesInXML('uniqueId',$columndata);
|
230 |
-
}
|
231 |
-
if($columnHeader=="name"){
|
232 |
-
$content=$content. $this->getAttributesInXML('productname',$columndata);
|
233 |
-
}
|
234 |
-
if($columnHeader=="small_image"){
|
235 |
-
$content=$content. $this->getAttributesInXML('image_url',$columndata);
|
236 |
-
}
|
237 |
-
|
238 |
-
if($columnHeader=="entity_id"){
|
239 |
-
$content=$content. $this->getAttributesInXML('uniqueId',$columndata);
|
240 |
-
}
|
241 |
-
if($columnHeader == "visibility") {
|
242 |
-
$content = $content.$this->getAttributesInXML('unbxdVisibility', $columndata);
|
243 |
-
}
|
244 |
-
if($columnHeader=="url_path"){
|
245 |
-
$content=$content. $this->getAttributesInXML('url', Mage::getUrl('').$columndata);
|
246 |
-
$content=$content. $this->getAttributesInXML('url_path', Mage::getUrl('').$columndata);
|
247 |
-
} else if( $this->isMultiSelect($columnHeader) && $columnHeader != "status"){
|
248 |
-
$data = explode(",", $columndata);
|
249 |
-
$attributeModel = Mage::getResourceSingleton("datafeeder/attribute");
|
250 |
-
foreach( $data as $eachdata){
|
251 |
-
$attributeValue = $attributeModel ->getAttributeValue($columnHeader, trim($eachdata), $product);
|
252 |
-
$value = $value .$this->getAttributesInXML($columnHeader,$attributeModel ->getAttributeValue($columnHeader, trim($eachdata), $product));
|
253 |
-
if(isset($this->filterable[$columnHeader]) && ($this->filterable[$columnHeader] == 1) && isset($attributeValue) && $attributeValue != ""){
|
254 |
-
$value = $value.$this->getAttributesInXML($columnHeader."_id", trim($eachdata));
|
255 |
-
}
|
256 |
-
}
|
257 |
-
} else if($columnHeader == "created_at" ||$columnHeader == "updated_at") {
|
258 |
-
$tokens = explode(" ",$columndata);
|
259 |
-
$columndata =$tokens[0].'T'.$tokens[1].'Z';
|
260 |
-
$value =$this->getAttributesInXML($columnHeader,$columndata);
|
261 |
-
} else if($columnHeader == "category_id"){
|
262 |
-
if(!isset($columndata)){
|
263 |
-
continue;
|
264 |
-
}
|
265 |
-
$categoryIds = explode(",",$columndata);
|
266 |
-
foreach($categoryIds as $categoryId){
|
267 |
-
$value = $value.$this->getAttributesInXML($columnHeader, trim($categoryId));
|
268 |
-
$value = $value.$this->getAttributesInXML("unbxdTaxonomyId",trim($categoryId));
|
269 |
-
$value = $value.$this->getAttributesInXML("category",$this->getCategoryName(trim($categoryId)));
|
270 |
-
}
|
271 |
-
|
272 |
-
} else if (is_array($columndata)){
|
273 |
-
$value = $this->getArrayAttributesInXML($columnHeader,$columndata);
|
274 |
-
} else if ($columndata instanceof Varien_Object){
|
275 |
-
$value = $this->getArrayAttributesInXML($columnHeader,$columndata->getData());
|
276 |
-
} else if ( !isset($value) || $value == ""){
|
277 |
-
$value =$this->getAttributesInXML($columnHeader, $columndata);
|
278 |
-
}
|
279 |
-
$content = $content.$value;
|
280 |
-
$value = "";
|
281 |
-
}
|
282 |
-
|
283 |
-
$content=$content.$this->getCategoryAttribute($product);
|
284 |
-
$content=$content.$this->getAttributesInXML('store','default');
|
285 |
-
return $content;
|
286 |
-
}
|
287 |
-
|
288 |
-
/*
|
289 |
-
* function to check whether the field is a multiSelect/select or not,
|
290 |
-
* This is optimized method, where it doesn't make a database call to get fieldType
|
291 |
-
* where it fetches from the local variable, which holds the information of field to fieldType mapping
|
292 |
-
*/
|
293 |
-
public function isMultiSelect($attributeName = ""){
|
294 |
-
if($this->getFieldType($attributeName) == "select" || $this->getFieldType($attributeName) == "multiselect" || $attributeName == "categoryIds"){
|
295 |
-
return true;
|
296 |
-
}
|
297 |
-
return false;
|
298 |
-
}
|
299 |
-
|
300 |
-
|
301 |
-
public function isImage($attributeName = "") {
|
302 |
-
if($this->getFieldType($attributeName) == "media_image") {
|
303 |
-
return true;
|
304 |
-
}
|
305 |
-
return false;
|
306 |
-
}
|
307 |
-
|
308 |
-
/**
|
309 |
-
* function to get Category from the category id,
|
310 |
-
* This checks it present in the global array 'categoryMap', if it is not there fetches from db
|
311 |
-
* So that once it gets one category, it doesn't make db call again for the same category
|
312 |
-
*/
|
313 |
-
public function getCategory($category_id = ""){
|
314 |
-
if(!isset($this->categoryMap[$category_id])){
|
315 |
-
$category = Mage::getModel('catalog/category')->load($category_id);
|
316 |
-
$this->categoryMap[$category_id] = $category;
|
317 |
-
return $this->categoryMap[$category_id];
|
318 |
-
}
|
319 |
-
return $this->categoryMap[$category_id];
|
320 |
-
}
|
321 |
-
|
322 |
-
/**
|
323 |
-
* Method to get stock attribute in xml given the product
|
324 |
-
*/
|
325 |
-
private function getStockAttribute($product){
|
326 |
-
$model = Mage::getModel('catalog/product');
|
327 |
-
$_product = $model->load($product->getId());
|
328 |
-
$stocklevel = Mage::getModel('cataloginventory/stock_item')
|
329 |
-
->loadByProduct($product)->getQty();
|
330 |
-
|
331 |
-
$content=$this->getAttributesInXML("stock",$stocklevel);
|
332 |
-
|
333 |
-
if($stocklevel > 0){
|
334 |
-
$content=$content.$this->getAttributesInXML("Instock","1");
|
335 |
-
}
|
336 |
-
else{
|
337 |
-
$content=$content.$this->getAttributesInXML("Instock","0");
|
338 |
-
}
|
339 |
-
return $content;
|
340 |
-
}
|
341 |
-
|
342 |
-
/**
|
343 |
-
* method to get category content in xml given the product object
|
344 |
-
*/
|
345 |
-
private function getCategoryAttribute($product){
|
346 |
-
$cats = $product->getCategoryIds();
|
347 |
-
$categoryId=array();
|
348 |
-
$category=array();
|
349 |
-
$content = "";
|
350 |
-
foreach ($cats as $category_id) {
|
351 |
-
|
352 |
-
$_cat = $this->getCategory($category_id);
|
353 |
-
$categoryId[]=$category_id;
|
354 |
-
$category[]=$_cat->getName();
|
355 |
-
}
|
356 |
-
|
357 |
-
$content=$content.$this->getArrayAttributesInXML("categoryIds",$categoryId);
|
358 |
-
$content=$content.$this->getArrayAttributesInXML("unbxdTaxonomyId",$categoryId);
|
359 |
-
$content=$content.$this->getArrayAttributesInXML("category",$category);
|
360 |
-
return $content;
|
361 |
-
}
|
362 |
-
|
363 |
-
/**
|
364 |
-
* method to get the xml content given the fieldname and array
|
365 |
-
*/
|
366 |
-
private function getArrayAttributesInXML($columnHeader,$columndata){
|
367 |
-
$content='';
|
368 |
-
|
369 |
-
foreach($columndata as $element){
|
370 |
-
$content=$content.$this->getAttributesInXML($columnHeader,$element);
|
371 |
-
}
|
372 |
-
|
373 |
-
return $content;
|
374 |
-
}
|
375 |
-
|
376 |
-
/**
|
377 |
-
* method to get the xml content given the fieldname and value
|
378 |
-
*/
|
379 |
-
private function getAttributesInXML($columnHeader,$columndata){
|
380 |
-
|
381 |
-
$columnHeader=$this->_escapeXMLHeader($columnHeader);
|
382 |
-
$content = $this->_escapeXMLValue($columndata);
|
383 |
-
$content = iconv("ISO-8859-1", "UTF-8", $content);
|
384 |
-
if($content != '' && $columnHeader != ''){
|
385 |
-
return '<'.$columnHeader.'>'.$content.'</'.$columnHeader.'>';
|
386 |
-
}else{
|
387 |
-
return '';
|
388 |
-
}
|
389 |
-
}
|
390 |
-
|
391 |
-
/**
|
392 |
-
* method to escape the xml header contents
|
393 |
-
*/
|
394 |
-
private function _escapeXMLHeader($columnHeader){
|
395 |
-
if(is_numeric(substr($columnHeader,0,1))){
|
396 |
-
$columnHeader ='_'.$columnHeader;
|
397 |
-
}
|
398 |
-
return str_replace(' ','_',$columnHeader);
|
399 |
-
}
|
400 |
-
|
401 |
-
/**
|
402 |
-
* method to escape the xml contents
|
403 |
-
*/
|
404 |
-
private function _escapeXMLValue($str){
|
405 |
-
$encryptedString = "";
|
406 |
-
$strlen = strlen( $str );
|
407 |
-
for( $i = 0; $i <= $strlen; $i++ ) {
|
408 |
-
$char = substr( $str, $i, 1 );
|
409 |
-
if(ord($char) == 11){
|
410 |
-
continue;
|
411 |
-
}
|
412 |
-
if((ord($char) < 32) && (ord($char) > 0) && (ord($char) != 9) && (ord($char) != 10) && (ord($char) != 13)){
|
413 |
-
$controlCharacter = true;
|
414 |
-
} else {
|
415 |
-
$controlCharacter = false;
|
416 |
-
}
|
417 |
-
$unicodeButNotAscii = (ord($char) > 126) ? true: false;
|
418 |
-
if ( ($char == "<") || ($char == "&") || ($char == ">") || ($char == '"') || ($char == "'")) {
|
419 |
-
$characterWithSpecialMeaningInXML =true;
|
420 |
-
} else {
|
421 |
-
$characterWithSpecialMeaningInXML =false;
|
422 |
-
}
|
423 |
-
if ($controlCharacter || $characterWithSpecialMeaningInXML || $unicodeButNotAscii) {
|
424 |
-
$encryptedString = $encryptedString . "&#" . (ord($char)) . ";" ;
|
425 |
-
} else {
|
426 |
-
$encryptedString = $encryptedString.$char;
|
427 |
-
}
|
428 |
-
}
|
429 |
-
return $encryptedString;
|
430 |
-
}
|
431 |
-
|
432 |
-
/**
|
433 |
-
* method to get the catalog collection
|
434 |
-
*
|
435 |
-
*/
|
436 |
-
private function getCatalogCollection($fromdate,$todate,$site,$operation,$ids) {
|
437 |
-
try{
|
438 |
-
if ($operation == "add") {
|
439 |
-
// select all the attributes
|
440 |
-
$website =Mage::getModel("core/website")->setName($site);
|
441 |
-
$visiblityCondition = array('in' => array(4));
|
442 |
-
|
443 |
-
$collection = Mage::getResourceModel('catalog/product_collection')
|
444 |
-
->addWebsiteFilter($this->validateSite($site))
|
445 |
-
->addAttributeToFilter('status',1)
|
446 |
-
->joinField("qty", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left')
|
447 |
-
->addAttributeToSelect('*')
|
448 |
-
->addAttributeToFilter('visibility',$visiblityCondition);
|
449 |
-
|
450 |
-
if(sizeof($ids) > 0){
|
451 |
-
$condition = array('in' => $ids);
|
452 |
-
$collection=$collection->addAttributeToFilter('entity_id',$condition);
|
453 |
-
}
|
454 |
-
} else {
|
455 |
-
$collection = Mage::getResourceModel('catalog/product_collection');
|
456 |
-
if(sizeof($ids) > 0) {
|
457 |
-
$condition = array('in' => $ids);
|
458 |
-
$collection = $collection->addAttributeToFilter('entity_id',$condition)->addAttributeToSelect('entity_id');
|
459 |
-
}
|
460 |
-
}
|
461 |
-
|
462 |
-
$this->log($collection->getSelect());
|
463 |
-
return $collection;
|
464 |
-
} catch(Exception $e) {
|
465 |
-
$this->log($e->getMessage());
|
466 |
-
}
|
467 |
-
}
|
468 |
-
|
469 |
-
/**
|
470 |
-
* method to get all the attributes
|
471 |
-
**/
|
472 |
-
public function getAttributes(){
|
473 |
-
return Mage::getSingleton('eav/config')
|
474 |
-
->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
|
475 |
-
}
|
476 |
-
|
477 |
-
/**
|
478 |
-
* method to get field type of the field
|
479 |
-
**/
|
480 |
-
private function getFieldType($attributeName){
|
481 |
-
if(array_key_exists( $attributeName, $this->fieldType)){
|
482 |
-
return $this->fieldType[$attributeName];
|
483 |
-
} else {
|
484 |
-
return "text";
|
485 |
-
}
|
486 |
-
}
|
487 |
-
|
488 |
-
/**
|
489 |
-
* method to set field type to the global object
|
490 |
-
**/
|
491 |
-
private function setFieldType(){
|
492 |
-
$attributes = $this->getAttributes();
|
493 |
-
foreach($attributes as $attribute){
|
494 |
-
$this->filterable[$attribute->getAttributeCode()] = $attribute->getData('is_filterable');
|
495 |
-
$this->fieldType[$attribute->getAttributeCode()] = $attribute-> getFrontendInput();
|
496 |
-
}
|
497 |
-
}
|
498 |
-
|
499 |
-
/**
|
500 |
-
* method to get the zend date condition
|
501 |
-
*/
|
502 |
-
private function getDateCondition($fromdate,$todate){
|
503 |
-
return array('from'=>$fromdate,'to'=>$todate,'date'=>true,);
|
504 |
-
}
|
505 |
-
|
506 |
-
/**
|
507 |
-
* method to create the feed
|
508 |
-
**/
|
509 |
-
public function createFeed($fromdate,$todate,$site,$operation,$ids){
|
510 |
-
if($this->createXmlFile()){
|
511 |
-
$this->log("started writing header");
|
512 |
-
if(!$this->writeXmlHeaderContents($operation)){
|
513 |
-
return false;
|
514 |
-
}
|
515 |
-
$this->log('Added header contents');
|
516 |
-
try{
|
517 |
-
if(!$this->writeXmlProductContents($fromdate,$todate,$site,$operation,$ids)){
|
518 |
-
return false;
|
519 |
-
}
|
520 |
-
}catch(Exception $e){
|
521 |
-
$this->log($e->getMessage());
|
522 |
-
$this->log($e->getTraceAsString());
|
523 |
-
return false;
|
524 |
-
}
|
525 |
-
$this->log('Added products');
|
526 |
-
|
527 |
-
if(!$this->writeXmlFooterContents()){
|
528 |
-
return false;
|
529 |
-
}
|
530 |
-
} else {
|
531 |
-
return false;
|
532 |
-
}
|
533 |
-
return true;
|
534 |
-
}
|
535 |
-
|
536 |
-
/**
|
537 |
-
* method to initiate task after index
|
538 |
-
**/
|
539 |
-
private function _afterIndex(){
|
540 |
-
$this->deleteFile();
|
541 |
-
}
|
542 |
-
|
543 |
-
/**
|
544 |
-
* method to validate whether the site exists or not
|
545 |
-
**/
|
546 |
-
public function validateSite($site){
|
547 |
-
$sites=Mage::app()->getWebsites();
|
548 |
-
if( !isset($site) || $site == "") {
|
549 |
-
return false;
|
550 |
-
}
|
551 |
-
foreach( $sites as $eachSite){
|
552 |
-
if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
|
553 |
-
return $eachSite->getWebsiteId();
|
554 |
-
}
|
555 |
-
}
|
556 |
-
return -1;
|
557 |
-
}
|
558 |
-
|
559 |
-
/**
|
560 |
-
* method to set the feedName, log, apikey based on site Name
|
561 |
-
**/
|
562 |
-
public function setUnbxdConf($site)
|
563 |
-
{
|
564 |
-
$this->key = Mage::getResourceSingleton("datafeeder/conf")->getValue("apiKey");
|
565 |
-
$this->feedName = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/feed");
|
566 |
-
$this->tax = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/tax");
|
567 |
-
$this->logFile = Mage::getBaseDir('log').DS.substr($site,0,strrpos($site, ".")-1).'unbxdDataFeeder.log';
|
568 |
-
$this->file = Mage::getBaseDir('tmp').DS.substr($site,0,strrpos($site, ".")-1).'unbxdFeed.xml';
|
569 |
-
if (!$this->log("Feed uploading started")) {
|
570 |
-
error_log("No permission to write to " + Mage::getBaseDir('log'));
|
571 |
-
return false;
|
572 |
-
}
|
573 |
-
if(!isset($this->key) || $this->key == "" || $this->key == "empty"){
|
574 |
-
$this->log("api key not set");
|
575 |
-
return false;
|
576 |
-
}
|
577 |
-
if(!isset($this->feedName) || $this->feedName == "" || $this->feedName == "empty"){
|
578 |
-
$this->log("Feed Name not set");
|
579 |
-
return false;
|
580 |
-
}
|
581 |
-
$this->setFields($site);
|
582 |
-
return true;
|
583 |
-
}
|
584 |
-
|
585 |
-
/**
|
586 |
-
* method to initiate feed uploading to the unbxd servers
|
587 |
-
**/
|
588 |
-
public function indexUnbxdFeed($fromdate,$site,$operation = "add", $ids=array()){
|
589 |
-
|
590 |
-
$this->log('unbxd Datafeeder initiated');
|
591 |
-
// validatest the site
|
592 |
-
if($this->validateSite($site) == -1){
|
593 |
-
$this->log("Invalid site Name".$site);
|
594 |
-
return;
|
595 |
-
}
|
596 |
-
// set the basic
|
597 |
-
if(! $this->setUnbxdConf($site)){
|
598 |
-
return;
|
599 |
-
}
|
600 |
-
$todate =date('Y-m-d H:i:s');
|
601 |
-
|
602 |
-
// check the lock, that if already indexing is happening
|
603 |
-
if($this->checkSiteLock($site)){
|
604 |
-
$this->log('site '. $site.' has been locked');
|
605 |
-
$action=$site.'/status';
|
606 |
-
// lock the feed
|
607 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($action,'1');
|
608 |
-
// create the feed
|
609 |
-
|
610 |
-
$status=$this->createFeed($fromdate,$todate,$site,$operation,$ids);
|
611 |
-
$this->log('unbxd Datafeeder finished creating file');
|
612 |
-
|
613 |
-
if($status){
|
614 |
-
try{
|
615 |
-
// if successful push it to unbxd servers
|
616 |
-
$status=$this->pushFeed($site);
|
617 |
-
}catch(Exception $e){
|
618 |
-
$this->log($e->getMessage());
|
619 |
-
|
620 |
-
}
|
621 |
-
if($status){
|
622 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction('Lastindex',$todate);
|
623 |
-
}
|
624 |
-
}
|
625 |
-
// unlock the feed once everything is completed
|
626 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($action,'0');
|
627 |
-
$this->log('site '. $site.' has been unlocked');
|
628 |
-
} else {
|
629 |
-
$this->log('Feed Uploading failed because site has been locked');
|
630 |
-
}
|
631 |
-
}
|
632 |
-
|
633 |
-
|
634 |
-
/**
|
635 |
-
* method to push the feed to the Unbxd server
|
636 |
-
**/
|
637 |
-
public function pushFeed($site){
|
638 |
-
$fields=array('file'=>'@'.$this->file.';filename=unbxdFeedRenamed.xml');
|
639 |
-
$header = array('Content-Type: multipart/form-data');
|
640 |
-
|
641 |
-
$url="feed.unbxdapi.com/upload/".$this->key."/".$this->feedName;
|
642 |
-
//clear the feed
|
643 |
-
$clearFeedUrl = "http://feed.unbxdapi.com/clearfeed.do?key=".$this->key."&feedName=".$this->feedName;
|
644 |
-
file_get_contents($clearFeedUrl);
|
645 |
-
$this->log('cleared the feed');
|
646 |
-
|
647 |
-
|
648 |
-
$ch = curl_init();
|
649 |
-
curl_setopt($ch, CURLOPT_URL,$url);
|
650 |
-
curl_setopt($ch, CURLOPT_POST,true);
|
651 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
|
652 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
653 |
-
try{
|
654 |
-
$this->log('pushing the feed');
|
655 |
-
// push the feed to the server
|
656 |
-
$response = curl_exec ($ch);
|
657 |
-
}catch(Exception $Ex){
|
658 |
-
$this->log($Ex->getMessage());
|
659 |
-
return false;
|
660 |
-
}
|
661 |
-
$this->log($response);
|
662 |
-
curl_close($ch);
|
663 |
-
return true;
|
664 |
-
}
|
665 |
-
|
666 |
-
/**
|
667 |
-
* method to check the status of the uploading
|
668 |
-
**/
|
669 |
-
public function checkSiteLock($site)
|
670 |
-
{
|
671 |
-
$value = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/status");
|
672 |
-
if($value == '0' || $value == 'empty'){
|
673 |
-
$this->log("true");
|
674 |
-
return true;
|
675 |
-
}else{
|
676 |
-
$this->log("false". $value);
|
677 |
-
return false;
|
678 |
-
}
|
679 |
-
}
|
680 |
-
}
|
681 |
-
?>
|
682 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Helper/UnbxdTaxonomyHelper.php
DELETED
@@ -1,318 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Unbxd_Datafeeder_Helper_UnbxdTaxonomyHelper{
|
3 |
-
|
4 |
-
var $file='unbxdTaxonomy.xml';
|
5 |
-
|
6 |
-
|
7 |
-
public function __construct(){
|
8 |
-
$this->file = Mage::getBaseDir('tmp').DS.'unbxdTaxonomy.xml';
|
9 |
-
}
|
10 |
-
/**
|
11 |
-
* Function to create a file
|
12 |
-
*/
|
13 |
-
private function createXmlFile(){
|
14 |
-
try{
|
15 |
-
$f=fopen($this->file,'w');
|
16 |
-
fclose($f);
|
17 |
-
return true;
|
18 |
-
} catch (Exception $Ex)
|
19 |
-
{
|
20 |
-
error_log("UNBXD_MODULE:Error while creating the file");
|
21 |
-
error_log($Ex->getMessage());
|
22 |
-
return false;
|
23 |
-
}
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Function to appened the contents to the file
|
28 |
-
*/
|
29 |
-
private function appendTofile($content){
|
30 |
-
try{
|
31 |
-
|
32 |
-
file_put_contents($this->file, $content, FILE_APPEND);
|
33 |
-
return true;
|
34 |
-
}catch(Exception $Ex){
|
35 |
-
error_log("UNBXD_MODULE:Error while appending the contents to file");
|
36 |
-
error_log($Ex->getMessage());
|
37 |
-
return false;
|
38 |
-
}
|
39 |
-
}
|
40 |
-
|
41 |
-
private function log($content){
|
42 |
-
try{
|
43 |
-
file_put_contents($this->logFile, date('Y-m-d H:i:s').$content."\n", FILE_APPEND);
|
44 |
-
return true;
|
45 |
-
}catch(Exception $Ex){
|
46 |
-
error_log("UNBXD_MODULE:Error while appending the contents to file");
|
47 |
-
Mage::throwException($Ex->getMessage());
|
48 |
-
return false;
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Function to delete the file
|
54 |
-
*/
|
55 |
-
private function deleteFile(){
|
56 |
-
unlink($this->file);
|
57 |
-
}
|
58 |
-
|
59 |
-
private function writeXMLHeaderContents(){
|
60 |
-
$content="<feed>
|
61 |
-
<username>unbxd</username>
|
62 |
-
<taxonomyname>tax</taxonomyname>";
|
63 |
-
return $this->appendTofile($content);
|
64 |
-
}
|
65 |
-
|
66 |
-
|
67 |
-
private function writeXMLFooterContents(){
|
68 |
-
$content="</feed>";
|
69 |
-
return $this->appendTofile($content);
|
70 |
-
}
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
private function writeXMLProductsContents($site){
|
75 |
-
$stores= $this->getStores($site);
|
76 |
-
foreach( $stores as $store){
|
77 |
-
$categories=$this->getStoreCategories($store);
|
78 |
-
$content='';
|
79 |
-
$count=0;
|
80 |
-
$content=$content.'<category>';
|
81 |
-
$content=$content.$this->getAttributesInXML("name",$site);
|
82 |
-
$content=$content.$this->getAttributesInXML("parents","-1");
|
83 |
-
$content=$content.$this->getAttributesInXML("id",1);
|
84 |
-
$content=$content.$this->getAttributesInXML("url","unbxd");
|
85 |
-
$content=$content.'</category>';
|
86 |
-
foreach($categories as $category){
|
87 |
-
if( $category->getName()== "" ){
|
88 |
-
continue;
|
89 |
-
}
|
90 |
-
$content =$content.$this->getCategoryContent($category);
|
91 |
-
$category_obj = Mage::getModel('catalog/category')->load($category->getId());
|
92 |
-
$childrens = $category_obj->getAllChildren(true);
|
93 |
-
$childrenCategories = Mage::getModel('catalog/category')->getCollection()->addIdFilter($childrens)->addAttributeToSelect('*')->load();
|
94 |
-
|
95 |
-
foreach($childrenCategories as $childCategory){
|
96 |
-
$content=$content.$this->getCategoryContent($childCategory);
|
97 |
-
}
|
98 |
-
}
|
99 |
-
}
|
100 |
-
return $this->appendTofile($content);
|
101 |
-
}
|
102 |
-
|
103 |
-
private function getCategoryContent($category){
|
104 |
-
$content='';
|
105 |
-
$content=$content.'<category>';
|
106 |
-
$content=$content.$this->getAttributesInXML("name",$category->getName());
|
107 |
-
$content=$content.$this->getAttributesInXML("parents",$category->getParentId());
|
108 |
-
$content=$content.$this->getAttributesInXML("id",$category->getId());
|
109 |
-
$content=$content.$this->getAttributesInXML("url","unbxd");
|
110 |
-
$content=$content.'</category>';
|
111 |
-
$content=$content."\n";
|
112 |
-
return $content;
|
113 |
-
}
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
private function getAllCategories($site){
|
118 |
-
$collection = Mage::getModel('catalog/category')->getCollection()
|
119 |
-
->setStoreId($this->getStores($site))
|
120 |
-
->addAttributeToSelect('name')
|
121 |
-
->addAttributeToSelect('id');
|
122 |
-
|
123 |
-
return $collection->load();
|
124 |
-
|
125 |
-
}
|
126 |
-
|
127 |
-
private function getStores($site){
|
128 |
-
$sites=Mage::app()->getWebsites();
|
129 |
-
foreach( $sites as $eachSite){
|
130 |
-
if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
|
131 |
-
return $eachSite->getStores();
|
132 |
-
}
|
133 |
-
}
|
134 |
-
}
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
private function getAttributesInXML($columnHeader,$columndata){
|
139 |
-
|
140 |
-
$columnHeader=$this->_escapeXMLHeader($columnHeader);
|
141 |
-
$content=$this->_escapeXMLValue($columndata);
|
142 |
-
return '<'.$columnHeader.'>'.$content.'</'.$columnHeader.'>';
|
143 |
-
}
|
144 |
-
|
145 |
-
private function _escapeXMLHeader($columnHeader){
|
146 |
-
|
147 |
-
return str_replace(' ','_',$columnHeader);
|
148 |
-
}
|
149 |
-
|
150 |
-
private function _escapeXMLValue($columndata){
|
151 |
-
|
152 |
-
return strtr($columndata,array(
|
153 |
-
"<" => "<",
|
154 |
-
">" => ">",
|
155 |
-
'"' => """,
|
156 |
-
"'" => "'",
|
157 |
-
"&" => "&",
|
158 |
-
));
|
159 |
-
}
|
160 |
-
|
161 |
-
|
162 |
-
public function createFeed($site){
|
163 |
-
$this->log('creating xml file');
|
164 |
-
if($this->createXmlFile()){
|
165 |
-
if(!$this->writeXmlHeaderContents()){
|
166 |
-
return false;
|
167 |
-
}
|
168 |
-
$this->log('writing header');
|
169 |
-
if(!$this->writeXMLProductsContents($site)){
|
170 |
-
return false;
|
171 |
-
}
|
172 |
-
$this->log('writing content');
|
173 |
-
if(!$this->writeXmlFooterContents()){
|
174 |
-
return false;
|
175 |
-
}
|
176 |
-
$this->log('writing footer');
|
177 |
-
} else {
|
178 |
-
return false;
|
179 |
-
}
|
180 |
-
return true;
|
181 |
-
}
|
182 |
-
|
183 |
-
public function validateSite($site){
|
184 |
-
$sites=Mage::app()->getWebsites();
|
185 |
-
if( !isset($site) || $site == "") {
|
186 |
-
return false;
|
187 |
-
}
|
188 |
-
foreach( $sites as $eachSite){
|
189 |
-
if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
|
190 |
-
return $eachSite->getWebsiteId();
|
191 |
-
}
|
192 |
-
}
|
193 |
-
return -1;
|
194 |
-
}
|
195 |
-
|
196 |
-
public function getStoreCategories($store, $sorted=false, $asCollection=false, $toLoad=true)
|
197 |
-
{
|
198 |
-
$parent = $store->getRootCategoryId();
|
199 |
-
|
200 |
-
/**
|
201 |
-
* Check if parent node of the store still exists
|
202 |
-
*/
|
203 |
-
$category = Mage::getModel('catalog/category');
|
204 |
-
/* @var $category Mage_Catalog_Model_Category */
|
205 |
-
if (!$category->checkId($parent)) {
|
206 |
-
if ($asCollection) {
|
207 |
-
return new Varien_Data_Collection();
|
208 |
-
}
|
209 |
-
return array();
|
210 |
-
}
|
211 |
-
|
212 |
-
$recursionLevel = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth'));
|
213 |
-
$tree = Mage::getResourceModel('catalog/category_tree');
|
214 |
-
/* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
|
215 |
-
$nodes = $tree->loadNode($parent)
|
216 |
-
->loadChildren($recursionLevel)
|
217 |
-
->getChildren();
|
218 |
-
|
219 |
-
$tree->addCollectionData(null, $sorted, $parent, $toLoad, false);
|
220 |
-
if ($asCollection) {
|
221 |
-
return $tree->getCollection();
|
222 |
-
}
|
223 |
-
return $nodes;
|
224 |
-
}
|
225 |
-
|
226 |
-
public function setUnbxdConf($site){
|
227 |
-
|
228 |
-
$this->key = Mage::getResourceSingleton("datafeeder/conf")->getValue("apiKey");
|
229 |
-
$this->feedName = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/feed");
|
230 |
-
$this->tax = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/tax");
|
231 |
-
$this->logFile = Mage::getBaseDir('log').DS.substr($site,0,strrpos($site, ".")-1).'unbxdDataFeeder.log';
|
232 |
-
$this->file = Mage::getBaseDir('tmp').DS.substr($site,0,strrpos($site, ".")-1).'unbxdTaxonomyFeed.xml';
|
233 |
-
if(!isset($this->key) || $this->key == "" || $this->key == "empty"){
|
234 |
-
$this->log("api key not set");
|
235 |
-
return false;
|
236 |
-
}
|
237 |
-
if(!isset($this->feedName) || $this->feedName == "" || $this->feedName == "empty"){
|
238 |
-
$this->log("Feed Name not set");
|
239 |
-
return false;
|
240 |
-
}
|
241 |
-
return true;
|
242 |
-
}
|
243 |
-
|
244 |
-
public function indexUnbxdFeed($site){
|
245 |
-
|
246 |
-
$this->log('unbxd Datafeeder initiated');
|
247 |
-
if($this->validateSite($site) == -1){
|
248 |
-
$this->log("Invalid site Name".$site);
|
249 |
-
return;
|
250 |
-
}
|
251 |
-
if(! $this->setUnbxdConf($site)){
|
252 |
-
return;
|
253 |
-
}
|
254 |
-
if(true){
|
255 |
-
$action='taxonomyStatus';
|
256 |
-
$this->updateAction($action,'1');
|
257 |
-
$status=$this->createFeed($site);
|
258 |
-
|
259 |
-
if($status){
|
260 |
-
$status=$this->pushFeed();
|
261 |
-
}
|
262 |
-
$action='taxonomyStatus';
|
263 |
-
$this->updateAction($action,'0');
|
264 |
-
|
265 |
-
}
|
266 |
-
}
|
267 |
-
|
268 |
-
|
269 |
-
public function pushFeed(){
|
270 |
-
|
271 |
-
$fields=array('file'=>'@'.$this->file.";filename=unbxdFeedRenamed.xml");
|
272 |
-
$url="http://feed.unbxdapi.com/taxonomy/upload/".$this->key."/".$this->tax;
|
273 |
-
|
274 |
-
|
275 |
-
$ch = curl_init();
|
276 |
-
curl_setopt($ch, CURLOPT_URL,$url);
|
277 |
-
curl_setopt($ch,CURLOPT_POST,true);
|
278 |
-
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
|
279 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
280 |
-
try{
|
281 |
-
$response = curl_exec($ch);
|
282 |
-
}catch(Exception $Ex){
|
283 |
-
error_log($Ex->getMessage());
|
284 |
-
return false;
|
285 |
-
}
|
286 |
-
$this->log($response);
|
287 |
-
return true;
|
288 |
-
|
289 |
-
}
|
290 |
-
|
291 |
-
public function checkStatus()
|
292 |
-
{
|
293 |
-
$action='taxonomyStatus';
|
294 |
-
$collection=Mage::getModel('datafeeder/conf')->getCollection()
|
295 |
-
->addFieldToFilter('action',$action);
|
296 |
-
|
297 |
-
$count=0;
|
298 |
-
foreach($collection as $coll){
|
299 |
-
$count++;
|
300 |
-
$value=$coll->getvalue();
|
301 |
-
}
|
302 |
-
if($count==0){
|
303 |
-
$collection=Mage::getModel('datafeeder/conf')
|
304 |
-
->setAction($action)->setValue("0")->save();
|
305 |
-
$value="0";
|
306 |
-
}
|
307 |
-
if($value=='0'){
|
308 |
-
return true;
|
309 |
-
} else {
|
310 |
-
return false;
|
311 |
-
}
|
312 |
-
}
|
313 |
-
|
314 |
-
public function updateAction($action,$value){
|
315 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($action, $value);
|
316 |
-
}
|
317 |
-
}
|
318 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Attribute.php
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Attribute{
|
4 |
-
|
5 |
-
$attributeMap = array();
|
6 |
-
public function getAttributeValue($attributeCode, $label, $product){
|
7 |
-
if(!isset($this->attributeMap[$label])){
|
8 |
-
if(!($product instanceof Mage_Catalog_Model_Product)){
|
9 |
-
return null;
|
10 |
-
}
|
11 |
-
$options = $product->getAttribute($attributeCode)
|
12 |
-
->getSource()->getAllOptions();
|
13 |
-
foreach($options as $option){
|
14 |
-
$this->attributeMap[$option["label"]] = $option["value"];
|
15 |
-
}
|
16 |
-
}
|
17 |
-
return array_key_exists($value, $this->attributeMap)?$this->attributeMap[$value]:NULL;
|
18 |
-
}
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Conf.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Conf extends Mage_Core_Model_Abstract {
|
4 |
-
|
5 |
-
|
6 |
-
protected function _construct()
|
7 |
-
{
|
8 |
-
$this->_init('datafeeder/conf');
|
9 |
-
}
|
10 |
-
}
|
11 |
-
|
12 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Facet.php
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Facet extends Mage_Core_Model_Abstract {
|
4 |
-
|
5 |
-
|
6 |
-
protected function _construct()
|
7 |
-
{
|
8 |
-
$this->_init('datafeeder/facet');
|
9 |
-
}
|
10 |
-
|
11 |
-
|
12 |
-
}
|
13 |
-
|
14 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Feed/Feedcreator.php
DELETED
@@ -1,321 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Feed_Feedcreator {
|
4 |
-
|
5 |
-
var $fileName;
|
6 |
-
|
7 |
-
var $fields;
|
8 |
-
|
9 |
-
const STATUS = 'status';
|
10 |
-
const DATA_TYPE = 'data_type';
|
11 |
-
const AUTOSUGGEST = 'autosuggest';
|
12 |
-
|
13 |
-
|
14 |
-
const PAGE_SIZE = 500;
|
15 |
-
public function __construct(){
|
16 |
-
}
|
17 |
-
|
18 |
-
public function init($site, $fileName) {
|
19 |
-
Mage::getSingleton('unbxd_datafeeder/feed_filemanager')->setLog(str_replace(' ', '_',$site)."_Datafeeder.log");
|
20 |
-
$this->setFields($site);
|
21 |
-
$this->fileName = $fileName;
|
22 |
-
}
|
23 |
-
|
24 |
-
|
25 |
-
/**
|
26 |
-
* method to create the feed
|
27 |
-
**/
|
28 |
-
public function createFeed($fileName, $fromdate,$todate,$site,$operation,$ids){
|
29 |
-
$this->init($site, $fileName);
|
30 |
-
if($this->createFile()){
|
31 |
-
$this->log("started writing header");
|
32 |
-
|
33 |
-
if(!$this->writeFeedContent($fromdate,$todate,$site,$operation,$ids)){
|
34 |
-
return false;
|
35 |
-
}
|
36 |
-
|
37 |
-
} else {
|
38 |
-
return false;
|
39 |
-
}
|
40 |
-
return true;
|
41 |
-
}
|
42 |
-
|
43 |
-
private function writeFeedContent($fromdate,$todate,$site,$operation,$ids) {
|
44 |
-
if(!$this->appendTofile('{"feed":')) {
|
45 |
-
$this->log("Error writing feed tag");
|
46 |
-
return false;
|
47 |
-
}
|
48 |
-
|
49 |
-
if(!$this->writeCatalogContent($fromdate,$todate,$site,$operation,$ids)) {
|
50 |
-
$this->log("Error writing catalog tag");
|
51 |
-
return false;
|
52 |
-
}
|
53 |
-
|
54 |
-
if(!$this->appendTofile("}")) {
|
55 |
-
$this->log("Error writing closing feed tag");
|
56 |
-
return false;
|
57 |
-
}
|
58 |
-
|
59 |
-
return true;
|
60 |
-
}
|
61 |
-
|
62 |
-
private function writeCatalogContent($fromdate,$todate,$site,$operation,$ids) {
|
63 |
-
if(!$this->appendTofile('{"catalog":{')) {
|
64 |
-
$this->log("Error writing closing catalog tag");
|
65 |
-
return false;
|
66 |
-
}
|
67 |
-
if(!$this->writeSchemaContent()) {
|
68 |
-
return false;
|
69 |
-
}
|
70 |
-
|
71 |
-
if(!$this->appendTofile(",")) {
|
72 |
-
$this->log("Error while adding comma in catalog");
|
73 |
-
return false;
|
74 |
-
}
|
75 |
-
|
76 |
-
if(!$this->writeProductsContent($fromdate,$todate,$site,$operation,$ids)) {
|
77 |
-
return false;
|
78 |
-
}
|
79 |
-
|
80 |
-
|
81 |
-
if(!$this->appendTofile("}")) {
|
82 |
-
$this->log("Error writing closing catalog tag");
|
83 |
-
return false;
|
84 |
-
}
|
85 |
-
|
86 |
-
if(!$this->writeTaxonomyContents($site)) {
|
87 |
-
return false;
|
88 |
-
}
|
89 |
-
|
90 |
-
if(!$this->appendTofile("}")) {
|
91 |
-
$this->log("Error writing closing feed tag");
|
92 |
-
return false;
|
93 |
-
}
|
94 |
-
|
95 |
-
|
96 |
-
return true;
|
97 |
-
}
|
98 |
-
|
99 |
-
private function writeSchemaContent() {
|
100 |
-
return $this->appendTofile('"schema":'.Mage::getSingleton('unbxd_datafeeder/feed_jsonbuilder_schemabuilder')->getSchema($this->fields));
|
101 |
-
}
|
102 |
-
|
103 |
-
private function writeProductsContent($fromdate,$todate,$site,$operation,$ids) {
|
104 |
-
|
105 |
-
$collection=$this->getCatalogCollection($fromdate,$todate,$site,$operation,$ids);
|
106 |
-
// get total size
|
107 |
-
//set the time limit to infinite
|
108 |
-
ignore_user_abort(true);
|
109 |
-
set_time_limit(0);
|
110 |
-
$pageNum = 0;
|
111 |
-
$this->log('started writing products');
|
112 |
-
|
113 |
-
if(!$this->appendTofile('"'. $operation . '":{ "items":[')) {
|
114 |
-
$this->log("Error while adding items tag");
|
115 |
-
return false;
|
116 |
-
}
|
117 |
-
|
118 |
-
$firstLoop = true;
|
119 |
-
|
120 |
-
while(true){
|
121 |
-
$collection->clear();
|
122 |
-
$collection->getSelect()->limit(self::PAGE_SIZE, ($pageNum++) * self::PAGE_SIZE);
|
123 |
-
$collection->load();
|
124 |
-
if(count($collection) == 0){
|
125 |
-
if($pageNum == 1){
|
126 |
-
$this->log("No products found");
|
127 |
-
return false;
|
128 |
-
}
|
129 |
-
break;
|
130 |
-
}
|
131 |
-
|
132 |
-
if(!$firstLoop) {
|
133 |
-
if(!$this->appendTofile( ',')) {
|
134 |
-
$this->log("Error while addings items separator");
|
135 |
-
return false;
|
136 |
-
}
|
137 |
-
}
|
138 |
-
$content=Mage::getSingleton('unbxd_datafeeder/feed_jsonbuilder_productbuilder')->getProducts($collection, $this->fields);
|
139 |
-
$status=$this->appendTofile($content);
|
140 |
-
if(!$status){
|
141 |
-
$this->log("Error while addings items");
|
142 |
-
return false;
|
143 |
-
}
|
144 |
-
$this->log('Added '.($pageNum) * self::PAGE_SIZE.' products');
|
145 |
-
$firstLoop = false;
|
146 |
-
}
|
147 |
-
|
148 |
-
if(!$this->appendTofile("]}")) {
|
149 |
-
$this->log("Error writing closing items tag");
|
150 |
-
return false;
|
151 |
-
}
|
152 |
-
|
153 |
-
|
154 |
-
$this->log('Added all products');
|
155 |
-
return true;
|
156 |
-
}
|
157 |
-
|
158 |
-
private function writeTaxonomyContents($site){
|
159 |
-
|
160 |
-
$collection=$this->getTaxonomyMappingCollection();
|
161 |
-
// get total size
|
162 |
-
//set the time limit to infinite
|
163 |
-
ignore_user_abort(true);
|
164 |
-
set_time_limit(0);
|
165 |
-
$pageNum = 0;
|
166 |
-
$this->log('started writing taxonomy tree');
|
167 |
-
|
168 |
-
if(!$this->appendTofile(',"'. 'taxonomy' . '":{ "tree":[')) {
|
169 |
-
$this->log("Error while adding tree tag");
|
170 |
-
return false;
|
171 |
-
}
|
172 |
-
|
173 |
-
$content=Mage::getSingleton('unbxd_datafeeder/feed_jsonbuilder_taxonomybuilder')->createTaxonomyFeed($site);
|
174 |
-
$status=$this->appendTofile($content);
|
175 |
-
|
176 |
-
if(!$status){
|
177 |
-
$this->log("Error while addings taxonomy");
|
178 |
-
return false;
|
179 |
-
}
|
180 |
-
|
181 |
-
if(!$this->appendTofile("]")) {
|
182 |
-
$this->log("Error writing closing tree tag");
|
183 |
-
return false;
|
184 |
-
}
|
185 |
-
|
186 |
-
if(!$this->appendTofile(',"mapping":[')) {
|
187 |
-
$this->log("Error writing opening mapping tag");
|
188 |
-
return false;
|
189 |
-
}
|
190 |
-
|
191 |
-
$content=Mage::getSingleton('unbxd_datafeeder/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
|
192 |
-
$status=$this->appendTofile($content);
|
193 |
-
|
194 |
-
if(!$status){
|
195 |
-
$this->log("Error while addings taxonomy");
|
196 |
-
return false;
|
197 |
-
}
|
198 |
-
|
199 |
-
if(!$this->appendTofile(']}')) {
|
200 |
-
$this->log("Error writing closing mapping tag");
|
201 |
-
return false;
|
202 |
-
}
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
$this->log('Added all categories');
|
210 |
-
return true;
|
211 |
-
}
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
private function setFields($site) {
|
217 |
-
$this->fields = Mage::getResourceSingleton('datafeeder/field')->getFieldMapping($site, true);
|
218 |
-
$this->log("fields are set" );
|
219 |
-
$this->fields["type_id"] = array(self::STATUS => 1,
|
220 |
-
self::DATA_TYPE => "longText",
|
221 |
-
self::AUTOSUGGEST => 0 );
|
222 |
-
$this->fields["entity_id"] = array(self::STATUS => 1,
|
223 |
-
self::DATA_TYPE => "text",
|
224 |
-
self::AUTOSUGGEST => 0 );
|
225 |
-
$this->fields["categoryIds"] = array(self::STATUS => 1,
|
226 |
-
self::DATA_TYPE => "text",
|
227 |
-
self::AUTOSUGGEST => 0 );
|
228 |
-
$this->fields["qty"] = array(self::STATUS => 1,
|
229 |
-
self::DATA_TYPE => "number",
|
230 |
-
self::AUTOSUGGEST => 0 );
|
231 |
-
|
232 |
-
$this->fields = array_merge($this->fields, Mage::getResourceSingleton("datafeeder/field")->getFeaturedFields());
|
233 |
-
}
|
234 |
-
|
235 |
-
/**
|
236 |
-
* method to get the catalog collection
|
237 |
-
*
|
238 |
-
*/
|
239 |
-
public function getCatalogCollection($fromdate,$todate,$site,$operation,$ids) {
|
240 |
-
try{
|
241 |
-
if ($operation == "add") {
|
242 |
-
// select all the attributes
|
243 |
-
$website =Mage::getModel("core/website")->setName($site);
|
244 |
-
$visiblityCondition = array('in' => array(4));
|
245 |
-
|
246 |
-
$collection = Mage::getResourceModel('catalog/product_collection')
|
247 |
-
->addWebsiteFilter($this->validateSite($site))
|
248 |
-
->addAttributeToFilter('status',1)
|
249 |
-
->joinField("qty", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left')
|
250 |
-
->addAttributeToSelect('*')
|
251 |
-
->addAttributeToFilter('visibility',$visiblityCondition);
|
252 |
-
|
253 |
-
if(sizeof($ids) > 0){
|
254 |
-
$condition = array('in' => $ids);
|
255 |
-
$collection=$collection->addAttributeToFilter('entity_id',$condition);
|
256 |
-
}
|
257 |
-
} else {
|
258 |
-
$collection = Mage::getResourceModel('catalog/product_collection');
|
259 |
-
if(sizeof($ids) > 0) {
|
260 |
-
$condition = array('in' => $ids);
|
261 |
-
$collection= $collection->addAttributeToFilter('entity_id',$condition)->addAttributeToSelect('entity_id');
|
262 |
-
}
|
263 |
-
}
|
264 |
-
|
265 |
-
$this->log($collection->getSelect());
|
266 |
-
return $collection;
|
267 |
-
} catch(Exception $e) {
|
268 |
-
$this->log($e->getMessage());
|
269 |
-
}
|
270 |
-
}
|
271 |
-
|
272 |
-
/**
|
273 |
-
* Function to initialize to feed creation process
|
274 |
-
*/
|
275 |
-
private function createFile(){
|
276 |
-
return Mage::getSingleton('unbxd_datafeeder/feed_filemanager')->createFile($this->fileName);
|
277 |
-
}
|
278 |
-
|
279 |
-
private function appendTofile($data){
|
280 |
-
return Mage::getSingleton('unbxd_datafeeder/feed_filemanager')->appendTofile($this->fileName, $data);
|
281 |
-
}
|
282 |
-
|
283 |
-
public function log($message) {
|
284 |
-
Mage::getSingleton('unbxd_datafeeder/feed_filemanager')->log($message);
|
285 |
-
}
|
286 |
-
|
287 |
-
/**
|
288 |
-
* method to validate whether the site exists or not
|
289 |
-
**/
|
290 |
-
public function validateSite($site){
|
291 |
-
$sites=Mage::app()->getWebsites();
|
292 |
-
if( !isset($site) || $site == "") {
|
293 |
-
return false;
|
294 |
-
}
|
295 |
-
foreach( $sites as $eachSite){
|
296 |
-
if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
|
297 |
-
return $eachSite->getWebsiteId();
|
298 |
-
}
|
299 |
-
}
|
300 |
-
return -1;
|
301 |
-
}
|
302 |
-
|
303 |
-
public function getTaxonomyMappingCollection() {
|
304 |
-
try{
|
305 |
-
$adapter = Mage::getSingleton('core/resource')->getConnection('core_read');
|
306 |
-
$_productCategoryTable = method_exists($_reader, 'getTableName')?$adapter->getTable('catalog_category_product'):'catalog_category_product';
|
307 |
-
$_productTable = method_exists($_reader, 'getTableName')?$this->getTable('catalog_product_entity'):'catalog_category_product';
|
308 |
-
|
309 |
-
return $adapter->query("select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index
|
310 |
-
join catalog_product_entity where catalog_category_product_index.product_id = catalog_product_entity.entity_id
|
311 |
-
group by catalog_category_product_index.product_id");
|
312 |
-
}
|
313 |
-
catch(Exception $e) {
|
314 |
-
$this->log($e->getMessage());
|
315 |
-
}
|
316 |
-
|
317 |
-
|
318 |
-
}
|
319 |
-
|
320 |
-
}
|
321 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Feed/Feedmanager.php
DELETED
@@ -1,159 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Feed_Feedmanager {
|
4 |
-
|
5 |
-
|
6 |
-
/**
|
7 |
-
* method to push the feed to the Unbxd server
|
8 |
-
**/
|
9 |
-
public function pushFeed($site){
|
10 |
-
$fields=array('file'=>'@'.$this->fileName.';filename=unbxdFeedRenamed.json');
|
11 |
-
$header = array('Content-Type: multipart/form-data');
|
12 |
-
|
13 |
-
$url="http://feed.unbxdapi.com/upload/v2/".$this->key."/".$this->siteName."?fullimport=true";
|
14 |
-
|
15 |
-
$ch = curl_init();
|
16 |
-
curl_setopt($ch, CURLOPT_URL,$url);
|
17 |
-
curl_setopt($ch, CURLOPT_POST,true);
|
18 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
|
19 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
20 |
-
try{
|
21 |
-
$this->log('pushing the feed to '.$url);
|
22 |
-
// push the feed to the server
|
23 |
-
$response = $this->exec($ch);
|
24 |
-
}catch(Exception $Ex){
|
25 |
-
$this->log($Ex->getMessage());
|
26 |
-
return false;
|
27 |
-
}
|
28 |
-
$this->log(json_encode($response));
|
29 |
-
curl_close($ch);
|
30 |
-
return true;
|
31 |
-
}
|
32 |
-
|
33 |
-
public function exec($ch)
|
34 |
-
{
|
35 |
-
$response = curl_exec($ch);
|
36 |
-
$error = curl_error($ch);
|
37 |
-
$result = array( 'header' => '',
|
38 |
-
'body' => '',
|
39 |
-
'curl_error' => '',
|
40 |
-
'http_code' => '',
|
41 |
-
'last_url' => '');
|
42 |
-
if ( $error != "" )
|
43 |
-
{
|
44 |
-
$result['curl_error'] = $error;
|
45 |
-
return $result;
|
46 |
-
}
|
47 |
-
|
48 |
-
$header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
|
49 |
-
$result['header'] = substr($response, 0, $header_size);
|
50 |
-
$result['body'] = substr( $response, $header_size );
|
51 |
-
$result['http_code'] = curl_getinfo($ch,CURLINFO_HTTP_CODE);
|
52 |
-
$result['last_url'] = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
|
53 |
-
return $result;
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* method to set the feedName, log, apikey based on site Name
|
58 |
-
**/
|
59 |
-
public function init($site)
|
60 |
-
{
|
61 |
-
$this->fileName = Mage::getBaseDir('tmp').DS.str_replace(' ', '_',$site). "_Feed.json";
|
62 |
-
$this->key = Mage::getResourceSingleton("datafeeder/conf")->getValue("apiKey");
|
63 |
-
$this->siteName = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/siteName");
|
64 |
-
if(!isset($this->key) || $this->key == "" || $this->key == "empty"){
|
65 |
-
$this->log("api key not set");
|
66 |
-
return false;
|
67 |
-
}
|
68 |
-
if(!isset($this->siteName) || $this->siteName == "" || $this->siteName == "empty"){
|
69 |
-
$this->log("site Name not set");
|
70 |
-
return false;
|
71 |
-
}
|
72 |
-
return true;
|
73 |
-
}
|
74 |
-
|
75 |
-
/**
|
76 |
-
* method to validate whether the site exists or not
|
77 |
-
**/
|
78 |
-
public function validateSite($site){
|
79 |
-
$sites=Mage::app()->getWebsites();
|
80 |
-
if( !isset($site) || $site == "") {
|
81 |
-
return false;
|
82 |
-
}
|
83 |
-
foreach( $sites as $eachSite){
|
84 |
-
if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
|
85 |
-
return $eachSite->getWebsiteId();
|
86 |
-
}
|
87 |
-
}
|
88 |
-
return -1;
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* method to initiate feed uploading to the unbxd servers
|
93 |
-
**/
|
94 |
-
public function process($fromdate,$site,$operation = "add", $ids=array()){
|
95 |
-
|
96 |
-
$this->log('unbxd Datafeeder initiated');
|
97 |
-
// validatest the site
|
98 |
-
if($this->validateSite($site) == -1){
|
99 |
-
$this->log("Invalid site Name".$site);
|
100 |
-
return;
|
101 |
-
}
|
102 |
-
// set the basic
|
103 |
-
if(! $this->init($site)){
|
104 |
-
return;
|
105 |
-
}
|
106 |
-
$todate =date('Y-m-d H:i:s');
|
107 |
-
|
108 |
-
// check the lock, that if already indexing is happening
|
109 |
-
if($this->checkSiteLock($site)){
|
110 |
-
$this->log('site '. $site.' has been locked');
|
111 |
-
$action=$site.'/status';
|
112 |
-
// lock the feed
|
113 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($action,'1');
|
114 |
-
// create the feed
|
115 |
-
|
116 |
-
$status=Mage::getSingleton('unbxd_datafeeder/feed_feedcreator')
|
117 |
-
->createFeed($this->fileName, $fromdate,$todate,$site,$operation,$ids);
|
118 |
-
$this->log('unbxd Datafeeder finished creating file');
|
119 |
-
|
120 |
-
if($status){
|
121 |
-
try{
|
122 |
-
// if successful push it to unbxd servers
|
123 |
-
$status=$this->pushFeed($site);
|
124 |
-
}catch(Exception $e){
|
125 |
-
$this->log($e->getMessage());
|
126 |
-
|
127 |
-
}
|
128 |
-
if($status){
|
129 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction('Lastindex',$todate);
|
130 |
-
}
|
131 |
-
}
|
132 |
-
// unlock the feed once everything is completed
|
133 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($action,'0');
|
134 |
-
$this->log('site '. $site.' has been unlocked');
|
135 |
-
} else {
|
136 |
-
$this->log('Feed Uploading failed because site has been locked');
|
137 |
-
}
|
138 |
-
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* method to check the status of the uploading
|
142 |
-
**/
|
143 |
-
public function checkSiteLock($site)
|
144 |
-
{
|
145 |
-
$value = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/status");
|
146 |
-
if($value == '0' || $value == 'empty'){
|
147 |
-
$this->log("true");
|
148 |
-
return true;
|
149 |
-
}else{
|
150 |
-
$this->log("false". $value);
|
151 |
-
return false;
|
152 |
-
}
|
153 |
-
}
|
154 |
-
|
155 |
-
public function log($message) {
|
156 |
-
Mage::getSingleton('unbxd_datafeeder/feed_filemanager')->log($message);
|
157 |
-
}
|
158 |
-
}
|
159 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Feed/Jsonbuilder/Jsonbuilder.php
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Jsonbuilder {
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
}
|
8 |
-
|
9 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Feed/Jsonbuilder/Schemabuilder.php
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Schemabuilder extends Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Jsonbuilder {
|
4 |
-
|
5 |
-
|
6 |
-
const SCHEMA = 'schema';
|
7 |
-
const FIELD_NAME = "fieldName";
|
8 |
-
const DATA_TYPE = "dataType";
|
9 |
-
const MULTIVALUED = "multiValued";
|
10 |
-
const AUTOSUGGEST = "autoSuggest";
|
11 |
-
const TRUE = "true";
|
12 |
-
const FALSE = "false";
|
13 |
-
|
14 |
-
const FIELD_STATUS = 'status';
|
15 |
-
const FIELD_DATA_TYPE = 'data_type';
|
16 |
-
const FIELD_AUTOSUGGEST = 'autosuggest';
|
17 |
-
|
18 |
-
public function getSchema($fields) {
|
19 |
-
$jsonString = "";
|
20 |
-
$fieldList = array();
|
21 |
-
$featuredFields = Mage::getResourceSingleton("datafeeder/field")->getFeaturedFields();
|
22 |
-
$conflictedFeatureFields = Mage::getResourceSingleton("datafeeder/field")->getConflictedFeatureFieldLust();
|
23 |
-
foreach($fields as $fieldName=>$values ) {
|
24 |
-
if((array_key_exists(self::FIELD_STATUS, $values) && $values[self::FIELD_STATUS] == 1)
|
25 |
-
|| !array_key_exists($fieldName, $featuredFields)) {
|
26 |
-
$origFieldName = $fieldName;
|
27 |
-
if($fieldName[0] == "_") {
|
28 |
-
$origFieldName = (in_array(substr($fieldName, 1, strlen($fieldName)), $conflictedFeatureFields))
|
29 |
-
? substr($fieldName, 1, strlen($fieldName))
|
30 |
-
: $fieldName;
|
31 |
-
}
|
32 |
-
$fieldList[] = array(self::FIELD_NAME => $fieldName,
|
33 |
-
self::DATA_TYPE => $values[self::FIELD_DATA_TYPE],
|
34 |
-
self::MULTIVALUED => ($this->endsWith($fieldName, "Associated")?self::TRUE:(Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper')
|
35 |
-
->isMultiSelect($origFieldName)?
|
36 |
-
self::TRUE:self::FALSE)),
|
37 |
-
self::AUTOSUGGEST => ($values[self::FIELD_AUTOSUGGEST] == 1?
|
38 |
-
self::TRUE: self::FALSE));
|
39 |
-
}
|
40 |
-
}
|
41 |
-
return json_encode($fieldList);
|
42 |
-
}
|
43 |
-
|
44 |
-
|
45 |
-
function endsWith($haystack, $needle)
|
46 |
-
{
|
47 |
-
return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
|
48 |
-
}
|
49 |
-
}
|
50 |
-
|
51 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Field.php
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Field extends Mage_Core_Model_Abstract {
|
4 |
-
|
5 |
-
protected function _construct()
|
6 |
-
{
|
7 |
-
$this->_init('datafeeder/field');
|
8 |
-
}
|
9 |
-
}
|
10 |
-
|
11 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Conf.php
DELETED
@@ -1,47 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Mysql4_Conf extends Mage_Core_Model_Mysql4_Abstract
|
4 |
-
{
|
5 |
-
protected function _construct()
|
6 |
-
{
|
7 |
-
$this->_init('datafeeder/conf', 'uconfig_id');
|
8 |
-
}
|
9 |
-
|
10 |
-
public function getValue($action)
|
11 |
-
{
|
12 |
-
$collection=Mage::getModel('datafeeder/conf')->getCollection()
|
13 |
-
->addFieldToFilter('action',$action);
|
14 |
-
|
15 |
-
$count=0;
|
16 |
-
foreach($collection as $coll){
|
17 |
-
$count++;
|
18 |
-
$value=$coll->getvalue();
|
19 |
-
}
|
20 |
-
if($count==0){
|
21 |
-
$collection=Mage::getModel('datafeeder/conf')
|
22 |
-
->setAction($action)->setValue("empty")->save();
|
23 |
-
$value="empty";
|
24 |
-
}
|
25 |
-
return $value;
|
26 |
-
}
|
27 |
-
|
28 |
-
public function updateAction($action,$value)
|
29 |
-
{
|
30 |
-
if (!isset($value) || $value == "") {
|
31 |
-
return;
|
32 |
-
}
|
33 |
-
$collection=Mage::getModel('datafeeder/conf')->getCollection()
|
34 |
-
->addFieldToFilter('action',$action);
|
35 |
-
|
36 |
-
$count=0;
|
37 |
-
foreach($collection as $coll){
|
38 |
-
$count++;
|
39 |
-
Mage::getModel('datafeeder/conf')->load($coll->getId())->setValue($value)->save();
|
40 |
-
}
|
41 |
-
if($count==0){
|
42 |
-
$collection=Mage::getModel('datafeeder/conf')
|
43 |
-
->setAction($action)->setValue($value)->save();
|
44 |
-
}
|
45 |
-
}
|
46 |
-
}
|
47 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Conf/Collection.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Mysql4_Conf_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
-
{
|
5 |
-
|
6 |
-
public function _construct()
|
7 |
-
{
|
8 |
-
$this->_init('datafeeder/conf');
|
9 |
-
}
|
10 |
-
|
11 |
-
}
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Field.php
DELETED
@@ -1,192 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Mysql4_Field extends Mage_Core_Model_Mysql4_Abstract
|
4 |
-
{
|
5 |
-
|
6 |
-
const STATUS = 'status';
|
7 |
-
const DATA_TYPE = 'data_type';
|
8 |
-
const SITE = 'site';
|
9 |
-
const FIELD_NAME = "name";
|
10 |
-
const TABLE_NAME = 'unbxd_field';
|
11 |
-
const AUTOSUGGEST = 'autosuggest';
|
12 |
-
const MULTIVALUED = 'multiValued';
|
13 |
-
const IMAGE_HEIGHT = "image_height";
|
14 |
-
const IMAGE_WIDTH = "image_width";
|
15 |
-
const GENERATE_IMAGE = "generate_image";
|
16 |
-
|
17 |
-
protected function _construct()
|
18 |
-
{
|
19 |
-
$this->_init('datafeeder/field', 'field_id');
|
20 |
-
}
|
21 |
-
|
22 |
-
/*
|
23 |
-
* Method to get Unbxd Fields Configuration as Mapping give the site
|
24 |
-
*/
|
25 |
-
public function getFieldMapping($site, $enabledFields = false) {
|
26 |
-
$results = Mage::getModel('datafeeder/field')->getCollection()->addFieldToFilter(self::SITE, $site);
|
27 |
-
$fieldMapping = array();
|
28 |
-
$_reader = Mage::getSingleton('core/resource')->getConnection('core_read');
|
29 |
-
if(method_exists($_reader, 'getTableName')) {
|
30 |
-
$table = $_reader->getTableName(self::TABLE_NAME);
|
31 |
-
} else {
|
32 |
-
$table = self::TABLE_NAME;
|
33 |
-
}
|
34 |
-
$select = $_reader->select();
|
35 |
-
$select->from($table);
|
36 |
-
$filterCond = self::SITE . " = '" . $site . "'";
|
37 |
-
if($enabledFields) {
|
38 |
-
$filterCond = $filterCond . " AND " . self::STATUS ."='1'";
|
39 |
-
}
|
40 |
-
|
41 |
-
$select->where($filterCond);
|
42 |
-
$results = $_reader->fetchAll($select);
|
43 |
-
|
44 |
-
foreach($results as $eachResult) {
|
45 |
-
$fieldMapping[$eachResult[self::FIELD_NAME]] = array(self::STATUS => $eachResult[self::STATUS],
|
46 |
-
self::DATA_TYPE => $eachResult[self::DATA_TYPE],
|
47 |
-
self::AUTOSUGGEST => $eachResult[self::AUTOSUGGEST],
|
48 |
-
self::IMAGE_HEIGHT =>$eachResult[self::IMAGE_HEIGHT],
|
49 |
-
self::IMAGE_WIDTH => $eachResult[self::IMAGE_WIDTH],
|
50 |
-
self::GENERATE_IMAGE =>$eachResult[self::GENERATE_IMAGE]
|
51 |
-
);
|
52 |
-
}
|
53 |
-
return $fieldMapping;
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Returns the fields as an array of field Name to value
|
58 |
-
**/
|
59 |
-
public function getFields($site) {
|
60 |
-
$fieldMapping = $this->getFieldMapping($site);
|
61 |
-
$deltaUpdate = array();
|
62 |
-
$attributes = Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper')->getAttributes();
|
63 |
-
$escapedFields = $this->getConflictedFeatureFieldLust();
|
64 |
-
foreach($attributes as $attribute){
|
65 |
-
$fieldName = $attribute->getAttributeCode();
|
66 |
-
|
67 |
-
if (in_array($fieldName, $escapedFields)) {
|
68 |
-
$fieldName = "_".$fieldName;
|
69 |
-
}
|
70 |
-
if (!array_key_exists($fieldName, $fieldMapping)) {
|
71 |
-
$deltaUpdate[$fieldName] = array(self::STATUS => 1, self::DATA_TYPE => 'longText');
|
72 |
-
$fieldMapping[$fieldName] = array(self::STATUS => 1,
|
73 |
-
self::DATA_TYPE => 'longText',
|
74 |
-
self::AUTOSUGGEST => 1,
|
75 |
-
self::IMAGE_HEIGHT => 0,
|
76 |
-
self::IMAGE_WIDTH =>0,
|
77 |
-
self::GENERATE_IMAGE =>0);
|
78 |
-
}
|
79 |
-
if(!array_key_exists($fieldName."Associated", $fieldMapping)) {
|
80 |
-
$deltaUpdate[$fieldName."Associated"] = array(self::STATUS => 0, self::DATA_TYPE => 'longText');
|
81 |
-
$fieldMapping[$fieldName."Associated"] = array(self::STATUS => 0,
|
82 |
-
self::DATA_TYPE => 'longText',
|
83 |
-
self::AUTOSUGGEST => 1,
|
84 |
-
self::IMAGE_HEIGHT => 0,
|
85 |
-
self::IMAGE_WIDTH =>0,
|
86 |
-
self::GENERATE_IMAGE =>0);
|
87 |
-
}
|
88 |
-
}
|
89 |
-
if(sizeof($deltaUpdate) > 0) {
|
90 |
-
$this->saveField($deltaUpdate, $site);
|
91 |
-
}
|
92 |
-
return $fieldMapping;
|
93 |
-
}
|
94 |
-
|
95 |
-
/*
|
96 |
-
* update fields
|
97 |
-
*/
|
98 |
-
public function updateFields($fieldMapping, $site) {
|
99 |
-
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
|
100 |
-
if(method_exists($write, 'getTableName')) {
|
101 |
-
$table = $write->getTableName(self::TABLE_NAME);
|
102 |
-
} else {
|
103 |
-
$table = self::TABLE_NAME;
|
104 |
-
}
|
105 |
-
foreach($fieldMapping as $fieldName=>$values) {
|
106 |
-
$values = json_decode($values, true);
|
107 |
-
if (!isset($values[self::STATUS]) || !isset($values[self::DATA_TYPE]) ||
|
108 |
-
!($values[self::STATUS] == 0 || $values[self::STATUS] == 1)) {
|
109 |
-
throw new Exception("Invalid data with field " . $fieldName);
|
110 |
-
}
|
111 |
-
$updateQuery = 'UPDATE `'. $table .'` set '.
|
112 |
-
self::STATUS ." = '".$values[self::STATUS]."' , ".
|
113 |
-
self::DATA_TYPE." = '". $values[self::DATA_TYPE]."' , ".
|
114 |
-
self::AUTOSUGGEST." = '". $values[self::AUTOSUGGEST]."' , ".
|
115 |
-
self::IMAGE_HEIGHT." = '". (is_int($values[self::IMAGE_HEIGHT])?$values[self::IMAGE_HEIGHT]:0) ."' , ".
|
116 |
-
self::IMAGE_WIDTH ." = '". (is_int($values[self::IMAGE_WIDTH])?$values[self::IMAGE_WIDTH]:0)."' , ".
|
117 |
-
self::GENERATE_IMAGE." = '".$values[self::GENERATE_IMAGE]."' ".
|
118 |
-
' where '.self::SITE . "='". $site . "' AND " . self::FIELD_NAME . "='".$fieldName."'";
|
119 |
-
$write->query($updateQuery);
|
120 |
-
}
|
121 |
-
}
|
122 |
-
|
123 |
-
/*
|
124 |
-
* method to save the fieldMapping information
|
125 |
-
*/
|
126 |
-
public function saveField($fieldMapping, $site) {
|
127 |
-
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
|
128 |
-
$insertingRequestArray = array();
|
129 |
-
foreach($fieldMapping as $field=>$value) {
|
130 |
-
$insertingRequest = array();
|
131 |
-
$insertingRequest[self::FIELD_NAME] = $field;
|
132 |
-
$insertingRequest[self::STATUS] = $value[self::STATUS];
|
133 |
-
$insertingRequest[self::SITE] = $site;
|
134 |
-
$insertingRequest[self::DATA_TYPE] = $value[self::DATA_TYPE];
|
135 |
-
$insertingRequest[self::AUTOSUGGEST] = $value[self::AUTOSUGGEST];
|
136 |
-
$insertingRequest[self::IMAGE_HEIGHT] = $value[self::IMAGE_HEIGHT];
|
137 |
-
$insertingRequest[self::IMAGE_WIDTH] = $value[self::IMAGE_WIDTH];
|
138 |
-
$insertingRequest[self::GENERATE_IMAGE] = $value[self::GENERATE_IMAGE];
|
139 |
-
$insertingRequestArray[] = $insertingRequest;
|
140 |
-
}
|
141 |
-
if(method_exists($write, 'getTableName')) {
|
142 |
-
$table = $write->getTableName(self::TABLE_NAME);
|
143 |
-
} else {
|
144 |
-
$table = self::TABLE_NAME;
|
145 |
-
}
|
146 |
-
|
147 |
-
$write->insertMultiple($table, $insertingRequestArray);
|
148 |
-
}
|
149 |
-
|
150 |
-
/*
|
151 |
-
* method to get the featured fields
|
152 |
-
*/
|
153 |
-
public function getFeaturedFields() {
|
154 |
-
$featuredFields = array();
|
155 |
-
$featuredFields["uniqueId"]=$this->getField("text", "false", "false");
|
156 |
-
$featuredFields["sellingPrice"]=$this->getField("decimal", "false", "false");
|
157 |
-
$featuredFields["discount"]=$this->getField("decimal", "false", "false");
|
158 |
-
$featuredFields["rating"]=$this->getField("decimal", "false", "false");
|
159 |
-
$featuredFields["brandId"]=$this->getField("text", "false", "false");
|
160 |
-
$featuredFields["catlevel1Name"]=$this->getField("text", "false", "false");
|
161 |
-
$featuredFields["catlevel2Name"]=$this->getField("text", "false", "false");
|
162 |
-
$featuredFields["catlevel3Name"]=$this->getField("text", "false", "false");
|
163 |
-
$featuredFields["catlevel4Name"]=$this->getField("text", "false", "false");
|
164 |
-
$featuredFields["category"]=$this->getField("text", "true", "true");
|
165 |
-
$featuredFields["subCategory"]=$this->getField("text", "true", "true");
|
166 |
-
$featuredFields["color"]=$this->getField("text", "true", "false");
|
167 |
-
$featuredFields["size"]=$this->getField("text", "true", "false");
|
168 |
-
$featuredFields["availability"]=$this->getField("bool", "false", "false");
|
169 |
-
$featuredFields["description"]=$this->getField("longText", "false", "false");
|
170 |
-
$featuredFields["imageUrl"]=$this->getField("link", "true", "false");
|
171 |
-
$featuredFields["productUrl"]=$this->getField("link", "false", "false");
|
172 |
-
$featuredFields["brand"]=$this->getField("text", "false", "true");
|
173 |
-
$featuredFields["price"]=$this->getField("decimal", "false", "false");
|
174 |
-
$featuredFields["title"]=$this->getField("text", "false", "true");
|
175 |
-
$featuredFields["gender"]=$this->getField("text", "false", "false");
|
176 |
-
$featuredFields["unbxdVisibility"]=$this->getField("text", "false", "false");
|
177 |
-
return $featuredFields;
|
178 |
-
}
|
179 |
-
|
180 |
-
public function getField($dataType, $multiValued, $autosuggest) {
|
181 |
-
return array( self::DATA_TYPE => $dataType,
|
182 |
-
self::MULTIVALUED => ($multiValued=="true")?1:0,
|
183 |
-
self::AUTOSUGGEST => ($autosuggest=="true")?1:0 );
|
184 |
-
|
185 |
-
}
|
186 |
-
|
187 |
-
|
188 |
-
public function getConflictedFeatureFieldLust() {
|
189 |
-
return array('gender');
|
190 |
-
}
|
191 |
-
}
|
192 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Field/Collection.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Mysql4_Field_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
-
{
|
5 |
-
|
6 |
-
public function _construct()
|
7 |
-
{
|
8 |
-
$this->_init('datafeeder/field');
|
9 |
-
}
|
10 |
-
|
11 |
-
}
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Resource/Attribute.php
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_Model_Resource_Attribute{
|
4 |
-
|
5 |
-
$attributeMap = array();
|
6 |
-
public function getAttributeValue($attributeCode, $label, $product){
|
7 |
-
if(!isset($this->attributeMap[$label])){
|
8 |
-
if(!($product instanceof Mage_Catalog_Model_Product)){
|
9 |
-
return null;
|
10 |
-
}
|
11 |
-
$options = $product->getAttribute($attributeCode)
|
12 |
-
->getSource()->getAllOptions();
|
13 |
-
foreach($options as $option){
|
14 |
-
$this->attributeMap[$option["label"]] = $option["value"];
|
15 |
-
}
|
16 |
-
}
|
17 |
-
return $this->attributeMap[$label];
|
18 |
-
}
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/Model/Mysql4/Upgrade.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Unbxd_Datafeeder_Model_Mysql4_Upgrade {
|
3 |
-
|
4 |
-
public function upgrade010To105() {
|
5 |
-
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
|
6 |
-
$unbxdFieldTable = $write->getTableName('unbxd_field');
|
7 |
-
$unbxdConfTable = $write->getTableName('unbxd_datafeeder_conf');
|
8 |
-
$write->query("
|
9 |
-
DROP TABLE IF EXISTS `{$unbxdFieldTable}`;
|
10 |
-
|
11 |
-
CREATE TABLE `{$unbxdFieldTable}` (
|
12 |
-
`field_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
13 |
-
`name` varchar(100) NOT NULL DEFAULT '',
|
14 |
-
`status` int(1) NOT NULL DEFAULT '1',
|
15 |
-
`site` varchar(100) NOT NULL DEFAULT '',
|
16 |
-
`data_type` varchar(20) NOT NULL DEFAULT 'longText',
|
17 |
-
`autosuggest` int(1) NOT NULL DEFAULT '0',
|
18 |
-
`image_height` int(5) NOT NULL DEFAULT '0',
|
19 |
-
`image_width` int(5) NOT NULL DEFAULT '0',
|
20 |
-
`generate_image` int(1) NOT NULL DEFAULT '0',
|
21 |
-
PRIMARY KEY (`field_id`)
|
22 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
23 |
-
|
24 |
-
DROP TABLE IF EXISTS `{$unbxdConfTable}`;
|
25 |
-
|
26 |
-
CREATE TABLE `{$unbxdConfTable}` (
|
27 |
-
`uconfig_id` int(10) unsigned NOT NULL auto_increment,
|
28 |
-
`action` varchar(255) NOT NULL default '',
|
29 |
-
`value` varchar(255),
|
30 |
-
PRIMARY KEY (`uconfig_id`)
|
31 |
-
|
32 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
33 |
-
");
|
34 |
-
}
|
35 |
-
|
36 |
-
}
|
37 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/controllers/ConfigController.php
DELETED
@@ -1,80 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
class Unbxd_Datafeeder_ConfigController extends Mage_Core_Controller_Front_Action
|
3 |
-
{
|
4 |
-
|
5 |
-
public function indexAction(){
|
6 |
-
$fromdate="1970-01-01 00:00:00";
|
7 |
-
$site=$this->getRequest()->getParam("site");
|
8 |
-
Mage::getSingleton('unbxd_datafeeder/feed_feedmanager')->process($fromdate,$site);
|
9 |
-
echo "Done";
|
10 |
-
}
|
11 |
-
|
12 |
-
/**
|
13 |
-
* gets all the stores
|
14 |
-
*/
|
15 |
-
public function getAllstoreAction(){
|
16 |
-
|
17 |
-
$allStores = Mage::app()->getStores();
|
18 |
-
|
19 |
-
foreach ($allStores as $_eachStoreId => $val)
|
20 |
-
{
|
21 |
-
$_storeCode = Mage::app()->getStore($_eachStoreId)->getCode();
|
22 |
-
$_storeName = Mage::app()->getStore($_eachStoreId)->getName();
|
23 |
-
$_storeId = Mage::app()->getStore($_eachStoreId)->getId();
|
24 |
-
echo $_storeId."<br/>";
|
25 |
-
echo $_storeCode."<br/>";
|
26 |
-
echo $_storeName."<br/>";
|
27 |
-
}
|
28 |
-
$allsites=Mage::app()->getWebsites();
|
29 |
-
foreach($allsites as $site){
|
30 |
-
echo $site->getName();
|
31 |
-
}
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* resets the lock if the feed has been locked
|
36 |
-
**/
|
37 |
-
public function resetAction(){
|
38 |
-
$site=$this->getRequest()->getParam("site");
|
39 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($site.'/status','0');
|
40 |
-
$this->getResponse()->setBody("success");
|
41 |
-
$this->getResponse()->setHttpResponseCode(200);
|
42 |
-
}
|
43 |
-
|
44 |
-
public function getstoreviewAction(){
|
45 |
-
|
46 |
-
echo gettype(Mage::getModel('datafeeder/field'));
|
47 |
-
$collection= Mage::getModel("datafeeder/field")->getCollection();
|
48 |
-
foreach($collection as $coll){
|
49 |
-
echo $coll->getName();
|
50 |
-
}
|
51 |
-
}
|
52 |
-
|
53 |
-
public function progressAction()
|
54 |
-
{
|
55 |
-
$site = $this->getRequest()->getParam("site");
|
56 |
-
$status = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/status");
|
57 |
-
if($status == 'empty'){
|
58 |
-
$status = '0';
|
59 |
-
}
|
60 |
-
echo '{"status":"'.$status.'"}';
|
61 |
-
}
|
62 |
-
|
63 |
-
public function getfeedconfAction(){
|
64 |
-
$site = $this->getRequest()->getParam("site");
|
65 |
-
if(isset($site) && $site != ""){
|
66 |
-
$response = array();
|
67 |
-
$response["feed"] = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/feed");
|
68 |
-
$response["tax"] = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/tax");
|
69 |
-
$response["siteName"] = Mage::getResourceSingleton("datafeeder/conf")->getValue($site."/siteName");
|
70 |
-
echo json_encode($response);
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
public function upgradedbAction() {
|
75 |
-
Mage::getResourceSingleton("datafeeder/upgrade")->upgrade010To105();
|
76 |
-
echo json_encode( array('success' => 'true' ));
|
77 |
-
}
|
78 |
-
}
|
79 |
-
?>
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/controllers/FieldController.php
DELETED
@@ -1,52 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_FieldController extends Mage_Core_Controller_Front_Action
|
4 |
-
{
|
5 |
-
|
6 |
-
const FIELD_MODEL = 'datafeeder/field';
|
7 |
-
|
8 |
-
public function configAction() {
|
9 |
-
$site=$this->getRequest()->getParam("site");
|
10 |
-
if(!isset($site)){
|
11 |
-
echo '{"failed": "no site sent"}';
|
12 |
-
return;
|
13 |
-
}
|
14 |
-
$fields = Mage::getResourceSingleton(self::FIELD_MODEL)->getFields($site);
|
15 |
-
foreach ($fields as $field => $value) {
|
16 |
-
if (Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper')->isImage($field)) {
|
17 |
-
|
18 |
-
$value["is_image"] = "true";
|
19 |
-
$fields[$field] = $value;
|
20 |
-
}
|
21 |
-
}
|
22 |
-
echo json_encode($fields);
|
23 |
-
}
|
24 |
-
|
25 |
-
public function saveAction()
|
26 |
-
{
|
27 |
-
$params=$this->getRequest()->getParams();
|
28 |
-
if(!isset($params) || count($params) == 0) {
|
29 |
-
echo json_encode(array("success"=>"false", "message"=>"No Fields Passed"));
|
30 |
-
return;
|
31 |
-
}
|
32 |
-
$singleProductData = json_decode(reset($params), true);
|
33 |
-
if(!isset($singleProductData)) {
|
34 |
-
echo json_encode(array("success"=>"false", "message"=>"Improper Data format"));
|
35 |
-
return;
|
36 |
-
}
|
37 |
-
$site = $singleProductData["site_name"];
|
38 |
-
if (!isset($site)) {
|
39 |
-
echo json_encode(array("success"=>"false", "message"=>"site needed"));
|
40 |
-
return;
|
41 |
-
}
|
42 |
-
try {
|
43 |
-
$fields = Mage::getResourceSingleton(self::FIELD_MODEL)->updateFields($params,$site);
|
44 |
-
} catch(Exception $ex) {
|
45 |
-
error_log($ex->getMessage());
|
46 |
-
echo json_encode(array("success"=>"false", "message" => $ex));
|
47 |
-
return;
|
48 |
-
}
|
49 |
-
echo json_encode(array("success"=>"true"));
|
50 |
-
}
|
51 |
-
}
|
52 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/controllers/IndexController.php
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Unbxd_Datafeeder_IndexController extends Mage_Adminhtml_Controller_Action {
|
4 |
-
|
5 |
-
protected function _getSession()
|
6 |
-
{
|
7 |
-
return Mage::getSingleton('catalog/session');
|
8 |
-
}
|
9 |
-
|
10 |
-
public function saveapiAction()
|
11 |
-
{
|
12 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction("apiKey", $this->getRequest()->getparam("apikey"));
|
13 |
-
$this->loadLayout();
|
14 |
-
$this->_addContent($this->getLayout()->createBlock('unbxd_datafeeder/index')->setTemplate('datafeeder/conf.phtml'));
|
15 |
-
$this->renderLayout();
|
16 |
-
}
|
17 |
-
|
18 |
-
public function savefeedconfAction(){
|
19 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($this->getRequest()->getparam("site")."/feed", $this->getRequest()->getparam("feedName"));
|
20 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($this->getRequest()->getparam("site")."/tax", $this->getRequest()->getparam("feedName"));
|
21 |
-
Mage::getResourceSingleton("datafeeder/conf")->updateAction($this->getRequest()->getparam("site")."/siteName", $this->getRequest()->getparam("siteName"));
|
22 |
-
|
23 |
-
$this->loadLayout();
|
24 |
-
$this->_addContent($this->getLayout()->createBlock('unbxd_datafeeder/index')->setTemplate('datafeeder/conf.phtml'));
|
25 |
-
$this->renderLayout();
|
26 |
-
}
|
27 |
-
|
28 |
-
public function indexAction()
|
29 |
-
{
|
30 |
-
$this->loadLayout();
|
31 |
-
$this->_addContent($this->getLayout()->createBlock('unbxd_datafeeder/index')->setTemplate('datafeeder/conf.phtml'));
|
32 |
-
$this->renderLayout();
|
33 |
-
}
|
34 |
-
|
35 |
-
public function fullindexAction(){
|
36 |
-
$_helper=Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper');
|
37 |
-
$fromdate="1970-01-01 00:00:00";
|
38 |
-
$site=$this->getRequest()->getPost("site");
|
39 |
-
//$_helper->indexUnbxdFeed($fromdate,$site);
|
40 |
-
Mage::getSingleton('unbxd_datafeeder/feed_feedmanager')->process($fromdate,$site);
|
41 |
-
echo "Done";
|
42 |
-
}
|
43 |
-
|
44 |
-
public function taxonomyindexAction(){
|
45 |
-
$_helper=Mage::helper('unbxd_datafeeder/UnbxdTaxonomyHelper');
|
46 |
-
$site=$this->getRequest()->getPost("site");
|
47 |
-
$_helper->indexUnbxdFeed($site);
|
48 |
-
}
|
49 |
-
|
50 |
-
public function incrementalindexAction()
|
51 |
-
{
|
52 |
-
$_helper=Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper');
|
53 |
-
$fromdate=Mage::getResourceSingleton("datafeeder/conf")->getValue("Lastindex");
|
54 |
-
if(is_null($fromdate)){
|
55 |
-
$fromdate="1970-01-01 00:00:00";
|
56 |
-
}
|
57 |
-
$site=$this->getRequest()->getPost("site");
|
58 |
-
$_helper->indexUnbxdFeed($fromdate,$site);
|
59 |
-
echo "Done";
|
60 |
-
}
|
61 |
-
} ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/etc/adminhtml.xml
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<config>
|
3 |
-
<menu>
|
4 |
-
<unbxd_datafeeder translate="title" module="unbxd_datafeeder">
|
5 |
-
<title>Unbxd</title>
|
6 |
-
<sort_order>30</sort_order>
|
7 |
-
<children>
|
8 |
-
<upload translate="title" module="unbxd_datafeeder">
|
9 |
-
<title>Upload Configuration</title>
|
10 |
-
<sort_order>11</sort_order>
|
11 |
-
<action>datafeeder/index/index</action>
|
12 |
-
</upload>
|
13 |
-
</children>
|
14 |
-
</unbxd_datafeeder>
|
15 |
-
</menu>
|
16 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/etc/config.xml
DELETED
@@ -1,119 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<config>
|
3 |
-
<modules>
|
4 |
-
<Unbxd_Datafeeder>
|
5 |
-
<version>1.0.5</version>
|
6 |
-
</Unbxd_Datafeeder>
|
7 |
-
</modules>
|
8 |
-
<frontend>
|
9 |
-
<routers>
|
10 |
-
<datafeeder>
|
11 |
-
<use>standard</use>
|
12 |
-
<args>
|
13 |
-
<module>Unbxd_Datafeeder</module>
|
14 |
-
<frontName>datafeeder</frontName>
|
15 |
-
</args>
|
16 |
-
</datafeeder>
|
17 |
-
</routers>
|
18 |
-
</frontend>
|
19 |
-
<global>
|
20 |
-
<models>
|
21 |
-
<unbxd_datafeeder>
|
22 |
-
<class>Unbxd_Datafeeder_Model</class>
|
23 |
-
<resourceModel>unbxd_datafeeder_resource</resourceModel>
|
24 |
-
</unbxd_datafeeder>
|
25 |
-
<unbxd_datafeeder_resource>
|
26 |
-
<class>Unbxd_Datafeeder_Model_Resource</class>
|
27 |
-
</unbxd_datafeeder_resource>
|
28 |
-
</models>
|
29 |
-
<blocks>
|
30 |
-
<unbxd_datafeeder>
|
31 |
-
<class>Unbxd_Datafeeder_Block</class>
|
32 |
-
</unbxd_datafeeder>
|
33 |
-
</blocks>
|
34 |
-
</global>
|
35 |
-
<global>
|
36 |
-
<helpers>
|
37 |
-
<unbxd_datafeeder>
|
38 |
-
<class>Unbxd_Datafeeder_Helper</class>
|
39 |
-
</unbxd_datafeeder>
|
40 |
-
</helpers>
|
41 |
-
</global>
|
42 |
-
<admin>
|
43 |
-
<routers>
|
44 |
-
<unbxd_router>
|
45 |
-
<use>admin</use>
|
46 |
-
<args>
|
47 |
-
<module>Unbxd_Datafeeder</module>
|
48 |
-
<frontName>datafeeder</frontName>
|
49 |
-
</args>
|
50 |
-
</unbxd_router>
|
51 |
-
</routers>
|
52 |
-
</admin>
|
53 |
-
<adminhtml>
|
54 |
-
<!-- The <layout> updates allow us to define our block layouts in a separate file so are aren't messin' with the Magento layout files. -->
|
55 |
-
<layout>
|
56 |
-
<updates>
|
57 |
-
<unbxd_datafeeder>
|
58 |
-
<file>unbxd_datafeeder.xml</file>
|
59 |
-
</unbxd_datafeeder>
|
60 |
-
</updates>
|
61 |
-
</layout>
|
62 |
-
<!-- The <acl> section is for access control. Here we define the pieces where access can be controlled within a role. -->
|
63 |
-
<acl>
|
64 |
-
<resources>
|
65 |
-
<admin>
|
66 |
-
<children>
|
67 |
-
<unbxd_datafeeder>
|
68 |
-
<title>Unbxd Menu Item</title>
|
69 |
-
<children>
|
70 |
-
<example translate="title" module="unbxd_datafeeder">
|
71 |
-
<title>Example Menu Item</title>
|
72 |
-
</example>
|
73 |
-
</children>
|
74 |
-
</unbxd_datafeeder>
|
75 |
-
</children>
|
76 |
-
</admin>
|
77 |
-
</resources>
|
78 |
-
</acl>
|
79 |
-
</adminhtml>
|
80 |
-
<global>
|
81 |
-
<models>
|
82 |
-
<datafeeder>
|
83 |
-
<class>Unbxd_Datafeeder_Model</class>
|
84 |
-
<resourceModel>datafeeder_mysql4</resourceModel>
|
85 |
-
</datafeeder>
|
86 |
-
<datafeeder_mysql4>
|
87 |
-
<class>Unbxd_Datafeeder_Model_Mysql4</class>
|
88 |
-
<entities>
|
89 |
-
<conf>
|
90 |
-
<table>unbxd_datafeeder_conf</table>
|
91 |
-
</conf>
|
92 |
-
<field>
|
93 |
-
<table>unbxd_field</table>
|
94 |
-
</field>
|
95 |
-
</entities>
|
96 |
-
</datafeeder_mysql4>
|
97 |
-
</models>
|
98 |
-
<resources>
|
99 |
-
<datafeeder_setup>
|
100 |
-
<setup>
|
101 |
-
<module>Unbxd_Datafeeder</module>
|
102 |
-
</setup>
|
103 |
-
<connection>
|
104 |
-
<use>core_setup</use>
|
105 |
-
</connection>
|
106 |
-
</datafeeder_setup>
|
107 |
-
<datafeeder_write>
|
108 |
-
<connection>
|
109 |
-
<use>core_write</use>
|
110 |
-
</connection>
|
111 |
-
</datafeeder_write>
|
112 |
-
<datafeeder_read>
|
113 |
-
<connection>
|
114 |
-
<use>core_read</use>
|
115 |
-
</connection>
|
116 |
-
</datafeeder_read>
|
117 |
-
</resources>
|
118 |
-
</global>
|
119 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/scripts/Cron.php
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
require_once 'abstract.php';
|
3 |
-
|
4 |
-
class Unbxd_Datafeeder_Scripts_Cron extends Mage_Shell_Abstract
|
5 |
-
{
|
6 |
-
|
7 |
-
public function _getIndexer()
|
8 |
-
{
|
9 |
-
return Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper');
|
10 |
-
}
|
11 |
-
|
12 |
-
public function run(){
|
13 |
-
$_helper = _getIndexer();
|
14 |
-
$fromdate="1970-01-01 00:00:00";
|
15 |
-
$site='Main Site';
|
16 |
-
|
17 |
-
$_helper->indexUnbxdFeed($fromdate,$site);
|
18 |
-
}
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
|
23 |
-
$shell = new Unbxd_Datafeeder_Scripts_Cron();
|
24 |
-
$shell->run();
|
25 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/scripts/abstract.php
DELETED
@@ -1,218 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Magento
|
4 |
-
*
|
5 |
-
* NOTICE OF LICENSE
|
6 |
-
*
|
7 |
-
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
-
* that is bundled with this package in the file LICENSE.txt.
|
9 |
-
* It is also available through the world-wide-web at this URL:
|
10 |
-
* http://opensource.org/licenses/osl-3.0.php
|
11 |
-
* If you did not receive a copy of the license and are unable to
|
12 |
-
* obtain it through the world-wide-web, please send an email
|
13 |
-
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
-
*
|
15 |
-
* DISCLAIMER
|
16 |
-
*
|
17 |
-
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
-
* versions in the future. If you wish to customize Magento for your
|
19 |
-
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
-
*
|
21 |
-
* @category Mage
|
22 |
-
* @package Mage_Shell
|
23 |
-
* @copyright Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
24 |
-
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
-
*/
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Shell scripts abstract class
|
29 |
-
*
|
30 |
-
* @category Mage
|
31 |
-
* @package Mage_Shell
|
32 |
-
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
-
*/
|
34 |
-
abstract class Mage_Shell_Abstract
|
35 |
-
{
|
36 |
-
/**
|
37 |
-
* Is include Mage and initialize application
|
38 |
-
*
|
39 |
-
* @var bool
|
40 |
-
*/
|
41 |
-
protected $_includeMage = true;
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Magento Root path
|
45 |
-
*
|
46 |
-
* @var string
|
47 |
-
*/
|
48 |
-
protected $_rootPath;
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Initialize application with code (store, website code)
|
52 |
-
*
|
53 |
-
* @var string
|
54 |
-
*/
|
55 |
-
protected $_appCode = 'admin';
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Initialize application code type (store, website, store_group)
|
59 |
-
*
|
60 |
-
* @var string
|
61 |
-
*/
|
62 |
-
protected $_appType = 'store';
|
63 |
-
|
64 |
-
/**
|
65 |
-
* Input arguments
|
66 |
-
*
|
67 |
-
* @var array
|
68 |
-
*/
|
69 |
-
protected $_args = array();
|
70 |
-
|
71 |
-
/**
|
72 |
-
* Initialize application and parse input parameters
|
73 |
-
*
|
74 |
-
*/
|
75 |
-
public function __construct()
|
76 |
-
{
|
77 |
-
if ($this->_includeMage) {
|
78 |
-
require_once $this->_getRootPath() . 'app' . DIRECTORY_SEPARATOR . 'Mage.php';
|
79 |
-
Mage::app($this->_appCode, $this->_appType);
|
80 |
-
}
|
81 |
-
|
82 |
-
$this->_applyPhpVariables();
|
83 |
-
$this->_parseArgs();
|
84 |
-
$this->_construct();
|
85 |
-
$this->_validate();
|
86 |
-
$this->_showHelp();
|
87 |
-
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Get Magento Root path (with last directory separator)
|
91 |
-
*
|
92 |
-
* @return string
|
93 |
-
*/
|
94 |
-
protected function _getRootPath()
|
95 |
-
{
|
96 |
-
if (is_null($this->_rootPath)) {
|
97 |
-
$this->_rootPath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR;
|
98 |
-
}
|
99 |
-
return $this->_rootPath;
|
100 |
-
}
|
101 |
-
|
102 |
-
/**
|
103 |
-
* Parse .htaccess file and apply php settings to shell script
|
104 |
-
*
|
105 |
-
*/
|
106 |
-
protected function _applyPhpVariables()
|
107 |
-
{
|
108 |
-
$htaccess = $this->_getRootPath() . '.htaccess';
|
109 |
-
if (file_exists($htaccess)) {
|
110 |
-
// parse htaccess file
|
111 |
-
$data = file_get_contents($htaccess);
|
112 |
-
$matches = array();
|
113 |
-
preg_match_all('#^\s+?php_value\s+([a-z_]+)\s+(.+)$#siUm', $data, $matches, PREG_SET_ORDER);
|
114 |
-
if ($matches) {
|
115 |
-
foreach ($matches as $match) {
|
116 |
-
@ini_set($match[1], str_replace("\r", '', $match[2]));
|
117 |
-
}
|
118 |
-
}
|
119 |
-
preg_match_all('#^\s+?php_flag\s+([a-z_]+)\s+(.+)$#siUm', $data, $matches, PREG_SET_ORDER);
|
120 |
-
if ($matches) {
|
121 |
-
foreach ($matches as $match) {
|
122 |
-
@ini_set($match[1], str_replace("\r", '', $match[2]));
|
123 |
-
}
|
124 |
-
}
|
125 |
-
}
|
126 |
-
}
|
127 |
-
|
128 |
-
/**
|
129 |
-
* Parse input arguments
|
130 |
-
*
|
131 |
-
* @return Mage_Shell_Abstract
|
132 |
-
*/
|
133 |
-
protected function _parseArgs()
|
134 |
-
{
|
135 |
-
$current = null;
|
136 |
-
foreach ($_SERVER['argv'] as $arg) {
|
137 |
-
$match = array();
|
138 |
-
if (preg_match('#^--([\w\d_-]{1,})$#', $arg, $match) || preg_match('#^-([\w\d_]{1,})$#', $arg, $match)) {
|
139 |
-
$current = $match[1];
|
140 |
-
$this->_args[$current] = true;
|
141 |
-
} else {
|
142 |
-
if ($current) {
|
143 |
-
$this->_args[$current] = $arg;
|
144 |
-
} else if (preg_match('#^([\w\d_]{1,})$#', $arg, $match)) {
|
145 |
-
$this->_args[$match[1]] = true;
|
146 |
-
}
|
147 |
-
}
|
148 |
-
}
|
149 |
-
return $this;
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Additional initialize instruction
|
154 |
-
*
|
155 |
-
* @return Mage_Shell_Abstract
|
156 |
-
*/
|
157 |
-
protected function _construct()
|
158 |
-
{
|
159 |
-
return $this;
|
160 |
-
}
|
161 |
-
|
162 |
-
/**
|
163 |
-
* Validate arguments
|
164 |
-
*
|
165 |
-
*/
|
166 |
-
protected function _validate()
|
167 |
-
{
|
168 |
-
if (isset($_SERVER['REQUEST_METHOD'])) {
|
169 |
-
die('This script cannot be run from Browser. This is the shell script.');
|
170 |
-
}
|
171 |
-
}
|
172 |
-
|
173 |
-
/**
|
174 |
-
* Run script
|
175 |
-
*
|
176 |
-
*/
|
177 |
-
abstract public function run();
|
178 |
-
|
179 |
-
/**
|
180 |
-
* Check is show usage help
|
181 |
-
*
|
182 |
-
*/
|
183 |
-
protected function _showHelp()
|
184 |
-
{
|
185 |
-
if (isset($this->_args['h']) || isset($this->_args['help'])) {
|
186 |
-
die($this->usageHelp());
|
187 |
-
}
|
188 |
-
}
|
189 |
-
|
190 |
-
/**
|
191 |
-
* Retrieve Usage Help Message
|
192 |
-
*
|
193 |
-
*/
|
194 |
-
public function usageHelp()
|
195 |
-
{
|
196 |
-
return <<<USAGE
|
197 |
-
Usage: php -f script.php -- [options]
|
198 |
-
|
199 |
-
-h Short alias for help
|
200 |
-
help This help
|
201 |
-
USAGE;
|
202 |
-
}
|
203 |
-
|
204 |
-
/**
|
205 |
-
* Retrieve argument value by name or false
|
206 |
-
*
|
207 |
-
* @param string $name the argument name
|
208 |
-
* @return mixed
|
209 |
-
*/
|
210 |
-
public function getArg($name)
|
211 |
-
{
|
212 |
-
if (isset($this->_args[$name])) {
|
213 |
-
return $this->_args[$name];
|
214 |
-
}
|
215 |
-
return false;
|
216 |
-
}
|
217 |
-
}
|
218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/sql/datafeeder_setup/mysql4-install-1.0.5.php
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
$installer = $this;
|
5 |
-
/* @var $installer Mage_Core_Model_Resource_Setup */
|
6 |
-
|
7 |
-
$installer->startSetup();
|
8 |
-
|
9 |
-
$installer->run("
|
10 |
-
|
11 |
-
DROP TABLE IF EXISTS `{$installer->getTable('unbxd_field')}`;
|
12 |
-
|
13 |
-
CREATE TABLE `{$installer->getTable('unbxd_field')}` (
|
14 |
-
`field_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
15 |
-
`name` varchar(100) NOT NULL DEFAULT '',
|
16 |
-
`status` int(1) NOT NULL DEFAULT '1',
|
17 |
-
`site` varchar(100) NOT NULL DEFAULT '',
|
18 |
-
`data_type` varchar(20) NOT NULL DEFAULT 'longText',
|
19 |
-
`autosuggest` int(1) NOT NULL DEFAULT '0',
|
20 |
-
`image_height` int(5) NOT NULL DEFAULT '0',
|
21 |
-
`image_width` int(5) NOT NULL DEFAULT '0',
|
22 |
-
`generate_image` int(1) NOT NULL DEFAULT '0',
|
23 |
-
PRIMARY KEY (`field_id`)
|
24 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
25 |
-
|
26 |
-
DROP TABLE IF EXISTS `{$installer->getTable('unbxd_datafeeder_conf')}`;
|
27 |
-
|
28 |
-
CREATE TABLE `{$installer->getTable('unbxd_datafeeder_conf')}` (
|
29 |
-
`uconfig_id` int(10) unsigned NOT NULL auto_increment,
|
30 |
-
`action` varchar(255) NOT NULL default '',
|
31 |
-
`value` varchar(255),
|
32 |
-
PRIMARY KEY (`uconfig_id`)
|
33 |
-
|
34 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
35 |
-
|
36 |
-
");
|
37 |
-
$installer->endSetup();
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/Datafeeder/sql/datafeeder_setup/mysql4-upgrade-0.1.0-1.0.5.php
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
$installer = $this;
|
5 |
-
/* @var $installer Mage_Core_Model_Resource_Setup */
|
6 |
-
|
7 |
-
$installer->startSetup();
|
8 |
-
|
9 |
-
$installer->run("
|
10 |
-
|
11 |
-
DROP TABLE IF EXISTS `{$installer->getTable('unbxd_field')}`;
|
12 |
-
|
13 |
-
CREATE TABLE `{$installer->getTable('unbxd_field')}` (
|
14 |
-
`field_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
15 |
-
`name` varchar(100) NOT NULL DEFAULT '',
|
16 |
-
`status` int(1) NOT NULL DEFAULT '1',
|
17 |
-
`site` varchar(100) NOT NULL DEFAULT '',
|
18 |
-
`data_type` varchar(20) NOT NULL DEFAULT 'longText',
|
19 |
-
`autosuggest` int(1) NOT NULL DEFAULT '0',
|
20 |
-
`image_height` int(5) NOT NULL DEFAULT '0',
|
21 |
-
`image_width` int(5) NOT NULL DEFAULT '0',
|
22 |
-
`generate_image` int(1) NOT NULL DEFAULT '0',
|
23 |
-
PRIMARY KEY (`field_id`)
|
24 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
25 |
-
|
26 |
-
DROP TABLE IF EXISTS `{$installer->getTable('unbxd_datafeeder_conf')}`;
|
27 |
-
|
28 |
-
CREATE TABLE `{$installer->getTable('unbxd_datafeeder_conf')}` (
|
29 |
-
`uconfig_id` int(10) unsigned NOT NULL auto_increment,
|
30 |
-
`action` varchar(255) NOT NULL default '',
|
31 |
-
`value` varchar(255),
|
32 |
-
PRIMARY KEY (`uconfig_id`)
|
33 |
-
|
34 |
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
35 |
-
|
36 |
-
");
|
37 |
-
$installer->endSetup();
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/local/Unbxd/{Datafeeder → Recommendation}/.DS_Store
RENAMED
File without changes
|
app/code/local/Unbxd/Recommendation/Block/Admin.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Block_Admin extends Mage_Adminhtml_Block_Template {
|
9 |
+
|
10 |
+
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
app/code/local/Unbxd/Recommendation/Block/Tracker.php
ADDED
File without changes
|
app/code/local/Unbxd/Recommendation/Helper/Confighelper.php
ADDED
@@ -0,0 +1,333 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Helper_Confighelper extends Unbxd_Recommendation_Helper_Data {
|
9 |
+
|
10 |
+
const SITE_KEY = "site_key";
|
11 |
+
|
12 |
+
const API_KEY = "api_key";
|
13 |
+
|
14 |
+
const SECRET_KEY = "secret_key";
|
15 |
+
|
16 |
+
const USERNAME = "username";
|
17 |
+
|
18 |
+
const NEED_FEATURE_FIELD_UPDATION = "need_feature_field_updation";
|
19 |
+
|
20 |
+
const IS_CRON_ENABLED = "cron_enabled";
|
21 |
+
|
22 |
+
|
23 |
+
/**
|
24 |
+
* All possible data type values supported unbxd
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
public static $data_types = array("text", "longText", "link", "decimal", "number", "datetime");
|
28 |
+
|
29 |
+
public function validateAndSaveKeys($website, $requestBody){
|
30 |
+
$errors = $this->validateKeyParams($requestBody);
|
31 |
+
if(sizeof($errors) > 0) {
|
32 |
+
return $errors;
|
33 |
+
}
|
34 |
+
$requestParams = json_decode($requestBody, true);
|
35 |
+
if(!$requestParams) {
|
36 |
+
$errors['message'] = 'Invalid Request';
|
37 |
+
return $errors;
|
38 |
+
}
|
39 |
+
$response = Mage::getModel("unbxd_recommendation/api_task_validatekeys")
|
40 |
+
->setData(Unbxd_Recommendation_Model_Api_Task_Validatekeys::SECRET_KEY, $requestParams[self::SECRET_KEY])
|
41 |
+
->setData(Unbxd_Recommendation_Model_Api_Task_Validatekeys::SITE_KEY, $requestParams[self::SITE_KEY])
|
42 |
+
->prepare($website)
|
43 |
+
->process();
|
44 |
+
if(!$response->isSuccess()) {
|
45 |
+
return $response->getErrors();
|
46 |
+
}
|
47 |
+
|
48 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
49 |
+
->setValue($website->getWebsiteId(), self::SECRET_KEY, $requestParams[self::SECRET_KEY]);
|
50 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
51 |
+
->setValue($website->getWebsiteId(), self::SITE_KEY, $requestParams[self::SITE_KEY]);
|
52 |
+
$response = $response->getResponse();
|
53 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
54 |
+
->setValue($website->getWebsiteId(),
|
55 |
+
self::API_KEY, $response[Unbxd_Recommendation_Model_Api_Task_Validatekeys::API_KEY]);
|
56 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
57 |
+
->setValue($website->getWebsiteId(),
|
58 |
+
self::USERNAME, $response[Unbxd_Recommendation_Model_Api_Task_Validatekeys::USERNAME]);
|
59 |
+
return $errors;
|
60 |
+
}
|
61 |
+
|
62 |
+
public function validateKeyParams($requestBody) {
|
63 |
+
$errors = array();
|
64 |
+
$requestParams = json_decode($requestBody, true);
|
65 |
+
if(!$requestParams) {
|
66 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid request witj requestBody' . $requestBody);
|
67 |
+
$errors['message'] = 'Invalid Request';
|
68 |
+
return $errors;
|
69 |
+
}
|
70 |
+
if(!array_key_exists(self::SECRET_KEY,$requestParams)){
|
71 |
+
$errors[self::SECRET_KEY] = "Has Empty Data";
|
72 |
+
}
|
73 |
+
if(!array_key_exists(self::SITE_KEY, $requestParams)) {
|
74 |
+
$errors[self::SITE_KEY] = "Has Empty Data";
|
75 |
+
}
|
76 |
+
return $errors;
|
77 |
+
}
|
78 |
+
|
79 |
+
public function getFeatureFields() {
|
80 |
+
return Unbxd_Recommendation_Model_Field::$feature_fields;
|
81 |
+
}
|
82 |
+
|
83 |
+
public function getAllAttributes() {
|
84 |
+
$attributes = Mage::getSingleton('eav/config')
|
85 |
+
->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
|
86 |
+
$fields = array();
|
87 |
+
foreach($attributes as $attribute) {
|
88 |
+
$fields[] = $attribute->getName();
|
89 |
+
}
|
90 |
+
$fields[] = "final_price";
|
91 |
+
return $fields;
|
92 |
+
}
|
93 |
+
|
94 |
+
private function getFieldMapping($fields) {
|
95 |
+
$fieldMapping = array();
|
96 |
+
foreach($fields as $field) {
|
97 |
+
$fieldMapping[$field->getFieldName()] = $field;
|
98 |
+
}
|
99 |
+
return $fieldMapping;
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @param $fields
|
104 |
+
* @return array
|
105 |
+
*/
|
106 |
+
private function validate($fields) {
|
107 |
+
$errors = array();
|
108 |
+
foreach($fields as $field) {
|
109 |
+
if(!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
|
110 |
+
$errors[Unbxd_Recommendation_Model_Field::field_name] = "Not Present for all the fields";
|
111 |
+
} else if (is_null($field[Unbxd_Recommendation_Model_Field::field_name]) ||
|
112 |
+
$field[Unbxd_Recommendation_Model_Field::field_name] =="") {
|
113 |
+
$errors[Unbxd_Recommendation_Model_Field::field_name] = "field Name is empty for some fields";
|
114 |
+
}
|
115 |
+
if (!array_key_exists(Unbxd_Recommendation_Model_Field::datatype, $field)) {
|
116 |
+
$errors[Unbxd_Recommendation_Model_Field::datatype] = "Not Present for all the fields";
|
117 |
+
} else if (!in_array($field[Unbxd_Recommendation_Model_Field::datatype], Unbxd_Recommendation_Model_Field::$data_types)){
|
118 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid feature field '.
|
119 |
+
$field[Unbxd_Recommendation_Model_Field::datatype]);
|
120 |
+
$errors[Unbxd_Recommendation_Model_Field::datatype] = "Invalid datatype specified";
|
121 |
+
}
|
122 |
+
|
123 |
+
if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
|
124 |
+
if(!array_key_exists($field[Unbxd_Recommendation_Model_Field::featured_field],
|
125 |
+
Mage::getModel('unbxd_recommendation/field')->getFeaturedFields())) {
|
126 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid feature field '.
|
127 |
+
$field[Unbxd_Recommendation_Model_Field::featured_field]);
|
128 |
+
$errors[Unbxd_Recommendation_Model_Field::featured_field] = "Invalid feature field specified";
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
return $errors;
|
133 |
+
}
|
134 |
+
|
135 |
+
public function deleteFields($fields, $website) {
|
136 |
+
$errors = $this->validate($fields);
|
137 |
+
if(sizeof($errors) != 0) {
|
138 |
+
return $errors;
|
139 |
+
}
|
140 |
+
$collection = $this->buildFieldCollection($fields, $website);
|
141 |
+
return Mage::getModel("unbxd_recommendation/field")->saveFields($collection);
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* @param $fields
|
146 |
+
* @param $website
|
147 |
+
* @return array
|
148 |
+
*/
|
149 |
+
public function saveFields($fields, $website) {
|
150 |
+
$errors = $this->validate($fields);
|
151 |
+
if(sizeof($errors) != 0) {
|
152 |
+
return $errors;
|
153 |
+
}
|
154 |
+
$collection = $this->buildFieldCollectionToAdd($fields, $website);
|
155 |
+
$response = Mage::getModel("unbxd_recommendation/field")->saveFields($collection);
|
156 |
+
if(!is_array($response) && $response === true) {
|
157 |
+
$this->triggerUpdateFeatureField($website);
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
|
162 |
+
public function triggerUpdateFeatureField(Mage_Core_Model_Website $website) {
|
163 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
164 |
+
->setValue($website->getWebsiteId(), self::NEED_FEATURE_FIELD_UPDATION, 1);
|
165 |
+
$this->triggerFeedUpload($website);
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Method to trigger feed upload
|
170 |
+
* @param Mage_Core_Model_Website $website
|
171 |
+
* @return void
|
172 |
+
*/
|
173 |
+
public function triggerFeedUpload(Mage_Core_Model_Website $website) {
|
174 |
+
Mage::getModel('unbxd_recommendation/api_task_triggerfeedupload')
|
175 |
+
->prepare($website)
|
176 |
+
->process();
|
177 |
+
}
|
178 |
+
|
179 |
+
private function getFeatureFieldToFieldMapping($fields) {
|
180 |
+
$featureFieldToFieldMapping = array();
|
181 |
+
foreach($fields as $field) {
|
182 |
+
if($field instanceof Unbxd_Recommendation_Model_Field &&
|
183 |
+
$field->hasData(Unbxd_Recommendation_Model_Field::featured_field) &&
|
184 |
+
!is_null($field->getData(Unbxd_Recommendation_Model_Field::featured_field))) {
|
185 |
+
$featureFieldToFieldMapping[$field[Unbxd_Recommendation_Model_Field::featured_field]] = $field;
|
186 |
+
}
|
187 |
+
}
|
188 |
+
return $featureFieldToFieldMapping;
|
189 |
+
}
|
190 |
+
|
191 |
+
private function buildFieldCollection($fields, $website) {
|
192 |
+
$collection = array();
|
193 |
+
$fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
|
194 |
+
foreach($fields as $field) {
|
195 |
+
if (!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
|
196 |
+
continue;
|
197 |
+
}
|
198 |
+
if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping)) {
|
199 |
+
$collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
|
200 |
+
}
|
201 |
+
}
|
202 |
+
return $collection;
|
203 |
+
}
|
204 |
+
|
205 |
+
private function buildFieldCollectionToAdd($fields, $website) {
|
206 |
+
$collection = array();
|
207 |
+
$fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
|
208 |
+
$featureFieldToFieldMapping = $this->getFeatureFieldToFieldMapping($fieldMapping);
|
209 |
+
|
210 |
+
foreach($fields as $field) {
|
211 |
+
if(!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
|
212 |
+
continue;
|
213 |
+
}
|
214 |
+
/*
|
215 |
+
All possible test cases
|
216 |
+
1) if field name is present and it was a feature field
|
217 |
+
1.a) if request feature field is equal to selected feature field, dont do anything
|
218 |
+
1.b) if request feature field is not equal to selected feature field, dont do anything
|
219 |
+
1.c) if request field is not a feature field,
|
220 |
+
remove the field name entry from the feature field row, save as different row.
|
221 |
+
|
222 |
+
2) if field name is present and it was not a feature field
|
223 |
+
2.a) if request field is a feature field,
|
224 |
+
remove the field name entry as a normal field and save as feature field
|
225 |
+
2.b) if request field is not a feature field,
|
226 |
+
update the existing field
|
227 |
+
|
228 |
+
3) if field name not present,
|
229 |
+
save as a new field
|
230 |
+
*/
|
231 |
+
|
232 |
+
// case 1
|
233 |
+
if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping ) &&
|
234 |
+
$fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]]->hasData(Unbxd_Recommendation_Model_Field::featured_field) &&
|
235 |
+
!is_null($fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]]->getData(Unbxd_Recommendation_Model_Field::featured_field))) {
|
236 |
+
//case 1 a)
|
237 |
+
if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field) &&
|
238 |
+
$field[Unbxd_Recommendation_Model_Field::featured_field] ==
|
239 |
+
$fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]][Unbxd_Recommendation_Model_Field::featured_field]) {
|
240 |
+
continue;
|
241 |
+
}
|
242 |
+
// case 1 b)
|
243 |
+
else if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
|
244 |
+
$collection[]["delete"] = $featureFieldToFieldMapping[$field[Unbxd_Recommendation_Model_Field::featured_field]];
|
245 |
+
$collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
|
246 |
+
$fieldModel = Mage::getModel("unbxd_recommendation/field");
|
247 |
+
$fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
|
248 |
+
}
|
249 |
+
|
250 |
+
//case 1 c)
|
251 |
+
else {
|
252 |
+
$collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
|
253 |
+
$fieldModel = Mage::getModel("unbxd_recommendation/field");
|
254 |
+
|
255 |
+
}
|
256 |
+
} else if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping)) {
|
257 |
+
//case 2 a)
|
258 |
+
if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
|
259 |
+
$collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
|
260 |
+
$fieldModel = Mage::getModel("unbxd_recommendation/field");
|
261 |
+
$fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
|
262 |
+
}
|
263 |
+
// case 2 b)
|
264 |
+
else {
|
265 |
+
$fieldModel = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
|
266 |
+
}
|
267 |
+
} else {
|
268 |
+
$fieldModel = Mage::getModel("unbxd_recommendation/field");
|
269 |
+
if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
|
270 |
+
$fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
|
271 |
+
}
|
272 |
+
|
273 |
+
}
|
274 |
+
$fieldModel->setFieldName($field[Unbxd_Recommendation_Model_Field::field_name]);
|
275 |
+
$fieldModel->setDatatype($field[Unbxd_Recommendation_Model_Field::datatype]);
|
276 |
+
$fieldModel->setAutosuggest(0);
|
277 |
+
$fieldModel->setWebsiteId($website->getWebsiteId());
|
278 |
+
$fieldModel->setDisplayed(1);
|
279 |
+
$collection[]["add"] = $fieldModel;
|
280 |
+
}
|
281 |
+
return $collection;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Method to getFields, if
|
286 |
+
*
|
287 |
+
* @param $fields
|
288 |
+
* @return mixed
|
289 |
+
*/
|
290 |
+
private function getFields($fields, $website) {
|
291 |
+
$inField = array();
|
292 |
+
foreach($fields as $field) {
|
293 |
+
$inField[] = "'" .$field[Unbxd_Recommendation_Model_Field::field_name]. "'";
|
294 |
+
}
|
295 |
+
$collection = Mage::getResourceModel("unbxd_recommendation/field_collection");
|
296 |
+
|
297 |
+
$collection->getSelect()->where('(' . Unbxd_Recommendation_Model_Field::field_name . ' in ('. implode(",", $inField). ')'. " OR ".
|
298 |
+
Unbxd_Recommendation_Model_Field::featured_field. " IS NOT NULL) AND ".
|
299 |
+
Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
|
300 |
+
return $collection->load();
|
301 |
+
}
|
302 |
+
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Method to update feature fields to unbxd
|
306 |
+
*
|
307 |
+
* @return bool| array
|
308 |
+
*/
|
309 |
+
public function updateFeatureFields(Mage_Core_Model_Website $website) {
|
310 |
+
$response = Mage::getModel("unbxd_recommendation/api_task_updatefeaturefields")
|
311 |
+
->prepare($website)
|
312 |
+
->process();
|
313 |
+
if(! $response->isSuccess()) {
|
314 |
+
Mage::log(Zend_Log::ERR,
|
315 |
+
"Update feature fields failed because of theses errors ".json_encode($response->getErrors()));
|
316 |
+
return $response->getErrors();
|
317 |
+
}
|
318 |
+
return true;
|
319 |
+
}
|
320 |
+
|
321 |
+
public function getNumberOfDocsInUnbxd(Mage_Core_Model_Website $website) {
|
322 |
+
$response = Mage::getModel('unbxd_recommendation/api_task_feeddetails')
|
323 |
+
->prepare($website)
|
324 |
+
->process();
|
325 |
+
if($response->isSuccess()) {
|
326 |
+
$response = $response->getResponse();
|
327 |
+
$feedInfo = $response[Unbxd_Recommendation_Model_Api_Task_Feeddetails::FEEDINFO];
|
328 |
+
return $feedInfo[Unbxd_Recommendation_Model_Api_Task_Feeddetails::NUMDOCS];
|
329 |
+
}
|
330 |
+
return 0;
|
331 |
+
}
|
332 |
+
}
|
333 |
+
?>
|
app/code/local/Unbxd/Recommendation/Helper/Data.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Helper_Data extends Mage_Core_Helper_Abstract {
|
9 |
+
|
10 |
+
const LOG_FILE = "unbxd_recommendation.log";
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Method to log
|
14 |
+
*
|
15 |
+
* @param int $level
|
16 |
+
* @param string $message
|
17 |
+
*/
|
18 |
+
public function log($level, $message) {
|
19 |
+
Mage::log($message, $level, static::LOG_FILE, true);
|
20 |
+
}
|
21 |
+
|
22 |
+
}
|
23 |
+
?>
|
app/code/local/Unbxd/Recommendation/Helper/Feedhelper.php
ADDED
@@ -0,0 +1,224 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper_Data {
|
4 |
+
|
5 |
+
var $categoryMap;
|
6 |
+
|
7 |
+
var $catlevel1List;
|
8 |
+
|
9 |
+
var $attributeToTypeMap;
|
10 |
+
|
11 |
+
var $_rootCategoryIds = array();
|
12 |
+
|
13 |
+
protected function array_match($needle, $haystack) {
|
14 |
+
if(!is_array($needle)) {
|
15 |
+
return in_array($needle, $haystack);
|
16 |
+
}
|
17 |
+
|
18 |
+
foreach($needle as $eachNeedle) {
|
19 |
+
if(in_array($eachNeedle, $haystack)) {
|
20 |
+
return true;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
return false;
|
24 |
+
}
|
25 |
+
/**
|
26 |
+
* function to get Category from the category id,
|
27 |
+
* This checks it present in the global array 'categoryMap', if it is not there fetches from db
|
28 |
+
* So that once it gets one category, it doesn't make db call again for the same category
|
29 |
+
*/
|
30 |
+
public function getCategory($category_id = ""){
|
31 |
+
if(!isset($this->categoryMap[$category_id])){
|
32 |
+
$category = Mage::getModel('catalog/category')->load($category_id);
|
33 |
+
$this->categoryMap[$category_id] = $category;
|
34 |
+
$parentCategories = $category->getParentCategories();
|
35 |
+
foreach($parentCategories as $parentCategory) {
|
36 |
+
$this->categoryMap[$parentCategory->getId()] = $parentCategory;
|
37 |
+
}
|
38 |
+
return $this->categoryMap[$category_id];
|
39 |
+
}
|
40 |
+
return $this->categoryMap[$category_id];
|
41 |
+
}
|
42 |
+
|
43 |
+
public function getRootCategoryIds(Mage_Core_Model_Website $website) {
|
44 |
+
if(!array_key_exists($website->getWebsiteId(), $this->_rootCategoryIds)) {
|
45 |
+
foreach($website->getStores() as $store) {
|
46 |
+
$this->_rootCategoryIds[$website->getWebsiteId()][] = $store->getRootCategoryId();
|
47 |
+
}
|
48 |
+
}
|
49 |
+
return $this->_rootCategoryIds[$website->getWebsiteId()];
|
50 |
+
}
|
51 |
+
|
52 |
+
public function getCatLevel1(Mage_Core_Model_Website $website, $category_ids) {
|
53 |
+
if(!is_array($category_ids)) {
|
54 |
+
return array();
|
55 |
+
}
|
56 |
+
$rootCategories = $this->getRootCategoryIds($website);
|
57 |
+
$catlevel1 = array();
|
58 |
+
foreach($category_ids as $category_id) {
|
59 |
+
$category = $this->getCategory($category_id);
|
60 |
+
$parentIds = $category->getParentIds();
|
61 |
+
if(!is_null($category) &&
|
62 |
+
in_array($category->getId(), $rootCategories)) {
|
63 |
+
$catlevel1 = $catlevel1 + array($category->getId() => $category->getName());
|
64 |
+
} else if ($category instanceof Mage_Catalog_Model_Category &&
|
65 |
+
is_array($parentIds) &&
|
66 |
+
(sizeof($parentIds) >0)) {
|
67 |
+
$catlevel1 = $catlevel1 + $this->getCatLevel1($website, $parentIds);
|
68 |
+
}
|
69 |
+
}
|
70 |
+
return $catlevel1;
|
71 |
+
}
|
72 |
+
|
73 |
+
public function getCatLevel2(Mage_Core_Model_Website $website, $category_ids, $catlevel1Categories = null) {
|
74 |
+
if(is_null($catlevel1Categories)) {
|
75 |
+
$catlevel1Categories = $this->getCatLevel1($website, $category_ids);
|
76 |
+
}
|
77 |
+
$catlevel1Ids = array_keys($catlevel1Categories);
|
78 |
+
$catlevel1 = array();
|
79 |
+
foreach($category_ids as $category_id) {
|
80 |
+
$category = $this->getCategory($category_id);
|
81 |
+
$parentIds = $category->getParentIds();
|
82 |
+
|
83 |
+
if(!is_null($category) &&
|
84 |
+
$this->array_match($category->getParentId(), $catlevel1Ids)) {
|
85 |
+
$catlevel1 = $catlevel1 + array($category->getId() => $category->getName());
|
86 |
+
} else if ($category instanceof Mage_Catalog_Model_Category && is_array($parentIds) &&
|
87 |
+
(sizeof($parentIds) >0)) {
|
88 |
+
$catlevel1 = $catlevel1 + $this->getCatLevel2($website, $parentIds, $catlevel1Categories);
|
89 |
+
}
|
90 |
+
}
|
91 |
+
return $catlevel1;
|
92 |
+
}
|
93 |
+
|
94 |
+
public function getCatLevel3(Mage_Core_Model_Website $website, $category_ids, $catlevel2Categories = null) {
|
95 |
+
if(is_null($catlevel2Categories)) {
|
96 |
+
$catlevel2Categories = $this->getCatLevel1($website, $category_ids);
|
97 |
+
}
|
98 |
+
$catlevel2Ids = array_keys($catlevel2Categories);
|
99 |
+
$catlevel1 = array();
|
100 |
+
foreach($category_ids as $category_id) {
|
101 |
+
$category = $this->getCategory($category_id);
|
102 |
+
$parentIds = $category->getParentIds();
|
103 |
+
|
104 |
+
if(!is_null($category) &&
|
105 |
+
$this->array_match($category->getParentId(), $catlevel2Ids)) {
|
106 |
+
$catlevel1 = $catlevel1 + array($category->getId() => $category->getName());
|
107 |
+
} else if ($category instanceof Mage_Catalog_Model_Category &&
|
108 |
+
is_array($parentIds) &&
|
109 |
+
(sizeof($parentIds) >0)) {
|
110 |
+
$catlevel1 = $catlevel1 + $this->getCatLevel2($website, $parentIds, $catlevel2Categories);
|
111 |
+
}
|
112 |
+
}
|
113 |
+
return $catlevel1;
|
114 |
+
}
|
115 |
+
|
116 |
+
|
117 |
+
/**
|
118 |
+
* method to get all the attributes
|
119 |
+
**/
|
120 |
+
public function getAttributeMapping(){
|
121 |
+
if(isset($this->attributeToTypeMap)){
|
122 |
+
return $this->attributeToTypeMap;
|
123 |
+
} else {
|
124 |
+
$attributes = Mage::getSingleton('eav/config')
|
125 |
+
->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
|
126 |
+
foreach($attributes as $attribute){
|
127 |
+
$this->attributeToTypeMap[$attribute->getAttributeCode()] = $attribute-> getFrontendInput();
|
128 |
+
}
|
129 |
+
return $this->attributeToTypeMap;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* method to get field type of the field
|
135 |
+
**/
|
136 |
+
protected function getFieldType($attributeName){
|
137 |
+
$fieldMap = $this->getAttributeMapping();
|
138 |
+
if(array_key_exists( $attributeName, $fieldMap)){
|
139 |
+
return $fieldMap[$attributeName];
|
140 |
+
} else {
|
141 |
+
return "text";
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
/*
|
146 |
+
* function to check whether the field is a multiSelect/select or not,
|
147 |
+
* This is optimized method, where it doesn't make a database call to get fieldType
|
148 |
+
* where it fetches from the local variable, which holds the information of field to fieldType mapping
|
149 |
+
*/
|
150 |
+
public function isMultiSelect($attributeName = ""){
|
151 |
+
if($attributeName == "status" || $attributeName == "visibility" ){
|
152 |
+
return false;
|
153 |
+
}
|
154 |
+
if($this->getFieldType($attributeName) == "select" ||
|
155 |
+
$this->getFieldType($attributeName) == "multiselect" ||
|
156 |
+
$attributeName == Unbxd_Recommendation_Model_Resource_Field::CATEGORY_IDS_NAME ||
|
157 |
+
$attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_1_NAME ||
|
158 |
+
$attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_2_NAME ||
|
159 |
+
$attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_3_NAME){
|
160 |
+
return true;
|
161 |
+
}
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
|
165 |
+
public function isImage($attributeName = "") {
|
166 |
+
if($this->getFieldType($attributeName) == "media_image") {
|
167 |
+
return true;
|
168 |
+
}
|
169 |
+
return false;
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Get all root categories used by all stores.
|
174 |
+
* Note that root categories defined but not used, are not included.
|
175 |
+
*
|
176 |
+
* @return Mage_Catalog_Model_Category[]
|
177 |
+
*/
|
178 |
+
public function getAllRootCategories()
|
179 |
+
{
|
180 |
+
$categories = array();
|
181 |
+
|
182 |
+
/** @var $stores Mage_Core_Model_Store[] */
|
183 |
+
$stores = Mage::app()->getStores();
|
184 |
+
|
185 |
+
foreach ($stores as $store) {
|
186 |
+
$id = $store->getRootCategoryId();
|
187 |
+
if (!isset($categories[$id])) {
|
188 |
+
$categories[$id] = Mage::getModel('catalog/category')->load($id);
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
return $categories;
|
193 |
+
}
|
194 |
+
|
195 |
+
public function getUniqueId($product) {
|
196 |
+
$type= null;
|
197 |
+
if($product->hasData('type_id')) {
|
198 |
+
$type = $product->getData('type_id');
|
199 |
+
}
|
200 |
+
|
201 |
+
switch($type){
|
202 |
+
case 'configurable':
|
203 |
+
$productId = $product->getData('entity_id');
|
204 |
+
break;
|
205 |
+
case 'grouped':
|
206 |
+
$productId = $product->getData('entity_id');
|
207 |
+
break;
|
208 |
+
case 'bundle':
|
209 |
+
$productId = $product->getData('entity_id');
|
210 |
+
break;
|
211 |
+
case 'simple':
|
212 |
+
if ($product->getParentItem() != null) {
|
213 |
+
$productId = $product->getParentItem()->getProductId();
|
214 |
+
} else {
|
215 |
+
$productId = $product->getData('entity_id');
|
216 |
+
}
|
217 |
+
break;
|
218 |
+
default:
|
219 |
+
$productId = $product->getData('entity_id');
|
220 |
+
}
|
221 |
+
return $productId;
|
222 |
+
}
|
223 |
+
|
224 |
+
}
|
app/code/local/Unbxd/Recommendation/Model/Api/Request.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class to make the request to the Unbxd api
|
5 |
+
*
|
6 |
+
* @category Unbxd
|
7 |
+
* @package Unbxd_Recommendation
|
8 |
+
* @author Unbxd Software Pvt. Ltd
|
9 |
+
*/
|
10 |
+
class Unbxd_Recommendation_Model_Api_Request extends Varien_Object {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* end url where the request is firing
|
14 |
+
* @var
|
15 |
+
*/
|
16 |
+
protected $url = "";
|
17 |
+
|
18 |
+
/**
|
19 |
+
* http method
|
20 |
+
* @var
|
21 |
+
*/
|
22 |
+
protected $method = Zend_Http_Client::GET;
|
23 |
+
|
24 |
+
/*
|
25 |
+
* Boolean to check whether the data should be sent as raw data or not
|
26 |
+
*/
|
27 |
+
protected $rawData = false;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* http response type
|
31 |
+
* @var
|
32 |
+
*/
|
33 |
+
protected $response = "";
|
34 |
+
|
35 |
+
/**
|
36 |
+
* headers needed to sent
|
37 |
+
* @var
|
38 |
+
*/
|
39 |
+
protected $headers = array();
|
40 |
+
|
41 |
+
protected $jsonResponse = true;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Connection timeout to the api calls made to unbxd
|
45 |
+
*/
|
46 |
+
protected $timeout = 30;
|
47 |
+
|
48 |
+
public function isJsonResponse() {
|
49 |
+
return $this->jsonResponse;
|
50 |
+
}
|
51 |
+
|
52 |
+
public function setJsonResponse($value) {
|
53 |
+
if(is_bool($value) && $value == false) {
|
54 |
+
$this->jsonResponse = false;
|
55 |
+
}
|
56 |
+
return $this;
|
57 |
+
}
|
58 |
+
|
59 |
+
public function getHeaders() {
|
60 |
+
return $this->headers;
|
61 |
+
}
|
62 |
+
|
63 |
+
public function setHeaders(array $headers) {
|
64 |
+
$this->headers = $headers;
|
65 |
+
return $this;
|
66 |
+
}
|
67 |
+
|
68 |
+
public function getTimeout() {
|
69 |
+
return $this->timeout;
|
70 |
+
}
|
71 |
+
|
72 |
+
public function setTimeout($timeout) {
|
73 |
+
if(is_int($timeout) && $timeout >= 0) {
|
74 |
+
$this->timeout = $timeout;
|
75 |
+
}
|
76 |
+
return $this;
|
77 |
+
}
|
78 |
+
|
79 |
+
public function setHeader(string $header,string $value) {
|
80 |
+
$this->headers[$header] = $value;
|
81 |
+
return $this;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Method to get the url
|
86 |
+
*
|
87 |
+
* @return mixed
|
88 |
+
*/
|
89 |
+
protected function getUrl() {
|
90 |
+
return $this->url;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* setter method to set url variable
|
95 |
+
*
|
96 |
+
* @param $url
|
97 |
+
* @return $this
|
98 |
+
*/
|
99 |
+
public function setUrl($url) {
|
100 |
+
$this->url = $url;
|
101 |
+
return $this;
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Method to get the method
|
106 |
+
*
|
107 |
+
* @return mixed
|
108 |
+
*/
|
109 |
+
protected function getMethod() {
|
110 |
+
return $this->method;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* setter method to set method variable
|
115 |
+
*
|
116 |
+
* @param $method
|
117 |
+
* @return void
|
118 |
+
*/
|
119 |
+
public function setMethod($method) {
|
120 |
+
$this->method = $method;
|
121 |
+
return $this;
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Method to check whether parameters to be sent as raw parameter
|
126 |
+
*
|
127 |
+
* @return bool
|
128 |
+
*/
|
129 |
+
protected function isRawData() {
|
130 |
+
return $this->rawData;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* setter method to set rawdata variable
|
135 |
+
*
|
136 |
+
* @param bool $rawData
|
137 |
+
* @return $this
|
138 |
+
*/
|
139 |
+
public function setRawData($rawData= true) {
|
140 |
+
$this->rawData = $rawData;
|
141 |
+
return $this;
|
142 |
+
}
|
143 |
+
|
144 |
+
|
145 |
+
/**
|
146 |
+
* return Zend Rest Client
|
147 |
+
*
|
148 |
+
* @return Zend_Http_Client
|
149 |
+
*/
|
150 |
+
protected function getRestClient(){
|
151 |
+
|
152 |
+
$request = new Zend_Http_Client();
|
153 |
+
$request->setUri($this->getUrl())
|
154 |
+
->setHeaders(array("Accept" => "application/json") + $this->getHeaders())
|
155 |
+
->setMethod($this->getMethod())
|
156 |
+
->setConfig(
|
157 |
+
array(
|
158 |
+
'timeout' => $this->getTimeout()
|
159 |
+
)
|
160 |
+
);
|
161 |
+
if($this->isRawData()) {
|
162 |
+
$params = json_encode($this->getData());
|
163 |
+
$request->setRawData($params, 'application/json');
|
164 |
+
} else if($this->getMethod() == Zend_Http_Client::GET) {
|
165 |
+
$request->setParameterGet($this->getData());
|
166 |
+
} else {
|
167 |
+
$request->setParameterPost($this->getData());
|
168 |
+
}
|
169 |
+
return $request;
|
170 |
+
}
|
171 |
+
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Method which will make the api call
|
175 |
+
*
|
176 |
+
* @return false|Unbxd_Recommendation_Model_Api_Response
|
177 |
+
*/
|
178 |
+
public function execute(){
|
179 |
+
try {
|
180 |
+
$request = $this->getRestClient();
|
181 |
+
$raw_response = $request->request();
|
182 |
+
} catch (Zend_Http_Client_Exception $e) {
|
183 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR,
|
184 |
+
sprintf($this->getUrl() ." failed because HTTP error: %s", $e->getMessage()));
|
185 |
+
return Mage::getModel('unbxd_recommendation/api_response')
|
186 |
+
->setErrorMessage(Unbxd_Recommendation_Model_Api_Response::SERVER_ERR);
|
187 |
+
}
|
188 |
+
return Mage::getModel("unbxd_recommendation/api_response")
|
189 |
+
->setJsonResponse($this->isJsonResponse())
|
190 |
+
->setResponse($raw_response, $this->getUrl());
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Method to return string
|
195 |
+
*
|
196 |
+
* @return string
|
197 |
+
*/
|
198 |
+
public function __toString() {
|
199 |
+
|
200 |
+
$parameters = $this->getData();
|
201 |
+
if (count($parameters) > 0) {
|
202 |
+
$parameters_as_string = json_encode($parameters);
|
203 |
+
}
|
204 |
+
return "Request to url " . $this->getUrl() . " with method " . $this->getMethod()
|
205 |
+
. (count($parameters) > 0?(" with parameters " . $parameters_as_string):"");
|
206 |
+
}
|
207 |
+
|
208 |
+
|
209 |
+
}
|
210 |
+
|
211 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Response.php
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
|
9 |
+
|
10 |
+
const SERVER_ERR = 'Unable to reach unbxd server, Please contact support';
|
11 |
+
|
12 |
+
const SERVER_RESPONSE_ERR = 'Invalid response from Unbxd, Please contact support';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Variable to maintain the response successful or not
|
16 |
+
* @var
|
17 |
+
*/
|
18 |
+
protected $success;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Variable to maintain the response successful or not
|
22 |
+
* @var
|
23 |
+
*/
|
24 |
+
protected $errors = array();
|
25 |
+
|
26 |
+
protected $jsonResponse = true;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Variable to store the response from the api
|
30 |
+
* @var
|
31 |
+
*/
|
32 |
+
protected $response;
|
33 |
+
|
34 |
+
public function isJsonResponse() {
|
35 |
+
return $this->jsonResponse;
|
36 |
+
}
|
37 |
+
|
38 |
+
public function setJsonResponse($value) {
|
39 |
+
if(is_bool($value) && $value == false) {
|
40 |
+
$this->jsonResponse = false;
|
41 |
+
}
|
42 |
+
return $this;
|
43 |
+
}
|
44 |
+
|
45 |
+
public function _construct() {
|
46 |
+
$this->success = false;
|
47 |
+
$this->message = "Empty response";
|
48 |
+
$this->response = array();
|
49 |
+
}
|
50 |
+
|
51 |
+
public function setSuccess($success) {
|
52 |
+
if(is_bool($success)) {
|
53 |
+
$this->success = $success;
|
54 |
+
}
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Method to check exact error message
|
60 |
+
*
|
61 |
+
* @return bool
|
62 |
+
*/
|
63 |
+
public function isSuccess() {
|
64 |
+
return $this->success;
|
65 |
+
}
|
66 |
+
|
67 |
+
public function setErrors($errors = array()) {
|
68 |
+
$this->errors = $errors;
|
69 |
+
return $this;
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getErrors() {
|
73 |
+
return $this->errors;
|
74 |
+
}
|
75 |
+
|
76 |
+
public function setErrorMessage($message) {
|
77 |
+
$this->errors['message'] = $message;
|
78 |
+
return $this;
|
79 |
+
}
|
80 |
+
|
81 |
+
public function setError(string $key, string $value) {
|
82 |
+
$this->errors[$key] = $value;
|
83 |
+
return $this;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Method to get Message
|
88 |
+
*
|
89 |
+
* @return string
|
90 |
+
*/
|
91 |
+
public function getMessage() {
|
92 |
+
if(array_key_exists('message', $this->errors)) {
|
93 |
+
return $this->errors['message'];
|
94 |
+
}
|
95 |
+
return null;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Method to set the message
|
100 |
+
*
|
101 |
+
* @param $message
|
102 |
+
* @return $this
|
103 |
+
*/
|
104 |
+
public function setMessage($message) {
|
105 |
+
$this->errors['message'] = $message;
|
106 |
+
return $this;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Method to return the response
|
111 |
+
*
|
112 |
+
* @return array
|
113 |
+
*/
|
114 |
+
public function getResponse() {
|
115 |
+
return $this->response;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Method to set the response
|
120 |
+
*
|
121 |
+
* @param Zend_Http_Response $response
|
122 |
+
* @param $url
|
123 |
+
* @return $this
|
124 |
+
*/
|
125 |
+
public function setResponse(Zend_Http_Response $response, $url) {
|
126 |
+
if($response->isSuccessful()) {
|
127 |
+
$this->success = true;
|
128 |
+
$this->setMessage("success");
|
129 |
+
$body = $response->getBody();
|
130 |
+
if(!$this->isJsonResponse()) {
|
131 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, "response from the " . $url . " is successful");
|
132 |
+
$this->setData("body", $body);
|
133 |
+
return $this;
|
134 |
+
}
|
135 |
+
$this->response = json_decode($body, true);
|
136 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, "response from the " . $url . " is " . $body);
|
137 |
+
if($this->response == false || !is_array($this->response) || sizeof($this->response) == 0) {
|
138 |
+
$this->success = false;
|
139 |
+
$this->setMessage("Invalid Authorization credentials");
|
140 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, $url . " api failed cos ". $this->getMessage());
|
141 |
+
return $this;
|
142 |
+
}
|
143 |
+
} else {
|
144 |
+
|
145 |
+
$this->success = false;
|
146 |
+
switch ($response->getStatus()) {
|
147 |
+
case 500:
|
148 |
+
$message = "Unbxd API server error, Please contact support \n" . $response->getBody();
|
149 |
+
$this->setMessage("Unbxd API server error, Please contact support \n");
|
150 |
+
break;
|
151 |
+
default:
|
152 |
+
$message = "Unbxd Unexpected error, Please contact support";
|
153 |
+
$this->setMessage($message);
|
154 |
+
}
|
155 |
+
Mage::helper('unbxd_recommendation')
|
156 |
+
->log(Zend_Log::ERR, $url . " api failed cos ". $response->getStatus() . ":" . $message);
|
157 |
+
}
|
158 |
+
return $this;
|
159 |
+
}
|
160 |
+
|
161 |
+
|
162 |
+
}
|
163 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
abstract class Unbxd_Recommendation_Model_Api_Task extends Varien_Object {
|
9 |
+
|
10 |
+
const PLATFORM_API_BASE_URL = "http://accounts.unbxdapi.com/admin/";
|
11 |
+
|
12 |
+
const RECOMMENDATION_SETTINGS_URL = "http://starwreck.unbxdapi.com/";
|
13 |
+
|
14 |
+
const TRACKER_URL = "http://tracker.unbxdapi.com/";
|
15 |
+
|
16 |
+
const RECOMMENDATION_API = "https://apac-recommendations.unbxdapi.com/";
|
17 |
+
|
18 |
+
const TIMEOUT = 30;
|
19 |
+
|
20 |
+
static $url = "";
|
21 |
+
|
22 |
+
const method = Zend_Http_Client::GET;
|
23 |
+
|
24 |
+
protected $preparationSuccessful;
|
25 |
+
|
26 |
+
protected $errors;
|
27 |
+
|
28 |
+
protected $headers = array();
|
29 |
+
|
30 |
+
protected $isRawData = false;
|
31 |
+
|
32 |
+
const jsonResponse = true;
|
33 |
+
|
34 |
+
public function __construct() {
|
35 |
+
$this->preparationSuccessful = false;
|
36 |
+
$this->errors = array();
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Method to check whether parameters to be sent as raw parameter
|
41 |
+
*
|
42 |
+
* @return bool
|
43 |
+
*/
|
44 |
+
protected function isRawData() {
|
45 |
+
return $this->isRawData;
|
46 |
+
}
|
47 |
+
|
48 |
+
abstract public function prepare(Mage_Core_Model_Website $website);
|
49 |
+
|
50 |
+
abstract protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response);
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Method which will make the api call
|
54 |
+
*
|
55 |
+
* @return false|Unbxd_Recommendation_Model_Api_Response
|
56 |
+
*/
|
57 |
+
public function process() {
|
58 |
+
if(!$this->preparationSuccessful) {
|
59 |
+
Mage::helper("unbxd_recommendation")
|
60 |
+
->log(Zend_Log::ERR,
|
61 |
+
sizeof($this->errors == 0)?"prepare method not called":json_encode($this->errors));
|
62 |
+
return Mage::getModel("unbxd_recommendation/api_response")
|
63 |
+
->setErrors(sizeof($this->errors) == 0?array("message" => "prepare method not called"):$this->errors);
|
64 |
+
}
|
65 |
+
$request = Mage::getModel("unbxd_recommendation/api_request")
|
66 |
+
->setUrl(static::$url)
|
67 |
+
->setMethod(static::method)
|
68 |
+
->setHeaders($this->headers)
|
69 |
+
->setTimeout(static::TIMEOUT)
|
70 |
+
->setJsonResponse(static::jsonResponse);
|
71 |
+
if($this->isRawData()) {
|
72 |
+
$request->setRawData(true);
|
73 |
+
}
|
74 |
+
if($this->getData()) {
|
75 |
+
$request->addData($this->getData());
|
76 |
+
}
|
77 |
+
|
78 |
+
return $this->postProcess($request->execute());
|
79 |
+
}
|
80 |
+
|
81 |
+
}
|
82 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Analyticsimpression.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Task_Analyticsimpression extends Unbxd_Recommendation_Model_Api_Task
|
9 |
+
{
|
10 |
+
|
11 |
+
const method = Zend_Http_Client::GET;
|
12 |
+
|
13 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
14 |
+
$this->preparationSuccessful = true;
|
15 |
+
$this->prepareUrl($website);
|
16 |
+
$this->prepareHeaders($website);
|
17 |
+
return $this;
|
18 |
+
}
|
19 |
+
|
20 |
+
protected function prepareUrl($website) {
|
21 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
22 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
23 |
+
if(is_null($siteKey)) {
|
24 |
+
$this->preparationSuccessful = false;
|
25 |
+
$this->errors["message"] = "Site key not set";
|
26 |
+
return;
|
27 |
+
}
|
28 |
+
|
29 |
+
static::$url = static::RECOMMENDATION_SETTINGS_URL . "dashboard/analytics/integrationDetails/" . $siteKey;
|
30 |
+
}
|
31 |
+
|
32 |
+
protected function prepareHeaders($website) {
|
33 |
+
$username = Mage::getResourceModel("unbxd_recommendation/config")
|
34 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::USERNAME);
|
35 |
+
if(is_null($username)) {
|
36 |
+
$this->preparationSuccessful = false;
|
37 |
+
$this->errors["message"] = "Secret key not set";
|
38 |
+
return;
|
39 |
+
}
|
40 |
+
|
41 |
+
$this->headers["authorization"] = "Basic " . base64_encode($username . ':$uauth');
|
42 |
+
}
|
43 |
+
|
44 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
45 |
+
return $response;
|
46 |
+
}
|
47 |
+
|
48 |
+
}
|
49 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Feeddetails.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Task_Feeddetails extends Unbxd_Recommendation_Model_Api_Task {
|
9 |
+
|
10 |
+
const method = Zend_Http_Client::GET;
|
11 |
+
|
12 |
+
const STATUS = 'status';
|
13 |
+
|
14 |
+
const MESSAGE = 'message';
|
15 |
+
|
16 |
+
const FEEDINFO = 'feedInfo';
|
17 |
+
|
18 |
+
const NUMDOCS = 'numDocs';
|
19 |
+
|
20 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
21 |
+
$this->preparationSuccessful = true;
|
22 |
+
$this->prepareUrl($website);
|
23 |
+
$this->prepareHeaders($website);
|
24 |
+
return $this;
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function prepareUrl(Mage_Core_Model_Website $website) {
|
28 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
29 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
30 |
+
if(is_null($siteKey)) {
|
31 |
+
$this->preparationSuccessful = false;
|
32 |
+
$this->errors["message"] = "Site key not set";
|
33 |
+
return;
|
34 |
+
}
|
35 |
+
|
36 |
+
static::$url = self::PLATFORM_API_BASE_URL . $siteKey . "/feed-info";
|
37 |
+
}
|
38 |
+
|
39 |
+
protected function prepareHeaders(Mage_Core_Model_Website $website) {
|
40 |
+
$apiKey = Mage::getResourceModel("unbxd_recommendation/config")
|
41 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
|
42 |
+
$secretKey = Mage::getResourceModel("unbxd_recommendation/config")
|
43 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
|
44 |
+
if(is_null($secretKey) || is_null($apiKey)) {
|
45 |
+
$this->preparationSuccessful = false;
|
46 |
+
$this->errors["message"] = "Site key not set";
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
$this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
|
50 |
+
}
|
51 |
+
|
52 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
53 |
+
if(!$response->isSuccess()) {
|
54 |
+
return $response;
|
55 |
+
}
|
56 |
+
$responseObj = $response->getResponse();
|
57 |
+
if(!array_key_exists(self::STATUS, $responseObj) || !array_key_exists(self::FEEDINFO, $responseObj)) {
|
58 |
+
$response->setSuccess(false);
|
59 |
+
$response->setMessage('Invalid response from unbxd');
|
60 |
+
return $response;
|
61 |
+
}
|
62 |
+
if($responseObj[self::STATUS] != 200 || !array_key_exists(self::NUMDOCS, $responseObj[self::FEEDINFO])) {
|
63 |
+
$response->setSuccess(false);
|
64 |
+
$response->setMessage("status code :" .$responseObj[self::STATUS].",".
|
65 |
+
(array_key_exists(self::MESSAGE, $responseObj)?$responseObj[self::MESSAGE]:""));
|
66 |
+
return $response;
|
67 |
+
}
|
68 |
+
return $response;
|
69 |
+
}
|
70 |
+
}
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Trackcart.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Task_Trackcart extends Unbxd_Recommendation_Model_Api_Task {
|
9 |
+
|
10 |
+
const method = Zend_Http_Client::POST;
|
11 |
+
|
12 |
+
const jsonResponse = false;
|
13 |
+
|
14 |
+
const TIMEOUT = 5;
|
15 |
+
|
16 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
17 |
+
$this->prepareUrl($website);
|
18 |
+
$this->isRawData = true;
|
19 |
+
return $this;
|
20 |
+
}
|
21 |
+
|
22 |
+
protected function prepareUrl(Mage_Core_Model_Website $website)
|
23 |
+
{
|
24 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
25 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
26 |
+
if (is_null($siteKey)) {
|
27 |
+
$this->errors["message"] = "Site key not set";
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
|
31 |
+
$uid = array_key_exists('unbxd_userId', $_COOKIE) ? $_COOKIE['unbxd_userId'] : null;
|
32 |
+
if (!isset($uid) || is_null($uid)) {
|
33 |
+
$this->errors["message"] = "UID Missing";
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
static::$url = static::TRACKER_URL . "v1.0/$siteKey/track/cart/$uid";
|
38 |
+
$this->preparationSuccessful = true;
|
39 |
+
}
|
40 |
+
|
41 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
42 |
+
return $response;
|
43 |
+
}
|
44 |
+
}
|
45 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Trackorder.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Task_Trackorder extends Unbxd_Recommendation_Model_Api_Task {
|
9 |
+
|
10 |
+
const method = Zend_Http_Client::POST;
|
11 |
+
|
12 |
+
const jsonResponse = false;
|
13 |
+
|
14 |
+
const TIMEOUT = 5;
|
15 |
+
|
16 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
17 |
+
$this->prepareUrl($website);
|
18 |
+
$this->isRawData = true;
|
19 |
+
return $this;
|
20 |
+
}
|
21 |
+
|
22 |
+
protected function prepareUrl(Mage_Core_Model_Website $website)
|
23 |
+
{
|
24 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
25 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
26 |
+
if (is_null($siteKey)) {
|
27 |
+
$this->errors["message"] = "Site key not set";
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
|
31 |
+
$uid = array_key_exists('unbxd_userId', $_COOKIE) ? $_COOKIE['unbxd_userId'] : null;
|
32 |
+
if (!isset($uid) || is_null($uid)) {
|
33 |
+
$this->errors["message"] = "UID Missing";
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
static::$url = static::TRACKER_URL . "v1.0/$siteKey/track/order/$uid";
|
38 |
+
$this->preparationSuccessful = true;
|
39 |
+
}
|
40 |
+
|
41 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
42 |
+
return $response;
|
43 |
+
}
|
44 |
+
}
|
45 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Triggerfeedupload.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* class to validate the secret key and site key with unbxd
|
5 |
+
*
|
6 |
+
* @category Unbxd
|
7 |
+
* @package Unbxd_Recommendation
|
8 |
+
* @author Unbxd Software Pvt. Ltd
|
9 |
+
*/
|
10 |
+
class Unbxd_Recommendation_Model_Api_Task_Triggerfeedupload extends Unbxd_Recommendation_Model_Api_Task {
|
11 |
+
|
12 |
+
const method = Zend_Http_Client::POST;
|
13 |
+
|
14 |
+
const TIMEOUT = 5;
|
15 |
+
|
16 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
17 |
+
$this->preparationSuccessful = true;
|
18 |
+
$this->prepareUrl();
|
19 |
+
$this->prepareParams($website);
|
20 |
+
return $this;
|
21 |
+
}
|
22 |
+
|
23 |
+
protected function prepareUrl() {
|
24 |
+
static::$url = Mage::getBaseUrl()."unbxd/config/productsync";
|
25 |
+
return $this;
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function prepareParams(Mage_Core_Model_Website $website) {
|
29 |
+
$this->setData("site", $website->getName());
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
|
33 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
34 |
+
$response->setSuccess(true);
|
35 |
+
$response->setErrors(array());
|
36 |
+
return $response;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Updatefeaturefields.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Api_Task_Updatefeaturefields extends Unbxd_Recommendation_Model_Api_Task {
|
9 |
+
|
10 |
+
const method = Zend_Http_Client::POST;
|
11 |
+
|
12 |
+
const STATUS = 'status';
|
13 |
+
|
14 |
+
const MESSAGE = 'message';
|
15 |
+
|
16 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
17 |
+
$this->preparationSuccessful = true;
|
18 |
+
$this->prepareUrl($website);
|
19 |
+
$this->prepareHeaders($website);
|
20 |
+
$this->prepareData($website);
|
21 |
+
$this->isRawData = true;
|
22 |
+
return $this;
|
23 |
+
}
|
24 |
+
|
25 |
+
protected function prepareUrl(Mage_Core_Model_Website $website) {
|
26 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
27 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
28 |
+
if(is_null($siteKey)) {
|
29 |
+
$this->preparationSuccessful = false;
|
30 |
+
$this->errors["message"] = "Site key not set";
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
|
34 |
+
static::$url = self::PLATFORM_API_BASE_URL . $siteKey . "/field-mapping";
|
35 |
+
}
|
36 |
+
|
37 |
+
protected function prepareHeaders(Mage_Core_Model_Website $website) {
|
38 |
+
$apiKey = Mage::getResourceModel("unbxd_recommendation/config")
|
39 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
|
40 |
+
$secretKey = Mage::getResourceModel("unbxd_recommendation/config")
|
41 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
|
42 |
+
if(is_null($secretKey) || is_null($apiKey)) {
|
43 |
+
$this->preparationSuccessful = false;
|
44 |
+
$this->errors["message"] = "Site key not set";
|
45 |
+
return;
|
46 |
+
}
|
47 |
+
$this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
|
48 |
+
}
|
49 |
+
|
50 |
+
protected function prepareData($website) {
|
51 |
+
$featureFields = Mage::getResourceModel("unbxd_recommendation/field_collection")->getFeatureFields($website);
|
52 |
+
$featureFieldMap = array();
|
53 |
+
foreach($featureFields as $field) {
|
54 |
+
$featureFieldMap[$field[Unbxd_Recommendation_Model_Field::featured_field]] =
|
55 |
+
$field[Unbxd_Recommendation_Model_Field::field_name];
|
56 |
+
}
|
57 |
+
$this->setData("fieldMapping", $featureFieldMap);
|
58 |
+
}
|
59 |
+
|
60 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
61 |
+
if(!$response->isSuccess()) {
|
62 |
+
return $response;
|
63 |
+
}
|
64 |
+
$responseObj = $response->getResponse();
|
65 |
+
if(!array_key_exists(self::STATUS, $responseObj)) {
|
66 |
+
$response->setSuccess(false);
|
67 |
+
$response->setMessage('Invalid response from unbxd');
|
68 |
+
return $response;
|
69 |
+
}
|
70 |
+
if($responseObj[self::STATUS] != 200) {
|
71 |
+
$response->setSuccess(false);
|
72 |
+
$response->setMessage("status code :" .$responseObj[self::STATUS].",".
|
73 |
+
(array_key_exists(self::MESSAGE, $responseObj)?$responseObj[self::MESSAGE]:""));
|
74 |
+
return $response;
|
75 |
+
}
|
76 |
+
return $response;
|
77 |
+
}
|
78 |
+
}
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Validatekeys.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* class to validate the secret key and site key with unbxd
|
5 |
+
*
|
6 |
+
* @category Unbxd
|
7 |
+
* @package Unbxd_Recommendation
|
8 |
+
* @author Unbxd Software Pvt. Ltd
|
9 |
+
*/
|
10 |
+
class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendation_Model_Api_Task {
|
11 |
+
|
12 |
+
const method = Zend_Http_Client::POST;
|
13 |
+
|
14 |
+
const SECRET_KEY = "secretKey";
|
15 |
+
|
16 |
+
const SITE_KEY = "siteKey";
|
17 |
+
|
18 |
+
const API_KEY = 'apiKey';
|
19 |
+
|
20 |
+
const USERNAME = 'username';
|
21 |
+
|
22 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
23 |
+
$this->prepareUrl();
|
24 |
+
$this->prepareHeaders($website);
|
25 |
+
$this->prepareParams();
|
26 |
+
return $this;
|
27 |
+
}
|
28 |
+
|
29 |
+
protected function prepareUrl() {
|
30 |
+
static::$url = self::RECOMMENDATION_SETTINGS_URL . "dashboard/authenticateMagento";
|
31 |
+
return $this;
|
32 |
+
}
|
33 |
+
|
34 |
+
protected function prepareHeaders() {
|
35 |
+
return $this;
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function prepareParams() {
|
39 |
+
$params = $this->getData();
|
40 |
+
if(!array_key_exists(static::SECRET_KEY, $params)) {
|
41 |
+
$this->preparationSuccessful = false;
|
42 |
+
$this->errors[Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY] = "secret key expected";
|
43 |
+
}
|
44 |
+
if(!array_key_exists(static::SITE_KEY, $params)) {
|
45 |
+
$this->preparationSuccessful = false;
|
46 |
+
$this->errors[Unbxd_Recommendation_Helper_Confighelper::SITE_KEY] = "site key expected";
|
47 |
+
}
|
48 |
+
if(sizeof($this->getData()) > 2) {
|
49 |
+
$this->preparationSuccessful = false;
|
50 |
+
$this->errors["message"] = "Extra Parameters Present";
|
51 |
+
}
|
52 |
+
if(sizeof($this->errors) == 0) {
|
53 |
+
$this->preparationSuccessful = true;
|
54 |
+
}
|
55 |
+
$this->isRawData = true;
|
56 |
+
return $this;
|
57 |
+
}
|
58 |
+
|
59 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
|
60 |
+
if(!$response->isSuccess()) {
|
61 |
+
return $response;
|
62 |
+
}
|
63 |
+
$responseObj = $response->getResponse();
|
64 |
+
if(!array_key_exists(self::API_KEY, $responseObj) || !array_key_exists(self::USERNAME, $responseObj)) {
|
65 |
+
$response->setSuccess(false);
|
66 |
+
$response->setMessage('Invalid Combination, Please Refer Docs');
|
67 |
+
}
|
68 |
+
return $response;
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Api/Task/Widget.php
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Created by IntelliJ IDEA.
|
4 |
+
* User: anantheshadiga
|
5 |
+
* Date: 10/21/14
|
6 |
+
* Time: 1:01 AM
|
7 |
+
*/
|
8 |
+
|
9 |
+
class Unbxd_Recommendation_Model_Api_Task_Widget extends Unbxd_Recommendation_Model_Api_Task {
|
10 |
+
|
11 |
+
const WIDGET_TYPE = 'widgetType';
|
12 |
+
|
13 |
+
const jsonResponse = false;
|
14 |
+
|
15 |
+
public static $WIDGET_TYPES = array('recommend' => 'unbxd_recommended_for_you',
|
16 |
+
'recently-viewed' =>'unbxd_recently_viewed',
|
17 |
+
'more-like-these' => 'unbxd_more_like_these',
|
18 |
+
'also-bought' =>'unbxd_also_bought',
|
19 |
+
'also-viewed' => 'unbxd_also_viewed',
|
20 |
+
'top-sellers' => 'unbxd_top_sellers',
|
21 |
+
'category-top-sellers' => 'unbxd_category_top_sellers',
|
22 |
+
'brand-top-sellers' => 'unbxd_brand_top_sellers',
|
23 |
+
'cart-recommend' => 'unbxd_cart_recommendations');
|
24 |
+
|
25 |
+
public function prepare(Mage_Core_Model_Website $website) {
|
26 |
+
$this->preparationSuccessful = true;
|
27 |
+
$widgetType = $this->getWidgetType();
|
28 |
+
if(is_null($widgetType)) {
|
29 |
+
return $this;
|
30 |
+
}
|
31 |
+
$this->prepareUrl($website, $widgetType);
|
32 |
+
$this->prepareParams();
|
33 |
+
return $this;
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function prepareParams() {
|
37 |
+
$this->setData('ip',
|
38 |
+
isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'])
|
39 |
+
->setData('format', 'html');
|
40 |
+
}
|
41 |
+
|
42 |
+
protected function getWidgetType() {
|
43 |
+
$params = $this->getData();
|
44 |
+
if(!array_key_exists(static::WIDGET_TYPE, $params) ||
|
45 |
+
!array_key_exists($params[static::WIDGET_TYPE], static::$WIDGET_TYPES) ) {
|
46 |
+
$this->preparationSuccessful = false;
|
47 |
+
$this->errors["message"] = "Invalid widget type";
|
48 |
+
return null;
|
49 |
+
}
|
50 |
+
return $params[static::WIDGET_TYPE];
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function prepareUrl(Mage_Core_Model_Website $website, $widget)
|
54 |
+
{
|
55 |
+
$params = $this->getData();
|
56 |
+
$siteKey = Mage::getResourceModel("unbxd_recommendation/config")
|
57 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
58 |
+
$apiKey = Mage::getResourceModel("unbxd_recommendation/config")
|
59 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
|
60 |
+
if (is_null($siteKey)) {
|
61 |
+
$this->preparationSuccessful = false;
|
62 |
+
$this->errors["message"] = "Site key not set";
|
63 |
+
return;
|
64 |
+
}
|
65 |
+
|
66 |
+
$pk = $this->getPrimaryToken();
|
67 |
+
|
68 |
+
if ($pk != '') {
|
69 |
+
static::$url = static::RECOMMENDATION_API . "v1.0/$apiKey/$siteKey/$widget/$pk";
|
70 |
+
return;
|
71 |
+
} else if($params[static::WIDGET_TYPE] == 'top-sellers' || $params[static::WIDGET_TYPE] == 'recommend') {
|
72 |
+
static::$url = static::RECOMMENDATION_API . "v1.0/$apiKey/$siteKey/$widget";
|
73 |
+
return;
|
74 |
+
} else {
|
75 |
+
$this->preparationSuccessful = false;
|
76 |
+
$this->errors["message"] = "Primary token missing for the specified widget";
|
77 |
+
return;
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
protected function getPrimaryToken() {
|
82 |
+
$params = $this->getData();
|
83 |
+
|
84 |
+
if($params[static::WIDGET_TYPE] == 'recently-viewed' || $params[static::WIDGET_TYPE] == 'recommend' ||
|
85 |
+
$params[static::WIDGET_TYPE] == 'cart-recommend') {
|
86 |
+
if(array_key_exists('uid', $params)) {
|
87 |
+
return $params['uid'];
|
88 |
+
} else {
|
89 |
+
return '';
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
if($params[static::WIDGET_TYPE] == 'also-viewed' || $params[static::WIDGET_TYPE] == 'also-bought' ||
|
94 |
+
$params[static::WIDGET_TYPE] == 'more-like-these' || $params[static::WIDGET_TYPE] == 'pdp-top-sellers') {
|
95 |
+
if(array_key_exists('uid', $params)) {
|
96 |
+
return $params['pid'];
|
97 |
+
} else {
|
98 |
+
return '';
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
if($params[static::WIDGET_TYPE] == 'category-top-sellers') {
|
103 |
+
if(array_key_exists('category', $params)) {
|
104 |
+
return $params['category'];
|
105 |
+
} else {
|
106 |
+
return '';
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
if($params[static::WIDGET_TYPE] == 'brand-top-sellers') {
|
111 |
+
if(array_key_exists('brand', $params)) {
|
112 |
+
return $params['brand'];
|
113 |
+
} else {
|
114 |
+
return '';
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response)
|
120 |
+
{
|
121 |
+
$body = $response->getBody();
|
122 |
+
if(is_null($body) || $body == '') {
|
123 |
+
return $response;
|
124 |
+
}
|
125 |
+
$body = $this->trimBody($body);
|
126 |
+
$body = $this->parseBody($body);
|
127 |
+
$body = $this->prepareResponse($body);
|
128 |
+
$response->setData('body', $body);
|
129 |
+
return $response;
|
130 |
+
}
|
131 |
+
|
132 |
+
protected function prepareResponse($body)
|
133 |
+
{
|
134 |
+
return $body;
|
135 |
+
}
|
136 |
+
|
137 |
+
private function getJavascriptNode($body) {
|
138 |
+
$startpos = strpos($body, '<script');
|
139 |
+
$endpos = strrpos($body, "</script>");
|
140 |
+
if($startpos != false && $endpos != false) {
|
141 |
+
return substr($body, $startpos, $endpos + strlen("</script>"));
|
142 |
+
}
|
143 |
+
return "";
|
144 |
+
}
|
145 |
+
|
146 |
+
protected function parseBody($body)
|
147 |
+
{
|
148 |
+
$prefix = '<html><body>';
|
149 |
+
$postfix = '</body></html>';
|
150 |
+
$dom = new DOMDocument;
|
151 |
+
|
152 |
+
$strippedJs = $this->getJavascriptNode($body);
|
153 |
+
$body = str_replace($strippedJs, "", $body);
|
154 |
+
@$dom->loadHTML($prefix.$body. $postfix, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
|
155 |
+
|
156 |
+
$xpath = new DOMXPath($dom);
|
157 |
+
$classname = 'unbxd-field-image_link';
|
158 |
+
$nodes = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
|
159 |
+
if(!isset($nodes)) {
|
160 |
+
return $body;
|
161 |
+
}
|
162 |
+
$images = $this->getOrigImages($nodes);
|
163 |
+
$images = $this->getFullImages($images);
|
164 |
+
$this->setImages($images, $xpath);
|
165 |
+
$body = $dom->saveHTML();
|
166 |
+
$pos = strrpos($body, $postfix);
|
167 |
+
if($pos != false) {
|
168 |
+
$body = substr_replace($body, '', $pos, strlen($postfix));
|
169 |
+
}
|
170 |
+
$pos = strpos($body, $prefix);
|
171 |
+
if($pos !== false ) {
|
172 |
+
$body = substr_replace($body, '', $pos, strlen($prefix));
|
173 |
+
}
|
174 |
+
return $body.$strippedJs;
|
175 |
+
}
|
176 |
+
|
177 |
+
protected function setImages($images,DOMXPath $xpath) {
|
178 |
+
foreach($images as $origImagePath => $modifiedImagePath) {
|
179 |
+
$imageNode = $xpath->query('//img[@src="' . $origImagePath . '"]');
|
180 |
+
if($imageNode instanceof DOMNodeList && $imageNode->length > 0) {
|
181 |
+
for($index = 0;$index < $imageNode->length; $index++) {
|
182 |
+
$imageNode->item($index)->setAttribute('src', $modifiedImagePath);
|
183 |
+
}
|
184 |
+
}
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
protected function getOrigImages(DOMNodeList $nodes) {
|
189 |
+
$images = array();
|
190 |
+
foreach ($nodes as $node) {
|
191 |
+
$img = $node->getElementsByTagName('img');
|
192 |
+
if ($img instanceof DOMNodeList && $img->length > 0) {
|
193 |
+
if ($img->item(0)->hasAttribute('src')) {
|
194 |
+
$src = $img->item(0)->getAttribute('src');
|
195 |
+
$images[] = $src;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
}
|
199 |
+
return $images;
|
200 |
+
}
|
201 |
+
|
202 |
+
protected function getFullImages($images) {
|
203 |
+
$website = Mage::app()->getWebsite();
|
204 |
+
$imageField = Mage::getResourceModel("unbxd_recommendation/field")
|
205 |
+
->getFieldByFeatureField($website->getWebsiteId(), 'imageUrl');
|
206 |
+
$fullImages = array();
|
207 |
+
|
208 |
+
foreach($images as $img) {
|
209 |
+
$product = Mage::getModel('catalog/product')
|
210 |
+
->setData($imageField, $img);
|
211 |
+
$fullImages[$img] = (string)Mage::helper('catalog/image')->init($product, $imageField)
|
212 |
+
->resize(400, 500);
|
213 |
+
}
|
214 |
+
return $fullImages;
|
215 |
+
}
|
216 |
+
|
217 |
+
protected function trimBody($body) {
|
218 |
+
$endPart = '").text();$(\'#' . static::$WIDGET_TYPES[$this->getData(static::WIDGET_TYPE)] . '\').html(decoded); })(jQuery);';
|
219 |
+
$startPart = '(function($){var decoded = $(\'<div/>\').html("';
|
220 |
+
$pos = strrpos($body, $endPart);
|
221 |
+
if($pos != false) {
|
222 |
+
$body = substr_replace($body, '', $pos, strlen($endPart));
|
223 |
+
}
|
224 |
+
$pos = strpos($body, $startPart);
|
225 |
+
if($pos !== false ) {
|
226 |
+
$body = substr_replace($body, '', $pos, strlen($startPart));
|
227 |
+
}
|
228 |
+
$body = trim(html_entity_decode($body, ENT_QUOTES));
|
229 |
+
return $body;
|
230 |
+
}
|
231 |
+
}
|
app/code/local/Unbxd/Recommendation/Model/Config.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This class maintains all the configuration w.r.t Unbxd with site basis
|
5 |
+
*
|
6 |
+
* @category Unbxd
|
7 |
+
* @package Unbxd_Recommendation
|
8 |
+
* @author Unbxd Software Pvt. Ltd
|
9 |
+
*/
|
10 |
+
class Unbxd_Recommendation_Model_Config extends Mage_Core_Model_Abstract {
|
11 |
+
|
12 |
+
const key = "key";
|
13 |
+
|
14 |
+
const value = 'value';
|
15 |
+
|
16 |
+
const website_id = 'website_id';
|
17 |
+
|
18 |
+
/**
|
19 |
+
*
|
20 |
+
* @return void
|
21 |
+
*/
|
22 |
+
protected function _construct()
|
23 |
+
{
|
24 |
+
$this->_init('unbxd_recommendation/config');
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Feed/Feedcreator.php
ADDED
@@ -0,0 +1,290 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Feedcreator {
|
4 |
+
|
5 |
+
var $fileName;
|
6 |
+
|
7 |
+
var $fields;
|
8 |
+
var $taxonomyFlag;
|
9 |
+
const PAGE_SIZE = 500;
|
10 |
+
|
11 |
+
public function init(Mage_Core_Model_Website $website, $fileName) {
|
12 |
+
$this->setFields($website);
|
13 |
+
$this->fileName = $fileName;
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
/**
|
18 |
+
* method to create the feed
|
19 |
+
**/
|
20 |
+
public function createFeed($fileName, $fromdate, $todate, Mage_Core_Model_Website $website, $operation, $ids){
|
21 |
+
$this->init($website, $fileName);
|
22 |
+
if($this->createFile()){
|
23 |
+
$this->log("started writing header");
|
24 |
+
|
25 |
+
if(!$this->writeFeedContent($fromdate,$todate,$website,$operation,$ids)){
|
26 |
+
return false;
|
27 |
+
}
|
28 |
+
|
29 |
+
} else {
|
30 |
+
return false;
|
31 |
+
}
|
32 |
+
return true;
|
33 |
+
}
|
34 |
+
|
35 |
+
private function writeFeedContent($fromdate,$todate,Mage_Core_Model_Website $website,$operation,$ids) {
|
36 |
+
if(!$this->appendTofile('{"feed":')) {
|
37 |
+
$this->log("Error writing feed tag");
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
|
41 |
+
if(!$this->writeCatalogContent($fromdate,$todate,$website,$operation,$ids)) {
|
42 |
+
$this->log("Error writing catalog tag");
|
43 |
+
return false;
|
44 |
+
}
|
45 |
+
|
46 |
+
if(!$this->appendTofile("}")) {
|
47 |
+
$this->log("Error writing closing feed tag");
|
48 |
+
return false;
|
49 |
+
}
|
50 |
+
|
51 |
+
return true;
|
52 |
+
}
|
53 |
+
|
54 |
+
private function writeCatalogContent($fromdate,$todate,Mage_Core_Model_Website $website,$operation,$ids) {
|
55 |
+
if(!$this->appendTofile('{"catalog":{')) {
|
56 |
+
$this->log("Error writing closing catalog tag");
|
57 |
+
return false;
|
58 |
+
}
|
59 |
+
if(!$this->writeSchemaContent()) {
|
60 |
+
return false;
|
61 |
+
}
|
62 |
+
|
63 |
+
if(!$this->appendTofile(",")) {
|
64 |
+
$this->log("Error while adding comma in catalog");
|
65 |
+
return false;
|
66 |
+
}
|
67 |
+
|
68 |
+
if(!$this->writeProductsContent($fromdate,$todate,$website,$operation,$ids)) {
|
69 |
+
return false;
|
70 |
+
}
|
71 |
+
|
72 |
+
|
73 |
+
if(!$this->appendTofile("}")) {
|
74 |
+
$this->log("Error writing closing catalog tag");
|
75 |
+
return false;
|
76 |
+
}
|
77 |
+
/*
|
78 |
+
if(!$this->writeTaxonomyContents($site)) {
|
79 |
+
return false;
|
80 |
+
}*/
|
81 |
+
|
82 |
+
if(!$this->appendTofile("}")) {
|
83 |
+
$this->log("Error writing closing feed tag");
|
84 |
+
return false;
|
85 |
+
}
|
86 |
+
|
87 |
+
|
88 |
+
return true;
|
89 |
+
}
|
90 |
+
|
91 |
+
private function writeSchemaContent() {
|
92 |
+
return $this->appendTofile('"schema":'.
|
93 |
+
Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_schemabuilder')->getSchema($this->fields));
|
94 |
+
}
|
95 |
+
|
96 |
+
private function writeProductsContent($fromdate,$todate,Mage_Core_Model_Website $website,$operation,$ids) {
|
97 |
+
|
98 |
+
$collection=$this->getCatalogCollection($fromdate,$todate,$website,$operation,$ids);
|
99 |
+
// get total size
|
100 |
+
//set the time limit to infinite
|
101 |
+
ignore_user_abort(true);
|
102 |
+
set_time_limit(0);
|
103 |
+
$pageNum = 0;
|
104 |
+
$this->log('started writing products');
|
105 |
+
|
106 |
+
if(!$this->appendTofile('"'. $operation . '":{ "items":[')) {
|
107 |
+
$this->log("Error while adding items tag");
|
108 |
+
return false;
|
109 |
+
}
|
110 |
+
|
111 |
+
$firstLoop = true;
|
112 |
+
|
113 |
+
while(true){
|
114 |
+
$collection->clear();
|
115 |
+
$collection->getSelect()->limit(self::PAGE_SIZE, ($pageNum++) * self::PAGE_SIZE);
|
116 |
+
$collection->load();
|
117 |
+
if(count($collection) == 0){
|
118 |
+
if($pageNum == 1){
|
119 |
+
$this->log("No products found");
|
120 |
+
return false;
|
121 |
+
}
|
122 |
+
break;
|
123 |
+
}
|
124 |
+
|
125 |
+
if(!$firstLoop) {
|
126 |
+
if(!$this->appendTofile( ',')) {
|
127 |
+
$this->log("Error while addings items separator");
|
128 |
+
return false;
|
129 |
+
}
|
130 |
+
}
|
131 |
+
$content = Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_productbuilder')
|
132 |
+
->getProducts($website, $collection, $this->fields);
|
133 |
+
$status=$this->appendTofile($content);
|
134 |
+
if(!$status){
|
135 |
+
$this->log("Error while addings items");
|
136 |
+
return false;
|
137 |
+
}
|
138 |
+
$this->log('Added '.($pageNum) * self::PAGE_SIZE.' products');
|
139 |
+
$firstLoop = false;
|
140 |
+
}
|
141 |
+
|
142 |
+
if(!$this->appendTofile("]}")) {
|
143 |
+
$this->log("Error writing closing items tag");
|
144 |
+
return false;
|
145 |
+
}
|
146 |
+
|
147 |
+
|
148 |
+
$this->log('Added all products');
|
149 |
+
return true;
|
150 |
+
}
|
151 |
+
|
152 |
+
private function writeTaxonomyContents($site){
|
153 |
+
|
154 |
+
$collection=$this->getTaxonomyMappingCollection();
|
155 |
+
// get total size
|
156 |
+
//set the time limit to infinite
|
157 |
+
ignore_user_abort(true);
|
158 |
+
set_time_limit(0);
|
159 |
+
$pageNum = 0;
|
160 |
+
$this->log('started writing taxonomy tree');
|
161 |
+
|
162 |
+
if(!$this->appendTofile(',"'. 'taxonomy' . '":{ "tree":[')) {
|
163 |
+
$this->log("Error while adding tree tag");
|
164 |
+
return false;
|
165 |
+
}
|
166 |
+
|
167 |
+
$content=Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_taxonomybuilder')->createTaxonomyFeed($site);
|
168 |
+
$status=$this->appendTofile($content);
|
169 |
+
|
170 |
+
if(!$status){
|
171 |
+
$this->log("Error while addings taxonomy");
|
172 |
+
return false;
|
173 |
+
}
|
174 |
+
|
175 |
+
if(!$this->appendTofile("]")) {
|
176 |
+
$this->log("Error writing closing tree tag");
|
177 |
+
return false;
|
178 |
+
}
|
179 |
+
|
180 |
+
if(!$this->appendTofile(',"mapping":[')) {
|
181 |
+
$this->log("Error writing opening mapping tag");
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
|
185 |
+
$content=Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
|
186 |
+
$status=$this->appendTofile($content);
|
187 |
+
|
188 |
+
if(!$status){
|
189 |
+
$this->log("Error while addings taxonomy");
|
190 |
+
return false;
|
191 |
+
}
|
192 |
+
|
193 |
+
if(!$this->appendTofile(']}')) {
|
194 |
+
$this->log("Error writing closing mapping tag");
|
195 |
+
return false;
|
196 |
+
}
|
197 |
+
$this->log('Added all categories');
|
198 |
+
return true;
|
199 |
+
}
|
200 |
+
|
201 |
+
|
202 |
+
|
203 |
+
|
204 |
+
private function setFields(Mage_Core_Model_Website $website) {
|
205 |
+
$fields = Mage::getResourceModel("unbxd_recommendation/field_collection")->getFields($website);
|
206 |
+
$featureFields = Mage::getModel('unbxd_recommendation/field')->getFeaturedFields();
|
207 |
+
foreach($fields as $eachfield) {
|
208 |
+
if(array_key_exists($eachfield->getFieldName(), $featureFields)) {
|
209 |
+
$this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFieldName()];
|
210 |
+
continue;
|
211 |
+
}
|
212 |
+
if(!is_null($eachfield->getFeaturedField()) &&
|
213 |
+
array_key_exists($eachfield->getFeaturedField(), $featureFields)) {
|
214 |
+
$this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFeaturedField()];
|
215 |
+
continue;
|
216 |
+
}
|
217 |
+
$field = array();
|
218 |
+
$field[Unbxd_Recommendation_Model_Field::status] = 1;
|
219 |
+
$field[Unbxd_Recommendation_Model_Field::datatype] = $eachfield->getDatatype();
|
220 |
+
$field[Unbxd_Recommendation_Model_Field::autosuggest] = $eachfield->getAutosuggest();
|
221 |
+
$field[Unbxd_Recommendation_Model_Field::multivalued] = Mage::helper('unbxd_recommendation/feedhelper')
|
222 |
+
->isMultiSelect($eachfield->getFieldName());
|
223 |
+
$this->fields[$eachfield->getFieldName()] = $field;
|
224 |
+
}
|
225 |
+
$this->fields["entity_id"] = Mage::getModel('unbxd_recommendation/field')->getField('longText', "true", "true");
|
226 |
+
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* method to get the catalog collection
|
231 |
+
*
|
232 |
+
*/
|
233 |
+
public function getCatalogCollection($fromdate,$todate,Mage_Core_Model_Website $website,$operation,$ids) {
|
234 |
+
if ($operation == "add") {
|
235 |
+
$_catalogInventoryTable = Mage::getSingleton("core/resource")->getTableName("cataloginventory_stock_item");
|
236 |
+
$collection = Mage::getResourceModel('unbxd_recommendation/product_collection')
|
237 |
+
->addWebsiteFilter($website->getWebsiteId())
|
238 |
+
->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left')
|
239 |
+
->addAttributeToSelect('*')
|
240 |
+
->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
|
241 |
+
|
242 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
243 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
244 |
+
|
245 |
+
if(sizeof($ids) > 0){
|
246 |
+
$condition = array('in' => $ids);
|
247 |
+
$collection=$collection->addAttributeToFilter('entity_id',$condition);
|
248 |
+
}
|
249 |
+
} else {
|
250 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
251 |
+
if(sizeof($ids) > 0) {
|
252 |
+
$condition = array('in' => $ids);
|
253 |
+
$collection= $collection->addAttributeToFilter('entity_id',$condition)->addAttributeToSelect('entity_id');
|
254 |
+
}
|
255 |
+
}
|
256 |
+
|
257 |
+
$this->log((string)$collection->getSelect());
|
258 |
+
return $collection;
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Function to initialize to feed creation process
|
263 |
+
*/
|
264 |
+
protected function createFile(){
|
265 |
+
return Mage::getSingleton('unbxd_recommendation/feed_filemanager')->createFile($this->fileName);
|
266 |
+
}
|
267 |
+
|
268 |
+
protected function appendTofile($data){
|
269 |
+
return Mage::getSingleton('unbxd_recommendation/feed_filemanager')->appendTofile($this->fileName, $data);
|
270 |
+
}
|
271 |
+
|
272 |
+
protected function log($message) {
|
273 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, $message);
|
274 |
+
}
|
275 |
+
|
276 |
+
public function getTaxonomyMappingCollection() {
|
277 |
+
try{
|
278 |
+
$adapter = Mage::getSingleton('core/resource')->getConnection('core_read');
|
279 |
+
return $adapter->query("select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index
|
280 |
+
join catalog_product_entity where catalog_category_product_index.product_id = catalog_product_entity.entity_id
|
281 |
+
group by catalog_category_product_index.product_id");
|
282 |
+
} catch(Exception $e) {
|
283 |
+
$this->log($e->getMessage());
|
284 |
+
}
|
285 |
+
|
286 |
+
|
287 |
+
}
|
288 |
+
|
289 |
+
}
|
290 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Feed/Feedmanager.php
ADDED
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Feedmanager {
|
4 |
+
|
5 |
+
//Delete the file after uploading the feed
|
6 |
+
var $deleteIncrementalFeed = true;
|
7 |
+
|
8 |
+
var $fileName = "unbxdFeed.json";
|
9 |
+
|
10 |
+
var $key;
|
11 |
+
|
12 |
+
var $siteName;
|
13 |
+
|
14 |
+
const LAST_UPLOAD_TIME = 'lastUpload';
|
15 |
+
|
16 |
+
/**
|
17 |
+
* method to push the feed to the Unbxd server
|
18 |
+
**/
|
19 |
+
public function pushFeed($fullimport=true){
|
20 |
+
$fields=array('file'=>'@'.$this->fileName.';filename='.'unbxdFeed.json');
|
21 |
+
$header = array('Content-Type: multipart/form-data');
|
22 |
+
|
23 |
+
$url="http://feed.unbxdapi.com/upload/v2/".$this->key."/".$this->siteName. ($fullimport?"?fullimport=true":"");
|
24 |
+
|
25 |
+
$ch = curl_init();
|
26 |
+
curl_setopt($ch, CURLOPT_URL,$url);
|
27 |
+
curl_setopt($ch, CURLOPT_POST,true);
|
28 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
|
29 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
30 |
+
try{
|
31 |
+
$this->log('pushing the feed to '.$url);
|
32 |
+
// push the feed to the server
|
33 |
+
$response = $this->exec($ch);
|
34 |
+
$this->log(json_encode($response));
|
35 |
+
$responseMessage = json_decode($response['body'], true);
|
36 |
+
$this->log($responseMessage);
|
37 |
+
if($responseMessage["statusCode"] != 200) {
|
38 |
+
throw new Exception('Unexpected response from unbxd server');
|
39 |
+
}
|
40 |
+
}catch(Exception $ex){
|
41 |
+
$this->log("Error while uploading the feed because of " . $ex->getMessage());
|
42 |
+
return false;
|
43 |
+
}
|
44 |
+
curl_close($ch);
|
45 |
+
return true;
|
46 |
+
}
|
47 |
+
|
48 |
+
public function exec($ch)
|
49 |
+
{
|
50 |
+
$response = curl_exec($ch);
|
51 |
+
$error = curl_error($ch);
|
52 |
+
$result = array( 'header' => '',
|
53 |
+
'body' => '',
|
54 |
+
'curl_error' => '',
|
55 |
+
'http_code' => '',
|
56 |
+
'last_url' => '');
|
57 |
+
if ( $error != "" ) {
|
58 |
+
$result['curl_error'] = $error;
|
59 |
+
return $result;
|
60 |
+
}
|
61 |
+
|
62 |
+
$header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
|
63 |
+
//$result['header'] = substr($response, 0, $header_size);
|
64 |
+
$result['body'] = $response;
|
65 |
+
$result['http_code'] = curl_getinfo($ch,CURLINFO_HTTP_CODE);
|
66 |
+
$result['last_url'] = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
|
67 |
+
return $result;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* method to set the feedName, log, apikey based on site Name
|
72 |
+
**/
|
73 |
+
public function init(Mage_Core_Model_Website $website)
|
74 |
+
{
|
75 |
+
$this->fileName = Mage::getBaseDir('tmp').DS.str_replace(' ', '_', $website->getName()). "_Feed.json";
|
76 |
+
$this->key = Mage::getResourceModel("unbxd_recommendation/config")
|
77 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
|
78 |
+
$this->siteName = Mage::getResourceModel("unbxd_recommendation/config")
|
79 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
80 |
+
if(is_null($this->siteName) || is_null($this->key)) {
|
81 |
+
$message = 'Authorization failed, keys not set';
|
82 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, $message);
|
83 |
+
return array('success' => false, 'message' => $message);
|
84 |
+
}
|
85 |
+
return true;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* method to update feature field if required
|
90 |
+
*
|
91 |
+
* @param Mage_Core_Model_Website $website
|
92 |
+
* @return void
|
93 |
+
*/
|
94 |
+
private function updateFeatureFields(Mage_Core_Model_Website $website) {
|
95 |
+
$needFeatureFieldUpdation = Mage::getResourceModel("unbxd_recommendation/config")
|
96 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::NEED_FEATURE_FIELD_UPDATION);
|
97 |
+
if(is_null($needFeatureFieldUpdation) || $needFeatureFieldUpdation == "1") {
|
98 |
+
$response = Mage::helper('unbxd_recommendation/confighelper')->updateFeatureFields($website);
|
99 |
+
if(!is_array($response)) {
|
100 |
+
Mage::getResourceModel("unbxd_recommendation/config")
|
101 |
+
->setValue($website->getWebsiteId(),
|
102 |
+
Unbxd_Recommendation_Helper_Confighelper::NEED_FEATURE_FIELD_UPDATION, 0);
|
103 |
+
} else {
|
104 |
+
$this->log("error while updating the feature fields");
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* method to initiate feed uploading to the unbxd servers
|
111 |
+
**/
|
112 |
+
public function process($fromdate, Mage_Core_Model_Website $website, $operation = "add", $ids=array()){
|
113 |
+
|
114 |
+
$this->log('Feed Uploading request recieved');
|
115 |
+
$response = $this->init($website);
|
116 |
+
if(is_array($response)){
|
117 |
+
return $response;
|
118 |
+
}
|
119 |
+
$currentDate = date('Y-m-d H:i:s');
|
120 |
+
|
121 |
+
// check the lock, that if already indexing is happening
|
122 |
+
if(!Mage::getResourceModel("unbxd_recommendation/config")->isLock($website->getWebsiteId())) {
|
123 |
+
|
124 |
+
$this->log('site '. $website->getName() .' is acquiring feed lock');
|
125 |
+
Mage::getResourceModel('unbxd_recommendation/config')->lockSite($website->getWebsiteId());
|
126 |
+
|
127 |
+
// create the feed
|
128 |
+
$status=Mage::getSingleton('unbxd_recommendation/feed_feedcreator')
|
129 |
+
->createFeed($this->fileName, $fromdate, $currentDate, $website, $operation, $ids);
|
130 |
+
$this->log('unbxd Datafeeder finished creating file');
|
131 |
+
|
132 |
+
if($status){
|
133 |
+
$status=$this->pushFeed();
|
134 |
+
if($status){
|
135 |
+
Mage::getResourceSingleton("unbxd_recommendation/config")
|
136 |
+
->setValue($website->getWebsiteId(), self::LAST_UPLOAD_TIME, $currentDate);
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
// unlock the feed once everything is completed
|
141 |
+
Mage::getResourceModel('unbxd_recommendation/config')->unLockSite($website->getWebsiteId());
|
142 |
+
$this->updateFeatureFields($website);
|
143 |
+
$this->log('site ' . $website->getName() .' has been unlocked');
|
144 |
+
if($status) {
|
145 |
+
return array('success' => true, 'message' => 'File uploaded successfully');
|
146 |
+
}
|
147 |
+
return array('success' => false, 'message' => 'Unexpected error, please contact support');
|
148 |
+
} else {
|
149 |
+
$this->log('Feed Uploading failed because site has been locked');
|
150 |
+
return array('success' => false, 'message' => 'Feed is already being processed');
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
public function log($message) {
|
155 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, $message);
|
156 |
+
}
|
157 |
+
}
|
158 |
+
?>
|
app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Filemanager.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
|
6 |
var $logFileName;
|
@@ -13,10 +13,11 @@ class Unbxd_Datafeeder_Model_Feed_Filemanager {
|
|
13 |
$this->logFileName = Mage::getBaseDir('log').DS.$logFileName;
|
14 |
}
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
|
|
20 |
try{
|
21 |
$f=fopen($file,'w');
|
22 |
|
@@ -33,11 +34,13 @@ class Unbxd_Datafeeder_Model_Feed_Filemanager {
|
|
33 |
return false;
|
34 |
}
|
35 |
}
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
|
|
41 |
try {
|
42 |
if(file_put_contents($fileName, $content, FILE_APPEND)) {
|
43 |
return true;
|
@@ -51,24 +54,23 @@ class Unbxd_Datafeeder_Model_Feed_Filemanager {
|
|
51 |
}
|
52 |
}
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
}
|
72 |
}
|
73 |
}
|
74 |
?>
|
1 |
<?php
|
2 |
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Filemanager {
|
4 |
|
5 |
|
6 |
var $logFileName;
|
13 |
$this->logFileName = Mage::getBaseDir('log').DS.$logFileName;
|
14 |
}
|
15 |
|
16 |
+
/**
|
17 |
+
* @param $file
|
18 |
+
* @return bool
|
19 |
+
*/
|
20 |
+
public function createFile($file){
|
21 |
try{
|
22 |
$f=fopen($file,'w');
|
23 |
|
34 |
return false;
|
35 |
}
|
36 |
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @param $fileName
|
40 |
+
* @param $content
|
41 |
+
* @return bool
|
42 |
+
*/
|
43 |
+
public function appendTofile($fileName, $content){
|
44 |
try {
|
45 |
if(file_put_contents($fileName, $content, FILE_APPEND)) {
|
46 |
return true;
|
54 |
}
|
55 |
}
|
56 |
|
57 |
+
/**
|
58 |
+
* method to log
|
59 |
+
* @param $content
|
60 |
+
* @return void
|
61 |
+
*/
|
62 |
+
public function log($content){
|
63 |
+
Mage::log(Zend_Log::DEBUG, $content);
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
/**
|
68 |
+
* method to delete the file
|
69 |
+
* @param $file
|
70 |
+
* @return void
|
71 |
+
*/
|
72 |
+
public function deleteFile($file){
|
73 |
+
unlink($file);
|
|
|
74 |
}
|
75 |
}
|
76 |
?>
|
app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Jsonbuilder.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
?>
|
app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Jsonbuilder/Productbuilder.php
RENAMED
@@ -1,9 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
|
|
4 |
|
5 |
-
const DATA_TYPE = "data_type";
|
6 |
-
const MULTIVALUED = "multiValued";
|
7 |
const NUMBER = "number";
|
8 |
const DECIMAL = "decimal";
|
9 |
const DATE = "date";
|
@@ -14,7 +13,7 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
14 |
/*
|
15 |
* method to get the products in json
|
16 |
*/
|
17 |
-
public function getProducts($collection, $fields) {
|
18 |
$content='';
|
19 |
$firstLoop = true;
|
20 |
foreach($collection as $product) {
|
@@ -22,7 +21,7 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
22 |
$content = $content . ",";
|
23 |
}
|
24 |
|
25 |
-
$productArray = $this->getProduct($product, $fields);
|
26 |
$productArray = $this->postProcessProduct($productArray, $fields, false);
|
27 |
$content=$content.json_encode($productArray);
|
28 |
|
@@ -36,8 +35,7 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
36 |
/*
|
37 |
* method to get the product in json
|
38 |
*/
|
39 |
-
public function getProduct($product, $fields, $childProduct = false) {
|
40 |
-
|
41 |
$productArray =array();
|
42 |
|
43 |
foreach($product->getData('') as $columnHeader=>$columndata){
|
@@ -48,20 +46,19 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
48 |
}
|
49 |
|
50 |
if($columnHeader=="entity_id"){
|
51 |
-
$
|
52 |
-
|
53 |
-
|
54 |
-
if($columnHeader=="url_path"){
|
55 |
// handling the url
|
56 |
$productArray[$unbxdFieldName] = Mage::getUrl('').$columndata;
|
57 |
-
} else if (Mage::helper('
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
} else if(
|
65 |
// handling the array/ multiselect attribute
|
66 |
$attributeValue = $this->getMultiSelectAttribute($columnHeader, $product);
|
67 |
if(!is_null($attributeValue)) {
|
@@ -73,12 +70,14 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
73 |
}
|
74 |
}
|
75 |
if(!$childProduct) {
|
|
|
76 |
// adding the childProduct
|
77 |
-
|
78 |
|
79 |
-
$category = $this->getCategoryAttribute($product);
|
80 |
// adding the category
|
81 |
$productArray = $category + $productArray;
|
|
|
82 |
}
|
83 |
return $productArray;
|
84 |
}
|
@@ -86,14 +85,13 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
86 |
/**
|
87 |
* method to get category content in xml given the product object
|
88 |
*/
|
89 |
-
private function getCategoryAttribute($product){
|
90 |
$cats = $product->getCategoryIds();
|
91 |
$categoryIds = array();
|
92 |
$category = array();
|
93 |
$categoryData = array();
|
94 |
-
$index = 0;
|
95 |
foreach ($cats as $categoryId) {
|
96 |
-
$_cat = Mage::helper('
|
97 |
if($_cat == null) {
|
98 |
continue;
|
99 |
}
|
@@ -101,14 +99,28 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
101 |
if($categoryName == null || $categoryName == "") {
|
102 |
continue;
|
103 |
}
|
104 |
-
if($index++ < 4) {
|
105 |
-
$categoryData['catlevel' . $index . 'Name'] = $categoryName;
|
106 |
-
}
|
107 |
$categoryIds[] = (string)$categoryId;
|
108 |
$category[] = $categoryName;
|
109 |
-
}
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
return $categoryData;
|
113 |
}
|
114 |
|
@@ -119,9 +131,9 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
119 |
$data = explode(",", $product->getData($fieldName));
|
120 |
$valueAsAnArray = array();
|
121 |
foreach($data as $eachdata){
|
122 |
-
$attributeValue = Mage::getResourceSingleton("
|
123 |
->getAttributeValue($fieldName, trim($eachdata), $product);
|
124 |
-
if(!is_null($attributeValue) && $attributeValue != "" && attributeValue != "Use Config") {
|
125 |
$valueAsAnArray[] = $attributeValue;
|
126 |
}
|
127 |
}
|
@@ -136,7 +148,8 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
136 |
*/
|
137 |
private function getImage($fieldName, $unbxdFieldName, $product, $fields) {
|
138 |
|
139 |
-
if(
|
|
|
140 |
Mage::getDesign()->setArea('frontend');
|
141 |
try {
|
142 |
return (string)Mage::helper('catalog/image')->init($product, $fieldName)
|
@@ -158,14 +171,15 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
158 |
} else {
|
159 |
$unbxdFieldName = $columnHeader;
|
160 |
}
|
161 |
-
|
|
|
162 |
}
|
163 |
|
164 |
/*
|
165 |
* Renaming the conflicted unbxd feature fields eg: gender to _gender
|
166 |
*/
|
167 |
private function renameConflictedFeatureFields($unbxdFieldName) {
|
168 |
-
if (in_array($unbxdFieldName, Mage::getResourceSingleton('
|
169 |
return "_" . $unbxdFieldName;
|
170 |
}
|
171 |
return $unbxdFieldName;
|
@@ -175,21 +189,15 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
175 |
* gives the children in form of array
|
176 |
*/
|
177 |
public function addChildrens($product, $fields, $productArray) {
|
|
|
178 |
$type = $product->getData('type_id');
|
179 |
if ($type == "configurable" || $type == "grouped" ) {
|
180 |
$associatedProducts = array();
|
181 |
-
if ($product->getTypeId() == 'grouped') {
|
182 |
-
$childrens = $product->getTypeInstance(true)->getAssociatedProducts($product);
|
183 |
-
} else{
|
184 |
-
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
|
185 |
-
$childrens = $conf->getUsedProductCollection()
|
186 |
-
->addAttributeToSelect('*')
|
187 |
-
->addFilterByRequiredOptions();
|
188 |
-
}
|
189 |
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
|
190 |
$childrens = $conf->getUsedProductCollection()
|
191 |
->addAttributeToSelect('*')
|
192 |
-
->addFilterByRequiredOptions()
|
|
|
193 |
foreach ($childrens as $children)
|
194 |
{
|
195 |
$childProduct = $this->getProduct($children, $fields, true);
|
@@ -284,11 +292,11 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
284 |
* returns the data type value
|
285 |
*/
|
286 |
private function convertDataTypeByValue($data_type, $value) {
|
287 |
-
if($data_type[
|
288 |
return $this->getFloatValues($value);
|
289 |
-
} else if ($data_type[
|
290 |
return $this->getNumberValues($value);
|
291 |
-
} else if ($data_type[
|
292 |
return $this->getDateValues($value);
|
293 |
}
|
294 |
return $value;
|
@@ -299,11 +307,12 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
299 |
*/
|
300 |
public function convertMultivalued($product, $fields = null) {
|
301 |
foreach($product as $field=>$value) {
|
302 |
-
if(is_null($fields) ||
|
303 |
(($field != "associatedProducts") &&
|
304 |
-
|
305 |
-
$fields[$field][
|
306 |
-
!is_array($value))
|
|
|
307 |
$valueAsAnArray = array();
|
308 |
$valueAsAnArray[] = $value;
|
309 |
$product[$field] = $valueAsAnArray;
|
@@ -313,4 +322,4 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Productbuilder extends Unbxd_Dataf
|
|
313 |
}
|
314 |
}
|
315 |
|
316 |
-
?>
|
1 |
<?php
|
2 |
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Productbuilder extends
|
4 |
+
Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
|
5 |
|
|
|
|
|
6 |
const NUMBER = "number";
|
7 |
const DECIMAL = "decimal";
|
8 |
const DATE = "date";
|
13 |
/*
|
14 |
* method to get the products in json
|
15 |
*/
|
16 |
+
public function getProducts($website, $collection, $fields) {
|
17 |
$content='';
|
18 |
$firstLoop = true;
|
19 |
foreach($collection as $product) {
|
21 |
$content = $content . ",";
|
22 |
}
|
23 |
|
24 |
+
$productArray = $this->getProduct($website, $product, $fields);
|
25 |
$productArray = $this->postProcessProduct($productArray, $fields, false);
|
26 |
$content=$content.json_encode($productArray);
|
27 |
|
35 |
/*
|
36 |
* method to get the product in json
|
37 |
*/
|
38 |
+
public function getProduct($website, $product, $fields, $childProduct = false) {
|
|
|
39 |
$productArray =array();
|
40 |
|
41 |
foreach($product->getData('') as $columnHeader=>$columndata){
|
46 |
}
|
47 |
|
48 |
if($columnHeader=="entity_id"){
|
49 |
+
$uniqueIdField = 'uniqueId'.(($childProduct)?'Associated':'');
|
50 |
+
$productArray[$uniqueIdField] = $columndata;
|
51 |
+
}else if($columnHeader=="url_path"){
|
|
|
52 |
// handling the url
|
53 |
$productArray[$unbxdFieldName] = Mage::getUrl('').$columndata;
|
54 |
+
} else if (Mage::helper('unbxd_recommendation/feedhelper')->isImage($columnHeader)) {
|
55 |
+
// handling tthe images
|
56 |
+
$attributeValue = $this->getImage($columnHeader, $unbxdFieldName, $product, $fields);
|
57 |
+
if(!is_null($attributeValue)) {
|
58 |
+
$productArray[$unbxdFieldName] = $attributeValue;
|
59 |
+
}
|
60 |
+
|
61 |
+
} else if( $fields[$unbxdFieldName][Unbxd_Recommendation_Model_Field::multivalued]){
|
62 |
// handling the array/ multiselect attribute
|
63 |
$attributeValue = $this->getMultiSelectAttribute($columnHeader, $product);
|
64 |
if(!is_null($attributeValue)) {
|
70 |
}
|
71 |
}
|
72 |
if(!$childProduct) {
|
73 |
+
|
74 |
// adding the childProduct
|
75 |
+
//$productArray = $this->addChildrens($product, $fields, $productArray);
|
76 |
|
77 |
+
$category = $this->getCategoryAttribute($website, $product);
|
78 |
// adding the category
|
79 |
$productArray = $category + $productArray;
|
80 |
+
|
81 |
}
|
82 |
return $productArray;
|
83 |
}
|
85 |
/**
|
86 |
* method to get category content in xml given the product object
|
87 |
*/
|
88 |
+
private function getCategoryAttribute($website, $product){
|
89 |
$cats = $product->getCategoryIds();
|
90 |
$categoryIds = array();
|
91 |
$category = array();
|
92 |
$categoryData = array();
|
|
|
93 |
foreach ($cats as $categoryId) {
|
94 |
+
$_cat = Mage::helper('unbxd_recommendation/feedhelper')->getCategory($categoryId);
|
95 |
if($_cat == null) {
|
96 |
continue;
|
97 |
}
|
99 |
if($categoryName == null || $categoryName == "") {
|
100 |
continue;
|
101 |
}
|
|
|
|
|
|
|
102 |
$categoryIds[] = (string)$categoryId;
|
103 |
$category[] = $categoryName;
|
104 |
+
}
|
105 |
+
|
106 |
+
$level1Categories = Mage::helper('unbxd_recommendation/feedhelper')
|
107 |
+
->getCatLevel1($website, $categoryIds);
|
108 |
+
$level2Categories = Mage::helper('unbxd_recommendation/feedhelper')
|
109 |
+
->getCatLevel2($website, $categoryIds, $level1Categories);
|
110 |
+
$level3Categories = Mage::helper('unbxd_recommendation/feedhelper')
|
111 |
+
->getCatLevel3($website, $categoryIds, $level2Categories);
|
112 |
+
if(array_values($level1Categories) > 0) {
|
113 |
+
$categoryData[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_1_NAME] = array_values($level1Categories);
|
114 |
+
}
|
115 |
+
if(array_values($level2Categories)) {
|
116 |
+
$categoryData[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_2_NAME] = array_values($level2Categories);
|
117 |
+
}
|
118 |
+
if(array_values($level3Categories)) {
|
119 |
+
$categoryData[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_3_NAME] = array_values($level3Categories);
|
120 |
+
}
|
121 |
+
|
122 |
+
$categoryData[Unbxd_Recommendation_Model_Resource_Field::CATEGORY_IDS_NAME] = $categoryIds;
|
123 |
+
$categoryData[Unbxd_Recommendation_Model_Resource_Field::CATEGORY_NAME] = $category;
|
124 |
return $categoryData;
|
125 |
}
|
126 |
|
131 |
$data = explode(",", $product->getData($fieldName));
|
132 |
$valueAsAnArray = array();
|
133 |
foreach($data as $eachdata){
|
134 |
+
$attributeValue = Mage::getResourceSingleton("unbxd_recommendation/attribute")
|
135 |
->getAttributeValue($fieldName, trim($eachdata), $product);
|
136 |
+
if(!is_null($attributeValue) && $attributeValue != "" && $attributeValue != "Use Config") {
|
137 |
$valueAsAnArray[] = $attributeValue;
|
138 |
}
|
139 |
}
|
148 |
*/
|
149 |
private function getImage($fieldName, $unbxdFieldName, $product, $fields) {
|
150 |
|
151 |
+
if(array_key_exists(self::GENERATE_IMAGE, $fields) &&
|
152 |
+
$fields[$unbxdFieldName][self::GENERATE_IMAGE] == "1") {
|
153 |
Mage::getDesign()->setArea('frontend');
|
154 |
try {
|
155 |
return (string)Mage::helper('catalog/image')->init($product, $fieldName)
|
171 |
} else {
|
172 |
$unbxdFieldName = $columnHeader;
|
173 |
}
|
174 |
+
return $unbxdFieldName;
|
175 |
+
//return $this->renameConflictedFeatureFields($unbxdFieldName);
|
176 |
}
|
177 |
|
178 |
/*
|
179 |
* Renaming the conflicted unbxd feature fields eg: gender to _gender
|
180 |
*/
|
181 |
private function renameConflictedFeatureFields($unbxdFieldName) {
|
182 |
+
if (in_array($unbxdFieldName, Mage::getResourceSingleton('unbxd_recommendation/field')->getConflictedFeatureFieldLust())) {
|
183 |
return "_" . $unbxdFieldName;
|
184 |
}
|
185 |
return $unbxdFieldName;
|
189 |
* gives the children in form of array
|
190 |
*/
|
191 |
public function addChildrens($product, $fields, $productArray) {
|
192 |
+
|
193 |
$type = $product->getData('type_id');
|
194 |
if ($type == "configurable" || $type == "grouped" ) {
|
195 |
$associatedProducts = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
|
197 |
$childrens = $conf->getUsedProductCollection()
|
198 |
->addAttributeToSelect('*')
|
199 |
+
->addFilterByRequiredOptions()
|
200 |
+
->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left');
|
201 |
foreach ($childrens as $children)
|
202 |
{
|
203 |
$childProduct = $this->getProduct($children, $fields, true);
|
292 |
* returns the data type value
|
293 |
*/
|
294 |
private function convertDataTypeByValue($data_type, $value) {
|
295 |
+
if($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::DECIMAL) {
|
296 |
return $this->getFloatValues($value);
|
297 |
+
} else if ($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::NUMBER) {
|
298 |
return $this->getNumberValues($value);
|
299 |
+
} else if ($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::DATE) {
|
300 |
return $this->getDateValues($value);
|
301 |
}
|
302 |
return $value;
|
307 |
*/
|
308 |
public function convertMultivalued($product, $fields = null) {
|
309 |
foreach($product as $field=>$value) {
|
310 |
+
if((is_null($fields) ||
|
311 |
(($field != "associatedProducts") &&
|
312 |
+
array_key_exists(Unbxd_Recommendation_Model_Field::multivalued,$fields[$field]) &&
|
313 |
+
$fields[$field][Unbxd_Recommendation_Model_Field::multivalued])) &&
|
314 |
+
!is_array($value)) {
|
315 |
+
|
316 |
$valueAsAnArray = array();
|
317 |
$valueAsAnArray[] = $value;
|
318 |
$product[$field] = $valueAsAnArray;
|
322 |
}
|
323 |
}
|
324 |
|
325 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Schemabuilder.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Schemabuilder extends Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
|
4 |
+
|
5 |
+
|
6 |
+
const FIELD_NAME = "fieldName";
|
7 |
+
const DATA_TYPE = "dataType";
|
8 |
+
const MULTIVALUED = "multiValued";
|
9 |
+
const AUTOSUGGEST = "autoSuggest";
|
10 |
+
const TRUE = "true";
|
11 |
+
const FALSE = "false";
|
12 |
+
|
13 |
+
public function getSchema($fields) {
|
14 |
+
$fieldList = array();
|
15 |
+
foreach($fields as $fieldName=>$values ) {
|
16 |
+
$fieldList[] = array(self::FIELD_NAME => $fieldName,
|
17 |
+
self::DATA_TYPE => $values[Unbxd_Recommendation_Model_Field::datatype],
|
18 |
+
self::MULTIVALUED =>
|
19 |
+
(array_key_exists(Unbxd_Recommendation_Model_Field::multivalued, $values)
|
20 |
+
&& $values[Unbxd_Recommendation_Model_Field::multivalued])?
|
21 |
+
self::TRUE:self::FALSE,
|
22 |
+
self::AUTOSUGGEST => ($values[Unbxd_Recommendation_Model_Field::autosuggest] == 1?self::TRUE: self::FALSE));
|
23 |
+
|
24 |
+
}
|
25 |
+
return json_encode($fieldList);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
?>
|
app/code/local/Unbxd/{Datafeeder → Recommendation}/Model/Feed/Jsonbuilder/Taxonomybuilder.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
var $file='unbxdTaxonomy.xml';
|
6 |
|
@@ -153,7 +153,7 @@ class Unbxd_Datafeeder_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Data
|
|
153 |
|
154 |
$content=array();
|
155 |
$content["uniqueId"]= (string)$mapping['entity_id'];
|
156 |
-
$content["
|
157 |
return json_encode($content).',';
|
158 |
}
|
159 |
|
1 |
<?php
|
2 |
|
3 |
+
class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
|
4 |
|
5 |
var $file='unbxdTaxonomy.xml';
|
6 |
|
153 |
|
154 |
$content=array();
|
155 |
$content["uniqueId"]= (string)$mapping['entity_id'];
|
156 |
+
$content["nodeId"] = explode(",", $mapping['category_id']);
|
157 |
return json_encode($content).',';
|
158 |
}
|
159 |
|
app/code/local/Unbxd/Recommendation/Model/Field.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This class maintains the config of the fields that are needed by unbxd
|
5 |
+
*
|
6 |
+
* @category Unbxd
|
7 |
+
* @package Unbxd_Recommendation
|
8 |
+
* @author Unbxd Software Pvt. Ltd
|
9 |
+
*/
|
10 |
+
class Unbxd_Recommendation_Model_Field extends Mage_Core_Model_Abstract {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* field name column in db
|
14 |
+
*/
|
15 |
+
const field_name = "field_name";
|
16 |
+
|
17 |
+
/**
|
18 |
+
* datatype column name in db
|
19 |
+
*/
|
20 |
+
const datatype = "datatype";
|
21 |
+
|
22 |
+
/**
|
23 |
+
* autosuggest column name in db
|
24 |
+
*/
|
25 |
+
const autosuggest = "autosuggest";
|
26 |
+
|
27 |
+
/**
|
28 |
+
* featured_field column name in db
|
29 |
+
*/
|
30 |
+
const featured_field = "featured_field";
|
31 |
+
|
32 |
+
/**
|
33 |
+
* displayable column name in db
|
34 |
+
*/
|
35 |
+
const dislayable = "displayed";
|
36 |
+
|
37 |
+
const multivalued = 'multivalued';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* website id column name in db
|
41 |
+
*/
|
42 |
+
const website_id = "website_id";
|
43 |
+
|
44 |
+
const status = 'status';
|
45 |
+
|
46 |
+
/**
|
47 |
+
* All possible data type values supported unbxd
|
48 |
+
* @var array
|
49 |
+
*/
|
50 |
+
public static $data_types = array("text", "longText", "link", "decimal", "number", "datetime");
|
51 |
+
|
52 |
+
public static $displayableFeatureFields = array('title', 'price',
|
53 |
+
'brand', 'color', 'size', 'imageUrl', 'productUrl');
|
54 |
+
|
55 |
+
public static $featurefields = array();
|
56 |
+
|
57 |
+
/**
|
58 |
+
*
|
59 |
+
* @return void
|
60 |
+
*/
|
61 |
+
protected function _construct()
|
62 |
+
{
|
63 |
+
$this->_init('unbxd_recommendation/field');
|
64 |
+
Unbxd_Recommendation_Model_Field::$featurefields = $this->getFeaturedFields();
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Save fields
|
71 |
+
*
|
72 |
+
* @return void
|
73 |
+
*/
|
74 |
+
public function saveFields($collection) {
|
75 |
+
$this->_getResource()->beginTransaction();
|
76 |
+
try {
|
77 |
+
foreach ($collection as $data) {
|
78 |
+
if(sizeof($data) > 0) {
|
79 |
+
if(array_key_exists("add", $data)) {
|
80 |
+
$data["add"]->save();
|
81 |
+
} else if (array_key_exists("delete", $data)) {
|
82 |
+
$data["delete"]->delete();
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
$this->_getResource()->commit();
|
88 |
+
} catch(Exception $e) {
|
89 |
+
$this->_getResource()->rollBack();
|
90 |
+
Mage::helper("unbxd_recommendation")->log(Zend_Log::ERR, "Saving fields failed because " . $e->getMessage());
|
91 |
+
return array('OTHERS' => $e->getMessage());
|
92 |
+
}
|
93 |
+
return true;
|
94 |
+
|
95 |
+
}
|
96 |
+
|
97 |
+
/*
|
98 |
+
* method to get the featured fields
|
99 |
+
*/
|
100 |
+
public function getFeaturedFields() {
|
101 |
+
$featuredFields = array();
|
102 |
+
$featuredFields["uniqueId"]=$this->getField("text", "false", "false");
|
103 |
+
$featuredFields["sellingPrice"]=$this->getField("decimal", "false", "false");
|
104 |
+
$featuredFields["discount"]=$this->getField("decimal", "false", "false");
|
105 |
+
$featuredFields["rating"]=$this->getField("decimal", "false", "false");
|
106 |
+
$featuredFields["brandId"]=$this->getField("text", "false", "false");
|
107 |
+
$featuredFields["catlevel1Name"]=$this->getField("text", "false", "false");
|
108 |
+
$featuredFields["catlevel2Name"]=$this->getField("text", "false", "false");
|
109 |
+
$featuredFields["catlevel3Name"]=$this->getField("text", "false", "false");
|
110 |
+
$featuredFields["catlevel4Name"]=$this->getField("text", "false", "false");
|
111 |
+
$featuredFields["category"]=$this->getField("text", "true", "true");
|
112 |
+
$featuredFields["subCategory"]=$this->getField("text", "true", "true");
|
113 |
+
$featuredFields["color"]=$this->getField("text", "true", "false");
|
114 |
+
$featuredFields["size"]=$this->getField("text", "true", "false");
|
115 |
+
$featuredFields["availability"]=$this->getField("bool", "false", "false");
|
116 |
+
$featuredFields["description"]=$this->getField("longText", "false", "false");
|
117 |
+
$featuredFields["imageUrl"]=$this->getField("link", "true", "false");
|
118 |
+
$featuredFields["productUrl"]=$this->getField("link", "false", "false");
|
119 |
+
$featuredFields["brand"]=$this->getField("text", "false", "true");
|
120 |
+
$featuredFields["price"]=$this->getField("decimal", "false", "false");
|
121 |
+
$featuredFields["title"]=$this->getField("text", "false", "true");
|
122 |
+
$featuredFields["gender"]=$this->getField("text", "false", "false");
|
123 |
+
$featuredFields["unbxdVisibility"]=$this->getField("text", "false", "false");
|
124 |
+
return $featuredFields;
|
125 |
+
}
|
126 |
+
|
127 |
+
public function getField($dataType, $multiValued, $autosuggest) {
|
128 |
+
return array( self::status => 1, self::datatype => $dataType,
|
129 |
+
self::multivalued => ($multiValued=="true")?1:0,
|
130 |
+
self::autosuggest => ($autosuggest=="true")?1:0 );
|
131 |
+
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Observer.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Observer {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Observer method to track the add to cart
|
12 |
+
* @return $this
|
13 |
+
*/
|
14 |
+
public function trackAddToCart(Varien_Event_Observer $observer) {
|
15 |
+
$product = $observer->getEvent()->getProduct();
|
16 |
+
if(!$product instanceof Mage_Catalog_Model_Product) {
|
17 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'CART_TRACKER:product is not a valid type');
|
18 |
+
}
|
19 |
+
$response = Mage::getModel('unbxd_recommendation/api_task_trackcart')
|
20 |
+
->setData('data', array('pid' => Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product),'visit_type' => 'repeat'))
|
21 |
+
->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'])
|
22 |
+
->setData('agent', $_SERVER['HTTP_USER_AGENT'])
|
23 |
+
->prepare(Mage::app()->getWebsite())
|
24 |
+
->process();
|
25 |
+
$errors = $response->getErrors();
|
26 |
+
if(sizeof($errors) > 0) {
|
27 |
+
Mage::helper('unbxd_recommendation')
|
28 |
+
->log(Zend_Log::ERR, 'CART_TRACKER:request failed because ' .json_encode($errors));
|
29 |
+
}
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Observer method to track orders
|
35 |
+
* @return $this
|
36 |
+
*/
|
37 |
+
public function trackOrder(Varien_Event_Observer $observer) {
|
38 |
+
$payment = $observer->getEvent()->getPayment();
|
39 |
+
if(!$payment instanceof Mage_Sales_Model_Order_Payment) {
|
40 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'ORDER_TRACKER:payment is not a valid type');
|
41 |
+
}
|
42 |
+
$items = $payment->getOrder()->getItemsCollection();
|
43 |
+
|
44 |
+
foreach($items as $item) {
|
45 |
+
if($item instanceof Mage_Sales_Model_Order) {
|
46 |
+
Mage::helper('unbxd_recommendation')
|
47 |
+
->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because item is of instancetype ' . get_class($item));
|
48 |
+
continue;
|
49 |
+
}
|
50 |
+
$type = $item->getProductType();
|
51 |
+
|
52 |
+
switch($type){
|
53 |
+
case 'configurable':
|
54 |
+
if ($item->getHasChildren()) {
|
55 |
+
$productId = $item->getProductId();
|
56 |
+
}elseif($item->getParentItem() != null) {
|
57 |
+
$productId = $item->getParentItem()->getProductId();
|
58 |
+
}
|
59 |
+
break;
|
60 |
+
case 'grouped':
|
61 |
+
$values=$item->getProductOptionByCode('info_buyRequest');
|
62 |
+
$parentId = $values['super_product_config']['product_id'];
|
63 |
+
$productId = $parentId;
|
64 |
+
break;
|
65 |
+
case 'bundle':
|
66 |
+
$productId = $item->getProductId();
|
67 |
+
break;
|
68 |
+
case 'simple':
|
69 |
+
if ($item->getParentItem() != null) {
|
70 |
+
$productId = $item->getParentItem()->getProductId();
|
71 |
+
} else {
|
72 |
+
$productId = $item->getProductId();
|
73 |
+
}
|
74 |
+
break;
|
75 |
+
default:
|
76 |
+
$productId = $item->getProductId();
|
77 |
+
}
|
78 |
+
$response = Mage::getModel('unbxd_recommendation/api_task_trackorder')
|
79 |
+
->setData('data',
|
80 |
+
array('visit_type' => 'repeat', 'pid' => $productId,
|
81 |
+
'qty' => $item->getQtyOrdered(), 'price' => $item->getPriceInclTax()))
|
82 |
+
->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'])
|
83 |
+
->setData('agent', $_SERVER['HTTP_USER_AGENT'])
|
84 |
+
->prepare(Mage::app()->getWebsite())
|
85 |
+
->process();
|
86 |
+
if ($response->isSuccess() && is_array($response->getErrors()) && sizeof($response->getErrors()) > 0) {
|
87 |
+
Mage::helper('unbxd_recommendation')
|
88 |
+
->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because ' . json_encode($response->getErrors()));
|
89 |
+
}
|
90 |
+
}
|
91 |
+
return $this;
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
public function syncProduct()
|
96 |
+
{
|
97 |
+
$websiteCollection = Mage::getModel('core/website')->getCollection()->load();
|
98 |
+
|
99 |
+
foreach ($websiteCollection as $website) {
|
100 |
+
Mage::getResourceModel('unbxd_recommendation/config')
|
101 |
+
->setValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::IS_CRON_ENABLED, 1);
|
102 |
+
$fromdate = "1970-01-01 00:00:01";
|
103 |
+
Mage::getSingleton('unbxd_recommendation/feed_feedmanager')->process($fromdate, $website);
|
104 |
+
}
|
105 |
+
return $this;
|
106 |
+
}
|
107 |
+
}
|
108 |
+
?>
|
app/code/local/Unbxd/{Datafeeder/Model/Mysql4 → Recommendation/Model/Resource}/Attribute.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
protected $attributeMap = array();
|
6 |
public function getAttributeValue($attributeCode, $value, $product){
|
1 |
<?php
|
2 |
|
3 |
+
class Unbxd_Recommendation_Model_Resource_Attribute {
|
4 |
|
5 |
protected $attributeMap = array();
|
6 |
public function getAttributeValue($attributeCode, $value, $product){
|
app/code/local/Unbxd/Recommendation/Model/Resource/Config.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abstract
|
9 |
+
{
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Unbxd Config table Name
|
13 |
+
*
|
14 |
+
* @var string
|
15 |
+
*/
|
16 |
+
protected $_unbxdConfigTable;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return void
|
20 |
+
*/
|
21 |
+
protected function _construct()
|
22 |
+
{
|
23 |
+
$this->_init('unbxd_recommendation/config', 'id');
|
24 |
+
$this->_unbxdConfigTable = $this->getTable('unbxd_recommendation/config');
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @param $website_id
|
29 |
+
* @param $key
|
30 |
+
* @return null|string
|
31 |
+
*/
|
32 |
+
public function getValue($website_id, $key)
|
33 |
+
{
|
34 |
+
$adapter = $this->_getReadAdapter();
|
35 |
+
|
36 |
+
$select = $adapter->select()
|
37 |
+
->from($this->_unbxdConfigTable, 'value')
|
38 |
+
->where('`'.Unbxd_Recommendation_Model_Config::website_id.'` = ?', (int)$website_id)
|
39 |
+
->where('`'.Unbxd_Recommendation_Model_Config::key.'` = ?', $key);
|
40 |
+
|
41 |
+
$result = $adapter->fetchOne($select);
|
42 |
+
if($result == false) {
|
43 |
+
return null;
|
44 |
+
}
|
45 |
+
return $result;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param int $website_id
|
50 |
+
* @param string $key
|
51 |
+
* @param string $value
|
52 |
+
* @return void
|
53 |
+
*/
|
54 |
+
public function setValue($website_id, $key, $value)
|
55 |
+
{
|
56 |
+
if (!isset($value) || $value == "" || !isset($key) || $key == "") {
|
57 |
+
return;
|
58 |
+
}
|
59 |
+
|
60 |
+
$config = Mage::getModel('unbxd_recommendation/config')->getCollection()
|
61 |
+
->addFieldToFilter('`'.Unbxd_Recommendation_Model_Config::key.'`', $key)
|
62 |
+
->addFieldToFilter('`'.Unbxd_Recommendation_Model_Config::website_id.'`', (int)$website_id)
|
63 |
+
->getFirstItem();
|
64 |
+
|
65 |
+
$config->setWebsiteId($website_id)
|
66 |
+
->setKey($key)
|
67 |
+
->setValue($value)
|
68 |
+
->save();
|
69 |
+
}
|
70 |
+
|
71 |
+
public function lockSite($website_id) {
|
72 |
+
$this->setValue($website_id, 'feed_lock', '1');
|
73 |
+
$this->setValue($website_id, 'feed_lock_time', date('Y-m-d H:i:s'));
|
74 |
+
}
|
75 |
+
|
76 |
+
|
77 |
+
public function unLockSite($website_id) {
|
78 |
+
$this->setValue($website_id, 'feed_lock', '0');
|
79 |
+
}
|
80 |
+
|
81 |
+
public function isLock($website_id) {
|
82 |
+
$feedLock = $this->getValue($website_id, 'feed_lock');
|
83 |
+
if(is_null($feedLock) || $feedLock == 0){
|
84 |
+
return false;
|
85 |
+
}
|
86 |
+
return true;
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Resource/Config/Collection.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd {
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Resource_Config_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
*/
|
12 |
+
public function _construct()
|
13 |
+
{
|
14 |
+
$this->_init('unbxd_recommendation/config');
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Resource/Field.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_Abstract
|
9 |
+
{
|
10 |
+
|
11 |
+
const CAT_LEVEL_1_NAME = "catLevel1";
|
12 |
+
|
13 |
+
const CAT_LEVEL_2_NAME = "catLevel2";
|
14 |
+
|
15 |
+
const CAT_LEVEL_3_NAME = "catLevel3";
|
16 |
+
|
17 |
+
const CATEGORY_IDS_NAME = "categoryIds";
|
18 |
+
|
19 |
+
const CATEGORY_NAME = "category";
|
20 |
+
/**
|
21 |
+
* Unbxd Field Config table Name
|
22 |
+
*
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
protected $_unbxdFieldTable;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @return void
|
29 |
+
*/
|
30 |
+
protected function _construct()
|
31 |
+
{
|
32 |
+
$this->_init('unbxd_recommendation/field', 'id');
|
33 |
+
$this->_unbxdFieldTable = $this->getTable('unbxd_recommendation/field');
|
34 |
+
}
|
35 |
+
|
36 |
+
public function getTableName() {
|
37 |
+
return $this->_unbxdFieldTable;
|
38 |
+
}
|
39 |
+
|
40 |
+
public function getFieldByFeatureField($websiteId, $featureField){
|
41 |
+
$adapter = $this->_getReadAdapter();
|
42 |
+
|
43 |
+
$select = $adapter->select()
|
44 |
+
->from($this->_unbxdFieldTable, Unbxd_Recommendation_Model_Field::field_name)
|
45 |
+
->where('`'.Unbxd_Recommendation_Model_Field::website_id.'` = ?', (int)$websiteId)
|
46 |
+
->where('`'.Unbxd_Recommendation_Model_Field::featured_field.'` = ?', $featureField);
|
47 |
+
|
48 |
+
$result = $adapter->fetchOne($select);
|
49 |
+
if($result == false) {
|
50 |
+
return null;
|
51 |
+
}
|
52 |
+
return $result;
|
53 |
+
}
|
54 |
+
|
55 |
+
public function getDisplayableFields(Mage_Core_Model_Website $website) {
|
56 |
+
$fields = $this->getDisplayableFieldCollection($website);
|
57 |
+
if(count($fields) == 0) {
|
58 |
+
return $this->setDefaultFields($website)
|
59 |
+
->getDisplayableFieldCollection($website);
|
60 |
+
}
|
61 |
+
return $fields;
|
62 |
+
}
|
63 |
+
|
64 |
+
protected function getDisplayableFieldCollection(Mage_Core_Model_Website $website) {
|
65 |
+
return Mage::getModel("unbxd_recommendation/field")
|
66 |
+
->getCollection()
|
67 |
+
->addFieldsDisplayFilter()
|
68 |
+
->addWebsiteFilter($website)
|
69 |
+
->load();
|
70 |
+
}
|
71 |
+
|
72 |
+
public function setDefaultFields(Mage_Core_Model_Website $website) {
|
73 |
+
$_writer = $this->_getWriteAdapter();
|
74 |
+
$_writer->query($this->getDefaultFieldInsertStatement($website));
|
75 |
+
return $this;
|
76 |
+
}
|
77 |
+
|
78 |
+
public function getDefaultFieldInsertStatement(Mage_Core_Model_Website $website) {
|
79 |
+
$websiteId = $website->getWebsiteId();
|
80 |
+
if(is_null($websiteId)) {
|
81 |
+
return "";
|
82 |
+
}
|
83 |
+
$fieldTable = Mage::getResourceModel('unbxd_recommendation/field')->getTableName();
|
84 |
+
return "
|
85 |
+
INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
|
86 |
+
VALUES
|
87 |
+
({$websiteId}, 'name', 'text', 1, 'title', 0, 1),
|
88 |
+
({$websiteId}, 'final_price', 'decimal', 0, 'price', 0, 1),
|
89 |
+
({$websiteId}, 'price', 'decimal', 0, NULL, 0, 1),
|
90 |
+
({$websiteId}, 'brand', 'text', 0, 'brand', 0, 1),
|
91 |
+
({$websiteId}, 'color', 'text', 0, 'color', 1, 1),
|
92 |
+
({$websiteId}, 'size', 'text', 0, 'size', 1, 1),
|
93 |
+
({$websiteId}, 'image', 'link', 0, 'imageUrl', 1, 1),
|
94 |
+
({$websiteId}, 'url_path', 'link', 0, 'productUrl', 0, 1),
|
95 |
+
({$websiteId}, '".self::CAT_LEVEL_1_NAME. "', 'text', 0, NULL, 1, 0),
|
96 |
+
({$websiteId}, '".self::CAT_LEVEL_2_NAME. "', 'text', 0, NULL, 1, 0),
|
97 |
+
({$websiteId}, '".self::CAT_LEVEL_3_NAME. "', 'text', 0, NULL, 1, 0),
|
98 |
+
({$websiteId}, 'status', 'number', 0, NULL, 0, 0),
|
99 |
+
({$websiteId}, 'visibility', 'number', 0, NULL, 0, 0),
|
100 |
+
({$websiteId}, 'qty', 'number', 0, NULL, 0, 0),
|
101 |
+
({$websiteId}, '".self::CATEGORY_IDS_NAME. "', 'longText', 0, NULL, {$websiteId}, 0),
|
102 |
+
({$websiteId}, '".self::CATEGORY_NAME. "', 'text', 0, 'category', 1, 0),
|
103 |
+
({$websiteId}, 'uniqueId', 'longText', 0, NULL, 0, 0),
|
104 |
+
({$websiteId}, 'entity_id', 'longText', 0, NULL, 0, 0);";
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Resource/Field/Collection.php
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd {
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_Model_Resource_Field_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
*/
|
12 |
+
public function _construct()
|
13 |
+
{
|
14 |
+
$this->_init('unbxd_recommendation/field');
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Method to add fields to display filter
|
19 |
+
*
|
20 |
+
* @return void
|
21 |
+
*/
|
22 |
+
public function addFieldsDisplayFilter() {
|
23 |
+
$this->addFieldToFilter(Unbxd_Recommendation_Model_Field::dislayable,1);
|
24 |
+
return $this;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function addWebsiteFilter(Mage_Core_Model_Website $website) {
|
28 |
+
$this->addFieldToFilter(Unbxd_Recommendation_Model_Field::website_id, $website->getWebsiteId());
|
29 |
+
return $this;
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Method to get field collection as array
|
34 |
+
*
|
35 |
+
* @return array
|
36 |
+
*/
|
37 |
+
public function __asArray() {
|
38 |
+
$fields = array();
|
39 |
+
foreach($this->_items as $item) {
|
40 |
+
$field = array();
|
41 |
+
$field[Unbxd_Recommendation_Model_Field::field_name] = $item->getFieldName();
|
42 |
+
$field[Unbxd_Recommendation_Model_Field::datatype] = $item->getDatatype();
|
43 |
+
$field[Unbxd_Recommendation_Model_Field::autosuggest] = $item->getAutosuggest();
|
44 |
+
$featureField = $item->getFeaturedField();
|
45 |
+
if(isset($featureField)) {
|
46 |
+
$field[Unbxd_Recommendation_Model_Field::featured_field] = $featureField;
|
47 |
+
}
|
48 |
+
$fields[] = $field;
|
49 |
+
}
|
50 |
+
return $fields;
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getFeatureFields(Mage_Core_Model_Website $website) {
|
54 |
+
$this->getSelect()->where(Unbxd_Recommendation_Model_Field::featured_field. " IS NOT NULL AND ".
|
55 |
+
Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
|
56 |
+
return $this->load();
|
57 |
+
}
|
58 |
+
|
59 |
+
public function getFields(Mage_Core_Model_Website $website) {
|
60 |
+
$this->getSelect()->where(Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
|
61 |
+
return $this->load();
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
?>
|
app/code/local/Unbxd/Recommendation/Model/Resource/Product/Collection.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection{
|
4 |
+
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
}
|
9 |
+
|
10 |
+
public function isEnabledFlat()
|
11 |
+
{
|
12 |
+
return false;
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
?>
|
app/code/local/Unbxd/Recommendation/controllers/AdminController.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Unbxd
|
5 |
+
* @package Unbxd_Recommendation
|
6 |
+
* @author Unbxd Software Pvt. Ltd {
|
7 |
+
*/
|
8 |
+
class Unbxd_Recommendation_AdminController extends Mage_Adminhtml_Controller_Action {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @return void
|
12 |
+
*/
|
13 |
+
public function editAction(){
|
14 |
+
//echo json_encode($this->getLayout()->getUpdate()->getHandles());
|
15 |
+
$this->loadLayout();
|
16 |
+
$this->renderLayout();
|
17 |
+
}
|
18 |
+
}
|
19 |
+
|
20 |
+
?>
|
app/code/local/Unbxd/Recommendation/controllers/ConfigController.php
ADDED
@@ -0,0 +1,321 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* controller that provides all the config
|
5 |
+
* @category Unbxd
|
6 |
+
* @package Unbxd_Recommendation
|
7 |
+
* @author Unbxd Software Pvt. Ltd
|
8 |
+
*/
|
9 |
+
class Unbxd_Recommendation_ConfigController extends Mage_Core_Controller_Front_Action {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return Unbxd_Recommendation_Helper_Confighelper
|
13 |
+
*/
|
14 |
+
protected function helper() {
|
15 |
+
return Mage::helper("unbxd_recommendation/confighelper");
|
16 |
+
}
|
17 |
+
|
18 |
+
protected function getRawBody($request) {
|
19 |
+
$requestBody = json_decode($request->getRawBody(), true);
|
20 |
+
if(0 != strpos($request->getHeader('Content-Type'), 'application/json') || $requestBody === false) {
|
21 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
22 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
23 |
+
'errors' => array('message' => 'Invalid Request'))));
|
24 |
+
return null;
|
25 |
+
}
|
26 |
+
return $requestBody;
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
protected function getFields($request) {
|
31 |
+
$requestBody = $this->getRawBody($request);
|
32 |
+
if(is_null($requestBody)) {
|
33 |
+
return null;
|
34 |
+
}
|
35 |
+
if(!array_key_exists("fields", $requestBody)) {
|
36 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
37 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
38 |
+
'errors' => array('message' => 'Invalid Request'))));
|
39 |
+
return null;
|
40 |
+
}
|
41 |
+
return $requestBody["fields"];
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param $websiteName
|
46 |
+
* @return mixed
|
47 |
+
*/
|
48 |
+
protected function getWebsiteByName($websiteName)
|
49 |
+
{
|
50 |
+
return Mage::getResourceModel('core/website_collection')
|
51 |
+
->addFieldToFilter('name', $websiteName)
|
52 |
+
->getFirstItem();
|
53 |
+
}
|
54 |
+
|
55 |
+
protected function prepare() {
|
56 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
57 |
+
if(array_key_exists("site", $_REQUEST)) {
|
58 |
+
$website = $this->getWebsiteByName($_GET["site"]);
|
59 |
+
}
|
60 |
+
|
61 |
+
if(!isset($website) || !$website->hasData("website_id")) {
|
62 |
+
Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG,'api failed because of invalid website');
|
63 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid site'))));
|
64 |
+
return null;
|
65 |
+
}
|
66 |
+
return $website;
|
67 |
+
}
|
68 |
+
|
69 |
+
public function editAction(){
|
70 |
+
$this->loadLayout();
|
71 |
+
$this->renderLayout();
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* api to return the sites
|
76 |
+
* @return void
|
77 |
+
*/
|
78 |
+
public function siteAction()
|
79 |
+
{
|
80 |
+
$websites = Mage::app()->getWebsites();
|
81 |
+
$sites = array();
|
82 |
+
foreach ($websites as $website) {
|
83 |
+
$sites[] = array('name' => $website->getName(),
|
84 |
+
'id' => $website->getId(),
|
85 |
+
'numDocs' => $this->helper()->getNumberOfDocsInUnbxd($website));
|
86 |
+
}
|
87 |
+
$response = array('sites' => $sites);
|
88 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
89 |
+
$this->getResponse()->setBody(json_encode($response));
|
90 |
+
}
|
91 |
+
|
92 |
+
public function fieldsAction() {
|
93 |
+
$request = $this->getRequest();
|
94 |
+
if(array_key_exists("site", $_REQUEST)) {
|
95 |
+
$website = $this->getWebsiteByName($_GET["site"]);
|
96 |
+
}
|
97 |
+
if(!isset($website) || !$website->hasData("website_id")) {
|
98 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
99 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
100 |
+
'errors' => array('message' => 'Invalid site'))));
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
|
104 |
+
$mappedFields = Mage::getResourceModel('unbxd_recommendation/field')->getDisplayableFields($website)
|
105 |
+
->__asArray();
|
106 |
+
$featureFields = Unbxd_Recommendation_Model_Field::$displayableFeatureFields;
|
107 |
+
foreach($mappedFields as $fields) {
|
108 |
+
if(array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $fields) &&
|
109 |
+
in_array($fields[Unbxd_Recommendation_Model_Field::featured_field], $featureFields)) {
|
110 |
+
unset($featureFields[array_search($fields[Unbxd_Recommendation_Model_Field::featured_field],
|
111 |
+
$featureFields)]);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
foreach($featureFields as $field) {
|
116 |
+
$mappedFields[] = array(Unbxd_Recommendation_Model_Field::featured_field => $field,
|
117 |
+
Unbxd_Recommendation_Model_Field::datatype => 'text',
|
118 |
+
Unbxd_Recommendation_Model_Field::autosuggest => 1);
|
119 |
+
}
|
120 |
+
|
121 |
+
$fields = Mage::helper("unbxd_recommendation/confighelper")->getAllAttributes();
|
122 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
123 |
+
$this->getResponse()->setBody(json_encode(array('success' => true,
|
124 |
+
'mappedFields' => $mappedFields, 'fields' => $fields,
|
125 |
+
'datatype' => Unbxd_Recommendation_Model_Field::$data_types)));
|
126 |
+
} else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
|
127 |
+
|
128 |
+
//request for adding fields
|
129 |
+
$response = $this->helper()->saveFields($this->getFields($request), $website);
|
130 |
+
if(is_array($response)) {
|
131 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
132 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
|
133 |
+
return;
|
134 |
+
}
|
135 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
136 |
+
$this->getResponse()->setBody(json_encode(array('success' => true)));
|
137 |
+
return;
|
138 |
+
} else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::PUT) {
|
139 |
+
|
140 |
+
// request for deleting fields
|
141 |
+
$response = $this->helper()->deleteFields($this->getFields($request), $website);
|
142 |
+
if(is_array($response)) {
|
143 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
144 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
|
145 |
+
return;
|
146 |
+
}
|
147 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
148 |
+
$this->getResponse()->setBody(json_encode(array('success' => true)));
|
149 |
+
return;
|
150 |
+
} else {
|
151 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
|
152 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
153 |
+
'errors' => array('message' => 'Invalid method'))));
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Api to update dimension mapping
|
159 |
+
*
|
160 |
+
* @return void
|
161 |
+
*/
|
162 |
+
public function analyticsimpressionAction() {
|
163 |
+
$website = $this->prepare();
|
164 |
+
if(is_null($website)){
|
165 |
+
return;
|
166 |
+
}
|
167 |
+
if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
|
168 |
+
|
169 |
+
$response = Mage::getModel("unbxd_recommendation/api_task_analyticsimpression")
|
170 |
+
->prepare($website)
|
171 |
+
->process();
|
172 |
+
if(!$response->isSuccess()) {
|
173 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response->getErrors())));
|
174 |
+
return;
|
175 |
+
}
|
176 |
+
$this->getResponse()->setBody(json_encode(array('success' => true) + $response->getResponse()));
|
177 |
+
} else {
|
178 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid method'))));
|
179 |
+
}
|
180 |
+
|
181 |
+
}
|
182 |
+
|
183 |
+
public function keysAction() {
|
184 |
+
$request = $this->getRequest();
|
185 |
+
$website = $this->prepare();
|
186 |
+
if(is_null($website)) {
|
187 |
+
return;
|
188 |
+
}
|
189 |
+
|
190 |
+
if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
|
191 |
+
$secretKey =Mage::getResourceModel("unbxd_recommendation/config")
|
192 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
|
193 |
+
$siteKey =Mage::getResourceModel("unbxd_recommendation/config")
|
194 |
+
->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
|
195 |
+
$errors = array();
|
196 |
+
if(is_null($secretKey)) {
|
197 |
+
$errors[Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY] = "secret key not set";
|
198 |
+
}
|
199 |
+
if(is_null($siteKey)) {
|
200 |
+
$errors[Unbxd_Recommendation_Helper_Confighelper::SITE_KEY] = "site key not set";
|
201 |
+
}
|
202 |
+
if(sizeof($errors) > 0) {
|
203 |
+
Mage::helper('unbxd_recommendation')
|
204 |
+
->log(Zend_Log::DEBUG,'save keys api failed because ' . json_encode($errors));
|
205 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $errors)));
|
206 |
+
return;
|
207 |
+
}
|
208 |
+
$this->getResponse()->setBody(json_encode(array('success' => true,
|
209 |
+
Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY => $secretKey,
|
210 |
+
Unbxd_Recommendation_Helper_Confighelper::SITE_KEY => $siteKey)));
|
211 |
+
return;
|
212 |
+
} else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
|
213 |
+
$requestBody = $request->getRawBody();
|
214 |
+
$errors = $this->helper()->validateAndSaveKeys($website, $requestBody);
|
215 |
+
if(sizeof($errors)>0) {
|
216 |
+
Mage::helper('unbxd_recommendation')
|
217 |
+
->log(Zend_Log::DEBUG, 'save keys api failed because of ' . json_encode($errors));
|
218 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
219 |
+
'errors' => $errors)));
|
220 |
+
return;
|
221 |
+
}
|
222 |
+
$this->getResponse()->setBody(json_encode(array('success' => true)));
|
223 |
+
} else {
|
224 |
+
Mage::helper('unbxd_recommendation')
|
225 |
+
->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
|
226 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
227 |
+
'errors' => array('message' => 'Invalid method'))));
|
228 |
+
return;
|
229 |
+
}
|
230 |
+
}
|
231 |
+
|
232 |
+
|
233 |
+
public function dimensionmapAction()
|
234 |
+
{
|
235 |
+
$website = $this->prepare();
|
236 |
+
if (is_null($website)) {
|
237 |
+
return;
|
238 |
+
}
|
239 |
+
if ($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
|
240 |
+
$response = $this->helper()->updateFeatureFields($website);
|
241 |
+
if(is_array($response)) {
|
242 |
+
$this->getResponse()->setBody(json_encode(array('success' => false, $response)));
|
243 |
+
return;
|
244 |
+
}
|
245 |
+
$this->getResponse()->setBody(json_encode(array('success' => true)));
|
246 |
+
return;
|
247 |
+
} else {
|
248 |
+
Mage::helper('unbxd_recommendation')
|
249 |
+
->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
|
250 |
+
$this->getResponse()->setBody(json_encode(array('success' => false,
|
251 |
+
'errors' => array('message' => 'Invalid method'))));
|
252 |
+
|
253 |
+
}
|
254 |
+
}
|
255 |
+
|
256 |
+
public function downloadAction() {
|
257 |
+
$filepath = Mage::getBaseDir('log').DS.Unbxd_Recommendation_Helper_Data::LOG_FILE;
|
258 |
+
|
259 |
+
if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
|
260 |
+
throw new Exception ( );
|
261 |
+
}
|
262 |
+
$this->getResponse ()
|
263 |
+
->setHttpResponseCode ( 200 )
|
264 |
+
->setHeader ( 'Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true )
|
265 |
+
->setHeader ( 'Pragma', 'public', true )
|
266 |
+
->setHeader ( 'Content-type', 'application/force-download' )
|
267 |
+
->setHeader ( 'Content-Length', filesize($filepath) )
|
268 |
+
->setHeader ('Content-Disposition', 'attachment' . '; filename=' . basename($filepath) );
|
269 |
+
$this->getResponse ()->clearBody ();
|
270 |
+
$this->getResponse ()->sendHeaders ();
|
271 |
+
readfile ( $filepath );
|
272 |
+
return;
|
273 |
+
}
|
274 |
+
|
275 |
+
public function feeddetailsAction() {
|
276 |
+
$website = $this->prepare();
|
277 |
+
if (is_null($website)) {
|
278 |
+
return;
|
279 |
+
}
|
280 |
+
|
281 |
+
$this->getResponse()
|
282 |
+
->setBody(json_encode(array('success' => true,
|
283 |
+
'numDocs' => $this->helper()->getNumberOfDocsInUnbxd($website))));
|
284 |
+
return;
|
285 |
+
}
|
286 |
+
|
287 |
+
public function productsyncAction(){
|
288 |
+
$website = $this->prepare();
|
289 |
+
if (is_null($website)) {
|
290 |
+
return;
|
291 |
+
}
|
292 |
+
$fromdate="1970-01-01 00:00:01";
|
293 |
+
|
294 |
+
$response = Mage::getSingleton('unbxd_recommendation/feed_feedmanager')->process($fromdate,$website);
|
295 |
+
$this->getResponse()->setBody(json_encode($response));
|
296 |
+
return;
|
297 |
+
}
|
298 |
+
|
299 |
+
|
300 |
+
public function unlockfeedAction() {
|
301 |
+
$website = $this->prepare();
|
302 |
+
if (is_null($website)) {
|
303 |
+
return;
|
304 |
+
}
|
305 |
+
Mage::getResourceModel('unbxd_recommendation/config')->unLockSite($website);
|
306 |
+
$this->getResponse()->setBody(json_encode(array('success' => true)));
|
307 |
+
}
|
308 |
+
|
309 |
+
public function cronAction() {
|
310 |
+
$website = $this->prepare();
|
311 |
+
if (is_null($website)) {
|
312 |
+
return;
|
313 |
+
}
|
314 |
+
$isCronEnabled = Mage::getResourceSingleton('unbxd_recommendation/config')->getValue($website->getWebsiteId(),
|
315 |
+
Unbxd_Recommendation_Helper_Confighelper::IS_CRON_ENABLED);
|
316 |
+
if(is_null($isCronEnabled)) {
|
317 |
+
$this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => false)));
|
318 |
+
}
|
319 |
+
$this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => true)));
|
320 |
+
}
|
321 |
+
}
|
app/code/local/Unbxd/Recommendation/controllers/WidgetController.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Unbxd_Recommendation_WidgetController extends Mage_Core_Controller_Front_Action {
|
4 |
+
|
5 |
+
public function indexAction() {
|
6 |
+
$website = Mage::app()->getWebsite();
|
7 |
+
$this->getResponse()->clearHeaders()->setHeader('Content-Type', 'text/javascript');
|
8 |
+
$response = Mage::getModel("unbxd_recommendation/api_task_widget")
|
9 |
+
->setData($_GET)
|
10 |
+
->prepare($website)
|
11 |
+
->process();
|
12 |
+
if(!$response->isSuccess()) {
|
13 |
+
$this->getResponse()->setBody('unbxdRecommendationError = ' .
|
14 |
+
json_encode(array('success' => false, 'errors' => $response->getErrors())));
|
15 |
+
return;
|
16 |
+
}
|
17 |
+
$this->getResponse()->setBody($response->getBody());
|
18 |
+
return;
|
19 |
+
}
|
20 |
+
}
|
app/code/local/Unbxd/Recommendation/etc/adminhtml.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<menu>
|
4 |
+
<unbxd_recommendation translate="title" module="unbxd_recommendation">
|
5 |
+
<title>Unbxd</title>
|
6 |
+
<action>unbxd/admin/edit</action>
|
7 |
+
</unbxd_recommendation>
|
8 |
+
</menu>
|
9 |
+
</config>
|
app/code/local/Unbxd/Recommendation/etc/config.xml
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<config>
|
2 |
+
<modules>
|
3 |
+
<Unbxd_Recommendation>
|
4 |
+
<version>1.0.7</version>
|
5 |
+
</Unbxd_Recommendation>
|
6 |
+
</modules>
|
7 |
+
<admin>
|
8 |
+
<routers>
|
9 |
+
<unbxd_recommendation_router>
|
10 |
+
<use>admin</use>
|
11 |
+
<args>
|
12 |
+
<module>Unbxd_Recommendation</module>
|
13 |
+
<frontName>unbxd</frontName>
|
14 |
+
</args>
|
15 |
+
</unbxd_recommendation_router>
|
16 |
+
</routers>
|
17 |
+
</admin>
|
18 |
+
<frontend>
|
19 |
+
<layout>
|
20 |
+
<updates>
|
21 |
+
<unbxd_recommendation>
|
22 |
+
<file>unbxd/recommendation.xml</file>
|
23 |
+
</unbxd_recommendation>
|
24 |
+
</updates>
|
25 |
+
</layout>
|
26 |
+
<routers>
|
27 |
+
<unbxd_recommendation>
|
28 |
+
<use>standard</use>
|
29 |
+
<args>
|
30 |
+
<module>Unbxd_Recommendation</module>
|
31 |
+
<frontName>unbxd</frontName>
|
32 |
+
</args>
|
33 |
+
</unbxd_recommendation>
|
34 |
+
</routers>
|
35 |
+
</frontend>
|
36 |
+
<global>
|
37 |
+
<resources>
|
38 |
+
<unbxd_recommendation_setup>
|
39 |
+
<setup>
|
40 |
+
<module>Unbxd_Recommendation</module>
|
41 |
+
</setup>
|
42 |
+
</unbxd_recommendation_setup>
|
43 |
+
</resources>
|
44 |
+
<helpers>
|
45 |
+
<unbxd_recommendation>
|
46 |
+
<class>Unbxd_Recommendation_Helper</class>
|
47 |
+
</unbxd_recommendation>
|
48 |
+
</helpers>
|
49 |
+
<models>
|
50 |
+
<unbxd_recommendation>
|
51 |
+
<class>Unbxd_Recommendation_Model</class>
|
52 |
+
<resourceModel>unbxd_recommendation_resource</resourceModel>
|
53 |
+
</unbxd_recommendation>
|
54 |
+
<unbxd_recommendation_resource>
|
55 |
+
<class>Unbxd_Recommendation_Model_Resource</class>
|
56 |
+
<entities>
|
57 |
+
<config>
|
58 |
+
<table>unbxd_recommendation_conf</table>
|
59 |
+
</config>
|
60 |
+
<field>
|
61 |
+
<table>unbxd_field_conf</table>
|
62 |
+
</field>
|
63 |
+
</entities>
|
64 |
+
</unbxd_recommendation_resource>
|
65 |
+
</models>
|
66 |
+
<blocks>
|
67 |
+
<unbxd_recommendation>
|
68 |
+
<class>Unbxd_Recommendation_Block</class>
|
69 |
+
</unbxd_recommendation>
|
70 |
+
</blocks>
|
71 |
+
<events>
|
72 |
+
<checkout_cart_add_product_complete>
|
73 |
+
<observers>
|
74 |
+
<unbxd_recommendation_cart_tracker>
|
75 |
+
<type>singleton</type>
|
76 |
+
<class>unbxd_recommendation/observer</class>
|
77 |
+
<method>trackAddToCart</method>
|
78 |
+
</unbxd_recommendation_cart_tracker>
|
79 |
+
</observers>
|
80 |
+
</checkout_cart_add_product_complete>
|
81 |
+
<sales_order_payment_place_end>
|
82 |
+
<observers>
|
83 |
+
<unbxd_recommendation_order_tracker>
|
84 |
+
<type>singleton</type>
|
85 |
+
<class>unbxd_recommendation/observer</class>
|
86 |
+
<method>trackOrder</method>
|
87 |
+
</unbxd_recommendation_order_tracker>
|
88 |
+
</observers>
|
89 |
+
</sales_order_payment_place_end>
|
90 |
+
</events>
|
91 |
+
</global>
|
92 |
+
<adminhtml>
|
93 |
+
<layout>
|
94 |
+
<updates>
|
95 |
+
<unbxd_recommendation>
|
96 |
+
<file>unbxd/recommendation.xml</file>
|
97 |
+
</unbxd_recommendation>
|
98 |
+
</updates>
|
99 |
+
</layout>
|
100 |
+
</adminhtml>
|
101 |
+
<crontab>
|
102 |
+
<jobs>
|
103 |
+
<unbxd_recommendation_cron>
|
104 |
+
<schedule><cron_expr>0 */1 * * *</cron_expr></schedule>
|
105 |
+
<run><model>unbxd_recommendation/observer::syncProduct</model></run>
|
106 |
+
</unbxd_recommendation_cron>
|
107 |
+
</jobs>
|
108 |
+
</crontab>
|
109 |
+
</config>
|
app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/mysql4-install-1.0.0.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
$installer = $this;
|
5 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
6 |
+
|
7 |
+
$installer->startSetup();
|
8 |
+
|
9 |
+
$configTable = $installer->getTable('unbxd_recommendation_conf');
|
10 |
+
$fieldTable = $installer->getTable('unbxd_field_conf');
|
11 |
+
|
12 |
+
$installer->run("
|
13 |
+
DROP TABLE IF EXISTS `{$fieldTable}`;
|
14 |
+
|
15 |
+
CREATE TABLE `{$fieldTable}` (
|
16 |
+
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
17 |
+
`website_id` tinyint(5) unsigned NOT NULL,
|
18 |
+
`field_name` varchar(100) NOT NULL DEFAULT '',
|
19 |
+
`datatype` varchar(20) NOT NULL DEFAULT '',
|
20 |
+
`autosuggest` tinyint(1) NOT NULL DEFAULT '0',
|
21 |
+
`featured_field` varchar(100) DEFAULT NULL,
|
22 |
+
`multivalued` tinyint(1) NOT NULL DEFAULT '0',
|
23 |
+
`displayed` tinyint(1) NOT NULL DEFAULT '1',
|
24 |
+
PRIMARY KEY (`id`)
|
25 |
+
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1;
|
26 |
+
|
27 |
+
DROP TABLE IF EXISTS `{$configTable}`;
|
28 |
+
CREATE TABLE `{$configTable}` (
|
29 |
+
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
30 |
+
`website_id` smallint(5) unsigned NOT NULL,
|
31 |
+
`key` varchar(50) NOT NULL DEFAULT '',
|
32 |
+
`value` varchar(50) DEFAULT NULL,
|
33 |
+
PRIMARY KEY (`id`)
|
34 |
+
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
|
35 |
+
");
|
36 |
+
|
37 |
+
$websiteCollection = Mage::getModel('core/website')->getCollection()->load();
|
38 |
+
foreach($websiteCollection as $website) {
|
39 |
+
$installer->run(Mage::getResourceSingleton('unbxd_recommendation/field')->getDefaultFieldInsertStatement($website));
|
40 |
+
}
|
41 |
+
$installer->endSetup();
|
42 |
+
?>
|
app/design/adminhtml/base/default/template/datafeeder/conf.phtml
DELETED
@@ -1,439 +0,0 @@
|
|
1 |
-
<script src="//code.jquery.com/jquery-1.8.0.min.js"></script>
|
2 |
-
<script src="//malsup.github.com/jquery.form.js"></script>
|
3 |
-
<style type="text/css">
|
4 |
-
td
|
5 |
-
{
|
6 |
-
margin-left:100cm;
|
7 |
-
padding:10px;
|
8 |
-
vertical-align:left;
|
9 |
-
}
|
10 |
-
.datafeeder-form input[type="text"] {
|
11 |
-
width: 300px;
|
12 |
-
}
|
13 |
-
|
14 |
-
.fieldRowSelected {
|
15 |
-
background-color: #45b5c1;
|
16 |
-
}
|
17 |
-
|
18 |
-
.text_td {
|
19 |
-
padding-top: 6px;
|
20 |
-
width: 117px;
|
21 |
-
}
|
22 |
-
|
23 |
-
.plus {
|
24 |
-
background:url('http://unbxd.com/img/CircledPlus.png') no-repeat;
|
25 |
-
height: 24px;
|
26 |
-
width: 24px;
|
27 |
-
}
|
28 |
-
|
29 |
-
.minus {
|
30 |
-
background:url('http://unbxd.com/img/CircledMinus.png') no-repeat;
|
31 |
-
height: 24px;
|
32 |
-
width: 24px;
|
33 |
-
}
|
34 |
-
|
35 |
-
.hidden_image_textBox {
|
36 |
-
display: none;
|
37 |
-
}
|
38 |
-
|
39 |
-
.form-list td.value select {
|
40 |
-
width: 110px;
|
41 |
-
}
|
42 |
-
|
43 |
-
#field-list td {
|
44 |
-
width: 120px;
|
45 |
-
}
|
46 |
-
|
47 |
-
</style>
|
48 |
-
<script type="text/javascript">
|
49 |
-
var $jq = jQuery.noConflict();
|
50 |
-
</script>
|
51 |
-
<frameset cols="50%,50%">
|
52 |
-
<frame name="actual_frame">
|
53 |
-
<div class="datafeeder-form" onload="allset()">
|
54 |
-
<form action="<?php echo $this->getSaveApiUrl();?>" method="POST" >
|
55 |
-
|
56 |
-
<span><b>Unbxd API Key: </b><span>
|
57 |
-
<input type="text" name="apikey" style="margin-left: 10px;" value="<?php echo $this->getApiKey(); ?>">
|
58 |
-
<input type="submit" style="margin-left: 10px;" value="SAVE"/>
|
59 |
-
</form>
|
60 |
-
<form action="<?php echo $this->saveFeedConf();?>" method="POST" >
|
61 |
-
<p class="switcher">
|
62 |
-
<label for="store_switcher"><b>Choose Store View: </b><label>
|
63 |
-
|
64 |
-
<select id="site" class="site" name="site" onload="newajaxcall('<?php echo $this->getFeedConf(); ?>')" onchange="newajaxcall('<?php echo $this->getFeedConf();?>')">
|
65 |
-
<?php $allsites=Mage::app()->getWebsites();?>
|
66 |
-
<?php foreach ($allsites as $site):?>
|
67 |
-
<option value="<?php echo $site->getName()?>"><?php echo $site->getName()?></option>
|
68 |
-
<?php endforeach;?>
|
69 |
-
</select>
|
70 |
-
</p>
|
71 |
-
|
72 |
-
|
73 |
-
<table class="form-list" onload="allset()" id="form-list1" name="form-list" cellspacing="0" style="background:none repeat scroll 0 0 #FAFAFA;border=1px solid #D6D6D6;width: 100%;" width="5000px">
|
74 |
-
<div class="datafeeder-form" width="parent" style="background:none repeat scroll 0 0 #6F8992;padding:5px 10px; color: white;">
|
75 |
-
FEED CONFIGURATION
|
76 |
-
</div>
|
77 |
-
<tr>
|
78 |
-
<td class="label">
|
79 |
-
<b>Unbxd Site Key: </b>
|
80 |
-
</td>
|
81 |
-
<td class="value">
|
82 |
-
<input type="text" id="siteName" name="siteName" value="" disabled/>
|
83 |
-
</td>
|
84 |
-
</tr>
|
85 |
-
</tr>
|
86 |
-
<tr>
|
87 |
-
<td class="label">
|
88 |
-
</td>
|
89 |
-
<td class="value">
|
90 |
-
<input type="button" name="editButton" value="EDIT"/> <input style="margin-left: 10px;" type="submit" value="SAVE"/>
|
91 |
-
</td>
|
92 |
-
</tr>
|
93 |
-
</table>
|
94 |
-
|
95 |
-
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
|
96 |
-
</form>
|
97 |
-
<script type="text/javascript">
|
98 |
-
|
99 |
-
$jq('[name=editButton]').click(function(evt){
|
100 |
-
$jq('[name="feedName"]').attr('disabled', false);
|
101 |
-
$jq('[name="siteName"]').attr('disabled', false);
|
102 |
-
});
|
103 |
-
|
104 |
-
function progressbar()
|
105 |
-
{
|
106 |
-
$jq.ajax({
|
107 |
-
//async:false,
|
108 |
-
url: "<?php echo $this->getProgressUrl(); ?>",
|
109 |
-
type:"POST",
|
110 |
-
dataType:"json",
|
111 |
-
data:{"form_key":"<?php echo Mage::getSingleton('core/session')->getFormKey()?>",
|
112 |
-
"site": $jq('[name=site]').val()
|
113 |
-
},
|
114 |
-
success: function(data) {
|
115 |
-
document.getElementById("ProgressBar").innerHTML="";
|
116 |
-
if(data.status=="0"){
|
117 |
-
document.getElementById("ProgressBar").innerHTML="<b>Status: Indexed</b>";
|
118 |
-
document.getElementById("fullupload").disabled=false;
|
119 |
-
}else if(data.status=="1"){
|
120 |
-
document.getElementById("ProgressBar").innerHTML="<b>Status: Indexing</b>";
|
121 |
-
document.getElementById("fullupload").disabled=true;
|
122 |
-
}
|
123 |
-
}
|
124 |
-
});
|
125 |
-
|
126 |
-
}
|
127 |
-
|
128 |
-
function callSetInterval()
|
129 |
-
{
|
130 |
-
setInterval(progressbar,20000);
|
131 |
-
}
|
132 |
-
|
133 |
-
function newajaxcall(ajaxurl){
|
134 |
-
$jq.ajax({
|
135 |
-
|
136 |
-
url: ajaxurl,
|
137 |
-
timeout:30000,
|
138 |
-
type:"POST",
|
139 |
-
dataType: "json",
|
140 |
-
data:{"form_key":"<?php echo Mage::getSingleton('core/session')->getFormKey()?>",
|
141 |
-
"site":$jq('[name=site]').val(),
|
142 |
-
},
|
143 |
-
|
144 |
-
success: function(data) {
|
145 |
-
|
146 |
-
if(data.feed !== "empty") $jq('[name=feedName]').val(data.feed); else $jq('[name=feedName]').val("");
|
147 |
-
if(data.siteName !== "empty") $jq('[name=siteName]').val(data.siteName); else $jq('[name=siteName]').val("");
|
148 |
-
},
|
149 |
-
|
150 |
-
fail: function(XMLHttpRequest, textStatus, errorThrown) {
|
151 |
-
}
|
152 |
-
});
|
153 |
-
}
|
154 |
-
|
155 |
-
newajaxcall("<?php echo $this->getFeedConf();?>");
|
156 |
-
|
157 |
-
function makeajaxcall(ajaxurl){
|
158 |
-
|
159 |
-
$jq.ajax({
|
160 |
-
|
161 |
-
url: ajaxurl,
|
162 |
-
timeout:100000,
|
163 |
-
type:"POST",
|
164 |
-
data:{"form_key":"<?php echo Mage::getSingleton('core/session')->getFormKey()?>",
|
165 |
-
"site": $jq('[name=site]').val()
|
166 |
-
},
|
167 |
-
|
168 |
-
complete: function(xhr, statusText){
|
169 |
-
},
|
170 |
-
|
171 |
-
done: function(data) {
|
172 |
-
console.log(data);
|
173 |
-
},
|
174 |
-
|
175 |
-
fail: function(XMLHttpRequest, textStatus, errorThrown) {
|
176 |
-
}
|
177 |
-
});
|
178 |
-
}
|
179 |
-
|
180 |
-
$jq('#config_edit_form').ready(function(){
|
181 |
-
createTable('<?php echo $this->getEditUrl();?>');
|
182 |
-
});
|
183 |
-
|
184 |
-
function saveFieldConf()
|
185 |
-
{
|
186 |
-
site = $jq('[name=site]').val();
|
187 |
-
fields = {}
|
188 |
-
$jq("#field-list").find("tr").each( function() {
|
189 |
-
var field = {};
|
190 |
-
if ($jq(this).find(".label").text() != "") {
|
191 |
-
field["status"] = ($jq(this).find('[name=status]').find(":selected").text() == "Enabled") ? 1 :0;
|
192 |
-
field["autosuggest"] = ($jq(this).find('[name=autosuggest]').find(":selected").text() == "Enabled") ? 1 :0;
|
193 |
-
field["data_type"] = $jq(this).find('[name=dataType]').find(":selected").text();
|
194 |
-
field["site_name"] = $jq('[name=site]').val();
|
195 |
-
field["generate_image"] = $jq(this).find('[id=generate_image]').is(':checked')?1:0;
|
196 |
-
element = this.querySelector('#image_height');
|
197 |
-
if(element) {
|
198 |
-
field["image_height"] = parseInt(element.value);
|
199 |
-
}
|
200 |
-
element = this.querySelector('#image_width') ;
|
201 |
-
if (element) {
|
202 |
-
field["image_width"] = parseInt(element.value);
|
203 |
-
}
|
204 |
-
fields[$jq(this).find(".label").text()] = JSON.stringify(field);
|
205 |
-
|
206 |
-
childProductField = {};
|
207 |
-
if (this.className == "fieldRowSelected"){
|
208 |
-
childProductField["status"] = field["status"];
|
209 |
-
} else {
|
210 |
-
childProductField["status"] = 0;
|
211 |
-
}
|
212 |
-
childProductField["autosuggest"] = field["autosuggest"];
|
213 |
-
childProductField["data_type"] = field["data_type"];
|
214 |
-
childProductField["site_name"] = field["site_name"];
|
215 |
-
childProductField["generate_image"] = field["generate_image"];
|
216 |
-
childProductField["image_width"] = field["image_width"];
|
217 |
-
childProductField["image_height"] = field["image_height"];
|
218 |
-
fields[$jq(this).find(".label").text() + "Associated"] = JSON.stringify(childProductField);
|
219 |
-
|
220 |
-
}
|
221 |
-
});
|
222 |
-
$jq.ajax({
|
223 |
-
url: "<?php echo $this->getSaveFieldUrl();?>",
|
224 |
-
timeout:30000,
|
225 |
-
type:"POST",
|
226 |
-
dataType: "json",
|
227 |
-
data:fields
|
228 |
-
}).done( function(data) {
|
229 |
-
createTable('<?php echo $this->getEditUrl();?>');
|
230 |
-
});
|
231 |
-
|
232 |
-
}
|
233 |
-
|
234 |
-
function createTable(ajaxurl)
|
235 |
-
{
|
236 |
-
site= $jq("#site").val();
|
237 |
-
$jq.ajax({
|
238 |
-
url: ajaxurl,
|
239 |
-
type:"POST",
|
240 |
-
data:{"site":site},
|
241 |
-
}).done( function(data) {
|
242 |
-
jarray = $jq.parseJSON(data);
|
243 |
-
tableHtml="<tbody>";
|
244 |
-
$jq("#field-list").find("tr").remove();
|
245 |
-
tableHtml += addFieldConfTableHeader();
|
246 |
-
$jq.each(jarray, function(key, value) {
|
247 |
-
childExists = false;
|
248 |
-
if ((key + "Associated") in jarray && jarray[key + "Associated"]["status"] == "1") {
|
249 |
-
childExists = true
|
250 |
-
}
|
251 |
-
if( key.substr(-10) != "Associated" ) {
|
252 |
-
tableHtml += constructRow(key, value, childExists);
|
253 |
-
}
|
254 |
-
});
|
255 |
-
tableHtml+="</tbody>";
|
256 |
-
$jq('#field-list').append(tableHtml)
|
257 |
-
});
|
258 |
-
}
|
259 |
-
|
260 |
-
function addFieldConfTableHeader() {
|
261 |
-
return "<tr>" +
|
262 |
-
"<th>Field Name</th>" +
|
263 |
-
"<th>Status</th>" +
|
264 |
-
"<th>Data Type</th>" +
|
265 |
-
"<th>Autosuggest</th>" +
|
266 |
-
"<th>Add to configurable product</th>" +
|
267 |
-
"<th>Image configuration</th>" +
|
268 |
-
'<td class="scope-label"></td>' +
|
269 |
-
"</tr>";
|
270 |
-
}
|
271 |
-
|
272 |
-
function constructRow(key, value, childExists) {
|
273 |
-
tableString = "";
|
274 |
-
tableString += '<tr ' + (childExists?'class="fieldRowSelected"':"") + '>';
|
275 |
-
tableString += '<td class="label" name="fieldName"><div class="text_td">'+key+"</div></td>";
|
276 |
-
tableString += constructBooleanSelect("status", value);
|
277 |
-
tableString += constructDataType(key, value);
|
278 |
-
tableString += constructBooleanSelect("autosuggest", value);
|
279 |
-
tableString += constructAddToConfigurableFieldList(childExists);
|
280 |
-
tableString += constructImageConf(key, value);
|
281 |
-
tableString +='</tr>';
|
282 |
-
return tableString;
|
283 |
-
}
|
284 |
-
|
285 |
-
function constructImageConf(key, value) {
|
286 |
-
if(!("is_image" in value) || value["is_image"] != "true") {
|
287 |
-
return "";
|
288 |
-
}
|
289 |
-
tableString = "";
|
290 |
-
tableString += '<td><input type="button" value="EDIT" onclick="editImageConf(this)"/>'
|
291 |
-
tableString += '<div class="hidden_image_textBox">';
|
292 |
-
image_generation_enabled = (value["generate_image"] == 1)? true : false;
|
293 |
-
tableString += '<input id="generate_image" onchange="toggleTextBox(this)" type="checkbox" ' + ((image_generation_enabled)?'checked':'')+'/>';
|
294 |
-
tableString += '<input id="image_height" type="text" value="' + value["image_height"]+ '" '+ (image_generation_enabled? '':'disabled')+'"/>';
|
295 |
-
tableString += '<input id="image_width" type="text" value="' + value["image_width"]+ '" '+ (image_generation_enabled? '':'disabled')+'"/>';
|
296 |
-
tableString += '<input value = "update" type="button" onclick="hideDiv(this);"/>';
|
297 |
-
tableString += '</div>';
|
298 |
-
tableString += '</td>';
|
299 |
-
return tableString;
|
300 |
-
}
|
301 |
-
|
302 |
-
function toggleTextBox(element) {
|
303 |
-
active = element.checked ? false: true;
|
304 |
-
element.parentElement.children[1].disabled = active;
|
305 |
-
element.parentElement.children[2].disabled = active;
|
306 |
-
}
|
307 |
-
|
308 |
-
function hideDiv(element) {
|
309 |
-
element.parentElement.parentElement.children[1].className = "hidden_image_textBox";
|
310 |
-
element.parentElement.parentElement.children[0].className = "";
|
311 |
-
}
|
312 |
-
|
313 |
-
function editImageConf(element) {
|
314 |
-
element.parentElement.children[1].className = "";
|
315 |
-
element.className = "hidden_image_textBox";
|
316 |
-
}
|
317 |
-
|
318 |
-
function getRowSelected(element) {
|
319 |
-
if(element.parentElement.parentElement.className == "fieldRowSelected") {
|
320 |
-
element.parentElement.parentElement.className = "";
|
321 |
-
element.children[0].className = "plus";
|
322 |
-
return;
|
323 |
-
}
|
324 |
-
if($jq.find(".fieldRowSelected").length > 10) {
|
325 |
-
alert("Cant select more than 10 fields");
|
326 |
-
return;
|
327 |
-
}
|
328 |
-
element.children[0].className = "minus";
|
329 |
-
element.parentElement.parentElement.addClassName("fieldRowSelected");
|
330 |
-
}
|
331 |
-
|
332 |
-
function constructAddToConfigurableFieldList(childExists) {
|
333 |
-
tableString = '<td><a href="javascript:void(0)" onclick="getRowSelected(this)" title="Add this field in configurable/grouped product">';
|
334 |
-
tableString += '<div ';
|
335 |
-
if(!childExists) {
|
336 |
-
tableString += 'class="plus"';
|
337 |
-
} else {
|
338 |
-
tableString += 'class="minus"';
|
339 |
-
}
|
340 |
-
tableString += "/></a></td>";
|
341 |
-
return tableString;
|
342 |
-
}
|
343 |
-
|
344 |
-
function constructBooleanSelect(key, value) {
|
345 |
-
tableString = '<td class="value"><div class="text_td"><select name=' + key + '>'+"<option";
|
346 |
-
if(value[key]=="0"){
|
347 |
-
tableString +=' selected="selected"';
|
348 |
-
}
|
349 |
-
tableString+=' value="0">Disabled</option><option';
|
350 |
-
if(value[key]!="0"){
|
351 |
-
tableString +=' selected="selected"';
|
352 |
-
}
|
353 |
-
tableString +=' value="1">Enabled</option></select></div></td>';
|
354 |
-
return tableString;
|
355 |
-
}
|
356 |
-
|
357 |
-
function constructDataTypeOption(data_type, compare_data_type) {
|
358 |
-
tableString = "<option";
|
359 |
-
|
360 |
-
if(data_type == compare_data_type){
|
361 |
-
tableString +=' selected="selected"';
|
362 |
-
}
|
363 |
-
tableString+=' value="' + compare_data_type + '">' + compare_data_type + '</option>';
|
364 |
-
return tableString;
|
365 |
-
}
|
366 |
-
|
367 |
-
function constructDataType(key, value) {
|
368 |
-
tableString = '<td class="value"><div class="text_td"><select name="dataType">';
|
369 |
-
tableString += constructDataTypeOption(value["data_type"], "text");
|
370 |
-
tableString += constructDataTypeOption(value["data_type"], "longText");
|
371 |
-
tableString += constructDataTypeOption(value["data_type"], "link");
|
372 |
-
tableString += constructDataTypeOption(value["data_type"], "decimal");
|
373 |
-
tableString += constructDataTypeOption(value["data_type"], "number");
|
374 |
-
tableString += constructDataTypeOption(value["data_type"], "date");
|
375 |
-
//tableString += constructDataTypeOption(value["data_type"], "bool");
|
376 |
-
|
377 |
-
tableString +='</select></div></td>';
|
378 |
-
return tableString;
|
379 |
-
}
|
380 |
-
|
381 |
-
setInterval(progressbar,10000);
|
382 |
-
</script>
|
383 |
-
|
384 |
-
|
385 |
-
<table class="form-list" width="parent" id="form-list2" name="form-list" cellspacing="0" style="background:none repeat scroll 0 0 #FAFAFA;border=1px solid #D6D6D6;width: 100%;">
|
386 |
-
<div class="datafeeder-form" width="parent" style="background:none repeat scroll 0 0 #6F8992;padding:5px 10px;color: white;">
|
387 |
-
<div class="refreshDiv" style="float: right;"><span id="ProgressBar"></span><input type="button" id="refresh" onclick="progressbar()" value="REFRESH" style="margin-left: 10px;vertical-align: top;"></div>
|
388 |
-
<b>UPLOAD & INDEX (manual)</b>
|
389 |
-
</div>
|
390 |
-
|
391 |
-
<tr>
|
392 |
-
<td class="label"><b>PRODUCT FEED UPLOAD: </b></td>
|
393 |
-
<td class="value"><input type="button" id="fullupload" onclick="makeajaxcall('<?php echo $this->getFullIndexFormAction(); ?>')" value="START"/></td>
|
394 |
-
|
395 |
-
</tr>
|
396 |
-
|
397 |
-
</table>
|
398 |
-
|
399 |
-
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>"/>
|
400 |
-
</div>
|
401 |
-
</frame>
|
402 |
-
<frame name="login_frame"></frame>
|
403 |
-
</frameset>
|
404 |
-
|
405 |
-
<div class="editconfig">
|
406 |
-
<div class="content-header">
|
407 |
-
<table cellspacing="0">
|
408 |
-
<tr>
|
409 |
-
<td>
|
410 |
-
<h3 <?php if($this->getHeaderCss()): ?>
|
411 |
-
class="<?php echo $this->getHeaderCss()?>" <?php endif; ?>>
|
412 |
-
<?php echo Mage::helper('adminhtml')->__("FIELD CONFIGURATION") ?>
|
413 |
-
</h3>
|
414 |
-
</td>
|
415 |
-
<td class="form-buttons">
|
416 |
-
<input type="button" style='background:url("images/btn_bg.gif") repeat-x scroll 0 100% #FFAC47;border-color:#ED6502 #A04300 #A04300 #ED6502;border-style:solid;border-width:1px;color:#FFFFFF;font:bold 12px arial,helvetica,sans-serif;text-align:center !important;white-space:nowrap;padding: 3px;' onclick="saveFieldConf()" value="SAVE"/>
|
417 |
-
</td>
|
418 |
-
</tr>
|
419 |
-
</table>
|
420 |
-
</div>
|
421 |
-
<div class="unbxd_edit_config" style="background:none repeat scroll 0 0 #FAFAFA;border:1px solid #D6D6D6">
|
422 |
-
|
423 |
-
<form action="<?php echo $this->getSaveFieldUrl() ?>" method="post"
|
424 |
-
id="config_edit_form" onload="createTable('<?php echo $this->getEditUrl();?>')">
|
425 |
-
<input name="site_name" id= "site_name" type="hidden" />
|
426 |
-
<!--<center>-->
|
427 |
-
<p class="switcher">
|
428 |
-
<label for="store_switcher"><b> Field Configuration </b><label>
|
429 |
-
</p>
|
430 |
-
|
431 |
-
<table class="form-list" id="field-list" name="form-list" cellspacing="0" style="color: #2F2F2F;
|
432 |
-
font: 12px/1.5em Arial,Helvetica,sans-serif; margin-left: 1%;">
|
433 |
-
</table>
|
434 |
-
|
435 |
-
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
|
436 |
-
|
437 |
-
</form>
|
438 |
-
</div>
|
439 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/design/adminhtml/default/default/layout/unbxd/recommendation.xml
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<unbxd_recommendation_router_admin_edit>
|
4 |
+
<reference name="head">
|
5 |
+
<action method="addJs"><name>unbxd/app.js</name></action>
|
6 |
+
<action method="addCss"><name>unbxd/css/app.css</name></action>
|
7 |
+
</reference>
|
8 |
+
<reference name="menu">
|
9 |
+
<action method="setActive"><menupath>unbxd_recommendation</menupath></action>
|
10 |
+
</reference>
|
11 |
+
<reference name="content">
|
12 |
+
<block type="unbxd_recommendation/admin" name="unbxd.conf" template="unbxd/recommendation.phtml" />
|
13 |
+
</reference>
|
14 |
+
</unbxd_recommendation_router_admin_edit>
|
15 |
+
</layout>
|
app/design/adminhtml/default/default/template/unbxd/recommendation.phtml
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $skinUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN) . "/adminhtml/default/default/"; ?>
|
2 |
+
<input type="hidden" id="skinUrl" value="<?php echo $skinUrl; ?>" >
|
3 |
+
|
4 |
+
<script>
|
5 |
+
try{
|
6 |
+
window._unbxdSkinurl = "<?php echo $skinUrl; ?>"
|
7 |
+
window._unbxdBaseurl = "<?php echo $this->getBaseUrl(); ?>"
|
8 |
+
}catch(e){
|
9 |
+
console.warn(e);
|
10 |
+
}
|
11 |
+
|
12 |
+
</script>
|
13 |
+
|
14 |
+
<link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/bootstrap.css">
|
15 |
+
<link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/bootstrap-them.css">
|
16 |
+
<link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/chosen.css">
|
17 |
+
<link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/app.css">
|
18 |
+
<link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/unbxd-magento.css">
|
19 |
+
|
20 |
+
|
21 |
+
<div id="container">
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<script id='template' type='text/ractive'>
|
25 |
+
<div class="container">
|
26 |
+
|
27 |
+
<div class="magent0-left-nav">
|
28 |
+
<div class="middle-nav-magento-dropdown height-100 unbxd-top-strip">
|
29 |
+
<div class="middle-nav-text mar-btm-10 pad-btm-0" style="padding-top: 10px;">
|
30 |
+
Choose Website
|
31 |
+
</div>
|
32 |
+
|
33 |
+
<div class="middle-nav-dropdown">
|
34 |
+
<div class="btn-group width-100" >
|
35 |
+
<select decorator='chosen:site' on-change="pdn" value={{site}} name="unbxd-site" id="selectSites">
|
36 |
+
{{#sites}}
|
37 |
+
<option value="{{name}}">{{name}}</option>
|
38 |
+
{{/sites}}
|
39 |
+
</select>
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
|
44 |
+
<div class="middle-nav-magento">
|
45 |
+
<ul class="magento-nav">
|
46 |
+
<li on-click='showCredentials' class="clickable-btn
|
47 |
+
{{#if _unbxdObject.activeStep.one}} magento-active{{/if}}">
|
48 |
+
<a>Credentials</a>
|
49 |
+
</li>
|
50 |
+
|
51 |
+
<li on-click='showCatalog' class="clickable-btn
|
52 |
+
{{#if _unbxdObject.activeStep.two}} magento-active{{/if}}">
|
53 |
+
<a>Catalog</a>
|
54 |
+
</li>
|
55 |
+
|
56 |
+
<li on-click='showAnalytics' class="clickable-btn
|
57 |
+
{{#if _unbxdObject.activeStep.three}} magento-active{{/if}}">
|
58 |
+
<a>Analytics</a>
|
59 |
+
</li>
|
60 |
+
|
61 |
+
<li on-click='showWidgets' class="clickable-btn
|
62 |
+
{{#if _unbxdObject.activeStep.four}} magento-active{{/if}}" >
|
63 |
+
<a>Widgets</a>
|
64 |
+
</li>
|
65 |
+
</ul>
|
66 |
+
</div>
|
67 |
+
|
68 |
+
</div>
|
69 |
+
|
70 |
+
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
<div class="inner-container-magento row mar-0 top-185 pad-top-32 unbxd-top-strip">
|
75 |
+
<div class="col-md-60 magento-row-tabs border-left-color pad-0 background-dark-grey unbxd-border ">
|
76 |
+
<ul class="magento-conf-tabs">
|
77 |
+
<li on-click='showCredentials'>
|
78 |
+
<a class="magento-conf-tabs-enabled
|
79 |
+
{{#if _unbxdObject.activeStep.one}}magento-head-active{{/if}} width-25 clickable-btn">
|
80 |
+
<div class="magento-number" style="">
|
81 |
+
1
|
82 |
+
</div>
|
83 |
+
<div class="magento-number-text">
|
84 |
+
Authenticate App
|
85 |
+
</div> </a>
|
86 |
+
</li>
|
87 |
+
<li on-click='showCatalog'>
|
88 |
+
<a class="magento-conf-tabs-enabled width-25 clickable-btn
|
89 |
+
{{#if _unbxdObject.activeStep.two}}magento-head-active{{/if}}">
|
90 |
+
<div class="magento-number">
|
91 |
+
2
|
92 |
+
</div>
|
93 |
+
<div class="magento-number-text">
|
94 |
+
Catalog Configuration
|
95 |
+
</div> </a>
|
96 |
+
</li>
|
97 |
+
<li on-click='showAnalytics'>
|
98 |
+
<a class="magento-conf-tabs-enabled width-25 clickable-btn
|
99 |
+
{{#if _unbxdObject.activeStep.three}}magento-head-active{{/if}}">
|
100 |
+
<div class="magento-number">
|
101 |
+
3
|
102 |
+
</div>
|
103 |
+
<div class="magento-number-text">
|
104 |
+
Analytics integration
|
105 |
+
</div> </a>
|
106 |
+
</li>
|
107 |
+
<li on-click='showWidgets'>
|
108 |
+
<a class="magento-conf-tabs-enabled width-25 clickable-btn
|
109 |
+
{{#if _unbxdObject.activeStep.four}}magento-head-active{{/if}}" style="background-image:none;">
|
110 |
+
<div class="magento-number">
|
111 |
+
4
|
112 |
+
</div>
|
113 |
+
<div class="magento-number-text width-188">
|
114 |
+
Install Recommendation Widget
|
115 |
+
</div> </a>
|
116 |
+
</li>
|
117 |
+
</ul>
|
118 |
+
</div>
|
119 |
+
</div>
|
120 |
+
|
121 |
+
<div id="innerContainr" class="inner-container-magento pad-btm-100 pad-top-20">
|
122 |
+
</div>
|
123 |
+
</div>
|
124 |
+
</script>
|
125 |
+
|
126 |
+
<script id='tab1Template' type='text/ractive'>
|
127 |
+
</script>
|
128 |
+
|
129 |
+
<script id='tab2Template' type='text/ractive'>
|
130 |
+
</script>
|
131 |
+
|
132 |
+
<script id='tab3Template' type='text/ractive'>
|
133 |
+
</script>
|
134 |
+
|
135 |
+
<script id='tab4Template' type='text/ractive'>
|
136 |
+
</script>
|
137 |
+
|
138 |
+
<script id='rowTemplate' type='text/ractive'>
|
139 |
+
</script>
|
140 |
+
|
141 |
+
|
142 |
+
<script src= "<?php echo Mage::getBaseUrl('js') ?>unbxd/jquery.js"></script>
|
143 |
+
<script src="<?php echo $skinUrl; ?>unbxd/js/lib/chosen.js"></script>
|
144 |
+
<script type="<?php echo $skinUrl; ?>text/javascript">
|
145 |
+
jQuery.noConflict();
|
146 |
+
</script>
|
147 |
+
<script src="<?php echo $skinUrl; ?>unbxd/js/lib/ractive.js"></script>
|
148 |
+
<script src="<?php echo $skinUrl; ?>unbxd/js/lib/ractive-chosen.js"></script>
|
149 |
+
<script src="<?php echo $skinUrl; ?>unbxd/js/lib/bootstrap-tooltip.js"></script>
|
150 |
+
|
151 |
+
<script src="<?php echo $skinUrl; ?>unbxd/js/app.js"></script>
|
152 |
+
|
153 |
+
|
154 |
+
|
app/design/frontend/base/default/layout/unbxd/recommendation.xml
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<!-- ON ALL PAGES -->
|
4 |
+
<default>
|
5 |
+
<reference name="before_body_end">
|
6 |
+
<block name="unbxd.`.tracking" template="unbxd/tracker.phtml" after="-" type="core/template"/>
|
7 |
+
</reference>
|
8 |
+
</default>
|
9 |
+
<!-- CATEGORY PAGE -->
|
10 |
+
<catalog_category_default>
|
11 |
+
<reference name="before_body_end">
|
12 |
+
<block name="unbxd.analytics.categorytracking" template="unbxd/tracking/category.phtml" type="core/template"/>
|
13 |
+
</reference>
|
14 |
+
</catalog_category_default>
|
15 |
+
<!-- PRODUCT PAGE -->
|
16 |
+
<catalog_product_view>
|
17 |
+
<reference name="before_body_end">
|
18 |
+
<block name="unbxd.analytics.producttracking" template="unbxd/tracking/product.phtml" after="-" type="core/template"/>
|
19 |
+
</reference>
|
20 |
+
</catalog_product_view>
|
21 |
+
<!-- ORDER PAGE -->
|
22 |
+
<checkout_onepage_success>
|
23 |
+
<reference name="before_body_end">
|
24 |
+
<block name="unbxd.analytics.ordertracking" template="unbxd/tracking/order.phtml" type="core/template"/>
|
25 |
+
</reference>
|
26 |
+
</checkout_onepage_success>
|
27 |
+
<!-- ADDTOCART PAGE -->
|
28 |
+
<checkout_cart_index>
|
29 |
+
<reference name="before_body_end">
|
30 |
+
<block name="unbxd.analytics.ordertracking" template="unbxd/tracking/cart.phtml" type="core/template"/>
|
31 |
+
</reference>
|
32 |
+
</checkout_cart_index>
|
33 |
+
</layout>
|
app/design/frontend/base/default/template/unbxd/tracker.phtml
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<input type="hidden" id="jQueryBaseUrl" value="<?php echo Mage::getBaseUrl('js') ?>unbxd/jquery.js"/>
|
2 |
+
<script type="text/javascript">
|
3 |
+
/* * * CONFIGURATION * * */
|
4 |
+
var UnbxdSiteName = "<?php echo Mage::getResourceModel('unbxd_recommendation/config')
|
5 |
+
->getValue(Mage::app()->getWebsite()->getId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY) ?>";
|
6 |
+
var UnbxdApiKey = "<?php echo Mage::getResourceModel('unbxd_recommendation/config')
|
7 |
+
->getValue(Mage::app()->getWebsite()->getId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY) ?>";
|
8 |
+
|
9 |
+
if(typeof UnbxdWidgetsConf == 'undefined' || UnbxdWidgetsConf == null) {
|
10 |
+
var UnbxdWidgetsConf = {
|
11 |
+
currency: "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
|
12 |
+
};
|
13 |
+
}
|
14 |
+
/* * * DON'T EDIT BELOW THIS LINE * * */
|
15 |
+
(function() {
|
16 |
+
var ubx = document.createElement('script');
|
17 |
+
ubx.type = 'text/javascript'; ubx.async = true;
|
18 |
+
ubx.src = '//unbxd.s3.amazonaws.com/unbxdAnalytics.js';
|
19 |
+
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
|
20 |
+
})();
|
21 |
+
|
22 |
+
(function() {
|
23 |
+
var ubx = document.createElement('script');
|
24 |
+
ubx.type = 'text/javascript'; ubx.async = true;
|
25 |
+
ubx.src = '<?php echo Mage::getBaseUrl('js') ?>unbxd/embed.js';
|
26 |
+
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
|
27 |
+
})();
|
28 |
+
|
29 |
+
function getBaseUrl() {
|
30 |
+
return "<?php echo Mage::getBaseUrl(); ?>";
|
31 |
+
}
|
32 |
+
</script>
|
app/design/frontend/base/default/template/unbxd/tracking/cart.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<!-- UNBXD CART TRACKING -->
|
app/design/frontend/base/default/template/unbxd/tracking/category.phtml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!-- UNBXD CATEGORY PAGE -->
|
2 |
+
<script type="text/javascript">
|
3 |
+
<?php $category = $this->getData('current_category');
|
4 |
+
if (isset($category)) { ?>
|
5 |
+
category = "<?php echo $category->getName(); ?>";
|
6 |
+
<?php } ?>
|
7 |
+
var UnbxdWidgetsConf = {
|
8 |
+
currency : "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
|
9 |
+
<?php if (isset($category)) { ?>
|
10 |
+
,pid:"<?php echo $category->getName(); ?>"
|
11 |
+
<?php } ?>
|
12 |
+
|
13 |
+
};
|
14 |
+
</script>
|
app/design/frontend/base/default/template/unbxd/tracking/order.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<!-- UNBXD ORDER TRACKING -->
|
app/design/frontend/base/default/template/unbxd/tracking/product.phtml
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/javascript">
|
2 |
+
<?php $product = Mage::registry('current_product'); ?>
|
3 |
+
var UnbxdWidgetsConf = {
|
4 |
+
currency : "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
|
5 |
+
<?php if (isset($product)) { ?>
|
6 |
+
,pid:"<?php echo Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product); ?>"
|
7 |
+
<?php } ?>
|
8 |
+
|
9 |
+
};
|
10 |
+
<?php if (isset($product)) { ?>
|
11 |
+
pid = "<?php echo Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product); ?>";
|
12 |
+
<?php } ?>
|
13 |
+
function triggerUnbxd() {
|
14 |
+
Unbxd.track("click", {"pid":pid, rank: "", box_type: ""});
|
15 |
+
}
|
16 |
+
if (window.addEventListener) {
|
17 |
+
window.addEventListener('load', triggerUnbxd, false);
|
18 |
+
} else {
|
19 |
+
window.attachEvent('onload', triggerUnbxd);
|
20 |
+
}
|
21 |
+
</script>
|
app/etc/modules/Unbxd_Datafeeder.xml
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<config>
|
2 |
-
<modules>
|
3 |
-
<Unbxd_Datafeeder>
|
4 |
-
<active>true</active>
|
5 |
-
<codePool>local</codePool>
|
6 |
-
</Unbxd_Datafeeder>
|
7 |
-
</modules>
|
8 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/etc/modules/Unbxd_Recommendation.xml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<config>
|
2 |
+
<modules>
|
3 |
+
<Unbxd_Recommendation>
|
4 |
+
<active>true</active>
|
5 |
+
<codePool>local</codePool>
|
6 |
+
</Unbxd_Recommendation>
|
7 |
+
</modules>
|
8 |
+
</config>
|
js/unbxd/app.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
UNBXD SCRIPT ADDED
|
3 |
+
|
4 |
+
**/
|
js/unbxd/embed.js
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var loadScript = function(library, url, callback){
|
2 |
+
if( typeof window[library] !== "undefined"){
|
3 |
+
callback(window[library]);
|
4 |
+
return false;
|
5 |
+
}
|
6 |
+
|
7 |
+
var script = document.createElement("script")
|
8 |
+
script.type = "text/javascript";
|
9 |
+
|
10 |
+
if (script.readyState){ //IE
|
11 |
+
script.onreadystatechange = function(){
|
12 |
+
if (script.readyState == "loaded" ||
|
13 |
+
script.readyState == "complete"){
|
14 |
+
script.onreadystatechange = null;
|
15 |
+
callback(window[library]);
|
16 |
+
}
|
17 |
+
};
|
18 |
+
} else { //Others
|
19 |
+
script.onload = function(){
|
20 |
+
callback(window[library]);
|
21 |
+
};
|
22 |
+
}
|
23 |
+
|
24 |
+
script.src = url;
|
25 |
+
document.getElementsByTagName("head")[0].appendChild(script);
|
26 |
+
};
|
27 |
+
|
28 |
+
if (typeof Unbxd === "undefined")
|
29 |
+
window.Unbxd = {};
|
30 |
+
var widgetRendrer = function ($) {
|
31 |
+
jQuery.noConflict();
|
32 |
+
var key = function () {
|
33 |
+
if (typeof UnbxdKey != "undefined" && UnbxdKey != "") {
|
34 |
+
return UnbxdKey
|
35 |
+
}
|
36 |
+
if (typeof UnbxdSiteName != "undefined" && UnbxdSiteName != "") {
|
37 |
+
return UnbxdSiteName
|
38 |
+
}
|
39 |
+
return false
|
40 |
+
};
|
41 |
+
|
42 |
+
function decode(s) {
|
43 |
+
return decodeURIComponent(s.replace(/\+/g, " "))
|
44 |
+
}
|
45 |
+
|
46 |
+
function decodeAndParse(s) {
|
47 |
+
if (s.indexOf('"') === 0) {
|
48 |
+
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\")
|
49 |
+
}
|
50 |
+
s = decode(s);
|
51 |
+
return s
|
52 |
+
}
|
53 |
+
|
54 |
+
var readCookie = function (key) {
|
55 |
+
var cookies = document.cookie.split("; ");
|
56 |
+
var result = key ? undefined : {};
|
57 |
+
for (var i = 0, l = cookies.length; i < l; i++) {
|
58 |
+
var parts = cookies[i].split("=");
|
59 |
+
var name = decode(parts.shift());
|
60 |
+
var cookie = parts.join("=");
|
61 |
+
if (key && key === name) {
|
62 |
+
try {
|
63 |
+
result = decodeAndParse(cookie);
|
64 |
+
break
|
65 |
+
} catch (e) {
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
return result
|
70 |
+
};
|
71 |
+
var widgetsLoaded = false;
|
72 |
+
var render = function () {
|
73 |
+
if (key() == false)
|
74 |
+
return;
|
75 |
+
var uid = readCookie("unbxd.userId");
|
76 |
+
var unbxd_recommender_url = "//apac-recommendations.unbxdapi.com/";
|
77 |
+
if (window.UnbxdMode && window.UnbxdMode == "local") {
|
78 |
+
var unbxd_recommender_url = "/"
|
79 |
+
}
|
80 |
+
var appendCurrency = function (path) {
|
81 |
+
if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.currency) {
|
82 |
+
path = path + "¤cy=" + UnbxdWidgetsConf.currency
|
83 |
+
}
|
84 |
+
return path
|
85 |
+
};
|
86 |
+
var appendUid = function (path) {
|
87 |
+
if (uid && uid != "") {
|
88 |
+
path = path + "&uid=" + uid
|
89 |
+
}
|
90 |
+
return path
|
91 |
+
};
|
92 |
+
var getWidth = function () {
|
93 |
+
if (typeof window.innerWidth == "number") {
|
94 |
+
return window.innerWidth
|
95 |
+
} else if (document.documentElement && document.documentElement.clientWidth) {
|
96 |
+
return document.documentElement.clientWidth
|
97 |
+
}
|
98 |
+
return screen.width
|
99 |
+
};
|
100 |
+
var load = function (id, path) {
|
101 |
+
path = appendCurrency(path);
|
102 |
+
path = appendUid(path);
|
103 |
+
path = path + "&screenWidth=" + getWidth();
|
104 |
+
urlpath = getBaseUrl() + 'unbxd/widget' + path;
|
105 |
+
$.ajax({
|
106 |
+
async:true,
|
107 |
+
url: urlpath,
|
108 |
+
type: "GET",
|
109 |
+
dataType: "html",
|
110 |
+
success: function(data) {
|
111 |
+
$(id).html(data);
|
112 |
+
},
|
113 |
+
error: function (xhr, status) {
|
114 |
+
}
|
115 |
+
});
|
116 |
+
};
|
117 |
+
var tryToRender = function (id, url) {
|
118 |
+
if (typeof jQuery != "undefined" && jQuery(id).length > 0) {
|
119 |
+
load(id, url);
|
120 |
+
widgetsLoaded = true
|
121 |
+
} else {
|
122 |
+
setTimeout(function () {
|
123 |
+
tryToRender(id, url)
|
124 |
+
}, 100)
|
125 |
+
}
|
126 |
+
};
|
127 |
+
if (uid && uid != "") {
|
128 |
+
tryToRender("#unbxd_recently_viewed", "?widgetType=recently-viewed&uid=" + uid + "&cont=unbxd_recently_viewed");
|
129 |
+
tryToRender("#unbxd_recommended_for_you", "?widgetType=recommend&uid=" + uid + "&cont=unbxd_recommended_for_you");
|
130 |
+
tryToRender("#unbxd_cart_recommendations", "?widgetType=cart-recommend&uid" + uid + "&cont=unbxd_cart_recommendations")
|
131 |
+
} else {
|
132 |
+
tryToRender("#unbxd_recommended_for_you", "?widgetType=recommend&cont=unbxd_recommended_for_you")
|
133 |
+
}
|
134 |
+
if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.pid) {
|
135 |
+
var pid = UnbxdWidgetsConf.pid;
|
136 |
+
tryToRender("#unbxd_also_viewed", "?widgetType=also-viewed&pid=" + pid + "&cont=unbxd_also_viewed");
|
137 |
+
tryToRender("#unbxd_also_bought", "?widgetType=also-bought&pid=" + pid + "&cont=unbxd_also_bought");
|
138 |
+
tryToRender("#unbxd_more_like_these", "?widgetType=more-like-these&pid=" + pid + "&cont=unbxd_more_like_these");
|
139 |
+
tryToRender("#unbxd_pdp_top_sellers", "?widgetType=pdp-top-sellers&pid=" + pid + "&cont=unbxd_pdp_top_sellers")
|
140 |
+
}
|
141 |
+
tryToRender("#unbxd_top_sellers", "?widgetType=top-sellers&cont=unbxd_top_sellers");
|
142 |
+
if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.category) {
|
143 |
+
var category = UnbxdWidgetsConf.category;
|
144 |
+
tryToRender("#unbxd_category_top_sellers", "?widgetType=category-top-sellers&category=" + category + "&cont=unbxd_category_top_sellers")
|
145 |
+
}
|
146 |
+
if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.brand) {
|
147 |
+
var brand = UnbxdWidgetsConf.brand;
|
148 |
+
tryToRender("#unbxd_brand_top_sellers", "?widgetType=brand-top-sellers&brand=" + brand + "&cont=unbxd_brand_top_sellers")
|
149 |
+
}
|
150 |
+
};
|
151 |
+
render();
|
152 |
+
Unbxd.refreshWidgets = function () {
|
153 |
+
if (!widgetsLoaded)
|
154 |
+
return;
|
155 |
+
render()
|
156 |
+
};
|
157 |
+
setInterval(function () {
|
158 |
+
if (Unbxd.gatherImpressions != undefined && Unbxd.bootState == 4)
|
159 |
+
Unbxd.gatherImpressions()
|
160 |
+
}, 1e3)
|
161 |
+
};
|
162 |
+
|
163 |
+
function unbxdOnLoad() {
|
164 |
+
jQueryBaseUrlElement = document.getElementById('jQueryBaseUrl');
|
165 |
+
if(jQueryBaseUrlElement != null) {
|
166 |
+
jQueryBaseUrl = jQueryBaseUrlElement.value;
|
167 |
+
} else{
|
168 |
+
jQueryBaseUrl = "//code.jquery.com/jquery-1.8.0.min.js";
|
169 |
+
}
|
170 |
+
loadScript('jQuery', jQueryBaseUrl, widgetRendrer)
|
171 |
+
}
|
172 |
+
if (window.addEventListener) {
|
173 |
+
window.addEventListener('load', unbxdOnLoad, false);
|
174 |
+
} else {
|
175 |
+
window.attachEvent('onload', unbxdOnLoad);
|
176 |
+
}
|
js/unbxd/jquery.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
2 |
+
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
|
3 |
+
}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
|
4 |
+
},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
|
js/unbxd/unbxdAnalytics.js
ADDED
@@ -0,0 +1,843 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
if(typeof(Unbxd) === 'undefined')
|
2 |
+
window.Unbxd = {};
|
3 |
+
|
4 |
+
Unbxd.version = "2.8.22.1";
|
5 |
+
|
6 |
+
// set UnbxdMode to manage tracker_url
|
7 |
+
Unbxd.local = typeof UnbxdMode !== 'undefined' && UnbxdMode == 'local'
|
8 |
+
|
9 |
+
// Setting tracker URL
|
10 |
+
Unbxd.tracker_url = Unbxd.local === true ? '/v2/1p.jpg' : '//tracker.unbxdapi.com/v2/1p.jpg';
|
11 |
+
|
12 |
+
// Initialize an empty config object
|
13 |
+
Unbxd.conf = Unbxd.conf || {};
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Cookies
|
17 |
+
*/
|
18 |
+
Unbxd.cookies = {
|
19 |
+
uid : "userId",
|
20 |
+
visitor : "visit",
|
21 |
+
pending : "pen", // Pending
|
22 |
+
debug : "debug", // enables Debugging
|
23 |
+
disabled : "disabled" // A/B
|
24 |
+
};
|
25 |
+
|
26 |
+
Unbxd.extend = function(){
|
27 |
+
for(var i=1; i<arguments.length; i++)
|
28 |
+
for(var key in arguments[i])
|
29 |
+
if(arguments[i].hasOwnProperty(key))
|
30 |
+
arguments[0][key] = arguments[i][key];
|
31 |
+
return arguments[0];
|
32 |
+
}
|
33 |
+
|
34 |
+
; // Do not remove
|
35 |
+
(function (u) {
|
36 |
+
var pluses = /\+/g;
|
37 |
+
|
38 |
+
function decode(s) {
|
39 |
+
if (config.raw) {
|
40 |
+
return s;
|
41 |
+
}
|
42 |
+
return decodeURIComponent(s.replace(pluses, ' '));
|
43 |
+
}
|
44 |
+
|
45 |
+
function decodeAndParse(s) {
|
46 |
+
if (s.indexOf('"') === 0) {
|
47 |
+
// This is a quoted cookie as according to RFC2068, unescape...
|
48 |
+
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
49 |
+
}
|
50 |
+
|
51 |
+
s = decode(s);
|
52 |
+
|
53 |
+
try {
|
54 |
+
return config.json ? JSON.parse(s) : s;
|
55 |
+
} catch(e) {}
|
56 |
+
}
|
57 |
+
|
58 |
+
var config = u.cookie = function (key, value, options) {
|
59 |
+
|
60 |
+
// Write
|
61 |
+
if (value !== undefined) {
|
62 |
+
options = Unbxd.extend({}, config.defaults, options);
|
63 |
+
|
64 |
+
if (typeof options.expires === 'number') {
|
65 |
+
var days = options.expires, t = options.expires = new Date();
|
66 |
+
t.setDate(t.getDate() + days);
|
67 |
+
}
|
68 |
+
|
69 |
+
value = config.json ? JSON.stringify(value) : String(value);
|
70 |
+
|
71 |
+
return (document.cookie = [
|
72 |
+
config.raw ? key : encodeURIComponent(key),
|
73 |
+
'=',
|
74 |
+
config.raw ? value : encodeURIComponent(value),
|
75 |
+
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
76 |
+
options.path ? '; path=' + options.path : '',
|
77 |
+
options.domain ? '; domain=' + options.domain : '',
|
78 |
+
options.secure ? '; secure' : ''
|
79 |
+
].join(''));
|
80 |
+
}
|
81 |
+
|
82 |
+
// Read
|
83 |
+
var cookies = document.cookie.split('; ');
|
84 |
+
var result = key ? undefined : {};
|
85 |
+
for (var i = 0, l = cookies.length; i < l; i++) {
|
86 |
+
var parts = cookies[i].split('=');
|
87 |
+
var name = decode(parts.shift());
|
88 |
+
var cookie = parts.join('=');
|
89 |
+
|
90 |
+
if (key && key === name) {
|
91 |
+
try{
|
92 |
+
result = decodeAndParse(cookie);
|
93 |
+
break;
|
94 |
+
}catch(e){}
|
95 |
+
}
|
96 |
+
|
97 |
+
if (!key) {
|
98 |
+
try{
|
99 |
+
result[name] = decodeAndParse(cookie);
|
100 |
+
}catch(e){}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
return result;
|
105 |
+
};
|
106 |
+
|
107 |
+
config.defaults = {};
|
108 |
+
|
109 |
+
u.deleteCookie = function (key, options) {
|
110 |
+
if (u.cookie(key) !== undefined) {
|
111 |
+
// Must not alter options, thus extending a fresh object...
|
112 |
+
u.cookie(key, '', Unbxd.extend({}, options, { expires: -1 }));
|
113 |
+
return true;
|
114 |
+
}
|
115 |
+
return false;
|
116 |
+
};
|
117 |
+
|
118 |
+
})(Unbxd);
|
119 |
+
|
120 |
+
Unbxd.key = function(){
|
121 |
+
if(typeof(UnbxdKey) != 'undefined' && UnbxdKey != ""){
|
122 |
+
return UnbxdKey;
|
123 |
+
}
|
124 |
+
|
125 |
+
if(typeof(UnbxdSiteName) != 'undefined' && UnbxdSiteName != ""){
|
126 |
+
return UnbxdSiteName;
|
127 |
+
}
|
128 |
+
|
129 |
+
return false;
|
130 |
+
}
|
131 |
+
|
132 |
+
Unbxd.setCookie = function(name, value, expires){
|
133 |
+
try{
|
134 |
+
var params = {path : '/'};
|
135 |
+
if(expires){
|
136 |
+
params.expires = expires;
|
137 |
+
}
|
138 |
+
|
139 |
+
// Explicitly set domain for cookies
|
140 |
+
var domain = Unbxd.getRootDomain(document.URL);
|
141 |
+
if(domain != undefined){
|
142 |
+
params.domain = domain;
|
143 |
+
}
|
144 |
+
|
145 |
+
return this.cookie('unbxd.' + name, value, params);
|
146 |
+
}catch(e){
|
147 |
+
Unbxd.log(e);
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
Unbxd.readCookie = function(name){
|
152 |
+
try{
|
153 |
+
return this.cookie('unbxd.' + name, undefined, { path: '/'});
|
154 |
+
}catch(e){
|
155 |
+
// Unbxd.log(e);
|
156 |
+
}
|
157 |
+
|
158 |
+
return undefined;
|
159 |
+
}
|
160 |
+
|
161 |
+
Unbxd.removeCookie = function(name){
|
162 |
+
var domain = Unbxd.getRootDomain(document.URL);
|
163 |
+
this.deleteCookie('unbxd.' + name, {path : '/', domain : domain});
|
164 |
+
this.deleteCookie('unbxd.' + name, {path : '/', domain : 'www' + domain});
|
165 |
+
}
|
166 |
+
|
167 |
+
Unbxd.getCookiesStartsWith = function(prefix){
|
168 |
+
try{
|
169 |
+
var cookies = this.cookie();
|
170 |
+
var keys = _.keys(cookies);
|
171 |
+
|
172 |
+
keys = _.filter(keys, function(key){
|
173 |
+
return key.indexOf('unbxd.' + prefix) == 0;
|
174 |
+
});
|
175 |
+
|
176 |
+
var filtered = {};
|
177 |
+
_.each(keys, function(key){
|
178 |
+
filtered[key] = cookies[key];
|
179 |
+
});
|
180 |
+
|
181 |
+
return filtered;
|
182 |
+
}catch(e){
|
183 |
+
Unbxd.log(e);
|
184 |
+
}
|
185 |
+
|
186 |
+
return {};
|
187 |
+
}
|
188 |
+
|
189 |
+
Unbxd.setCookieIfNotSet = function(name, value, expires){
|
190 |
+
var v = Unbxd.readCookie(name);
|
191 |
+
if(_.isUndefined(v) || v == ''){
|
192 |
+
Unbxd.log("Cookie : " + name + " not found. Will set to : " + value);
|
193 |
+
Unbxd.setCookie(name, value, expires);
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
|
197 |
+
return false;
|
198 |
+
}
|
199 |
+
|
200 |
+
Unbxd.log = function(str){
|
201 |
+
if(Unbxd.readCookie(Unbxd.cookies.debug) === '1'){
|
202 |
+
console.log("Unbxd : " + str);
|
203 |
+
|
204 |
+
if(window.jQuery)
|
205 |
+
jQuery('#ubx-console').append("<div style='padding:2px;'>" + str + "</div>");
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
Unbxd.getPathName = function(url){
|
210 |
+
if(url == undefined) return null;
|
211 |
+
|
212 |
+
var a = document.createElement('a'); // Create a dummy <a> element
|
213 |
+
a.href = url; // Assign link, let the browser parse it
|
214 |
+
return a.pathname;
|
215 |
+
}
|
216 |
+
|
217 |
+
Unbxd.getHostName = function(url){
|
218 |
+
if(url == undefined) return null;
|
219 |
+
|
220 |
+
var a = document.createElement('a'); // Create a dummy <a> element
|
221 |
+
a.href = url; // Assign link, let the browser parse it
|
222 |
+
return a.hostname;
|
223 |
+
}
|
224 |
+
|
225 |
+
Unbxd.getRootDomain = function(url){
|
226 |
+
var hostname = Unbxd.getHostName(url);
|
227 |
+
try{
|
228 |
+
var checkIP = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
|
229 |
+
if(checkIP.test(hostname)){
|
230 |
+
return hostname;
|
231 |
+
}
|
232 |
+
|
233 |
+
var parts = hostname.split('.').reverse();
|
234 |
+
if(parts.length > 1){
|
235 |
+
var domain = '.' + parts[1] + '.' + parts[0];
|
236 |
+
|
237 |
+
if(parts.length > 2){ // Handling SLDs
|
238 |
+
var slds = [".co.uk", ".co.in", ".com.au", ".com.my", ".co.nz"]; // :( This will need to be updated from time to time.
|
239 |
+
if(slds.indexOf(domain) != -1){
|
240 |
+
domain = '.' + parts[2] + domain;
|
241 |
+
}
|
242 |
+
}
|
243 |
+
|
244 |
+
return domain;
|
245 |
+
}
|
246 |
+
}catch(e){}
|
247 |
+
}
|
248 |
+
|
249 |
+
Unbxd.getParameterByName = function(name) {
|
250 |
+
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
251 |
+
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
252 |
+
results = regex.exec(location.search);
|
253 |
+
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
254 |
+
}
|
255 |
+
|
256 |
+
Unbxd.getPendingBeacons = function(){
|
257 |
+
return Unbxd.getCookiesStartsWith(Unbxd.cookies.pending);
|
258 |
+
}
|
259 |
+
|
260 |
+
Unbxd.fire = function(action, beacon, success){
|
261 |
+
var key = Unbxd.key();
|
262 |
+
if(key == false) return;
|
263 |
+
|
264 |
+
var uid = Unbxd.readCookie(Unbxd.cookies.uid);
|
265 |
+
|
266 |
+
try{
|
267 |
+
var url = Unbxd.tracker_url
|
268 |
+
+ '?data=' + encodeURIComponent(beacon)
|
269 |
+
+ '&UnbxdKey=' + key
|
270 |
+
+ '&action=' + action
|
271 |
+
+ '&uid=' + uid
|
272 |
+
+ '&t=' + (new Date().getTime()) + "|" + Math.random();
|
273 |
+
|
274 |
+
var img = new Image();
|
275 |
+
img.src = url;
|
276 |
+
|
277 |
+
Unbxd.log("Beaconing --> Action : " + action + ", uid : " + uid + ", " + beacon);
|
278 |
+
}catch(e){
|
279 |
+
Unbxd.log(e);
|
280 |
+
}
|
281 |
+
}
|
282 |
+
|
283 |
+
Unbxd.beaconCount = 0;
|
284 |
+
Unbxd.send = function(){
|
285 |
+
if(Unbxd.beaconCount >= 100){
|
286 |
+
Unbxd.log("Too many beacons. Something might be wrong")
|
287 |
+
return;
|
288 |
+
}
|
289 |
+
|
290 |
+
Unbxd.beaconCount++;
|
291 |
+
|
292 |
+
// Get oldest pending beacon;
|
293 |
+
var pendingBeacons = Unbxd.getPendingBeacons();
|
294 |
+
|
295 |
+
if(_.size(pendingBeacons) > 0){
|
296 |
+
var oldest = _.min(_.keys(pendingBeacons), function(key){
|
297 |
+
return key.substr(key.lastIndexOf('.') + 1);
|
298 |
+
});
|
299 |
+
|
300 |
+
var tokens = oldest.split(".");
|
301 |
+
|
302 |
+
if(tokens.length < 4){
|
303 |
+
// Fatal. Do something!
|
304 |
+
// Will try to delete the cookie.
|
305 |
+
Unbxd.removeCookie(oldest.substr(oldest.indexOf('.') + 1));
|
306 |
+
}else{
|
307 |
+
var action = tokens[2];
|
308 |
+
var time = tokens[3];
|
309 |
+
|
310 |
+
var beacon = pendingBeacons[oldest];
|
311 |
+
|
312 |
+
try{
|
313 |
+
Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
|
314 |
+
Unbxd.fire(action, beacon);
|
315 |
+
if(_.size(pendingBeacons) > 1){
|
316 |
+
Unbxd.send();
|
317 |
+
}
|
318 |
+
|
319 |
+
// Unbxd.fire(action, beacon, function(){
|
320 |
+
// // Remove the cookie if image is loaded
|
321 |
+
// Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
|
322 |
+
// });
|
323 |
+
|
324 |
+
// setTimeout(function(){
|
325 |
+
// Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
|
326 |
+
// }, 500); // Delete anyway after 1 sec
|
327 |
+
|
328 |
+
// if(_.size(pendingBeacons) > 1){
|
329 |
+
// setTimeout(Unbxd.send, 1000); // Send others after 1.5 sec
|
330 |
+
// }
|
331 |
+
}catch(e){
|
332 |
+
Unbxd.log(e);
|
333 |
+
}
|
334 |
+
}
|
335 |
+
}
|
336 |
+
}
|
337 |
+
|
338 |
+
Unbxd.push = function(action, options, immediate){
|
339 |
+
if(Unbxd.key() == false){
|
340 |
+
Unbxd.log("Key not found. Abort");
|
341 |
+
return;
|
342 |
+
}
|
343 |
+
|
344 |
+
if(Unbxd.conf && Unbxd.conf.off != undefined && Unbxd.conf.off == true){
|
345 |
+
Unbxd.log("Tracking is off. Abort");
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
|
349 |
+
options = options || {};
|
350 |
+
options["url"] = document.URL;
|
351 |
+
options["referrer"] = document.referrer;
|
352 |
+
options['visit_type'] = Unbxd.readCookie(Unbxd.cookies.visitor);
|
353 |
+
options['ver'] = Unbxd.version
|
354 |
+
|
355 |
+
// If A/B test is on, push the disabled field
|
356 |
+
var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
|
357 |
+
if(!_.isUndefined(disabled) && disabled !== ''){
|
358 |
+
var tokens = disabled.split('-');
|
359 |
+
if(tokens.length == 2){
|
360 |
+
options['disabled'] = tokens[0];
|
361 |
+
}
|
362 |
+
}
|
363 |
+
|
364 |
+
// Override immediate behavior
|
365 |
+
if(Unbxd.conf && Unbxd.conf.immediate && Unbxd.conf.immediate[action] != undefined){
|
366 |
+
immediate = Unbxd.conf.immediate[action];
|
367 |
+
}
|
368 |
+
|
369 |
+
if(immediate){
|
370 |
+
Unbxd.fire(action, JSON.u_stringify(options));
|
371 |
+
}else{
|
372 |
+
var cookieName = Unbxd.cookies.pending + "." + action + "." + new Date().getTime();
|
373 |
+
Unbxd.setCookie(cookieName, JSON.u_stringify(options));
|
374 |
+
Unbxd.log("Pending cookie : " + cookieName);
|
375 |
+
|
376 |
+
setTimeout(Unbxd.send, 10000); // Send anyway after 10 secs
|
377 |
+
}
|
378 |
+
}
|
379 |
+
|
380 |
+
Unbxd.ab = function(){
|
381 |
+
// If only a certain percentage of users have to be shown Unbxd results.
|
382 |
+
if(!_.isUndefined(Unbxd.conf)
|
383 |
+
&& !_.isUndefined(Unbxd.conf.disabled)
|
384 |
+
&& !_.isUndefined(Unbxd.conf.disabled.percentage)
|
385 |
+
&& !_.isUndefined(Unbxd.conf.disabled.version)){
|
386 |
+
var date = new Date();
|
387 |
+
|
388 |
+
var percentageDisabled = Unbxd.conf.disabled.percentage;
|
389 |
+
var version = Unbxd.conf.disabled.version;
|
390 |
+
|
391 |
+
var deleteDisabledCookie = true;
|
392 |
+
|
393 |
+
// If the version of setting is newer than what cookie says, delete the visitor and disabled cookie
|
394 |
+
var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
|
395 |
+
if(!_.isUndefined(disabled) && disabled !== ''){
|
396 |
+
var tokens = disabled.split('-');
|
397 |
+
if(tokens.length == 2){
|
398 |
+
oldVersion = tokens[1];
|
399 |
+
|
400 |
+
if(version == oldVersion){
|
401 |
+
deleteDisabledCookie = false;
|
402 |
+
}
|
403 |
+
}
|
404 |
+
}
|
405 |
+
|
406 |
+
if(deleteDisabledCookie){
|
407 |
+
Unbxd.removeCookie(Unbxd.cookies.disabled);
|
408 |
+
}
|
409 |
+
|
410 |
+
// Figure out is the user has to be disabled
|
411 |
+
var rand = Math.floor((Math.random() * 100) + 1);
|
412 |
+
Unbxd.log("Random number : " + rand);
|
413 |
+
if(rand <= percentageDisabled){
|
414 |
+
// Disable
|
415 |
+
Unbxd.setCookieIfNotSet(Unbxd.cookies.disabled, "1-" + version, new Date(date.getFullYear() + 10, 1, 1));
|
416 |
+
}else{
|
417 |
+
Unbxd.setCookieIfNotSet(Unbxd.cookies.disabled, "0-" + version, new Date(date.getFullYear() + 10, 1, 1));
|
418 |
+
}
|
419 |
+
}else{
|
420 |
+
var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
|
421 |
+
if(!_.isUndefined(disabled) && disabled !== ''){
|
422 |
+
// Will reach here if there were A/B tests running before but not now.
|
423 |
+
Unbxd.removeCookie(Unbxd.cookies.disabled);
|
424 |
+
}
|
425 |
+
}
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Sets a user id
|
430 |
+
*/
|
431 |
+
Unbxd.user = function(){
|
432 |
+
var visitType = undefined;
|
433 |
+
|
434 |
+
var date = new Date();
|
435 |
+
var uid = 'uid-' + date.getTime() + "-" + Math.floor(Math.random() * 100000);
|
436 |
+
if(Unbxd.setCookieIfNotSet(Unbxd.cookies.uid, uid, new Date(date.getFullYear() + 10, 1, 1))){
|
437 |
+
visitType = 'first_time';
|
438 |
+
}else{
|
439 |
+
visitType = 'repeat';
|
440 |
+
}
|
441 |
+
|
442 |
+
Unbxd.ab(); // Do whatever to be done when running ab test
|
443 |
+
|
444 |
+
var now = date.getTime();
|
445 |
+
var expire = new Date(now + 30 * 60000); // 30 mins
|
446 |
+
if(Unbxd.setCookieIfNotSet(Unbxd.cookies.visitor, visitType, expire)){
|
447 |
+
Unbxd.push("visitor", {});
|
448 |
+
Unbxd.log("Pushed Visitor Event");
|
449 |
+
}
|
450 |
+
}
|
451 |
+
|
452 |
+
Unbxd.init = function(){
|
453 |
+
Unbxd.log("Initializing...");
|
454 |
+
|
455 |
+
Unbxd.user(); // Initialize uid
|
456 |
+
|
457 |
+
Unbxd.send(); // Dispatch pending beacons
|
458 |
+
// setInterval(Unbxd.send, 3 * 1000); // Start a timer interval to send beacons periodically
|
459 |
+
|
460 |
+
// Injecting UnbxdKey in dom
|
461 |
+
// jQuery('body').append("<div style='display:none;' id='unbxd-site-name'>" + Unbxd.key() + "</div>");
|
462 |
+
}
|
463 |
+
|
464 |
+
// <meta name="unbxd:type" content="category">
|
465 |
+
// Requires jQuery
|
466 |
+
if(Unbxd.resolveCategory == undefined){
|
467 |
+
Unbxd.resolveCategory = function(){
|
468 |
+
var content = jQuery("meta[name='unbxd:type']").attr('content');
|
469 |
+
if(content != undefined && (content == "landing" || content == "category")){
|
470 |
+
return Unbxd.getPathName(document.URL);
|
471 |
+
}
|
472 |
+
|
473 |
+
return false;
|
474 |
+
}
|
475 |
+
}
|
476 |
+
|
477 |
+
// Requires jQuery
|
478 |
+
Unbxd.gatherImpressions = function(){
|
479 |
+
var boxElems = jQuery('[unbxdAttr="product"]');
|
480 |
+
_.each(boxElems, function(elem){
|
481 |
+
var boxType = jQuery(elem).attr("unbxdParam_boxtype");
|
482 |
+
|
483 |
+
identifier = jQuery(elem).attr("unbxdParam_source_pid")
|
484 |
+
|| jQuery(elem).attr("unbxdParam_category")
|
485 |
+
|| jQuery(elem).attr("unbxdParam_brand");
|
486 |
+
|
487 |
+
Unbxd.addImpression(boxType, identifier);
|
488 |
+
});
|
489 |
+
|
490 |
+
boxElems = jQuery('[data-unbxdAttr="product"]');
|
491 |
+
_.each(boxElems, function(elem){
|
492 |
+
var boxType = jQuery(elem).attr("data-unbxdParam_boxtype");
|
493 |
+
|
494 |
+
identifier = jQuery(elem).attr("data-unbxdParam_source_pid")
|
495 |
+
|| jQuery(elem).attr("data-unbxdParam_category")
|
496 |
+
|| jQuery(elem).attr("data-unbxdParam_brand");
|
497 |
+
|
498 |
+
Unbxd.addImpression(boxType, identifier);
|
499 |
+
});
|
500 |
+
}
|
501 |
+
|
502 |
+
/*
|
503 |
+
* APIs
|
504 |
+
*/
|
505 |
+
Unbxd.track = function(type, params){
|
506 |
+
if(type == 'search'){
|
507 |
+
Unbxd.addSearch(params.query,params.autosuggestParams);
|
508 |
+
}else if(type == 'browse'){
|
509 |
+
Unbxd.addBrowse(params.category);
|
510 |
+
}else if(type == 'widgetImpression'){
|
511 |
+
Unbxd.addImpression(params.boxType, params.identifier);
|
512 |
+
}else if(type == 'click'){
|
513 |
+
Unbxd.addClick(params.pid, params.prank, params.boxType);
|
514 |
+
}else if(type == 'addToCart'){
|
515 |
+
Unbxd.addCart(params.pid);
|
516 |
+
}else if(type == 'order'){
|
517 |
+
Unbxd.addOrder(params.pid, params.qty, params.price);
|
518 |
+
}else if(type == 'map_token'){
|
519 |
+
Unbxd.mapToken(params.token);
|
520 |
+
}
|
521 |
+
}
|
522 |
+
// ===================================
|
523 |
+
|
524 |
+
/*
|
525 |
+
* Register a new search query.
|
526 |
+
*/
|
527 |
+
Unbxd.addSearch = function(query, autosuggest_data){
|
528 |
+
if(autosuggest_data != undefined){
|
529 |
+
Unbxd.push("search", {query : query, autosuggest_data : autosuggest_data});
|
530 |
+
Unbxd.log("Pushed Autosuggest Hit");
|
531 |
+
}
|
532 |
+
else{
|
533 |
+
Unbxd.push("search", {query: query});
|
534 |
+
}
|
535 |
+
Unbxd.log("Pushed Search Hit for query : " + query);
|
536 |
+
}
|
537 |
+
|
538 |
+
/*
|
539 |
+
* Register a new browse query.
|
540 |
+
*/
|
541 |
+
Unbxd.addBrowse = function(path){
|
542 |
+
Unbxd.push("browse", {query : path}, true);
|
543 |
+
Unbxd.log("Pushed Browse Hit");
|
544 |
+
}
|
545 |
+
|
546 |
+
/*
|
547 |
+
* Register a new product click. if query or queryType is null. it will go as anon click
|
548 |
+
*/
|
549 |
+
Unbxd.addClick = function(pid, prank, boxType){
|
550 |
+
Unbxd.push("click", {pid : pid, pr : prank, box_type : boxType});
|
551 |
+
Unbxd.log("Pushed Click");
|
552 |
+
}
|
553 |
+
|
554 |
+
/*
|
555 |
+
* Register a new product cart. if query or queryType is null. it will go as anon cart
|
556 |
+
*/
|
557 |
+
Unbxd.addCart = function(pid){
|
558 |
+
Unbxd.push("cart", {pid : pid});
|
559 |
+
Unbxd.log("Pushed Add to Cart");
|
560 |
+
}
|
561 |
+
|
562 |
+
/*
|
563 |
+
* Register a new order. if query or queryType is null. it will go as anon order
|
564 |
+
*/
|
565 |
+
Unbxd.addOrder = function(pid, qty, price){
|
566 |
+
var ordersStr = Unbxd.readCookie('orders') || "";
|
567 |
+
try{
|
568 |
+
var orders = ordersStr.split(',');
|
569 |
+
if(orders != null && orders.length > 0 && _.indexOf(orders, pid) != -1){
|
570 |
+
return;
|
571 |
+
}
|
572 |
+
}catch (e){}
|
573 |
+
|
574 |
+
ordersStr = ordersStr + "," + pid;
|
575 |
+
Unbxd.setCookie('orders', ordersStr);
|
576 |
+
|
577 |
+
Unbxd.push("order", {pid : pid, qty : qty, price : price}, true);
|
578 |
+
Unbxd.log("Pushed Order");
|
579 |
+
}
|
580 |
+
|
581 |
+
/*
|
582 |
+
* Maps a token with the uid
|
583 |
+
*/
|
584 |
+
Unbxd.mapToken = function(token){
|
585 |
+
Unbxd.push("user_external_token", {external_token : token}, true);
|
586 |
+
Unbxd.log("Mapped uid with : " + token);
|
587 |
+
}
|
588 |
+
|
589 |
+
/*
|
590 |
+
* Register a Recommender Box Impression
|
591 |
+
*/
|
592 |
+
Unbxd.addImpression = function(boxType, identifier){
|
593 |
+
Unbxd.boxes = Unbxd.boxes || [];
|
594 |
+
|
595 |
+
if(boxType && Unbxd.boxes.indexOf(boxType) == -1){
|
596 |
+
Unbxd.boxes.push(boxType);
|
597 |
+
Unbxd.log("Found box : " + boxType);
|
598 |
+
|
599 |
+
var path = Unbxd.getPathName(document.URL);
|
600 |
+
Unbxd.push("impression", {box_type : boxType, path : path, identifier : identifier}, true);
|
601 |
+
Unbxd.log("Pushed recommender impression");
|
602 |
+
}
|
603 |
+
}
|
604 |
+
|
605 |
+
; // The Trailing semicolon is necessary. And there is a prize if you guess why :D
|
606 |
+
(new function(){
|
607 |
+
// Prototype bug.
|
608 |
+
var _array_tojson = Array.prototype.toJSON;
|
609 |
+
JSON.u_stringify = function(value) {
|
610 |
+
try{
|
611 |
+
if(typeof Prototype !== 'undefined' && parseFloat(Prototype.Version.substr(0,3)) < 1.7 && typeof _array_tojson !== 'undefined'){
|
612 |
+
delete Array.prototype.toJSON;
|
613 |
+
var r = JSON.stringify(value);
|
614 |
+
Array.prototype.toJSON = _array_tojson;
|
615 |
+
return r;
|
616 |
+
}
|
617 |
+
}catch(ex){}
|
618 |
+
|
619 |
+
return JSON.stringify(value);
|
620 |
+
};
|
621 |
+
|
622 |
+
var debugInfo = function(){
|
623 |
+
if(window.jQuery){
|
624 |
+
var category = Unbxd.resolveCategory();
|
625 |
+
|
626 |
+
var searchBox = jQuery('[unbxdAttr="sq"]').size() || jQuery('[data-unbxdAttr="sq"]').size() == 1;
|
627 |
+
var searchBtn = jQuery('[unbxdAttr="sq_bt"]').size() || jQuery('[data-unbxdAttr="sq_bt"]').size() == 1;
|
628 |
+
var categoryPage = category != undefined && category != false;
|
629 |
+
var products = jQuery('[unbxdAttr="product"]').size() || jQuery('[data-unbxdAttr="product"]').size();
|
630 |
+
var addToCarts = jQuery('[unbxdAttr="AddToCart"]').size() || jQuery('[data-unbxdAttr="AddToCart"]').size();
|
631 |
+
var orders = jQuery('[unbxdAttr="order"]').size() || jQuery('[data-unbxdAttr="order"]').size();
|
632 |
+
|
633 |
+
var key = Unbxd.key();
|
634 |
+
if(key == false) return;
|
635 |
+
|
636 |
+
jQuery('body')
|
637 |
+
.append(
|
638 |
+
"<div id='ubx-debug' style='position:fixed; right:0; top:10px; max-width:300px; background-color:rgba(69, 181, 193, 1); padding : 10px; z-index:99999999; color:#fff; font-size:13px;'>"
|
639 |
+
+ "Unbxd Info : <a href='#' id='ubx-close'>Close</a>"
|
640 |
+
+ "<ul style='padding:0 0 0 10px; margin:5px;'>"
|
641 |
+
+ "<li>Site name : " + key + "</li>"
|
642 |
+
+ "<li>Search Box present : " + searchBox + "</li>"
|
643 |
+
+ "<li>Search Btn present : " + searchBtn + "</li>"
|
644 |
+
+ "<li>Category Page : " + categoryPage + "</li>"
|
645 |
+
+ "<li>Products : " + products + "</li>"
|
646 |
+
+ "<li>Add To Cart buttons : " + addToCarts + "</li>"
|
647 |
+
+ "<li>Orders : " + orders + "</li>"
|
648 |
+
+ "</ul>"
|
649 |
+
+ "<hr>"
|
650 |
+
+ "<div id='ubx-console'></div>"
|
651 |
+
+ "</div>");
|
652 |
+
|
653 |
+
jQuery('#ubx-close').click(function(){
|
654 |
+
jQuery('#ubx-debug').hide();
|
655 |
+
})
|
656 |
+
}
|
657 |
+
}
|
658 |
+
|
659 |
+
// Requires jQuery
|
660 |
+
var attachListener = function(selector, event, fn){
|
661 |
+
if(window.jQuery){
|
662 |
+
if(jQuery(document).delegate){
|
663 |
+
jQuery(document).delegate(selector, event, fn);
|
664 |
+
}else{
|
665 |
+
jQuery(selector).live(event, fn);
|
666 |
+
}
|
667 |
+
}
|
668 |
+
}
|
669 |
+
|
670 |
+
// Requires jQuery
|
671 |
+
var attachListeners = function(){
|
672 |
+
/**
|
673 |
+
* Event listeners. They are delegates put on document object.
|
674 |
+
*/
|
675 |
+
|
676 |
+
// EventListener for Search Query tracking
|
677 |
+
attachListener('[unbxdAttr="sq"]', "keydown", function(event) {
|
678 |
+
if (event.which == 13) { // Enter key
|
679 |
+
query = jQuery(this).val();
|
680 |
+
Unbxd.addSearch(query);
|
681 |
+
}
|
682 |
+
});
|
683 |
+
|
684 |
+
attachListener('[data-unbxdAttr="sq"]', "keydown", function(event) {
|
685 |
+
if (event.which == 13) { // Enter key
|
686 |
+
query = jQuery(this).val();
|
687 |
+
Unbxd.addSearch(query);
|
688 |
+
}
|
689 |
+
});
|
690 |
+
|
691 |
+
// Event Listener for Search Query (pressing search button)
|
692 |
+
attachListener('[unbxdAttr="sq_bt"]', "mouseup", function() {
|
693 |
+
query = jQuery('[unbxdAttr="sq"]').val();
|
694 |
+
Unbxd.addSearch(query);
|
695 |
+
});
|
696 |
+
|
697 |
+
attachListener('[data-unbxdAttr="sq_bt"]', "mouseup", function() {
|
698 |
+
query = jQuery('[data-unbxdAttr="sq"]').val();
|
699 |
+
Unbxd.addSearch(query);
|
700 |
+
});
|
701 |
+
|
702 |
+
// Event Listener for Search Query (pressing search button)
|
703 |
+
// <a href='' unbxdAttr="sq_link" unbxdParam_q="Sale">Sale</a>
|
704 |
+
attachListener('[unbxdAttr="sq_link"]', "mouseup", function() {
|
705 |
+
query = jQuery(this).attr('unbxdParam_q');
|
706 |
+
Unbxd.addSearch(query);
|
707 |
+
|
708 |
+
e.stopPropagation();
|
709 |
+
});
|
710 |
+
|
711 |
+
attachListener('[data-unbxdAttr="sq_link"]', "mouseup", function() {
|
712 |
+
query = jQuery(this).attr('data-unbxdParam_q');
|
713 |
+
Unbxd.addSearch(query);
|
714 |
+
|
715 |
+
e.stopPropagation();
|
716 |
+
});
|
717 |
+
|
718 |
+
|
719 |
+
// Event Listener for Browse Hits
|
720 |
+
var category = Unbxd.resolveCategory();
|
721 |
+
if(category != undefined && category != false){
|
722 |
+
Unbxd.addBrowse(category);
|
723 |
+
}
|
724 |
+
|
725 |
+
attachListener('[unbxdAttr="product"]', "mouseup", function() {
|
726 |
+
var boxType = jQuery(this).attr("unbxdParam_boxtype");
|
727 |
+
var pr = jQuery(this).attr("unbxdParam_pRank");
|
728 |
+
var pid = jQuery(this).attr("unbxdParam_sku") || jQuery(this).attr("unbxdParam_pid");
|
729 |
+
|
730 |
+
Unbxd.addClick(pid, pr, boxType);
|
731 |
+
});
|
732 |
+
|
733 |
+
attachListener('[data-unbxdAttr="product"]', "mouseup", function() {
|
734 |
+
var boxType = jQuery(this).attr("data-unbxdParam_boxtype");
|
735 |
+
var pr = jQuery(this).attr("data-unbxdParam_pRank");
|
736 |
+
var pid = jQuery(this).attr("data-unbxdParam_sku") || jQuery(this).attr("data-unbxdParam_pid");
|
737 |
+
|
738 |
+
Unbxd.addClick(pid, pr, boxType);
|
739 |
+
});
|
740 |
+
|
741 |
+
// EventListener for Add to Cart Metric
|
742 |
+
attachListener('[unbxdAttr="AddToCart"]', "mouseup", function() {
|
743 |
+
var pid = jQuery(this).attr("unbxdParam_sku") || jQuery(this).attr("unbxdParam_pid");
|
744 |
+
Unbxd.addCart(pid);
|
745 |
+
});
|
746 |
+
|
747 |
+
attachListener('[data-unbxdAttr="AddToCart"]', "mouseup", function() {
|
748 |
+
var pid = jQuery(this).attr("data-unbxdParam_sku") || jQuery(this).attr("data-unbxdParam_pid");
|
749 |
+
Unbxd.addCart(pid);
|
750 |
+
});
|
751 |
+
|
752 |
+
var orderElems = jQuery('[unbxdAttr="order"]');
|
753 |
+
_.each(orderElems, function(elem){
|
754 |
+
var pid = jQuery(elem).attr("unbxdParam_sku") || jQuery(elem).attr("unbxdParam_pid");
|
755 |
+
Unbxd.addOrder(pid);
|
756 |
+
});
|
757 |
+
|
758 |
+
var orderElems = jQuery('[data-unbxdAttr="order"]');
|
759 |
+
_.each(orderElems, function(elem){
|
760 |
+
var pid = jQuery(elem).attr("data-unbxdParam_sku") || jQuery(elem).attr("data-unbxdParam_pid");
|
761 |
+
var qty = jQuery(elem).attr("data-unbxdParam_qty") || jQuery(elem).attr("data-unbxdParam_qty");
|
762 |
+
var price = jQuery(elem).attr("data-unbxdParam_price") || jQuery(elem).attr("data-unbxdParam_price");
|
763 |
+
Unbxd.addOrder(pid, qty, price);
|
764 |
+
});
|
765 |
+
}
|
766 |
+
|
767 |
+
// Requires jQuery
|
768 |
+
var init = function(){
|
769 |
+
if(Unbxd.readCookie('info') === '1'){
|
770 |
+
debugInfo(); // Requires jQuery
|
771 |
+
}
|
772 |
+
|
773 |
+
Unbxd.bootState = 3; //
|
774 |
+
|
775 |
+
attachListeners(); // Requires jQuery
|
776 |
+
|
777 |
+
Unbxd.bootState = 4; // Listeners attached. Complete
|
778 |
+
|
779 |
+
Unbxd.gatherImpressions(); // Requires jQuery
|
780 |
+
|
781 |
+
setInterval(function(){
|
782 |
+
Unbxd.gatherImpressions(); // Requires jQuery
|
783 |
+
}, 1000);
|
784 |
+
}
|
785 |
+
|
786 |
+
// ========================================================
|
787 |
+
// Start booting
|
788 |
+
|
789 |
+
if(Unbxd.bootState){
|
790 |
+
Unbxd.log("Already initialized");
|
791 |
+
return;
|
792 |
+
}
|
793 |
+
|
794 |
+
Unbxd.bootState = 1; // Just inside init
|
795 |
+
|
796 |
+
/**
|
797 |
+
* Init.
|
798 |
+
*/
|
799 |
+
Unbxd.init();
|
800 |
+
|
801 |
+
Unbxd.bootState = 2; // Cookies initialized
|
802 |
+
|
803 |
+
// ===========================================================
|
804 |
+
// Do Stuff which requires jQuery
|
805 |
+
|
806 |
+
var fn = function(){
|
807 |
+
if(typeof(jQuery) != 'undefined'){
|
808 |
+
init();
|
809 |
+
}else{
|
810 |
+
setTimeout(function(){
|
811 |
+
fn();
|
812 |
+
}, 100);
|
813 |
+
}
|
814 |
+
}
|
815 |
+
|
816 |
+
fn();
|
817 |
+
|
818 |
+
// ============================================================
|
819 |
+
// Do stuff which required full page load
|
820 |
+
|
821 |
+
var runPostLoad = function(){
|
822 |
+
Unbxd.log("Running post load");
|
823 |
+
|
824 |
+
// Post load hooks. Some functionalities depend on this. Don't move.
|
825 |
+
try{
|
826 |
+
if(Unbxd.postLoad != undefined && typeof(Unbxd.postLoad) == 'function'){
|
827 |
+
Unbxd.postLoad();
|
828 |
+
}
|
829 |
+
}catch(e){
|
830 |
+
Unbxd.log(e);
|
831 |
+
}
|
832 |
+
}
|
833 |
+
|
834 |
+
if(document && document.readyState && document.readyState === "complete"){
|
835 |
+
runPostLoad();
|
836 |
+
}else if (window.addEventListener) {
|
837 |
+
window.addEventListener('load', runPostLoad, false); // modern browsers
|
838 |
+
} else if (window.attachEvent) {
|
839 |
+
window.attachEvent("onload", runPostLoad); // older versions of IE
|
840 |
+
} else {
|
841 |
+
// What the heck. We won't support it. Abort.
|
842 |
+
}
|
843 |
+
});
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>unbxd_recommendation</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
@@ -10,9 +10,9 @@
|
|
10 |
<description>helps integrating the unbxd recommender widgets</description>
|
11 |
<notes>supports all the unbxd recommendor widgets</notes>
|
12 |
<authors><author><name>ananthesh</name><user>ananthesh</user><email>ananthesh@unbxd.com</email></author></authors>
|
13 |
-
<date>2014-
|
14 |
-
<time>
|
15 |
-
<contents><target name="magelocal"><dir name="Unbxd"><dir name="Datafeeder"><dir name="Block"><file name="Edit.php" hash="6cc7e0396c298656c2529d2651bc0ae1"/><file name="Index.php" hash="9114009eae54970145fbb849cfc22dfd"/></dir><dir name="Helper"><file name="Analyticshelper.php" hash="9c841be95363d1e100e9a00c7d95f7d6"/><file name="Data.php" hash="cc32188ca72c365a3177b8439188f4b0"/><file name="UnbxdIndexingHelper.php" hash="e4299a181161ba65d80bf579aaea0502"/><file name="UnbxdTaxonomyHelper.php" hash="9c16f370fa44807d8524c549c1ddb017"/><file name=".DS_Store" hash="801d9a1a1f478b210726cfc656cec74f"/></dir><dir name="Model"><file name="Attribute.php" hash="9b7e4dea003568ffb016b60f20b35e74"/><file name="Conf.php" hash="b9a9627d779f473b7ab1696fd44a877b"/><file name="Facet.php" hash="a778acee165d1ff0162be6664f4ecf1a"/><dir name="Feed"><file name="Feedcreator.php" hash="675028dc51d02e4be956336bdbc89113"/><file name="Feedmanager.php" hash="c21018ecd585098fcca1ae360a6c2b85"/><file name="Filemanager.php" hash="5200abf7349679edec7e617619c8d8b3"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="77635e52b5ec7c39dae78094efed566e"/><file name="Productbuilder.php" hash="38bb898b6fcc2e97a6d74b3bf9edce41"/><file name="Schemabuilder.php" hash="240d31fc4a3829d075d0ed83daf2ddae"/><file name="Taxonomybuilder.php" hash="75463b9c001b443f7d64470d5347ea59"/></dir></dir><file name="Field.php" hash="4206919e3762907aba7d38b39733deba"/><dir name="Mysql4"><file name="Attribute.php" hash="7ec9732a1399db03dec0b6002d1aeb58"/><dir name="Conf"><file name="Collection.php" hash="fa30f58432618d2822ce0e3fe1483efe"/></dir><file name="Conf.php" hash="ad03b89d6bd43893f171fb08e142fbc0"/><dir name="Field"><file name="Collection.php" hash="5c9a40a3f2df168531c1af18be63bf16"/></dir><file name="Field.php" hash="61c8a1a5aa7b763925896b4f74bf4a56"/><dir name="Resource"><file name="Attribute.php" hash="9353baa4f14eeb342de93d20c566bfee"/></dir><file name="Upgrade.php" hash="e3e259f32cdcf58d2dca2a21d6262767"/></dir></dir><dir name="controllers"><file name="ConfigController.php" hash="e9b049ba4913e4733a251035f9654beb"/><file name="FieldController.php" hash="0c93a9c339d718179641c0a47cccaa6c"/><file name="IndexController.php" hash="90a2150b94caa81fd598d01f3e0c124b"/></dir><dir name="etc"><file name="adminhtml.xml" hash="243eca656901fd022f8119a3ad46b569"/><file name="config.xml" hash="7c26ae17786870ee2536d68f8d9d868c"/></dir><dir name="scripts"><file name="Cron.php" hash="087a021cf47794f337e4ce0130b2d3b7"/><file name="abstract.php" hash="757e66bc99da02c274a0d9723923329e"/></dir><dir name="sql"><dir name="datafeeder_setup"><file name="mysql4-install-1.0.5.php" hash="27ecb984b7419e2fc58433db370fe43d"/><file name="mysql4-upgrade-0.1.0-1.0.5.php" hash="27ecb984b7419e2fc58433db370fe43d"/></dir></dir><file name=".DS_Store" hash="b4a356bd7741138b66aa79afcc4abd2f"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="datafeeder"><file name="conf.phtml" hash="87911c34bc9c06f617d83e8d70b4c81d"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="shell"><file name="UnbxdFeed.php" hash="2b70f51b04c4b62b4a51aca0efae7050"/></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Datafeeder.xml" hash="73f1469ef7c4f5c4eef05900302239de"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>unbxd_recommendation</name>
|
4 |
+
<version>1.0.7</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
10 |
<description>helps integrating the unbxd recommender widgets</description>
|
11 |
<notes>supports all the unbxd recommendor widgets</notes>
|
12 |
<authors><author><name>ananthesh</name><user>ananthesh</user><email>ananthesh@unbxd.com</email></author></authors>
|
13 |
+
<date>2014-11-06</date>
|
14 |
+
<time>15:47:17</time>
|
15 |
+
<contents><target name="magelocal"><dir name="Unbxd"><dir name="Recommendation"><dir name="Block"><file name="Admin.php" hash="82a902698e1b090d0e532905ed7f2d37"/><file name="Tracker.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Helper"><file name="Confighelper.php" hash="8fc5f4943a0ae3cf92c30ccff9131bea"/><file name="Data.php" hash="74562d257ec4ef3add0fbd90ea51e671"/><file name="Feedhelper.php" hash="736949fd5e82d9c181108d3294603d4b"/></dir><dir name="Model"><dir name="Api"><file name="Request.php" hash="98c92b643e28e750a8bb2e6a384733de"/><file name="Response.php" hash="448a7f48496babd313e4ac147405fea1"/><dir name="Task"><file name="Analyticsimpression.php" hash="cc65a5549dba4f6a0cc1b52d9a273b18"/><file name="Feeddetails.php" hash="60bc2c9f743d5ee9c3b5dce4dd8e2e0a"/><file name="Trackcart.php" hash="4e4ba196f66cbbd17abc7415ac312f7e"/><file name="Trackorder.php" hash="ba8204eb82fea24cc0b5e27cd5ab7936"/><file name="Triggerfeedupload.php" hash="4e1c645ae51d655be2ac7b1ad90b5fa6"/><file name="Updatefeaturefields.php" hash="112ce06194a30f53515846dc7c219ac0"/><file name="Validatekeys.php" hash="b4b0c1a945a9ec1d0adc534a7d2bc08f"/><file name="Widget.php" hash="8f8ee05f4b27fd0de948eb414035b4f2"/></dir><file name="Task.php" hash="5a40150a6d7c4f4e3945974d5eb8b691"/></dir><file name="Config.php" hash="67a0fda09eb4ae9b9ba3c421eae46efc"/><dir name="Feed"><file name="Feedcreator.php" hash="c0cdbd942675ccd31a7173b5b51568d2"/><file name="Feedmanager.php" hash="7f563965eef1d8b6a5a5cec93f103a5a"/><file name="Filemanager.php" hash="9e3602428c8783c68f9bb951f52120ba"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="31f422f3cf18f057e887c9f1812538a2"/><file name="Productbuilder.php" hash="d373cdff9efa694c98454cd88f8f6d7b"/><file name="Schemabuilder.php" hash="b41389c9ffa08063d5559f05d2367238"/><file name="Taxonomybuilder.php" hash="f4829a5902d7320901efa33d0dfc9e81"/></dir></dir><file name="Field.php" hash="6e9ef8fb0e4c89a3a44973de7805871b"/><file name="Observer.php" hash="555eb4f0344b72f2b2edd0cf977f9828"/><dir name="Resource"><file name="Attribute.php" hash="bdd6026954b734430903f3fdb2a2f1e6"/><dir name="Config"><file name="Collection.php" hash="f50c88e3f7c10137ea9da5fc890218b5"/></dir><file name="Config.php" hash="8a08f5c9b2345f9e6899419a47aeec9f"/><dir name="Field"><file name="Collection.php" hash="455d7a3e8fce1741c189c86ed5fc5e22"/></dir><file name="Field.php" hash="45380eaee3fc0b58682e63e30b999bad"/><dir name="Product"><file name="Collection.php" hash="9342cdbbc6688599aa9565ae6aa7ff5c"/></dir></dir></dir><dir name="controllers"><file name="AdminController.php" hash="1cbbc9a381f011ebc1d6b6a964e2e512"/><file name="ConfigController.php" hash="fd632d0b4b49b5f55f633d951bf2b9fb"/><file name="WidgetController.php" hash="71a19ec8e356ccf168a4a6815488a5fa"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c4456170bcc97114fa990f3a15098664"/><file name="config.xml" hash="864d625de068c7cebac382e82cefe797"/></dir><dir name="sql"><dir name="unbxd_recommendation_setup"><file name="mysql4-install-1.0.0.php" hash="cb254747c65f9bd3b3f4f845477f9a80"/></dir></dir><file name=".DS_Store" hash="b4a356bd7741138b66aa79afcc4abd2f"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="recommendation.xml" hash="64e40cea662a3e3808b413ca40563986"/></dir></dir><dir name="template"><dir name="unbxd"><file name="recommendation.phtml" hash="262a89cfe78e4db8f27f3c7b5782687d"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="unbxd"><file name="tracker.phtml" hash="5e41b4b1d2fac582a6e98faf457aeab8"/><dir name="tracking"><file name="cart.phtml" hash="1602ccd541917fdaa539b88b59e16933"/><file name="category.phtml" hash="75048c587d627190a7931291e22a3e1e"/><file name="order.phtml" hash="3ddc154f41138d5f924bc415f8feeb9b"/><file name="product.phtml" hash="b6402e1b0c1a4364973bc46200833e1e"/></dir></dir></dir><dir name="layout"><dir name="unbxd"><file name="recommendation.xml" hash="06b48cd7fc293c2d288261d2f292d962"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="unbxd"><dir name="css"><file name="app.css" hash="84ac28ec71a90f34a2fde5d1a3e373ba"/><file name="bootstrap-them.css" hash="df854606e8bfb38abe58305c389301ae"/><file name="bootstrap.css" hash="94f1c7a5b57273668034b7f90451fe53"/><file name="chosen.css" hash="786546be71e5fbff141d883ea7bf88a9"/><file name="unbxd-magento.css" hash="1128713c4ab944a6cbf2f05b39b875ff"/></dir><dir name="img"><file name="Custom-platform.png" hash="d053db68b99519a2b0303624ab647f16"/><file name="DONE.png" hash="470356a4749d5fde1b86d9c0eeb9c806"/><file name="HEXAGON-Only.png" hash="f070ca957f922446f715555d94192298"/><file name="Magento-small.png" hash="0b80c21a5daa1669317095843590aa10"/><file name="Magento.png" hash="23b3159d445fe3fe5de7ea4a6d7f0271"/><file name="X-popup-hover.png" hash="41022fc34b63fc668477bcb991652577"/><file name="X-popup.png" hash="301b49b195fd8e9106eef93805182c11"/><file name="X-pricing.png" hash="ab7c15dacab6b4e13e19d9614741e9ef"/><file name="add-actv.png" hash="51bfeb67fce50aef4fe79ccea4e0d840"/><file name="add-icon.png" hash="46dea9858757fa584de457bfc421269f"/><file name="add-inactv.png" hash="164d79389bcd58d9d606871307d16e7e"/><file name="add-raw-hover.png" hash="591316d60847c12340d66cea0eb2ee97"/><file name="add-raw.png" hash="1fcdb060d898a7807bb37c796a772993"/><file name="add.png" hash="d9b313fc9225b87513b5ba9a3db28ccb"/><file name="arrow-2.png" hash="627be933821070bb0514ba331739cbdb"/><file name="arrow-calendar-down.png" hash="15a5f0cba1424dbc6d7f2069dca59a2a"/><file name="arrow-calendar-down1.png" hash="ed6aac9b4e114418f639ce874e75ed19"/><file name="arrow-down-disabled.jpg" hash="5b62a642490f264b58771e38e687eb19"/><file name="arrow-down-enabled.jpg" hash="4a0b2fafe44c58dd390d5eb0473c365e"/><file name="arrow-down-white.jpg" hash="edd441fe8c391969859dc72e5e95e83c"/><file name="arrow-down-white1.jpg" hash="6b7c7662f141a30635d408dad048dd54"/><file name="arrow-down-white2.jpg" hash="bd948050a2d7b0b6dfd7e349734df63b"/><file name="arrow-down.png" hash="379a11ee447d83e850a03581928acae8"/><file name="arrow-gray.png" hash="6e345006dfc2b0f1e52b8266c21bcbbc"/><file name="arrow-left-white.jpg" hash="36a0b2d5784c980a54edb3b874bc47c7"/><file name="arrow-left.jpg" hash="e22a795292c8bf95e62c86d7f5c3a149"/><file name="arrow-mail-developer).png" hash="a96ecd000175538c0dd0914395cf203d"/><file name="arrow-right-blue.png" hash="4ef79b5fc672c2a285b0c2ba5504f1e4"/><file name="arrow-right-gray.jpg" hash="5ac0235afe90023e26126134f151a2bd"/><file name="arrow-right-white.jpg" hash="9916e44542fbaa7a9e9b69f3551d321f"/><file name="arrow-right.jpg" hash="c2ad8f3435733f35a46fd8fdf29a9323"/><file name="arrow-up-black.png" hash="1e5a76b450fd32c3577078829d38ac58"/><file name="arrow-up-disabled.jpg" hash="6659a79f97099b525bd1b0713b99ad8b"/><file name="arrow-up-enabled.jpg" hash="4074eee100e01429ea4defed741b2ac2"/><file name="arrow-up-red.png" hash="84b29f0c6964c69ed6e78501123bfccf"/><file name="arrow-up-white.jpg" hash="38d5ec238c32cb7124fb6bc31ffe126e"/><file name="arrow-up-white1.jpg" hash="3221729d064ae198dff6effcc62e6a5e"/><file name="arrow-up.png" hash="6c54432350ad68d3345eb151d7534ae2"/><file name="arrow-white.png" hash="4b4e57f5b8d2b678df89b5a2dc85bba3"/><file name="arrow.png" hash="4b4e57f5b8d2b678df89b5a2dc85bba3"/><file name="authenticated.png" hash="78140247146f512d014be386a116a699"/><file name="back.png" hash="32b2ff86ee7ba8a1f19270a121f00205"/><file name="bg.jpg" hash="4a2f6fda25f44f7009e9a22ccf90e330"/><file name="big-arrow-gray.jpg" hash="745194d74525c2fd3238475c55a47cbc"/><file name="bigcommerce.png" hash="2a2599c562ec94be2545ab335131c71a"/><file name="black-right-small.jpg" hash="25253ab5ae165f13a1827ccd387d7b2f"/><file name="black-right-thick.jpg" hash="ae89e8e2c9d39ab8970782a829edeaeb"/><file name="btn-arrow-top.png" hash="42b3a9ffa2eccd2cfc9da9c33975f64c"/><file name="btn-arrow.png" hash="8cc68b6207307260a75bcc9331447c5e"/><file name="button-arrow-blue.png" hash="1e8d1741ecef49e021f35460fe16c76b"/><file name="button-arrow-grey.png" hash="76cd7acb80bf814c6605aa3f88c2c19b"/><file name="button-arrow-red.png" hash="03092367ac79745b0d7b2f9b707c802b"/><file name="cancel.png" hash="dd81fdd1129b4ef172d4c434d6156d87"/><file name="card-image.jpg" hash="bd1f292965163bbcc869a48bbe806deb"/><file name="card-image1.jpg" hash="95ccedbe1e8d01685f2527b08230b4a7"/><file name="card-image2.jpg" hash="963c39821d0cb5b1f0dfb691e12eefb5"/><file name="card-image3.jpg" hash="961e69aeecd5ab5d17743c5d3e4764cf"/><file name="checkmark.png" hash="4a0de13372944f21034dee674f92b7d1"/><file name="chosen-sprite.png" hash="25b9acb1b504c95c6b95c33986b7317e"/><file name="close-analytics.png" hash="0ca667d6de9a98999e37811861e6768e"/><file name="close.png" hash="daa5df0af5c219e136505132e18f5242"/><file name="color-pic.png" hash="470ec0178867dac04fcbce638c14a4cf"/><file name="congrats.png" hash="ec3d2e0a2bf1d012e56583e89513664d"/><file name="copy-black.png" hash="3f2b73b7287849ba2d341f194be7cd44"/><file name="copy-white.png" hash="208f74184462db7f5861d4c48dd300da"/><file name="cros.png" hash="bbf540cf6fe3d7fba4fab37b4d0b22c9"/><file name="cross-2.png" hash="1dfc504ed86c82bd86de8c74a09c906f"/><file name="cvv-number.jpg" hash="0ada16245fd0cb05a3967461eba12a28"/><file name="delete-raw-hover.png" hash="e3df4faf0450feaa2aed503dbf6759df"/><file name="delete-raw.png" hash="09806aed8283ae6168ecfdcec8237881"/><file name="delete-red.png" hash="c070eaad8207d3fe4e839b0f63deb68c"/><file name="delete.png" hash="b45f9d0e4d1fd160dbaa6ec41559f369"/><file name="detect.png" hash="9b6980d0bbd7ea6bded8ad05be4db7dd"/><file name="down-arrow.png" hash="3d1e707e03353aa01ac7f66610214c6b"/><file name="down-black.png" hash="80236500f0e70d2312b12a0d15e5fa81"/><file name="down-gray.png" hash="160e694e54afdc73edf828e4f02f5945"/><file name="dropdown-arrow.png" hash="4450401ccb623ec2a0ccae215e8b2a63"/><file name="edit-magento.png" hash="043c35fcd4396838a0db85d8d93aed04"/><file name="edit.png" hash="043c35fcd4396838a0db85d8d93aed04"/><file name="eye-hover.png" hash="cf7047c5218c147959a7afc282c01568"/><file name="eye.png" hash="b7a4815cce6e051a785f417f0ecb3427"/><file name="favicon.png" hash="402ca129cd67c7601ea429310c6aa2f5"/><file name="fill.png" hash="4bb20f0886094d62ac0c741edcc03742"/><file name="group-arrow.png" hash="89eba421d4e2a3f83e47e00f26e80888"/><file name="help.png" hash="94b200dfffcdb8ded1429791c2d22b8c"/><file name="icon-analytics.png" hash="4e62393fa4013bdc4e134b469dcd280b"/><file name="icon-info.png" hash="52c2f72d690d0f979afcb5a712b34c3c"/><file name="icon-widget.png" hash="8d6ed9abd86d3095993b4ca773bfdbc3"/><file name="install.png" hash="b284e88eb06554283ef98d6f50836e46"/><file name="integration-gray.png" hash="0fc90ad557b62f693098d862d5599085"/><file name="introduction-gray.png" hash="092fce8aa83ab7bcdb9b7a7a62b4a7d6"/><file name="left-black.png" hash="24b87ee6bf514b8666b12d7d9297eb4e"/><file name="left-gray.png" hash="e53e0389cd719dd5aed2ad6017d32b0e"/><file name="level-arrow-active.png" hash="56bbbf4701324c79e111a36abc235092"/><file name="level-arrow.png" hash="5861fea9a80e3c4fcc14210569d7effa"/><file name="link-arrow.png" hash="21354972164f512795bf1f54c6a71f3f"/><file name="loader-16x16.gif" hash="778e6b9e73274330dae0dab8104948a0"/><file name="loader-24x24.gif" hash="e403534956d055d636b3a5fa813b82b7"/><file name="loader-32x32.gif" hash="009c5064d779a3c67a202f299bd5d301"/><file name="loader.gif" hash="fd1345456c4a685afb42b67c25354ca2"/><file name="loader_black.gif" hash="5bfd8de3193a5fc2e5b472f57df1408f"/><file name="lock-image.jpg" hash="e80f8aa765e8ea121b056e188651629b"/><file name="logo-unbxd.png" hash="0b6c4b8887f8d57577023d8ddc1fa951"/><file name="logo.png" hash="27fa979ee65c84aefd15ffd6cc973e4d"/><file name="mail-new.png" hash="831e8c8c1eba8f4733d1d1e44a8c6549"/><file name="mail.png" hash="1cf907fd4c5d98230c7c2b89d6ff235f"/><file name="minus.jpg" hash="bdddd9b0d971d461a7e472b5bf38bfce"/><file name="nav-highlight-arrow.png" hash="64f6ae56f54568594d04df5c80ce069c"/><file name="not-detected.png" hash="59d0c0115b4b9f192eb4a77f22ce1609"/><file name="oops.png" hash="0735ac87c8e81325be4dc901ba354937"/><file name="or.png" hash="64c351e685fdb8339b7c7857ff14f56d"/><file name="other-gray.png" hash="646b84e4629dfadf3163bc9cd1aa83de"/><file name="overview-gray.png" hash="498e242cdd5b738d088d7ed4ae6c8e3e"/><file name="plus.jpg" hash="a8b80b4d5eee0ad842ce22ee7ea4c752"/><file name="question-mark2.jpg" hash="de9555459f3b9c93482c4a6061fea66b"/><file name="red-cross.png" hash="4213a8ee001ae75166d270be44b199a0"/><file name="red-loading.gif" hash="e644579431a4666564d92ec62c7c74e2"/><file name="remove.png" hash="401b59fb5aed9c68e5f1b3e47fe6ea60"/><file name="right-black.png" hash="fce5a7892866ef65e91fb006b1959c21"/><file name="right-gray.png" hash="b09daca9ca3c40451de0d62fbadd3cf6"/><file name="save.png" hash="fd61c5589c9fabe20a988121822ef81a"/><file name="search.png" hash="71829ed3818c8832469c46d1f9203be0"/><file name="settings.png" hash="9dd7ca159584c09c41717c578f8aa1f6"/><file name="shopify.png" hash="93d8d9c1dd93680819fd642f9136b07c"/><file name="site-dropdownarrow-down.png" hash="c4c89958d88c58785c15e11c83bf0c4a"/><file name="site-dropdownarrow-up.png" hash="f52281c034fdc67f339efeab9127ddfc"/><file name="slider-bg.png" hash="242bb276022f24fc7ac71b181dd34e36"/><file name="slider-button.png" hash="4d17b9bd17415f9df5ccfafefcd32a24"/><file name="sort-arrow-blue-down.png" hash="1fd1bfd16d5f3a9c15017248a7d7f0e0"/><file name="sort-arrow-blue-up.png" hash="24eee605bc0fc9432b7b499633a6c7bc"/><file name="sort-arrow-grey-down.png" hash="b64554cc698560bb38bb43a7a6480dd3"/><file name="sort-arrow-grey-up.png" hash="d14911ddaef0a4de79b1a4a54efbf68b"/><file name="spree.png" hash="119dbad2cfa857a786d746158b9f36f0"/><file name="start-gray.png" hash="fe86f1b188d5b3f0f375421aa5435939"/><file name="step-arrow.png" hash="167c9a25eda4cd9bb4d88762883ba47d"/><file name="success.png" hash="4a8d69083fc4447d9c4ae9bdcc6560ce"/><file name="tick-analytics.png" hash="da1c588c876b2ea12bede76ef17ca1ff"/><file name="tick-green.png" hash="5108aa311b8e64e8f69642a53e4d3506"/><file name="tick-pricing.png" hash="42b0c3bb2c8e270833b0856360722124"/><file name="tick.png" hash="a5bb66f590af2746711bfdefe3b37d7a"/><file name="tooltip-left-arrow.jpg" hash="90143af415043466956e264b5e9a5910"/><file name="tooltip.png" hash="39a75f32b4b78b07033635f14a182124"/><file name="up-arrow.png" hash="f3d15dec451c405decfbc6d3a3fa7696"/><file name="up-black.png" hash="e77b8b75ecf6e5e63eed7fbb84c265a3"/><file name="up-gray.png" hash="0c721f2f05c729e07bd22a0a90f51ab0"/><file name="user.png" hash="ad7be0166b1484d9ff9e1d2708c83a71"/><file name="warning.png" hash="43e8ab0f26ce3ecf8ecdd162a8c8f366"/><file name="x-widget.png" hash="f000d6861e99a51e5ea2fdf68e0e0910"/><file name="x.png" hash="c517855b1803534e2bcecc9ed50808a9"/></dir><dir name="js"><file name="app.js" hash="1c3471987e5be5ace7123f78f8b03a1a"/><dir name="lib"><file name="bootstrap-tooltip.js" hash="304bf569ee1a25e8fae5532d90661662"/><file name="chosen.js" hash="4fabe14fb10d99c4b432db5ce9847c06"/><file name="ractive-chosen.js" hash="837381e6e428a7fa2b9f8f67c974d195"/><file name="ractive.js" hash="4887bb0d23f93ca78c46d2a7420cd360"/></dir></dir><dir name="templates"><file name="analytics.html" hash="da19669a14ed437b0c58432be8038d48"/><file name="catalog.html" hash="f28db907a27cd4d74a03b889db52630e"/><file name="credentails.html" hash="0d76fa9f2f9968899e060ec4302eee93"/><file name="custom.html" hash="4a4154b74c4ebbfde132857684c92e60"/><file name="widgets.html" hash="561c36872e61002383d5e0b066a75045"/></dir></dir></dir></dir></dir></dir><dir name="js"><dir name="unbxd"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="86c5eb1f59040a9e26bf34eb721c466c"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Recommendation.xml" hash="8ea2aaae2654aa0caf10fa3b326fcdb0"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|
shell/UnbxdFeed.php
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
require_once 'abstract.php';
|
3 |
-
|
4 |
-
class Unbxd_Datafeeder_Scripts_UnbxdFeed extends Mage_Shell_Abstract
|
5 |
-
{
|
6 |
-
|
7 |
-
public function _getIndexer()
|
8 |
-
{
|
9 |
-
return Mage::helper('unbxd_datafeeder/UnbxdIndexingHelper');
|
10 |
-
}
|
11 |
-
|
12 |
-
public function run(){
|
13 |
-
$_helper = $this->_getIndexer();
|
14 |
-
$fromdate="1970-01-01 00:00:00";
|
15 |
-
$site='Main Website';
|
16 |
-
|
17 |
-
$_helper->indexUnbxdFeed($fromdate,$site);
|
18 |
-
}
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
|
23 |
-
$shell = new Unbxd_Datafeeder_Scripts_UnbxdFeed();
|
24 |
-
$shell->run();
|
25 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
skin/adminhtml/default/default/unbxd/css/app.css
ADDED
@@ -0,0 +1,7773 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Grid containing columns of 20px each*/
|
2 |
+
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-13, .col-xs-14, .col-xs-15, .col-xs-16, .col-xs-17, .col-xs-18, .col-xs-19, .col-xs-20, .col-xs-21, .col-xs-22, .col-xs-23, .col-xs-24, .col-xs-25, .col-xs-26, .col-xs-27, .col-xs-28, .col-xs-29, .col-xs-30, .col-xs-31, .col-xs-32, .col-xs-33, .col-xs-34, .col-xs-35, .col-xs-36, .col-xs-37, .col-xs-38, .col-xs-39, .col-xs-40, .col-xs-41, .col-xs-42, .col-xs-43, .col-xs-44, .col-xs-45, .col-xs-46, .col-xs-47, .col-xs-48, .col-xs-49, .col-xs-50, .col-xs-51, .col-xs-52, .col-xs-53, .col-xs-54, .col-xs-55, .col-xs-56, .col-xs-57, .col-xs-58, .col-xs-59, .col-xs-60, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-13, .col-sm-14, .col-sm-15, .col-sm-16, .col-sm-17, .col-sm-18, .col-sm-19, .col-sm-20, .col-sm-21, .col-sm-22, .col-sm-23, .col-sm-24, .col-sm-25, .col-sm-26, .col-sm-27, .col-sm-28, .col-sm-29, .col-sm-30, .col-sm-31, .col-sm-32, .col-sm-33, .col-sm-34, .col-sm-35, .col-sm-36, .col-sm-37, .col-sm-38, .col-sm-39, .col-sm-40, .col-sm-41, .col-sm-42, .col-sm-43, .col-sm-44, .col-sm-45, .col-sm-46, .col-sm-47, .col-sm-48, .col-sm-49, .col-sm-50, .col-sm-51, .col-sm-52, .col-sm-53, .col-sm-54, .col-sm-55, .col-sm-56, .col-sm-57, .col-sm-58, .col-sm-59, .col-sm-60, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-13, .col-md-14, .col-md-15, .col-md-16, .col-md-17, .col-md-18, .col-md-19, .col-md-20, .col-md-21, .col-md-22, .col-md-23, .col-md-24, .col-md-25, .col-md-26, .col-md-27, .col-md-28, .col-md-29, .col-md-30, .col-md-31, .col-md-32, .col-md-33, .col-md-34, .col-md-35, .col-md-36, .col-md-37, .col-md-38, .col-md-39, .col-md-40, .col-md-41, .col-md-42, .col-md-43, .col-md-44, .col-md-45, .col-md-46, .col-md-47, .col-md-48, .col-md-49, .col-md-50, .col-md-51, .col-md-52, .col-md-53, .col-md-54, .col-md-55, .col-md-56, .col-md-57, .col-md-58, .col-md-59, .col-md-60, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-13, .col-lg-14, .col-lg-15, .col-lg-16, .col-lg-17, .col-lg-18, .col-lg-19, .col-lg-20, .col-lg-21, .col-lg-22, .col-lg-23, .col-lg-24, .col-lg-25, .col-lg-26, .col-lg-27, .col-lg-28, .col-lg-29, .col-lg-30, .col-lg-31, .col-lg-32, .col-lg-33, .col-lg-34, .col-lg-35, .col-lg-36, .col-lg-37, .col-lg-38, .col-lg-39, .col-lg-40, .col-lg-41, .col-lg-42, .col-lg-43, .col-lg-44, .col-lg-45, .col-lg-46, .col-lg-47, .col-lg-48, .col-lg-49, .col-lg-50, .col-lg-51, .col-lg-52, .col-lg-53, .col-lg-54, .col-lg-55, .col-lg-56, .col-lg-57, .col-lg-58, .col-lg-59, .col-lg-60 {
|
3 |
+
position: relative;
|
4 |
+
min-height: 1px;
|
5 |
+
padding-right: 15px;
|
6 |
+
padding-left: 15px;
|
7 |
+
}
|
8 |
+
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-13, .col-xs-14, .col-xs-15, .col-xs-16, .col-xs-17, .col-xs-18, .col-xs-19, .col-xs-20, .col-xs-21, .col-xs-22, .col-xs-23, .col-xs-24, .col-xs-25, .col-xs-26, .col-xs-27, .col-xs-28, .col-xs-29, .col-xs-30, .col-xs-31, .col-xs-32, .col-xs-33, .col-xs-34, .col-xs-35, .col-xs-36, .col-xs-37, .col-xs-38, .col-xs-39, .col-xs-40, .col-xs-41, .col-xs-42, .col-xs-43, .col-xs-44, .col-xs-45, .col-xs-46, .col-xs-47, .col-xs-48, .col-xs-49, .col-xs-50, .col-xs-51, .col-xs-52, .col-xs-53, .col-xs-54, .col-xs-55, .col-xs-56, .col-xs-57, .col-xs-58, .col-xs-59 {
|
9 |
+
float: left;
|
10 |
+
}
|
11 |
+
.col-xs-1 {
|
12 |
+
width: 1.666666666666667%;
|
13 |
+
}
|
14 |
+
.col-xs-2 {
|
15 |
+
width: 3.333333333333333%;
|
16 |
+
}
|
17 |
+
.col-xs-3 {
|
18 |
+
width: 5%;
|
19 |
+
}
|
20 |
+
.col-xs-4 {
|
21 |
+
width: 6.666666666666667%;
|
22 |
+
}
|
23 |
+
.col-xs-5 {
|
24 |
+
width: 8.333333333333333%;
|
25 |
+
}
|
26 |
+
.col-xs-6 {
|
27 |
+
width: 10%;
|
28 |
+
}
|
29 |
+
.col-xs-7 {
|
30 |
+
width: 11.66666666666667%;
|
31 |
+
}
|
32 |
+
.col-xs-8 {
|
33 |
+
width: 13.33333333333333%;
|
34 |
+
}
|
35 |
+
.col-xs-9 {
|
36 |
+
width: 15%;
|
37 |
+
}
|
38 |
+
.col-xs-10 {
|
39 |
+
width: 16.66666666666667%;
|
40 |
+
}
|
41 |
+
.col-xs-11 {
|
42 |
+
width: 18.33333333333333%;
|
43 |
+
}
|
44 |
+
.col-xs-12 {
|
45 |
+
width: 20%;
|
46 |
+
}
|
47 |
+
.col-xs-13 {
|
48 |
+
width: 21.66666666666667%;
|
49 |
+
}
|
50 |
+
.col-xs-14 {
|
51 |
+
width: 23.33333333333333%;
|
52 |
+
}
|
53 |
+
.col-xs-15 {
|
54 |
+
width: 25%;
|
55 |
+
}
|
56 |
+
.col-xs-16 {
|
57 |
+
width: 26.66666666666667%;
|
58 |
+
}
|
59 |
+
.col-xs-17 {
|
60 |
+
width: 28.33333333333333%;
|
61 |
+
}
|
62 |
+
.col-xs-18 {
|
63 |
+
width: 30%;
|
64 |
+
}
|
65 |
+
.col-xs-19 {
|
66 |
+
width: 31.66666666666667%;
|
67 |
+
}
|
68 |
+
.col-xs-20 {
|
69 |
+
width: 33.33333333333333%;
|
70 |
+
}
|
71 |
+
.col-xs-21 {
|
72 |
+
width: 35%;
|
73 |
+
}
|
74 |
+
.col-xs-22 {
|
75 |
+
width: 36.66666666666667%;
|
76 |
+
}
|
77 |
+
.col-xs-23 {
|
78 |
+
width: 38.33333333333333%;
|
79 |
+
}
|
80 |
+
.col-xs-24 {
|
81 |
+
width: 40%;
|
82 |
+
}
|
83 |
+
.col-xs-25 {
|
84 |
+
width: 41.66666666666667%;
|
85 |
+
}
|
86 |
+
.col-xs-26 {
|
87 |
+
width: 43.33333333333333%;
|
88 |
+
}
|
89 |
+
.col-xs-27 {
|
90 |
+
width: 45%;
|
91 |
+
}
|
92 |
+
.col-xs-28 {
|
93 |
+
width: 46.66666666666667%;
|
94 |
+
}
|
95 |
+
.col-xs-29 {
|
96 |
+
width: 48.33333333333333%;
|
97 |
+
}
|
98 |
+
.col-xs-30 {
|
99 |
+
width: 50%;
|
100 |
+
}
|
101 |
+
.col-xs-31 {
|
102 |
+
width: 51.66666666666667%;
|
103 |
+
}
|
104 |
+
.col-xs-32 {
|
105 |
+
width: 53.33333333333333%;
|
106 |
+
}
|
107 |
+
.col-xs-33 {
|
108 |
+
width: 55%;
|
109 |
+
}
|
110 |
+
.col-xs-34 {
|
111 |
+
width: 56.66666666666667%;
|
112 |
+
}
|
113 |
+
.col-xs-35 {
|
114 |
+
width: 58.33333333333333%;
|
115 |
+
}
|
116 |
+
.col-xs-36 {
|
117 |
+
width: 60%;
|
118 |
+
}
|
119 |
+
.col-xs-37 {
|
120 |
+
width: 61.66666666666667%;
|
121 |
+
}
|
122 |
+
.col-xs-38 {
|
123 |
+
width: 63.33333333333333%;
|
124 |
+
}
|
125 |
+
.col-xs-39 {
|
126 |
+
width: 65%;
|
127 |
+
}
|
128 |
+
.col-xs-40 {
|
129 |
+
width: 66.66666666666667%;
|
130 |
+
}
|
131 |
+
.col-xs-41 {
|
132 |
+
width: 68.33333333333333%;
|
133 |
+
}
|
134 |
+
.col-xs-42 {
|
135 |
+
width: 70%;
|
136 |
+
}
|
137 |
+
.col-xs-43 {
|
138 |
+
width: 71.66666666666667%;
|
139 |
+
}
|
140 |
+
.col-xs-44 {
|
141 |
+
width: 73.33333333333333%;
|
142 |
+
}
|
143 |
+
.col-xs-45 {
|
144 |
+
width: 75%;
|
145 |
+
}
|
146 |
+
.col-xs-46 {
|
147 |
+
width: 76.66666666666667%;
|
148 |
+
}
|
149 |
+
.col-xs-47 {
|
150 |
+
width: 78.33333333333333%;
|
151 |
+
}
|
152 |
+
.col-xs-48 {
|
153 |
+
width: 80%;
|
154 |
+
}
|
155 |
+
.col-xs-49 {
|
156 |
+
width: 81.66666666666667%;
|
157 |
+
}
|
158 |
+
.col-xs-50 {
|
159 |
+
width: 83.33333333333333%;
|
160 |
+
}
|
161 |
+
.col-xs-51 {
|
162 |
+
width: 85%;
|
163 |
+
}
|
164 |
+
.col-xs-52 {
|
165 |
+
width: 86.66666666666667%;
|
166 |
+
}
|
167 |
+
.col-xs-53 {
|
168 |
+
width: 88.33333333333333%;
|
169 |
+
}
|
170 |
+
.col-xs-54 {
|
171 |
+
width: 90%;
|
172 |
+
}
|
173 |
+
.col-xs-55 {
|
174 |
+
width: 91.66666666666667%;
|
175 |
+
}
|
176 |
+
.col-xs-56 {
|
177 |
+
width: 93.33333333333333%;
|
178 |
+
}
|
179 |
+
.col-xs-57 {
|
180 |
+
width: 95%;
|
181 |
+
}
|
182 |
+
.col-xs-58 {
|
183 |
+
width: 96.66666666666667%;
|
184 |
+
}
|
185 |
+
.col-xs-59 {
|
186 |
+
width: 98.33333333333333%;
|
187 |
+
}
|
188 |
+
.col-xs-60 {
|
189 |
+
width: 100%;
|
190 |
+
}
|
191 |
+
/*common mobile*/
|
192 |
+
.blue-link {
|
193 |
+
font-size: 14px;
|
194 |
+
font-weight: bold;
|
195 |
+
}
|
196 |
+
.txt-center {
|
197 |
+
text-align: center;
|
198 |
+
}
|
199 |
+
.fixed-width-340 {
|
200 |
+
width: 340px !important;
|
201 |
+
float: none;
|
202 |
+
margin: 0px auto;
|
203 |
+
}
|
204 |
+
.fixed-width-520 {
|
205 |
+
margin: 0px auto;
|
206 |
+
float: none;
|
207 |
+
}
|
208 |
+
.fixed-width-580 {
|
209 |
+
margin: 0px auto;
|
210 |
+
float: none;
|
211 |
+
}
|
212 |
+
.fixed-width-680 {
|
213 |
+
float: none;
|
214 |
+
margin: 0px auto;
|
215 |
+
}
|
216 |
+
label.label-radio, label.label-checkbox {
|
217 |
+
display: inline-block;
|
218 |
+
cursor: pointer;
|
219 |
+
position: relative;
|
220 |
+
padding-left: 30px;
|
221 |
+
font-size: 14px;
|
222 |
+
font-family: Helvetica, Arial, sans-serif;
|
223 |
+
color: #1a1c1c;
|
224 |
+
}
|
225 |
+
label.label-radio.inactive, label.label-checkbox.inactive {
|
226 |
+
cursor: default;
|
227 |
+
}
|
228 |
+
input[type="radio"], input[type="checkbox"] {
|
229 |
+
display: none;
|
230 |
+
}
|
231 |
+
label.label-radio:before, label.label-checkbox:before {
|
232 |
+
content: "";
|
233 |
+
display: inline-block;
|
234 |
+
width: 17px;
|
235 |
+
height: 17px;
|
236 |
+
margin-right: 10px;
|
237 |
+
position: absolute;
|
238 |
+
left: 0;
|
239 |
+
bottom: 1px;
|
240 |
+
background-color: #fff;
|
241 |
+
border: 1px solid #d2cdcd;
|
242 |
+
top: 1px;
|
243 |
+
}
|
244 |
+
.radio-outer label.label-radio:before {
|
245 |
+
border-radius: 10px;
|
246 |
+
}
|
247 |
+
input[type=radio]:checked + label.label-radio:before {
|
248 |
+
content: "\2022";
|
249 |
+
color: #45b5c1;
|
250 |
+
font-size: 40px;
|
251 |
+
text-align: center;
|
252 |
+
vertical-align: middle;
|
253 |
+
line-height: 16px;
|
254 |
+
}
|
255 |
+
.checkbox-outer label.label-checkbox:before {
|
256 |
+
border-radius: 3px;
|
257 |
+
}
|
258 |
+
input[type=checkbox]:checked + label.label-checkbox:before {
|
259 |
+
background: url('../img/tick.png') no-repeat 25%;
|
260 |
+
/* content: "\2713";
|
261 |
+
font-size: 15px;
|
262 |
+
color: #45b5c1;
|
263 |
+
text-align: center;
|
264 |
+
line-height: 15px; */
|
265 |
+
}
|
266 |
+
label
|
267 |
+
{
|
268 |
+
margin-bottom:0px ;
|
269 |
+
}
|
270 |
+
.label-checkbox-blue {
|
271 |
+
font-weight: normal;
|
272 |
+
color: #1496a6 !important;
|
273 |
+
font-size: 13px !important;
|
274 |
+
font-weight: bold;
|
275 |
+
padding-left: 24px !important;
|
276 |
+
padding-top: 1px;
|
277 |
+
margin-bottom:0px !important;
|
278 |
+
}
|
279 |
+
|
280 |
+
.txt-cntr {
|
281 |
+
text-align: center;
|
282 |
+
}
|
283 |
+
.txt-rgt {
|
284 |
+
text-align: right;
|
285 |
+
}
|
286 |
+
.login-label-12 {
|
287 |
+
text-align: left;
|
288 |
+
width: 340px;
|
289 |
+
font-size: 12px;
|
290 |
+
font-weight: bold;
|
291 |
+
margin-bottom: 10px;
|
292 |
+
color: #515555;
|
293 |
+
}
|
294 |
+
.input-label {
|
295 |
+
float: left;
|
296 |
+
width: 340px;
|
297 |
+
border-top: 1px solid #bbb;
|
298 |
+
border-top-left-radius: 4px;
|
299 |
+
border-top-right-radius: 4px;
|
300 |
+
}
|
301 |
+
|
302 |
+
.input-inner {
|
303 |
+
width: 340px;
|
304 |
+
height: 40px;
|
305 |
+
border: 1px solid #e4dddd;
|
306 |
+
border-radius: 4px;
|
307 |
+
background-color: #fcfcfc;
|
308 |
+
padding-left: 10px;
|
309 |
+
font-size: 16px;
|
310 |
+
color: #1a1c1c;
|
311 |
+
}
|
312 |
+
.eye-icon {
|
313 |
+
background: #fcfcfc url('../img/eye-hover.png') no-repeat 97%;
|
314 |
+
cursor: pointer;
|
315 |
+
}
|
316 |
+
.eye-icon:hover {
|
317 |
+
background-image: url('../img/eye.png');
|
318 |
+
}
|
319 |
+
.login-label-new {
|
320 |
+
text-align: left;
|
321 |
+
width: 320px;
|
322 |
+
font-size: 13px;
|
323 |
+
font-weight: bold;
|
324 |
+
margin-bottom: 10px;
|
325 |
+
color: #515555;
|
326 |
+
}
|
327 |
+
.login-label-gray {
|
328 |
+
text-align: left;
|
329 |
+
width: 320px;
|
330 |
+
font-size: 13px;
|
331 |
+
font-weight: bold;
|
332 |
+
margin-bottom: 10px;
|
333 |
+
color: #abb4b4;
|
334 |
+
}
|
335 |
+
.login-text {
|
336 |
+
width: 320px;
|
337 |
+
font-size: 18px;
|
338 |
+
color: #1a1c1c;
|
339 |
+
}
|
340 |
+
.input-label-1 {
|
341 |
+
|
342 |
+
width: 75px;
|
343 |
+
border-top: 1px solid #cecece;
|
344 |
+
border-top-left-radius: 4px;
|
345 |
+
border-top-right-radius: 4px;
|
346 |
+
}
|
347 |
+
|
348 |
+
.input-inner-1 {
|
349 |
+
width: 75px;
|
350 |
+
height: 40px;
|
351 |
+
border: 1px solid #ece7e7;
|
352 |
+
border-radius: 4px;
|
353 |
+
background-color: #fdfdfd;
|
354 |
+
font-size: 16px;
|
355 |
+
color: #1a1c1c;
|
356 |
+
}
|
357 |
+
.input-inner-new {
|
358 |
+
width: 320px;
|
359 |
+
height: 40px;
|
360 |
+
border: 1px solid #dde2e4;
|
361 |
+
border-radius: 4px;
|
362 |
+
background-color: #fcfcfc;
|
363 |
+
padding-left: 10px;
|
364 |
+
font-size: 16px;
|
365 |
+
color: #1a1c1c;
|
366 |
+
}
|
367 |
+
.font-18 {
|
368 |
+
font-size: 18px !important;
|
369 |
+
}
|
370 |
+
.font-25 {
|
371 |
+
font-size: 25px !important;
|
372 |
+
}
|
373 |
+
.back-white {
|
374 |
+
background-color: #fff !important;
|
375 |
+
}
|
376 |
+
.back-black {
|
377 |
+
background-color: #1a1c1c !important;
|
378 |
+
}
|
379 |
+
.full-width {
|
380 |
+
width: 100%;
|
381 |
+
}
|
382 |
+
.fixed-width-700 {
|
383 |
+
margin: 0px auto;
|
384 |
+
float: none;
|
385 |
+
}
|
386 |
+
.fixed-width-730 {
|
387 |
+
margin: 0px auto;
|
388 |
+
float: none;
|
389 |
+
}
|
390 |
+
.fixed-width-800 {
|
391 |
+
margin: 0px auto;
|
392 |
+
float: none;
|
393 |
+
}
|
394 |
+
.fixed-width-940 {
|
395 |
+
margin: 0px auto;
|
396 |
+
float: none;
|
397 |
+
}
|
398 |
+
.fixed-width-980 {
|
399 |
+
margin: 0px auto;
|
400 |
+
float: none;
|
401 |
+
}
|
402 |
+
.fixed-width-1080 {
|
403 |
+
margin: 0px auto;
|
404 |
+
float: none;
|
405 |
+
}
|
406 |
+
.fixed-width-1140 {
|
407 |
+
margin: 0px auto;
|
408 |
+
float: none;
|
409 |
+
}
|
410 |
+
.mar-0 {
|
411 |
+
margin: 0;
|
412 |
+
}
|
413 |
+
.pad-0 {
|
414 |
+
padding: 0;
|
415 |
+
}
|
416 |
+
.pad-top-5 {
|
417 |
+
padding-top: 5px;
|
418 |
+
}
|
419 |
+
.pad-top-9 {
|
420 |
+
padding-top: 9px;
|
421 |
+
}
|
422 |
+
.pad-top-10 {
|
423 |
+
padding-top: 10px;
|
424 |
+
}
|
425 |
+
.pad-top-20 {
|
426 |
+
padding-top: 20px !important;
|
427 |
+
}
|
428 |
+
.pad-top-40 {
|
429 |
+
padding-top: 40px;
|
430 |
+
}
|
431 |
+
.pad-top-60 {
|
432 |
+
padding-top: 60px;
|
433 |
+
}
|
434 |
+
.pad-top-70 {
|
435 |
+
padding-top: 70px;
|
436 |
+
}
|
437 |
+
.pad-top-80 {
|
438 |
+
padding-top: 80px;
|
439 |
+
}
|
440 |
+
.pad-top-90 {
|
441 |
+
padding-top: 90px;
|
442 |
+
}
|
443 |
+
.pad-rgt-0 {
|
444 |
+
padding-right: 0px !important;
|
445 |
+
}
|
446 |
+
.pad-rgt-7 {
|
447 |
+
padding-right: 7px;
|
448 |
+
}
|
449 |
+
.pad-rgt-20 {
|
450 |
+
padding-right: 20px !important;
|
451 |
+
}
|
452 |
+
.pad-rgt-40 {
|
453 |
+
padding-right: 40px !important;
|
454 |
+
}
|
455 |
+
.pad-rgt-60 {
|
456 |
+
padding-right: 60px !important;
|
457 |
+
}
|
458 |
+
.pad-btm-8 {
|
459 |
+
padding-bottom: 8px;
|
460 |
+
}
|
461 |
+
.pad-btm-10 {
|
462 |
+
padding-bottom: 10px;
|
463 |
+
}
|
464 |
+
.pad-btm-20 {
|
465 |
+
padding-bottom: 20px;
|
466 |
+
}
|
467 |
+
.pad-btm-40 {
|
468 |
+
padding-bottom: 40px;
|
469 |
+
}
|
470 |
+
.pad-lft-0 {
|
471 |
+
padding-left: 0px;
|
472 |
+
}
|
473 |
+
.pad-lft-20 {
|
474 |
+
padding-left: 20px;
|
475 |
+
}
|
476 |
+
.pad-btm-30 {
|
477 |
+
padding-bottom: 30px;
|
478 |
+
}
|
479 |
+
.mar-0 {
|
480 |
+
margin: 0;
|
481 |
+
}
|
482 |
+
.mar-top-5 {
|
483 |
+
margin-top: 5px;
|
484 |
+
}
|
485 |
+
.mar-top-6 {
|
486 |
+
margin-top: 6px;
|
487 |
+
}
|
488 |
+
.mar-top-10 {
|
489 |
+
margin-top: 10px;
|
490 |
+
}
|
491 |
+
.mar-top-25 {
|
492 |
+
margin-top: 25px;
|
493 |
+
}
|
494 |
+
.mar-top-28 {
|
495 |
+
margin-top: 28px;
|
496 |
+
}
|
497 |
+
.mar-top-40 {
|
498 |
+
margin-top: 40px;
|
499 |
+
}
|
500 |
+
.mar-top-60 {
|
501 |
+
margin-top: 60px;
|
502 |
+
}
|
503 |
+
.mar-rgt-0
|
504 |
+
{
|
505 |
+
margin-right:0px !important;
|
506 |
+
}
|
507 |
+
.mar-rgt-5 {
|
508 |
+
margin-right: 5px;
|
509 |
+
}
|
510 |
+
.mar-rgt-8 {
|
511 |
+
margin-right: 8px;
|
512 |
+
}
|
513 |
+
.mar-rgt-10 {
|
514 |
+
margin-right: 10px;
|
515 |
+
}
|
516 |
+
.mar-rgt-15 {
|
517 |
+
margin-right: 15px;
|
518 |
+
}
|
519 |
+
.mar-rgt-20 {
|
520 |
+
margin-right: 20px;
|
521 |
+
}
|
522 |
+
.mar-rgt-40 {
|
523 |
+
margin-right: 40px;
|
524 |
+
}
|
525 |
+
.mar-rgt-52 {
|
526 |
+
margin-right: 52px;
|
527 |
+
}
|
528 |
+
.mar-rgt-60 {
|
529 |
+
margin-right: 60px;
|
530 |
+
}
|
531 |
+
.mar-btm-10 {
|
532 |
+
margin-bottom: 10px;
|
533 |
+
}
|
534 |
+
.mar-btm-15 {
|
535 |
+
margin-bottom: 15px;
|
536 |
+
}
|
537 |
+
.mar-btm-20 {
|
538 |
+
margin-bottom: 20px;
|
539 |
+
}
|
540 |
+
.mar-btm-27 {
|
541 |
+
margin-bottom: 27px;
|
542 |
+
}
|
543 |
+
.mar-btm-30 {
|
544 |
+
margin-bottom: 30px !important;
|
545 |
+
}
|
546 |
+
.mar-btm-33 {
|
547 |
+
margin-bottom: 33px;
|
548 |
+
}
|
549 |
+
.mar-btm-40 {
|
550 |
+
margin-bottom: 40px;
|
551 |
+
}
|
552 |
+
.mar-btm-50 {
|
553 |
+
margin-bottom: 50px;
|
554 |
+
}
|
555 |
+
.mar-btm-60 {
|
556 |
+
margin-bottom: 60px;
|
557 |
+
}
|
558 |
+
.mar-btm-70 {
|
559 |
+
margin-bottom: 70px !important;
|
560 |
+
}
|
561 |
+
.mar-btm-80 {
|
562 |
+
margin-bottom: 80px;
|
563 |
+
}
|
564 |
+
.mar-btm-90 {
|
565 |
+
margin-bottom: 90px;
|
566 |
+
}
|
567 |
+
.mar-btm-200 {
|
568 |
+
margin-bottom: 200px;
|
569 |
+
}
|
570 |
+
.mar-lft-10
|
571 |
+
{
|
572 |
+
margin-left:10px;
|
573 |
+
}
|
574 |
+
.mar-lft-30 {
|
575 |
+
margin-left: 30px;
|
576 |
+
}
|
577 |
+
.mar-lft-85 {
|
578 |
+
margin-left: 85px;
|
579 |
+
}
|
580 |
+
.width-70 {
|
581 |
+
width: 70px !important;
|
582 |
+
}
|
583 |
+
.width-75 {
|
584 |
+
width: 75px !important;
|
585 |
+
}
|
586 |
+
.width-80 {
|
587 |
+
width: 80px !important;
|
588 |
+
}
|
589 |
+
.width-90 {
|
590 |
+
width: 90px !important;
|
591 |
+
}
|
592 |
+
.width-95 {
|
593 |
+
width: 95px !important;
|
594 |
+
}
|
595 |
+
.width-105 {
|
596 |
+
width: 105px !important;
|
597 |
+
}
|
598 |
+
.width-110 {
|
599 |
+
width: 110px !important;
|
600 |
+
}
|
601 |
+
.width-120 {
|
602 |
+
width: 120px !important;
|
603 |
+
}
|
604 |
+
.width-125 {
|
605 |
+
width: 125px !important;
|
606 |
+
}
|
607 |
+
.width-140 {
|
608 |
+
width: 140px !important;
|
609 |
+
}
|
610 |
+
|
611 |
+
.width-150 {
|
612 |
+
width: 150px !important;
|
613 |
+
}
|
614 |
+
.width-155 {
|
615 |
+
width: 155px !important;
|
616 |
+
}
|
617 |
+
.width-155 {
|
618 |
+
width: 155px !important;
|
619 |
+
}
|
620 |
+
.width-160 {
|
621 |
+
width: 160px !important;
|
622 |
+
}
|
623 |
+
.width-170 {
|
624 |
+
width: 170px !important;
|
625 |
+
}
|
626 |
+
.width-180 {
|
627 |
+
width: 180px !important;
|
628 |
+
}
|
629 |
+
.width-185 {
|
630 |
+
width: 185px !important;
|
631 |
+
}
|
632 |
+
.width-190 {
|
633 |
+
width: 190px !important;
|
634 |
+
}
|
635 |
+
.width-195 {
|
636 |
+
width: 195px !important;
|
637 |
+
}
|
638 |
+
.width-200 {
|
639 |
+
width: 200px !important;
|
640 |
+
}
|
641 |
+
.width-205 {
|
642 |
+
width: 205px !important;
|
643 |
+
}
|
644 |
+
.width-210 {
|
645 |
+
width: 210px !important;
|
646 |
+
}
|
647 |
+
.width-220 {
|
648 |
+
width: 220px !important;
|
649 |
+
}
|
650 |
+
.width-230 {
|
651 |
+
width: 230px !important;
|
652 |
+
}
|
653 |
+
.width-240 {
|
654 |
+
width: 240px !important;
|
655 |
+
}
|
656 |
+
|
657 |
+
.width-250 {
|
658 |
+
width: 250px !important;
|
659 |
+
}
|
660 |
+
.width-260 {
|
661 |
+
width: 260px !important;
|
662 |
+
}
|
663 |
+
.width-280 {
|
664 |
+
width: 280px !important;
|
665 |
+
}
|
666 |
+
.width-310 {
|
667 |
+
width: 310px !important;
|
668 |
+
}
|
669 |
+
.width-320 {
|
670 |
+
width: 320px !important;
|
671 |
+
}
|
672 |
+
.width-342 {
|
673 |
+
width: 342px !important;
|
674 |
+
}
|
675 |
+
.width-355 {
|
676 |
+
width: 355px !important;
|
677 |
+
}
|
678 |
+
|
679 |
+
.width-360 {
|
680 |
+
width: 360px !important;
|
681 |
+
}
|
682 |
+
|
683 |
+
.width-410 {
|
684 |
+
width: 410px !important;
|
685 |
+
}
|
686 |
+
.width-680 {
|
687 |
+
width: 680px !important;
|
688 |
+
}
|
689 |
+
.brd-btm-gray {
|
690 |
+
border-bottom: 1px solid #dfe2e9;
|
691 |
+
}
|
692 |
+
.brd-btm-gray1 {
|
693 |
+
border-bottom: 1px solid #f1f4f4;
|
694 |
+
}
|
695 |
+
|
696 |
+
.brd-btm-gray2 {
|
697 |
+
border-bottom: 1px solid #e6ebeb;
|
698 |
+
}
|
699 |
+
.brd-btm-gray3 {
|
700 |
+
border-bottom: 1px solid #f3f6f6;
|
701 |
+
}
|
702 |
+
.brd-btm-gray4 {
|
703 |
+
border-bottom: 1px solid #d9dede;
|
704 |
+
}
|
705 |
+
|
706 |
+
.brd-btm-gray5 {
|
707 |
+
border-bottom: 1px solid #eff0f4;
|
708 |
+
}
|
709 |
+
a {
|
710 |
+
text-decoration: none !important;
|
711 |
+
}
|
712 |
+
a:hover {
|
713 |
+
color: #1a1c1c !important;
|
714 |
+
}
|
715 |
+
.main-container {
|
716 |
+
width: 900px;
|
717 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif;
|
718 |
+
float: left;
|
719 |
+
}
|
720 |
+
.inner-container {
|
721 |
+
padding: 8px 40px 40px 40px;
|
722 |
+
}
|
723 |
+
.button-blue {
|
724 |
+
|
725 |
+
border-top: 3px solid #4fc1cb;
|
726 |
+
border-bottom: 3px solid #36a4b2;
|
727 |
+
background: #45b5c1 url('../img/button-arrow-blue.png') no-repeat 84%;
|
728 |
+
-webkit-border-radius: 5px;
|
729 |
+
-moz-border-radius: 5px;
|
730 |
+
border-radius: 5px;
|
731 |
+
color: #ffffff !important;
|
732 |
+
font-size: 18px;
|
733 |
+
text-decoration: none;
|
734 |
+
vertical-align: middle;
|
735 |
+
height: 40px;
|
736 |
+
border-right: none;
|
737 |
+
border-left: none;
|
738 |
+
font-weight: medium;
|
739 |
+
text-align: center;
|
740 |
+
display: table-cell;
|
741 |
+
cursor: pointer;
|
742 |
+
}
|
743 |
+
.button-blue:hover {
|
744 |
+
border-top: 3px solid #68c3cc;
|
745 |
+
border-bottom: 3px solid #50b1bc;
|
746 |
+
background: #54bbc6 url('../img/button-arrow-blue.png') no-repeat 84%;
|
747 |
+
}
|
748 |
+
.button-blue:active {
|
749 |
+
border-top: 3px solid #359dab;
|
750 |
+
background: #42adb9 url('../img/button-arrow-blue.png') no-repeat 84%;
|
751 |
+
border-bottom: none;
|
752 |
+
}
|
753 |
+
.button-gray {
|
754 |
+
padding-top: 3px;
|
755 |
+
background-color: #babfbf;
|
756 |
+
-webkit-border-radius: 2px;
|
757 |
+
-moz-border-radius: 2px;
|
758 |
+
border-radius: 2px;
|
759 |
+
color: #fff !important;
|
760 |
+
font-size: 13px;
|
761 |
+
height: 25px;
|
762 |
+
text-decoration: none;
|
763 |
+
vertical-align: middle;
|
764 |
+
font-weight: bold;
|
765 |
+
border-right: none;
|
766 |
+
border-left: none;
|
767 |
+
text-align: center;
|
768 |
+
float: none;
|
769 |
+
}
|
770 |
+
.button-gray-arrow {
|
771 |
+
padding-top: 3px;
|
772 |
+
background: #babfbf url('../img/arrow-left-white.jpg') no-repeat 12%;
|
773 |
+
-webkit-border-radius: 2px;
|
774 |
+
-moz-border-radius: 2px;
|
775 |
+
border-radius: 2px;
|
776 |
+
color: #fff !important;
|
777 |
+
font-size: 13px;
|
778 |
+
height: 25px;
|
779 |
+
text-decoration: none;
|
780 |
+
vertical-align: middle;
|
781 |
+
font-weight: bold;
|
782 |
+
border-right: none;
|
783 |
+
border-left: none;
|
784 |
+
text-align: center;
|
785 |
+
float: none;
|
786 |
+
}
|
787 |
+
.button-gray1 {
|
788 |
+
padding-top: 3px;
|
789 |
+
background-color: #dfe6e6;
|
790 |
+
-webkit-border-radius: 2px;
|
791 |
+
-moz-border-radius: 2px;
|
792 |
+
border-radius: 2px;
|
793 |
+
color: #fff !important;
|
794 |
+
font-size: 13px;
|
795 |
+
height: 25px;
|
796 |
+
text-decoration: none;
|
797 |
+
vertical-align: middle;
|
798 |
+
font-weight: bold;
|
799 |
+
border-right: none;
|
800 |
+
border-left: none;
|
801 |
+
text-align: center;
|
802 |
+
float: none;
|
803 |
+
}
|
804 |
+
.button-white {
|
805 |
+
background: #fff;
|
806 |
+
-webkit-border-radius: 2px;
|
807 |
+
-moz-border-radius: 2px;
|
808 |
+
border-radius: 2px;
|
809 |
+
color: #818181 !important;
|
810 |
+
text-decoration: none;
|
811 |
+
border-right: none;
|
812 |
+
border-left: none;
|
813 |
+
font-size: 12px;
|
814 |
+
text-align: center;
|
815 |
+
padding-top: 2px;
|
816 |
+
height: 20px;
|
817 |
+
width: 84px;
|
818 |
+
cursor: pointer;
|
819 |
+
float: right;
|
820 |
+
border: 1px solid #e1e2e7;
|
821 |
+
}
|
822 |
+
.button-blue1 {
|
823 |
+
border-top: 3px solid #5bbec8;
|
824 |
+
border-bottom: 3px solid #41aab6;
|
825 |
+
background: #45b5c1;
|
826 |
+
-webkit-border-radius: 2px;
|
827 |
+
-moz-border-radius: 2px;
|
828 |
+
border-radius: 2px;
|
829 |
+
color: #ffffff !important;
|
830 |
+
font-size: 14px;
|
831 |
+
text-decoration: none;
|
832 |
+
vertical-align: middle;
|
833 |
+
border-right: none;
|
834 |
+
border-left: none;
|
835 |
+
text-align: center;
|
836 |
+
float: none;
|
837 |
+
height: 40px;
|
838 |
+
padding-top: 6px;
|
839 |
+
font-weight: bold;
|
840 |
+
cursor: pointer;
|
841 |
+
}
|
842 |
+
.button-blue1:hover {
|
843 |
+
|
844 |
+
border-top: 3px solid #68c3cc;
|
845 |
+
border-bottom: 3px solid #50b1bc;
|
846 |
+
background: #54bbc6;
|
847 |
+
}
|
848 |
+
.button-blue1:active {
|
849 |
+
vertical-align: middle;
|
850 |
+
border-top: 2px solid #359dab;
|
851 |
+
background: #42adb9;
|
852 |
+
border-bottom: none;
|
853 |
+
}
|
854 |
+
.button-red {
|
855 |
+
border-top: 3px solid #c12625;
|
856 |
+
border-bottom: 3px solid #851110;
|
857 |
+
background: #ac1d1c url('../img/button-arrow-red.png') no-repeat 93%;
|
858 |
+
-webkit-border-radius: 5px;
|
859 |
+
-moz-border-radius: 5px;
|
860 |
+
border-radius: 5px;
|
861 |
+
color: #ffffff !important;
|
862 |
+
font-size: 14px;
|
863 |
+
font-weight: bold;
|
864 |
+
padding-top: 6px;
|
865 |
+
text-decoration: none;
|
866 |
+
vertical-align: middle;
|
867 |
+
border-right: none;
|
868 |
+
border-left: none;
|
869 |
+
text-align: center;
|
870 |
+
float: none;
|
871 |
+
height: 40px;
|
872 |
+
display: table-cell;
|
873 |
+
}
|
874 |
+
.button-red:hover {
|
875 |
+
height: 40px;
|
876 |
+
border-top: 3px solid #ba3131;
|
877 |
+
border-bottom: 3px solid #a42928;
|
878 |
+
background: #b32f2e url('../img/button-arrow-red.png') no-repeat 93%;
|
879 |
+
display: table-cell;
|
880 |
+
}
|
881 |
+
.button-red:active {
|
882 |
+
height: 40px;
|
883 |
+
border-top: 2px solid #941615;
|
884 |
+
background: #a51c1b url('../img/button-arrow-red.png') no-repeat 93%;
|
885 |
+
border-bottom: none;
|
886 |
+
vertical-align: middle;
|
887 |
+
display: table-cell;
|
888 |
+
padding-top: 8px;
|
889 |
+
}
|
890 |
+
|
891 |
+
.button-blue-flat {
|
892 |
+
|
893 |
+
background: #45b5c1 url('../img/arrow-right-white.jpg') no-repeat 90%;
|
894 |
+
-webkit-border-radius: 3px;
|
895 |
+
-moz-border-radius: 3px;
|
896 |
+
border-radius: 3px;
|
897 |
+
color: #ffffff !important;
|
898 |
+
font-size: 14px;
|
899 |
+
text-decoration: none;
|
900 |
+
vertical-align: middle;
|
901 |
+
border-right: none;
|
902 |
+
border-left: none;
|
903 |
+
text-align: center;
|
904 |
+
float: none;
|
905 |
+
height: 35px;
|
906 |
+
padding-top: 7px;
|
907 |
+
font-weight: bold;
|
908 |
+
cursor: pointer;
|
909 |
+
}
|
910 |
+
.button-blue-arrow {
|
911 |
+
|
912 |
+
border-top: 3px solid #4fc1cb;
|
913 |
+
border-bottom: 3px solid #36a4b2;
|
914 |
+
background: #45b5c1 url('../img/arrow-right-white.jpg') no-repeat 92%;
|
915 |
+
-webkit-border-radius: 5px;
|
916 |
+
-moz-border-radius: 5px;
|
917 |
+
border-radius: 5px;
|
918 |
+
color: #ffffff !important;
|
919 |
+
font-size: 14px;
|
920 |
+
text-decoration: none;
|
921 |
+
vertical-align: middle;
|
922 |
+
height: 40px;
|
923 |
+
border-right: none;
|
924 |
+
border-left: none;
|
925 |
+
font-weight: bold;
|
926 |
+
text-align: center;
|
927 |
+
display: table-cell;
|
928 |
+
cursor: pointer;
|
929 |
+
padding-top: 6px;
|
930 |
+
}
|
931 |
+
.button-blue-arrow:hover {
|
932 |
+
border-top: 3px solid #68c3cc;
|
933 |
+
border-bottom: 3px solid #50b1bc;
|
934 |
+
background: #54bbc6 url('../img/arrow-right-white.jpg') no-repeat 92%;
|
935 |
+
}
|
936 |
+
.button-blue-arrow:active {
|
937 |
+
border-top: 3px solid #359dab;
|
938 |
+
background: #42adb9 url('../img/arrow-right-white.jpg') no-repeat 92%;
|
939 |
+
border-bottom: none;
|
940 |
+
padding-top: 8px;
|
941 |
+
}
|
942 |
+
.button-red-flat {
|
943 |
+
|
944 |
+
background-color: #ba181f;
|
945 |
+
-webkit-border-radius: 3px;
|
946 |
+
-moz-border-radius: 3px;
|
947 |
+
border-radius: 3px;
|
948 |
+
color: #e6ebeb !important;
|
949 |
+
font-size: 16px;
|
950 |
+
text-decoration: none;
|
951 |
+
vertical-align: middle;
|
952 |
+
border-right: none;
|
953 |
+
border-left: none;
|
954 |
+
text-align: center;
|
955 |
+
float: none;
|
956 |
+
height: 40px;
|
957 |
+
padding-top: 9px;
|
958 |
+
cursor: pointer;
|
959 |
+
}
|
960 |
+
.button-black {
|
961 |
+
|
962 |
+
border-top: 3px solid #353737;
|
963 |
+
border-bottom: 3px solid #101111;
|
964 |
+
background: #282b2b url('../img/button-arrow-grey.png') no-repeat 93%;
|
965 |
+
-webkit-border-radius: 5px;
|
966 |
+
-moz-border-radius: 5px;
|
967 |
+
border-radius: 5px;
|
968 |
+
padding-top: 7px;
|
969 |
+
color: #e6ebeb !important;
|
970 |
+
font-size: 16px;
|
971 |
+
text-decoration: none;
|
972 |
+
vertical-align: middle;
|
973 |
+
border-right: none;
|
974 |
+
border-left: none;
|
975 |
+
text-align: center;
|
976 |
+
float: none;
|
977 |
+
height: 40px;
|
978 |
+
display: table-cell;
|
979 |
+
}
|
980 |
+
.button-black:hover {
|
981 |
+
|
982 |
+
border-top: 3px solid #454747;
|
983 |
+
border-bottom: 3px solid #2d2f2f;
|
984 |
+
background: #393c3c url('../img/button-arrow-grey.png') no-repeat 93%;
|
985 |
+
display: table-cell;
|
986 |
+
height: 40px;
|
987 |
+
}
|
988 |
+
.button-black:active {
|
989 |
+
vertical-align: middle;
|
990 |
+
border-top: 2px solid #181a1a;
|
991 |
+
background: #2c3030 url('../img/button-arrow-grey.png') no-repeat 93%;
|
992 |
+
border-bottom: none;
|
993 |
+
height: 40px;
|
994 |
+
padding-top: 9px;
|
995 |
+
display: table-cell;
|
996 |
+
}
|
997 |
+
.button-black-160 {
|
998 |
+
width: 160px !important;
|
999 |
+
background: #282b2b url('../img/button-arrow-grey.png') no-repeat 85%;
|
1000 |
+
}
|
1001 |
+
.button-black-160:hover {
|
1002 |
+
|
1003 |
+
background: #393c3c url('../img/button-arrow-grey.png') no-repeat 85%;
|
1004 |
+
}
|
1005 |
+
.button-black-160:active {
|
1006 |
+
|
1007 |
+
background: #2c3030 url('../img/button-arrow-grey.png') no-repeat 85%;
|
1008 |
+
}
|
1009 |
+
.button-black-190 {
|
1010 |
+
padding-top: 0px;
|
1011 |
+
width: 190px !important;
|
1012 |
+
background: #282b2b url('../img/button-arrow-grey.png') no-repeat 90%;
|
1013 |
+
}
|
1014 |
+
.button-black-190:hover {
|
1015 |
+
padding-top: 0px;
|
1016 |
+
background: #393c3c url('../img/button-arrow-grey.png') no-repeat 90%;
|
1017 |
+
}
|
1018 |
+
.button-black-190:active {
|
1019 |
+
padding-top: 1px;
|
1020 |
+
background: #2c3030 url('../img/button-arrow-grey.png') no-repeat 90%;
|
1021 |
+
}
|
1022 |
+
.no-image {
|
1023 |
+
background-image: none !important;
|
1024 |
+
}
|
1025 |
+
/* dropdown mobile */
|
1026 |
+
.display-date {
|
1027 |
+
font-size: 13px;
|
1028 |
+
color: #6e7272;
|
1029 |
+
}
|
1030 |
+
.dropdown-toggle {
|
1031 |
+
text-align: left;
|
1032 |
+
width: 125px;
|
1033 |
+
height: 32px;
|
1034 |
+
font-weight: medium;
|
1035 |
+
font-size: 14px;
|
1036 |
+
color: #fff;
|
1037 |
+
border: none;
|
1038 |
+
padding-left: 15px;
|
1039 |
+
border-top: 3px solid #babfbf;
|
1040 |
+
background-color: #babfbf;
|
1041 |
+
border-bottom: 3px solid #babfbf;
|
1042 |
+
border-radius: 4px;
|
1043 |
+
padding-top: 4px;
|
1044 |
+
}
|
1045 |
+
.dropdown-menu {
|
1046 |
+
width: 125px !important;
|
1047 |
+
border: none;
|
1048 |
+
position: absolute;
|
1049 |
+
top: 100%;
|
1050 |
+
left: 0;
|
1051 |
+
z-index: 1000;
|
1052 |
+
display: none;
|
1053 |
+
float: left;
|
1054 |
+
padding: 0;
|
1055 |
+
margin: 0;
|
1056 |
+
font-size: 16px;
|
1057 |
+
list-style: none;
|
1058 |
+
border-radius: 0px;
|
1059 |
+
-webkit-box-shadow: none;
|
1060 |
+
box-shadow: none;
|
1061 |
+
color: #1a1c1c;
|
1062 |
+
font-weight: medium;
|
1063 |
+
background-color: transparent !important;
|
1064 |
+
}
|
1065 |
+
.dropdown-menu > li > a {
|
1066 |
+
border-top: 1px solid #e0e0e0;
|
1067 |
+
background-color: #efefef;
|
1068 |
+
padding-top: 8px;
|
1069 |
+
text-align: left;
|
1070 |
+
width: 125px;
|
1071 |
+
height: 40px;
|
1072 |
+
}
|
1073 |
+
.dropdown-menu > li:last-child > a {
|
1074 |
+
border-bottom: 3px solid #eaeaea;
|
1075 |
+
border-bottom-left-radius: 5px;
|
1076 |
+
border-bottom-right-radius: 5px;
|
1077 |
+
}
|
1078 |
+
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
|
1079 |
+
color: #1a1c1c;
|
1080 |
+
text-decoration: none;
|
1081 |
+
background-color: #f9f9f9;
|
1082 |
+
background-image: none;
|
1083 |
+
}
|
1084 |
+
|
1085 |
+
.btn-group.open .dropdown-toggle {
|
1086 |
+
-webkit-box-shadow: none;
|
1087 |
+
box-shadow: none;
|
1088 |
+
width: 125px;
|
1089 |
+
border-bottom: none;
|
1090 |
+
border-bottom-left-radius: 0px;
|
1091 |
+
border-bottom-right-radius: 0px;
|
1092 |
+
}
|
1093 |
+
.btn-group {
|
1094 |
+
width: 125px !important;
|
1095 |
+
}
|
1096 |
+
.open > .dropdown-menu {
|
1097 |
+
display: block;
|
1098 |
+
}
|
1099 |
+
|
1100 |
+
.caret {
|
1101 |
+
float: right;
|
1102 |
+
margin-top: 6px;
|
1103 |
+
width: 8px;
|
1104 |
+
margin-right: 10px;
|
1105 |
+
border-top: 8px solid #fff;
|
1106 |
+
border-right: 7px solid transparent;
|
1107 |
+
border-bottom: 0 dotted;
|
1108 |
+
border-left: 7px solid transparent;
|
1109 |
+
cursor: pointer;
|
1110 |
+
}
|
1111 |
+
.dropdown-toggle-billing {
|
1112 |
+
text-align: left;
|
1113 |
+
width: 180px;
|
1114 |
+
height: 40px;
|
1115 |
+
font-weight: medium;
|
1116 |
+
font-size: 16px;
|
1117 |
+
color: #1a1c1c;
|
1118 |
+
border: none;
|
1119 |
+
padding-left: 15px;
|
1120 |
+
border-radius: 3px;
|
1121 |
+
background-color: #fcfcfc;
|
1122 |
+
border: 1px solid #dde2e4;
|
1123 |
+
padding-top: 8px;
|
1124 |
+
}
|
1125 |
+
.dropdown-menu-billing {
|
1126 |
+
width: 180px !important;
|
1127 |
+
border: none;
|
1128 |
+
position: absolute;
|
1129 |
+
top: 100%;
|
1130 |
+
left: 0;
|
1131 |
+
z-index: 1000;
|
1132 |
+
display: none;
|
1133 |
+
float: left;
|
1134 |
+
padding: 0;
|
1135 |
+
margin: 0;
|
1136 |
+
font-size: 16px;
|
1137 |
+
list-style: none;
|
1138 |
+
border-radius: 0px;
|
1139 |
+
-webkit-box-shadow: none;
|
1140 |
+
box-shadow: none;
|
1141 |
+
color: #1a1c1c;
|
1142 |
+
font-weight: medium;
|
1143 |
+
background-color: transparent !important;
|
1144 |
+
}
|
1145 |
+
.dropdown-menu-billing > li > a {
|
1146 |
+
border-top: 1px solid #dde2e4;
|
1147 |
+
background-color: #fcfcfc;
|
1148 |
+
padding-top: 8px;
|
1149 |
+
text-align: left;
|
1150 |
+
width: 180px;
|
1151 |
+
border-left: 1px solid #dde2e4;
|
1152 |
+
border-right: 1px solid #dde2e4;
|
1153 |
+
height: 40px;
|
1154 |
+
}
|
1155 |
+
.dropdown-menu-billing > li:last-child > a {
|
1156 |
+
border-bottom: 1px solid #dde2e4;
|
1157 |
+
border-bottom-left-radius: 3px;
|
1158 |
+
border-bottom-right-radius: 3px;
|
1159 |
+
}
|
1160 |
+
|
1161 |
+
.dropdown-menu-billing > li > a:hover, .dropdown-menu-billing > li > a:focus {
|
1162 |
+
color: #1a1c1c;
|
1163 |
+
text-decoration: none;
|
1164 |
+
background-color: #fcfcfc;
|
1165 |
+
background-image: none;
|
1166 |
+
}
|
1167 |
+
|
1168 |
+
.btn-group.open .dropdown-toggle-billing {
|
1169 |
+
-webkit-box-shadow: none;
|
1170 |
+
box-shadow: none;
|
1171 |
+
width: 180px;
|
1172 |
+
border-bottom: none;
|
1173 |
+
border-bottom-left-radius: 0px;
|
1174 |
+
border-bottom-right-radius: 0px;
|
1175 |
+
}
|
1176 |
+
.btn-group-billing {
|
1177 |
+
width: 180px !important;
|
1178 |
+
}
|
1179 |
+
.open > .dropdown-menu-billing {
|
1180 |
+
display: block;
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
.caret-billing {
|
1184 |
+
float: right;
|
1185 |
+
margin-top: 6px;
|
1186 |
+
width: 8px;
|
1187 |
+
margin-right: 10px;
|
1188 |
+
border-top: 8px solid #000;
|
1189 |
+
border-right: 7px solid transparent;
|
1190 |
+
border-bottom: 0 dotted;
|
1191 |
+
border-left: 7px solid transparent;
|
1192 |
+
cursor: pointer;
|
1193 |
+
}
|
1194 |
+
.dropdown-toggle-widget {
|
1195 |
+
text-align: left;
|
1196 |
+
width: 140px;
|
1197 |
+
height: 40px;
|
1198 |
+
font-weight: medium;
|
1199 |
+
font-size: 16px;
|
1200 |
+
color: #1a1c1c;
|
1201 |
+
border: none;
|
1202 |
+
padding-left: 15px;
|
1203 |
+
border-radius: 3px;
|
1204 |
+
background-color: #fdfdfd;
|
1205 |
+
border: 1px solid #ece7e7;
|
1206 |
+
padding-top: 8px;
|
1207 |
+
}
|
1208 |
+
.dropdown-menu-widget {
|
1209 |
+
width: 140px !important;
|
1210 |
+
border: none;
|
1211 |
+
position: absolute;
|
1212 |
+
top: 100%;
|
1213 |
+
left: 0;
|
1214 |
+
z-index: 1000;
|
1215 |
+
display: none;
|
1216 |
+
float: left;
|
1217 |
+
padding: 0;
|
1218 |
+
margin: 0;
|
1219 |
+
font-size: 16px;
|
1220 |
+
list-style: none;
|
1221 |
+
border-radius: 0px;
|
1222 |
+
-webkit-box-shadow: none;
|
1223 |
+
box-shadow: none;
|
1224 |
+
color: #1a1c1c;
|
1225 |
+
height: 40px;
|
1226 |
+
font-weight: medium;
|
1227 |
+
background-color: transparent !important;
|
1228 |
+
margin-top: -1px;
|
1229 |
+
}
|
1230 |
+
.dropdown-menu-widget > li > a {
|
1231 |
+
border-top: 1px solid #dde2e4;
|
1232 |
+
background-color: #fcfcfc;
|
1233 |
+
padding-top: 8px;
|
1234 |
+
text-align: left;
|
1235 |
+
width: 140px;
|
1236 |
+
border-left: 1px solid #dde2e4;
|
1237 |
+
border-right: 1px solid #dde2e4;
|
1238 |
+
height: 40px;
|
1239 |
+
}
|
1240 |
+
.dropdown-menu-widget > li:last-child > a {
|
1241 |
+
border-bottom: 1px solid #dde2e4;
|
1242 |
+
border-bottom-left-radius: 3px;
|
1243 |
+
border-bottom-right-radius: 3px;
|
1244 |
+
}
|
1245 |
+
|
1246 |
+
.dropdown-menu-widget > li > a:hover, .dropdown-menu-widget > li > a:focus {
|
1247 |
+
color: #1a1c1c;
|
1248 |
+
text-decoration: none;
|
1249 |
+
background-color: #fcfcfc;
|
1250 |
+
background-image: none;
|
1251 |
+
}
|
1252 |
+
|
1253 |
+
.btn-group.open .dropdown-toggle-widget {
|
1254 |
+
-webkit-box-shadow: none;
|
1255 |
+
box-shadow: none;
|
1256 |
+
width: 140px;
|
1257 |
+
border-bottom: none;
|
1258 |
+
border-bottom-left-radius: 0px;
|
1259 |
+
border-bottom-right-radius: 0px;
|
1260 |
+
height: 39px;
|
1261 |
+
}
|
1262 |
+
.btn-group-widget {
|
1263 |
+
width: 180px !important;
|
1264 |
+
}
|
1265 |
+
.open > .dropdown-menu-widget {
|
1266 |
+
display: block;
|
1267 |
+
}
|
1268 |
+
|
1269 |
+
.caret-widget {
|
1270 |
+
/*float:right;
|
1271 |
+
margin-top: 6px;
|
1272 |
+
width:8px;
|
1273 |
+
margin-right:10px;
|
1274 |
+
border-top: 8px solid #000;
|
1275 |
+
border-right: 7px solid transparent;
|
1276 |
+
border-bottom: 0 dotted;
|
1277 |
+
border-left: 7px solid transparent;
|
1278 |
+
cursor : pointer;
|
1279 |
+
background-color: #efefef
|
1280 |
+
*/
|
1281 |
+
float: right;
|
1282 |
+
width: 40px;
|
1283 |
+
height: 39px;
|
1284 |
+
background-color: #efefef;
|
1285 |
+
margin-top: -8px;
|
1286 |
+
border-top-right-radius: 3px;
|
1287 |
+
border-bottom-right-radius: 3px;
|
1288 |
+
background: #efefef url('../img/arrow-calendar-down1.png') no-repeat 50%;
|
1289 |
+
border-bottom: 1px solid #ece7e7;
|
1290 |
+
}
|
1291 |
+
.btn-group.open .caret-widget {
|
1292 |
+
border-bottom-right-radius: 0px;
|
1293 |
+
}
|
1294 |
+
/* .caret-billing
|
1295 |
+
{
|
1296 |
+
border-top: 8px solid #000;
|
1297 |
+
}
|
1298 |
+
.dropdown-billing
|
1299 |
+
{
|
1300 |
+
height: 40px;
|
1301 |
+
background-color: #fcfcfc;
|
1302 |
+
border:none;
|
1303 |
+
border: 1px solid #dde2e4;
|
1304 |
+
font-size: 16px;
|
1305 |
+
color: #1a1c1c;
|
1306 |
+
padding-top:8px;
|
1307 |
+
}
|
1308 |
+
*/
|
1309 |
+
/*report mobile */
|
1310 |
+
|
1311 |
+
.sub-widget-head {
|
1312 |
+
font-size: 13px;
|
1313 |
+
color: #7c7c7c;
|
1314 |
+
margin-top: 15px;
|
1315 |
+
margin-left: 40px;
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
.widget-head {
|
1319 |
+
font-size: 18px;
|
1320 |
+
font-weight: bold;
|
1321 |
+
}
|
1322 |
+
.middle-nav-new {
|
1323 |
+
border-right: 1px solid #d1d5df;
|
1324 |
+
background-color: #f3f4f7;
|
1325 |
+
}
|
1326 |
+
.blank-div {
|
1327 |
+
width: 100%;
|
1328 |
+
float: left;
|
1329 |
+
height: 60px;
|
1330 |
+
border-bottom: 1px solid #d1d5df;
|
1331 |
+
}
|
1332 |
+
.middle-nav-disabled {
|
1333 |
+
width: 100%;
|
1334 |
+
float: left;
|
1335 |
+
height: 40px;
|
1336 |
+
color: #141515;
|
1337 |
+
border-bottom: 1px solid #d1d5df;
|
1338 |
+
font-weight: bold;
|
1339 |
+
padding: 10px 0px 0px 20px;
|
1340 |
+
background: #dce0e7 url('../img/plus.jpg') no-repeat 90%;
|
1341 |
+
font-size: 12px;
|
1342 |
+
}
|
1343 |
+
.middle-nav-enabled {
|
1344 |
+
width: 180px;
|
1345 |
+
float: left;
|
1346 |
+
height: auto;
|
1347 |
+
background-color: #fff;
|
1348 |
+
border-right: 1px solid #fff;
|
1349 |
+
border-bottom: 1px solid #d1d5df;
|
1350 |
+
font-weight: bold;
|
1351 |
+
font-size: 12px;
|
1352 |
+
padding: 5px 0px 5px 8px;
|
1353 |
+
}
|
1354 |
+
ul.sub-widgets {
|
1355 |
+
|
1356 |
+
margin: 0;
|
1357 |
+
padding: 0;
|
1358 |
+
list-style-type: none;
|
1359 |
+
margin: 0px;
|
1360 |
+
font-size: 13px;
|
1361 |
+
}
|
1362 |
+
ul.sub-widgets li {
|
1363 |
+
|
1364 |
+
padding: 10px 0px 10px 12px;
|
1365 |
+
font-weight: normal;
|
1366 |
+
color: #0d0e0e;
|
1367 |
+
font-size: 13px;
|
1368 |
+
}
|
1369 |
+
ul.sub-widgets li:first-child {
|
1370 |
+
|
1371 |
+
padding: 10px 0px 10px 12px;
|
1372 |
+
font-weight: normal;
|
1373 |
+
color: #6e7272;
|
1374 |
+
font-size: 12px;
|
1375 |
+
color: #babfbf;
|
1376 |
+
font-weight: bold;
|
1377 |
+
background: url('../img/minus.jpg') no-repeat 90%;
|
1378 |
+
}
|
1379 |
+
/*li.active {
|
1380 |
+
background-color: #0d0e0e;
|
1381 |
+
padding: 6px 12px !important;
|
1382 |
+
color: #f3f4f7 !important;
|
1383 |
+
margin: 2px 0px;
|
1384 |
+
width: 160px;
|
1385 |
+
background: url('../img/nav-highlight-arrow.png') no-repeat;
|
1386 |
+
}*/
|
1387 |
+
.outer-widget {
|
1388 |
+
padding: 0px 40px 60px 40px;
|
1389 |
+
}
|
1390 |
+
.table-widget {
|
1391 |
+
margin-top: 15px;
|
1392 |
+
margin-bottom: 0px;
|
1393 |
+
}
|
1394 |
+
table.table-widget {
|
1395 |
+
border-collapse: separate;
|
1396 |
+
border-spacing: 0px 5px;
|
1397 |
+
}
|
1398 |
+
.table-widget tbody > tr {
|
1399 |
+
background-color: #ecf1f2;
|
1400 |
+
height: 36px;
|
1401 |
+
}
|
1402 |
+
.table-widget tbody > tr > th {
|
1403 |
+
font-size: 11px;
|
1404 |
+
border-top: 1px solid #dfe2e9 !important;
|
1405 |
+
border-bottom: 1px solid #fff !important;
|
1406 |
+
background-color: #fff;
|
1407 |
+
padding-top: 4px;
|
1408 |
+
padding-bottom: 0px;
|
1409 |
+
font-weight: bold;
|
1410 |
+
text-align: right;
|
1411 |
+
}
|
1412 |
+
.table-widget tbody > tr > th {
|
1413 |
+
width: 120px;
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
.table-widget tbody > tr > th:first-child {
|
1417 |
+
width: 41px !important;
|
1418 |
+
}
|
1419 |
+
.table-widget tbody > tr > th:nth-child(2) {
|
1420 |
+
width: 200px;
|
1421 |
+
}
|
1422 |
+
.table-widget tbody > tr > th:nth-child(3) {
|
1423 |
+
width: 100px;
|
1424 |
+
}
|
1425 |
+
.table-widget tbody > tr > th:nth-child(4) {
|
1426 |
+
width: 160px;
|
1427 |
+
padding-top: 19px;
|
1428 |
+
}
|
1429 |
+
.table-widget tbody > tr > th:nth-child(5) {
|
1430 |
+
width: 140px;
|
1431 |
+
}
|
1432 |
+
.table-widget tbody > tr > th:nth-child(6) {
|
1433 |
+
width: 140px;
|
1434 |
+
padding-top: 19px;
|
1435 |
+
}
|
1436 |
+
.table-widget tbody > tr > th:nth-child(7) {
|
1437 |
+
width: 100px;
|
1438 |
+
padding-top: 19px;
|
1439 |
+
}
|
1440 |
+
.table-widget tbody > tr > th:nth-child(8) {
|
1441 |
+
width: 120px;
|
1442 |
+
}
|
1443 |
+
.table-widget tbody > tr > th:last-child {
|
1444 |
+
width: 140px !important;
|
1445 |
+
text-align: left;
|
1446 |
+
}
|
1447 |
+
|
1448 |
+
.table-widget tbody > tr > td {
|
1449 |
+
border-top: none !important
|
1450 |
+
font-size: 14px;
|
1451 |
+
padding-top: 8px;
|
1452 |
+
padding-bottom: 8px;
|
1453 |
+
border-top: 1px solid #fff;
|
1454 |
+
border-bottom: 1px solid #fff;
|
1455 |
+
text-align: right;
|
1456 |
+
color: #4f5555;
|
1457 |
+
}
|
1458 |
+
.table-widget tbody > tr:nth-child(2), .table-widget.sub-widget tbody > tr:first-child {
|
1459 |
+
background-color: #1a1c1c;
|
1460 |
+
}
|
1461 |
+
.table-widget tbody > tr:nth-child(2)> td, .table-widget.sub-widget tbody > tr:first-child > td {
|
1462 |
+
color: #c9cfdb !important;
|
1463 |
+
}
|
1464 |
+
.table-widget tbody > tr > td:first-child {
|
1465 |
+
border-top-left-radius: 5px;
|
1466 |
+
border-bottom-left-radius: 5px;
|
1467 |
+
}
|
1468 |
+
.table-widget tbody > tr > td:nth-child(2) {
|
1469 |
+
text-align: left;
|
1470 |
+
padding-left: 20px;
|
1471 |
+
}
|
1472 |
+
.table-widget tbody > tr > td:last-child {
|
1473 |
+
border-top-right-radius: 5px;
|
1474 |
+
border-bottom-right-radius: 5px;
|
1475 |
+
text-align: right;
|
1476 |
+
}
|
1477 |
+
.outer-sub-widget {
|
1478 |
+
position: absolute;
|
1479 |
+
right: 40px;
|
1480 |
+
left: 80px;
|
1481 |
+
}
|
1482 |
+
.sub-widget {
|
1483 |
+
margin-top: 0px;
|
1484 |
+
}
|
1485 |
+
.table-widget.sub-widget tbody > tr {
|
1486 |
+
background-color: #f7f1f1;
|
1487 |
+
height: 36px;
|
1488 |
+
padding-top: 8px;
|
1489 |
+
font-size: 14px;
|
1490 |
+
}
|
1491 |
+
.table-widget.sub-widget tbody > tr > td {
|
1492 |
+
color: #4f5555 !important;
|
1493 |
+
}
|
1494 |
+
|
1495 |
+
.table-widget.sub-widget tbody > tr > td:first-child {
|
1496 |
+
width: 40px !important;
|
1497 |
+
}
|
1498 |
+
#popup-click, .popup-click {
|
1499 |
+
border-top-left-radius: 5px;
|
1500 |
+
border-bottom-left-radius: 5px;
|
1501 |
+
background: #c9cfdb url('../img/arrow-down-white.jpg') no-repeat 50%;
|
1502 |
+
width: 40px !important;
|
1503 |
+
cursor: pointer;
|
1504 |
+
float: left;
|
1505 |
+
width: 40px;
|
1506 |
+
height: 36px;
|
1507 |
+
}
|
1508 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(2) {
|
1509 |
+
width: 160px;
|
1510 |
+
}
|
1511 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(3) {
|
1512 |
+
width: 70px;
|
1513 |
+
}
|
1514 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(4) {
|
1515 |
+
width: 145px;
|
1516 |
+
}
|
1517 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(5) {
|
1518 |
+
width: 130px;
|
1519 |
+
}
|
1520 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(6) {
|
1521 |
+
width: 130px;
|
1522 |
+
}
|
1523 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(7) {
|
1524 |
+
width: 95px;
|
1525 |
+
}
|
1526 |
+
.table-widget.sub-widget tbody > tr > td:nth-child(8) {
|
1527 |
+
width: 120px;
|
1528 |
+
}
|
1529 |
+
.table-widget tbody > tr > th:last-child {
|
1530 |
+
width: 140px !important;
|
1531 |
+
text-align: left;
|
1532 |
+
}
|
1533 |
+
|
1534 |
+
.image-down-disabled {
|
1535 |
+
background: url('../img/sort-arrow-blue-down.png') no-repeat;
|
1536 |
+
width: 10px;
|
1537 |
+
height: 12px;
|
1538 |
+
float: right;
|
1539 |
+
margin-top: 2px;
|
1540 |
+
cursor: pointer;
|
1541 |
+
margin-left: 7px;
|
1542 |
+
}
|
1543 |
+
.image-up-disabled {
|
1544 |
+
background: url('../img/sort-arrow-blue-up.png') no-repeat;
|
1545 |
+
width: 10px;
|
1546 |
+
height: 12px;
|
1547 |
+
float: right;
|
1548 |
+
margin-top: 2px;
|
1549 |
+
cursor: pointer;
|
1550 |
+
}
|
1551 |
+
.image-down-enabled {
|
1552 |
+
background: url('../img/sort-arrow-grey-down.png') no-repeat;
|
1553 |
+
width: 10px;
|
1554 |
+
height: 12px;
|
1555 |
+
float: right;
|
1556 |
+
cursor: pointer;
|
1557 |
+
margin-left: 7px;
|
1558 |
+
margin-top: 2px;
|
1559 |
+
}
|
1560 |
+
.image-up-enabled {
|
1561 |
+
background: url('../img/sort-arrow-grey-up.png') no-repeat;
|
1562 |
+
width: 10px;
|
1563 |
+
height: 12px;
|
1564 |
+
float: right;
|
1565 |
+
cursor: pointer;
|
1566 |
+
margin-top: 2px;
|
1567 |
+
}
|
1568 |
+
/* tooltip starts*/
|
1569 |
+
#popUpText {
|
1570 |
+
display: none;
|
1571 |
+
position: relative;
|
1572 |
+
float: left;
|
1573 |
+
width: 240px;
|
1574 |
+
z-index: 999 !important;
|
1575 |
+
}
|
1576 |
+
.arrow {
|
1577 |
+
float: left;
|
1578 |
+
width: 40px;
|
1579 |
+
width: 40px;
|
1580 |
+
height: 36px;
|
1581 |
+
border-top-left-radius: 5px;
|
1582 |
+
border-bottom-left-radius: 5px;
|
1583 |
+
background: #222424 url('../img/arrow-up-white1.jpg') no-repeat 50%;
|
1584 |
+
}
|
1585 |
+
.list {
|
1586 |
+
height: 200px;
|
1587 |
+
float: left;
|
1588 |
+
background-color: #181919;
|
1589 |
+
}
|
1590 |
+
ul.category-list {
|
1591 |
+
width: 200px;
|
1592 |
+
list-style-type: none;
|
1593 |
+
padding: 0;
|
1594 |
+
margin: 0;
|
1595 |
+
height: 200px;
|
1596 |
+
z-index: 999;
|
1597 |
+
}
|
1598 |
+
ul.category-list li {
|
1599 |
+
color: #b3b3b3;
|
1600 |
+
font-size: 14px;
|
1601 |
+
border-bottom: 1px solid #232424;
|
1602 |
+
text-align: left;
|
1603 |
+
}
|
1604 |
+
ul.category-list li:first-child {
|
1605 |
+
color: #656565;
|
1606 |
+
font-size: 12px;
|
1607 |
+
padding: 15px 0px 15px 20px;
|
1608 |
+
border-bottom: none;
|
1609 |
+
}
|
1610 |
+
ul.category-list li:last-child {
|
1611 |
+
|
1612 |
+
}
|
1613 |
+
/* tooltip ends*/
|
1614 |
+
.tooltip-toggle {
|
1615 |
+
padding: 12px 0px 12px 20px;
|
1616 |
+
width: 200px;
|
1617 |
+
border: none;
|
1618 |
+
cursor: pointer;
|
1619 |
+
text-align: left;
|
1620 |
+
}
|
1621 |
+
.tooltip-toggle:hover {
|
1622 |
+
background-color: #232424;
|
1623 |
+
/* background: #232424 url('../img/arrow-right-gray.jpg') no-repeat 90%;*/
|
1624 |
+
}
|
1625 |
+
/*.tooltip-toggle:hover~ul.tooltip-menu
|
1626 |
+
{
|
1627 |
+
display: block !important;
|
1628 |
+
|
1629 |
+
}*/
|
1630 |
+
.btn-group.open .tooltip-toggle {
|
1631 |
+
-webkit-box-shadow: none;
|
1632 |
+
box-shadow: none;
|
1633 |
+
border-bottom: none;
|
1634 |
+
border-bottom-left-radius: 0px;
|
1635 |
+
border-bottom-right-radius: 0px;
|
1636 |
+
border-bottom: none;
|
1637 |
+
cursor: pointer;
|
1638 |
+
background: #232424 url('../img/arrow-right-gray.jpg') no-repeat 90%;
|
1639 |
+
}
|
1640 |
+
|
1641 |
+
.tooltip-menu {
|
1642 |
+
width: 160px !important;
|
1643 |
+
border: none;
|
1644 |
+
position: absolute;
|
1645 |
+
top: -1%;
|
1646 |
+
left: 200px;
|
1647 |
+
z-index: 1000;
|
1648 |
+
display: none;
|
1649 |
+
float: left;
|
1650 |
+
padding: 0;
|
1651 |
+
margin: 0;
|
1652 |
+
height: 125px;
|
1653 |
+
font-size: 14px;
|
1654 |
+
list-style: none;
|
1655 |
+
border-radius: 0px;
|
1656 |
+
-webkit-box-shadow: none;
|
1657 |
+
box-shadow: none;
|
1658 |
+
border-top: none;
|
1659 |
+
background-color: #232424;
|
1660 |
+
font-family: proxima-nova, Arial, sans-serif;
|
1661 |
+
font-weight: 400;
|
1662 |
+
font-style: normal;
|
1663 |
+
color: #fff !important;
|
1664 |
+
padding-top: 10px;
|
1665 |
+
display: none;
|
1666 |
+
}
|
1667 |
+
ul.tooltip-menu li {
|
1668 |
+
padding: 0px 0px 10px 15px !important;
|
1669 |
+
border-bottom: none;
|
1670 |
+
}
|
1671 |
+
ul.tooltip-menu > li > a {
|
1672 |
+
text-align: left;
|
1673 |
+
display: table-cell;
|
1674 |
+
vertical-align: middle;
|
1675 |
+
font-size: 14px;
|
1676 |
+
color: #b3b3b3 !important;
|
1677 |
+
text-decoration: none !important;
|
1678 |
+
}
|
1679 |
+
ul.tooltip-menu > li > a:hover {
|
1680 |
+
|
1681 |
+
color: #3b3c3c !important;
|
1682 |
+
}
|
1683 |
+
|
1684 |
+
.open > .tooltip-menu {
|
1685 |
+
display: block;
|
1686 |
+
}
|
1687 |
+
|
1688 |
+
/* common keyword list mobile ends*/
|
1689 |
+
/* payment mobile*/
|
1690 |
+
.error-main-block {
|
1691 |
+
border: 1px solid #ffa9a9;
|
1692 |
+
background-color: #ffecec;
|
1693 |
+
border-radius: 5px;
|
1694 |
+
padding: 30px 60px 35px 40px;
|
1695 |
+
}
|
1696 |
+
.error-main-head {
|
1697 |
+
font-size: 24px;
|
1698 |
+
margin-bottom: 10px;
|
1699 |
+
}
|
1700 |
+
.error-main-text {
|
1701 |
+
font-size: 15px;
|
1702 |
+
color: #4a4a4a;
|
1703 |
+
}
|
1704 |
+
.input-vat {
|
1705 |
+
width: 190px !important;
|
1706 |
+
height: 38px;
|
1707 |
+
background-color: #fcfcfc;
|
1708 |
+
padding-left: 10px;
|
1709 |
+
font-size: 14px;
|
1710 |
+
color: #1a1c1c;
|
1711 |
+
border: none;
|
1712 |
+
}
|
1713 |
+
.vat-number-text {
|
1714 |
+
font-size: 14px;
|
1715 |
+
font-weight: bold;
|
1716 |
+
margin-bottom: 10px;
|
1717 |
+
}
|
1718 |
+
.vat-subblock1 {
|
1719 |
+
width: 40px !important;
|
1720 |
+
font-size: 14px;
|
1721 |
+
font-weight: bold;
|
1722 |
+
background-color: #efefef;
|
1723 |
+
height: 38px;
|
1724 |
+
text-align: center;
|
1725 |
+
padding-top: 8px;
|
1726 |
+
border-top-left-radius: 5px;
|
1727 |
+
border-bottom-left-radius: 5px;
|
1728 |
+
}
|
1729 |
+
.vat-subblock2 {
|
1730 |
+
width: 190px !important;
|
1731 |
+
text-align: left;
|
1732 |
+
}
|
1733 |
+
.vat-subblock3 {
|
1734 |
+
width: 88px !important;
|
1735 |
+
}
|
1736 |
+
.button-vat {
|
1737 |
+
|
1738 |
+
color: #ffffff !important;
|
1739 |
+
font-size: 14px;
|
1740 |
+
text-decoration: none;
|
1741 |
+
height: 38px;
|
1742 |
+
background-color: #45b5c1;
|
1743 |
+
border-right: none;
|
1744 |
+
border-left: none;
|
1745 |
+
text-align: center;
|
1746 |
+
font-weight: bold;
|
1747 |
+
cursor: pointer;
|
1748 |
+
border-top-right-radius: 4px;
|
1749 |
+
border-bottom-right-radius: 4px;
|
1750 |
+
padding-top: 8px;
|
1751 |
+
}
|
1752 |
+
.vat-number-block {
|
1753 |
+
width: 320px !important;
|
1754 |
+
border: 1px solid #dde2e4;
|
1755 |
+
height: 40px;
|
1756 |
+
border-radius: 5px;
|
1757 |
+
margin-bottom: 30px;
|
1758 |
+
}
|
1759 |
+
.plan-block-payment {
|
1760 |
+
padding: 20px 0px 20px 40px;
|
1761 |
+
background-color: #1a1c1c;
|
1762 |
+
margin-bottom: 45px;
|
1763 |
+
}
|
1764 |
+
.plan-block-row1 {
|
1765 |
+
font-size: 18px;
|
1766 |
+
font-weight: bold;
|
1767 |
+
color: #f2f2f2;
|
1768 |
+
}
|
1769 |
+
.plan-block-row2 {
|
1770 |
+
font-size: 15px;
|
1771 |
+
color: #8b8b8b;
|
1772 |
+
}
|
1773 |
+
.order-block {
|
1774 |
+
padding: 30px 40px 20px 40px;
|
1775 |
+
background-color: #f2f2f2;
|
1776 |
+
margin-bottom: 65px;
|
1777 |
+
}
|
1778 |
+
.order-block-head {
|
1779 |
+
font-size: 24px;
|
1780 |
+
margin-bottom: 10px;
|
1781 |
+
}
|
1782 |
+
.order-block-row1 {
|
1783 |
+
padding-bottom: 8px;
|
1784 |
+
font-size: 15px;
|
1785 |
+
border-bottom: 1px solid #dfdfdf;
|
1786 |
+
margin-bottom: 8px;
|
1787 |
+
}
|
1788 |
+
.order-block-row2 {
|
1789 |
+
padding-bottom: 8px;
|
1790 |
+
font-size: 15px;
|
1791 |
+
border-bottom: 1px solid #dfdfdf;
|
1792 |
+
margin-bottom: 13px;
|
1793 |
+
}
|
1794 |
+
.order-block-row3 {
|
1795 |
+
font-size: 15px;
|
1796 |
+
font-weight: bold;
|
1797 |
+
}
|
1798 |
+
.card-info-head {
|
1799 |
+
font-size: 18px;
|
1800 |
+
font-weight: bold;
|
1801 |
+
border-top: 1px solid #c0c1c1;
|
1802 |
+
padding-top: 25px;
|
1803 |
+
margin-bottom: 40px;
|
1804 |
+
}
|
1805 |
+
.ship-info-head {
|
1806 |
+
font-size: 18px;
|
1807 |
+
font-weight: bold;
|
1808 |
+
border-top: 1px solid #c0c1c1;
|
1809 |
+
margin-bottom: 30px;
|
1810 |
+
padding-top: 25px;
|
1811 |
+
}
|
1812 |
+
.card-image {
|
1813 |
+
background: url('../img/card-image.jpg') no-repeat;
|
1814 |
+
width: 34px !important;
|
1815 |
+
height: 23px;
|
1816 |
+
margin-top: 36px;
|
1817 |
+
}
|
1818 |
+
.card-image1 {
|
1819 |
+
background: url('../img/card-image1.jpg') no-repeat;
|
1820 |
+
width: 34px !important;
|
1821 |
+
height: 23px;
|
1822 |
+
margin-top: 36px;
|
1823 |
+
}
|
1824 |
+
.card-image2 {
|
1825 |
+
background: url('../img/card-image2.jpg') no-repeat;
|
1826 |
+
width: 34px !important;
|
1827 |
+
height: 23px;
|
1828 |
+
margin-top: 35px;
|
1829 |
+
margin-right: 1px;
|
1830 |
+
}
|
1831 |
+
.card-image3 {
|
1832 |
+
background: url('../img/card-image3.jpg') no-repeat;
|
1833 |
+
width: 34px !important;
|
1834 |
+
height: 23px;
|
1835 |
+
margin-top: 35px;
|
1836 |
+
}
|
1837 |
+
.cvv-image {
|
1838 |
+
background: url('../img/cvv-number.jpg') no-repeat;
|
1839 |
+
width: 32px !important;
|
1840 |
+
height: 23px;
|
1841 |
+
margin-top: 36px;
|
1842 |
+
margin-right: 5px;
|
1843 |
+
}
|
1844 |
+
.cvv-text {
|
1845 |
+
font-size: 12px;
|
1846 |
+
font-weight: bold;
|
1847 |
+
color: #808080;
|
1848 |
+
margin-top: 43px;
|
1849 |
+
}
|
1850 |
+
.terms-text {
|
1851 |
+
color: #4a4a4a;
|
1852 |
+
font-size: 15px;
|
1853 |
+
border-top: 1px solid #c0c1c1;
|
1854 |
+
padding-top: 25px;
|
1855 |
+
}
|
1856 |
+
.sol-text {
|
1857 |
+
font-size: 24px;
|
1858 |
+
font-weight: bold;
|
1859 |
+
}
|
1860 |
+
.policy-text {
|
1861 |
+
font-size: 18px;
|
1862 |
+
font-weight: bold;
|
1863 |
+
}
|
1864 |
+
.billing-text {
|
1865 |
+
font-size: 18px;
|
1866 |
+
font-weight: bold;
|
1867 |
+
}
|
1868 |
+
.email-text {
|
1869 |
+
font-size: 14px;
|
1870 |
+
font-weight: bold;
|
1871 |
+
}
|
1872 |
+
.phone-text {
|
1873 |
+
font-size: 14px;
|
1874 |
+
font-weight: bold;
|
1875 |
+
}
|
1876 |
+
.lock-img {
|
1877 |
+
background: url('../img/lock-image.jpg') no-repeat;
|
1878 |
+
width: 58px !important;
|
1879 |
+
height: 73px;
|
1880 |
+
float: none;
|
1881 |
+
margin: 0px auto;
|
1882 |
+
}
|
1883 |
+
/* login1 mobile*/
|
1884 |
+
.success-text {
|
1885 |
+
font-size: 15px;
|
1886 |
+
color: #666666;
|
1887 |
+
}
|
1888 |
+
.reset-password-sucess-container {
|
1889 |
+
padding: 175px 0px;
|
1890 |
+
}
|
1891 |
+
.login-again-link {
|
1892 |
+
font-size: 14px;
|
1893 |
+
margin-right: 40px;
|
1894 |
+
}
|
1895 |
+
.login-container {
|
1896 |
+
padding: 40px 0px 55px 0px;
|
1897 |
+
}
|
1898 |
+
.reset-password-container {
|
1899 |
+
padding: 40px 0px 75px 0px;
|
1900 |
+
}
|
1901 |
+
.password-container {
|
1902 |
+
padding: 40px 0px 60px 0px;
|
1903 |
+
}
|
1904 |
+
.login-head {
|
1905 |
+
font-size: 25px;
|
1906 |
+
margin-bottom: 45px;
|
1907 |
+
}
|
1908 |
+
.password-head {
|
1909 |
+
font-size: 25px;
|
1910 |
+
margin-bottom: 80px;
|
1911 |
+
}
|
1912 |
+
.reset-password-head {
|
1913 |
+
font-size: 25px;
|
1914 |
+
margin-bottom: 70px;
|
1915 |
+
}
|
1916 |
+
.forgot-link {
|
1917 |
+
font-size: 13px;
|
1918 |
+
}
|
1919 |
+
.login-footer {
|
1920 |
+
background-color: #f3f6f6;
|
1921 |
+
padding: 20px 0px;
|
1922 |
+
}
|
1923 |
+
.new-user {
|
1924 |
+
font-size: 14px;
|
1925 |
+
color: #4f5555;
|
1926 |
+
}
|
1927 |
+
.signup-link {
|
1928 |
+
font-size: 14px;
|
1929 |
+
}
|
1930 |
+
/*popup mobile*/
|
1931 |
+
.big-arrow-gray {
|
1932 |
+
margin-top: -5px !important;
|
1933 |
+
margin-left: 5px;
|
1934 |
+
margin-right: 5px;
|
1935 |
+
}
|
1936 |
+
.trend-head {
|
1937 |
+
font-weight: bold;
|
1938 |
+
font-size: 14px;
|
1939 |
+
margin-top: 20px;
|
1940 |
+
padding-left: 40px;
|
1941 |
+
}
|
1942 |
+
.popup-container {
|
1943 |
+
padding: 20px 40px 40px 40px;
|
1944 |
+
}
|
1945 |
+
|
1946 |
+
.dropdown-top-label {
|
1947 |
+
font-size: 14px;
|
1948 |
+
font-weight: normal;
|
1949 |
+
padding-left: 0px !important;
|
1950 |
+
}
|
1951 |
+
|
1952 |
+
.sub-popup {
|
1953 |
+
margin-top: -5px;
|
1954 |
+
}
|
1955 |
+
.table-popup {
|
1956 |
+
margin-top: 0px;
|
1957 |
+
margin-bottom: 0;
|
1958 |
+
}
|
1959 |
+
table.table-popup {
|
1960 |
+
border-collapse: separate;
|
1961 |
+
border-spacing: 0px 5px;
|
1962 |
+
}
|
1963 |
+
.table-popup tbody > tr {
|
1964 |
+
background-color: #ecf1f2;
|
1965 |
+
height: 36px;
|
1966 |
+
}
|
1967 |
+
.table-popup tbody > tr > th {
|
1968 |
+
font-size: 11px;
|
1969 |
+
border-top: none !important;
|
1970 |
+
border-bottom: 1px solid #fff !important;
|
1971 |
+
background-color: #fff;
|
1972 |
+
padding-top: 0px;
|
1973 |
+
padding-bottom: 0px;
|
1974 |
+
font-weight: bold;
|
1975 |
+
text-align: right;
|
1976 |
+
}
|
1977 |
+
.table-popup.sub-popup tbody > tr > th {
|
1978 |
+
border-top: none !important;
|
1979 |
+
}
|
1980 |
+
|
1981 |
+
.table-popup tbody > tr > th:first-child {
|
1982 |
+
width: 220px !important;
|
1983 |
+
}
|
1984 |
+
.table-popup tbody > tr > th:nth-child(2) {
|
1985 |
+
width: 130px;
|
1986 |
+
}
|
1987 |
+
.table-popup tbody > tr > th:nth-child(3) {
|
1988 |
+
width: 180px;
|
1989 |
+
padding-top: 19px;
|
1990 |
+
}
|
1991 |
+
.table-popup tbody > tr > th:nth-child(4) {
|
1992 |
+
width: 140px;
|
1993 |
+
padding-top: 4px;
|
1994 |
+
}
|
1995 |
+
.table-popup tbody > tr > th:nth-child(5) {
|
1996 |
+
width: 170px;
|
1997 |
+
padding-top: 19px;
|
1998 |
+
}
|
1999 |
+
.table-popup tbody > tr > th:last-child {
|
2000 |
+
width: 220px;
|
2001 |
+
padding-top: 19px;
|
2002 |
+
text-align: center;
|
2003 |
+
}
|
2004 |
+
.table-popup tbody > tr > td {
|
2005 |
+
border-top: none !important
|
2006 |
+
font-size: 14px;
|
2007 |
+
padding-top: 7px;
|
2008 |
+
padding-bottom: 0px;
|
2009 |
+
border-top: 1px solid #fff;
|
2010 |
+
border-bottom: 1px solid #fff;
|
2011 |
+
text-align: right;
|
2012 |
+
color: #4f5555;
|
2013 |
+
}
|
2014 |
+
.table-popup tbody > tr > td:first-child {
|
2015 |
+
border-top-left-radius: 5px;
|
2016 |
+
border-bottom-left-radius: 5px;
|
2017 |
+
text-align: left;
|
2018 |
+
padding-left: 20px;
|
2019 |
+
}
|
2020 |
+
.table-widget tbody > tr > td:nth-child(2) {
|
2021 |
+
text-align: left;
|
2022 |
+
padding-left: 20px;
|
2023 |
+
}
|
2024 |
+
.table-popup tbody > tr > td:last-child {
|
2025 |
+
border-top-right-radius: 5px;
|
2026 |
+
border-bottom-right-radius: 5px;
|
2027 |
+
text-align: center;
|
2028 |
+
}
|
2029 |
+
.table-popup tbody > tr:nth-child(2), .table-widget.sub-widget tbody > tr:first-child {
|
2030 |
+
background-color: #1a1c1c;
|
2031 |
+
}
|
2032 |
+
.table-popup tbody > tr:nth-child(2)> td, .table-widget.sub-widget tbody > tr:first-child > td {
|
2033 |
+
color: #c9cfdb !important;
|
2034 |
+
}
|
2035 |
+
/* pricing recommender mobile */
|
2036 |
+
.block-scroll
|
2037 |
+
{
|
2038 |
+
width:100%;
|
2039 |
+
float:left;
|
2040 |
+
bottom:0;
|
2041 |
+
}
|
2042 |
+
.outer-scroll
|
2043 |
+
{
|
2044 |
+
|
2045 |
+
width: 60px;
|
2046 |
+
height: 60px;
|
2047 |
+
border-radius: 3px;
|
2048 |
+
background-color: #1a1c1b;
|
2049 |
+
padding:20px;
|
2050 |
+
margin-right:40px;
|
2051 |
+
margin-bottom: 40px;
|
2052 |
+
display: none;
|
2053 |
+
cursor:pointer !important;
|
2054 |
+
position: fixed;
|
2055 |
+
bottom: 20px;
|
2056 |
+
right: 20px;
|
2057 |
+
z-index:190;
|
2058 |
+
}
|
2059 |
+
.button-red-demo {
|
2060 |
+
border-top: 3px solid #c12625;
|
2061 |
+
border-bottom: 3px solid #851110;
|
2062 |
+
background: #ac1d1c url('../img/button-arrow-red.png') no-repeat 92%;
|
2063 |
+
-webkit-border-radius: 5px;
|
2064 |
+
-moz-border-radius: 5px;
|
2065 |
+
border-radius: 5px;
|
2066 |
+
color: #ffffff !important;
|
2067 |
+
font-size: 16px;
|
2068 |
+
font-weight: bold;
|
2069 |
+
padding-top: 3px;
|
2070 |
+
text-decoration: none;
|
2071 |
+
vertical-align: middle;
|
2072 |
+
border-right: none;
|
2073 |
+
border-left: none;
|
2074 |
+
text-align: center;
|
2075 |
+
float: none;
|
2076 |
+
height: 50px;
|
2077 |
+
display: table-cell;
|
2078 |
+
}
|
2079 |
+
.button-red-demo:hover {
|
2080 |
+
|
2081 |
+
border-top: 3px solid #ba3131;
|
2082 |
+
border-bottom: 3px solid #a42928;
|
2083 |
+
background: #b32f2e url('../img/button-arrow-red.png') no-repeat 92%;
|
2084 |
+
display: table-cell;
|
2085 |
+
}
|
2086 |
+
.button-red-demo:active {
|
2087 |
+
|
2088 |
+
border-top: 2px solid #941615;
|
2089 |
+
background: #a51c1b url('../img/button-arrow-red.png') no-repeat 92%;
|
2090 |
+
border-bottom: none;
|
2091 |
+
vertical-align: middle;
|
2092 |
+
display: table-cell;
|
2093 |
+
padding-top: 4px;
|
2094 |
+
}
|
2095 |
+
|
2096 |
+
.header-pricing {
|
2097 |
+
padding: 60px 0px 40px 0px;
|
2098 |
+
font-family: proxima-nova,Arial, sans-serif;
|
2099 |
+
}
|
2100 |
+
.top-header-pricing {
|
2101 |
+
font-weight: 300;
|
2102 |
+
font-size:40px;
|
2103 |
+
color: #dde5e6;
|
2104 |
+
margin-bottom: 20px;
|
2105 |
+
}
|
2106 |
+
.center-pricing-bottom
|
2107 |
+
{
|
2108 |
+
font-family: proxima-nova,Arial, sans-serif;
|
2109 |
+
}
|
2110 |
+
.top-center-pricing
|
2111 |
+
{
|
2112 |
+
font-size: 24px;
|
2113 |
+
font-weight: 400;
|
2114 |
+
margin-bottom: 10px;
|
2115 |
+
}
|
2116 |
+
.middle-center-pricing
|
2117 |
+
{
|
2118 |
+
font-size: 16px;
|
2119 |
+
font-weight: 600;
|
2120 |
+
color: #7f8585;
|
2121 |
+
margin-bottom: 30px;
|
2122 |
+
}
|
2123 |
+
.bottom-header-pricing {
|
2124 |
+
font-weight: 400;
|
2125 |
+
font-size:16px;
|
2126 |
+
color: #768484;
|
2127 |
+
}
|
2128 |
+
.container-pricing
|
2129 |
+
{
|
2130 |
+
padding: 60px 0px;
|
2131 |
+
font-family: proxima-nova,Arial, sans-serif;
|
2132 |
+
}
|
2133 |
+
.center-pricing-top
|
2134 |
+
{
|
2135 |
+
border-top-left-radius: 5px;
|
2136 |
+
border-top-right-radius: 5px;
|
2137 |
+
border: 1px solid #dee5e7;
|
2138 |
+
background-color: #fff;
|
2139 |
+
}
|
2140 |
+
.center-pricing-buttons
|
2141 |
+
{
|
2142 |
+
border-bottom-left-radius: 5px;
|
2143 |
+
border-bottom-right-radius: 5px;
|
2144 |
+
border: 1px solid #dee5e7;
|
2145 |
+
background-color: #fff;
|
2146 |
+
border-top: none;
|
2147 |
+
margin-bottom: 40px;
|
2148 |
+
}
|
2149 |
+
.block1-pricing
|
2150 |
+
{
|
2151 |
+
background-color: #fff;
|
2152 |
+
border-top-left-radius: 5px;
|
2153 |
+
border-bottom-left-radius: 5px;
|
2154 |
+
font-weight: 700;
|
2155 |
+
font-size:14px;
|
2156 |
+
padding:0;
|
2157 |
+
}
|
2158 |
+
.empty-div-60
|
2159 |
+
{
|
2160 |
+
height: 60px;
|
2161 |
+
}
|
2162 |
+
.empty-div-pricing
|
2163 |
+
{
|
2164 |
+
height: 120px;
|
2165 |
+
}
|
2166 |
+
.list-unstyled.terms-pricing
|
2167 |
+
{
|
2168 |
+
padding: 0;
|
2169 |
+
text-align: left;
|
2170 |
+
margin-bottom:0px;
|
2171 |
+
}
|
2172 |
+
.li-pricing
|
2173 |
+
{
|
2174 |
+
|
2175 |
+
height: 40px;
|
2176 |
+
text-align: left;
|
2177 |
+
padding:0;
|
2178 |
+
}
|
2179 |
+
.li-pricing:nth-child(odd)
|
2180 |
+
{
|
2181 |
+
background-color:#f3f5f6;
|
2182 |
+
}
|
2183 |
+
.li-pricing.block2:nth-child(odd)
|
2184 |
+
{
|
2185 |
+
background-color:#e8eeef;
|
2186 |
+
}
|
2187 |
+
.li-pricing.block3:nth-child(odd)
|
2188 |
+
{
|
2189 |
+
background-color:#e0e8e9;
|
2190 |
+
}
|
2191 |
+
.li-pricing.block4:nth-child(odd)
|
2192 |
+
{
|
2193 |
+
background-color:#dbe3e4;
|
2194 |
+
}
|
2195 |
+
.li-pricing.block5:nth-child(odd)
|
2196 |
+
{
|
2197 |
+
background-color:#d7e0e1;
|
2198 |
+
}
|
2199 |
+
.vertical-align
|
2200 |
+
{
|
2201 |
+
|
2202 |
+
padding:0;
|
2203 |
+
padding-left: 20px;
|
2204 |
+
}
|
2205 |
+
.li-inside
|
2206 |
+
{
|
2207 |
+
display:table-cell;vertical-align:middle;height:40px;
|
2208 |
+
font-weight:bold;
|
2209 |
+
}
|
2210 |
+
.block2-pricing
|
2211 |
+
{
|
2212 |
+
|
2213 |
+
padding: 20px 0px 0px 0px;
|
2214 |
+
text-align: center;
|
2215 |
+
background-color: #f2f6f6;
|
2216 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif;
|
2217 |
+
font-size: 13px;
|
2218 |
+
}
|
2219 |
+
.block3-pricing
|
2220 |
+
{
|
2221 |
+
padding: 20px 0px 0px 0px;
|
2222 |
+
text-align: center;
|
2223 |
+
background-color: #e8eeef;
|
2224 |
+
}
|
2225 |
+
.lbl-black
|
2226 |
+
{
|
2227 |
+
background-color:#1a1c1c;
|
2228 |
+
font-size: 15px;
|
2229 |
+
width:120px;
|
2230 |
+
color: white;
|
2231 |
+
padding: 2px 0px 2px 0px;
|
2232 |
+
margin:0px auto;
|
2233 |
+
text-align: center;
|
2234 |
+
float: none !important;
|
2235 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif;
|
2236 |
+
margin-bottom:20px;
|
2237 |
+
}
|
2238 |
+
.lbl-blue
|
2239 |
+
{
|
2240 |
+
background-color:#45b5c1;
|
2241 |
+
font-size: 15px;
|
2242 |
+
width:120px;
|
2243 |
+
color: white;
|
2244 |
+
padding: 2px 0px 2px 0px;
|
2245 |
+
margin:0px auto;
|
2246 |
+
text-align: center;
|
2247 |
+
float: none !important;
|
2248 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif;
|
2249 |
+
margin-bottom:20px;
|
2250 |
+
}
|
2251 |
+
.lbl-red
|
2252 |
+
{
|
2253 |
+
background-color:#ac1d1c;
|
2254 |
+
font-size: 15px;
|
2255 |
+
color: white;
|
2256 |
+
width:120px;
|
2257 |
+
padding: 2px 0px 2px 0px;
|
2258 |
+
margin:0px auto;
|
2259 |
+
text-align: center;
|
2260 |
+
float: none !important;
|
2261 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif;
|
2262 |
+
margin-bottom:20px;
|
2263 |
+
}
|
2264 |
+
.price-text
|
2265 |
+
{
|
2266 |
+
font-weight: 700;
|
2267 |
+
font-size: 20px;
|
2268 |
+
margin-bottom:27px;
|
2269 |
+
}
|
2270 |
+
.block4-pricing
|
2271 |
+
{
|
2272 |
+
padding: 20px 0px 0px 0px;
|
2273 |
+
text-align: center;
|
2274 |
+
background-color: #e2e8e9;
|
2275 |
+
}
|
2276 |
+
.block5-pricing
|
2277 |
+
{
|
2278 |
+
padding: 20px 0px 0px 0px;
|
2279 |
+
text-align: center;
|
2280 |
+
background-color: #dde4e5;
|
2281 |
+
}
|
2282 |
+
.price-link
|
2283 |
+
{
|
2284 |
+
font-size: 16px;
|
2285 |
+
font-weight: 700;
|
2286 |
+
|
2287 |
+
}
|
2288 |
+
.pricing-button
|
2289 |
+
{
|
2290 |
+
border-radius: 2px;
|
2291 |
+
font-size:13px;
|
2292 |
+
font-weight: bold;
|
2293 |
+
padding-top: 0px !important;
|
2294 |
+
margin:0px auto;
|
2295 |
+
float: none !important;
|
2296 |
+
width:120px !important;
|
2297 |
+
}
|
2298 |
+
.block2-button
|
2299 |
+
{
|
2300 |
+
|
2301 |
+
padding: 10px 0px 10px 10px;
|
2302 |
+
text-align: center;
|
2303 |
+
background-color: #f2f6f6;
|
2304 |
+
|
2305 |
+
}
|
2306 |
+
/* My dashboard*/
|
2307 |
+
.block1-dashboard
|
2308 |
+
{
|
2309 |
+
|
2310 |
+
}
|
2311 |
+
.block2-dashboard
|
2312 |
+
{
|
2313 |
+
border: 1px solid #e8ecec;
|
2314 |
+
background-color: #fcfcfc;
|
2315 |
+
padding: 30px 40px 40px 40px;
|
2316 |
+
border-radius:3px;
|
2317 |
+
}
|
2318 |
+
.block1-top
|
2319 |
+
{
|
2320 |
+
font-size:18px;
|
2321 |
+
font-weight:bold;
|
2322 |
+
color: #fff;
|
2323 |
+
padding: 30px 0px 30px 40px;
|
2324 |
+
background-color: #1a1c1c;
|
2325 |
+
border-top-left-radius: 3px;
|
2326 |
+
border-top-right-radius: 3px;
|
2327 |
+
}
|
2328 |
+
.block2-top
|
2329 |
+
{
|
2330 |
+
font-size:24px;
|
2331 |
+
font-weight:bold;
|
2332 |
+
border-top-left-radius: 3px;
|
2333 |
+
border-top-right-radius: 3px;
|
2334 |
+
margin-bottom:25px;
|
2335 |
+
}
|
2336 |
+
.block1-middle
|
2337 |
+
{
|
2338 |
+
color: #4f5555;
|
2339 |
+
margin-bottom: 20px;
|
2340 |
+
}
|
2341 |
+
.block2-middle
|
2342 |
+
{
|
2343 |
+
color: #4f5555;
|
2344 |
+
font-size: 14px;
|
2345 |
+
margin-bottom: 20px;
|
2346 |
+
}
|
2347 |
+
.block1-cont
|
2348 |
+
{
|
2349 |
+
font-size:14px;
|
2350 |
+
padding: 30px 40px 40px 40px;
|
2351 |
+
background-color: #eff3f3;
|
2352 |
+
border-bottom-left-radius: 3px;
|
2353 |
+
border-bottom-right-radius: 3px;
|
2354 |
+
border: 1px solid #e0e6e6;
|
2355 |
+
border-top: none;
|
2356 |
+
}
|
2357 |
+
.block1-button-red
|
2358 |
+
{
|
2359 |
+
width:240px !important;
|
2360 |
+
padding-top:0px;
|
2361 |
+
}
|
2362 |
+
.block1-button-red:active
|
2363 |
+
{
|
2364 |
+
padding-top:1px;
|
2365 |
+
}
|
2366 |
+
.block1-button-blue
|
2367 |
+
{
|
2368 |
+
width:240px !important;
|
2369 |
+
padding-top:0px;
|
2370 |
+
font-size:14px;
|
2371 |
+
font-weight:bold;
|
2372 |
+
}
|
2373 |
+
.block1-button-red:active
|
2374 |
+
{
|
2375 |
+
padding-top:1px;
|
2376 |
+
}
|
2377 |
+
.block2-button-black
|
2378 |
+
{
|
2379 |
+
width:240px !important;
|
2380 |
+
padding-top:0px;
|
2381 |
+
font-size:14px;
|
2382 |
+
font-weight:bold;
|
2383 |
+
}
|
2384 |
+
.block2-button-black:active
|
2385 |
+
{
|
2386 |
+
padding-top:1px;
|
2387 |
+
}
|
2388 |
+
/* new dashborad common*/
|
2389 |
+
|
2390 |
+
.mar-rgt-30
|
2391 |
+
{
|
2392 |
+
margin-right: 30px;
|
2393 |
+
}
|
2394 |
+
.navbar
|
2395 |
+
{
|
2396 |
+
background-image: none;
|
2397 |
+
box-shadow: none;
|
2398 |
+
}
|
2399 |
+
.navbar-inverse
|
2400 |
+
{
|
2401 |
+
background-image: none;
|
2402 |
+
border-color: #fff;
|
2403 |
+
}
|
2404 |
+
|
2405 |
+
.navbar-dashboard
|
2406 |
+
{
|
2407 |
+
background-color: #fff;
|
2408 |
+
padding: 13px 75px 13px 25px;
|
2409 |
+
font-family: proxima-nova,Arial, sans-serif;
|
2410 |
+
}
|
2411 |
+
.nav-dashboard>li>a
|
2412 |
+
{
|
2413 |
+
padding: 0px 30px 0px 0px !important;
|
2414 |
+
}
|
2415 |
+
.dashboard-nav-img
|
2416 |
+
{
|
2417 |
+
padding:0px;
|
2418 |
+
padding-top: 2px;
|
2419 |
+
}
|
2420 |
+
.dashboard-dropdown {
|
2421 |
+
text-align: left;
|
2422 |
+
width: 230px;
|
2423 |
+
height: 40px;
|
2424 |
+
font-weight: 400;
|
2425 |
+
font-size: 16px;
|
2426 |
+
color: #4d4d4d;
|
2427 |
+
border: none;
|
2428 |
+
padding-left: 15px;
|
2429 |
+
border-radius: 3px;
|
2430 |
+
background-color: #fff;
|
2431 |
+
border: 1px solid #dedede;
|
2432 |
+
padding-top: 8px;
|
2433 |
+
font-weight: 600;
|
2434 |
+
}
|
2435 |
+
|
2436 |
+
.dashboard-menu-dropdown {
|
2437 |
+
width: 230px !important;
|
2438 |
+
border: none;
|
2439 |
+
position: absolute;
|
2440 |
+
top: 100%;
|
2441 |
+
left: 0;
|
2442 |
+
z-index: 1000;
|
2443 |
+
display: none;
|
2444 |
+
float: left;
|
2445 |
+
padding: 0;
|
2446 |
+
margin: 0;
|
2447 |
+
font-size: 16px;
|
2448 |
+
list-style: none;
|
2449 |
+
border-radius: 0px;
|
2450 |
+
-webkit-box-shadow: none;
|
2451 |
+
box-shadow: none;
|
2452 |
+
font-weight: medium;
|
2453 |
+
background-color: transparent !important;
|
2454 |
+
font-weight: 600;
|
2455 |
+
color: #464646;
|
2456 |
+
}
|
2457 |
+
.dashboard-menu-dropdown > li > a {
|
2458 |
+
border-top: 1px solid #dedede;
|
2459 |
+
background-color: #fff;
|
2460 |
+
padding-top: 8px;
|
2461 |
+
text-align: left;
|
2462 |
+
width: 230px;
|
2463 |
+
border-left: 1px solid #dedede;
|
2464 |
+
border-right: 1px solid #dedede;
|
2465 |
+
height: 40px;
|
2466 |
+
font-size:16px;
|
2467 |
+
font-weight: 600;
|
2468 |
+
color: #464646;
|
2469 |
+
}
|
2470 |
+
.dashboard-menu-dropdown > li:last-child > a {
|
2471 |
+
border-bottom: 1px solid #dedede;
|
2472 |
+
padding: 3px 5px;
|
2473 |
+
border-bottom-left-radius: 3px;
|
2474 |
+
border-bottom-right-radius: 3px;
|
2475 |
+
height: 42px;
|
2476 |
+
color: #fff;
|
2477 |
+
text-align: center;
|
2478 |
+
}
|
2479 |
+
|
2480 |
+
.btn-group.open .dashboard-dropdown {
|
2481 |
+
-webkit-box-shadow: none;
|
2482 |
+
box-shadow: none;
|
2483 |
+
width: 230px;
|
2484 |
+
border-bottom: none;
|
2485 |
+
border-bottom-left-radius: 0px;
|
2486 |
+
border-bottom-right-radius: 0px;
|
2487 |
+
}
|
2488 |
+
.btn-group.open .dashboard-user {
|
2489 |
+
-webkit-box-shadow: none;
|
2490 |
+
box-shadow: none;
|
2491 |
+
width: 125px !important;
|
2492 |
+
border-bottom: none;
|
2493 |
+
border-bottom-left-radius: 0px;
|
2494 |
+
border-bottom-right-radius: 0px;
|
2495 |
+
}
|
2496 |
+
.open > .dashboard-menu-dropdown {
|
2497 |
+
display: block;
|
2498 |
+
}
|
2499 |
+
.dropdown-user
|
2500 |
+
{
|
2501 |
+
background: url('../img/user.png') no-repeat 1%;
|
2502 |
+
padding-left: 33px;
|
2503 |
+
width:125px;
|
2504 |
+
border:none;
|
2505 |
+
padding-top:11px;
|
2506 |
+
}
|
2507 |
+
.dashboard-menu-user
|
2508 |
+
{
|
2509 |
+
font-weight: 400 !important;
|
2510 |
+
width:140px !important;
|
2511 |
+
top: 134%;
|
2512 |
+
}
|
2513 |
+
.dashboard-menu-user>li>a
|
2514 |
+
{
|
2515 |
+
font-weight: 400 !important;
|
2516 |
+
width:140px !important;
|
2517 |
+
padding-left: 12px !important;
|
2518 |
+
|
2519 |
+
}
|
2520 |
+
.dashboard-menu-user>li:last-child>a
|
2521 |
+
{
|
2522 |
+
height:40px;
|
2523 |
+
padding-left: 12px;
|
2524 |
+
text-align: left !important;
|
2525 |
+
color: #464646 !important;
|
2526 |
+
padding-top: 8px !important;
|
2527 |
+
|
2528 |
+
}
|
2529 |
+
.help-img
|
2530 |
+
{
|
2531 |
+
background: url('../img/help.png') no-repeat 1%;
|
2532 |
+
width: 23px;
|
2533 |
+
height: 23px;
|
2534 |
+
float: left;
|
2535 |
+
margin-right: 13px;
|
2536 |
+
}
|
2537 |
+
.help-text
|
2538 |
+
{
|
2539 |
+
margin-top:3px;
|
2540 |
+
float:left;
|
2541 |
+
}
|
2542 |
+
.dashboard-help
|
2543 |
+
{
|
2544 |
+
margin-top: 10px;
|
2545 |
+
font-size: 16px;
|
2546 |
+
font-weight: 600;
|
2547 |
+
color: #4d4d4d !important;
|
2548 |
+
|
2549 |
+
|
2550 |
+
}
|
2551 |
+
|
2552 |
+
.caret-dashboard {
|
2553 |
+
float: right;
|
2554 |
+
margin-top: 7px;
|
2555 |
+
width: 6px;
|
2556 |
+
margin-right: 10px;
|
2557 |
+
border-top: 8px solid #45b5c1;
|
2558 |
+
border-right: 5px solid transparent;
|
2559 |
+
border-bottom: 0 dotted;
|
2560 |
+
border-left: 5px solid transparent;
|
2561 |
+
cursor: pointer;
|
2562 |
+
}
|
2563 |
+
.caret-user{
|
2564 |
+
float: right;
|
2565 |
+
margin-top: 7px;
|
2566 |
+
width: 6px;
|
2567 |
+
margin-right: 0px;
|
2568 |
+
border-top: 8px solid #45b5c1;
|
2569 |
+
border-right: 5px solid transparent;
|
2570 |
+
border-bottom: 0 dotted;
|
2571 |
+
border-left: 5px solid transparent;
|
2572 |
+
cursor: pointer;
|
2573 |
+
}
|
2574 |
+
.dashboard-button-blue
|
2575 |
+
{
|
2576 |
+
height: 34px;
|
2577 |
+
padding-top: 8px;
|
2578 |
+
background: #45b5c1 url('../img/add-icon.png') no-repeat 92%;
|
2579 |
+
}
|
2580 |
+
|
2581 |
+
/* new dashboard*/
|
2582 |
+
.dashboard-new-hor-tabs
|
2583 |
+
{
|
2584 |
+
/*border-top: 1px solid #ddd;
|
2585 |
+
border-bottom: 1px solid #ddd;
|
2586 |
+
height:60px;
|
2587 |
+
background-color: #f3f6f6;*/
|
2588 |
+
padding-left: 25px;
|
2589 |
+
height: 52px;
|
2590 |
+
background-color: #3c3f40;
|
2591 |
+
margin-bottom: 50px;
|
2592 |
+
}
|
2593 |
+
|
2594 |
+
ul.hor-tabs-inner {
|
2595 |
+
margin: 0;
|
2596 |
+
padding: 0;
|
2597 |
+
list-style-type: none;
|
2598 |
+
|
2599 |
+
}
|
2600 |
+
ul.hor-tabs-inner li {
|
2601 |
+
|
2602 |
+
font-size: 16px;
|
2603 |
+
display:inline;
|
2604 |
+
|
2605 |
+
}
|
2606 |
+
ul.hor-tabs-inner li a {
|
2607 |
+
|
2608 |
+
color: #ffffff;
|
2609 |
+
width: 170px;
|
2610 |
+
}
|
2611 |
+
ul.hor-tabs-inner li a.hor-tabs-inner-disabled {
|
2612 |
+
padding: 15px 0px;
|
2613 |
+
float: left;
|
2614 |
+
text-align: center;
|
2615 |
+
color: #fff !important;
|
2616 |
+
}
|
2617 |
+
ul.hor-tabs-inner li a.hor-tabs-inner-enabled {
|
2618 |
+
margin-top:7px;
|
2619 |
+
color: #3c3f40;
|
2620 |
+
background-color: #fff;
|
2621 |
+
padding: 11px 0px;
|
2622 |
+
float: left;
|
2623 |
+
border-top-left-radius: 5px;
|
2624 |
+
border-top-right-radius: 5px;
|
2625 |
+
border-left: 1px solid #ddd;
|
2626 |
+
border-right: 1px solid #ddd;
|
2627 |
+
border-bottom:1px solid #fff;
|
2628 |
+
text-align: center;
|
2629 |
+
}
|
2630 |
+
/*
|
2631 |
+
.feed-table-head
|
2632 |
+
{
|
2633 |
+
font-size: 18px;
|
2634 |
+
margin-top: 20px;
|
2635 |
+
margin-bottom: 15px;
|
2636 |
+
padding-left: 110px;
|
2637 |
+
}*/
|
2638 |
+
.pad-70
|
2639 |
+
{
|
2640 |
+
padding: 0px 70px;
|
2641 |
+
}
|
2642 |
+
.mar-btm-10
|
2643 |
+
{
|
2644 |
+
margin-bottom: 10px;
|
2645 |
+
}
|
2646 |
+
.mar-btm-30
|
2647 |
+
{
|
2648 |
+
margin-bottom: 30px;
|
2649 |
+
}
|
2650 |
+
.mar-btm-50
|
2651 |
+
{
|
2652 |
+
margin-bottom: 50px;
|
2653 |
+
}
|
2654 |
+
|
2655 |
+
.cat-head
|
2656 |
+
{
|
2657 |
+
color: #4e5356;
|
2658 |
+
font-size: 18px;
|
2659 |
+
font-weight: 600;
|
2660 |
+
}
|
2661 |
+
.in-grp-merchandise
|
2662 |
+
{
|
2663 |
+
width:300px;
|
2664 |
+
}
|
2665 |
+
.input-merchandise {
|
2666 |
+
border-radius: 0px;
|
2667 |
+
box-shadow: none;
|
2668 |
+
transition: none;
|
2669 |
+
border: 1px solid #d4d4d4;
|
2670 |
+
height: 40px;
|
2671 |
+
width: 260px !important;
|
2672 |
+
font-size: 16px;
|
2673 |
+
font-weight: 400;
|
2674 |
+
border-right:0;
|
2675 |
+
}
|
2676 |
+
.btn-merchandise {
|
2677 |
+
text-shadow: none;
|
2678 |
+
box-shadow: none;
|
2679 |
+
border: 1px solid #d4d4d4;
|
2680 |
+
background-image: none;
|
2681 |
+
height: 40px;
|
2682 |
+
width: 40px;
|
2683 |
+
border-radius: 0px;
|
2684 |
+
padding-left: 7px;
|
2685 |
+
padding-top:8px;
|
2686 |
+
border-left:0;
|
2687 |
+
}
|
2688 |
+
|
2689 |
+
.table-feed
|
2690 |
+
{
|
2691 |
+
border: 1px solid #d9dede;
|
2692 |
+
}
|
2693 |
+
.table-feed>thead>tr>th {
|
2694 |
+
height: 55px;
|
2695 |
+
font-size: 16px;
|
2696 |
+
background-color: #f3f6f6;
|
2697 |
+
border-bottom: 1px solid #d9dede;
|
2698 |
+
color: #4e5356;
|
2699 |
+
padding-bottom:17px;
|
2700 |
+
padding-left: 20px;
|
2701 |
+
font-weight: normal;
|
2702 |
+
}
|
2703 |
+
.table-feed>tbody>tr>td {
|
2704 |
+
border-bottom: 1px solid #d9dede !important;
|
2705 |
+
color: #4e5356;
|
2706 |
+
font-size: 15px;
|
2707 |
+
font-weight: 400;
|
2708 |
+
height: 55px !important;
|
2709 |
+
padding-left: 20px;
|
2710 |
+
padding-top:18px;
|
2711 |
+
}
|
2712 |
+
.table-feed>tbody>tr>td:first-child
|
2713 |
+
{
|
2714 |
+
text-align: center;
|
2715 |
+
padding-left:0px;
|
2716 |
+
}
|
2717 |
+
.cat-label
|
2718 |
+
{
|
2719 |
+
color: #3c3f40;
|
2720 |
+
font-weight: 400;
|
2721 |
+
border:1px solid #d9dede;
|
2722 |
+
border-radius: 3px;
|
2723 |
+
width:auto;
|
2724 |
+
padding: 3px 15px;
|
2725 |
+
margin-left:13px;
|
2726 |
+
margin-right:13px;
|
2727 |
+
}
|
2728 |
+
.edit-img
|
2729 |
+
{
|
2730 |
+
background: url("/magento/unbxd-imgs/edit.png") no-repeat;
|
2731 |
+
width:13px;
|
2732 |
+
height: 13px;
|
2733 |
+
float: left;
|
2734 |
+
margin-top:2px;
|
2735 |
+
margin-right: 5px;
|
2736 |
+
}
|
2737 |
+
.delete-img
|
2738 |
+
{
|
2739 |
+
background: url("/magento/unbxd-imgs/delete-red.png") no-repeat;
|
2740 |
+
width:11px;
|
2741 |
+
height: 15px;
|
2742 |
+
float: left;
|
2743 |
+
margin-top:2px;
|
2744 |
+
margin-right: 5px;
|
2745 |
+
}
|
2746 |
+
.arrow-right
|
2747 |
+
{
|
2748 |
+
margin-top:-3px;
|
2749 |
+
}
|
2750 |
+
.cat-rule-block
|
2751 |
+
{
|
2752 |
+
border: 1px solid #d9dede;
|
2753 |
+
background-color: #f3f6f6;
|
2754 |
+
padding: 45px 0px 30px 0px;
|
2755 |
+
text-align: center;
|
2756 |
+
}
|
2757 |
+
.cat-rule-head
|
2758 |
+
{
|
2759 |
+
color: #5c656a;
|
2760 |
+
font-size: 16px;
|
2761 |
+
font-weight: 400;
|
2762 |
+
}
|
2763 |
+
.success-color
|
2764 |
+
{
|
2765 |
+
color: #16b967 !important;
|
2766 |
+
}
|
2767 |
+
.fail-color
|
2768 |
+
{
|
2769 |
+
color: #fb5858 !important;
|
2770 |
+
}
|
2771 |
+
.width-470
|
2772 |
+
{
|
2773 |
+
width:470px !important;
|
2774 |
+
}
|
2775 |
+
.mar-top-15
|
2776 |
+
{
|
2777 |
+
margin-top:15px;
|
2778 |
+
}
|
2779 |
+
.button-gray-small {
|
2780 |
+
padding-top: 3px;
|
2781 |
+
background-color: #babfbf;
|
2782 |
+
-webkit-border-radius: 2px;
|
2783 |
+
-moz-border-radius: 2px;
|
2784 |
+
border-radius: 2px;
|
2785 |
+
height: 40px;
|
2786 |
+
text-decoration: none;
|
2787 |
+
vertical-align: middle;
|
2788 |
+
font-weight: bold;
|
2789 |
+
border-right: none;
|
2790 |
+
border-left: none;
|
2791 |
+
float: none;
|
2792 |
+
}
|
2793 |
+
.merchandise-dropdown
|
2794 |
+
{
|
2795 |
+
color: #4d4d4d;
|
2796 |
+
font-size:16px;
|
2797 |
+
font-weight:600;
|
2798 |
+
padding-left:12px;
|
2799 |
+
border:1px solid #ece7e7;
|
2800 |
+
background-color: #fff;
|
2801 |
+
}
|
2802 |
+
.merchandise-menu-dropdown > li > a {
|
2803 |
+
background-color: #fff;
|
2804 |
+
padding-top: 8px;
|
2805 |
+
text-align: left;
|
2806 |
+
border-left: 1px solid #ece7e7;
|
2807 |
+
border-right: 1px solid #ece7e7;
|
2808 |
+
height: 40px;
|
2809 |
+
font-size:16px;
|
2810 |
+
font-weight: 600;
|
2811 |
+
border-top:none;
|
2812 |
+
}
|
2813 |
+
.merchandise-menu-dropdown > li:first-child > a
|
2814 |
+
{
|
2815 |
+
border-top:1px solid #ece7e7;
|
2816 |
+
}
|
2817 |
+
.merchandise-menu-dropdown > li:last-child > a {
|
2818 |
+
border-bottom: 1px solid #ece7e7;
|
2819 |
+
border-bottom-left-radius: 3px;
|
2820 |
+
border-bottom-right-radius: 3px;
|
2821 |
+
}
|
2822 |
+
.merchandise-menu-dropdown > li > a:hover, .merchandise-menu-dropdown > li > a:focus {
|
2823 |
+
border-top:1px solid #ece7e7;
|
2824 |
+
border-bottom: 1px solid #ece7e7;
|
2825 |
+
background-color: #fff;
|
2826 |
+
}
|
2827 |
+
|
2828 |
+
.caret-merchandise {
|
2829 |
+
|
2830 |
+
border-top: 8px solid #b0b6b9;
|
2831 |
+
margin-top:8px;
|
2832 |
+
}
|
2833 |
+
.button-black-merchandise {
|
2834 |
+
width:170px;
|
2835 |
+
background: #282b2b url('../img/add-icon.png') no-repeat 89%;
|
2836 |
+
-webkit-border-radius: 3px;
|
2837 |
+
-moz-border-radius: 3px;
|
2838 |
+
border-radius: 3px;
|
2839 |
+
padding-top: 3px;
|
2840 |
+
color: #fff !important;
|
2841 |
+
font-size: 16px;
|
2842 |
+
font-weight:600;
|
2843 |
+
text-decoration: none;
|
2844 |
+
vertical-align: middle;
|
2845 |
+
border-right: none;
|
2846 |
+
border-left: none;
|
2847 |
+
text-align: center;
|
2848 |
+
float: none;
|
2849 |
+
height: 40px;
|
2850 |
+
display: table-cell;
|
2851 |
+
}
|
2852 |
+
.button-black-merchandise:hover {
|
2853 |
+
|
2854 |
+
|
2855 |
+
background: #393c3c url('../img/add-icon.png') no-repeat 89%;
|
2856 |
+
display: table-cell;
|
2857 |
+
height: 40px;
|
2858 |
+
}
|
2859 |
+
.button-black-merchandise:active {
|
2860 |
+
|
2861 |
+
background: #2c3030 url('../img/add-icon.png') no-repeat 89% 60%;
|
2862 |
+
border-bottom: none;
|
2863 |
+
height: 40px;
|
2864 |
+
padding-top: 5px;
|
2865 |
+
display: table-cell;
|
2866 |
+
}
|
2867 |
+
/* widget configuration mobile*/
|
2868 |
+
.blank-div-widget {
|
2869 |
+
width: 100%;
|
2870 |
+
float: left;
|
2871 |
+
height: 80px;
|
2872 |
+
}
|
2873 |
+
.widget-list-head {
|
2874 |
+
float: left;
|
2875 |
+
width: 100%;
|
2876 |
+
font-size: 12px;
|
2877 |
+
font-weight: bold;
|
2878 |
+
padding-left: 20px;
|
2879 |
+
margin-bottom: 24px;
|
2880 |
+
}
|
2881 |
+
ul.widget-conf {
|
2882 |
+
|
2883 |
+
margin: 0;
|
2884 |
+
padding: 0;
|
2885 |
+
list-style-type: none;
|
2886 |
+
margin: 0px;
|
2887 |
+
font-size: 13px;
|
2888 |
+
margin-top: 14px;
|
2889 |
+
}
|
2890 |
+
ul.widget-conf li {
|
2891 |
+
|
2892 |
+
font-size: 13px;
|
2893 |
+
}
|
2894 |
+
ul.widget-conf li a {
|
2895 |
+
|
2896 |
+
color: #1a1c1c;
|
2897 |
+
}
|
2898 |
+
ul.widget-conf li a.widget-conf-disabled {
|
2899 |
+
padding: 12px 0px 12px 20px;
|
2900 |
+
width: 100%;
|
2901 |
+
float: left;
|
2902 |
+
}
|
2903 |
+
ul.widget-conf li a.widget-conf-enabled {
|
2904 |
+
background-color: #fff;
|
2905 |
+
padding: 12px 0px 12px 20px;
|
2906 |
+
width: 180px;
|
2907 |
+
float: left;
|
2908 |
+
border-top: 1px solid #d1d5df;
|
2909 |
+
border-bottom: 1px solid #d1d5df;
|
2910 |
+
border-right: 1px solid #fff;
|
2911 |
+
}
|
2912 |
+
.tooltip-widget {
|
2913 |
+
padding: 15px;
|
2914 |
+
color: #4f5555;
|
2915 |
+
font-size: 13px;
|
2916 |
+
background-color: #f0f5f6;
|
2917 |
+
}
|
2918 |
+
.question-mark {
|
2919 |
+
background: url('../img/question-mark2.jpg') no-repeat;
|
2920 |
+
width: 21px !important;
|
2921 |
+
height: 21px;
|
2922 |
+
border: 1px solid transparent !important;
|
2923 |
+
background-color: transparent;
|
2924 |
+
-webkit-box-shadow: none !important;
|
2925 |
+
border-style: none;
|
2926 |
+
}
|
2927 |
+
.tooltip-left-arrow {
|
2928 |
+
background: url('../img/tooltip-left-arrow.jpg') no-repeat;
|
2929 |
+
width: 7px !important;
|
2930 |
+
height: 11px;
|
2931 |
+
border: 1px solid transparent !important;
|
2932 |
+
background-color: transparent;
|
2933 |
+
-webkit-box-shadow: none !important;
|
2934 |
+
border-style: none;
|
2935 |
+
}
|
2936 |
+
.widget-conf-cont {
|
2937 |
+
width: 880px !important;
|
2938 |
+
float: none;
|
2939 |
+
margin: 0px auto;
|
2940 |
+
margin-top: 70px;
|
2941 |
+
border: 1px solid #d9e0e0;
|
2942 |
+
|
2943 |
+
}
|
2944 |
+
.widget-row1 {
|
2945 |
+
background-color: #f3f6f6;
|
2946 |
+
padding: 30px 40px;
|
2947 |
+
}
|
2948 |
+
.widget-row2 {
|
2949 |
+
|
2950 |
+
padding: 20px 80px 20px 40px;
|
2951 |
+
}
|
2952 |
+
.widget-row1-head {
|
2953 |
+
font-size: 24px;
|
2954 |
+
}
|
2955 |
+
.widget-row1-text, .widget-row2-text {
|
2956 |
+
font-size: 14px;
|
2957 |
+
color: #4f5555;
|
2958 |
+
}
|
2959 |
+
.link-blue {
|
2960 |
+
|
2961 |
+
padding-top: 19px;
|
2962 |
+
float: right;
|
2963 |
+
color: #1496a6;
|
2964 |
+
width: 135px;
|
2965 |
+
}
|
2966 |
+
.link-blue:hover {
|
2967 |
+
color: #1496a6 !important;
|
2968 |
+
}
|
2969 |
+
.widget-arrow-new {
|
2970 |
+
background: url('../img/arrow.png') 50%;
|
2971 |
+
width: 5px;
|
2972 |
+
height: 9px;
|
2973 |
+
border: 0;
|
2974 |
+
cursor: pointer;
|
2975 |
+
background-repeat: no-repeat;
|
2976 |
+
margin-top: 6px;
|
2977 |
+
float: right;
|
2978 |
+
margin-left: 5px;
|
2979 |
+
}
|
2980 |
+
.widget-row2-head {
|
2981 |
+
font-size: 14px;
|
2982 |
+
font-weight: bold;
|
2983 |
+
}
|
2984 |
+
/* error 404 mobile*/
|
2985 |
+
.error-img
|
2986 |
+
{
|
2987 |
+
background: url('../img/oops.png') no-repeat;
|
2988 |
+
height:71px;
|
2989 |
+
width:250px !important;
|
2990 |
+
}
|
2991 |
+
.error-border-top
|
2992 |
+
{
|
2993 |
+
border-top:1px solid #d7d8dc;
|
2994 |
+
width:420px !important;
|
2995 |
+
margin-bottom: 10px;
|
2996 |
+
}
|
2997 |
+
.error-text
|
2998 |
+
{
|
2999 |
+
font-size: 18px;
|
3000 |
+
color: #afb2b9;
|
3001 |
+
margin-bottom: 30px;
|
3002 |
+
}
|
3003 |
+
.button-error
|
3004 |
+
{
|
3005 |
+
height: 45px;
|
3006 |
+
width:200px;
|
3007 |
+
font-size:16px;
|
3008 |
+
background-image: none;
|
3009 |
+
}
|
3010 |
+
.button-error:hover{
|
3011 |
+
background-image: none;
|
3012 |
+
}
|
3013 |
+
.button-error:active{
|
3014 |
+
background-image: none;
|
3015 |
+
}
|
3016 |
+
/* widget configuration mobile with tabs */
|
3017 |
+
.widget-row-button
|
3018 |
+
{
|
3019 |
+
padding:20px 0px 20px 0px;
|
3020 |
+
background-color: #f3f6f6;
|
3021 |
+
}
|
3022 |
+
|
3023 |
+
.button-red-normal
|
3024 |
+
{
|
3025 |
+
|
3026 |
+
background: #ac1d1c url('../img/arrow-white-top-button.png') no-repeat 93%;
|
3027 |
+
font-family: proxima-nova, Arial, sans-serif !important;
|
3028 |
+
font-weight: 600; font-size: 16px;font-style: normal;
|
3029 |
+
-webkit-border-radius: 5px;
|
3030 |
+
-moz-border-radius: 5px;
|
3031 |
+
border-radius: 5px;
|
3032 |
+
color: #ffffff;
|
3033 |
+
text-decoration: none;
|
3034 |
+
vertical-align: middle;
|
3035 |
+
border-right: none;
|
3036 |
+
border-left: none;
|
3037 |
+
text-align: center;
|
3038 |
+
float: none;
|
3039 |
+
height: 55px;
|
3040 |
+
padding: 18px 0px;
|
3041 |
+
}
|
3042 |
+
.button-red-normal:hover{
|
3043 |
+
background: #b32f2e url('../img/arrow-white-top-button.png') no-repeat 93%;
|
3044 |
+
}
|
3045 |
+
.button-red-normal:active{
|
3046 |
+
background: #a51c1b url('../img/arrow-white-top-button.png') no-repeat 93%;
|
3047 |
+
}
|
3048 |
+
.width-205-tab
|
3049 |
+
{
|
3050 |
+
width: 205px !important;
|
3051 |
+
margin:0px auto;
|
3052 |
+
|
3053 |
+
}
|
3054 |
+
pre{
|
3055 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif !important;
|
3056 |
+
font-size:14px !important;
|
3057 |
+
border:none !important;
|
3058 |
+
margin-bottom:0px !important;
|
3059 |
+
}
|
3060 |
+
.template-row1
|
3061 |
+
{
|
3062 |
+
margin-bottom: 40px;
|
3063 |
+
font-size: 14px;
|
3064 |
+
color: #4f5555;
|
3065 |
+
}
|
3066 |
+
.template-row2, .install-row-4
|
3067 |
+
{
|
3068 |
+
font-size: 14px;
|
3069 |
+
}
|
3070 |
+
.install-row1, .install-row3
|
3071 |
+
{
|
3072 |
+
font-size: 14px;
|
3073 |
+
margin-bottom: 20px;
|
3074 |
+
}
|
3075 |
+
.install-row4
|
3076 |
+
{
|
3077 |
+
margin-bottom:20px;
|
3078 |
+
}
|
3079 |
+
.install-row2, .install-row5
|
3080 |
+
{
|
3081 |
+
font-size: 14px;
|
3082 |
+
margin-bottom: 20px;
|
3083 |
+
color: #4f5555;
|
3084 |
+
background-color: #f3f6f6;
|
3085 |
+
border-radius: 5px;
|
3086 |
+
border: 1px solid #e3e3e3;
|
3087 |
+
margin-bottom:20px;
|
3088 |
+
}
|
3089 |
+
.brd-btm-gray5
|
3090 |
+
{
|
3091 |
+
border-bottom: 1px solid #d9e0e0;
|
3092 |
+
}
|
3093 |
+
.widget-row2-template
|
3094 |
+
{
|
3095 |
+
padding: 60px 60px 80px 60px;
|
3096 |
+
}
|
3097 |
+
.widget-row2-install
|
3098 |
+
{
|
3099 |
+
padding: 60px;
|
3100 |
+
}
|
3101 |
+
.button-blue-tab {
|
3102 |
+
|
3103 |
+
border-top: 3px solid #4fc1cb;
|
3104 |
+
border-bottom: 3px solid #36a4b2;
|
3105 |
+
background: #45b5c1;
|
3106 |
+
font-size: 14px;
|
3107 |
+
border-radius: 2px;
|
3108 |
+
color: #ffffff;
|
3109 |
+
text-decoration: none;
|
3110 |
+
vertical-align: middle;
|
3111 |
+
border-right: none;
|
3112 |
+
border-left: none;
|
3113 |
+
text-align: center;
|
3114 |
+
float: none;
|
3115 |
+
padding-top:8px;
|
3116 |
+
height: 40px;
|
3117 |
+
}
|
3118 |
+
.button-blue-tab:hover {
|
3119 |
+
background-color: #54bbc6;
|
3120 |
+
border-top: 3px solid #68c3cc;
|
3121 |
+
border-bottom: 3px solid #50b1bc;
|
3122 |
+
}
|
3123 |
+
.button-blue-tab:active {
|
3124 |
+
background-color: #42adb9;
|
3125 |
+
border-top: 3px solid #359dab;
|
3126 |
+
}
|
3127 |
+
.widget-row1-wborder {
|
3128 |
+
background-color: #f3f6f6;
|
3129 |
+
padding: 30px 40px;
|
3130 |
+
border-bottom: 1px solid #dfe2e9;
|
3131 |
+
}
|
3132 |
+
.widget-row2-new {
|
3133 |
+
|
3134 |
+
padding: 20px 0px 0px 40px;
|
3135 |
+
text-align: center;
|
3136 |
+
}
|
3137 |
+
.widget-row-tabs
|
3138 |
+
{
|
3139 |
+
float:left;
|
3140 |
+
width:100%;
|
3141 |
+
border-bottom: 1px solid #dfe2e9;
|
3142 |
+
height:49px;
|
3143 |
+
background-color: #f3f6f6;
|
3144 |
+
|
3145 |
+
}
|
3146 |
+
ul.widget-conf-tabs {
|
3147 |
+
margin: 0;
|
3148 |
+
padding: 0;
|
3149 |
+
list-style-type: none;
|
3150 |
+
|
3151 |
+
}
|
3152 |
+
ul.widget-conf-tabs li {
|
3153 |
+
|
3154 |
+
font-size: 16px;
|
3155 |
+
font-weight: bold;
|
3156 |
+
display:inline;
|
3157 |
+
}
|
3158 |
+
ul.widget-conf-tabs li a {
|
3159 |
+
|
3160 |
+
color: #1a1c1c;
|
3161 |
+
|
3162 |
+
}
|
3163 |
+
ul.widget-conf-tabs li a.widget-conf-tabs-disabled {
|
3164 |
+
padding: 13px 0px;
|
3165 |
+
width: 250px;
|
3166 |
+
float: left;
|
3167 |
+
background-color: #f3f6f6;
|
3168 |
+
text-align: center;
|
3169 |
+
border-right: 1px solid #dfe2e9;
|
3170 |
+
}
|
3171 |
+
ul.widget-conf-tabs li a.widget-conf-tabs-enabled {
|
3172 |
+
background-color: #fff;
|
3173 |
+
padding: 8px 0px 14px 0px;
|
3174 |
+
width: 150px;
|
3175 |
+
float: left;
|
3176 |
+
border-top: 5px solid #000;
|
3177 |
+
border-top-right-radius: 3px;
|
3178 |
+
border-right: 1px solid #dfe2e9;
|
3179 |
+
border-bottom:1px solid #fff;
|
3180 |
+
text-align: center;
|
3181 |
+
}
|
3182 |
+
/* signed up mobile*/
|
3183 |
+
.signup-block
|
3184 |
+
{
|
3185 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif !important;
|
3186 |
+
|
3187 |
+
|
3188 |
+
}
|
3189 |
+
.tick-signup
|
3190 |
+
{
|
3191 |
+
background: url('../img/DONE.png') no-repeat;
|
3192 |
+
height:33px;
|
3193 |
+
width:33px !important;
|
3194 |
+
margin-top:5px;
|
3195 |
+
}
|
3196 |
+
.signup-head
|
3197 |
+
{
|
3198 |
+
margin-bottom:10px;
|
3199 |
+
font-size: 30px;
|
3200 |
+
padding-left:10px;
|
3201 |
+
}
|
3202 |
+
.signup-subhead
|
3203 |
+
{
|
3204 |
+
font-size:24px;
|
3205 |
+
margin-bottom:20px;
|
3206 |
+
}
|
3207 |
+
.signup-text
|
3208 |
+
{
|
3209 |
+
font-size: 14px;
|
3210 |
+
margin-bottom: 35px;
|
3211 |
+
color: #4f5555;
|
3212 |
+
}
|
3213 |
+
.signup-text1
|
3214 |
+
{
|
3215 |
+
font-size: 16px;
|
3216 |
+
margin-bottom: 20px;
|
3217 |
+
color: #1a1c1c;
|
3218 |
+
}
|
3219 |
+
.signup-text2
|
3220 |
+
{
|
3221 |
+
font-size: 14px;
|
3222 |
+
margin-bottom: 30px;
|
3223 |
+
color: #666666;
|
3224 |
+
}
|
3225 |
+
.signup-row-tabs
|
3226 |
+
{
|
3227 |
+
margin-bottom: 30px;
|
3228 |
+
}
|
3229 |
+
ul.signup-inner-tabs {
|
3230 |
+
margin: 0;
|
3231 |
+
padding: 0;
|
3232 |
+
list-style-type: none;
|
3233 |
+
|
3234 |
+
|
3235 |
+
}
|
3236 |
+
ul.signup-inner-tabs li {
|
3237 |
+
|
3238 |
+
font-size: 14px;
|
3239 |
+
display:inline;
|
3240 |
+
}
|
3241 |
+
ul.signup-inner-tabs li a {
|
3242 |
+
|
3243 |
+
color: #1a1c1c;
|
3244 |
+
|
3245 |
+
}
|
3246 |
+
ul.signup-inner-tabs li a.signup-disabled {
|
3247 |
+
padding: 5px 0px 2px 15px;
|
3248 |
+
float: left;
|
3249 |
+
color: #7a7f7f !important;
|
3250 |
+
}
|
3251 |
+
ul.signup-inner-tabs li a.signup-enabled {
|
3252 |
+
padding: 5px 15px 2px 5px;
|
3253 |
+
color: #4d5252;
|
3254 |
+
width: 139px;
|
3255 |
+
float: left;
|
3256 |
+
border-right: 1px solid #745a7c;
|
3257 |
+
}
|
3258 |
+
.signup-tab-head
|
3259 |
+
{
|
3260 |
+
margin-top:30px;
|
3261 |
+
font-size:16px;
|
3262 |
+
margin-bottom:25px;
|
3263 |
+
}
|
3264 |
+
|
3265 |
+
.signup-tab-text
|
3266 |
+
{
|
3267 |
+
font-size:14px;
|
3268 |
+
color: #4d5252;
|
3269 |
+
margin-bottom:30px;
|
3270 |
+
}
|
3271 |
+
/* dashboard widget conf mobile*/
|
3272 |
+
#header1{width:2000px;border:1px solid black; height:30px;}
|
3273 |
+
|
3274 |
+
#right1{border:1px solid red;position:absolute;right:0;}
|
3275 |
+
.background-border-block-row
|
3276 |
+
{
|
3277 |
+
margin-bottom: 10px;
|
3278 |
+
}
|
3279 |
+
|
3280 |
+
.matrix-arrows, .horizontal-arrows
|
3281 |
+
{
|
3282 |
+
|
3283 |
+
width:72px !important;
|
3284 |
+
float:right;
|
3285 |
+
}
|
3286 |
+
.left-gray
|
3287 |
+
{
|
3288 |
+
background: url('../img/left-gray.png') no-repeat;
|
3289 |
+
height:16px;
|
3290 |
+
width:16px !important;
|
3291 |
+
float:left;
|
3292 |
+
margin-right:40px;
|
3293 |
+
}
|
3294 |
+
.right-black
|
3295 |
+
{
|
3296 |
+
background: url('../img/right-black.png') no-repeat;
|
3297 |
+
height:16px;
|
3298 |
+
width:16px !important;
|
3299 |
+
float:left;
|
3300 |
+
}
|
3301 |
+
.up-gray
|
3302 |
+
{
|
3303 |
+
background: url('../img/up-gray.png') no-repeat;
|
3304 |
+
height:16px;
|
3305 |
+
width:16px !important;
|
3306 |
+
float:left;
|
3307 |
+
}
|
3308 |
+
.down-black
|
3309 |
+
{
|
3310 |
+
background: url('../img/down-black.png') no-repeat;
|
3311 |
+
height:16px;
|
3312 |
+
width:16px !important;
|
3313 |
+
float:left;
|
3314 |
+
}
|
3315 |
+
.picker-blue-block
|
3316 |
+
{
|
3317 |
+
background: #45b5c1 url('../img/color-pic.png') no-repeat 50%;
|
3318 |
+
height:39px;
|
3319 |
+
margin-right:12px;
|
3320 |
+
width:40px !important;
|
3321 |
+
}
|
3322 |
+
.picker-gray-block
|
3323 |
+
{
|
3324 |
+
background: #848484 url('../img/color-pic.png') no-repeat 50%;
|
3325 |
+
height:39px;
|
3326 |
+
margin-right:12px;
|
3327 |
+
width:40px !important;
|
3328 |
+
}
|
3329 |
+
.picker-red-block
|
3330 |
+
{
|
3331 |
+
background: #e27171 url('../img/color-pic.png') no-repeat 50%;
|
3332 |
+
height:39px;
|
3333 |
+
margin-right:12px;
|
3334 |
+
width:40px !important;
|
3335 |
+
}
|
3336 |
+
.picker-green-block
|
3337 |
+
{
|
3338 |
+
background: #2eae7f url('../img/color-pic.png') no-repeat 50%;
|
3339 |
+
height:39px;
|
3340 |
+
margin-right:12px;
|
3341 |
+
width:40px !important;
|
3342 |
+
}
|
3343 |
+
.add-block
|
3344 |
+
{
|
3345 |
+
background: #b0b6b9 url('../img/add.png') no-repeat 50%;
|
3346 |
+
height:39px;
|
3347 |
+
width:40px !important;
|
3348 |
+
}
|
3349 |
+
.cross-block
|
3350 |
+
{
|
3351 |
+
background: url('../img/delete.png') no-repeat;
|
3352 |
+
width:20px;
|
3353 |
+
height:20px;
|
3354 |
+
}
|
3355 |
+
.font-normal
|
3356 |
+
{
|
3357 |
+
font-weight: normal !important;
|
3358 |
+
color: #4f5555 !important;
|
3359 |
+
}
|
3360 |
+
.check-background-block
|
3361 |
+
{
|
3362 |
+
padding-left:23px !important;
|
3363 |
+
}
|
3364 |
+
input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
|
3365 |
+
.layout-block
|
3366 |
+
{
|
3367 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif !important;
|
3368 |
+
|
3369 |
+
}
|
3370 |
+
.layout-head
|
3371 |
+
{
|
3372 |
+
font-size: 18px;
|
3373 |
+
color:#1a1c1c;
|
3374 |
+
margin-bottom: 20px;
|
3375 |
+
}
|
3376 |
+
.layout-cont
|
3377 |
+
{
|
3378 |
+
border:1px solid #d9e3e3
|
3379 |
+
}
|
3380 |
+
.layout-cont-head
|
3381 |
+
{
|
3382 |
+
background-color: #f3f6f6;
|
3383 |
+
font-size:18px;
|
3384 |
+
color: #1a1c1c;
|
3385 |
+
padding: 10px 0px 10px 15px;
|
3386 |
+
}
|
3387 |
+
.content-layout-block
|
3388 |
+
{
|
3389 |
+
padding: 20px 30px 10px 30px;
|
3390 |
+
|
3391 |
+
}
|
3392 |
+
.background-border-block
|
3393 |
+
{
|
3394 |
+
padding: 20px 0px 20px 30px;
|
3395 |
+
}
|
3396 |
+
.header-block
|
3397 |
+
{
|
3398 |
+
padding: 20px 30px 20px 30px;
|
3399 |
+
}
|
3400 |
+
.description-block
|
3401 |
+
{
|
3402 |
+
padding: 20px 30px 10px 30px;
|
3403 |
+
|
3404 |
+
}
|
3405 |
+
.description-strip
|
3406 |
+
{
|
3407 |
+
border:1px solid #cddcdc;
|
3408 |
+
padding: 8px 5px 8px 12px;
|
3409 |
+
background-color: #fafbfb;
|
3410 |
+
margin-bottom:5px;
|
3411 |
+
}
|
3412 |
+
.button-strip
|
3413 |
+
{
|
3414 |
+
|
3415 |
+
background-color:#2eae7f;
|
3416 |
+
color: #ffffff !important;
|
3417 |
+
font-size: 18px;
|
3418 |
+
text-decoration: none;
|
3419 |
+
vertical-align: middle;
|
3420 |
+
height: 50px;
|
3421 |
+
border-right: none;
|
3422 |
+
border-left: none;
|
3423 |
+
font-weight: medium;
|
3424 |
+
text-align: center;
|
3425 |
+
cursor: pointer;
|
3426 |
+
padding-top:12px;
|
3427 |
+
}
|
3428 |
+
.description-label
|
3429 |
+
{
|
3430 |
+
font-size: 14px;
|
3431 |
+
color: #4f5555;
|
3432 |
+
}
|
3433 |
+
.content-layout-block-row
|
3434 |
+
{
|
3435 |
+
margin-bottom: 10px;
|
3436 |
+
}
|
3437 |
+
.content-layout-block-row1
|
3438 |
+
{
|
3439 |
+
margin-bottom: 15px;
|
3440 |
+
}
|
3441 |
+
.description-block-row
|
3442 |
+
{
|
3443 |
+
margin-bottom: 20px;
|
3444 |
+
}
|
3445 |
+
.content-layout-label
|
3446 |
+
{
|
3447 |
+
padding-top: 8px;
|
3448 |
+
font-size: 14px;
|
3449 |
+
color: #4f5555;
|
3450 |
+
}
|
3451 |
+
.layout-dropdown
|
3452 |
+
{
|
3453 |
+
color: #4f5555;
|
3454 |
+
font-size:14px;
|
3455 |
+
padding-left:10px;
|
3456 |
+
}
|
3457 |
+
.layout-menu-dropdown > li > a {
|
3458 |
+
border-top: 1px solid #dde2e4;
|
3459 |
+
background-color: #fcfcfc;
|
3460 |
+
padding-top: 8px;
|
3461 |
+
text-align: left;
|
3462 |
+
width: 230px;
|
3463 |
+
border-left: 1px solid #dde2e4;
|
3464 |
+
border-right: 1px solid #dde2e4;
|
3465 |
+
height: 40px;
|
3466 |
+
font-size:14px;
|
3467 |
+
}
|
3468 |
+
.layout-menu-dropdown > li:last-child > a {
|
3469 |
+
border-bottom: 1px solid #dde2e4;
|
3470 |
+
border-bottom-left-radius: 3px;
|
3471 |
+
border-bottom-right-radius: 3px;
|
3472 |
+
}
|
3473 |
+
.caret-layout {
|
3474 |
+
float: right;
|
3475 |
+
margin-top: 8px;
|
3476 |
+
width: 6px;
|
3477 |
+
margin-right: 10px;
|
3478 |
+
border-top: 8px solid #b0b6b9;
|
3479 |
+
border-right: 5px solid transparent;
|
3480 |
+
border-bottom: 0 dotted;
|
3481 |
+
border-left: 5px solid transparent;
|
3482 |
+
cursor: pointer;
|
3483 |
+
}
|
3484 |
+
.description-dropdown
|
3485 |
+
{
|
3486 |
+
color: #4f5555;
|
3487 |
+
font-size:14px;
|
3488 |
+
padding-left:10px;
|
3489 |
+
height:auto;
|
3490 |
+
padding-top:0px;
|
3491 |
+
width:70px;
|
3492 |
+
border: none;
|
3493 |
+
background-color: transparent;
|
3494 |
+
}
|
3495 |
+
.description-menu-dropdown
|
3496 |
+
{
|
3497 |
+
margin-top:9px;
|
3498 |
+
}
|
3499 |
+
.description-menu-dropdown > li > a {
|
3500 |
+
|
3501 |
+
border-top: none;
|
3502 |
+
background-color: #fcfcfc;
|
3503 |
+
padding-top: 3px;
|
3504 |
+
text-align: left;
|
3505 |
+
width: 230px;
|
3506 |
+
border-left: 1px solid #dde2e4;
|
3507 |
+
border-right: 1px solid #dde2e4;
|
3508 |
+
height: auto;
|
3509 |
+
font-size:14px;
|
3510 |
+
}
|
3511 |
+
.description-menu-dropdown > li:last-child > a {
|
3512 |
+
border-bottom: 1px solid #dde2e4;
|
3513 |
+
border-bottom-left-radius: 3px;
|
3514 |
+
border-bottom-right-radius: 3px;
|
3515 |
+
}
|
3516 |
+
.width-70
|
3517 |
+
{
|
3518 |
+
width:70px !important;
|
3519 |
+
}
|
3520 |
+
.width-71
|
3521 |
+
{
|
3522 |
+
width:71px !important;
|
3523 |
+
}
|
3524 |
+
.widget-text
|
3525 |
+
{
|
3526 |
+
padding-top:8px;
|
3527 |
+
font-size: 14px;
|
3528 |
+
color: #4f5555;
|
3529 |
+
}
|
3530 |
+
.matrix-outer-block
|
3531 |
+
{
|
3532 |
+
margin-top: 240px;
|
3533 |
+
border: 1px solid #dae4e4;
|
3534 |
+
padding: 18px 0px 0px 0px;
|
3535 |
+
margin-left: 80px;
|
3536 |
+
border-radius: 5px;
|
3537 |
+
}
|
3538 |
+
.matrix-block
|
3539 |
+
{
|
3540 |
+
height: 526px;
|
3541 |
+
overflow: auto;
|
3542 |
+
white-space: nowrap;
|
3543 |
+
padding: 0px 20px 20px 20px;
|
3544 |
+
|
3545 |
+
}
|
3546 |
+
.horizontal-outer-block
|
3547 |
+
{
|
3548 |
+
margin-top:240px;
|
3549 |
+
margin-left: 80px;
|
3550 |
+
border: 1px solid #dae4e4;
|
3551 |
+
padding: 18px 20px 0px 20px;
|
3552 |
+
height: 283px;
|
3553 |
+
border-radius: 5px;
|
3554 |
+
}
|
3555 |
+
.horizontal-block
|
3556 |
+
{
|
3557 |
+
overflow: auto;
|
3558 |
+
overflow-y:hidden;
|
3559 |
+
white-space: nowrap;
|
3560 |
+
padding-bottom:15px;
|
3561 |
+
|
3562 |
+
}
|
3563 |
+
.horizontal-outer-block1
|
3564 |
+
{
|
3565 |
+
margin-top:240px;
|
3566 |
+
margin-left: 80px;
|
3567 |
+
border: 1px solid #dae4e4;
|
3568 |
+
padding: 18px 20px 0px 20px;
|
3569 |
+
border-radius: 5px;
|
3570 |
+
}
|
3571 |
+
.horizontal-block1
|
3572 |
+
{
|
3573 |
+
height: 526px;
|
3574 |
+
overflow: auto;
|
3575 |
+
white-space: nowrap;
|
3576 |
+
padding-bottom:15px;
|
3577 |
+
|
3578 |
+
}
|
3579 |
+
.vertical-block
|
3580 |
+
{
|
3581 |
+
margin-top:240px;
|
3582 |
+
margin-left: 80px;
|
3583 |
+
border: 1px solid #dae4e4;
|
3584 |
+
padding: 18px 20px 20px 20px;
|
3585 |
+
height:800px;
|
3586 |
+
overflow: auto;
|
3587 |
+
overflow-x:hidden;
|
3588 |
+
white-space: nowrap;
|
3589 |
+
border-radius: 5px;
|
3590 |
+
}
|
3591 |
+
.matrix-row-head
|
3592 |
+
{
|
3593 |
+
padding: 0px 35px 0px 35px;
|
3594 |
+
}
|
3595 |
+
.matrix-row-head, .horizontal-row-head, .vertical-row-head
|
3596 |
+
{
|
3597 |
+
margin-bottom: 10px;
|
3598 |
+
|
3599 |
+
}
|
3600 |
+
.matrix-main-head, .horizontal-main-head, .vertical-main-head
|
3601 |
+
{
|
3602 |
+
font-weight: bold;
|
3603 |
+
font-size: 14px;
|
3604 |
+
}
|
3605 |
+
.matrix-sub-head, .horizontal-sub-head, .vertical-sub-head
|
3606 |
+
{
|
3607 |
+
font-size: 10px;
|
3608 |
+
color: #949494;
|
3609 |
+
margin-top:2px;
|
3610 |
+
}
|
3611 |
+
|
3612 |
+
|
3613 |
+
.matrix-row-content , .vertical-row-content
|
3614 |
+
{
|
3615 |
+
margin-bottom:20px;
|
3616 |
+
}
|
3617 |
+
|
3618 |
+
.matrix-row-block, .horizontal-row-block
|
3619 |
+
{
|
3620 |
+
width:135px !important;
|
3621 |
+
height: auto;
|
3622 |
+
margin-right: 20px;
|
3623 |
+
display: inline-block;
|
3624 |
+
|
3625 |
+
}
|
3626 |
+
.vertical-row-block
|
3627 |
+
{
|
3628 |
+
width:135px !important;
|
3629 |
+
height: auto;
|
3630 |
+
margin-right: 20px;
|
3631 |
+
display: block;
|
3632 |
+
|
3633 |
+
}
|
3634 |
+
.matrix-row-image, .horizontal-row-image, .vertical-row-image
|
3635 |
+
{
|
3636 |
+
width:135px !important;
|
3637 |
+
height:135px;
|
3638 |
+
background-color: #ecf0f0;
|
3639 |
+
float: left;
|
3640 |
+
margin-bottom: 10px;
|
3641 |
+
}
|
3642 |
+
.matrix-text, .horizontal-text, .vertical-text
|
3643 |
+
{
|
3644 |
+
width:135px;
|
3645 |
+
float:left;
|
3646 |
+
color: #989898;
|
3647 |
+
font-size: 12px;
|
3648 |
+
margin-bottom:7px;
|
3649 |
+
}
|
3650 |
+
.matrix-price, .horizontal-price, .vertical-price
|
3651 |
+
{
|
3652 |
+
width:135px;
|
3653 |
+
float:left;
|
3654 |
+
font-size: 12px;
|
3655 |
+
font-weight: bold;
|
3656 |
+
border-top:1px solid #ebebeb;
|
3657 |
+
border-bottom: 1px solid #ebebeb;
|
3658 |
+
padding-top:4px;
|
3659 |
+
padding-bottom: 4px;
|
3660 |
+
}
|
3661 |
+
/* popup filter mobile */
|
3662 |
+
.buttons-row {
|
3663 |
+
padding: 25px;
|
3664 |
+
background-color: #f9f9f9;
|
3665 |
+
}
|
3666 |
+
.cancel-link {
|
3667 |
+
font-weight: bold;
|
3668 |
+
font-size: 13px;
|
3669 |
+
border-bottom: 1px solid #000;
|
3670 |
+
width: 94px !important;
|
3671 |
+
margin-top: 10px;
|
3672 |
+
margin-right: 30px;
|
3673 |
+
}
|
3674 |
+
.remove-txt {
|
3675 |
+
margin-top: 15px;
|
3676 |
+
font-size: 12px;
|
3677 |
+
font-weight: bold;
|
3678 |
+
}
|
3679 |
+
.filter-head {
|
3680 |
+
font-weight: bold;
|
3681 |
+
font-size: 25px;
|
3682 |
+
padding: 15px 0px 14px 40px;
|
3683 |
+
}
|
3684 |
+
.chosen-container {
|
3685 |
+
font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif !important;
|
3686 |
+
position: relative;
|
3687 |
+
display: inline-block;
|
3688 |
+
vertical-align: middle;
|
3689 |
+
font-size: 16px;
|
3690 |
+
zoom: 1;
|
3691 |
+
*display: inline;
|
3692 |
+
-webkit-user-select: none;
|
3693 |
+
-moz-user-select: none;
|
3694 |
+
user-select: none;
|
3695 |
+
font-weight: medium;
|
3696 |
+
color: #1a1c1c;
|
3697 |
+
border-top: 1px solid #cecece;
|
3698 |
+
border-top-left-radius: 5px;
|
3699 |
+
border-top-right-radius: 5px;
|
3700 |
+
min-height: 40px !important;
|
3701 |
+
width: 360px !important;
|
3702 |
+
}
|
3703 |
+
.chosen-container .chosen-drop {
|
3704 |
+
position: absolute;
|
3705 |
+
top: 100%;
|
3706 |
+
left: -9999px;
|
3707 |
+
z-index: 1010;
|
3708 |
+
-webkit-box-sizing: border-box;
|
3709 |
+
-moz-box-sizing: border-box;
|
3710 |
+
box-sizing: border-box;
|
3711 |
+
width: 100%;
|
3712 |
+
border: 1px solid #ece7e7;
|
3713 |
+
border-top: 0;
|
3714 |
+
background: #fdfdfd;
|
3715 |
+
box-shadow: none;
|
3716 |
+
}
|
3717 |
+
.chosen-container.chosen-with-drop .chosen-drop {
|
3718 |
+
left: 0;
|
3719 |
+
}
|
3720 |
+
.chosen-container a {
|
3721 |
+
cursor: pointer;
|
3722 |
+
height: 40px !important;
|
3723 |
+
}
|
3724 |
+
.chosen-container-single .chosen-single {
|
3725 |
+
position: relative;
|
3726 |
+
display: block;
|
3727 |
+
overflow: hidden;
|
3728 |
+
padding: 8px 0 8px 15px;
|
3729 |
+
border: 1px solid #ece7e7;
|
3730 |
+
border-radius: 5px;
|
3731 |
+
background: none;
|
3732 |
+
box-shadow: none;
|
3733 |
+
background-color: #fdfdfd;
|
3734 |
+
background-clip: padding-box;
|
3735 |
+
color: #1a1c1c;
|
3736 |
+
text-decoration: none;
|
3737 |
+
white-space: nowrap;
|
3738 |
+
vertical-align: middle !important;
|
3739 |
+
}
|
3740 |
+
.chosen-container-single .chosen-default {
|
3741 |
+
color: #1a1c1c;
|
3742 |
+
}
|
3743 |
+
.chosen-container-single .chosen-single abbr:hover {
|
3744 |
+
background-position: -42px -10px;
|
3745 |
+
}
|
3746 |
+
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
|
3747 |
+
background-position: -42px -10px;
|
3748 |
+
}
|
3749 |
+
.chosen-container-single .chosen-single div {
|
3750 |
+
position: absolute;
|
3751 |
+
top: 0;
|
3752 |
+
right: 0;
|
3753 |
+
display: block;
|
3754 |
+
width: 40px;
|
3755 |
+
height: 100%;
|
3756 |
+
}
|
3757 |
+
.chosen-container-single .chosen-single div b {
|
3758 |
+
display: block;
|
3759 |
+
width: 100%;
|
3760 |
+
height: 100%;
|
3761 |
+
/*background: url('../img/chosen-sprite.png') no-repeat 15px 15px; */
|
3762 |
+
background-color: #efefef;
|
3763 |
+
background: #efefef url('../img/down-arrow.png') no-repeat 50%;
|
3764 |
+
}
|
3765 |
+
.chosen-container-single .chosen-search {
|
3766 |
+
position: relative;
|
3767 |
+
z-index: 1010;
|
3768 |
+
margin: 0;
|
3769 |
+
white-space: nowrap;
|
3770 |
+
font-size: 16px;
|
3771 |
+
padding-left: 10px;
|
3772 |
+
height: 40px !important;
|
3773 |
+
vertical-align: middle;
|
3774 |
+
display: table-cell;
|
3775 |
+
border-bottom: 1px solid #ece7e7;
|
3776 |
+
width: 360px;
|
3777 |
+
}
|
3778 |
+
.chosen-container-single .chosen-search input[type="text"] {
|
3779 |
+
-webkit-box-sizing: border-box;
|
3780 |
+
-moz-box-sizing: border-box;
|
3781 |
+
box-sizing: border-box;
|
3782 |
+
margin: 1px 0;
|
3783 |
+
padding: 4px 20px 4px 5px;
|
3784 |
+
width: 100%;
|
3785 |
+
height: auto;
|
3786 |
+
outline: 0;
|
3787 |
+
border: none;
|
3788 |
+
font-size: 16px;
|
3789 |
+
font-family: Helvetica !important;
|
3790 |
+
border-radius: 0;
|
3791 |
+
background: none;
|
3792 |
+
box-shadow: none;
|
3793 |
+
background: #fdfdfd;
|
3794 |
+
}
|
3795 |
+
.chosen-container-single .chosen-drop {
|
3796 |
+
margin-top: -1px;
|
3797 |
+
border-radius: 0 0 4px 4px;
|
3798 |
+
background-clip: padding-box;
|
3799 |
+
border-top: 1px solid #ece7e7;
|
3800 |
+
}
|
3801 |
+
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
|
3802 |
+
position: absolute;
|
3803 |
+
left: -9999px;
|
3804 |
+
}
|
3805 |
+
|
3806 |
+
.chosen-container .chosen-results {
|
3807 |
+
position: relative;
|
3808 |
+
overflow-x: hidden;
|
3809 |
+
overflow-y: auto;
|
3810 |
+
margin: 0;
|
3811 |
+
padding: 0;
|
3812 |
+
max-height: 240px;
|
3813 |
+
-webkit-overflow-scrolling: touch;
|
3814 |
+
}
|
3815 |
+
.chosen-container .chosen-results li {
|
3816 |
+
display: none;
|
3817 |
+
margin: 0;
|
3818 |
+
padding: 11px 0px 11px 15px;
|
3819 |
+
list-style: none;
|
3820 |
+
vertcal-align: middle;
|
3821 |
+
border-top: 1px solid #ece7e7;
|
3822 |
+
}
|
3823 |
+
.chosen-container .chosen-results li:first-child {
|
3824 |
+
display: none;
|
3825 |
+
margin: 0;
|
3826 |
+
padding: 11px 0px 11px 15px;
|
3827 |
+
list-style: none;
|
3828 |
+
vertcal-align: middle;
|
3829 |
+
border-top: none;
|
3830 |
+
}
|
3831 |
+
.chosen-container .chosen-results li.active-result {
|
3832 |
+
display: list-item;
|
3833 |
+
cursor: pointer;
|
3834 |
+
}
|
3835 |
+
.chosen-container .chosen-results li.disabled-result {
|
3836 |
+
display: list-item;
|
3837 |
+
color: #ccc;
|
3838 |
+
cursor: default;
|
3839 |
+
}
|
3840 |
+
.chosen-container .chosen-results li.highlighted {
|
3841 |
+
background-color: #fff;
|
3842 |
+
color: #1a1c1c;
|
3843 |
+
background-image: none;
|
3844 |
+
}
|
3845 |
+
.chosen-container .chosen-results li.no-results {
|
3846 |
+
display: list-item;
|
3847 |
+
background: #f4f4f4;
|
3848 |
+
}
|
3849 |
+
.chosen-container .chosen-results li.group-result {
|
3850 |
+
display: list-item;
|
3851 |
+
font-weight: medium;
|
3852 |
+
cursor: default;
|
3853 |
+
}
|
3854 |
+
.chosen-container .chosen-results li.group-option {
|
3855 |
+
padding-left: 15px;
|
3856 |
+
}
|
3857 |
+
.chosen-container .chosen-results li em {
|
3858 |
+
font-style: normal;
|
3859 |
+
text-decoration: underline;
|
3860 |
+
}
|
3861 |
+
|
3862 |
+
.chosen-container-multi .chosen-choices {
|
3863 |
+
position: relative;
|
3864 |
+
overflow: hidden;
|
3865 |
+
-webkit-box-sizing: border-box;
|
3866 |
+
-moz-box-sizing: border-box;
|
3867 |
+
box-sizing: border-box;
|
3868 |
+
margin: 0;
|
3869 |
+
padding: 0;
|
3870 |
+
width: 100%;
|
3871 |
+
max-height: auto !important;
|
3872 |
+
height: 1%;
|
3873 |
+
border: 1px solid #ece7e7;
|
3874 |
+
background-color: #fdfdfd;
|
3875 |
+
background-image: none;
|
3876 |
+
border-radius: 5px;
|
3877 |
+
cursor: text;
|
3878 |
+
}
|
3879 |
+
.chosen-container-multi .chosen-choices li {
|
3880 |
+
float: left;
|
3881 |
+
list-style: none;
|
3882 |
+
}
|
3883 |
+
.chosen-container-multi .chosen-choices li.search-field {
|
3884 |
+
margin: 0;
|
3885 |
+
padding: 0;
|
3886 |
+
white-space: nowrap;
|
3887 |
+
}
|
3888 |
+
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
|
3889 |
+
margin: 1px 0;
|
3890 |
+
padding: 5px;
|
3891 |
+
height: 40px;
|
3892 |
+
outline: 0;
|
3893 |
+
border: 0 !important;
|
3894 |
+
background: transparent !important;
|
3895 |
+
box-shadow: none;
|
3896 |
+
color: #666;
|
3897 |
+
font-size: 16px;
|
3898 |
+
font-family: Helvetica !important;
|
3899 |
+
line-height: normal;
|
3900 |
+
border-radius: 0;
|
3901 |
+
}
|
3902 |
+
.chosen-container-multi .chosen-choices li.search-field .default {
|
3903 |
+
color: #999;
|
3904 |
+
}
|
3905 |
+
.chosen-container-multi .chosen-choices li.search-choice {
|
3906 |
+
position: relative;
|
3907 |
+
margin: 8px 0 3px 5px;
|
3908 |
+
padding: 7px 25px 5px 15px;
|
3909 |
+
border: none;
|
3910 |
+
border-radius: 3px;
|
3911 |
+
color: #8e8e8e;
|
3912 |
+
line-height: 13px;
|
3913 |
+
cursor: default;
|
3914 |
+
background: #eeeff0 url('../img/x.png') no-repeat 90%;
|
3915 |
+
font-size: 12px;
|
3916 |
+
}
|
3917 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
|
3918 |
+
position: absolute;
|
3919 |
+
top: 4px;
|
3920 |
+
right: 3px;
|
3921 |
+
display: block;
|
3922 |
+
width: 12px;
|
3923 |
+
height: 12px;
|
3924 |
+
background: url('img/chosen-sprite.png') -42px 1px no-repeat;
|
3925 |
+
font-size: 16px;
|
3926 |
+
}
|
3927 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
|
3928 |
+
background-position: -42px -10px;
|
3929 |
+
}
|
3930 |
+
.chosen-container-multi .chosen-choices li.search-choice-disabled {
|
3931 |
+
padding-right: 5px;
|
3932 |
+
border: 1px solid #ece7e7;
|
3933 |
+
background-color: #fdfdfd;
|
3934 |
+
color: #1a1c1c;
|
3935 |
+
background-image: none;
|
3936 |
+
}
|
3937 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus {
|
3938 |
+
background: #d4d4d4;
|
3939 |
+
}
|
3940 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
|
3941 |
+
background-position: -42px -10px;
|
3942 |
+
}
|
3943 |
+
.chosen-container-multi .chosen-results {
|
3944 |
+
margin: 0;
|
3945 |
+
padding: 0;
|
3946 |
+
}
|
3947 |
+
.chosen-container-multi .chosen-drop .result-selected {
|
3948 |
+
display: list-item;
|
3949 |
+
color: #ccc;
|
3950 |
+
cursor: default;
|
3951 |
+
}
|
3952 |
+
.chosen-container-active .chosen-single {
|
3953 |
+
border: 1px solid #ece7e7;
|
3954 |
+
}
|
3955 |
+
.chosen-container-active.chosen-with-drop .chosen-single {
|
3956 |
+
border: 1px solid #ece7e7;
|
3957 |
+
-moz-border-radius-bottomright: 0;
|
3958 |
+
border-bottom-right-radius: 0;
|
3959 |
+
-moz-border-radius-bottomleft: 0;
|
3960 |
+
border-bottom-left-radius: 0;
|
3961 |
+
background-image: none;
|
3962 |
+
box-shadow: none;
|
3963 |
+
}
|
3964 |
+
.chosen-container-active.chosen-with-drop .chosen-single div {
|
3965 |
+
border-left: none;
|
3966 |
+
background: transparent;
|
3967 |
+
}
|
3968 |
+
.chosen-container-active.chosen-with-drop .chosen-single div b {
|
3969 |
+
background-position: -18px 2px;
|
3970 |
+
background: #efefef url('../img/down-arrow.png') no-repeat 50%;
|
3971 |
+
}
|
3972 |
+
.chosen-container-active .chosen-choices {
|
3973 |
+
box-shadow: none;
|
3974 |
+
border: 1px solid #e4dddd;
|
3975 |
+
}
|
3976 |
+
|
3977 |
+
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
|
3978 |
+
|
3979 |
+
}
|
3980 |
+
.chosen-disabled {
|
3981 |
+
cursor: default;
|
3982 |
+
}
|
3983 |
+
.chosen-disabled .chosen-single {
|
3984 |
+
cursor: default;
|
3985 |
+
}
|
3986 |
+
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
|
3987 |
+
cursor: default;
|
3988 |
+
}
|
3989 |
+
.chosen-rtl {
|
3990 |
+
text-align: right;
|
3991 |
+
}
|
3992 |
+
.chosen-rtl .chosen-single {
|
3993 |
+
overflow: visible;
|
3994 |
+
padding: 0 8px 0 0;
|
3995 |
+
}
|
3996 |
+
.chosen-rtl .chosen-single span {
|
3997 |
+
margin-right: 0;
|
3998 |
+
margin-left: 26px;
|
3999 |
+
direction: rtl;
|
4000 |
+
}
|
4001 |
+
.chosen-rtl .chosen-single-with-deselect span {
|
4002 |
+
margin-left: 38px;
|
4003 |
+
}
|
4004 |
+
.chosen-rtl .chosen-single div {
|
4005 |
+
right: auto;
|
4006 |
+
left: 3px;
|
4007 |
+
}
|
4008 |
+
.chosen-rtl .chosen-single abbr {
|
4009 |
+
right: auto;
|
4010 |
+
left: 26px;
|
4011 |
+
}
|
4012 |
+
.chosen-rtl .chosen-choices li {
|
4013 |
+
float: right;
|
4014 |
+
}
|
4015 |
+
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
|
4016 |
+
direction: rtl;
|
4017 |
+
}
|
4018 |
+
.chosen-rtl .chosen-choices li.search-choice {
|
4019 |
+
margin: 3px 5px 3px 0;
|
4020 |
+
padding: 3px 5px 3px 19px;
|
4021 |
+
}
|
4022 |
+
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
|
4023 |
+
right: auto;
|
4024 |
+
left: 4px;
|
4025 |
+
}
|
4026 |
+
.chosen-rtl.chosen-container-single-nosearch .chosen-search, .chosen-rtl .chosen-drop {
|
4027 |
+
left: 9999px;
|
4028 |
+
}
|
4029 |
+
.chosen-rtl.chosen-container-single .chosen-results {
|
4030 |
+
margin: 0 0 4px 4px;
|
4031 |
+
padding: 0 4px 0 0;
|
4032 |
+
}
|
4033 |
+
.chosen-rtl .chosen-results li.group-option {
|
4034 |
+
padding-right: 15px;
|
4035 |
+
padding-left: 0;
|
4036 |
+
}
|
4037 |
+
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
|
4038 |
+
border-right: none;
|
4039 |
+
}
|
4040 |
+
.chosen-rtl .chosen-search input[type="text"] {
|
4041 |
+
padding: 4px 5px 4px 20px;
|
4042 |
+
background: white url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4043 |
+
background: url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4044 |
+
background: url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4045 |
+
background: url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4046 |
+
background: url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4047 |
+
background: url('img/chosen-sprite.png') no-repeat -30px -20px;
|
4048 |
+
direction: rtl;
|
4049 |
+
}
|
4050 |
+
.fliter-row-cont {
|
4051 |
+
width: 780px !important;
|
4052 |
+
margin: 20px auto;
|
4053 |
+
float: none;
|
4054 |
+
}
|
4055 |
+
.buttons-row-inner {
|
4056 |
+
width: 300px !important;
|
4057 |
+
margin: 0px auto;
|
4058 |
+
float: none;
|
4059 |
+
}
|
4060 |
+
/* account profile1 mobile*/
|
4061 |
+
.top-button-row {
|
4062 |
+
position: absolute;
|
4063 |
+
left: 120px;
|
4064 |
+
right: 0;
|
4065 |
+
border-bottom: 1px solid #d4dddd;
|
4066 |
+
top: 62px;
|
4067 |
+
}
|
4068 |
+
.middle-nav-account {
|
4069 |
+
border-right: 1px solid #dfe2e9;
|
4070 |
+
}
|
4071 |
+
ul.block-account {
|
4072 |
+
display: block;
|
4073 |
+
float: left;
|
4074 |
+
list-style-type: none;
|
4075 |
+
padding: 0;
|
4076 |
+
margin: 0;
|
4077 |
+
}
|
4078 |
+
ul.block-account li {
|
4079 |
+
display: block;
|
4080 |
+
float: left;
|
4081 |
+
}
|
4082 |
+
ul.block-account li a {
|
4083 |
+
display: block;
|
4084 |
+
float: left;
|
4085 |
+
color: #1a1c1c;
|
4086 |
+
padding-left: 20px;
|
4087 |
+
padding-top: 60px;
|
4088 |
+
text-decoration: underline !important;
|
4089 |
+
font-size: 12px;
|
4090 |
+
font-weight: bold;
|
4091 |
+
}
|
4092 |
+
|
4093 |
+
ul.block-account li ul.account-list {
|
4094 |
+
display: block;
|
4095 |
+
float: left;
|
4096 |
+
list-style-type: none;
|
4097 |
+
margin: 20px 0px 10px 0px;
|
4098 |
+
padding: 0;
|
4099 |
+
color: #1a1c1c;
|
4100 |
+
float: left;
|
4101 |
+
}
|
4102 |
+
ul.block-account li ul.account-list li a {
|
4103 |
+
display: block;
|
4104 |
+
float: left;
|
4105 |
+
color: #1a1c1c;
|
4106 |
+
padding: 9px 0px 9px 20px;
|
4107 |
+
width: 180px;
|
4108 |
+
float: left;
|
4109 |
+
font-size: 13px;
|
4110 |
+
font-weight: normal;
|
4111 |
+
text-decoration: none !important;
|
4112 |
+
}
|
4113 |
+
ul.block-account li ul.account-list li a.account-list-active {
|
4114 |
+
border-top: 1px solid #dfe2e9;
|
4115 |
+
border-bottom: 1px solid #dfe2e9;
|
4116 |
+
border-right: 1px solid #fff;
|
4117 |
+
width: 180px;
|
4118 |
+
background: url('../img/black-right-small.jpg') no-repeat 95%;
|
4119 |
+
}
|
4120 |
+
.account-head {
|
4121 |
+
font-size: 24px;
|
4122 |
+
font-weight: bold;
|
4123 |
+
}
|
4124 |
+
.contact-head {
|
4125 |
+
font-size: 18px;
|
4126 |
+
font-weight: bold;
|
4127 |
+
padding-bottom: 30px;
|
4128 |
+
}
|
4129 |
+
.plan-block {
|
4130 |
+
border: 1px solid #1a1a1c;
|
4131 |
+
border-radius: 3px;
|
4132 |
+
padding: 30px 40px;
|
4133 |
+
background-color: #f7f7f7;
|
4134 |
+
}
|
4135 |
+
.plan-head {
|
4136 |
+
font-size: 18px;
|
4137 |
+
font-weight: bold;
|
4138 |
+
margin-bottom: 20px;
|
4139 |
+
}
|
4140 |
+
.plan-sub-head {
|
4141 |
+
font-size: 18px;
|
4142 |
+
margin-bottom: 10px;
|
4143 |
+
}
|
4144 |
+
.plan-text {
|
4145 |
+
font-size: 14px;
|
4146 |
+
}
|
4147 |
+
.password-text {
|
4148 |
+
margin-bottom: 15px;
|
4149 |
+
font-size: 15px;
|
4150 |
+
}
|
4151 |
+
.table-billing, .table-payments {
|
4152 |
+
margin-top: 30px;
|
4153 |
+
margin-bottom: 0px;
|
4154 |
+
}
|
4155 |
+
.table-billing tbody > tr, .table-payments tbody > tr {
|
4156 |
+
|
4157 |
+
height: 40px;
|
4158 |
+
}
|
4159 |
+
.table-billing tbody > tr:nth-child(even), .table-payments tbody > tr:nth-child(even) {
|
4160 |
+
background-color: #f3f6f6;
|
4161 |
+
}
|
4162 |
+
.table-billing tbody > tr > th, .table-payments tbody > tr > th {
|
4163 |
+
font-size: 12px;
|
4164 |
+
border-top: none !important;
|
4165 |
+
border-bottom: 1px solid #fff !important;
|
4166 |
+
background-color: #fff;
|
4167 |
+
font-weight: bold;
|
4168 |
+
padding-bottom: 0px;
|
4169 |
+
}
|
4170 |
+
.table-billing tbody > tr > td, .table-payments tbody > tr > td {
|
4171 |
+
font-size: 14px;
|
4172 |
+
color: #4f5555;
|
4173 |
+
border: none !important;
|
4174 |
+
}
|
4175 |
+
.table-billing tbody > tr > td:first-child, .table-payments tbody > tr > td:first-child {
|
4176 |
+
color: #d9d9d9;
|
4177 |
+
padding-left: 20px;
|
4178 |
+
}
|
4179 |
+
|
4180 |
+
.table-payments tbody > tr > th:first-child {
|
4181 |
+
width: 50px !important;
|
4182 |
+
}
|
4183 |
+
.table-payments tbody > tr > th:nth-child(2) {
|
4184 |
+
width: 190px !important;
|
4185 |
+
}
|
4186 |
+
.table-payments tbody > tr > th:nth-child(3) {
|
4187 |
+
width: 190px !important;
|
4188 |
+
}
|
4189 |
+
.table-payments tbody > tr > th:last-child {
|
4190 |
+
width: 140px !important;
|
4191 |
+
}
|
4192 |
+
|
4193 |
+
/*magento dashboard*/
|
4194 |
+
.mar-top-8
|
4195 |
+
{
|
4196 |
+
margin-top:8px;
|
4197 |
+
}
|
4198 |
+
.inner-container-magento
|
4199 |
+
{
|
4200 |
+
position: absolute;left:240px;right:0;padding:0px;
|
4201 |
+
background-color:#f3f6f6;font-family: proxima-nova, Arial, sans-serif !important;
|
4202 |
+
top:140px;
|
4203 |
+
|
4204 |
+
}
|
4205 |
+
.button-black-magento
|
4206 |
+
{
|
4207 |
+
border: 1px solid #000;
|
4208 |
+
height:40px;
|
4209 |
+
border-radius:3px;
|
4210 |
+
background: #3b3e40 url('../img/btn-arrow.png') no-repeat 94%;
|
4211 |
+
text-align: center;
|
4212 |
+
color: #fdfdfd !important;
|
4213 |
+
font-size:16px;
|
4214 |
+
font-weight:600;
|
4215 |
+
padding-top:9px;
|
4216 |
+
}
|
4217 |
+
.button-black-magento:hover
|
4218 |
+
{
|
4219 |
+
background: #292d30 url('../img/btn-arrow.png') no-repeat 94%;
|
4220 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4221 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4222 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4223 |
+
|
4224 |
+
}
|
4225 |
+
.button-black-magento:active
|
4226 |
+
{
|
4227 |
+
padding-top:10px;
|
4228 |
+
background: #292d30 url('../img/btn-arrow.png') no-repeat 94% 55%;
|
4229 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4230 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4231 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4232 |
+
|
4233 |
+
}
|
4234 |
+
.button-black-magento1
|
4235 |
+
{
|
4236 |
+
border: 1px solid #000;
|
4237 |
+
height:40px;
|
4238 |
+
border-radius:3px;
|
4239 |
+
background: #3b3e40 url('../img/btn-arrow-top.png') no-repeat 97%;
|
4240 |
+
text-align: center;
|
4241 |
+
color: #fdfdfd !important;
|
4242 |
+
font-size:16px;
|
4243 |
+
font-weight:600;
|
4244 |
+
padding-top:9px;
|
4245 |
+
}
|
4246 |
+
.button-black-magento1:hover
|
4247 |
+
{
|
4248 |
+
background: #292d30 url('../img/btn-arrow-top.png') no-repeat 97%;
|
4249 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4250 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4251 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4252 |
+
|
4253 |
+
}
|
4254 |
+
.button-black-magento1:active
|
4255 |
+
{
|
4256 |
+
padding-top:10px;
|
4257 |
+
background: #292d30 url('../img/btn-arrow-top.png') no-repeat 97% 55%;
|
4258 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4259 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4260 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
4261 |
+
|
4262 |
+
}
|
4263 |
+
.magento-block
|
4264 |
+
{
|
4265 |
+
padding:50px;
|
4266 |
+
}
|
4267 |
+
|
4268 |
+
.brd-btm-none
|
4269 |
+
{
|
4270 |
+
border-bottom:0px;
|
4271 |
+
}
|
4272 |
+
.magento-inner-block
|
4273 |
+
{
|
4274 |
+
border: 1px solid #cddbde;
|
4275 |
+
padding:40px 50px 30px 50px;
|
4276 |
+
background-color: #fff;
|
4277 |
+
}
|
4278 |
+
.magento-head
|
4279 |
+
{
|
4280 |
+
color:#4e5356;
|
4281 |
+
font-size:30px;
|
4282 |
+
font-weight:400;
|
4283 |
+
}
|
4284 |
+
.magento-subhead
|
4285 |
+
{
|
4286 |
+
color:#596670;
|
4287 |
+
font-size:24px;
|
4288 |
+
font-weight:400;
|
4289 |
+
}
|
4290 |
+
.font-16
|
4291 |
+
{
|
4292 |
+
font-size:16px !important;
|
4293 |
+
}
|
4294 |
+
.font-24
|
4295 |
+
{
|
4296 |
+
font-size:24px !important;
|
4297 |
+
}
|
4298 |
+
.magento-text
|
4299 |
+
{
|
4300 |
+
color:#929494;
|
4301 |
+
font-size:18px;
|
4302 |
+
font-weight:400;
|
4303 |
+
}
|
4304 |
+
.text1
|
4305 |
+
{
|
4306 |
+
color:#4e5356;
|
4307 |
+
|
4308 |
+
}
|
4309 |
+
.text2
|
4310 |
+
{
|
4311 |
+
color: #929ca1;
|
4312 |
+
}
|
4313 |
+
.table-magento
|
4314 |
+
{
|
4315 |
+
border: 1px solid #dee2e4;
|
4316 |
+
border-collapse:separate;
|
4317 |
+
border-radius: 5px;
|
4318 |
+
|
4319 |
+
}
|
4320 |
+
.table-magento>thead>tr>th {
|
4321 |
+
font-size: 18px;
|
4322 |
+
background-color: #3c3f40;
|
4323 |
+
border-right: 1px solid #fff;
|
4324 |
+
color: #fff;
|
4325 |
+
font-weight: 400;
|
4326 |
+
border-bottom:none;
|
4327 |
+
padding: 15px 0px 8px 20px;
|
4328 |
+
|
4329 |
+
}
|
4330 |
+
|
4331 |
+
.table-magento>tbody>tr>td {
|
4332 |
+
|
4333 |
+
border-right: 1px solid #dee2e4 !important;
|
4334 |
+
color: #5c656a;
|
4335 |
+
font-size: 16px;
|
4336 |
+
font-weight: 400;
|
4337 |
+
height: 50px !important;
|
4338 |
+
padding: 15px 0px 15px 23px;
|
4339 |
+
vertical-align: middle;
|
4340 |
+
}
|
4341 |
+
.table-magento.table-magento1>tbody>tr>td {
|
4342 |
+
|
4343 |
+
border-right: 1px solid #dee2e4 !important;
|
4344 |
+
color: #5c656a;
|
4345 |
+
font-size: 16px;
|
4346 |
+
font-weight: 400;
|
4347 |
+
height: 50px !important;
|
4348 |
+
padding: 15px 100px 15px 23px;
|
4349 |
+
vertical-align: middle;
|
4350 |
+
}
|
4351 |
+
.table-magento.table-magento1>tbody>tr>td:last-child
|
4352 |
+
{
|
4353 |
+
height: 50px !important;
|
4354 |
+
padding: 0px 12px 0px 10px !important;
|
4355 |
+
}
|
4356 |
+
.table-magento>thead>tr>th:first-child
|
4357 |
+
{
|
4358 |
+
border-radius:5px 0px 0px 0px;
|
4359 |
+
}
|
4360 |
+
.table-magento>thead>tr>th:last-child
|
4361 |
+
{
|
4362 |
+
border-radius:0px 5px 0px 0px;
|
4363 |
+
border-right:none;
|
4364 |
+
}
|
4365 |
+
.table-magento>tbody>tr:last-child td:first-child
|
4366 |
+
{
|
4367 |
+
border-radius: 0px 0px 0px 5px;
|
4368 |
+
}
|
4369 |
+
.table-magento>tbody>tr:last-child td:last-child
|
4370 |
+
{
|
4371 |
+
border-radius: 0px 0px 5px 0px;
|
4372 |
+
|
4373 |
+
}
|
4374 |
+
.table-magento>tbody>tr td:last-child
|
4375 |
+
{
|
4376 |
+
border-right:none !important;
|
4377 |
+
}
|
4378 |
+
.table-event-track
|
4379 |
+
{
|
4380 |
+
border: 1px solid #dee2e4;
|
4381 |
+
border-collapse:separate;
|
4382 |
+
border-radius: 5px;
|
4383 |
+
background-color: #fff;
|
4384 |
+
|
4385 |
+
}
|
4386 |
+
.table-event-track>tbody>tr>td {
|
4387 |
+
|
4388 |
+
border-right: 1px solid #dee2e4 !important;
|
4389 |
+
color: #5c656a;
|
4390 |
+
font-size: 14px;
|
4391 |
+
font-weight: 600;
|
4392 |
+
height: 44px !important;
|
4393 |
+
padding-left: 23px;
|
4394 |
+
vertical-align: middle;
|
4395 |
+
}
|
4396 |
+
.table-event-track>tbody>tr:first-child td
|
4397 |
+
{
|
4398 |
+
border-top:none;
|
4399 |
+
}
|
4400 |
+
.table-event-track>tbody>tr td:last-child
|
4401 |
+
{
|
4402 |
+
border-right:none !important;
|
4403 |
+
padding-left:55px;
|
4404 |
+
|
4405 |
+
}
|
4406 |
+
.mar-btm-7
|
4407 |
+
{
|
4408 |
+
margin-bottom:7px;
|
4409 |
+
}
|
4410 |
+
.pad-rgt-140
|
4411 |
+
{
|
4412 |
+
padding-right: 140px !important;
|
4413 |
+
}
|
4414 |
+
.pad-rgt-200
|
4415 |
+
{
|
4416 |
+
padding-right: 200px !important;
|
4417 |
+
}
|
4418 |
+
.pad-rgt-400
|
4419 |
+
{
|
4420 |
+
padding-right: 400px !important;
|
4421 |
+
}
|
4422 |
+
.pad-rgt-430
|
4423 |
+
{
|
4424 |
+
padding-right: 430px !important;
|
4425 |
+
}
|
4426 |
+
.color-blue
|
4427 |
+
{
|
4428 |
+
color: #45b5c1;
|
4429 |
+
}
|
4430 |
+
.script-block
|
4431 |
+
{
|
4432 |
+
border: 1px solid #d4dede;
|
4433 |
+
border-radius: 4px;
|
4434 |
+
padding: 25px 0px 25px 25px;;
|
4435 |
+
font-family: Menlo,Monaco,"Andale Mono","Courier New",monospace;
|
4436 |
+
font-size: 14px;
|
4437 |
+
width:100%;
|
4438 |
+
float:left;
|
4439 |
+
background-color: #fff !important;
|
4440 |
+
width:800px;
|
4441 |
+
}
|
4442 |
+
.prettyprint-dashboard
|
4443 |
+
{
|
4444 |
+
padding:0px !important;
|
4445 |
+
margin:0px !important;
|
4446 |
+
background:#fff;
|
4447 |
+
font-family: Menlo,Monaco,"Andale Mono","Courier New",monospace !important;
|
4448 |
+
color: #5c656a;
|
4449 |
+
}
|
4450 |
+
pre .tag
|
4451 |
+
{
|
4452 |
+
color: #888 !important;
|
4453 |
+
}
|
4454 |
+
pre .pun
|
4455 |
+
{
|
4456 |
+
color: #ed3743 !important;
|
4457 |
+
}
|
4458 |
+
pre .atn
|
4459 |
+
{
|
4460 |
+
color: #000 !important;
|
4461 |
+
}
|
4462 |
+
pre .blue
|
4463 |
+
{
|
4464 |
+
color: #20c9c9 !important;
|
4465 |
+
}
|
4466 |
+
pre .green
|
4467 |
+
{
|
4468 |
+
color: #22bf52 !important;
|
4469 |
+
}
|
4470 |
+
pre .red
|
4471 |
+
{
|
4472 |
+
color: #d75f70 !important;
|
4473 |
+
}
|
4474 |
+
.magento-landing-block
|
4475 |
+
{
|
4476 |
+
background-color: #676f73;
|
4477 |
+
padding: 20px 0px 20px 50px;
|
4478 |
+
font-size: 14px;
|
4479 |
+
}
|
4480 |
+
.magento-label
|
4481 |
+
{
|
4482 |
+
color: #fff;
|
4483 |
+
font-weight:600;
|
4484 |
+
font-size: 18px;
|
4485 |
+
}
|
4486 |
+
.magento-input
|
4487 |
+
{
|
4488 |
+
width: 340px !important;
|
4489 |
+
height: 40px;
|
4490 |
+
border-radius: 3px;
|
4491 |
+
background-color: #fcfcfc;
|
4492 |
+
padding-left: 14px;
|
4493 |
+
font-size: 16px;
|
4494 |
+
color: #1a1c1c;
|
4495 |
+
border:1px solid #cbcbcb;
|
4496 |
+
|
4497 |
+
}
|
4498 |
+
.middle-nav-magento-dropdown {
|
4499 |
+
|
4500 |
+
position:absolute; left:0px; width:240px;
|
4501 |
+
font-family: proxima-nova, Arial, sans-serif !important;
|
4502 |
+
top:160px;
|
4503 |
+
}
|
4504 |
+
.middle-nav-text
|
4505 |
+
{
|
4506 |
+
padding-left:5px;
|
4507 |
+
color: #3c3f40;
|
4508 |
+
font-size: 16px;
|
4509 |
+
font-weight:400;
|
4510 |
+
}
|
4511 |
+
.middle-nav-dropdown
|
4512 |
+
{
|
4513 |
+
padding-left: 3px;
|
4514 |
+
}
|
4515 |
+
.middle-nav-magento {
|
4516 |
+
background-color: #3c3f40;
|
4517 |
+
position:absolute; left:0px; width:240px;height:920px;
|
4518 |
+
font-family: proxima-nova, Arial, sans-serif !important;
|
4519 |
+
top:255px;
|
4520 |
+
}
|
4521 |
+
ul.magento-nav {
|
4522 |
+
display: block;
|
4523 |
+
float: left;
|
4524 |
+
list-style-type: none;
|
4525 |
+
padding: 0;
|
4526 |
+
margin: 0;
|
4527 |
+
}
|
4528 |
+
ul.magento-nav li {
|
4529 |
+
display: block;
|
4530 |
+
float: left;
|
4531 |
+
width:100%;
|
4532 |
+
}
|
4533 |
+
ul.magento-nav li a {
|
4534 |
+
display: block;
|
4535 |
+
float: left;
|
4536 |
+
color: #fff !important;
|
4537 |
+
padding: 20px 0px 20px 30px;
|
4538 |
+
font-size: 16px;
|
4539 |
+
font-weight: 400;
|
4540 |
+
width:100%;
|
4541 |
+
border-bottom:1px solid #4e5253;
|
4542 |
+
background: url('../img/arrow-white.png') no-repeat 90%;
|
4543 |
+
}
|
4544 |
+
ul.magento-nav li a.magento-active
|
4545 |
+
{
|
4546 |
+
|
4547 |
+
border-top:1px solid #4e5253;
|
4548 |
+
border-bottom:1px solid #4e5253;
|
4549 |
+
background: #45b5c1 url('../img/arrow-white.png') no-repeat 90%;
|
4550 |
+
}
|
4551 |
+
.magento-tooltip
|
4552 |
+
{
|
4553 |
+
background: url('../img/tooltip.png') no-repeat 95%;
|
4554 |
+
}
|
4555 |
+
.track-success
|
4556 |
+
{
|
4557 |
+
background: url('../img/detect.png') no-repeat 5%;
|
4558 |
+
}
|
4559 |
+
.track-unsuccess
|
4560 |
+
{
|
4561 |
+
background: url('../img/not-detected.png') no-repeat 5%;
|
4562 |
+
}
|
4563 |
+
input.magento-input::-webkit-input-placeholder { color: #b8bcc0;}
|
4564 |
+
input[type="text"]:focus
|
4565 |
+
{
|
4566 |
+
outline:none;
|
4567 |
+
border:1px solid #cbcbcb;
|
4568 |
+
}
|
4569 |
+
input[type="email"]:focus
|
4570 |
+
{
|
4571 |
+
outline:none;
|
4572 |
+
}
|
4573 |
+
input[type="password"]:focus
|
4574 |
+
{
|
4575 |
+
outline:none;
|
4576 |
+
}
|
4577 |
+
input[type="tel"]:focus
|
4578 |
+
{
|
4579 |
+
outline:none;
|
4580 |
+
}
|
4581 |
+
.label-checkbox-magento {
|
4582 |
+
font-family: proxima-nova, Arial, sans-serif !important;
|
4583 |
+
font-weight: 600;
|
4584 |
+
color: #5c656a !important;
|
4585 |
+
font-size: 16px !important;
|
4586 |
+
padding-left: 37px !important;
|
4587 |
+
}
|
4588 |
+
.magento-text-disabled
|
4589 |
+
{
|
4590 |
+
color: #b3babd !important;
|
4591 |
+
}
|
4592 |
+
.dropdown-toggle-magento {
|
4593 |
+
text-align: left;
|
4594 |
+
width: 280px;
|
4595 |
+
font-weight: 400;
|
4596 |
+
font-size: 16px;
|
4597 |
+
color: #5c656a;
|
4598 |
+
border: none;
|
4599 |
+
padding-left: 35px;
|
4600 |
+
/*padding-left: 15px;
|
4601 |
+
border-radius: 3px;
|
4602 |
+
background-color: #fcfcfc;
|
4603 |
+
border: 1px solid #dde2e4;
|
4604 |
+
*/
|
4605 |
+
}
|
4606 |
+
.dropdown-menu-magento{
|
4607 |
+
width: 280px !important;
|
4608 |
+
border: none;
|
4609 |
+
position: absolute;
|
4610 |
+
top: 100%;
|
4611 |
+
left: 0;
|
4612 |
+
z-index: 1000;
|
4613 |
+
display: none;
|
4614 |
+
float: left;
|
4615 |
+
padding: 0;
|
4616 |
+
margin: 0;
|
4617 |
+
font-size: 16px;
|
4618 |
+
list-style: none;
|
4619 |
+
border-radius: 0px;
|
4620 |
+
-webkit-box-shadow: none;
|
4621 |
+
box-shadow: none;
|
4622 |
+
color: #5c656a;
|
4623 |
+
font-weight: 600;
|
4624 |
+
background-color: transparent !important;
|
4625 |
+
}
|
4626 |
+
.dropdown-menu-magento > li:first-child > a
|
4627 |
+
{
|
4628 |
+
border-top: 1px solid #ece7e7;
|
4629 |
+
}
|
4630 |
+
.dropdown-menu-magento > li > a {
|
4631 |
+
border-top:none;
|
4632 |
+
background-color: #f3f6f6;
|
4633 |
+
text-align: left;
|
4634 |
+
width: 280px;
|
4635 |
+
border-left: 1px solid #d0d3d5;
|
4636 |
+
border-right: 1px solid #d0d3d5;
|
4637 |
+
font-size: 16px;
|
4638 |
+
font-weight: 400;
|
4639 |
+
color: #5c656a !important;
|
4640 |
+
padding:14px 0px 14px 35px !important;
|
4641 |
+
height:auto !important;
|
4642 |
+
}
|
4643 |
+
.dropdown-menu-magento > li:last-child > a {
|
4644 |
+
border-bottom: 1px solid #d0d3d5;
|
4645 |
+
border-bottom-left-radius: 3px;
|
4646 |
+
border-bottom-right-radius: 3px;
|
4647 |
+
padding:15px 0px 15px 35px !important;
|
4648 |
+
}
|
4649 |
+
|
4650 |
+
.dropdown-menu-magento > li > a:hover, .dropdown-menu-magento > li > a:focus {
|
4651 |
+
color: #5c656a !important;
|
4652 |
+
text-decoration: none;
|
4653 |
+
background-color: #f3f6f6;
|
4654 |
+
background-image: none;
|
4655 |
+
}
|
4656 |
+
|
4657 |
+
.btn-group.open .dropdown-toggle-magento {
|
4658 |
+
-webkit-box-shadow: none;
|
4659 |
+
box-shadow: none;
|
4660 |
+
width: 280px;
|
4661 |
+
border-bottom: none;
|
4662 |
+
border-radius: 5px 5px 0px 0px;
|
4663 |
+
border:1px solid #cecece;
|
4664 |
+
height: 40px;
|
4665 |
+
border-bottom: none;
|
4666 |
+
background-color: #f3f6f6;
|
4667 |
+
padding-top:10px;
|
4668 |
+
height:40px;
|
4669 |
+
|
4670 |
+
}
|
4671 |
+
|
4672 |
+
.open > .dropdown-menu-magento {
|
4673 |
+
display: block;
|
4674 |
+
}
|
4675 |
+
|
4676 |
+
.caret-magento {
|
4677 |
+
float: right;
|
4678 |
+
margin-top: 6px;
|
4679 |
+
width: 8px;
|
4680 |
+
margin-right: 10px;
|
4681 |
+
border-top: 8px solid #b0b6b9;
|
4682 |
+
border-right: 7px solid transparent;
|
4683 |
+
border-bottom: 0 dotted;
|
4684 |
+
border-left: 7px solid transparent;
|
4685 |
+
cursor: pointer;
|
4686 |
+
}
|
4687 |
+
|
4688 |
+
|
4689 |
+
.dropdown-toggle-nav-magento {
|
4690 |
+
text-align: left;
|
4691 |
+
width: 280px;
|
4692 |
+
font-weight: 400;
|
4693 |
+
font-size: 16px;
|
4694 |
+
color: #5c656a;
|
4695 |
+
border: none;
|
4696 |
+
padding-top:10px;
|
4697 |
+
height:42px;
|
4698 |
+
padding-left:10px;
|
4699 |
+
border-radius: 3px;
|
4700 |
+
background-color: #fff !important;
|
4701 |
+
border: 1px solid #dde2e4;
|
4702 |
+
|
4703 |
+
}
|
4704 |
+
.dropdown-menu-nav-magento{
|
4705 |
+
width: 280px !important;
|
4706 |
+
border: none;
|
4707 |
+
position: absolute;
|
4708 |
+
top: 100%;
|
4709 |
+
left: 0;
|
4710 |
+
z-index: 1000;
|
4711 |
+
display: none;
|
4712 |
+
float: left;
|
4713 |
+
padding: 0;
|
4714 |
+
margin: 0;
|
4715 |
+
font-size: 16px;
|
4716 |
+
list-style: none;
|
4717 |
+
border-radius: 0px;
|
4718 |
+
-webkit-box-shadow: none;
|
4719 |
+
box-shadow: none;
|
4720 |
+
color: #5c656a;
|
4721 |
+
font-weight: 600;
|
4722 |
+
background-color: transparent !important;
|
4723 |
+
}
|
4724 |
+
.dropdown-menu-nav-magento > li:first-child > a
|
4725 |
+
{
|
4726 |
+
border-top: 1px solid #ece7e7;
|
4727 |
+
}
|
4728 |
+
.dropdown-menu-nav-magento > li > a {
|
4729 |
+
border-top:none;
|
4730 |
+
background-color: #f3f6f6;
|
4731 |
+
text-align: left;
|
4732 |
+
width: 280px;
|
4733 |
+
border-left: 1px solid #d0d3d5;
|
4734 |
+
border-right: 1px solid #d0d3d5;
|
4735 |
+
font-size: 16px;
|
4736 |
+
font-weight: 400;
|
4737 |
+
color: #5c656a !important;
|
4738 |
+
padding:14px 0px 14px 10px !important;
|
4739 |
+
height:auto !important;
|
4740 |
+
}
|
4741 |
+
.dropdown-menu-nav-magento > li:last-child > a {
|
4742 |
+
border-bottom: 1px solid #d0d3d5;
|
4743 |
+
border-bottom-left-radius: 3px;
|
4744 |
+
border-bottom-right-radius: 3px;
|
4745 |
+
padding:15px 0px 15px 10px !important;
|
4746 |
+
}
|
4747 |
+
|
4748 |
+
.dropdown-menu-nav-magento > li > a:hover, .dropdown-menu-nav-magento > li > a:focus {
|
4749 |
+
color: #5c656a !important;
|
4750 |
+
text-decoration: none;
|
4751 |
+
background-color: #f3f6f6;
|
4752 |
+
background-image: none;
|
4753 |
+
}
|
4754 |
+
|
4755 |
+
.btn-group.open .dropdown-toggle-nav-magento {
|
4756 |
+
-webkit-box-shadow: none;
|
4757 |
+
box-shadow: none;
|
4758 |
+
width: 280px;
|
4759 |
+
border-bottom: none;
|
4760 |
+
border-radius: 5px 5px 0px 0px;
|
4761 |
+
border:1px solid #cecece;
|
4762 |
+
height: 40px;
|
4763 |
+
border-bottom: none;
|
4764 |
+
background-color: #fff;
|
4765 |
+
|
4766 |
+
|
4767 |
+
}
|
4768 |
+
|
4769 |
+
.open > .dropdown-menu-nav-magento {
|
4770 |
+
display: block;
|
4771 |
+
}
|
4772 |
+
|
4773 |
+
.caret-nav-magento {
|
4774 |
+
float: right;
|
4775 |
+
margin-top: 6px;
|
4776 |
+
width: 8px;
|
4777 |
+
margin-right: 10px;
|
4778 |
+
border-top: 8px solid #b0b6b9;
|
4779 |
+
border-right: 7px solid transparent;
|
4780 |
+
border-bottom: 0 dotted;
|
4781 |
+
border-left: 7px solid transparent;
|
4782 |
+
cursor: pointer;
|
4783 |
+
}
|
4784 |
+
.magento-analytics-block
|
4785 |
+
{
|
4786 |
+
border:1px solid #45b5c1;
|
4787 |
+
border-radius:5px;
|
4788 |
+
padding:20px 0px 10px 0px;
|
4789 |
+
background-color: #f3f6f6;
|
4790 |
+
}
|
4791 |
+
.magento-analytics-block1
|
4792 |
+
{
|
4793 |
+
border:1px solid #fe6a56;
|
4794 |
+
}
|
4795 |
+
.magento-analytics-head
|
4796 |
+
{
|
4797 |
+
color: #3c3f40;
|
4798 |
+
font-size:18px;
|
4799 |
+
font-weight:400;
|
4800 |
+
text-align: center;
|
4801 |
+
}
|
4802 |
+
.magento-analytics-tick
|
4803 |
+
{
|
4804 |
+
width:47px !important;
|
4805 |
+
height:47px;
|
4806 |
+
border-radius:50%;
|
4807 |
+
background:#45b5c1 url('../img/tick-analytics.png') no-repeat 50%;
|
4808 |
+
margin:0px auto;
|
4809 |
+
float:none;
|
4810 |
+
}
|
4811 |
+
.magento-analytics-cross
|
4812 |
+
{
|
4813 |
+
background:#fe6a56 url('../img/red-loading.png') no-repeat 50%;
|
4814 |
+
}
|
4815 |
+
.magento-analytics-text
|
4816 |
+
{
|
4817 |
+
color: #5c656a;
|
4818 |
+
font-size:16px;
|
4819 |
+
font-weight:400;
|
4820 |
+
text-align: center;
|
4821 |
+
}
|
4822 |
+
|
4823 |
+
/* modified dashboard changes */
|
4824 |
+
.back-gray
|
4825 |
+
{
|
4826 |
+
background-color: #f3f6f6 !important;
|
4827 |
+
}
|
4828 |
+
.main-section
|
4829 |
+
{
|
4830 |
+
font-family: proxima-nova, Arial, sans-serif;
|
4831 |
+
}
|
4832 |
+
.mar-top-50
|
4833 |
+
{
|
4834 |
+
margin-top:50px !important;
|
4835 |
+
}
|
4836 |
+
.navbar-dashboard
|
4837 |
+
{
|
4838 |
+
border-bottom: 3px solid #45b5c1;
|
4839 |
+
}
|
4840 |
+
.dashboard-inner-block
|
4841 |
+
{
|
4842 |
+
border: 1px solid #cddbde;
|
4843 |
+
padding:35px 0px 35px 40px;
|
4844 |
+
background-color: #fff;
|
4845 |
+
border-radius: 5px 5px 0px 0px;
|
4846 |
+
}
|
4847 |
+
.d-inner-block-padding{
|
4848 |
+
padding-left: 40px;
|
4849 |
+
padding-right: 40px;
|
4850 |
+
}
|
4851 |
+
.brd-btm-radius
|
4852 |
+
{
|
4853 |
+
border-bottom-left-radius: 5px;
|
4854 |
+
border-bottom-right-radius: 5px;
|
4855 |
+
}
|
4856 |
+
.dashboard-head
|
4857 |
+
{
|
4858 |
+
color:#4e5356;
|
4859 |
+
font-size:24px;
|
4860 |
+
font-weight:400;
|
4861 |
+
}
|
4862 |
+
|
4863 |
+
.dashboard-head-bold
|
4864 |
+
{
|
4865 |
+
color:#4e5356;
|
4866 |
+
font-size:24px;
|
4867 |
+
font-weight:600;
|
4868 |
+
}
|
4869 |
+
.color-gray
|
4870 |
+
{
|
4871 |
+
color: #929494;
|
4872 |
+
}
|
4873 |
+
.dashboard-text
|
4874 |
+
{
|
4875 |
+
color:#929494;
|
4876 |
+
font-size:18px;
|
4877 |
+
font-weight:400;
|
4878 |
+
}
|
4879 |
+
.dashboard-black-block
|
4880 |
+
{
|
4881 |
+
background-color: #676f73;
|
4882 |
+
padding: 55px 0px;
|
4883 |
+
|
4884 |
+
}
|
4885 |
+
|
4886 |
+
.dashboard-b-block-head
|
4887 |
+
{
|
4888 |
+
color:#4e5356;
|
4889 |
+
font-size:24px;
|
4890 |
+
font-weight:400;
|
4891 |
+
}
|
4892 |
+
.dashboard-b-block-text
|
4893 |
+
{
|
4894 |
+
color:#fff;
|
4895 |
+
font-size:18px;
|
4896 |
+
font-weight:400;
|
4897 |
+
}
|
4898 |
+
.black-block-padding
|
4899 |
+
{
|
4900 |
+
padding: 20px 0px 10px 0px;
|
4901 |
+
}
|
4902 |
+
.black-block-padding1
|
4903 |
+
{
|
4904 |
+
padding: 16px 0px;
|
4905 |
+
}
|
4906 |
+
.dashboard-gray-block
|
4907 |
+
{
|
4908 |
+
background-color: #787a7b;
|
4909 |
+
padding: 30px 0px 40px 0px;
|
4910 |
+
|
4911 |
+
}
|
4912 |
+
|
4913 |
+
.dashboard-popup
|
4914 |
+
{
|
4915 |
+
border-radius:10px !important;
|
4916 |
+
background-color: #fff;
|
4917 |
+
padding:8px 0px 50px 0px;
|
4918 |
+
}
|
4919 |
+
.popup-gray
|
4920 |
+
{
|
4921 |
+
background-color: #f3f6f6;
|
4922 |
+
padding-left:45px;
|
4923 |
+
}
|
4924 |
+
.dashboard-inner
|
4925 |
+
{
|
4926 |
+
padding: 0px 40px 50px 0px;
|
4927 |
+
}
|
4928 |
+
.dashboard-inner-popup
|
4929 |
+
{
|
4930 |
+
padding: 40px 60px 50px 40px;
|
4931 |
+
border:1px solid #c5c5c5;
|
4932 |
+
background-color: #fff;
|
4933 |
+
}
|
4934 |
+
.dashboard-inner-popup-text
|
4935 |
+
{
|
4936 |
+
color:#929494;
|
4937 |
+
font-size:16px;
|
4938 |
+
font-weight:400;
|
4939 |
+
}
|
4940 |
+
.cross-red
|
4941 |
+
{
|
4942 |
+
|
4943 |
+
background:url('../img/close.png') no-repeat; width:25px; height:25px;
|
4944 |
+
margin-right:15px
|
4945 |
+
}
|
4946 |
+
|
4947 |
+
.popup-head
|
4948 |
+
{
|
4949 |
+
color:#4e5356;
|
4950 |
+
font-size:24px;
|
4951 |
+
font-weight:400;
|
4952 |
+
text-align: center;
|
4953 |
+
}
|
4954 |
+
.popup-text
|
4955 |
+
{
|
4956 |
+
color:#929494;
|
4957 |
+
font-size:18px;
|
4958 |
+
font-weight:400;
|
4959 |
+
text-align: center;
|
4960 |
+
}
|
4961 |
+
.popup-text1
|
4962 |
+
{
|
4963 |
+
color:#2c3e4c;
|
4964 |
+
font-size:18px;
|
4965 |
+
font-weight:600;
|
4966 |
+
text-align: center;
|
4967 |
+
}
|
4968 |
+
.steps-row1
|
4969 |
+
{
|
4970 |
+
width:460px !important;
|
4971 |
+
margin:0px auto;
|
4972 |
+
float:none;
|
4973 |
+
margin-bottom: 20px;
|
4974 |
+
}
|
4975 |
+
.steps-row2
|
4976 |
+
{
|
4977 |
+
width:580px !important;
|
4978 |
+
margin:0px auto;
|
4979 |
+
float:none;
|
4980 |
+
margin-bottom: 40px;
|
4981 |
+
}
|
4982 |
+
.steps-circle-outer
|
4983 |
+
{
|
4984 |
+
width:38px !important;
|
4985 |
+
height:38px;
|
4986 |
+
border-radius: 50%;
|
4987 |
+
border:1px solid #c1d0d4;
|
4988 |
+
padding:4px;
|
4989 |
+
background-color: #fff;
|
4990 |
+
z-index:1;
|
4991 |
+
}
|
4992 |
+
.steps-circle-inner
|
4993 |
+
{
|
4994 |
+
background: #4bb4bf url('../img/checkmark.png') no-repeat 50%;
|
4995 |
+
border-radius: 50%;
|
4996 |
+
width: 28px !important;
|
4997 |
+
height: 28px;
|
4998 |
+
|
4999 |
+
}
|
5000 |
+
.steps-border
|
5001 |
+
{
|
5002 |
+
width:104px !important;
|
5003 |
+
border-top: 1px solid #c7d5d9;
|
5004 |
+
border-bottom: 1px solid #c7d5d9;
|
5005 |
+
background-color: #fff;
|
5006 |
+
height:6px;
|
5007 |
+
z-index:999;
|
5008 |
+
margin-left:-1px;
|
5009 |
+
margin-right:-1px;
|
5010 |
+
}
|
5011 |
+
.steps-circle-inner-numb
|
5012 |
+
{
|
5013 |
+
border-radius: 50%;
|
5014 |
+
width: 28px !important;
|
5015 |
+
height: 28px;
|
5016 |
+
color: #989898;
|
5017 |
+
font-weight:400;
|
5018 |
+
font-size: 20px;
|
5019 |
+
padding-top:1px;
|
5020 |
+
padding-left:7px;
|
5021 |
+
}
|
5022 |
+
.steps-circle-inner-numb-active
|
5023 |
+
{
|
5024 |
+
border:1px solid #49b6c2;
|
5025 |
+
border-radius: 50%;
|
5026 |
+
width: 28px !important;
|
5027 |
+
height: 28px;
|
5028 |
+
color: #00a6c9;
|
5029 |
+
font-weight:400;
|
5030 |
+
font-size: 20px;
|
5031 |
+
padding-top:0px;
|
5032 |
+
padding-left:7px;
|
5033 |
+
}
|
5034 |
+
.mar-top-3
|
5035 |
+
{
|
5036 |
+
margin-top:3px;
|
5037 |
+
}
|
5038 |
+
.mar-top-neg3
|
5039 |
+
{
|
5040 |
+
margin-top:-3px;
|
5041 |
+
}
|
5042 |
+
.mar-top-20
|
5043 |
+
{
|
5044 |
+
margin-top:15px;
|
5045 |
+
}
|
5046 |
+
.mar-top-30
|
5047 |
+
{
|
5048 |
+
margin-top:30px;
|
5049 |
+
}
|
5050 |
+
.mar-top-40
|
5051 |
+
{
|
5052 |
+
margin-top:40px;
|
5053 |
+
}
|
5054 |
+
.steps-text-active
|
5055 |
+
{
|
5056 |
+
font-size: 15px;
|
5057 |
+
font-weight: 400;
|
5058 |
+
color: #45b5c1;
|
5059 |
+
text-align: center
|
5060 |
+
}
|
5061 |
+
.steps-text
|
5062 |
+
{
|
5063 |
+
font-size: 15px;
|
5064 |
+
font-weight: 400;
|
5065 |
+
color: #929494;
|
5066 |
+
text-align: center;
|
5067 |
+
}
|
5068 |
+
.dashboard-label
|
5069 |
+
{
|
5070 |
+
color: #4e5356;
|
5071 |
+
font-weight:600;
|
5072 |
+
font-size: 18px;
|
5073 |
+
}
|
5074 |
+
.dashboard-input
|
5075 |
+
{
|
5076 |
+
width: 340px !important;
|
5077 |
+
height: 40px;
|
5078 |
+
border-radius: 2px;
|
5079 |
+
background-color: #fff;
|
5080 |
+
padding-left: 14px;
|
5081 |
+
font-size: 16px;
|
5082 |
+
color: #1a1c1c;
|
5083 |
+
border:1px solid #cbcbcb;
|
5084 |
+
|
5085 |
+
}
|
5086 |
+
.dashboard-button-label
|
5087 |
+
{
|
5088 |
+
height:40px;
|
5089 |
+
width:290px !important;
|
5090 |
+
border:1px solid #d9dede;
|
5091 |
+
font-weight: 600;
|
5092 |
+
font-size: 16px;
|
5093 |
+
color: #182b3a;
|
5094 |
+
box-shadow: none !important;
|
5095 |
+
border-right: none;
|
5096 |
+
}
|
5097 |
+
.width-400
|
5098 |
+
{
|
5099 |
+
width:400px !important;
|
5100 |
+
}
|
5101 |
+
.dashboard-copy-button
|
5102 |
+
{
|
5103 |
+
background: #f5f8fa url('../img/copy-black.png') no-repeat 50%;
|
5104 |
+
width:45px;
|
5105 |
+
height:40px;
|
5106 |
+
border:1px solid #d9dede;
|
5107 |
+
outline:none;
|
5108 |
+
cursor: pointer;
|
5109 |
+
box-shadow: none !important;
|
5110 |
+
background:
|
5111 |
+
/* top, transparent red, faked with gradient */
|
5112 |
+
linear-gradient(
|
5113 |
+
rgba(255,255,255,0),
|
5114 |
+
rgba(242,243,243,1)
|
5115 |
+
),
|
5116 |
+
/* bottom, image */
|
5117 |
+
url('../img/copy-black.png') no-repeat 50%;
|
5118 |
+
}
|
5119 |
+
.dashboard-copy-button:hover
|
5120 |
+
{
|
5121 |
+
background: #f5f8fa url('../img/copy-black.png') no-repeat 50%;
|
5122 |
+
width:45px;
|
5123 |
+
height:40px;
|
5124 |
+
border:1px solid #d9dede;
|
5125 |
+
outline:none;
|
5126 |
+
}
|
5127 |
+
.dashboard-copy-button:active
|
5128 |
+
{
|
5129 |
+
background: #45b5c1 url('../img/copy-white.png') no-repeat 50%;
|
5130 |
+
width:45px;
|
5131 |
+
height:40px;
|
5132 |
+
border:none;
|
5133 |
+
outline:none;
|
5134 |
+
}
|
5135 |
+
.copy-link
|
5136 |
+
{
|
5137 |
+
|
5138 |
+
background-color: #929ca1;
|
5139 |
+
color: #fff;
|
5140 |
+
text-align: center;
|
5141 |
+
border-top-left-radius: 4px;
|
5142 |
+
border-bottom-right-radius: 4px;
|
5143 |
+
float: right;
|
5144 |
+
font-family: proxima-nova, Arial, sans-serif;
|
5145 |
+
font-size: 14px;
|
5146 |
+
font-weight:400;
|
5147 |
+
padding: 5px 0;
|
5148 |
+
}
|
5149 |
+
.gif-block
|
5150 |
+
{
|
5151 |
+
width:630px !important;
|
5152 |
+
height:230px;
|
5153 |
+
background-color: #f3f6f6;
|
5154 |
+
color: #4e5356;
|
5155 |
+
font-weight:400;
|
5156 |
+
font-size: 24px;
|
5157 |
+
text-align: center;
|
5158 |
+
vertical-align: middle;
|
5159 |
+
display:table-cell;
|
5160 |
+
}
|
5161 |
+
.magento-row-tabs
|
5162 |
+
{
|
5163 |
+
float:left;
|
5164 |
+
width:100%;
|
5165 |
+
background-color: #f3f6f6;
|
5166 |
+
padding: 8px 0px;
|
5167 |
+
|
5168 |
+
}
|
5169 |
+
ul.magento-conf-tabs {
|
5170 |
+
margin: 0;
|
5171 |
+
padding: 0;
|
5172 |
+
list-style-type: none;
|
5173 |
+
|
5174 |
+
}
|
5175 |
+
ul.magento-conf-tabs li {
|
5176 |
+
|
5177 |
+
font-size: 16px;
|
5178 |
+
font-weight: bold;
|
5179 |
+
display:inline;
|
5180 |
+
|
5181 |
+
}
|
5182 |
+
ul.magento-conf-tabs li a {
|
5183 |
+
|
5184 |
+
|
5185 |
+
width:248px;
|
5186 |
+
padding-left:30px;
|
5187 |
+
font-weight:400;
|
5188 |
+
font-size:16px;
|
5189 |
+
|
5190 |
+
|
5191 |
+
}
|
5192 |
+
ul.magento-conf-tabs li a.magento-conf-tabs-disabled {
|
5193 |
+
float: left;
|
5194 |
+
background: url('../img/step-arrow.png') no-repeat 92%;
|
5195 |
+
color: #b0b6b9 !important;
|
5196 |
+
}
|
5197 |
+
ul.magento-conf-tabs li a.magento-conf-tabs-enabled {
|
5198 |
+
float: left;
|
5199 |
+
background: url('../img/step-arrow.png') no-repeat 92%;
|
5200 |
+
color: #4e5356 !important;
|
5201 |
+
|
5202 |
+
}
|
5203 |
+
.magento-number
|
5204 |
+
{
|
5205 |
+
float:left;font-size:43px;padding-right:15px;
|
5206 |
+
}
|
5207 |
+
.magento-number-text
|
5208 |
+
{
|
5209 |
+
float:left;padding-left:15px;width:105px;border-left:1px solid #b0b6b9;margin-top:8px;
|
5210 |
+
}
|
5211 |
+
.width-188
|
5212 |
+
{
|
5213 |
+
width: 188px !important;
|
5214 |
+
}
|
5215 |
+
.button-edit-magento
|
5216 |
+
{
|
5217 |
+
border: 1px solid #dee2e4;
|
5218 |
+
height:32px;
|
5219 |
+
border-radius:3px;
|
5220 |
+
background: #fff url('../img/edit-magento.png') no-repeat 10%;
|
5221 |
+
color: #5c656a !important;
|
5222 |
+
font-size:16px;
|
5223 |
+
font-weight:400;
|
5224 |
+
padding-top:5px;
|
5225 |
+
padding-left: 33px;
|
5226 |
+
}
|
5227 |
+
.button-save-magento
|
5228 |
+
{
|
5229 |
+
|
5230 |
+
background: #fff url('../img/save.png') no-repeat 10%;
|
5231 |
+
|
5232 |
+
}
|
5233 |
+
/* common modified dashboard */
|
5234 |
+
|
5235 |
+
.button-blue1-middle
|
5236 |
+
{
|
5237 |
+
border: 1px solid #209dac !important;
|
5238 |
+
height:40px !important;
|
5239 |
+
padding-top:9px !important;
|
5240 |
+
border-radius:2px !important;
|
5241 |
+
padding-right: 0px !important;
|
5242 |
+
background-color: #45b5c1 !important;
|
5243 |
+
text-align: center;
|
5244 |
+
color: #fff !important;
|
5245 |
+
font-size:16px;
|
5246 |
+
font-weight:600;
|
5247 |
+
}
|
5248 |
+
.button-blue1-middle:hover
|
5249 |
+
{
|
5250 |
+
border: 1px solid #209dac !important;
|
5251 |
+
background-color: #3aabb7 !important;
|
5252 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5253 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5254 |
+
box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5255 |
+
}
|
5256 |
+
.button-blue1-middle:active
|
5257 |
+
{
|
5258 |
+
border: 1px solid #209dac !important;
|
5259 |
+
background-color: #3aabb7 !important;
|
5260 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5261 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5262 |
+
box-shadow:inset 0px 1px 1px 0px #2e8f9a;
|
5263 |
+
padding-top:10px !important;
|
5264 |
+
}
|
5265 |
+
.button-black-middle
|
5266 |
+
{
|
5267 |
+
border: 1px solid #000;
|
5268 |
+
height:40px;
|
5269 |
+
border-radius:2px;
|
5270 |
+
background: #3b3e40 url('../img/btn-arrow.png') no-repeat 88%;
|
5271 |
+
text-align: center;
|
5272 |
+
color: #fdfdfd !important;
|
5273 |
+
font-size:16px;
|
5274 |
+
font-weight:600;
|
5275 |
+
padding-top:9px;
|
5276 |
+
}
|
5277 |
+
.button-black-middle:hover
|
5278 |
+
{
|
5279 |
+
background: #292d30 url('../img/btn-arrow.png') no-repeat 88%;
|
5280 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5281 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5282 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5283 |
+
|
5284 |
+
}
|
5285 |
+
.button-black-middle:active
|
5286 |
+
{
|
5287 |
+
padding-top:10px;
|
5288 |
+
background: #292d30 url('../img/btn-arrow.png') no-repeat 88% 55%;
|
5289 |
+
-moz-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5290 |
+
-webkit-box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5291 |
+
box-shadow:inset 0px 1px 1px 0px #6d6d6d;
|
5292 |
+
|
5293 |
+
}
|
5294 |
+
|
5295 |
+
.button-install
|
5296 |
+
{
|
5297 |
+
border: 1px solid #cecece !important;
|
5298 |
+
height:50px !important;
|
5299 |
+
padding-top:12px !important;
|
5300 |
+
border-radius:3px !important;
|
5301 |
+
padding-right: 0px !important;
|
5302 |
+
background: #fff url('../img/install.png') no-repeat 6%;
|
5303 |
+
padding-left: 55px;
|
5304 |
+
color: #5c656a !important;
|
5305 |
+
font-size:18px;
|
5306 |
+
font-weight:600;
|
5307 |
+
}
|
5308 |
+
.button-install:hover
|
5309 |
+
{
|
5310 |
+
border: 1px solid #45b5c1 !important;
|
5311 |
+
}
|
5312 |
+
.button-install:active
|
5313 |
+
{
|
5314 |
+
|
5315 |
+
border: 1px solid #cecece !important;
|
5316 |
+
background: #fff url('../img/install.png') no-repeat 6% 55%;
|
5317 |
+
padding-top:13px !important;
|
5318 |
+
}
|
5319 |
+
.button-install1
|
5320 |
+
{
|
5321 |
+
border: 1px solid #cecece !important;
|
5322 |
+
height:50px !important;
|
5323 |
+
padding-top:12px !important;
|
5324 |
+
border-radius:3px !important;
|
5325 |
+
padding-right: 0px !important;
|
5326 |
+
background: #fff url('../img/install.png') no-repeat 3%;
|
5327 |
+
padding-left: 55px;
|
5328 |
+
color: #5c656a !important;
|
5329 |
+
font-size:18px;
|
5330 |
+
font-weight:600;
|
5331 |
+
}
|
5332 |
+
.button-install1:hover
|
5333 |
+
{
|
5334 |
+
border: 1px solid #45b5c1 !important;
|
5335 |
+
}
|
5336 |
+
.button-install1:active
|
5337 |
+
{
|
5338 |
+
|
5339 |
+
border: 1px solid #cecece !important;
|
5340 |
+
background: #fff url('../img/install.png') no-repeat 3% 55%;
|
5341 |
+
padding-top:13px !important;
|
5342 |
+
}
|
5343 |
+
.button-black-disabled
|
5344 |
+
{
|
5345 |
+
height:40px;
|
5346 |
+
border-radius:2px;
|
5347 |
+
background: #ced1d2 url('../img/btn-arrow.png') no-repeat 94%;
|
5348 |
+
text-align: center;
|
5349 |
+
color: #fdfdfd !important;
|
5350 |
+
font-size:16px;
|
5351 |
+
font-weight:600;
|
5352 |
+
padding-top:9px;
|
5353 |
+
}
|
5354 |
+
.button-send-instruct
|
5355 |
+
{
|
5356 |
+
border: 1px solid #d9dede;
|
5357 |
+
height:40px;
|
5358 |
+
border-radius:2px;
|
5359 |
+
background: #fff url('../img/mail-new.png') no-repeat 97%;
|
5360 |
+
color: #3c3f40 !important;
|
5361 |
+
font-size:16px;
|
5362 |
+
font-weight:600;
|
5363 |
+
padding-top:8px;
|
5364 |
+
padding-left: 20px;
|
5365 |
+
}
|
5366 |
+
.button-platform-back
|
5367 |
+
{
|
5368 |
+
border: 1px solid #d9dede;
|
5369 |
+
height:40px;
|
5370 |
+
border-radius:2px;
|
5371 |
+
background: #fff url('../img/back.png') no-repeat 5%;
|
5372 |
+
color: #3c3f40 !important;
|
5373 |
+
font-size:16px;
|
5374 |
+
font-weight:600;
|
5375 |
+
padding-top:8px;
|
5376 |
+
padding-left: 42px;
|
5377 |
+
}
|
5378 |
+
.button-skip-dashboard
|
5379 |
+
{
|
5380 |
+
border: 1px solid #d9dede;
|
5381 |
+
height:40px;
|
5382 |
+
border-radius:2px;
|
5383 |
+
background: #fff url('../img/arrow-2.png') no-repeat 92%;
|
5384 |
+
color: #3c3f40 !important;
|
5385 |
+
font-size:16px;
|
5386 |
+
font-weight:600;
|
5387 |
+
padding-top:8px;
|
5388 |
+
padding-left: 20px;
|
5389 |
+
}
|
5390 |
+
.img-none
|
5391 |
+
{
|
5392 |
+
background-image:none;
|
5393 |
+
}
|
5394 |
+
.img-none:hover
|
5395 |
+
{
|
5396 |
+
background-image:none;
|
5397 |
+
}
|
5398 |
+
.img-none:active
|
5399 |
+
{
|
5400 |
+
background-image:none;
|
5401 |
+
}
|
5402 |
+
.block-center
|
5403 |
+
{
|
5404 |
+
margin:0px auto;
|
5405 |
+
float:none !important;
|
5406 |
+
}
|
5407 |
+
.pad-btm-20
|
5408 |
+
{
|
5409 |
+
padding-bottom:20px;
|
5410 |
+
}
|
5411 |
+
.pad-btm-100
|
5412 |
+
{
|
5413 |
+
padding-bottom:100px;
|
5414 |
+
}
|
5415 |
+
.font-18
|
5416 |
+
{
|
5417 |
+
font-size:18px !important;
|
5418 |
+
}
|
5419 |
+
.font-20
|
5420 |
+
{
|
5421 |
+
font-size:20px !important;
|
5422 |
+
}
|
5423 |
+
.font-24
|
5424 |
+
{
|
5425 |
+
font-size: 24px !important;
|
5426 |
+
}
|
5427 |
+
.font-30
|
5428 |
+
{
|
5429 |
+
font-size:30px !important;
|
5430 |
+
}
|
5431 |
+
.pad-btm-80
|
5432 |
+
{
|
5433 |
+
padding-bottom: 80px;
|
5434 |
+
}
|
5435 |
+
.pad-lft-40
|
5436 |
+
{
|
5437 |
+
padding-left: 40px;
|
5438 |
+
}
|
5439 |
+
.txt-center
|
5440 |
+
{
|
5441 |
+
text-align: center;
|
5442 |
+
}
|
5443 |
+
.width-300
|
5444 |
+
{
|
5445 |
+
width: 300px !important;
|
5446 |
+
}
|
5447 |
+
.tooltip-outer
|
5448 |
+
{
|
5449 |
+
float: left;
|
5450 |
+
width: 270px;
|
5451 |
+
}
|
5452 |
+
.tooltip-left {
|
5453 |
+
float: left;
|
5454 |
+
width: 7px;
|
5455 |
+
height: 15px;
|
5456 |
+
margin-top: 2px;
|
5457 |
+
}
|
5458 |
+
.tooltip-content {
|
5459 |
+
width:260px;
|
5460 |
+
text-align: left;
|
5461 |
+
padding: 20px 25px 20px 30px;
|
5462 |
+
background: #3c3f40;
|
5463 |
+
float: left;
|
5464 |
+
}
|
5465 |
+
.tooltip-top {
|
5466 |
+
font-size: 16px;
|
5467 |
+
font-weight: 600;
|
5468 |
+
color: #ffffff;
|
5469 |
+
margin-bottom: 10px;
|
5470 |
+
float: left;
|
5471 |
+
}
|
5472 |
+
.tooltip-text {
|
5473 |
+
font-size: 14px;
|
5474 |
+
color: #f3f6f6;
|
5475 |
+
float: left;
|
5476 |
+
font-weight:400;
|
5477 |
+
}
|
5478 |
+
@media (min-width: 768px) {
|
5479 |
+
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-13, .col-sm-14, .col-sm-15, .col-sm-16, .col-sm-17, .col-sm-18, .col-sm-19, .col-sm-20, .col-sm-21, .col-sm-22, .col-sm-23, .col-sm-24, .col-sm-25, .col-sm-26, .col-sm-27, .col-sm-28, .col-sm-29, .col-sm-30, .col-sm-31, .col-sm-32, .col-sm-33, .col-sm-34, .col-sm-35, .col-sm-36, .col-sm-37, .col-sm-38, .col-sm-39, .col-sm-40, .col-sm-41, .col-sm-42, .col-sm-43, .col-sm-44, .col-sm-45, .col-sm-46, .col-sm-47, .col-sm-48, .col-sm-49, .col-sm-50, .col-sm-51, .col-sm-52, .col-sm-53, .col-sm-54, .col-sm-55, .col-sm-56, .col-sm-57, .col-sm-58, .col-sm-59 {
|
5480 |
+
float: left;
|
5481 |
+
}
|
5482 |
+
.col-sm-1 {
|
5483 |
+
width: 1.666666666666667%;
|
5484 |
+
}
|
5485 |
+
.col-sm-2 {
|
5486 |
+
width: 3.333333333333333%;
|
5487 |
+
}
|
5488 |
+
.col-sm-3 {
|
5489 |
+
width: 5%;
|
5490 |
+
}
|
5491 |
+
.col-sm-4 {
|
5492 |
+
width: 6.666666666666667%;
|
5493 |
+
}
|
5494 |
+
.col-sm-5 {
|
5495 |
+
width: 8.333333333333333%;
|
5496 |
+
}
|
5497 |
+
.col-sm-6 {
|
5498 |
+
width: 10%;
|
5499 |
+
}
|
5500 |
+
.col-sm-7 {
|
5501 |
+
width: 11.66666666666667%;
|
5502 |
+
}
|
5503 |
+
.col-sm-8 {
|
5504 |
+
width: 13.33333333333333%;
|
5505 |
+
}
|
5506 |
+
.col-sm-9 {
|
5507 |
+
width: 15%;
|
5508 |
+
}
|
5509 |
+
.col-sm-10 {
|
5510 |
+
width: 16.66666666666667%;
|
5511 |
+
}
|
5512 |
+
.col-sm-11 {
|
5513 |
+
width: 18.33333333333333%;
|
5514 |
+
}
|
5515 |
+
.col-sm-12 {
|
5516 |
+
width: 20%;
|
5517 |
+
}
|
5518 |
+
.col-sm-13 {
|
5519 |
+
width: 21.66666666666667%;
|
5520 |
+
}
|
5521 |
+
.col-sm-14 {
|
5522 |
+
width: 23.33333333333333%;
|
5523 |
+
}
|
5524 |
+
.col-sm-15 {
|
5525 |
+
width: 25%;
|
5526 |
+
}
|
5527 |
+
.col-sm-16 {
|
5528 |
+
width: 26.66666666666667%;
|
5529 |
+
}
|
5530 |
+
.col-sm-17 {
|
5531 |
+
width: 28.33333333333333%;
|
5532 |
+
}
|
5533 |
+
.col-sm-18 {
|
5534 |
+
width: 30%;
|
5535 |
+
}
|
5536 |
+
.col-sm-19 {
|
5537 |
+
width: 31.66666666666667%;
|
5538 |
+
}
|
5539 |
+
.col-sm-20 {
|
5540 |
+
width: 33.33333333333333%;
|
5541 |
+
}
|
5542 |
+
.col-sm-21 {
|
5543 |
+
width: 35%;
|
5544 |
+
}
|
5545 |
+
.col-sm-22 {
|
5546 |
+
width: 36.66666666666667%;
|
5547 |
+
}
|
5548 |
+
.col-sm-23 {
|
5549 |
+
width: 38.33333333333333%;
|
5550 |
+
}
|
5551 |
+
.col-sm-24 {
|
5552 |
+
width: 40%;
|
5553 |
+
}
|
5554 |
+
.col-sm-25 {
|
5555 |
+
width: 41.66666666666667%;
|
5556 |
+
}
|
5557 |
+
.col-sm-26 {
|
5558 |
+
width: 43.33333333333333%;
|
5559 |
+
}
|
5560 |
+
.col-sm-27 {
|
5561 |
+
width: 45%;
|
5562 |
+
}
|
5563 |
+
.col-sm-28 {
|
5564 |
+
width: 46.66666666666667%;
|
5565 |
+
}
|
5566 |
+
.col-sm-29 {
|
5567 |
+
width: 48.33333333333333%;
|
5568 |
+
}
|
5569 |
+
.col-sm-30 {
|
5570 |
+
width: 50%;
|
5571 |
+
}
|
5572 |
+
.col-sm-31 {
|
5573 |
+
width: 51.66666666666667%;
|
5574 |
+
}
|
5575 |
+
.col-sm-32 {
|
5576 |
+
width: 53.33333333333333%;
|
5577 |
+
}
|
5578 |
+
.col-sm-33 {
|
5579 |
+
width: 55%;
|
5580 |
+
}
|
5581 |
+
.col-sm-34 {
|
5582 |
+
width: 56.66666666666667%;
|
5583 |
+
}
|
5584 |
+
.col-sm-35 {
|
5585 |
+
width: 58.33333333333333%;
|
5586 |
+
}
|
5587 |
+
.col-sm-36 {
|
5588 |
+
width: 60%;
|
5589 |
+
}
|
5590 |
+
.col-sm-37 {
|
5591 |
+
width: 61.66666666666667%;
|
5592 |
+
}
|
5593 |
+
.col-sm-38 {
|
5594 |
+
width: 63.33333333333333%;
|
5595 |
+
}
|
5596 |
+
.col-sm-39 {
|
5597 |
+
width: 65%;
|
5598 |
+
}
|
5599 |
+
.col-sm-40 {
|
5600 |
+
width: 66.66666666666667%;
|
5601 |
+
}
|
5602 |
+
.col-sm-41 {
|
5603 |
+
width: 68.33333333333333%;
|
5604 |
+
}
|
5605 |
+
.col-sm-42 {
|
5606 |
+
width: 70%;
|
5607 |
+
}
|
5608 |
+
.col-sm-43 {
|
5609 |
+
width: 71.66666666666667%;
|
5610 |
+
}
|
5611 |
+
.col-sm-44 {
|
5612 |
+
width: 73.33333333333333%;
|
5613 |
+
}
|
5614 |
+
.col-sm-45 {
|
5615 |
+
width: 75%;
|
5616 |
+
}
|
5617 |
+
.col-sm-46 {
|
5618 |
+
width: 76.66666666666667%;
|
5619 |
+
}
|
5620 |
+
.col-sm-47 {
|
5621 |
+
width: 78.33333333333333%;
|
5622 |
+
}
|
5623 |
+
.col-sm-48 {
|
5624 |
+
width: 80%;
|
5625 |
+
}
|
5626 |
+
.col-sm-49 {
|
5627 |
+
width: 81.66666666666667%;
|
5628 |
+
}
|
5629 |
+
.col-sm-50 {
|
5630 |
+
width: 83.33333333333333%;
|
5631 |
+
}
|
5632 |
+
.col-sm-51 {
|
5633 |
+
width: 85%;
|
5634 |
+
}
|
5635 |
+
.col-sm-52 {
|
5636 |
+
width: 86.66666666666667%;
|
5637 |
+
}
|
5638 |
+
.col-sm-53 {
|
5639 |
+
width: 88.33333333333333%;
|
5640 |
+
}
|
5641 |
+
.col-sm-54 {
|
5642 |
+
width: 90%;
|
5643 |
+
}
|
5644 |
+
.col-sm-55 {
|
5645 |
+
width: 91.66666666666667%;
|
5646 |
+
}
|
5647 |
+
.col-sm-56 {
|
5648 |
+
width: 93.33333333333333%;
|
5649 |
+
}
|
5650 |
+
.col-sm-57 {
|
5651 |
+
width: 95%;
|
5652 |
+
}
|
5653 |
+
.col-sm-58 {
|
5654 |
+
width: 96.66666666666667%;
|
5655 |
+
}
|
5656 |
+
.col-sm-59 {
|
5657 |
+
width: 98.33333333333333%;
|
5658 |
+
}
|
5659 |
+
.col-sm-60 {
|
5660 |
+
width: 100%;
|
5661 |
+
}
|
5662 |
+
|
5663 |
+
.col-sm-push-1 {
|
5664 |
+
left: 1.666666666666667%;
|
5665 |
+
}
|
5666 |
+
.col-sm-push-2 {
|
5667 |
+
left: 3.333333333333333%;
|
5668 |
+
}
|
5669 |
+
.col-sm-push-3 {
|
5670 |
+
left: 5%;
|
5671 |
+
}
|
5672 |
+
.col-sm-push-4 {
|
5673 |
+
left: 6.666666666666667%;
|
5674 |
+
}
|
5675 |
+
.col-sm-push-5 {
|
5676 |
+
left: 8.333333333333333%;
|
5677 |
+
}
|
5678 |
+
.col-sm-push-6 {
|
5679 |
+
left: 10%;
|
5680 |
+
}
|
5681 |
+
.col-sm-push-7 {
|
5682 |
+
left: 11.66666666666667%;
|
5683 |
+
}
|
5684 |
+
.col-sm-push-8 {
|
5685 |
+
left: 13.33333333333333%;
|
5686 |
+
}
|
5687 |
+
.col-sm-push-9 {
|
5688 |
+
left: 15%;
|
5689 |
+
}
|
5690 |
+
.col-sm-push-10 {
|
5691 |
+
left: 16.66666666666667%;
|
5692 |
+
}
|
5693 |
+
.col-sm-push-11 {
|
5694 |
+
left: 18.33333333333333%;
|
5695 |
+
}
|
5696 |
+
.col-sm-push-12 {
|
5697 |
+
left: 20%;
|
5698 |
+
}
|
5699 |
+
.col-sm-push-13 {
|
5700 |
+
left: 21.66666666666667%;
|
5701 |
+
}
|
5702 |
+
.col-sm-push-14 {
|
5703 |
+
left: 23.33333333333333%;
|
5704 |
+
}
|
5705 |
+
.col-sm-push-15 {
|
5706 |
+
left: 25%;
|
5707 |
+
}
|
5708 |
+
.col-sm-push-16 {
|
5709 |
+
left: 26.66666666666667%;
|
5710 |
+
}
|
5711 |
+
.col-sm-push-17 {
|
5712 |
+
left: 28.33333333333333%;
|
5713 |
+
}
|
5714 |
+
.col-sm-push-18 {
|
5715 |
+
left: 30%;
|
5716 |
+
}
|
5717 |
+
.col-sm-push-19 {
|
5718 |
+
left: 31.66666666666667%;
|
5719 |
+
}
|
5720 |
+
.col-sm-push-20 {
|
5721 |
+
left: 33.33333333333333%;
|
5722 |
+
}
|
5723 |
+
.col-sm-push-21 {
|
5724 |
+
left: 35%;
|
5725 |
+
}
|
5726 |
+
.col-sm-push-22 {
|
5727 |
+
left: 36.66666666666667%;
|
5728 |
+
}
|
5729 |
+
.col-sm-push-23 {
|
5730 |
+
left: 38.33333333333333%;
|
5731 |
+
}
|
5732 |
+
.col-sm-push-24 {
|
5733 |
+
left: 40%;
|
5734 |
+
}
|
5735 |
+
.col-sm-push-25 {
|
5736 |
+
left: 41.66666666666667%;
|
5737 |
+
}
|
5738 |
+
.col-sm-push-26 {
|
5739 |
+
left: 43.33333333333333%;
|
5740 |
+
}
|
5741 |
+
.col-sm-push-27 {
|
5742 |
+
left: 45%;
|
5743 |
+
}
|
5744 |
+
.col-sm-push-28 {
|
5745 |
+
left: 46.66666666666667%;
|
5746 |
+
}
|
5747 |
+
.col-sm-push-29 {
|
5748 |
+
left: 48.33333333333333%;
|
5749 |
+
}
|
5750 |
+
.col-sm-push-30 {
|
5751 |
+
left: 50%;
|
5752 |
+
}
|
5753 |
+
.col-sm-push-31 {
|
5754 |
+
left: 51.66666666666667%;
|
5755 |
+
}
|
5756 |
+
.col-sm-push-32 {
|
5757 |
+
left: 53.33333333333333%;
|
5758 |
+
}
|
5759 |
+
.col-sm-push-33 {
|
5760 |
+
left: 55%;
|
5761 |
+
}
|
5762 |
+
.col-sm-push-34 {
|
5763 |
+
left: 56.66666666666667%;
|
5764 |
+
}
|
5765 |
+
.col-sm-push-35 {
|
5766 |
+
left: 58.33333333333333%;
|
5767 |
+
}
|
5768 |
+
.col-sm-push-36 {
|
5769 |
+
left: 60%;
|
5770 |
+
}
|
5771 |
+
.col-sm-push-37 {
|
5772 |
+
left: 61.66666666666667%;
|
5773 |
+
}
|
5774 |
+
.col-sm-push-38 {
|
5775 |
+
left: 63.33333333333333%;
|
5776 |
+
}
|
5777 |
+
.col-sm-push-39 {
|
5778 |
+
left: 65%;
|
5779 |
+
}
|
5780 |
+
.col-sm-push-40 {
|
5781 |
+
left: 66.66666666666667%;
|
5782 |
+
}
|
5783 |
+
.col-sm-push-41 {
|
5784 |
+
left: 68.33333333333333%;
|
5785 |
+
}
|
5786 |
+
.col-sm-push-42 {
|
5787 |
+
left: 70%;
|
5788 |
+
}
|
5789 |
+
.col-sm-push-43 {
|
5790 |
+
left: 71.66666666666667%;
|
5791 |
+
}
|
5792 |
+
.col-sm-push-44 {
|
5793 |
+
left: 73.33333333333333%;
|
5794 |
+
}
|
5795 |
+
.col-sm-push-45 {
|
5796 |
+
left: 75%;
|
5797 |
+
}
|
5798 |
+
.col-sm-push-46 {
|
5799 |
+
left: 76.66666666666667%;
|
5800 |
+
}
|
5801 |
+
.col-sm-push-47 {
|
5802 |
+
left: 78.33333333333333%;
|
5803 |
+
}
|
5804 |
+
.col-sm-push-48 {
|
5805 |
+
left: 80%;
|
5806 |
+
}
|
5807 |
+
.col-sm-push-49 {
|
5808 |
+
left: 81.66666666666667%;
|
5809 |
+
}
|
5810 |
+
.col-sm-push-50 {
|
5811 |
+
left: 83.33333333333333%;
|
5812 |
+
}
|
5813 |
+
.col-sm-push-51 {
|
5814 |
+
left: 85%;
|
5815 |
+
}
|
5816 |
+
.col-sm-push-52 {
|
5817 |
+
left: 86.66666666666667%;
|
5818 |
+
}
|
5819 |
+
.col-sm-push-53 {
|
5820 |
+
left: 88.33333333333333%;
|
5821 |
+
}
|
5822 |
+
.col-sm-push-54 {
|
5823 |
+
left: 90%;
|
5824 |
+
}
|
5825 |
+
.col-sm-push-55 {
|
5826 |
+
left: 91.66666666666667%;
|
5827 |
+
}
|
5828 |
+
.col-sm-push-56 {
|
5829 |
+
left: 93.33333333333333%;
|
5830 |
+
}
|
5831 |
+
.col-sm-push-57 {
|
5832 |
+
left: 95%;
|
5833 |
+
}
|
5834 |
+
.col-sm-push-58 {
|
5835 |
+
left: 96.66666666666667%;
|
5836 |
+
}
|
5837 |
+
.col-sm-push-59 {
|
5838 |
+
left: 98.33333333333333%;
|
5839 |
+
}
|
5840 |
+
|
5841 |
+
.col-sm-pull-1 {
|
5842 |
+
right: 1.666666666666667%;
|
5843 |
+
}
|
5844 |
+
.col-sm-pull-2 {
|
5845 |
+
right: 3.333333333333333%;
|
5846 |
+
}
|
5847 |
+
.col-sm-pull-3 {
|
5848 |
+
right: 5%;
|
5849 |
+
}
|
5850 |
+
.col-sm-pull-4 {
|
5851 |
+
right: 6.666666666666667%;
|
5852 |
+
}
|
5853 |
+
.col-sm-pull-5 {
|
5854 |
+
right: 8.333333333333333%;
|
5855 |
+
}
|
5856 |
+
.col-sm-pull-6 {
|
5857 |
+
right: 10%;
|
5858 |
+
}
|
5859 |
+
.col-sm-pull-7 {
|
5860 |
+
right: 11.66666666666667%;
|
5861 |
+
}
|
5862 |
+
.col-sm-pull-8 {
|
5863 |
+
right: 13.33333333333333%;
|
5864 |
+
}
|
5865 |
+
.col-sm-pull-9 {
|
5866 |
+
right: 15%;
|
5867 |
+
}
|
5868 |
+
.col-sm-pull-10 {
|
5869 |
+
right: 16.66666666666667%;
|
5870 |
+
}
|
5871 |
+
.col-sm-pull-11 {
|
5872 |
+
right: 18.33333333333333%;
|
5873 |
+
}
|
5874 |
+
.col-sm-pull-12 {
|
5875 |
+
right: 20%;
|
5876 |
+
}
|
5877 |
+
.col-sm-pull-13 {
|
5878 |
+
right: 21.66666666666667%;
|
5879 |
+
}
|
5880 |
+
.col-sm-pull-14 {
|
5881 |
+
right: 23.33333333333333%;
|
5882 |
+
}
|
5883 |
+
.col-sm-pull-15 {
|
5884 |
+
right: 25%;
|
5885 |
+
}
|
5886 |
+
.col-sm-pull-16 {
|
5887 |
+
right: 26.66666666666667%;
|
5888 |
+
}
|
5889 |
+
.col-sm-pull-17 {
|
5890 |
+
right: 28.33333333333333%;
|
5891 |
+
}
|
5892 |
+
.col-sm-pull-18 {
|
5893 |
+
right: 30%;
|
5894 |
+
}
|
5895 |
+
.col-sm-pull-19 {
|
5896 |
+
right: 31.66666666666667%;
|
5897 |
+
}
|
5898 |
+
.col-sm-pull-20 {
|
5899 |
+
right: 33.33333333333333%;
|
5900 |
+
}
|
5901 |
+
.col-sm-pull-21 {
|
5902 |
+
right: 35%;
|
5903 |
+
}
|
5904 |
+
.col-sm-pull-22 {
|
5905 |
+
right: 36.66666666666667%;
|
5906 |
+
}
|
5907 |
+
.col-sm-pull-23 {
|
5908 |
+
right: 38.33333333333333%;
|
5909 |
+
}
|
5910 |
+
.col-sm-pull-24 {
|
5911 |
+
right: 40%;
|
5912 |
+
}
|
5913 |
+
.col-sm-pull-25 {
|
5914 |
+
right: 41.66666666666667%;
|
5915 |
+
}
|
5916 |
+
.col-sm-pull-26 {
|
5917 |
+
right: 43.33333333333333%;
|
5918 |
+
}
|
5919 |
+
.col-sm-pull-27 {
|
5920 |
+
right: 45%;
|
5921 |
+
}
|
5922 |
+
.col-sm-pull-28 {
|
5923 |
+
right: 46.66666666666667%;
|
5924 |
+
}
|
5925 |
+
.col-sm-pull-29 {
|
5926 |
+
right: 48.33333333333333%;
|
5927 |
+
}
|
5928 |
+
.col-sm-pull-30 {
|
5929 |
+
right: 50%;
|
5930 |
+
}
|
5931 |
+
.col-sm-pull-31 {
|
5932 |
+
right: 51.66666666666667%;
|
5933 |
+
}
|
5934 |
+
.col-sm-pull-32 {
|
5935 |
+
right: 53.33333333333333%;
|
5936 |
+
}
|
5937 |
+
.col-sm-pull-33 {
|
5938 |
+
right: 55%;
|
5939 |
+
}
|
5940 |
+
.col-sm-pull-34 {
|
5941 |
+
right: 56.66666666666667%;
|
5942 |
+
}
|
5943 |
+
.col-sm-pull-35 {
|
5944 |
+
right: 58.33333333333333%;
|
5945 |
+
}
|
5946 |
+
.col-sm-pull-36 {
|
5947 |
+
right: 60%;
|
5948 |
+
}
|
5949 |
+
.col-sm-pull-37 {
|
5950 |
+
right: 61.66666666666667%;
|
5951 |
+
}
|
5952 |
+
.col-sm-pull-38 {
|
5953 |
+
right: 63.33333333333333%;
|
5954 |
+
}
|
5955 |
+
.col-sm-pull-39 {
|
5956 |
+
right: 65%;
|
5957 |
+
}
|
5958 |
+
.col-sm-pull-40 {
|
5959 |
+
right: 66.66666666666667%;
|
5960 |
+
}
|
5961 |
+
.col-sm-pull-41 {
|
5962 |
+
right: 68.33333333333333%;
|
5963 |
+
}
|
5964 |
+
.col-sm-pull-42 {
|
5965 |
+
right: 70%;
|
5966 |
+
}
|
5967 |
+
.col-sm-pull-43 {
|
5968 |
+
right: 71.66666666666667%;
|
5969 |
+
}
|
5970 |
+
.col-sm-pull-44 {
|
5971 |
+
right: 73.33333333333333%;
|
5972 |
+
}
|
5973 |
+
.col-sm-pull-45 {
|
5974 |
+
right: 75%;
|
5975 |
+
}
|
5976 |
+
.col-sm-pull-46 {
|
5977 |
+
right: 76.66666666666667%;
|
5978 |
+
}
|
5979 |
+
.col-sm-pull-47 {
|
5980 |
+
right: 78.33333333333333%;
|
5981 |
+
}
|
5982 |
+
.col-sm-pull-48 {
|
5983 |
+
right: 80%;
|
5984 |
+
}
|
5985 |
+
.col-sm-pull-49 {
|
5986 |
+
right: 81.66666666666667%;
|
5987 |
+
}
|
5988 |
+
.col-sm-pull-50 {
|
5989 |
+
right: 83.33333333333333%;
|
5990 |
+
}
|
5991 |
+
.col-sm-pull-51 {
|
5992 |
+
right: 85%;
|
5993 |
+
}
|
5994 |
+
.col-sm-pull-52 {
|
5995 |
+
right: 86.66666666666667%;
|
5996 |
+
}
|
5997 |
+
.col-sm-pull-53 {
|
5998 |
+
right: 88.33333333333333%;
|
5999 |
+
}
|
6000 |
+
.col-sm-pull-54 {
|
6001 |
+
right: 90%;
|
6002 |
+
}
|
6003 |
+
.col-sm-pull-55 {
|
6004 |
+
right: 91.66666666666667%;
|
6005 |
+
}
|
6006 |
+
.col-sm-pull-56 {
|
6007 |
+
right: 93.33333333333333%;
|
6008 |
+
}
|
6009 |
+
.col-sm-pull-57 {
|
6010 |
+
right: 95%;
|
6011 |
+
}
|
6012 |
+
.col-sm-pull-58 {
|
6013 |
+
right: 96.66666666666667%;
|
6014 |
+
}
|
6015 |
+
.col-sm-pull-59 {
|
6016 |
+
right: 98.33333333333333%;
|
6017 |
+
}
|
6018 |
+
|
6019 |
+
.col-sm-offset-1 {
|
6020 |
+
margin-left: 1.666666666666667%;
|
6021 |
+
}
|
6022 |
+
.col-sm-offset-2 {
|
6023 |
+
margin-left: 3.333333333333333%;
|
6024 |
+
}
|
6025 |
+
.col-sm-offset-3 {
|
6026 |
+
margin-left: 5%;
|
6027 |
+
}
|
6028 |
+
.col-sm-offset-4 {
|
6029 |
+
margin-left: 6.666666666666667%;
|
6030 |
+
}
|
6031 |
+
.col-sm-offset-5 {
|
6032 |
+
margin-left: 8.333333333333333%;
|
6033 |
+
}
|
6034 |
+
.col-sm-offset-6 {
|
6035 |
+
margin-left: 10%;
|
6036 |
+
}
|
6037 |
+
.col-sm-offset-7 {
|
6038 |
+
margin-left: 11.66666666666667%;
|
6039 |
+
}
|
6040 |
+
.col-sm-offset-8 {
|
6041 |
+
margin-left: 13.33333333333333%;
|
6042 |
+
}
|
6043 |
+
.col-sm-offset-9 {
|
6044 |
+
margin-left: 15%;
|
6045 |
+
}
|
6046 |
+
.col-sm-offset-10 {
|
6047 |
+
margin-left: 16.66666666666667%;
|
6048 |
+
}
|
6049 |
+
.col-sm-offset-11 {
|
6050 |
+
margin-left: 18.33333333333333%;
|
6051 |
+
}
|
6052 |
+
.col-sm-offset-12 {
|
6053 |
+
margin-left: 20%;
|
6054 |
+
}
|
6055 |
+
.col-sm-offset-13 {
|
6056 |
+
margin-left: 21.66666666666667%;
|
6057 |
+
}
|
6058 |
+
.col-sm-offset-14 {
|
6059 |
+
margin-left: 23.33333333333333%;
|
6060 |
+
}
|
6061 |
+
.col-sm-offset-15 {
|
6062 |
+
margin-left: 25%;
|
6063 |
+
}
|
6064 |
+
.col-sm-offset-16 {
|
6065 |
+
margin-left: 26.66666666666667%;
|
6066 |
+
}
|
6067 |
+
.col-sm-offset-17 {
|
6068 |
+
margin-left: 28.33333333333333%;
|
6069 |
+
}
|
6070 |
+
.col-sm-offset-18 {
|
6071 |
+
margin-left: 30%;
|
6072 |
+
}
|
6073 |
+
.col-sm-offset-19 {
|
6074 |
+
margin-left: 31.66666666666667%;
|
6075 |
+
}
|
6076 |
+
.col-sm-offset-20 {
|
6077 |
+
margin-left: 33.33333333333333%;
|
6078 |
+
}
|
6079 |
+
.col-sm-offset-21 {
|
6080 |
+
margin-left: 35%;
|
6081 |
+
}
|
6082 |
+
.col-sm-offset-22 {
|
6083 |
+
margin-left: 36.66666666666667%;
|
6084 |
+
}
|
6085 |
+
.col-sm-offset-23 {
|
6086 |
+
margin-left: 38.33333333333333%;
|
6087 |
+
}
|
6088 |
+
.col-sm-offset-24 {
|
6089 |
+
margin-left: 40%;
|
6090 |
+
}
|
6091 |
+
.col-sm-offset-25 {
|
6092 |
+
margin-left: 41.66666666666667%;
|
6093 |
+
}
|
6094 |
+
.col-sm-offset-26 {
|
6095 |
+
margin-left: 43.33333333333333%;
|
6096 |
+
}
|
6097 |
+
.col-sm-offset-27 {
|
6098 |
+
margin-left: 45%;
|
6099 |
+
}
|
6100 |
+
.col-sm-offset-28 {
|
6101 |
+
margin-left: 46.66666666666667%;
|
6102 |
+
}
|
6103 |
+
.col-sm-offset-29 {
|
6104 |
+
margin-left: 48.33333333333333%;
|
6105 |
+
}
|
6106 |
+
.col-sm-offset-30 {
|
6107 |
+
margin-left: 50%;
|
6108 |
+
}
|
6109 |
+
.col-sm-offset-31 {
|
6110 |
+
margin-left: 51.66666666666667%;
|
6111 |
+
}
|
6112 |
+
.col-sm-offset-32 {
|
6113 |
+
margin-left: 53.33333333333333%;
|
6114 |
+
}
|
6115 |
+
.col-sm-offset-33 {
|
6116 |
+
margin-left: 55%;
|
6117 |
+
}
|
6118 |
+
.col-sm-offset-34 {
|
6119 |
+
margin-left: 56.66666666666667%;
|
6120 |
+
}
|
6121 |
+
.col-sm-offset-35 {
|
6122 |
+
margin-left: 58.33333333333333%;
|
6123 |
+
}
|
6124 |
+
.col-sm-offset-36 {
|
6125 |
+
margin-left: 60%;
|
6126 |
+
}
|
6127 |
+
.col-sm-offset-37 {
|
6128 |
+
margin-left: 61.66666666666667%;
|
6129 |
+
}
|
6130 |
+
.col-sm-offset-38 {
|
6131 |
+
margin-left: 63.33333333333333%;
|
6132 |
+
}
|
6133 |
+
.col-sm-offset-39 {
|
6134 |
+
margin-left: 65%;
|
6135 |
+
}
|
6136 |
+
.col-sm-offset-40 {
|
6137 |
+
margin-left: 66.66666666666667%;
|
6138 |
+
}
|
6139 |
+
.col-sm-offset-41 {
|
6140 |
+
margin-left: 68.33333333333333%;
|
6141 |
+
}
|
6142 |
+
.col-sm-offset-42 {
|
6143 |
+
margin-left: 70%;
|
6144 |
+
}
|
6145 |
+
.col-sm-offset-43 {
|
6146 |
+
margin-left: 71.66666666666667%;
|
6147 |
+
}
|
6148 |
+
.col-sm-offset-44 {
|
6149 |
+
margin-left: 73.33333333333333%;
|
6150 |
+
}
|
6151 |
+
.col-sm-offset-45 {
|
6152 |
+
margin-left: 75%;
|
6153 |
+
}
|
6154 |
+
.col-sm-offset-46 {
|
6155 |
+
margin-left: 76.66666666666667%;
|
6156 |
+
}
|
6157 |
+
.col-sm-offset-47 {
|
6158 |
+
margin-left: 78.33333333333333%;
|
6159 |
+
}
|
6160 |
+
.col-sm-offset-48 {
|
6161 |
+
margin-left: 80%;
|
6162 |
+
}
|
6163 |
+
.col-sm-offset-49 {
|
6164 |
+
margin-left: 81.66666666666667%;
|
6165 |
+
}
|
6166 |
+
.col-sm-offset-50 {
|
6167 |
+
margin-left: 83.33333333333333%;
|
6168 |
+
}
|
6169 |
+
.col-sm-offset-51 {
|
6170 |
+
margin-left: 85%;
|
6171 |
+
}
|
6172 |
+
.col-sm-offset-52 {
|
6173 |
+
margin-left: 86.66666666666667%;
|
6174 |
+
}
|
6175 |
+
.col-sm-offset-53 {
|
6176 |
+
margin-left: 88.33333333333333%;
|
6177 |
+
}
|
6178 |
+
.col-sm-offset-54 {
|
6179 |
+
margin-left: 90%;
|
6180 |
+
}
|
6181 |
+
.col-sm-offset-55 {
|
6182 |
+
margin-left: 91.66666666666667%;
|
6183 |
+
}
|
6184 |
+
.col-sm-offset-56 {
|
6185 |
+
margin-left: 93.33333333333333%;
|
6186 |
+
}
|
6187 |
+
.col-sm-offset-57 {
|
6188 |
+
margin-left: 95%;
|
6189 |
+
}
|
6190 |
+
.col-sm-offset-58 {
|
6191 |
+
margin-left: 96.66666666666667%;
|
6192 |
+
}
|
6193 |
+
.col-sm-offset-59 {
|
6194 |
+
margin-left: 98.33333333333333%;
|
6195 |
+
}
|
6196 |
+
|
6197 |
+
/*common tablet */
|
6198 |
+
.fixed-width-520 {
|
6199 |
+
margin: 0px auto;
|
6200 |
+
float: none;
|
6201 |
+
}
|
6202 |
+
.fixed-width-580 {
|
6203 |
+
margin: 0px auto;
|
6204 |
+
float: none;
|
6205 |
+
}
|
6206 |
+
.fixed-width-680 {
|
6207 |
+
margin: 0px auto;
|
6208 |
+
float: none;
|
6209 |
+
}
|
6210 |
+
.fixed-width-700 {
|
6211 |
+
margin: 0px auto;
|
6212 |
+
float: none;
|
6213 |
+
width: 700px !important;
|
6214 |
+
}
|
6215 |
+
.fixed-width-730 {
|
6216 |
+
margin: 0px auto;
|
6217 |
+
float: none;
|
6218 |
+
width: 730px !important;
|
6219 |
+
}
|
6220 |
+
.fixed-width-800 {
|
6221 |
+
margin: 0px auto;
|
6222 |
+
float: none;
|
6223 |
+
width: 800px !important;
|
6224 |
+
}
|
6225 |
+
.fixed-width-940 {
|
6226 |
+
margin: 0px auto;
|
6227 |
+
float: none;
|
6228 |
+
}
|
6229 |
+
.fixed-width-980 {
|
6230 |
+
margin: 0px auto;
|
6231 |
+
float: none;
|
6232 |
+
}
|
6233 |
+
.fixed-width-1080 {
|
6234 |
+
margin: 0px auto;
|
6235 |
+
float: none;
|
6236 |
+
}
|
6237 |
+
.fixed-width-1140 {
|
6238 |
+
margin: 0px auto;
|
6239 |
+
float: none;
|
6240 |
+
}
|
6241 |
+
|
6242 |
+
}
|
6243 |
+
@media (min-width: 980px) {
|
6244 |
+
|
6245 |
+
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-13, .col-md-14, .col-md-15, .col-md-16, .col-md-17, .col-md-18, .col-md-19, .col-md-20, .col-md-21, .col-md-22, .col-md-23, .col-md-24, .col-md-25, .col-md-26, .col-md-27, .col-md-28, .col-md-29, .col-md-30, .col-md-31, .col-md-32, .col-md-33, .col-md-34, .col-md-35, .col-md-36, .col-md-37, .col-md-38, .col-md-39, .col-md-40, .col-md-41, .col-md-42, .col-md-43, .col-md-44, .col-md-45, .col-md-46, .col-md-47, .col-md-48, .col-md-49, .col-md-50, .col-md-51, .col-md-52, .col-md-53, .col-md-54, .col-md-55, .col-md-56, .col-md-57, .col-md-58, .col-md-59 {
|
6246 |
+
float: left;
|
6247 |
+
}
|
6248 |
+
.col-md-1 {
|
6249 |
+
width: 1.666666666666667%;
|
6250 |
+
}
|
6251 |
+
.col-md-2 {
|
6252 |
+
width: 3.333333333333333%;
|
6253 |
+
}
|
6254 |
+
.col-md-3 {
|
6255 |
+
width: 5%;
|
6256 |
+
}
|
6257 |
+
.col-md-4 {
|
6258 |
+
width: 6.666666666666667%;
|
6259 |
+
}
|
6260 |
+
.col-md-5 {
|
6261 |
+
width: 8.333333333333333%;
|
6262 |
+
}
|
6263 |
+
.col-md-6 {
|
6264 |
+
width: 10%;
|
6265 |
+
}
|
6266 |
+
.col-md-7 {
|
6267 |
+
width: 11.66666666666667%;
|
6268 |
+
}
|
6269 |
+
.col-md-8 {
|
6270 |
+
width: 13.33333333333333%;
|
6271 |
+
}
|
6272 |
+
.col-md-9 {
|
6273 |
+
width: 15%;
|
6274 |
+
}
|
6275 |
+
.col-md-10 {
|
6276 |
+
width: 16.66666666666667%;
|
6277 |
+
}
|
6278 |
+
.col-md-11 {
|
6279 |
+
width: 18.33333333333333%;
|
6280 |
+
}
|
6281 |
+
.col-md-12 {
|
6282 |
+
width: 20%;
|
6283 |
+
}
|
6284 |
+
.col-md-13 {
|
6285 |
+
width: 21.66666666666667%;
|
6286 |
+
}
|
6287 |
+
.col-md-14 {
|
6288 |
+
width: 23.33333333333333%;
|
6289 |
+
}
|
6290 |
+
.col-md-15 {
|
6291 |
+
width: 25%;
|
6292 |
+
}
|
6293 |
+
.col-md-16 {
|
6294 |
+
width: 26.66666666666667%;
|
6295 |
+
}
|
6296 |
+
.col-md-17 {
|
6297 |
+
width: 28.33333333333333%;
|
6298 |
+
}
|
6299 |
+
.col-md-18 {
|
6300 |
+
width: 30%;
|
6301 |
+
}
|
6302 |
+
.col-md-19 {
|
6303 |
+
width: 31.66666666666667%;
|
6304 |
+
}
|
6305 |
+
.col-md-20 {
|
6306 |
+
width: 33.33333333333333%;
|
6307 |
+
}
|
6308 |
+
.col-md-21 {
|
6309 |
+
width: 35%;
|
6310 |
+
}
|
6311 |
+
.col-md-22 {
|
6312 |
+
width: 36.66666666666667%;
|
6313 |
+
}
|
6314 |
+
.col-md-23 {
|
6315 |
+
width: 38.33333333333333%;
|
6316 |
+
}
|
6317 |
+
.col-md-24 {
|
6318 |
+
width: 40%;
|
6319 |
+
}
|
6320 |
+
.col-md-25 {
|
6321 |
+
width: 41.66666666666667%;
|
6322 |
+
}
|
6323 |
+
.col-md-26 {
|
6324 |
+
width: 43.33333333333333%;
|
6325 |
+
}
|
6326 |
+
.col-md-27 {
|
6327 |
+
width: 45%;
|
6328 |
+
}
|
6329 |
+
.col-md-28 {
|
6330 |
+
width: 46.66666666666667%;
|
6331 |
+
}
|
6332 |
+
.col-md-29 {
|
6333 |
+
width: 48.33333333333333%;
|
6334 |
+
}
|
6335 |
+
.col-md-30 {
|
6336 |
+
width: 50%;
|
6337 |
+
}
|
6338 |
+
.col-md-31 {
|
6339 |
+
width: 51.66666666666667%;
|
6340 |
+
}
|
6341 |
+
.col-md-32 {
|
6342 |
+
width: 53.33333333333333%;
|
6343 |
+
}
|
6344 |
+
.col-md-33 {
|
6345 |
+
width: 55%;
|
6346 |
+
}
|
6347 |
+
.col-md-34 {
|
6348 |
+
width: 56.66666666666667%;
|
6349 |
+
}
|
6350 |
+
.col-md-35 {
|
6351 |
+
width: 58.33333333333333%;
|
6352 |
+
}
|
6353 |
+
.col-md-36 {
|
6354 |
+
width: 60%;
|
6355 |
+
}
|
6356 |
+
.col-md-37 {
|
6357 |
+
width: 61.66666666666667%;
|
6358 |
+
}
|
6359 |
+
.col-md-38 {
|
6360 |
+
width: 63.33333333333333%;
|
6361 |
+
}
|
6362 |
+
.col-md-39 {
|
6363 |
+
width: 65%;
|
6364 |
+
}
|
6365 |
+
.col-md-40 {
|
6366 |
+
width: 66.66666666666667%;
|
6367 |
+
}
|
6368 |
+
.col-md-41 {
|
6369 |
+
width: 68.33333333333333%;
|
6370 |
+
}
|
6371 |
+
.col-md-42 {
|
6372 |
+
width: 70%;
|
6373 |
+
}
|
6374 |
+
.col-md-43 {
|
6375 |
+
width: 71.66666666666667%;
|
6376 |
+
}
|
6377 |
+
.col-md-44 {
|
6378 |
+
width: 73.33333333333333%;
|
6379 |
+
}
|
6380 |
+
.col-md-45 {
|
6381 |
+
width: 75%;
|
6382 |
+
}
|
6383 |
+
.col-md-46 {
|
6384 |
+
width: 76.66666666666667%;
|
6385 |
+
}
|
6386 |
+
.col-md-47 {
|
6387 |
+
width: 78.33333333333333%;
|
6388 |
+
}
|
6389 |
+
.col-md-48 {
|
6390 |
+
width: 80%;
|
6391 |
+
}
|
6392 |
+
.col-md-49 {
|
6393 |
+
width: 81.66666666666667%;
|
6394 |
+
}
|
6395 |
+
.col-md-50 {
|
6396 |
+
width: 83.33333333333333%;
|
6397 |
+
}
|
6398 |
+
.col-md-51 {
|
6399 |
+
width: 85%;
|
6400 |
+
}
|
6401 |
+
.col-md-52 {
|
6402 |
+
width: 86.66666666666667%;
|
6403 |
+
}
|
6404 |
+
.col-md-53 {
|
6405 |
+
width: 88.33333333333333%;
|
6406 |
+
}
|
6407 |
+
.col-md-54 {
|
6408 |
+
width: 90%;
|
6409 |
+
}
|
6410 |
+
.col-md-55 {
|
6411 |
+
width: 91.66666666666667%;
|
6412 |
+
}
|
6413 |
+
.col-md-56 {
|
6414 |
+
width: 93.33333333333333%;
|
6415 |
+
}
|
6416 |
+
.col-md-57 {
|
6417 |
+
width: 95%;
|
6418 |
+
}
|
6419 |
+
.col-md-58 {
|
6420 |
+
width: 96.66666666666667%;
|
6421 |
+
}
|
6422 |
+
.col-md-59 {
|
6423 |
+
width: 98.33333333333333%;
|
6424 |
+
}
|
6425 |
+
.col-md-60 {
|
6426 |
+
width: 100%;
|
6427 |
+
}
|
6428 |
+
.col-md-push-0 {
|
6429 |
+
left: auto
|
6430 |
+
}
|
6431 |
+
.col-md-push-1 {
|
6432 |
+
left: 1.666666666666667%;
|
6433 |
+
}
|
6434 |
+
.col-md-push-2 {
|
6435 |
+
left: 3.333333333333333%;
|
6436 |
+
}
|
6437 |
+
.col-md-push-3 {
|
6438 |
+
left: 5%;
|
6439 |
+
}
|
6440 |
+
.col-md-push-4 {
|
6441 |
+
left: 6.666666666666667%;
|
6442 |
+
}
|
6443 |
+
.col-md-push-5 {
|
6444 |
+
left: 8.333333333333333%;
|
6445 |
+
}
|
6446 |
+
.col-md-push-6 {
|
6447 |
+
left: 10%;
|
6448 |
+
}
|
6449 |
+
.col-md-push-7 {
|
6450 |
+
left: 11.66666666666667%;
|
6451 |
+
}
|
6452 |
+
.col-md-push-8 {
|
6453 |
+
left: 13.33333333333333%;
|
6454 |
+
}
|
6455 |
+
.col-md-push-9 {
|
6456 |
+
left: 15%;
|
6457 |
+
}
|
6458 |
+
.col-md-push-10 {
|
6459 |
+
left: 16.66666666666667%;
|
6460 |
+
}
|
6461 |
+
.col-md-push-11 {
|
6462 |
+
left: 18.33333333333333%;
|
6463 |
+
}
|
6464 |
+
.col-md-push-12 {
|
6465 |
+
left: 20%;
|
6466 |
+
}
|
6467 |
+
.col-md-push-13 {
|
6468 |
+
left: 21.66666666666667%;
|
6469 |
+
}
|
6470 |
+
.col-md-push-14 {
|
6471 |
+
left: 23.33333333333333%;
|
6472 |
+
}
|
6473 |
+
.col-md-push-15 {
|
6474 |
+
left: 25%;
|
6475 |
+
}
|
6476 |
+
.col-md-push-16 {
|
6477 |
+
left: 26.66666666666667%;
|
6478 |
+
}
|
6479 |
+
.col-md-push-17 {
|
6480 |
+
left: 28.33333333333333%;
|
6481 |
+
}
|
6482 |
+
.col-md-push-18 {
|
6483 |
+
left: 30%;
|
6484 |
+
}
|
6485 |
+
.col-md-push-19 {
|
6486 |
+
left: 31.66666666666667%;
|
6487 |
+
}
|
6488 |
+
.col-md-push-20 {
|
6489 |
+
left: 33.33333333333333%;
|
6490 |
+
}
|
6491 |
+
.col-md-push-21 {
|
6492 |
+
left: 35%;
|
6493 |
+
}
|
6494 |
+
.col-md-push-22 {
|
6495 |
+
left: 36.66666666666667%;
|
6496 |
+
}
|
6497 |
+
.col-md-push-23 {
|
6498 |
+
left: 38.33333333333333%;
|
6499 |
+
}
|
6500 |
+
.col-md-push-24 {
|
6501 |
+
left: 40%;
|
6502 |
+
}
|
6503 |
+
.col-md-push-25 {
|
6504 |
+
left: 41.66666666666667%;
|
6505 |
+
}
|
6506 |
+
.col-md-push-26 {
|
6507 |
+
left: 43.33333333333333%;
|
6508 |
+
}
|
6509 |
+
.col-md-push-27 {
|
6510 |
+
left: 45%;
|
6511 |
+
}
|
6512 |
+
.col-md-push-28 {
|
6513 |
+
left: 46.66666666666667%;
|
6514 |
+
}
|
6515 |
+
.col-md-push-29 {
|
6516 |
+
left: 48.33333333333333%;
|
6517 |
+
}
|
6518 |
+
.col-md-push-30 {
|
6519 |
+
left: 50%;
|
6520 |
+
}
|
6521 |
+
.col-md-push-31 {
|
6522 |
+
left: 51.66666666666667%;
|
6523 |
+
}
|
6524 |
+
.col-md-push-32 {
|
6525 |
+
left: 53.33333333333333%;
|
6526 |
+
}
|
6527 |
+
.col-md-push-33 {
|
6528 |
+
left: 55%;
|
6529 |
+
}
|
6530 |
+
.col-md-push-34 {
|
6531 |
+
left: 56.66666666666667%;
|
6532 |
+
}
|
6533 |
+
.col-md-push-35 {
|
6534 |
+
left: 58.33333333333333%;
|
6535 |
+
}
|
6536 |
+
.col-md-push-36 {
|
6537 |
+
left: 60%;
|
6538 |
+
}
|
6539 |
+
.col-md-push-37 {
|
6540 |
+
left: 61.66666666666667%;
|
6541 |
+
}
|
6542 |
+
.col-md-push-38 {
|
6543 |
+
left: 63.33333333333333%;
|
6544 |
+
}
|
6545 |
+
.col-md-push-39 {
|
6546 |
+
left: 65%;
|
6547 |
+
}
|
6548 |
+
.col-md-push-40 {
|
6549 |
+
left: 66.66666666666667%;
|
6550 |
+
}
|
6551 |
+
.col-md-push-41 {
|
6552 |
+
left: 68.33333333333333%;
|
6553 |
+
}
|
6554 |
+
.col-md-push-42 {
|
6555 |
+
left: 70%;
|
6556 |
+
}
|
6557 |
+
.col-md-push-43 {
|
6558 |
+
left: 71.66666666666667%;
|
6559 |
+
}
|
6560 |
+
.col-md-push-44 {
|
6561 |
+
left: 73.33333333333333%;
|
6562 |
+
}
|
6563 |
+
.col-md-push-45 {
|
6564 |
+
left: 75%;
|
6565 |
+
}
|
6566 |
+
.col-md-push-46 {
|
6567 |
+
left: 76.66666666666667%;
|
6568 |
+
}
|
6569 |
+
.col-md-push-47 {
|
6570 |
+
left: 78.33333333333333%;
|
6571 |
+
}
|
6572 |
+
.col-md-push-48 {
|
6573 |
+
left: 80%;
|
6574 |
+
}
|
6575 |
+
.col-md-push-49 {
|
6576 |
+
left: 81.66666666666667%;
|
6577 |
+
}
|
6578 |
+
.col-md-push-50 {
|
6579 |
+
left: 83.33333333333333%;
|
6580 |
+
}
|
6581 |
+
.col-md-push-51 {
|
6582 |
+
left: 85%;
|
6583 |
+
}
|
6584 |
+
.col-md-push-52 {
|
6585 |
+
left: 86.66666666666667%;
|
6586 |
+
}
|
6587 |
+
.col-md-push-53 {
|
6588 |
+
left: 88.33333333333333%;
|
6589 |
+
}
|
6590 |
+
.col-md-push-54 {
|
6591 |
+
left: 90%;
|
6592 |
+
}
|
6593 |
+
.col-md-push-55 {
|
6594 |
+
left: 91.66666666666667%;
|
6595 |
+
}
|
6596 |
+
.col-md-push-56 {
|
6597 |
+
left: 93.33333333333333%;
|
6598 |
+
}
|
6599 |
+
.col-md-push-57 {
|
6600 |
+
left: 95%;
|
6601 |
+
}
|
6602 |
+
.col-md-push-58 {
|
6603 |
+
left: 96.66666666666667%;
|
6604 |
+
}
|
6605 |
+
.col-md-push-59 {
|
6606 |
+
left: 98.33333333333333%;
|
6607 |
+
}
|
6608 |
+
.col-md-pull-0 {
|
6609 |
+
right: auto
|
6610 |
+
}
|
6611 |
+
.col-md-pull-1 {
|
6612 |
+
right: 1.666666666666667%;
|
6613 |
+
}
|
6614 |
+
.col-md-pull-2 {
|
6615 |
+
right: 3.333333333333333%;
|
6616 |
+
}
|
6617 |
+
.col-md-pull-3 {
|
6618 |
+
right: 5%;
|
6619 |
+
}
|
6620 |
+
.col-md-pull-4 {
|
6621 |
+
right: 6.666666666666667%;
|
6622 |
+
}
|
6623 |
+
.col-md-pull-5 {
|
6624 |
+
right: 8.333333333333333%;
|
6625 |
+
}
|
6626 |
+
.col-md-pull-6 {
|
6627 |
+
right: 10%;
|
6628 |
+
}
|
6629 |
+
.col-md-pull-7 {
|
6630 |
+
right: 11.66666666666667%;
|
6631 |
+
}
|
6632 |
+
.col-md-pull-8 {
|
6633 |
+
right: 13.33333333333333%;
|
6634 |
+
}
|
6635 |
+
.col-md-pull-9 {
|
6636 |
+
right: 15%;
|
6637 |
+
}
|
6638 |
+
.col-md-pull-10 {
|
6639 |
+
right: 16.66666666666667%;
|
6640 |
+
}
|
6641 |
+
.col-md-pull-11 {
|
6642 |
+
right: 18.33333333333333%;
|
6643 |
+
}
|
6644 |
+
.col-md-pull-12 {
|
6645 |
+
right: 20%;
|
6646 |
+
}
|
6647 |
+
.col-md-pull-13 {
|
6648 |
+
right: 21.66666666666667%;
|
6649 |
+
}
|
6650 |
+
.col-md-pull-14 {
|
6651 |
+
right: 23.33333333333333%;
|
6652 |
+
}
|
6653 |
+
.col-md-pull-15 {
|
6654 |
+
right: 25%;
|
6655 |
+
}
|
6656 |
+
.col-md-pull-16 {
|
6657 |
+
right: 26.66666666666667%;
|
6658 |
+
}
|
6659 |
+
.col-md-pull-17 {
|
6660 |
+
right: 28.33333333333333%;
|
6661 |
+
}
|
6662 |
+
.col-md-pull-18 {
|
6663 |
+
right: 30%;
|
6664 |
+
}
|
6665 |
+
.col-md-pull-19 {
|
6666 |
+
right: 31.66666666666667%;
|
6667 |
+
}
|
6668 |
+
.col-md-pull-20 {
|
6669 |
+
right: 33.33333333333333%;
|
6670 |
+
}
|
6671 |
+
.col-md-pull-21 {
|
6672 |
+
right: 35%;
|
6673 |
+
}
|
6674 |
+
.col-md-pull-22 {
|
6675 |
+
right: 36.66666666666667%;
|
6676 |
+
}
|
6677 |
+
.col-md-pull-23 {
|
6678 |
+
right: 38.33333333333333%;
|
6679 |
+
}
|
6680 |
+
.col-md-pull-24 {
|
6681 |
+
right: 40%;
|
6682 |
+
}
|
6683 |
+
.col-md-pull-25 {
|
6684 |
+
right: 41.66666666666667%;
|
6685 |
+
}
|
6686 |
+
.col-md-pull-26 {
|
6687 |
+
right: 43.33333333333333%;
|
6688 |
+
}
|
6689 |
+
.col-md-pull-27 {
|
6690 |
+
right: 45%;
|
6691 |
+
}
|
6692 |
+
.col-md-pull-28 {
|
6693 |
+
right: 46.66666666666667%;
|
6694 |
+
}
|
6695 |
+
.col-md-pull-29 {
|
6696 |
+
right: 48.33333333333333%;
|
6697 |
+
}
|
6698 |
+
.col-md-pull-30 {
|
6699 |
+
right: 50%;
|
6700 |
+
}
|
6701 |
+
.col-md-pull-31 {
|
6702 |
+
right: 51.66666666666667%;
|
6703 |
+
}
|
6704 |
+
.col-md-pull-32 {
|
6705 |
+
right: 53.33333333333333%;
|
6706 |
+
}
|
6707 |
+
.col-md-pull-33 {
|
6708 |
+
right: 55%;
|
6709 |
+
}
|
6710 |
+
.col-md-pull-34 {
|
6711 |
+
right: 56.66666666666667%;
|
6712 |
+
}
|
6713 |
+
.col-md-pull-35 {
|
6714 |
+
right: 58.33333333333333%;
|
6715 |
+
}
|
6716 |
+
.col-md-pull-36 {
|
6717 |
+
right: 60%;
|
6718 |
+
}
|
6719 |
+
.col-md-pull-37 {
|
6720 |
+
right: 61.66666666666667%;
|
6721 |
+
}
|
6722 |
+
.col-md-pull-38 {
|
6723 |
+
right: 63.33333333333333%;
|
6724 |
+
}
|
6725 |
+
.col-md-pull-39 {
|
6726 |
+
right: 65%;
|
6727 |
+
}
|
6728 |
+
.col-md-pull-40 {
|
6729 |
+
right: 66.66666666666667%;
|
6730 |
+
}
|
6731 |
+
.col-md-pull-41 {
|
6732 |
+
right: 68.33333333333333%;
|
6733 |
+
}
|
6734 |
+
.col-md-pull-42 {
|
6735 |
+
right: 70%;
|
6736 |
+
}
|
6737 |
+
.col-md-pull-43 {
|
6738 |
+
right: 71.66666666666667%;
|
6739 |
+
}
|
6740 |
+
.col-md-pull-44 {
|
6741 |
+
right: 73.33333333333333%;
|
6742 |
+
}
|
6743 |
+
.col-md-pull-45 {
|
6744 |
+
right: 75%;
|
6745 |
+
}
|
6746 |
+
.col-md-pull-46 {
|
6747 |
+
right: 76.66666666666667%;
|
6748 |
+
}
|
6749 |
+
.col-md-pull-47 {
|
6750 |
+
right: 78.33333333333333%;
|
6751 |
+
}
|
6752 |
+
.col-md-pull-48 {
|
6753 |
+
right: 80%;
|
6754 |
+
}
|
6755 |
+
.col-md-pull-49 {
|
6756 |
+
right: 81.66666666666667%;
|
6757 |
+
}
|
6758 |
+
.col-md-pull-50 {
|
6759 |
+
right: 83.33333333333333%;
|
6760 |
+
}
|
6761 |
+
.col-md-pull-51 {
|
6762 |
+
right: 85%;
|
6763 |
+
}
|
6764 |
+
.col-md-pull-52 {
|
6765 |
+
right: 86.66666666666667%;
|
6766 |
+
}
|
6767 |
+
.col-md-pull-53 {
|
6768 |
+
right: 88.33333333333333%;
|
6769 |
+
}
|
6770 |
+
.col-md-pull-54 {
|
6771 |
+
right: 90%;
|
6772 |
+
}
|
6773 |
+
.col-md-pull-55 {
|
6774 |
+
right: 91.66666666666667%;
|
6775 |
+
}
|
6776 |
+
.col-md-pull-56 {
|
6777 |
+
right: 93.33333333333333%;
|
6778 |
+
}
|
6779 |
+
.col-md-pull-57 {
|
6780 |
+
right: 95%;
|
6781 |
+
}
|
6782 |
+
.col-md-pull-58 {
|
6783 |
+
right: 96.66666666666667%;
|
6784 |
+
}
|
6785 |
+
.col-md-pull-59 {
|
6786 |
+
right: 98.33333333333333%;
|
6787 |
+
}
|
6788 |
+
.col-md-offset-0 {
|
6789 |
+
margin-left: 0
|
6790 |
+
}
|
6791 |
+
.col-md-offset-1 {
|
6792 |
+
margin-left: 1.666666666666667%;
|
6793 |
+
}
|
6794 |
+
.col-md-offset-2 {
|
6795 |
+
margin-left: 3.333333333333333%;
|
6796 |
+
}
|
6797 |
+
.col-md-offset-3 {
|
6798 |
+
margin-left: 5%;
|
6799 |
+
}
|
6800 |
+
.col-md-offset-4 {
|
6801 |
+
margin-left: 6.666666666666667%;
|
6802 |
+
}
|
6803 |
+
.col-md-offset-5 {
|
6804 |
+
margin-left: 8.333333333333333%;
|
6805 |
+
}
|
6806 |
+
.col-md-offset-6 {
|
6807 |
+
margin-left: 10%;
|
6808 |
+
}
|
6809 |
+
.col-md-offset-7 {
|
6810 |
+
margin-left: 11.66666666666667%;
|
6811 |
+
}
|
6812 |
+
.col-md-offset-8 {
|
6813 |
+
margin-left: 13.33333333333333%;
|
6814 |
+
}
|
6815 |
+
.col-md-offset-9 {
|
6816 |
+
margin-left: 15%;
|
6817 |
+
}
|
6818 |
+
.col-md-offset-10 {
|
6819 |
+
margin-left: 16.66666666666667%;
|
6820 |
+
}
|
6821 |
+
.col-md-offset-11 {
|
6822 |
+
margin-left: 18.33333333333333%;
|
6823 |
+
}
|
6824 |
+
.col-md-offset-12 {
|
6825 |
+
margin-left: 20%;
|
6826 |
+
}
|
6827 |
+
.col-md-offset-13 {
|
6828 |
+
margin-left: 21.66666666666667%;
|
6829 |
+
}
|
6830 |
+
.col-md-offset-14 {
|
6831 |
+
margin-left: 23.33333333333333%;
|
6832 |
+
}
|
6833 |
+
.col-md-offset-15 {
|
6834 |
+
margin-left: 25%;
|
6835 |
+
}
|
6836 |
+
.col-md-offset-16 {
|
6837 |
+
margin-left: 26.66666666666667%;
|
6838 |
+
}
|
6839 |
+
.col-md-offset-17 {
|
6840 |
+
margin-left: 28.33333333333333%;
|
6841 |
+
}
|
6842 |
+
.col-md-offset-18 {
|
6843 |
+
margin-left: 30%;
|
6844 |
+
}
|
6845 |
+
.col-md-offset-19 {
|
6846 |
+
margin-left: 31.66666666666667%;
|
6847 |
+
}
|
6848 |
+
.col-md-offset-20 {
|
6849 |
+
margin-left: 33.33333333333333%;
|
6850 |
+
}
|
6851 |
+
.col-md-offset-21 {
|
6852 |
+
margin-left: 35%;
|
6853 |
+
}
|
6854 |
+
.col-md-offset-22 {
|
6855 |
+
margin-left: 36.66666666666667%;
|
6856 |
+
}
|
6857 |
+
.col-md-offset-23 {
|
6858 |
+
margin-left: 38.33333333333333%;
|
6859 |
+
}
|
6860 |
+
.col-md-offset-24 {
|
6861 |
+
margin-left: 40%;
|
6862 |
+
}
|
6863 |
+
.col-md-offset-25 {
|
6864 |
+
margin-left: 41.66666666666667%;
|
6865 |
+
}
|
6866 |
+
.col-md-offset-26 {
|
6867 |
+
margin-left: 43.33333333333333%;
|
6868 |
+
}
|
6869 |
+
.col-md-offset-27 {
|
6870 |
+
margin-left: 45%;
|
6871 |
+
}
|
6872 |
+
.col-md-offset-28 {
|
6873 |
+
margin-left: 46.66666666666667%;
|
6874 |
+
}
|
6875 |
+
.col-md-offset-29 {
|
6876 |
+
margin-left: 48.33333333333333%;
|
6877 |
+
}
|
6878 |
+
.col-md-offset-30 {
|
6879 |
+
margin-left: 50%;
|
6880 |
+
}
|
6881 |
+
.col-md-offset-31 {
|
6882 |
+
margin-left: 51.66666666666667%;
|
6883 |
+
}
|
6884 |
+
.col-md-offset-32 {
|
6885 |
+
margin-left: 53.33333333333333%;
|
6886 |
+
}
|
6887 |
+
.col-md-offset-33 {
|
6888 |
+
margin-left: 55%;
|
6889 |
+
}
|
6890 |
+
.col-md-offset-34 {
|
6891 |
+
margin-left: 56.66666666666667%;
|
6892 |
+
}
|
6893 |
+
.col-md-offset-35 {
|
6894 |
+
margin-left: 58.33333333333333%;
|
6895 |
+
}
|
6896 |
+
.col-md-offset-36 {
|
6897 |
+
margin-left: 60%;
|
6898 |
+
}
|
6899 |
+
.col-md-offset-37 {
|
6900 |
+
margin-left: 61.66666666666667%;
|
6901 |
+
}
|
6902 |
+
.col-md-offset-38 {
|
6903 |
+
margin-left: 63.33333333333333%;
|
6904 |
+
}
|
6905 |
+
.col-md-offset-39 {
|
6906 |
+
margin-left: 65%;
|
6907 |
+
}
|
6908 |
+
.col-md-offset-40 {
|
6909 |
+
margin-left: 66.66666666666667%;
|
6910 |
+
}
|
6911 |
+
.col-md-offset-41 {
|
6912 |
+
margin-left: 68.33333333333333%;
|
6913 |
+
}
|
6914 |
+
.col-md-offset-42 {
|
6915 |
+
margin-left: 70%;
|
6916 |
+
}
|
6917 |
+
.col-md-offset-43 {
|
6918 |
+
margin-left: 71.66666666666667%;
|
6919 |
+
}
|
6920 |
+
.col-md-offset-44 {
|
6921 |
+
margin-left: 73.33333333333333%;
|
6922 |
+
}
|
6923 |
+
.col-md-offset-45 {
|
6924 |
+
margin-left: 75%;
|
6925 |
+
}
|
6926 |
+
.col-md-offset-46 {
|
6927 |
+
margin-left: 76.66666666666667%;
|
6928 |
+
}
|
6929 |
+
.col-md-offset-47 {
|
6930 |
+
margin-left: 78.33333333333333%;
|
6931 |
+
}
|
6932 |
+
.col-md-offset-48 {
|
6933 |
+
margin-left: 80%;
|
6934 |
+
}
|
6935 |
+
.col-md-offset-49 {
|
6936 |
+
margin-left: 81.6666666666667%;
|
6937 |
+
}
|
6938 |
+
.col-md-offset-50 {
|
6939 |
+
margin-left: 83.33333333333333%;
|
6940 |
+
}
|
6941 |
+
.col-md-offset-51 {
|
6942 |
+
margin-left: 85%;
|
6943 |
+
}
|
6944 |
+
.col-md-offset-52 {
|
6945 |
+
margin-left: 86.66666666666667%;
|
6946 |
+
}
|
6947 |
+
.col-md-offset-53 {
|
6948 |
+
margin-left: 88.33333333333333%;
|
6949 |
+
}
|
6950 |
+
.col-md-offset-54 {
|
6951 |
+
margin-left: 90%;
|
6952 |
+
}
|
6953 |
+
.col-md-offset-55 {
|
6954 |
+
margin-left: 91.66666666666667%;
|
6955 |
+
}
|
6956 |
+
.col-md-offset-56 {
|
6957 |
+
margin-left: 93.33333333333333%;
|
6958 |
+
}
|
6959 |
+
.col-md-offset-57 {
|
6960 |
+
margin-left: 95%;
|
6961 |
+
}
|
6962 |
+
.col-md-offset-58 {
|
6963 |
+
margin-left: 96.66666666666667%;
|
6964 |
+
}
|
6965 |
+
.col-md-offset-59 {
|
6966 |
+
margin-left: 98.33333333333333%;
|
6967 |
+
}
|
6968 |
+
/*commom desktop */
|
6969 |
+
.fixed-width-520 {
|
6970 |
+
margin: 0px auto;
|
6971 |
+
float: none;
|
6972 |
+
width: 520px !important;
|
6973 |
+
}
|
6974 |
+
.fixed-width-580 {
|
6975 |
+
margin: 0px auto;
|
6976 |
+
float: none;
|
6977 |
+
width: 580px !important;
|
6978 |
+
}
|
6979 |
+
.fixed-width-680 {
|
6980 |
+
margin: 0px auto;
|
6981 |
+
float: none;
|
6982 |
+
width: 680px !important;
|
6983 |
+
}
|
6984 |
+
.fixed-width-700 {
|
6985 |
+
margin: 0px auto;
|
6986 |
+
float: none;
|
6987 |
+
width: 700px;
|
6988 |
+
}
|
6989 |
+
.fixed-width-730 {
|
6990 |
+
margin: 0px auto;
|
6991 |
+
float: none;
|
6992 |
+
width: 730px;
|
6993 |
+
}
|
6994 |
+
.fixed-width-800 {
|
6995 |
+
margin: 0px auto;
|
6996 |
+
float: none;
|
6997 |
+
width: 800px;
|
6998 |
+
}
|
6999 |
+
.fixed-width-940 {
|
7000 |
+
margin: 0px auto;
|
7001 |
+
float: none;
|
7002 |
+
width: 940px;
|
7003 |
+
}
|
7004 |
+
.fixed-width-980 {
|
7005 |
+
margin: 0px auto;
|
7006 |
+
float: none;
|
7007 |
+
width: 980px;
|
7008 |
+
}
|
7009 |
+
.fixed-width-1080 {
|
7010 |
+
margin: 0px auto;
|
7011 |
+
float: none;
|
7012 |
+
width: 1080px;
|
7013 |
+
}
|
7014 |
+
.fixed-width-1140 {
|
7015 |
+
margin: 0px auto;
|
7016 |
+
float: none;
|
7017 |
+
width: 1140px;
|
7018 |
+
}
|
7019 |
+
.main-container {
|
7020 |
+
width: 100%;
|
7021 |
+
float: left;
|
7022 |
+
}
|
7023 |
+
.width-570 {
|
7024 |
+
width: 570px;
|
7025 |
+
}
|
7026 |
+
.width-680 {
|
7027 |
+
width: 680px;
|
7028 |
+
}
|
7029 |
+
/* signed up desktop*/
|
7030 |
+
.signup-block
|
7031 |
+
{
|
7032 |
+
width:740px;
|
7033 |
+
margin:60px 0px 0px 120px;
|
7034 |
+
}
|
7035 |
+
/* dashboard widget conf desktop*/
|
7036 |
+
|
7037 |
+
.layout-block
|
7038 |
+
{
|
7039 |
+
float: left;
|
7040 |
+
width:442px;
|
7041 |
+
}
|
7042 |
+
}
|
7043 |
+
@media (min-width: 1200px) {
|
7044 |
+
|
7045 |
+
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-13, .col-lg-14, .col-lg-15, .col-lg-16, .col-lg-17, .col-lg-18, .col-lg-19, .col-lg-20, .col-lg-21, .col-lg-22, .col-lg-23, .col-lg-24, .col-lg-25, .col-lg-26, .col-lg-27, .col-lg-28, .col-lg-29, .col-lg-30, .col-lg-31, .col-lg-32, .col-lg-33, .col-lg-34, .col-lg-35, .col-lg-36, .col-lg-37, .col-lg-38, .col-lg-39, .col-lg-40, .col-lg-41, .col-lg-42, .col-lg-43, .col-lg-44, .col-lg-45, .col-lg-46, .col-lg-47, .col-lg-48, .col-lg-49, .col-lg-50, .col-lg-51, .col-lg-52, .col-lg-53, .col-lg-54, .col-lg-55, .col-lg-56, .col-lg-57, .col-lg-58, .col-lg-59 {
|
7046 |
+
float: left;
|
7047 |
+
}
|
7048 |
+
.col-lg-1 {
|
7049 |
+
width: 1.666666666666667%;
|
7050 |
+
}
|
7051 |
+
.col-lg-2 {
|
7052 |
+
width: 3.333333333333333%;
|
7053 |
+
}
|
7054 |
+
.col-lg-3 {
|
7055 |
+
width: 5%;
|
7056 |
+
}
|
7057 |
+
.col-lg-4 {
|
7058 |
+
width: 6.666666666666667%;
|
7059 |
+
}
|
7060 |
+
.col-lg-5 {
|
7061 |
+
width: 8.333333333333333%;
|
7062 |
+
}
|
7063 |
+
.col-lg-6 {
|
7064 |
+
width: 10%;
|
7065 |
+
}
|
7066 |
+
.col-lg-7 {
|
7067 |
+
width: 11.66666666666667%;
|
7068 |
+
}
|
7069 |
+
.col-lg-8 {
|
7070 |
+
width: 13.33333333333333%;
|
7071 |
+
}
|
7072 |
+
.col-lg-9 {
|
7073 |
+
width: 15%;
|
7074 |
+
}
|
7075 |
+
.col-lg-10 {
|
7076 |
+
width: 16.66666666666667%;
|
7077 |
+
}
|
7078 |
+
.col-lg-11 {
|
7079 |
+
width: 18.33333333333333%;
|
7080 |
+
}
|
7081 |
+
.col-lg-12 {
|
7082 |
+
width: 20%;
|
7083 |
+
}
|
7084 |
+
.col-lg-13 {
|
7085 |
+
width: 21.66666666666667%;
|
7086 |
+
}
|
7087 |
+
.col-lg-14 {
|
7088 |
+
width: 23.33333333333333%;
|
7089 |
+
}
|
7090 |
+
.col-lg-15 {
|
7091 |
+
width: 25%;
|
7092 |
+
}
|
7093 |
+
.col-lg-16 {
|
7094 |
+
width: 26.66666666666667%;
|
7095 |
+
}
|
7096 |
+
.col-lg-17 {
|
7097 |
+
width: 28.33333333333333%;
|
7098 |
+
}
|
7099 |
+
.col-lg-18 {
|
7100 |
+
width: 30%;
|
7101 |
+
}
|
7102 |
+
.col-lg-19 {
|
7103 |
+
width: 31.66666666666667%;
|
7104 |
+
}
|
7105 |
+
.col-lg-20 {
|
7106 |
+
width: 33.33333333333333%;
|
7107 |
+
}
|
7108 |
+
.col-lg-21 {
|
7109 |
+
width: 35%;
|
7110 |
+
}
|
7111 |
+
.col-lg-22 {
|
7112 |
+
width: 36.66666666666667%;
|
7113 |
+
}
|
7114 |
+
.col-lg-23 {
|
7115 |
+
width: 38.33333333333333%;
|
7116 |
+
}
|
7117 |
+
.col-lg-24 {
|
7118 |
+
width: 40%;
|
7119 |
+
}
|
7120 |
+
.col-lg-25 {
|
7121 |
+
width: 41.66666666666667%;
|
7122 |
+
}
|
7123 |
+
.col-lg-26 {
|
7124 |
+
width: 43.33333333333333%;
|
7125 |
+
}
|
7126 |
+
.col-lg-27 {
|
7127 |
+
width: 45%;
|
7128 |
+
}
|
7129 |
+
.col-lg-28 {
|
7130 |
+
width: 46.66666666666667%;
|
7131 |
+
}
|
7132 |
+
.col-lg-29 {
|
7133 |
+
width: 48.33333333333333%;
|
7134 |
+
}
|
7135 |
+
.col-lg-30 {
|
7136 |
+
width: 50%;
|
7137 |
+
}
|
7138 |
+
.col-lg-31 {
|
7139 |
+
width: 51.66666666666667%;
|
7140 |
+
}
|
7141 |
+
.col-lg-32 {
|
7142 |
+
width: 53.33333333333333%;
|
7143 |
+
}
|
7144 |
+
.col-lg-33 {
|
7145 |
+
width: 55%;
|
7146 |
+
}
|
7147 |
+
.col-lg-34 {
|
7148 |
+
width: 56.66666666666667%;
|
7149 |
+
}
|
7150 |
+
.col-lg-35 {
|
7151 |
+
width: 58.33333333333333%;
|
7152 |
+
}
|
7153 |
+
.col-lg-36 {
|
7154 |
+
width: 60%;
|
7155 |
+
}
|
7156 |
+
.col-lg-37 {
|
7157 |
+
width: 61.66666666666667%;
|
7158 |
+
}
|
7159 |
+
.col-lg-38 {
|
7160 |
+
width: 63.33333333333333%;
|
7161 |
+
}
|
7162 |
+
.col-lg-39 {
|
7163 |
+
width: 65%;
|
7164 |
+
}
|
7165 |
+
.col-lg-40 {
|
7166 |
+
width: 66.66666666666667%;
|
7167 |
+
}
|
7168 |
+
.col-lg-41 {
|
7169 |
+
width: 68.33333333333333%;
|
7170 |
+
}
|
7171 |
+
.col-lg-42 {
|
7172 |
+
width: 70%;
|
7173 |
+
}
|
7174 |
+
.col-lg-43 {
|
7175 |
+
width: 71.66666666666667%;
|
7176 |
+
}
|
7177 |
+
.col-lg-44 {
|
7178 |
+
width: 73.33333333333333%;
|
7179 |
+
}
|
7180 |
+
.col-lg-45 {
|
7181 |
+
width: 75%;
|
7182 |
+
}
|
7183 |
+
.col-lg-46 {
|
7184 |
+
width: 76.66666666666667%;
|
7185 |
+
}
|
7186 |
+
.col-lg-47 {
|
7187 |
+
width: 78.33333333333333%;
|
7188 |
+
}
|
7189 |
+
.col-lg-48 {
|
7190 |
+
width: 80%;
|
7191 |
+
}
|
7192 |
+
.col-lg-49 {
|
7193 |
+
width: 81.66666666666667%;
|
7194 |
+
}
|
7195 |
+
.col-lg-50 {
|
7196 |
+
width: 83.33333333333333%;
|
7197 |
+
}
|
7198 |
+
.col-lg-51 {
|
7199 |
+
width: 85%;
|
7200 |
+
}
|
7201 |
+
.col-lg-52 {
|
7202 |
+
width: 86.66666666666667%;
|
7203 |
+
}
|
7204 |
+
.col-lg-53 {
|
7205 |
+
width: 88.33333333333333%;
|
7206 |
+
}
|
7207 |
+
.col-lg-54 {
|
7208 |
+
width: 90%;
|
7209 |
+
}
|
7210 |
+
.col-lg-55 {
|
7211 |
+
width: 91.66666666666667%;
|
7212 |
+
}
|
7213 |
+
.col-lg-56 {
|
7214 |
+
width: 93.33333333333333%;
|
7215 |
+
}
|
7216 |
+
.col-lg-57 {
|
7217 |
+
width: 95%;
|
7218 |
+
}
|
7219 |
+
.col-lg-58 {
|
7220 |
+
width: 96.66666666666667%;
|
7221 |
+
}
|
7222 |
+
.col-lg-59 {
|
7223 |
+
width: 98.33333333333333%;
|
7224 |
+
}
|
7225 |
+
.col-lg-60 {
|
7226 |
+
width: 100%;
|
7227 |
+
}
|
7228 |
+
.col-lg-push-0 {
|
7229 |
+
left: auto
|
7230 |
+
}
|
7231 |
+
.col-lg-push-1 {
|
7232 |
+
left: 1.666666666666667%;
|
7233 |
+
}
|
7234 |
+
.col-lg-push-2 {
|
7235 |
+
left: 3.333333333333333%;
|
7236 |
+
}
|
7237 |
+
.col-lg-push-3 {
|
7238 |
+
left: 5%;
|
7239 |
+
}
|
7240 |
+
.col-lg-push-4 {
|
7241 |
+
left: 6.666666666666667%;
|
7242 |
+
}
|
7243 |
+
.col-lg-push-5 {
|
7244 |
+
left: 8.333333333333333%;
|
7245 |
+
}
|
7246 |
+
.col-lg-push-6 {
|
7247 |
+
left: 10%;
|
7248 |
+
}
|
7249 |
+
.col-lg-push-7 {
|
7250 |
+
left: 11.66666666666667%;
|
7251 |
+
}
|
7252 |
+
.col-lg-push-8 {
|
7253 |
+
left: 13.33333333333333%;
|
7254 |
+
}
|
7255 |
+
.col-lg-push-9 {
|
7256 |
+
left: 15%;
|
7257 |
+
}
|
7258 |
+
.col-lg-push-10 {
|
7259 |
+
left: 16.66666666666667%;
|
7260 |
+
}
|
7261 |
+
.col-lg-push-11 {
|
7262 |
+
left: 18.33333333333333%;
|
7263 |
+
}
|
7264 |
+
.col-lg-push-12 {
|
7265 |
+
left: 20%;
|
7266 |
+
}
|
7267 |
+
.col-lg-push-13 {
|
7268 |
+
left: 21.66666666666667%;
|
7269 |
+
}
|
7270 |
+
.col-lg-push-14 {
|
7271 |
+
left: 23.33333333333333%;
|
7272 |
+
}
|
7273 |
+
.col-lg-push-15 {
|
7274 |
+
left: 25%;
|
7275 |
+
}
|
7276 |
+
.col-lg-push-16 {
|
7277 |
+
left: 26.66666666666667%;
|
7278 |
+
}
|
7279 |
+
.col-lg-push-17 {
|
7280 |
+
left: 28.33333333333333%;
|
7281 |
+
}
|
7282 |
+
.col-lg-push-18 {
|
7283 |
+
left: 30%;
|
7284 |
+
}
|
7285 |
+
.col-lg-push-19 {
|
7286 |
+
left: 31.66666666666667%;
|
7287 |
+
}
|
7288 |
+
.col-lg-push-20 {
|
7289 |
+
left: 33.33333333333333%;
|
7290 |
+
}
|
7291 |
+
.col-lg-push-21 {
|
7292 |
+
left: 35%;
|
7293 |
+
}
|
7294 |
+
.col-lg-push-22 {
|
7295 |
+
left: 36.66666666666667%;
|
7296 |
+
}
|
7297 |
+
.col-lg-push-23 {
|
7298 |
+
left: 38.33333333333333%;
|
7299 |
+
}
|
7300 |
+
.col-lg-push-24 {
|
7301 |
+
left: 40%;
|
7302 |
+
}
|
7303 |
+
.col-lg-push-25 {
|
7304 |
+
left: 41.66666666666667%;
|
7305 |
+
}
|
7306 |
+
.col-lg-push-26 {
|
7307 |
+
left: 43.33333333333333%;
|
7308 |
+
}
|
7309 |
+
.col-lg-push-27 {
|
7310 |
+
left: 45%;
|
7311 |
+
}
|
7312 |
+
.col-lg-push-28 {
|
7313 |
+
left: 46.66666666666667%;
|
7314 |
+
}
|
7315 |
+
.col-lg-push-29 {
|
7316 |
+
left: 48.33333333333333%;
|
7317 |
+
}
|
7318 |
+
.col-lg-push-30 {
|
7319 |
+
left: 50%;
|
7320 |
+
}
|
7321 |
+
.col-lg-push-31 {
|
7322 |
+
left: 51.66666666666667%;
|
7323 |
+
}
|
7324 |
+
.col-lg-push-32 {
|
7325 |
+
left: 53.33333333333333%;
|
7326 |
+
}
|
7327 |
+
.col-lg-push-33 {
|
7328 |
+
left: 55%;
|
7329 |
+
}
|
7330 |
+
.col-lg-push-34 {
|
7331 |
+
left: 56.66666666666667%;
|
7332 |
+
}
|
7333 |
+
.col-lg-push-35 {
|
7334 |
+
left: 58.33333333333333%;
|
7335 |
+
}
|
7336 |
+
.col-lg-push-36 {
|
7337 |
+
left: 60%;
|
7338 |
+
}
|
7339 |
+
.col-lg-push-37 {
|
7340 |
+
left: 61.66666666666667%;
|
7341 |
+
}
|
7342 |
+
.col-lg-push-38 {
|
7343 |
+
left: 63.33333333333333%;
|
7344 |
+
}
|
7345 |
+
.col-lg-push-39 {
|
7346 |
+
left: 65%;
|
7347 |
+
}
|
7348 |
+
.col-lg-push-40 {
|
7349 |
+
left: 66.66666666666667%;
|
7350 |
+
}
|
7351 |
+
.col-lg-push-41 {
|
7352 |
+
left: 68.33333333333333%;
|
7353 |
+
}
|
7354 |
+
.col-lg-push-42 {
|
7355 |
+
left: 70%;
|
7356 |
+
}
|
7357 |
+
.col-lg-push-43 {
|
7358 |
+
left: 71.66666666666667%;
|
7359 |
+
}
|
7360 |
+
.col-lg-push-44 {
|
7361 |
+
left: 73.33333333333333%;
|
7362 |
+
}
|
7363 |
+
.col-lg-push-45 {
|
7364 |
+
left: 75%;
|
7365 |
+
}
|
7366 |
+
.col-lg-push-46 {
|
7367 |
+
left: 76.66666666666667%;
|
7368 |
+
}
|
7369 |
+
.col-lg-push-47 {
|
7370 |
+
left: 78.33333333333333%;
|
7371 |
+
}
|
7372 |
+
.col-lg-push-48 {
|
7373 |
+
left: 80%;
|
7374 |
+
}
|
7375 |
+
.col-lg-push-49 {
|
7376 |
+
left: 81.66666666666667%;
|
7377 |
+
}
|
7378 |
+
.col-lg-push-50 {
|
7379 |
+
left: 83.33333333333333%;
|
7380 |
+
}
|
7381 |
+
.col-lg-push-51 {
|
7382 |
+
left: 85%;
|
7383 |
+
}
|
7384 |
+
.col-lg-push-52 {
|
7385 |
+
left: 86.66666666666667%;
|
7386 |
+
}
|
7387 |
+
.col-lg-push-53 {
|
7388 |
+
left: 88.33333333333333%;
|
7389 |
+
}
|
7390 |
+
.col-lg-push-54 {
|
7391 |
+
left: 90%;
|
7392 |
+
}
|
7393 |
+
.col-lg-push-55 {
|
7394 |
+
left: 91.66666666666667%;
|
7395 |
+
}
|
7396 |
+
.col-lg-push-56 {
|
7397 |
+
left: 93.33333333333333%;
|
7398 |
+
}
|
7399 |
+
.col-lg-push-57 {
|
7400 |
+
left: 95%;
|
7401 |
+
}
|
7402 |
+
.col-lg-push-58 {
|
7403 |
+
left: 96.66666666666667%;
|
7404 |
+
}
|
7405 |
+
.col-lg-push-59 {
|
7406 |
+
left: 98.33333333333333%;
|
7407 |
+
}
|
7408 |
+
.col-lg-pull-0 {
|
7409 |
+
right: auto
|
7410 |
+
}
|
7411 |
+
.col-lg-pull-1 {
|
7412 |
+
right: 1.666666666666667%;
|
7413 |
+
}
|
7414 |
+
.col-lg-pull-2 {
|
7415 |
+
right: 3.333333333333333%;
|
7416 |
+
}
|
7417 |
+
.col-lg-pull-3 {
|
7418 |
+
right: 5%;
|
7419 |
+
}
|
7420 |
+
.col-lg-pull-4 {
|
7421 |
+
right: 6.666666666666667%;
|
7422 |
+
}
|
7423 |
+
.col-lg-pull-5 {
|
7424 |
+
right: 8.333333333333333%;
|
7425 |
+
}
|
7426 |
+
.col-lg-pull-6 {
|
7427 |
+
right: 10%;
|
7428 |
+
}
|
7429 |
+
.col-lg-pull-7 {
|
7430 |
+
right: 11.66666666666667%;
|
7431 |
+
}
|
7432 |
+
.col-lg-pull-8 {
|
7433 |
+
right: 13.33333333333333%;
|
7434 |
+
}
|
7435 |
+
.col-lg-pull-9 {
|
7436 |
+
right: 15%;
|
7437 |
+
}
|
7438 |
+
.col-lg-pull-10 {
|
7439 |
+
right: 16.66666666666667%;
|
7440 |
+
}
|
7441 |
+
.col-lg-pull-11 {
|
7442 |
+
right: 18.33333333333333%;
|
7443 |
+
}
|
7444 |
+
.col-lg-pull-12 {
|
7445 |
+
right: 20%;
|
7446 |
+
}
|
7447 |
+
.col-lg-pull-13 {
|
7448 |
+
right: 21.66666666666667%;
|
7449 |
+
}
|
7450 |
+
.col-lg-pull-14 {
|
7451 |
+
right: 23.33333333333333%;
|
7452 |
+
}
|
7453 |
+
.col-lg-pull-15 {
|
7454 |
+
right: 25%;
|
7455 |
+
}
|
7456 |
+
.col-lg-pull-16 {
|
7457 |
+
right: 26.66666666666667%;
|
7458 |
+
}
|
7459 |
+
.col-lg-pull-17 {
|
7460 |
+
right: 28.33333333333333%;
|
7461 |
+
}
|
7462 |
+
.col-lg-pull-18 {
|
7463 |
+
right: 30%;
|
7464 |
+
}
|
7465 |
+
.col-lg-pull-19 {
|
7466 |
+
right: 31.66666666666667%;
|
7467 |
+
}
|
7468 |
+
.col-lg-pull-20 {
|
7469 |
+
right: 33.33333333333333%;
|
7470 |
+
}
|
7471 |
+
.col-lg-pull-21 {
|
7472 |
+
right: 35%;
|
7473 |
+
}
|
7474 |
+
.col-lg-pull-22 {
|
7475 |
+
right: 36.66666666666667%;
|
7476 |
+
}
|
7477 |
+
.col-lg-pull-23 {
|
7478 |
+
right: 38.33333333333333%;
|
7479 |
+
}
|
7480 |
+
.col-lg-pull-24 {
|
7481 |
+
right: 40%;
|
7482 |
+
}
|
7483 |
+
.col-lg-pull-25 {
|
7484 |
+
right: 41.66666666666667%;
|
7485 |
+
}
|
7486 |
+
.col-lg-pull-26 {
|
7487 |
+
right: 43.33333333333333%;
|
7488 |
+
}
|
7489 |
+
.col-lg-pull-27 {
|
7490 |
+
right: 45%;
|
7491 |
+
}
|
7492 |
+
.col-lg-pull-28 {
|
7493 |
+
right: 46.66666666666667%;
|
7494 |
+
}
|
7495 |
+
.col-lg-pull-29 {
|
7496 |
+
right: 48.33333333333333%;
|
7497 |
+
}
|
7498 |
+
.col-lg-pull-30 {
|
7499 |
+
right: 50%;
|
7500 |
+
}
|
7501 |
+
.col-lg-pull-31 {
|
7502 |
+
right: 51.66666666666667%;
|
7503 |
+
}
|
7504 |
+
.col-lg-pull-32 {
|
7505 |
+
right: 53.33333333333333%;
|
7506 |
+
}
|
7507 |
+
.col-lg-pull-33 {
|
7508 |
+
right: 55%;
|
7509 |
+
}
|
7510 |
+
.col-lg-pull-34 {
|
7511 |
+
right: 56.66666666666667%;
|
7512 |
+
}
|
7513 |
+
.col-lg-pull-35 {
|
7514 |
+
right: 58.33333333333333%;
|
7515 |
+
}
|
7516 |
+
.col-lg-pull-36 {
|
7517 |
+
right: 60%;
|
7518 |
+
}
|
7519 |
+
.col-lg-pull-37 {
|
7520 |
+
right: 61.66666666666667%;
|
7521 |
+
}
|
7522 |
+
.col-lg-pull-38 {
|
7523 |
+
right: 63.33333333333333%;
|
7524 |
+
}
|
7525 |
+
.col-lg-pull-39 {
|
7526 |
+
right: 65%;
|
7527 |
+
}
|
7528 |
+
.col-lg-pull-40 {
|
7529 |
+
right: 66.66666666666667%;
|
7530 |
+
}
|
7531 |
+
.col-lg-pull-41 {
|
7532 |
+
right: 68.33333333333333%;
|
7533 |
+
}
|
7534 |
+
.col-lg-pull-42 {
|
7535 |
+
right: 70%;
|
7536 |
+
}
|
7537 |
+
.col-lg-pull-43 {
|
7538 |
+
right: 71.66666666666667%;
|
7539 |
+
}
|
7540 |
+
.col-lg-pull-44 {
|
7541 |
+
right: 73.33333333333333%;
|
7542 |
+
}
|
7543 |
+
.col-lg-pull-45 {
|
7544 |
+
right: 75%;
|
7545 |
+
}
|
7546 |
+
.col-lg-pull-46 {
|
7547 |
+
right: 76.66666666666667%;
|
7548 |
+
}
|
7549 |
+
.col-lg-pull-47 {
|
7550 |
+
right: 78.33333333333333%;
|
7551 |
+
}
|
7552 |
+
.col-lg-pull-48 {
|
7553 |
+
right: 80%;
|
7554 |
+
}
|
7555 |
+
.col-lg-pull-49 {
|
7556 |
+
right: 81.66666666666667%;
|
7557 |
+
}
|
7558 |
+
.col-lg-pull-50 {
|
7559 |
+
right: 83.33333333333333%;
|
7560 |
+
}
|
7561 |
+
.col-lg-pull-51 {
|
7562 |
+
right: 85%;
|
7563 |
+
}
|
7564 |
+
.col-lg-pull-52 {
|
7565 |
+
right: 86.66666666666667%;
|
7566 |
+
}
|
7567 |
+
.col-lg-pull-53 {
|
7568 |
+
right: 88.33333333333333%;
|
7569 |
+
}
|
7570 |
+
.col-lg-pull-54 {
|
7571 |
+
right: 90%;
|
7572 |
+
}
|
7573 |
+
.col-lg-pull-55 {
|
7574 |
+
right: 91.66666666666667%;
|
7575 |
+
}
|
7576 |
+
.col-lg-pull-56 {
|
7577 |
+
right: 93.33333333333333%;
|
7578 |
+
}
|
7579 |
+
.col-lg-pull-57 {
|
7580 |
+
right: 95%;
|
7581 |
+
}
|
7582 |
+
.col-lg-pull-58 {
|
7583 |
+
right: 96.66666666666667%;
|
7584 |
+
}
|
7585 |
+
.col-lg-pull-59 {
|
7586 |
+
right: 98.33333333333333%;
|
7587 |
+
}
|
7588 |
+
.col-lg-offset-0 {
|
7589 |
+
margin-left: 0
|
7590 |
+
}
|
7591 |
+
.col-lg-offset-1 {
|
7592 |
+
margin-left: 1.666666666666667%;
|
7593 |
+
}
|
7594 |
+
.col-lg-offset-2 {
|
7595 |
+
margin-left: 3.333333333333333%;
|
7596 |
+
}
|
7597 |
+
.col-lg-offset-3 {
|
7598 |
+
margin-left: 5%;
|
7599 |
+
}
|
7600 |
+
.col-lg-offset-4 {
|
7601 |
+
margin-left: 6.666666666666667%;
|
7602 |
+
}
|
7603 |
+
.col-lg-offset-5 {
|
7604 |
+
margin-left: 8.333333333333333%;
|
7605 |
+
}
|
7606 |
+
.col-lg-offset-6 {
|
7607 |
+
margin-left: 10%;
|
7608 |
+
}
|
7609 |
+
.col-lg-offset-7 {
|
7610 |
+
margin-left: 11.66666666666667%;
|
7611 |
+
}
|
7612 |
+
.col-lg-offset-8 {
|
7613 |
+
margin-left: 13.33333333333333%;
|
7614 |
+
}
|
7615 |
+
.col-lg-offset-9 {
|
7616 |
+
margin-left: 15%;
|
7617 |
+
}
|
7618 |
+
.col-lg-offset-10 {
|
7619 |
+
margin-left: 16.66666666666667%;
|
7620 |
+
}
|
7621 |
+
.col-lg-offset-11 {
|
7622 |
+
margin-left: 18.33333333333333%;
|
7623 |
+
}
|
7624 |
+
.col-lg-offset-12 {
|
7625 |
+
margin-left: 20%;
|
7626 |
+
}
|
7627 |
+
.col-lg-offset-13 {
|
7628 |
+
margin-left: 21.66666666666667%;
|
7629 |
+
}
|
7630 |
+
.col-lg-offset-14 {
|
7631 |
+
margin-left: 23.33333333333333%;
|
7632 |
+
}
|
7633 |
+
.col-lg-offset-15 {
|
7634 |
+
margin-left: 25%;
|
7635 |
+
}
|
7636 |
+
.col-lg-offset-16 {
|
7637 |
+
margin-left: 26.66666666666667%;
|
7638 |
+
}
|
7639 |
+
.col-lg-offset-17 {
|
7640 |
+
margin-left: 28.33333333333333%;
|
7641 |
+
}
|
7642 |
+
.col-lg-offset-18 {
|
7643 |
+
margin-left: 30%;
|
7644 |
+
}
|
7645 |
+
.col-lg-offset-19 {
|
7646 |
+
margin-left: 31.66666666666667%;
|
7647 |
+
}
|
7648 |
+
.col-lg-offset-20 {
|
7649 |
+
margin-left: 33.33333333333333%;
|
7650 |
+
}
|
7651 |
+
.col-lg-offset-21 {
|
7652 |
+
margin-left: 35%;
|
7653 |
+
}
|
7654 |
+
.col-lg-offset-22 {
|
7655 |
+
margin-left: 36.66666666666667%;
|
7656 |
+
}
|
7657 |
+
.col-lg-offset-23 {
|
7658 |
+
margin-left: 38.33333333333333%;
|
7659 |
+
}
|
7660 |
+
.col-lg-offset-24 {
|
7661 |
+
margin-left: 40%;
|
7662 |
+
}
|
7663 |
+
.col-lg-offset-25 {
|
7664 |
+
margin-left: 41.66666666666667%;
|
7665 |
+
}
|
7666 |
+
.col-lg-offset-26 {
|
7667 |
+
margin-left: 43.33333333333333%;
|
7668 |
+
}
|
7669 |
+
.col-lg-offset-27 {
|
7670 |
+
margin-left: 45%;
|
7671 |
+
}
|
7672 |
+
.col-lg-offset-28 {
|
7673 |
+
margin-left: 46.66666666666667%;
|
7674 |
+
}
|
7675 |
+
.col-lg-offset-29 {
|
7676 |
+
margin-left: 48.33333333333333%;
|
7677 |
+
}
|
7678 |
+
.col-lg-offset-30 {
|
7679 |
+
margin-left: 50%;
|
7680 |
+
}
|
7681 |
+
.col-lg-offset-31 {
|
7682 |
+
margin-left: 51.66666666666667%;
|
7683 |
+
}
|
7684 |
+
.col-lg-offset-32 {
|
7685 |
+
margin-left: 53.33333333333333%;
|
7686 |
+
}
|
7687 |
+
.col-lg-offset-33 {
|
7688 |
+
margin-left: 55%;
|
7689 |
+
}
|
7690 |
+
.col-lg-offset-34 {
|
7691 |
+
margin-left: 56.66666666666667%;
|
7692 |
+
}
|
7693 |
+
.col-lg-offset-35 {
|
7694 |
+
margin-left: 58.33333333333333%;
|
7695 |
+
}
|
7696 |
+
.col-lg-offset-36 {
|
7697 |
+
margin-left: 60%;
|
7698 |
+
}
|
7699 |
+
.col-lg-offset-37 {
|
7700 |
+
margin-left: 61.66666666666667%;
|
7701 |
+
}
|
7702 |
+
.col-lg-offset-38 {
|
7703 |
+
margin-left: 63.33333333333333%;
|
7704 |
+
}
|
7705 |
+
.col-lg-offset-39 {
|
7706 |
+
margin-left: 65%;
|
7707 |
+
}
|
7708 |
+
.col-lg-offset-40 {
|
7709 |
+
margin-left: 66.66666666666667%;
|
7710 |
+
}
|
7711 |
+
.col-lg-offset-41 {
|
7712 |
+
margin-left: 68.33333333333333%;
|
7713 |
+
}
|
7714 |
+
.col-lg-offset-42 {
|
7715 |
+
margin-left: 70%;
|
7716 |
+
}
|
7717 |
+
.col-lg-offset-43 {
|
7718 |
+
margin-left: 71.66666666666667%;
|
7719 |
+
}
|
7720 |
+
.col-lg-offset-44 {
|
7721 |
+
margin-left: 73.33333333333333%;
|
7722 |
+
}
|
7723 |
+
.col-lg-offset-45 {
|
7724 |
+
margin-left: 75%;
|
7725 |
+
}
|
7726 |
+
.col-lg-offset-46 {
|
7727 |
+
margin-left: 76.66666666666667%;
|
7728 |
+
}
|
7729 |
+
.col-lg-offset-47 {
|
7730 |
+
margin-left: 78.33333333333333%;
|
7731 |
+
}
|
7732 |
+
.col-lg-offset-48 {
|
7733 |
+
margin-left: 80%;
|
7734 |
+
}
|
7735 |
+
.col-lg-offset-49 {
|
7736 |
+
margin-left: 81.66666666666667%;
|
7737 |
+
}
|
7738 |
+
.col-lg-offset-50 {
|
7739 |
+
margin-left: 83.33333333333333%;
|
7740 |
+
}
|
7741 |
+
.col-lg-offset-51 {
|
7742 |
+
margin-left: 85%;
|
7743 |
+
}
|
7744 |
+
.col-lg-offset-52 {
|
7745 |
+
margin-left: 86.66666666666667%;
|
7746 |
+
}
|
7747 |
+
.col-lg-offset-53 {
|
7748 |
+
margin-left: 88.33333333333333%;
|
7749 |
+
}
|
7750 |
+
.col-lg-offset-54 {
|
7751 |
+
margin-left: 90%;
|
7752 |
+
}
|
7753 |
+
.col-lg-offset-55 {
|
7754 |
+
margin-left: 91.66666666666667%;
|
7755 |
+
}
|
7756 |
+
.col-lg-offset-56 {
|
7757 |
+
margin-left: 93.33333333333333%;
|
7758 |
+
}
|
7759 |
+
.col-lg-offset-57 {
|
7760 |
+
margin-left: 95%;
|
7761 |
+
}
|
7762 |
+
.col-lg-offset-58 {
|
7763 |
+
margin-left: 96.66666666666667%;
|
7764 |
+
}
|
7765 |
+
.col-lg-offset-59 {
|
7766 |
+
margin-left: 98.33333333333333%;
|
7767 |
+
}
|
7768 |
+
{
|
7769 |
+
|
7770 |
+
}
|
7771 |
+
.container{
|
7772 |
+
background-color: #f3f6f6;
|
7773 |
+
}
|
skin/adminhtml/default/default/unbxd/css/bootstrap-them.css
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-color:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}
|
2 |
+
.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
|
skin/adminhtml/default/default/unbxd/css/bootstrap.css
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.0.0
|
3 |
+
*
|
4 |
+
* Copyright 2013 Twitter, Inc
|
5 |
+
* Licensed under the Apache License v2.0
|
6 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
7 |
+
*
|
8 |
+
* Designed and built with all the love in the world by @mdo and @fat.
|
9 |
+
*//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}
|
10 |
+
p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}
|
11 |
+
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6
|
12 |
+
{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}
|
13 |
+
h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}
|
14 |
+
h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}
|
15 |
+
h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}
|
16 |
+
.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990
|
17 |
+
}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}
|
18 |
+
.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}
|
19 |
+
.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}
|
20 |
+
.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}
|
21 |
+
.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}
|
22 |
+
.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}
|
23 |
+
.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}
|
24 |
+
.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}
|
25 |
+
@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}
|
26 |
+
.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}
|
27 |
+
.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}
|
28 |
+
.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}
|
29 |
+
.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}
|
30 |
+
.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}
|
31 |
+
.navbar-inverse .navbar-nav>li>a{color:#999}
|
32 |
+
.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}
|
33 |
+
.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,
|
34 |
+
.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}
|
35 |
+
.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse
|
36 |
+
.navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>
|
37 |
+
.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}
|
38 |
+
.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}
|
skin/adminhtml/default/default/unbxd/css/chosen.css
ADDED
@@ -0,0 +1,429 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.chosen-container {
|
2 |
+
position: relative;
|
3 |
+
display: inline-block;
|
4 |
+
vertical-align: middle;
|
5 |
+
font-size: 13px;
|
6 |
+
zoom: 1;
|
7 |
+
*display: inline;
|
8 |
+
-webkit-user-select: none;
|
9 |
+
-moz-user-select: none;
|
10 |
+
user-select: none;
|
11 |
+
}
|
12 |
+
.chosen-container .chosen-drop {
|
13 |
+
position: absolute;
|
14 |
+
top: 100%;
|
15 |
+
left: -9999px;
|
16 |
+
z-index: 1010;
|
17 |
+
-webkit-box-sizing: border-box;
|
18 |
+
-moz-box-sizing: border-box;
|
19 |
+
box-sizing: border-box;
|
20 |
+
width: 100%;
|
21 |
+
border: 1px solid #aaa;
|
22 |
+
border-top: 0;
|
23 |
+
background: #fff;
|
24 |
+
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
25 |
+
}
|
26 |
+
.chosen-container.chosen-with-drop .chosen-drop {
|
27 |
+
left: 0;
|
28 |
+
}
|
29 |
+
.chosen-container a {
|
30 |
+
cursor: pointer;
|
31 |
+
}
|
32 |
+
|
33 |
+
/* @end */
|
34 |
+
/* @group Single Chosen */
|
35 |
+
.chosen-container-single .chosen-single {
|
36 |
+
position: relative;
|
37 |
+
display: block;
|
38 |
+
overflow: hidden;
|
39 |
+
padding: 0 0 0 8px;
|
40 |
+
height: 23px;
|
41 |
+
border: 1px solid #aaa;
|
42 |
+
border-radius: 5px;
|
43 |
+
background-color: #fff;
|
44 |
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
|
45 |
+
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
46 |
+
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
47 |
+
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
48 |
+
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
49 |
+
background-clip: padding-box;
|
50 |
+
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
51 |
+
color: #444;
|
52 |
+
text-decoration: none;
|
53 |
+
white-space: nowrap;
|
54 |
+
line-height: 24px;
|
55 |
+
}
|
56 |
+
.chosen-container-single .chosen-default {
|
57 |
+
color: #999;
|
58 |
+
}
|
59 |
+
.chosen-container-single .chosen-single span {
|
60 |
+
display: block;
|
61 |
+
overflow: hidden;
|
62 |
+
margin-right: 26px;
|
63 |
+
text-overflow: ellipsis;
|
64 |
+
white-space: nowrap;
|
65 |
+
}
|
66 |
+
.chosen-container-single .chosen-single-with-deselect span {
|
67 |
+
margin-right: 38px;
|
68 |
+
}
|
69 |
+
.chosen-container-single .chosen-single abbr {
|
70 |
+
position: absolute;
|
71 |
+
top: 6px;
|
72 |
+
right: 26px;
|
73 |
+
display: block;
|
74 |
+
width: 12px;
|
75 |
+
height: 12px;
|
76 |
+
background: url('chosen-sprite.png') -42px 1px no-repeat;
|
77 |
+
font-size: 1px;
|
78 |
+
}
|
79 |
+
.chosen-container-single .chosen-single abbr:hover {
|
80 |
+
background-position: -42px -10px;
|
81 |
+
}
|
82 |
+
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
|
83 |
+
background-position: -42px -10px;
|
84 |
+
}
|
85 |
+
.chosen-container-single .chosen-single div {
|
86 |
+
position: absolute;
|
87 |
+
top: 0;
|
88 |
+
right: 0;
|
89 |
+
display: block;
|
90 |
+
width: 18px;
|
91 |
+
height: 100%;
|
92 |
+
}
|
93 |
+
.chosen-container-single .chosen-single div b {
|
94 |
+
display: block;
|
95 |
+
width: 100%;
|
96 |
+
height: 100%;
|
97 |
+
background: url('chosen-sprite.png') no-repeat 0px 2px;
|
98 |
+
}
|
99 |
+
.chosen-container-single .chosen-search {
|
100 |
+
position: relative;
|
101 |
+
z-index: 1010;
|
102 |
+
margin: 0;
|
103 |
+
padding: 3px 4px;
|
104 |
+
white-space: nowrap;
|
105 |
+
}
|
106 |
+
.chosen-container-single .chosen-search input[type="text"] {
|
107 |
+
-webkit-box-sizing: border-box;
|
108 |
+
-moz-box-sizing: border-box;
|
109 |
+
box-sizing: border-box;
|
110 |
+
margin: 1px 0;
|
111 |
+
padding: 4px 20px 4px 5px;
|
112 |
+
width: 100%;
|
113 |
+
height: auto;
|
114 |
+
outline: 0;
|
115 |
+
border: 1px solid #aaa;
|
116 |
+
background: white url('chosen-sprite.png') no-repeat 100% -20px;
|
117 |
+
background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
|
118 |
+
background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
119 |
+
background: url('chosen-sprite.png') no-repeat 100% -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
120 |
+
background: url('chosen-sprite.png') no-repeat 100% -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
121 |
+
background: url('chosen-sprite.png') no-repeat 100% -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
|
122 |
+
font-size: 1em;
|
123 |
+
font-family: sans-serif;
|
124 |
+
line-height: normal;
|
125 |
+
border-radius: 0;
|
126 |
+
}
|
127 |
+
.chosen-container-single .chosen-drop {
|
128 |
+
margin-top: -1px;
|
129 |
+
border-radius: 0 0 4px 4px;
|
130 |
+
background-clip: padding-box;
|
131 |
+
}
|
132 |
+
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
|
133 |
+
position: absolute;
|
134 |
+
left: -9999px;
|
135 |
+
}
|
136 |
+
|
137 |
+
/* @end */
|
138 |
+
/* @group Results */
|
139 |
+
.chosen-container .chosen-results {
|
140 |
+
position: relative;
|
141 |
+
overflow-x: hidden;
|
142 |
+
overflow-y: auto;
|
143 |
+
margin: 0 4px 4px 0;
|
144 |
+
padding: 0 0 0 4px;
|
145 |
+
max-height: 240px;
|
146 |
+
-webkit-overflow-scrolling: touch;
|
147 |
+
}
|
148 |
+
.chosen-container .chosen-results li {
|
149 |
+
display: none;
|
150 |
+
margin: 0;
|
151 |
+
padding: 5px 6px;
|
152 |
+
list-style: none;
|
153 |
+
line-height: 15px;
|
154 |
+
}
|
155 |
+
.chosen-container .chosen-results li.active-result {
|
156 |
+
display: list-item;
|
157 |
+
cursor: pointer;
|
158 |
+
}
|
159 |
+
.chosen-container .chosen-results li.disabled-result {
|
160 |
+
display: list-item;
|
161 |
+
color: #ccc;
|
162 |
+
cursor: default;
|
163 |
+
}
|
164 |
+
.chosen-container .chosen-results li.highlighted {
|
165 |
+
background-color: #3875d7;
|
166 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
|
167 |
+
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
168 |
+
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
169 |
+
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
170 |
+
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
|
171 |
+
color: #fff;
|
172 |
+
}
|
173 |
+
.chosen-container .chosen-results li.no-results {
|
174 |
+
display: list-item;
|
175 |
+
background: #f4f4f4;
|
176 |
+
}
|
177 |
+
.chosen-container .chosen-results li.group-result {
|
178 |
+
display: list-item;
|
179 |
+
font-weight: bold;
|
180 |
+
cursor: default;
|
181 |
+
}
|
182 |
+
.chosen-container .chosen-results li.group-option {
|
183 |
+
padding-left: 15px;
|
184 |
+
}
|
185 |
+
.chosen-container .chosen-results li em {
|
186 |
+
font-style: normal;
|
187 |
+
text-decoration: underline;
|
188 |
+
}
|
189 |
+
|
190 |
+
/* @end */
|
191 |
+
/* @group Multi Chosen */
|
192 |
+
.chosen-container-multi .chosen-choices {
|
193 |
+
position: relative;
|
194 |
+
overflow: hidden;
|
195 |
+
-webkit-box-sizing: border-box;
|
196 |
+
-moz-box-sizing: border-box;
|
197 |
+
box-sizing: border-box;
|
198 |
+
margin: 0;
|
199 |
+
padding: 0;
|
200 |
+
width: 100%;
|
201 |
+
height: auto !important;
|
202 |
+
height: 1%;
|
203 |
+
border: 1px solid #aaa;
|
204 |
+
background-color: #fff;
|
205 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
|
206 |
+
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
207 |
+
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
208 |
+
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
209 |
+
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
|
210 |
+
cursor: text;
|
211 |
+
}
|
212 |
+
.chosen-container-multi .chosen-choices li {
|
213 |
+
float: left;
|
214 |
+
list-style: none;
|
215 |
+
}
|
216 |
+
.chosen-container-multi .chosen-choices li.search-field {
|
217 |
+
margin: 0;
|
218 |
+
padding: 0;
|
219 |
+
white-space: nowrap;
|
220 |
+
}
|
221 |
+
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
|
222 |
+
margin: 1px 0;
|
223 |
+
padding: 5px;
|
224 |
+
height: 15px;
|
225 |
+
outline: 0;
|
226 |
+
border: 0 !important;
|
227 |
+
background: transparent !important;
|
228 |
+
box-shadow: none;
|
229 |
+
color: #666;
|
230 |
+
font-size: 100%;
|
231 |
+
font-family: sans-serif;
|
232 |
+
line-height: normal;
|
233 |
+
border-radius: 0;
|
234 |
+
}
|
235 |
+
.chosen-container-multi .chosen-choices li.search-field .default {
|
236 |
+
color: #999;
|
237 |
+
}
|
238 |
+
.chosen-container-multi .chosen-choices li.search-choice {
|
239 |
+
position: relative;
|
240 |
+
margin: 3px 0 3px 5px;
|
241 |
+
padding: 3px 20px 3px 5px;
|
242 |
+
border: 1px solid #aaa;
|
243 |
+
border-radius: 3px;
|
244 |
+
background-color: #e4e4e4;
|
245 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
246 |
+
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
247 |
+
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
248 |
+
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
249 |
+
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
250 |
+
background-clip: padding-box;
|
251 |
+
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
252 |
+
color: #333;
|
253 |
+
line-height: 13px;
|
254 |
+
cursor: default;
|
255 |
+
}
|
256 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
|
257 |
+
position: absolute;
|
258 |
+
top: 4px;
|
259 |
+
right: 3px;
|
260 |
+
display: block;
|
261 |
+
width: 12px;
|
262 |
+
height: 12px;
|
263 |
+
background: url('chosen-sprite.png') -42px 1px no-repeat;
|
264 |
+
font-size: 1px;
|
265 |
+
}
|
266 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
|
267 |
+
background-position: -42px -10px;
|
268 |
+
}
|
269 |
+
.chosen-container-multi .chosen-choices li.search-choice-disabled {
|
270 |
+
padding-right: 5px;
|
271 |
+
border: 1px solid #ccc;
|
272 |
+
background-color: #e4e4e4;
|
273 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
274 |
+
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
275 |
+
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
276 |
+
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
277 |
+
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
278 |
+
color: #666;
|
279 |
+
}
|
280 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus {
|
281 |
+
background: #d4d4d4;
|
282 |
+
}
|
283 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
|
284 |
+
background-position: -42px -10px;
|
285 |
+
}
|
286 |
+
.chosen-container-multi .chosen-results {
|
287 |
+
margin: 0;
|
288 |
+
padding: 0;
|
289 |
+
}
|
290 |
+
.chosen-container-multi .chosen-drop .result-selected {
|
291 |
+
display: list-item;
|
292 |
+
color: #ccc;
|
293 |
+
cursor: default;
|
294 |
+
}
|
295 |
+
|
296 |
+
/* @end */
|
297 |
+
/* @group Active */
|
298 |
+
.chosen-container-active .chosen-single {
|
299 |
+
border: 1px solid #5897fb;
|
300 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
301 |
+
}
|
302 |
+
.chosen-container-active.chosen-with-drop .chosen-single {
|
303 |
+
border: 1px solid #aaa;
|
304 |
+
-moz-border-radius-bottomright: 0;
|
305 |
+
border-bottom-right-radius: 0;
|
306 |
+
-moz-border-radius-bottomleft: 0;
|
307 |
+
border-bottom-left-radius: 0;
|
308 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
|
309 |
+
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
310 |
+
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
311 |
+
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
312 |
+
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
|
313 |
+
box-shadow: 0 1px 0 #fff inset;
|
314 |
+
}
|
315 |
+
.chosen-container-active.chosen-with-drop .chosen-single div {
|
316 |
+
border-left: none;
|
317 |
+
background: transparent;
|
318 |
+
}
|
319 |
+
.chosen-container-active.chosen-with-drop .chosen-single div b {
|
320 |
+
background-position: -18px 2px;
|
321 |
+
}
|
322 |
+
.chosen-container-active .chosen-choices {
|
323 |
+
border: 1px solid #5897fb;
|
324 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
325 |
+
}
|
326 |
+
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
|
327 |
+
color: #111 !important;
|
328 |
+
}
|
329 |
+
|
330 |
+
/* @end */
|
331 |
+
/* @group Disabled Support */
|
332 |
+
.chosen-disabled {
|
333 |
+
opacity: 0.5 !important;
|
334 |
+
cursor: default;
|
335 |
+
}
|
336 |
+
.chosen-disabled .chosen-single {
|
337 |
+
cursor: default;
|
338 |
+
}
|
339 |
+
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
|
340 |
+
cursor: default;
|
341 |
+
}
|
342 |
+
|
343 |
+
/* @end */
|
344 |
+
/* @group Right to Left */
|
345 |
+
.chosen-rtl {
|
346 |
+
text-align: right;
|
347 |
+
}
|
348 |
+
.chosen-rtl .chosen-single {
|
349 |
+
overflow: visible;
|
350 |
+
padding: 0 8px 0 0;
|
351 |
+
}
|
352 |
+
.chosen-rtl .chosen-single span {
|
353 |
+
margin-right: 0;
|
354 |
+
margin-left: 26px;
|
355 |
+
direction: rtl;
|
356 |
+
}
|
357 |
+
.chosen-rtl .chosen-single-with-deselect span {
|
358 |
+
margin-left: 38px;
|
359 |
+
}
|
360 |
+
.chosen-rtl .chosen-single div {
|
361 |
+
right: auto;
|
362 |
+
left: 3px;
|
363 |
+
}
|
364 |
+
.chosen-rtl .chosen-single abbr {
|
365 |
+
right: auto;
|
366 |
+
left: 26px;
|
367 |
+
}
|
368 |
+
.chosen-rtl .chosen-choices li {
|
369 |
+
float: right;
|
370 |
+
}
|
371 |
+
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
|
372 |
+
direction: rtl;
|
373 |
+
}
|
374 |
+
.chosen-rtl .chosen-choices li.search-choice {
|
375 |
+
margin: 3px 5px 3px 0;
|
376 |
+
padding: 3px 5px 3px 19px;
|
377 |
+
}
|
378 |
+
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
|
379 |
+
right: auto;
|
380 |
+
left: 4px;
|
381 |
+
}
|
382 |
+
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
|
383 |
+
.chosen-rtl .chosen-drop {
|
384 |
+
left: 9999px;
|
385 |
+
}
|
386 |
+
.chosen-rtl.chosen-container-single .chosen-results {
|
387 |
+
margin: 0 0 4px 4px;
|
388 |
+
padding: 0 4px 0 0;
|
389 |
+
}
|
390 |
+
.chosen-rtl .chosen-results li.group-option {
|
391 |
+
padding-right: 15px;
|
392 |
+
padding-left: 0;
|
393 |
+
}
|
394 |
+
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
|
395 |
+
border-right: none;
|
396 |
+
}
|
397 |
+
.chosen-rtl .chosen-search input[type="text"] {
|
398 |
+
padding: 4px 5px 4px 20px;
|
399 |
+
background: white url('chosen-sprite.png') no-repeat -30px -20px;
|
400 |
+
background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
|
401 |
+
background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
402 |
+
background: url('chosen-sprite.png') no-repeat -30px -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
403 |
+
background: url('chosen-sprite.png') no-repeat -30px -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
404 |
+
background: url('chosen-sprite.png') no-repeat -30px -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
|
405 |
+
direction: rtl;
|
406 |
+
}
|
407 |
+
.chosen-rtl.chosen-container-single .chosen-single div b {
|
408 |
+
background-position: 6px 2px;
|
409 |
+
}
|
410 |
+
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
|
411 |
+
background-position: -12px 2px;
|
412 |
+
}
|
413 |
+
|
414 |
+
/* @end */
|
415 |
+
/* @group Retina compatibility */
|
416 |
+
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
|
417 |
+
.chosen-rtl .chosen-search input[type="text"],
|
418 |
+
.chosen-container-single .chosen-single abbr,
|
419 |
+
.chosen-container-single .chosen-single div b,
|
420 |
+
.chosen-container-single .chosen-search input[type="text"],
|
421 |
+
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
|
422 |
+
.chosen-container .chosen-results-scroll-down span,
|
423 |
+
.chosen-container .chosen-results-scroll-up span {
|
424 |
+
background-image: url('chosen-sprite@2x.png') !important;
|
425 |
+
background-size: 52px 37px !important;
|
426 |
+
background-repeat: no-repeat !important;
|
427 |
+
}
|
428 |
+
}
|
429 |
+
/* @end */
|
skin/adminhtml/default/default/unbxd/css/unbxd-magento.css
ADDED
@@ -0,0 +1,632 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.container{
|
2 |
+
background-color: #f3f6f6;
|
3 |
+
}
|
4 |
+
.middle-nav-magento-dropdown, .background-grey{
|
5 |
+
background-color: #F3F6F6 !important;
|
6 |
+
}
|
7 |
+
.middle-nav-magento-dropdown{
|
8 |
+
top: 185px;
|
9 |
+
}
|
10 |
+
.top-200{
|
11 |
+
top:200px !important;
|
12 |
+
}
|
13 |
+
.top-185{
|
14 |
+
top: 185px !important;
|
15 |
+
}
|
16 |
+
.clickable-btn{
|
17 |
+
cursor: pointer;
|
18 |
+
}
|
19 |
+
.magento-active{
|
20 |
+
border-top: 1px solid #4e5253;
|
21 |
+
border-bottom: 1px solid #4e5253;
|
22 |
+
background: #45b5c1 url('../img/arrow-white.png') no-repeat 90%;
|
23 |
+
}
|
24 |
+
.site-key-help {
|
25 |
+
display: none;
|
26 |
+
top: 329px;
|
27 |
+
position: absolute;
|
28 |
+
left: 470px;
|
29 |
+
}
|
30 |
+
.secret-key-help{
|
31 |
+
display: none;
|
32 |
+
top: 329px;
|
33 |
+
position: absolute;
|
34 |
+
left: 870px;
|
35 |
+
}
|
36 |
+
.blue-link{
|
37 |
+
color: #11b3c7;
|
38 |
+
cursor: pointer;
|
39 |
+
padding-top: 13px;
|
40 |
+
padding-left: 10px;
|
41 |
+
}
|
42 |
+
.custom-attributes{
|
43 |
+
display: none;
|
44 |
+
}
|
45 |
+
.middle-nav-text {
|
46 |
+
padding-left: 5px;
|
47 |
+
color: #3c3f40;
|
48 |
+
font-size: 16px;
|
49 |
+
font-weight: 400;
|
50 |
+
padding-top: 5px;
|
51 |
+
padding-bottom: 5px;
|
52 |
+
margin-bottom: 0;
|
53 |
+
}
|
54 |
+
.chosen-drop{
|
55 |
+
z-index: 999999 !important;
|
56 |
+
}
|
57 |
+
.capitalize{
|
58 |
+
text-transform: capitalize;
|
59 |
+
}
|
60 |
+
.unbxd-table{
|
61 |
+
|
62 |
+
border-right-style: solid;
|
63 |
+
border-right-width: 1px;
|
64 |
+
border-top-color: rgb(222, 226, 228);
|
65 |
+
border-top-left-radius: 5px;
|
66 |
+
border-top-right-radius: 5px;
|
67 |
+
border-top-style: solid;
|
68 |
+
border-top-width: 1px;
|
69 |
+
box-sizing: border-box;
|
70 |
+
color: rgb(51, 51, 51);
|
71 |
+
font-family: proxima-nova, Arial, sans-serif;
|
72 |
+
font-size: 14px;
|
73 |
+
font-style: normal;
|
74 |
+
font-variant: normal;
|
75 |
+
font-weight: normal;
|
76 |
+
line-height: 20px;
|
77 |
+
margin-bottom: 20px;
|
78 |
+
margin-left: 0px;
|
79 |
+
margin-right: 0px;
|
80 |
+
margin-top: 0px;
|
81 |
+
max-width: 100%;
|
82 |
+
padding-bottom: 0px;
|
83 |
+
padding-left: 0px;
|
84 |
+
padding-right: 0px;
|
85 |
+
padding-top: 0px;
|
86 |
+
width: 100%;
|
87 |
+
}
|
88 |
+
.unbxd-thead{
|
89 |
+
color: rgb(51, 51, 51);
|
90 |
+
font-family: proxima-nova, Arial, sans-serif;
|
91 |
+
font-size: 14px;
|
92 |
+
font-style: normal;
|
93 |
+
font-variant: normal;
|
94 |
+
font-weight: normal;
|
95 |
+
height: 48px;
|
96 |
+
line-height: 20px;
|
97 |
+
|
98 |
+
}
|
99 |
+
.unbxd-tr{
|
100 |
+
border-bottom-color: rgb(222, 226, 228);
|
101 |
+
border-collapse: separate;
|
102 |
+
border-left-color: rgb(222, 226, 228);
|
103 |
+
border-right-color: rgb(222, 226, 228);
|
104 |
+
border-top-color: rgb(222, 226, 228);
|
105 |
+
box-sizing: border-box;
|
106 |
+
color: rgb(51, 51, 51);
|
107 |
+
font-family: proxima-nova, Arial, sans-serif;
|
108 |
+
font-size: 14px;
|
109 |
+
font-style: normal;
|
110 |
+
font-variant: normal;
|
111 |
+
font-weight: normal;
|
112 |
+
height: 48px;
|
113 |
+
line-height: 20px;
|
114 |
+
margin-bottom: 0px;
|
115 |
+
margin-left: 0px;
|
116 |
+
margin-right: 0px;
|
117 |
+
margin-top: 0px;
|
118 |
+
padding-bottom: 0px;
|
119 |
+
padding-left: 0px;
|
120 |
+
padding-right: 0px;
|
121 |
+
padding-top: 0px;
|
122 |
+
vertical-align: middle;
|
123 |
+
}
|
124 |
+
.unbxd-th{
|
125 |
+
|
126 |
+
background-color: rgb(60, 63, 64);
|
127 |
+
border-bottom-left-radius: 0px;
|
128 |
+
border-bottom-right-radius: 0px;
|
129 |
+
border-bottom-style: none;
|
130 |
+
border-bottom-width: 0px;
|
131 |
+
border-collapse: separate;
|
132 |
+
border-right-color: rgb(255, 255, 255);
|
133 |
+
border-right-style: solid;
|
134 |
+
border-right-width: 1px;
|
135 |
+
border-top-color: rgb(255, 255, 255);
|
136 |
+
border-top-left-radius: 5px;
|
137 |
+
border-top-right-radius: 0px;
|
138 |
+
border-top-style: none;
|
139 |
+
border-top-width: 0px;
|
140 |
+
box-sizing: border-box;
|
141 |
+
color: rgb(255, 255, 255);
|
142 |
+
font-family: proxima-nova, Arial, sans-serif;
|
143 |
+
font-size: 18px;
|
144 |
+
font-style: normal;
|
145 |
+
font-variant: normal;
|
146 |
+
font-weight: normal;
|
147 |
+
height: 48px;
|
148 |
+
line-height: 25.7142868041992px;
|
149 |
+
margin-bottom: 0px;
|
150 |
+
margin-left: 0px;
|
151 |
+
margin-right: 0px;
|
152 |
+
margin-top: 0px;
|
153 |
+
padding-bottom: 8px;
|
154 |
+
padding-left: 20px;
|
155 |
+
padding-right: 0px;
|
156 |
+
padding-top: 15px;
|
157 |
+
text-align: left;
|
158 |
+
}
|
159 |
+
.unbxd-tbody{
|
160 |
+
border-bottom-color: rgb(222, 226, 228);
|
161 |
+
border-collapse: separate;
|
162 |
+
border-left-color: rgb(222, 226, 228);
|
163 |
+
border-right-color: rgb(222, 226, 228);
|
164 |
+
border-top-color: rgb(222, 226, 228);
|
165 |
+
box-sizing: border-box;
|
166 |
+
color: rgb(51, 51, 51);
|
167 |
+
display: table-row-group;
|
168 |
+
font-family: proxima-nova, Arial, sans-serif;
|
169 |
+
font-size: 14px;
|
170 |
+
font-style: normal;
|
171 |
+
font-variant: normal;
|
172 |
+
font-weight: normal;
|
173 |
+
height: 549px;
|
174 |
+
line-height: 20px;
|
175 |
+
margin-bottom: 0px;
|
176 |
+
margin-left: 0px;
|
177 |
+
margin-right: 0px;
|
178 |
+
margin-top: 0px;
|
179 |
+
padding-bottom: 0px;
|
180 |
+
padding-left: 0px;
|
181 |
+
padding-right: 0px;
|
182 |
+
padding-top: 0px;
|
183 |
+
vertical-align: middle;
|
184 |
+
width: 666px;
|
185 |
+
}
|
186 |
+
.unbxd-td{
|
187 |
+
border-collapse: separate;
|
188 |
+
border-right-color: rgb(222, 226, 228);
|
189 |
+
border-right-style: solid;
|
190 |
+
border-right-width: 1px;
|
191 |
+
border-top-color: rgb(221, 221, 221);
|
192 |
+
border-top-style: solid;
|
193 |
+
border-top-width: 1px;
|
194 |
+
box-sizing: border-box;
|
195 |
+
color: rgb(92, 101, 106);
|
196 |
+
display: table-cell;
|
197 |
+
font-family: proxima-nova, Arial, sans-serif;
|
198 |
+
font-size: 16px;
|
199 |
+
font-style: normal;
|
200 |
+
font-variant: normal;
|
201 |
+
font-weight: normal;
|
202 |
+
height: 72px;
|
203 |
+
line-height: 22.8571434020996px;
|
204 |
+
margin-bottom: 0px;
|
205 |
+
margin-left: 0px;
|
206 |
+
margin-right: 0px;
|
207 |
+
margin-top: 0px;
|
208 |
+
padding-bottom: 15px;
|
209 |
+
padding-left: 23px;
|
210 |
+
padding-right: 100px;
|
211 |
+
padding-top: 15px;
|
212 |
+
text-transform: capitalize;
|
213 |
+
|
214 |
+
}
|
215 |
+
.width-45{
|
216 |
+
width: 45%;
|
217 |
+
}
|
218 |
+
.width-55{
|
219 |
+
width: 55%;
|
220 |
+
}
|
221 |
+
.width-50{
|
222 |
+
width: 50%;
|
223 |
+
}
|
224 |
+
.tr-row{
|
225 |
+
width: 100%;
|
226 |
+
height: 50px;
|
227 |
+
|
228 |
+
}
|
229 |
+
.td-right{
|
230 |
+
padding-top: 2px;
|
231 |
+
/*width: 55% !important;*/
|
232 |
+
float: right;
|
233 |
+
border-left: 1px solid #dee2e4 !important;
|
234 |
+
border-bottom: 1px solid #dee2e4 !important;
|
235 |
+
height: 100%;
|
236 |
+
}
|
237 |
+
.td-left{
|
238 |
+
float: left;
|
239 |
+
height: 100%;
|
240 |
+
padding-top: 19px;
|
241 |
+
padding-left: 32px;
|
242 |
+
font-size: 17px;
|
243 |
+
border-bottom: 1px solid #dee2e4 !important;
|
244 |
+
}
|
245 |
+
.magento-border-left{
|
246 |
+
border-left: 1px solid #dee2e4 !important;
|
247 |
+
}
|
248 |
+
.magento-border-right{
|
249 |
+
border-right: 1px solid #dee2e4 !important;
|
250 |
+
}
|
251 |
+
.unbxd-err{
|
252 |
+
float: right;
|
253 |
+
position: absolute;
|
254 |
+
left: 694px;
|
255 |
+
width: 200px;
|
256 |
+
padding-top: 7px;
|
257 |
+
color: red;
|
258 |
+
}
|
259 |
+
#selectSites + div.chosen-container {
|
260 |
+
width: 100% !important;
|
261 |
+
}
|
262 |
+
.width-100{
|
263 |
+
width: 100% !important;
|
264 |
+
}
|
265 |
+
.width-70{
|
266 |
+
width: 70% !important;
|
267 |
+
}
|
268 |
+
.width-100 > .chosen-container{
|
269 |
+
width: 100% !important;
|
270 |
+
}
|
271 |
+
.custom-attributes-td{
|
272 |
+
padding: 0;
|
273 |
+
padding-top: 4px;
|
274 |
+
padding-right: 3px;
|
275 |
+
}
|
276 |
+
.remove-row{
|
277 |
+
margin-top: 5px;
|
278 |
+
margin-left: 5px;
|
279 |
+
width: 21%;
|
280 |
+
height: 35px;
|
281 |
+
background-size: 100%;
|
282 |
+
background-image: url("../img/delete-raw.png");
|
283 |
+
}
|
284 |
+
.remove-row:hover{
|
285 |
+
background-image: url("../img/delete-raw-hover.png");
|
286 |
+
}
|
287 |
+
.add-row{
|
288 |
+
margin-top: 5px;
|
289 |
+
margin-left: 5px;
|
290 |
+
width: 21%;
|
291 |
+
height: 35px;
|
292 |
+
background-size: 100%;
|
293 |
+
background-image: url("../img/add-raw.png");
|
294 |
+
}
|
295 |
+
.add-row:hover{
|
296 |
+
background-image: url("../img/add-raw-hover.png");
|
297 |
+
}
|
298 |
+
.disabled-btn{
|
299 |
+
opacity: 0.5;
|
300 |
+
cursor: default;
|
301 |
+
pointer-events: none;
|
302 |
+
}
|
303 |
+
.width-62{
|
304 |
+
width: 62%;
|
305 |
+
}
|
306 |
+
.unbxd-div-td{
|
307 |
+
float: left;
|
308 |
+
height: 100%;
|
309 |
+
/* padding-top: 19px;
|
310 |
+
padding-left: 32px;*/
|
311 |
+
font-size: 17px;
|
312 |
+
border-bottom: 1px solid #dee2e4 !important;
|
313 |
+
border-left: 1px solid #dee2e4 !important;
|
314 |
+
}
|
315 |
+
.width-28{
|
316 |
+
width: 28%;
|
317 |
+
}
|
318 |
+
.width-30{
|
319 |
+
width: 30%;
|
320 |
+
}
|
321 |
+
.width-42{
|
322 |
+
width: 42%;
|
323 |
+
}
|
324 |
+
.unbxd-hide{
|
325 |
+
display: none !important;
|
326 |
+
}
|
327 |
+
.pad-top{
|
328 |
+
padding-top: 20px;
|
329 |
+
}
|
330 |
+
.middle-nav-magento, .inner-container-magento{
|
331 |
+
top: 278px
|
332 |
+
}
|
333 |
+
.border-left-color{
|
334 |
+
margin-left: 25px;
|
335 |
+
margin-right: 25px;
|
336 |
+
width: 96%;
|
337 |
+
}
|
338 |
+
.background-white{
|
339 |
+
background-color: white;
|
340 |
+
}
|
341 |
+
.pad-left-45{
|
342 |
+
padding-left: 45px;
|
343 |
+
}
|
344 |
+
.footer{
|
345 |
+
position: fixed;
|
346 |
+
width: 100%;
|
347 |
+
padding-top: 19px;
|
348 |
+
background: #efefef;
|
349 |
+
bottom: -55px;
|
350 |
+
}
|
351 |
+
.footer:hover{
|
352 |
+
bottom: -5px !important;
|
353 |
+
}
|
354 |
+
.pad-btm-10p{
|
355 |
+
padding-bottom: 10%;
|
356 |
+
}
|
357 |
+
.chosen-container{
|
358 |
+
width: 354px !important;
|
359 |
+
}
|
360 |
+
._unbxd-err{
|
361 |
+
color: red;
|
362 |
+
padding-left: 13%;
|
363 |
+
font-weight: bold;
|
364 |
+
}
|
365 |
+
._unbxd-success{
|
366 |
+
color: rgb(81, 157, 79);
|
367 |
+
padding-left: 13%;
|
368 |
+
font-weight: bold;
|
369 |
+
}
|
370 |
+
.unbxd-disabler{
|
371 |
+
opacity: 0.5;
|
372 |
+
margin-bottom: 5%;
|
373 |
+
}
|
374 |
+
.unbxd-cover{
|
375 |
+
height: 70%;
|
376 |
+
position: absolute;
|
377 |
+
width: 100%;
|
378 |
+
cursor: default;
|
379 |
+
z-index: 999999;
|
380 |
+
}
|
381 |
+
.pad-left-msg{
|
382 |
+
padding-left: 35%;
|
383 |
+
}
|
384 |
+
.width-25{
|
385 |
+
width: 25%;
|
386 |
+
}
|
387 |
+
.width-35{
|
388 |
+
width: 35%;
|
389 |
+
}
|
390 |
+
.width-40{
|
391 |
+
width: 40%;
|
392 |
+
}
|
393 |
+
.pad-left-10{
|
394 |
+
padding-left: 13px;
|
395 |
+
}
|
396 |
+
.pad-btm-0{
|
397 |
+
padding-bottom: 0;
|
398 |
+
}
|
399 |
+
.height-100{
|
400 |
+
height: 100%;
|
401 |
+
}
|
402 |
+
.unbxd-success-msg{
|
403 |
+
color: green;
|
404 |
+
font-weight: bold;
|
405 |
+
font-size: 13px;
|
406 |
+
}
|
407 |
+
.unbxd-error-msg{
|
408 |
+
color: red;
|
409 |
+
font-weight: bold;
|
410 |
+
font-size: 13px;
|
411 |
+
}
|
412 |
+
.unbxd-center-div{
|
413 |
+
margin: 0 auto;
|
414 |
+
width: 50%;
|
415 |
+
text-align: center;
|
416 |
+
}
|
417 |
+
.pad-top-20{
|
418 |
+
padding-top: 20px;
|
419 |
+
}
|
420 |
+
.pad-top-30{
|
421 |
+
padding-top: 30px;
|
422 |
+
}
|
423 |
+
.inner-container-magento .popover, .inner-container-magento .popover-title, .inner-container-magento .popover-content {
|
424 |
+
background: #3c3f40;
|
425 |
+
color: rgb(255, 255, 255);
|
426 |
+
font-family: proxima-nova, Arial, sans-serif;
|
427 |
+
font-size: 16px;
|
428 |
+
font-style: normal;
|
429 |
+
font-variant: normal;
|
430 |
+
font-weight: normal;
|
431 |
+
border: none;
|
432 |
+
|
433 |
+
}
|
434 |
+
.inner-container-magento .popover-content{
|
435 |
+
font-size: 14px;
|
436 |
+
padding-top: 0;
|
437 |
+
}
|
438 |
+
.magento-number-text {
|
439 |
+
width: 109px;
|
440 |
+
}
|
441 |
+
.box-35{
|
442 |
+
width: 35px;
|
443 |
+
height: 35px;
|
444 |
+
}
|
445 |
+
div.chosen-disabled > a.chosen-single > div {
|
446 |
+
display: none;
|
447 |
+
}
|
448 |
+
div.chosen-container-single ,div.chosen-container-single > a.chosen-single {
|
449 |
+
border: 0;
|
450 |
+
background-color: #FFF;
|
451 |
+
}
|
452 |
+
div.chosen-container-single > a.chosen-single > div b {
|
453 |
+
background: url(../img/dropdown-arrow.png) no-repeat 50%!important;
|
454 |
+
width: 28px!important;
|
455 |
+
|
456 |
+
}
|
457 |
+
.bord-right{
|
458 |
+
border-right: 1px solid #dee2e4 !important;
|
459 |
+
}
|
460 |
+
.chosen-disabled{
|
461 |
+
opacity: 1 !important;
|
462 |
+
}
|
463 |
+
.delete-row{
|
464 |
+
float: left;
|
465 |
+
}
|
466 |
+
.width-80{
|
467 |
+
width: 80% !important;
|
468 |
+
}
|
469 |
+
.width-20{
|
470 |
+
width: 20%;
|
471 |
+
}
|
472 |
+
div.cudtom-attr-rows div div.add-row{
|
473 |
+
display: none;
|
474 |
+
}
|
475 |
+
div.cudtom-attr-rows > div:last-child div.add-row{
|
476 |
+
display: block;
|
477 |
+
}
|
478 |
+
.width-38{
|
479 |
+
width: 38%;
|
480 |
+
}
|
481 |
+
.pad-top-5{
|
482 |
+
padding-top: 5px;
|
483 |
+
}
|
484 |
+
.width-64{
|
485 |
+
width: 64%
|
486 |
+
}
|
487 |
+
.width-36{
|
488 |
+
width: 36%
|
489 |
+
}
|
490 |
+
.btn-add-attribute, .btn-add-attribute:hover{
|
491 |
+
background: #3b3e40 url('../img/add-raw-hover.png') no-repeat 97%;
|
492 |
+
}
|
493 |
+
.magento-analytics-tick
|
494 |
+
{
|
495 |
+
background:#45b5c1 url('../img/DONE.png') no-repeat 50%;
|
496 |
+
}
|
497 |
+
.magento-analytics-cross
|
498 |
+
{
|
499 |
+
background: url('../img/red-loading.gif') no-repeat;
|
500 |
+
background-size: 92%;
|
501 |
+
}
|
502 |
+
.unbxd-top-strip{
|
503 |
+
border-top: 2px solid #45b5c1;
|
504 |
+
}
|
505 |
+
.unbxd-green-border{
|
506 |
+
border: 1px solid #47b28e;
|
507 |
+
}
|
508 |
+
.unbxd-green-border{
|
509 |
+
border: 1px solid #db2727;
|
510 |
+
}
|
511 |
+
.magento-analytics-block{
|
512 |
+
border: 1px solid #47b28e
|
513 |
+
}
|
514 |
+
.magento-analytics-block1 {
|
515 |
+
border: 1px solid #db2727;
|
516 |
+
}
|
517 |
+
.word-break{
|
518 |
+
word-wrap:break-word;
|
519 |
+
}
|
520 |
+
.height-75p{
|
521 |
+
height: 95px;
|
522 |
+
}
|
523 |
+
.unbxd-text-center{
|
524 |
+
padding-top: 10px;
|
525 |
+
}
|
526 |
+
.pad-left-15{
|
527 |
+
padding-left: 15px;
|
528 |
+
}
|
529 |
+
.unbxd-text-verticle-center{
|
530 |
+
display: flex;
|
531 |
+
align-items: center;
|
532 |
+
}
|
533 |
+
.background-success{
|
534 |
+
background-color: #47b28e;
|
535 |
+
height: 102px;
|
536 |
+
}
|
537 |
+
.background-success div.magento-text{
|
538 |
+
color: #FFF;
|
539 |
+
}
|
540 |
+
.succes-div{
|
541 |
+
background:#47b28e url('../img/congrats.png') no-repeat 50%;
|
542 |
+
width: 13%;
|
543 |
+
height: 90px;
|
544 |
+
}
|
545 |
+
.pad-10{
|
546 |
+
padding: 10px;
|
547 |
+
}
|
548 |
+
.success-head{
|
549 |
+
font-weight: bold;
|
550 |
+
font-size: 20px;
|
551 |
+
}
|
552 |
+
.magento-landing-block{
|
553 |
+
background-color: rgb(60, 63, 64);
|
554 |
+
}
|
555 |
+
.blue-link-help{
|
556 |
+
color: #45b5c1;
|
557 |
+
cursor: pointer;
|
558 |
+
}
|
559 |
+
.cms-help{
|
560 |
+
padding-bottom: 20px;
|
561 |
+
font-size: 16px;
|
562 |
+
padding-left: 30px;
|
563 |
+
padding-top: 5px;
|
564 |
+
}
|
565 |
+
.hide-over-flow{
|
566 |
+
overflow: hidden;
|
567 |
+
}
|
568 |
+
.width-60{
|
569 |
+
width: 60%;
|
570 |
+
}
|
571 |
+
.unbxd-caps{
|
572 |
+
text-transform: capitalize;
|
573 |
+
}
|
574 |
+
.pad-top-32{
|
575 |
+
padding-top: 32px;
|
576 |
+
}
|
577 |
+
.background-dark-grey{
|
578 |
+
background-color: rgba(210, 216, 216, 1) !important;
|
579 |
+
}
|
580 |
+
.unbxd-border{
|
581 |
+
border: 1px solid #cddbde;
|
582 |
+
}
|
583 |
+
.z99{
|
584 |
+
z-index: 99;
|
585 |
+
}
|
586 |
+
.magento-row-tabs{
|
587 |
+
float:left;
|
588 |
+
background-color: #f3f6f6;
|
589 |
+
padding: 0;
|
590 |
+
}
|
591 |
+
|
592 |
+
ul.magento-conf-tabs li a {
|
593 |
+
width: 25%;
|
594 |
+
padding-left: 0 !important;
|
595 |
+
font-weight: 400;
|
596 |
+
font-size: 16px;
|
597 |
+
border-right: 2px solid #B6BCBD;
|
598 |
+
padding-left: 2% !important;
|
599 |
+
cursor: pointer;
|
600 |
+
}
|
601 |
+
ul.magento-conf-tabs li:last-child > a{
|
602 |
+
border-right: 0;
|
603 |
+
}
|
604 |
+
.magento-head-active{
|
605 |
+
background-color: #FFF !important;
|
606 |
+
}
|
607 |
+
.txt-center{
|
608 |
+
text-align: center;
|
609 |
+
}
|
610 |
+
.height-80{
|
611 |
+
height: 80%;
|
612 |
+
}
|
613 |
+
.unbxd-bold{
|
614 |
+
font-weight: bold;
|
615 |
+
}
|
616 |
+
.help-table-head{
|
617 |
+
background-color: #FFF;
|
618 |
+
color: black;
|
619 |
+
}
|
620 |
+
div#unbxdHelpRows div div {
|
621 |
+
padding-left: 4%;
|
622 |
+
}
|
623 |
+
.border-right-rad{
|
624 |
+
border-radius: 0;
|
625 |
+
border-top-right-radius: 5px;
|
626 |
+
}
|
627 |
+
.unbxd-mar-left-30 {
|
628 |
+
margin-left: 30% !important;
|
629 |
+
}
|
630 |
+
.unbxd-mar-btm-20{
|
631 |
+
margin-bottom: 20px !important;
|
632 |
+
}
|
skin/adminhtml/default/default/unbxd/img/Custom-platform.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/DONE.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/HEXAGON-Only.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/Magento-small.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/Magento.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/X-popup-hover.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/X-popup.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/X-pricing.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add-actv.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add-icon.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add-inactv.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add-raw-hover.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add-raw.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/add.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-2.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-calendar-down.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-calendar-down1.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down-disabled.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down-enabled.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down-white.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down-white1.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down-white2.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-down.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-left-white.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-left.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-mail-developer).png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-right-blue.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-right-gray.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-right-white.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-right.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-disabled.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-enabled.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-red.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-white.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up-white1.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-up.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow-white.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/authenticated.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/back.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/bg.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/big-arrow-gray.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/bigcommerce.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/black-right-small.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/black-right-thick.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/btn-arrow-top.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/btn-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/button-arrow-blue.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/button-arrow-grey.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/button-arrow-red.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/cancel.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/card-image.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/card-image1.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/card-image2.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/card-image3.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/checkmark.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/chosen-sprite.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/close-analytics.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/close.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/color-pic.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/congrats.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/copy-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/copy-white.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/cros.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/cross-2.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/cvv-number.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/delete-raw-hover.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/delete-raw.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/delete-red.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/delete.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/detect.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/down-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/down-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/down-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/dropdown-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/edit-magento.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/edit.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/eye-hover.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/eye.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/favicon.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/fill.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/group-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/help.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/icon-analytics.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/icon-info.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/icon-widget.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/install.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/integration-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/introduction-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/left-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/left-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/level-arrow-active.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/level-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/link-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/loader-16x16.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/loader-24x24.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/loader-32x32.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/loader.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/loader_black.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/lock-image.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/logo-unbxd.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/logo.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/mail-new.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/mail.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/minus.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/nav-highlight-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/not-detected.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/oops.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/or.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/other-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/overview-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/plus.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/question-mark2.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/red-cross.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/red-loading.gif
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/remove.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/right-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/right-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/save.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/search.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/settings.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/shopify.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-down.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-up.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/slider-bg.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/slider-button.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-down.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-up.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-down.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-up.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/spree.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/start-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/step-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/success.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tick-analytics.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tick-green.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tick-pricing.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tick.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tooltip-left-arrow.jpg
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/tooltip.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/up-arrow.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/up-black.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/up-gray.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/user.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/warning.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/x-widget.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/img/x.png
ADDED
Binary file
|
skin/adminhtml/default/default/unbxd/js/app.js
ADDED
@@ -0,0 +1,780 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function($) {
|
2 |
+
|
3 |
+
var baseUrl = _unbxdSkinurl +'unbxd/templates/';
|
4 |
+
site = "",
|
5 |
+
ractiveParent = {},
|
6 |
+
_unbxdObject = {
|
7 |
+
step1 : false,
|
8 |
+
step2 : false,
|
9 |
+
step3 : false,
|
10 |
+
step4 : false,
|
11 |
+
activeStep:{
|
12 |
+
one:true
|
13 |
+
},
|
14 |
+
originalMapping:[],
|
15 |
+
_unbxdSkinurl:_unbxdSkinurl,
|
16 |
+
siteName : site,
|
17 |
+
ractiveAnalytics:{}
|
18 |
+
},
|
19 |
+
unbxdMessages = {
|
20 |
+
authSuccess:"The Unbxd Module has been authenticated. Proceed to Catalog Configuration",
|
21 |
+
uploadSuccess:"Uploaded Catalog Data successfully. Proceed to Analytics integration"
|
22 |
+
},
|
23 |
+
unbxdDimensions = [
|
24 |
+
{
|
25 |
+
"value": "brand",
|
26 |
+
"helpText": "The brand to which a product belongs to"
|
27 |
+
},
|
28 |
+
{
|
29 |
+
"value": "imageUrl",
|
30 |
+
"helpText": "Thumbnail - the URL of the image of a product that needs to be displayed in the recommendation widget, normally the thumnail"
|
31 |
+
},
|
32 |
+
{
|
33 |
+
"value": "title",
|
34 |
+
"helpText": "The title or name of the product e.g 'Blue Nike Shoe' "
|
35 |
+
},
|
36 |
+
{
|
37 |
+
"value": "price",
|
38 |
+
"helpText": "The display price of the product e.g $499"
|
39 |
+
},
|
40 |
+
{
|
41 |
+
"value": "color",
|
42 |
+
"helpText": "The color of the product e.g. 'Green t-shirt' "
|
43 |
+
},
|
44 |
+
{
|
45 |
+
"value": "productUrl",
|
46 |
+
"helpText": "The material the product is made of e.g. 'Cotton trousers' "
|
47 |
+
},
|
48 |
+
{
|
49 |
+
"value": "sellingPrice",
|
50 |
+
"helpText": "The display price of the product e.g $499"
|
51 |
+
},
|
52 |
+
{
|
53 |
+
"value": "size",
|
54 |
+
"helpText": "The size of the product e.g. 'Size 10' shoes"
|
55 |
+
}
|
56 |
+
];
|
57 |
+
|
58 |
+
$.get( baseUrl + 'credentails.html')
|
59 |
+
.then(function( template ){
|
60 |
+
$('#tab1Template').text( template );
|
61 |
+
//load tab2
|
62 |
+
$.get( baseUrl + 'catalog.html')
|
63 |
+
.then(function( template ){
|
64 |
+
$('#tab2Template').text( template );
|
65 |
+
//load tab3
|
66 |
+
$.get( baseUrl + 'analytics.html')
|
67 |
+
.then(function( template ){
|
68 |
+
$('#tab3Template').text( template );
|
69 |
+
//load tab4
|
70 |
+
$.get( baseUrl + 'widgets.html')
|
71 |
+
.then(function( template ){
|
72 |
+
$('#tab4Template').text( template );
|
73 |
+
//load row
|
74 |
+
$.get( baseUrl + 'custom.html')
|
75 |
+
.then(function( template ){
|
76 |
+
$('#rowTemplate').text( template );
|
77 |
+
loadMain();
|
78 |
+
})
|
79 |
+
});
|
80 |
+
});
|
81 |
+
});
|
82 |
+
});
|
83 |
+
|
84 |
+
|
85 |
+
//activate the clicked side nav, remove active from rest
|
86 |
+
var activateLink = function( step ){
|
87 |
+
_unbxdObject.activeStep = {};
|
88 |
+
_unbxdObject.activeStep[step] = true;
|
89 |
+
ractiveParent.update();
|
90 |
+
};
|
91 |
+
|
92 |
+
|
93 |
+
var loadMain = function(){
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
+
var $result = $.get( _unbxdBaseurl + 'unbxd/config/site');
|
98 |
+
$result.then(function( data ){
|
99 |
+
|
100 |
+
ractiveParent = new Ractive({
|
101 |
+
el: 'container',
|
102 |
+
template: '#template',
|
103 |
+
data: { sites: ['a', 'b'],
|
104 |
+
site:data.sites[0].name,
|
105 |
+
_unbxdObject:_unbxdObject
|
106 |
+
}
|
107 |
+
});
|
108 |
+
|
109 |
+
ractiveParent.observe('site', function(newValue, oldValue, keypath, s) {
|
110 |
+
if( !oldValue)
|
111 |
+
return;
|
112 |
+
|
113 |
+
_unbxdObject.catalogData = null;
|
114 |
+
_unbxdObject.originalMapping = [];
|
115 |
+
_unbxdObject.secretKey = "";
|
116 |
+
_unbxdObject.siteKey = "";
|
117 |
+
_unbxdObject.step1 = false;
|
118 |
+
activateLink( "one" );
|
119 |
+
loadCredentailsTab();
|
120 |
+
clearInterval( _unbxdObject.pollingId );
|
121 |
+
|
122 |
+
});
|
123 |
+
|
124 |
+
|
125 |
+
ractiveParent.on({
|
126 |
+
|
127 |
+
showCredentials: function ( event ) {
|
128 |
+
activateLink( "one" );
|
129 |
+
loadCredentailsTab();
|
130 |
+
clearInterval( _unbxdObject.pollingId );
|
131 |
+
},
|
132 |
+
|
133 |
+
showCatalog:function( event ){
|
134 |
+
activateLink( "two" );
|
135 |
+
loadCatalogTab();
|
136 |
+
clearInterval( _unbxdObject.pollingId );
|
137 |
+
},
|
138 |
+
|
139 |
+
showAnalytics:function( event ){
|
140 |
+
activateLink( "three" );
|
141 |
+
loadAnalyticsTab();
|
142 |
+
},
|
143 |
+
|
144 |
+
showWidgets:function( event ){
|
145 |
+
activateLink( "four" );
|
146 |
+
loadWidgetsTab();
|
147 |
+
clearInterval( _unbxdObject.pollingId );
|
148 |
+
}
|
149 |
+
|
150 |
+
});
|
151 |
+
|
152 |
+
site = data.sites[0].name;
|
153 |
+
ractiveParent.set('sites', data.sites);
|
154 |
+
data = data.sites[0];
|
155 |
+
if(data.numDocs && data.numDocs > 0){
|
156 |
+
_unbxdObject.step2 = true;
|
157 |
+
_unbxdObject.products = site.numDocs
|
158 |
+
}
|
159 |
+
|
160 |
+
loadCredentailsTab();
|
161 |
+
updateAllSelect();
|
162 |
+
|
163 |
+
|
164 |
+
})
|
165 |
+
|
166 |
+
|
167 |
+
|
168 |
+
|
169 |
+
|
170 |
+
//credentials view
|
171 |
+
var loadCredentailsTab = function(site_key, secret_key){
|
172 |
+
|
173 |
+
var ractiveCredentials = new Ractive({
|
174 |
+
el: 'innerContainr',
|
175 |
+
template: '#tab1Template',
|
176 |
+
data : {
|
177 |
+
site_key : _unbxdObject.siteKey,
|
178 |
+
secret_key : _unbxdObject.secretKey,
|
179 |
+
step1:_unbxdObject.step1,
|
180 |
+
_unbxdObject:_unbxdObject,
|
181 |
+
btnDisabled:false,
|
182 |
+
errorMsg:null,
|
183 |
+
successMsg:null
|
184 |
+
}
|
185 |
+
});
|
186 |
+
|
187 |
+
site = jQuery("#selectSites").chosen().val();
|
188 |
+
_unbxdObject.siteName = site;
|
189 |
+
|
190 |
+
var $keys = $.get( _unbxdBaseurl + "unbxd/config/keys?site="+site);
|
191 |
+
|
192 |
+
$keys.then(function( data ){
|
193 |
+
if( !data.success) {
|
194 |
+
ractiveCredentials.set({site_key:"", secret_key:"", step1:false})
|
195 |
+
return;
|
196 |
+
}
|
197 |
+
|
198 |
+
_unbxdObject.step1 = true;
|
199 |
+
_unbxdObject.siteKey = data.site_key;
|
200 |
+
_unbxdObject.secretKey = data.secret_key;
|
201 |
+
ractiveCredentials.set({site_key:data.site_key, secret_key:_unbxdObject.secretKey, step1:true})
|
202 |
+
ractiveParent.update();
|
203 |
+
},function( error ){
|
204 |
+
console.log(error);
|
205 |
+
|
206 |
+
})
|
207 |
+
|
208 |
+
|
209 |
+
|
210 |
+
ractiveCredentials.on({
|
211 |
+
//show tool tip
|
212 |
+
showSiteKeyHelp:function(){
|
213 |
+
$('.site-key-help').show();
|
214 |
+
},
|
215 |
+
|
216 |
+
hideSiteKeyHelp:function(){
|
217 |
+
$('.site-key-help').hide();
|
218 |
+
},
|
219 |
+
|
220 |
+
showSecretKeyHelp:function(){
|
221 |
+
$('.secret-key-help').show();
|
222 |
+
},
|
223 |
+
|
224 |
+
hideSecretKeyHelp:function(){
|
225 |
+
$('.secret-key-help').hide();
|
226 |
+
},
|
227 |
+
|
228 |
+
authenticate:function(){
|
229 |
+
var data = {
|
230 |
+
site_key: this.get("site_key"),
|
231 |
+
secret_key:this.get("secret_key")
|
232 |
+
};
|
233 |
+
data = JSON.stringify(data);
|
234 |
+
var self = this;
|
235 |
+
this.set({
|
236 |
+
btnDisabled : true,
|
237 |
+
errorMsg : null,
|
238 |
+
successMsg:null
|
239 |
+
});
|
240 |
+
$.ajax({
|
241 |
+
type:'POST',
|
242 |
+
url:_unbxdBaseurl +'unbxd/config/keys?site='+ site,
|
243 |
+
contentType:"application/json",
|
244 |
+
data:data,
|
245 |
+
success:function( data ){
|
246 |
+
if(!data.success){
|
247 |
+
self.set('errorMsg', data.errors.message);
|
248 |
+
return;
|
249 |
+
}
|
250 |
+
_unbxdObject.step1 = true;
|
251 |
+
self.set({
|
252 |
+
step1 : true,
|
253 |
+
successMsg:unbxdMessages.authSuccess
|
254 |
+
});
|
255 |
+
},
|
256 |
+
error:function(){
|
257 |
+
|
258 |
+
},
|
259 |
+
complete:function(){
|
260 |
+
self.set('btnDisabled', false);
|
261 |
+
}
|
262 |
+
})
|
263 |
+
|
264 |
+
}
|
265 |
+
})
|
266 |
+
|
267 |
+
|
268 |
+
|
269 |
+
setStyles();
|
270 |
+
$(".magento-tooltip").popover({ trigger:'hover' });
|
271 |
+
};
|
272 |
+
|
273 |
+
//catalog view
|
274 |
+
var loadCatalogTab = function(){
|
275 |
+
var mappedAttributes = _unbxdObject.originalMapping, //catalog map first table
|
276 |
+
magentoFields = [ {value:'', disabled:false}],
|
277 |
+
customAttributes = [],
|
278 |
+
dataTypes = [];
|
279 |
+
|
280 |
+
var RactiveCatalog = Ractive.extend({
|
281 |
+
template: '#tab2Template',
|
282 |
+
partials: { item: $('#rowTemplate').text() },
|
283 |
+
|
284 |
+
addItem: function ( description ) {
|
285 |
+
this.push( 'customAttributes', {
|
286 |
+
field_name : '',
|
287 |
+
datatype: '',
|
288 |
+
canRemove:true
|
289 |
+
});
|
290 |
+
},
|
291 |
+
|
292 |
+
init: function ( options ) {
|
293 |
+
var self = this;
|
294 |
+
|
295 |
+
this.on({
|
296 |
+
|
297 |
+
newTodo: function ( event ) {
|
298 |
+
this.addItem();
|
299 |
+
setStyles();
|
300 |
+
}
|
301 |
+
|
302 |
+
});
|
303 |
+
},
|
304 |
+
|
305 |
+
|
306 |
+
});
|
307 |
+
|
308 |
+
var ractiveCatalog = new RactiveCatalog({
|
309 |
+
el: 'innerContainr',
|
310 |
+
data : _unbxdObject.catalogData ||
|
311 |
+
{
|
312 |
+
magentoFields : [{disabled:false, value:"", test:"test"}],
|
313 |
+
mappedAttributes : mappedAttributes,
|
314 |
+
customAttributes : customAttributes,
|
315 |
+
enableEdit : false,
|
316 |
+
dataTypes : dataTypes,
|
317 |
+
saveMapping:'disabled-btn',
|
318 |
+
disableSaveCustomAttr:'disabled-btn',
|
319 |
+
_unbxdObject:_unbxdObject,
|
320 |
+
successMsg:null,
|
321 |
+
errorMsg:null,
|
322 |
+
customAttrSucessMsg:null,
|
323 |
+
customAttrErrorMsg: null,
|
324 |
+
dataErrorMsg:null,
|
325 |
+
dataSuccessMsg:null,
|
326 |
+
disableButton:false
|
327 |
+
},
|
328 |
+
|
329 |
+
});
|
330 |
+
|
331 |
+
$(".magento-tooltip").popover({ trigger:'hover' });
|
332 |
+
|
333 |
+
|
334 |
+
//when user maps a magento attribute, remove it from magento fields
|
335 |
+
ractiveCatalog.observe('mappedAttributes.*.field_name', function(newValue, oldValue, keypath, s) {
|
336 |
+
if( !oldValue && !newValue )
|
337 |
+
this.set('saveMapping', 'disabled-btn');
|
338 |
+
this.set('saveMapping', null);
|
339 |
+
var count = 0,
|
340 |
+
mappedAttributes = this.get('mappedAttributes'),
|
341 |
+
arr = [],
|
342 |
+
magentoFields = this.get("magentoFields"),
|
343 |
+
self = this;
|
344 |
+
|
345 |
+
|
346 |
+
magentoFields.each(function(obj, i){
|
347 |
+
if(obj.value === newValue){
|
348 |
+
obj.disabled = 'unbxd-hide';
|
349 |
+
}
|
350 |
+
if( obj.value === oldValue ){
|
351 |
+
obj.disabled = '';
|
352 |
+
}
|
353 |
+
|
354 |
+
})
|
355 |
+
this.set('magentoFields', magentoFields);
|
356 |
+
ractiveCatalog.update();
|
357 |
+
_unbxdObject.catalogData = ractiveCatalog.data;
|
358 |
+
updateAllSelect();
|
359 |
+
|
360 |
+
});
|
361 |
+
|
362 |
+
ractiveCatalog.observe('customAttributes.*.field_name', function(newValue, oldValue, keypath, s) {
|
363 |
+
if( !newValue && !oldValue )
|
364 |
+
return;
|
365 |
+
this.set('disableSaveCustomAttr', 'disabled-btn');
|
366 |
+
var count = 0,
|
367 |
+
customAttributes = this.get('customAttributes'),
|
368 |
+
self = this,
|
369 |
+
magentoFields = this.get("magentoFields");
|
370 |
+
|
371 |
+
if(customAttributes && customAttributes.length > 0)
|
372 |
+
this.set('disableSaveCustomAttr', null);
|
373 |
+
|
374 |
+
magentoFields.each(function(obj, i){
|
375 |
+
if(obj.value === newValue ){
|
376 |
+
obj.disabled = 'unbxd-hide';
|
377 |
+
}
|
378 |
+
if(obj.value === oldValue)
|
379 |
+
obj.disabled = '';
|
380 |
+
})
|
381 |
+
|
382 |
+
this.set('magentoFields', magentoFields);
|
383 |
+
ractiveCatalog.update();
|
384 |
+
_unbxdObject.catalogData = ractiveCatalog.data;
|
385 |
+
updateAllSelect();
|
386 |
+
});
|
387 |
+
|
388 |
+
ractiveCatalog.observe('customAttributes.*.datatype', function(newValue, oldValue, keypath, s) {
|
389 |
+
|
390 |
+
if( !newValue && !oldValue )
|
391 |
+
return;
|
392 |
+
|
393 |
+
var customAttributes = this.get('customAttributes');
|
394 |
+
|
395 |
+
if(customAttributes && customAttributes.length > 0)
|
396 |
+
this.set('disableSaveCustomAttr', null);
|
397 |
+
});
|
398 |
+
|
399 |
+
if( !_unbxdObject.catalogData ){
|
400 |
+
var $obj = $.get( _unbxdBaseurl + "unbxd/config/fields?site="+site);
|
401 |
+
$obj.then(function( data ){
|
402 |
+
|
403 |
+
var allFields = data.fields,
|
404 |
+
field = null;
|
405 |
+
|
406 |
+
$.each(data.fields, function(a, val){
|
407 |
+
magentoFields.push({ value:val, disabled:false} );
|
408 |
+
});
|
409 |
+
|
410 |
+
$.each(data.mappedFields, function(a, obj){
|
411 |
+
if(obj.featured_field){
|
412 |
+
if(!obj.field_name)
|
413 |
+
obj.field_name = "";
|
414 |
+
mappedAttributes.push(obj );
|
415 |
+
}else{
|
416 |
+
obj.disabled = "disabled";
|
417 |
+
customAttributes.push(obj)
|
418 |
+
}
|
419 |
+
|
420 |
+
magentoFields.each( function(item, j){
|
421 |
+
if(obj.field_name === item.value)
|
422 |
+
item.disabled = 'unbxd-hide';
|
423 |
+
|
424 |
+
});
|
425 |
+
|
426 |
+
field = magentoFields.find(function( item ){
|
427 |
+
return item.value === obj.field_name
|
428 |
+
})
|
429 |
+
|
430 |
+
if(!field)
|
431 |
+
magentoFields.push({value:obj.field_name, disabled:'unbxd-hide'});
|
432 |
+
|
433 |
+
});
|
434 |
+
|
435 |
+
//data = JSON.parse(data);
|
436 |
+
|
437 |
+
_unbxdObject.originalMapping = $.map( mappedAttributes, function(obj){
|
438 |
+
return $.extend({}, obj);
|
439 |
+
})
|
440 |
+
if(customAttributes.length < 1)
|
441 |
+
customAttributes = [{ field_name: '', datatype: '', canRemove:true }];
|
442 |
+
|
443 |
+
|
444 |
+
mappedAttributes.each(function(obj, i){
|
445 |
+
obj.tooltip = unbxdDimensions.filter(
|
446 |
+
function( dimension ){
|
447 |
+
return dimension.value === obj.featured_field;
|
448 |
+
})[0].helpText;
|
449 |
+
});
|
450 |
+
|
451 |
+
ractiveCatalog.set({
|
452 |
+
mappedAttributes: mappedAttributes,
|
453 |
+
magentoFields: magentoFields,
|
454 |
+
customAttributes:customAttributes,
|
455 |
+
dataTypes : data.datatype
|
456 |
+
});
|
457 |
+
|
458 |
+
_unbxdObject.catalogData = ractiveCatalog.data;
|
459 |
+
$("._tooltip").popover({ trigger:'hover' });
|
460 |
+
$('select[name="unbxd-customattr"]').chosen('chosen:updated');
|
461 |
+
$('select[name="unbxd-select"]').prop('disabled', true).trigger("chosen:updated");
|
462 |
+
updateAllSelect();
|
463 |
+
setStyles();
|
464 |
+
ractiveCatalog.update();
|
465 |
+
})
|
466 |
+
}
|
467 |
+
|
468 |
+
|
469 |
+
|
470 |
+
|
471 |
+
|
472 |
+
|
473 |
+
ractiveCatalog.on({
|
474 |
+
|
475 |
+
showDataHelp:function(){
|
476 |
+
$('#dataHelp').toggle();
|
477 |
+
},
|
478 |
+
|
479 |
+
removeRow:function ( event ) {
|
480 |
+
var obj = this.get('customAttributes')[event.index.i];
|
481 |
+
if( !obj.canRemove ){
|
482 |
+
result = window.confirm("Are you sure, you want to delete "+obj.field_name );
|
483 |
+
if(result){
|
484 |
+
$.ajax({
|
485 |
+
url:_unbxdBaseurl + 'unbxd/config/fields?site='+site ,
|
486 |
+
type:'PUT',
|
487 |
+
data:JSON.stringify({ fields:[obj] }),
|
488 |
+
});
|
489 |
+
this.get('customAttributes').splice(event.index.i, 1);
|
490 |
+
}
|
491 |
+
}else{
|
492 |
+
this.get('customAttributes').splice(event.index.i, 1);
|
493 |
+
}
|
494 |
+
|
495 |
+
setStyles();
|
496 |
+
},
|
497 |
+
|
498 |
+
saveMapping:function(event){
|
499 |
+
var mapping = this.get('mappedAttributes'),
|
500 |
+
self = this, data = [];
|
501 |
+
|
502 |
+
this.set( {'saveMapping':'disabled-btn',
|
503 |
+
'successMsg':null,
|
504 |
+
'errorMsg':null
|
505 |
+
});
|
506 |
+
mapping.each(function(obj, i){
|
507 |
+
if(obj.field_name)
|
508 |
+
data.push(obj);
|
509 |
+
})
|
510 |
+
|
511 |
+
saveFields( data ).then(
|
512 |
+
function( data ){
|
513 |
+
if(data.success){
|
514 |
+
self.set({
|
515 |
+
enableEdit: false,
|
516 |
+
saveMapping:'disabled-btn',
|
517 |
+
successMsg:"Saved succesfully",
|
518 |
+
errorMsg:null
|
519 |
+
});
|
520 |
+
}else{
|
521 |
+
for(var key in data.errors)
|
522 |
+
self.set("errorMsg", data.errors[key])
|
523 |
+
}
|
524 |
+
self.set('saveMapping', null);
|
525 |
+
},
|
526 |
+
function( error ){
|
527 |
+
|
528 |
+
})
|
529 |
+
|
530 |
+
},
|
531 |
+
|
532 |
+
saveCustomAttribute : function(){
|
533 |
+
var customMapping = this.get('customAttributes'),
|
534 |
+
self = this,
|
535 |
+
data = [];
|
536 |
+
customMapping.each(function(obj, i){
|
537 |
+
if( obj.field_name )
|
538 |
+
data.push(obj);
|
539 |
+
});
|
540 |
+
|
541 |
+
this.set("disableSaveCustomAttr", "disabled-btn");
|
542 |
+
saveFields( data ).then(
|
543 |
+
function( response ){
|
544 |
+
if(response.success){
|
545 |
+
self.set("customAttrSucessMsg", "Saved succesfully");
|
546 |
+
data.each(function(obj){
|
547 |
+
obj.canRemove = false;
|
548 |
+
})
|
549 |
+
}else{
|
550 |
+
self.set("customAttrErrorMsg", "Some error in saving !");
|
551 |
+
}
|
552 |
+
|
553 |
+
self.set("disableSaveCustomAttr", null);
|
554 |
+
},
|
555 |
+
function( error ){
|
556 |
+
|
557 |
+
});
|
558 |
+
|
559 |
+
},
|
560 |
+
|
561 |
+
showCustomAttribute:function(){
|
562 |
+
updateAllSelect();
|
563 |
+
$(".add-attr").toggle();
|
564 |
+
$(".custom-attributes").toggle();
|
565 |
+
this.set({
|
566 |
+
disableSaveCustomAttr : 'disabled-btn',
|
567 |
+
customAttrSucessMsg : null,
|
568 |
+
customAttrErrorMsg : null
|
569 |
+
});
|
570 |
+
setStyles();
|
571 |
+
},
|
572 |
+
|
573 |
+
enableEdit:function(){
|
574 |
+
this.set({ enableEdit: true,
|
575 |
+
saveMapping:'disabled-btn',
|
576 |
+
successMsg:""
|
577 |
+
});
|
578 |
+
$('select[name="unbxd-select"]').prop('disabled', false).trigger("chosen:updated");
|
579 |
+
},
|
580 |
+
|
581 |
+
disableEdit:function(){
|
582 |
+
|
583 |
+
this.set({ enableEdit: false,
|
584 |
+
saveMapping:'disabled-btn',
|
585 |
+
mappedAttributes : _unbxdObject.originalMapping,
|
586 |
+
successMsg:null,
|
587 |
+
errorMsg:null
|
588 |
+
});
|
589 |
+
|
590 |
+
_unbxdObject.originalMapping = $.map( _unbxdObject.originalMapping, function(obj){
|
591 |
+
return $.extend({}, obj);
|
592 |
+
})
|
593 |
+
|
594 |
+
ractiveCatalog.update();
|
595 |
+
_unbxdObject.catalogData = ractiveCatalog.data;
|
596 |
+
$('select[name="unbxd-select"]').prop('disabled', true).trigger("chosen:updated");
|
597 |
+
},
|
598 |
+
|
599 |
+
uploadData:function(){
|
600 |
+
this.set({
|
601 |
+
dataSuccessMsg:"Uploading data",
|
602 |
+
dataErrorMsg:"",
|
603 |
+
disableButton:true
|
604 |
+
});
|
605 |
+
var self = this;
|
606 |
+
|
607 |
+
$.ajax({
|
608 |
+
|
609 |
+
url:_unbxdBaseurl + "unbxd/config/productsync?site=" +site,
|
610 |
+
type:"GET",
|
611 |
+
success : function(data){
|
612 |
+
|
613 |
+
if(data.success){
|
614 |
+
self.set({
|
615 |
+
dataSuccessMsg:unbxdMessages.uploadSuccess,
|
616 |
+
disableButton:false
|
617 |
+
});
|
618 |
+
_unbxdObject.step2 = true;
|
619 |
+
}else{
|
620 |
+
self.set({
|
621 |
+
dataErrorMsg:data.message,
|
622 |
+
dataSuccessMsg:"",
|
623 |
+
disableButton:false
|
624 |
+
});
|
625 |
+
}
|
626 |
+
ractiveParent.update();
|
627 |
+
},
|
628 |
+
error : function(){
|
629 |
+
self.set({
|
630 |
+
dataErrorMsg : "Some error, please try again"
|
631 |
+
});
|
632 |
+
},
|
633 |
+
complete:function(){
|
634 |
+
self.set({
|
635 |
+
disableButton:false
|
636 |
+
});
|
637 |
+
}
|
638 |
+
|
639 |
+
});
|
640 |
+
|
641 |
+
}
|
642 |
+
|
643 |
+
});
|
644 |
+
|
645 |
+
setStyles();
|
646 |
+
|
647 |
+
};
|
648 |
+
|
649 |
+
//analytics view
|
650 |
+
var loadAnalyticsTab = function(){
|
651 |
+
|
652 |
+
var ractiveAnalytics = new Ractive({
|
653 |
+
el: 'innerContainr',
|
654 |
+
template: '#tab3Template',
|
655 |
+
data:{
|
656 |
+
productClick : _unbxdObject.ractiveAnalytics.CLICKRANK || false,
|
657 |
+
addToCartClick : _unbxdObject.ractiveAnalytics.ADDTOCART || false,
|
658 |
+
productBuysClick : _unbxdObject.ractiveAnalytics.ORDER || false,
|
659 |
+
_unbxdObject:_unbxdObject
|
660 |
+
}
|
661 |
+
});
|
662 |
+
|
663 |
+
_unbxdObject.pollingId = window.setInterval(function(){
|
664 |
+
$.get(_unbxdBaseurl+"unbxd/config/analyticsimpression?site="+site)
|
665 |
+
.then(
|
666 |
+
function(data){
|
667 |
+
if(data.success){
|
668 |
+
data = data.IntegrationDetails[0];
|
669 |
+
ractiveAnalytics.set({
|
670 |
+
productClick:data.CLICKRANK,
|
671 |
+
addToCartClick:data.ADDTOCART,
|
672 |
+
productBuysClick:data.ORDER
|
673 |
+
})
|
674 |
+
_unbxdObject.ractiveAnalytics = data;
|
675 |
+
|
676 |
+
if(data.CLICKRANK && data.ADDTOCART && data.ORDER)
|
677 |
+
clearInterval( _unbxdObject.pollingId );
|
678 |
+
}
|
679 |
+
},
|
680 |
+
function(error){
|
681 |
+
clearInterval( _unbxdObject.pollingId );
|
682 |
+
});
|
683 |
+
}, 3000);
|
684 |
+
|
685 |
+
|
686 |
+
setStyles();
|
687 |
+
|
688 |
+
};
|
689 |
+
|
690 |
+
//widgets view
|
691 |
+
var loadWidgetsTab = function(){
|
692 |
+
|
693 |
+
var ractiveWidgets = new Ractive({
|
694 |
+
el: 'innerContainr',
|
695 |
+
template: '#tab4Template'
|
696 |
+
});
|
697 |
+
|
698 |
+
ractiveWidgets.on({
|
699 |
+
showCMSHelp:function(){
|
700 |
+
$('#cmsHelp').toggle();
|
701 |
+
}
|
702 |
+
});
|
703 |
+
|
704 |
+
setStyles();
|
705 |
+
$(".magento-tooltip").popover({ trigger:'hover' });
|
706 |
+
|
707 |
+
};
|
708 |
+
|
709 |
+
var configureSelect = function(){
|
710 |
+
var chosenObj = $('select[name="unbxd-select"]').chosen();
|
711 |
+
chosenObj.trigger('chosen:updated');
|
712 |
+
};
|
713 |
+
//re render all chosen selects
|
714 |
+
var updateAllSelect = function(){
|
715 |
+
$('select').trigger('chosen:updated');
|
716 |
+
};
|
717 |
+
|
718 |
+
var setStyles = function(){
|
719 |
+
$('.middle-nav-magento').css("height", $('#innerContainr').css("height"));
|
720 |
+
//$('select[name="unbxd-select"]').chosen({})
|
721 |
+
};
|
722 |
+
|
723 |
+
|
724 |
+
var saveFields = function( data ){
|
725 |
+
return $.ajax({
|
726 |
+
data: JSON.stringify({ "fields": data }) ,
|
727 |
+
contentType:'application/json',
|
728 |
+
type:'POST',
|
729 |
+
url: _unbxdBaseurl + 'unbxd/config/fields?site='+site
|
730 |
+
})
|
731 |
+
}
|
732 |
+
|
733 |
+
}
|
734 |
+
|
735 |
+
Ractive.decorators.chosen.type.site = function (node) {
|
736 |
+
return {
|
737 |
+
disable_search_threshold:5
|
738 |
+
}
|
739 |
+
};
|
740 |
+
|
741 |
+
})(jQuery)
|
742 |
+
|
743 |
+
jQuery.noConflict();
|
744 |
+
//hack for prototypejs
|
745 |
+
Array.prototype.map = function(callback, thisArg) {
|
746 |
+
|
747 |
+
var T, A, k;
|
748 |
+
|
749 |
+
if (this == null) {
|
750 |
+
throw new TypeError(" this is null or not defined");
|
751 |
+
}
|
752 |
+
|
753 |
+
var O = Object(this);
|
754 |
+
var len = O.length >>> 0;
|
755 |
+
|
756 |
+
if (typeof callback !== "function") {
|
757 |
+
throw new TypeError(callback + " is not a function");
|
758 |
+
}
|
759 |
+
|
760 |
+
if (arguments.length > 1) {
|
761 |
+
T = thisArg;
|
762 |
+
}
|
763 |
+
|
764 |
+
A = new Array(len);
|
765 |
+
k = 0;
|
766 |
+
while (k < len) {
|
767 |
+
var kValue, mappedValue;
|
768 |
+
if (k in O) {
|
769 |
+
kValue = O[k];
|
770 |
+
mappedValue = callback.call(T, kValue, k, O);
|
771 |
+
A[k] = mappedValue;
|
772 |
+
}
|
773 |
+
k++;
|
774 |
+
}
|
775 |
+
|
776 |
+
return A;
|
777 |
+
};
|
778 |
+
|
779 |
+
|
780 |
+
|
skin/adminhtml/default/default/unbxd/js/lib/bootstrap-tooltip.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
if(typeof jQuery==="undefined"){throw new Error("Bootstrap's JavaScript requires jQuery")}+function(e){"use strict";function n(n){return this.each(function(){var r=e(this);var i=r.data("bs.tooltip");var s=typeof n=="object"&&n;if(!i&&n=="destroy")return;if(!i)r.data("bs.tooltip",i=new t(this,s));if(typeof n=="string")i[n]()})}var t=function(e,t){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null;this.init("tooltip",e,t)};t.VERSION="3.2.0";t.DEFAULTS={animation:true,placement:"top",selector:false,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:false,container:false,viewport:{selector:"body",padding:0}};t.prototype.init=function(t,n,r){this.enabled=true;this.type=t;this.$element=e(n);this.options=this.getOptions(r);this.$viewport=this.options.viewport&&e(this.options.viewport.selector||this.options.viewport);var i=this.options.trigger.split(" ");for(var s=i.length;s--;){var o=i[s];if(o=="click"){this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this))}else if(o!="manual"){var u=o=="hover"?"mouseenter":"focusin";var a=o=="hover"?"mouseleave":"focusout";this.$element.on(u+"."+this.type,this.options.selector,e.proxy(this.enter,this));this.$element.on(a+"."+this.type,this.options.selector,e.proxy(this.leave,this))}}this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()};t.prototype.getDefaults=function(){return t.DEFAULTS};t.prototype.getOptions=function(t){t=e.extend({},this.getDefaults(),this.$element.data(),t);if(t.delay&&typeof t.delay=="number"){t.delay={show:t.delay,hide:t.delay}}return t};t.prototype.getDelegateOptions=function(){var t={};var n=this.getDefaults();this._options&&e.each(this._options,function(e,r){if(n[e]!=r)t[e]=r});return t};t.prototype.enter=function(t){var n=t instanceof this.constructor?t:e(t.currentTarget).data("bs."+this.type);if(!n){n=new this.constructor(t.currentTarget,this.getDelegateOptions());e(t.currentTarget).data("bs."+this.type,n)}clearTimeout(n.timeout);n.hoverState="in";if(!n.options.delay||!n.options.delay.show)return n.show();n.timeout=setTimeout(function(){if(n.hoverState=="in")n.show()},n.options.delay.show)};t.prototype.leave=function(t){var n=t instanceof this.constructor?t:e(t.currentTarget).data("bs."+this.type);if(!n){n=new this.constructor(t.currentTarget,this.getDelegateOptions());e(t.currentTarget).data("bs."+this.type,n)}clearTimeout(n.timeout);n.hoverState="out";if(!n.options.delay||!n.options.delay.hide)return n.hide();n.timeout=setTimeout(function(){if(n.hoverState=="out")n.hide()},n.options.delay.hide)};t.prototype.show=function(){var t=e.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var n=e.contains(document.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!n)return;var r=this;var i=this.tip();var s=this.getUID(this.type);this.setContent();i.attr("id",s);this.$element.attr("aria-describedby",s);if(this.options.animation)i.addClass("fade");var o=typeof this.options.placement=="function"?this.options.placement.call(this,i[0],this.$element[0]):this.options.placement;var u=/\s?auto?\s?/i;var a=u.test(o);if(a)o=o.replace(u,"")||"top";i.detach().css({top:0,left:0,display:"block"}).addClass(o).data("bs."+this.type,this);this.options.container?i.appendTo(this.options.container):i.insertAfter(this.$element);var f=this.getPosition();var l=i[0].offsetWidth;var c=i[0].offsetHeight;if(a){var h=o;var p=this.$element.parent();var d=this.getPosition(p);o=o=="bottom"&&f.top+f.height+c-d.scroll>d.height?"top":o=="top"&&f.top-d.scroll-c<0?"bottom":o=="right"&&f.right+l>d.width?"left":o=="left"&&f.left-l<d.left?"right":o;i.removeClass(h).addClass(o)}var v=this.getCalculatedOffset(o,f,l,c);this.applyPlacement(v,o);var m=function(){r.$element.trigger("shown.bs."+r.type);r.hoverState=null};e.support.transition&&this.$tip.hasClass("fade")?i.one("bsTransitionEnd",m).emulateTransitionEnd(150):m()}};t.prototype.applyPlacement=function(t,n){var r=this.tip();var i=r[0].offsetWidth;var s=r[0].offsetHeight;var o=parseInt(r.css("margin-top"),10);var u=parseInt(r.css("margin-left"),10);if(isNaN(o))o=0;if(isNaN(u))u=0;t.top=t.top+o;t.left=t.left+u;e.offset.setOffset(r[0],e.extend({using:function(e){r.css({top:Math.round(e.top),left:Math.round(e.left)})}},t),0);r.addClass("in");var a=r[0].offsetWidth;var f=r[0].offsetHeight;if(n=="top"&&f!=s){t.top=t.top+s-f}var l=this.getViewportAdjustedDelta(n,t,a,f);if(l.left)t.left+=l.left;else t.top+=l.top;var c=l.left?l.left*2-i+a:l.top*2-s+f;var h=l.left?"left":"top";var p=l.left?"offsetWidth":"offsetHeight";r.offset(t);this.replaceArrow(c,r[0][p],h)};t.prototype.replaceArrow=function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")};t.prototype.setContent=function(){var e=this.tip();var t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t);e.removeClass("fade in top bottom left right")};t.prototype.hide=function(){function i(){if(t.hoverState!="in")n.detach();t.$element.trigger("hidden.bs."+t.type)}var t=this;var n=this.tip();var r=e.Event("hide.bs."+this.type);this.$element.removeAttr("aria-describedby");this.$element.trigger(r);this.$element.show();if(r.isDefaultPrevented())return;n.removeClass("in");e.support.transition&&this.$tip.hasClass("fade")?n.one("bsTransitionEnd",i).emulateTransitionEnd(150):i();this.hoverState=null;return this};t.prototype.fixTitle=function(){var e=this.$element;if(e.attr("title")||typeof e.attr("data-original-title")!="string"){e.attr("data-original-title",e.attr("title")||"").attr("title","")}};t.prototype.hasContent=function(){return this.getTitle()};t.prototype.getPosition=function(t){t=t||this.$element;var n=t[0];var r=n.tagName=="BODY";return e.extend({},typeof n.getBoundingClientRect=="function"?n.getBoundingClientRect():null,{scroll:r?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop(),width:r?e(window).width():t.outerWidth(),height:r?e(window).height():t.outerHeight()},r?{top:0,left:0}:t.offset())};t.prototype.getCalculatedOffset=function(e,t,n,r){return e=="bottom"?{top:t.top+t.height,left:t.left+t.width/2-n/2}:e=="top"?{top:t.top-r,left:t.left+t.width/2-n/2}:e=="left"?{top:t.top+t.height/2-r/2,left:t.left-n}:{top:t.top+t.height/2-r/2,left:t.left+t.width}};t.prototype.getViewportAdjustedDelta=function(e,t,n,r){var i={top:0,left:0};if(!this.$viewport)return i;var s=this.options.viewport&&this.options.viewport.padding||0;var o=this.getPosition(this.$viewport);if(/right|left/.test(e)){var u=t.top-s-o.scroll;var a=t.top+s-o.scroll+r;if(u<o.top){i.top=o.top-u}else if(a>o.top+o.height){i.top=o.top+o.height-a}}else{var f=t.left-s;var l=t.left+s+n;if(f<o.left){i.left=o.left-f}else if(l>o.width){i.left=o.left+o.width-l}}return i};t.prototype.getTitle=function(){var e;var t=this.$element;var n=this.options;e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title);return e};t.prototype.getUID=function(e){do e+=~~(Math.random()*1e6);while(document.getElementById(e));return e};t.prototype.tip=function(){return this.$tip=this.$tip||e(this.options.template)};t.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")};t.prototype.validate=function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}};t.prototype.enable=function(){this.enabled=true};t.prototype.disable=function(){this.enabled=false};t.prototype.toggleEnabled=function(){this.enabled=!this.enabled};t.prototype.toggle=function(t){var n=this;if(t){n=e(t.currentTarget).data("bs."+this.type);if(!n){n=new this.constructor(t.currentTarget,this.getDelegateOptions());e(t.currentTarget).data("bs."+this.type,n)}}n.tip().hasClass("in")?n.leave(n):n.enter(n)};t.prototype.destroy=function(){clearTimeout(this.timeout);this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var r=e.fn.tooltip;e.fn.tooltip=n;e.fn.tooltip.Constructor=t;e.fn.tooltip.noConflict=function(){e.fn.tooltip=r;return this}}(jQuery);+function(e){"use strict";function n(n){return this.each(function(){var r=e(this);var i=r.data("bs.popover");var s=typeof n=="object"&&n;if(!i&&n=="destroy")return;if(!i)r.data("bs.popover",i=new t(this,s));if(typeof n=="string")i[n]()})}var t=function(e,t){this.init("popover",e,t)};if(!e.fn.tooltip)throw new Error("Popover requires tooltip.js");t.VERSION="3.2.0";t.DEFAULTS=e.extend({},e.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'});t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype);t.prototype.constructor=t;t.prototype.getDefaults=function(){return t.DEFAULTS};t.prototype.setContent=function(){var e=this.tip();var t=this.getTitle();var n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t);e.find(".popover-content").empty()[this.options.html?typeof n=="string"?"html":"append":"text"](n);e.removeClass("fade top bottom left right in");if(!e.find(".popover-title").html())e.find(".popover-title").hide()};t.prototype.hasContent=function(){return this.getTitle()||this.getContent()};t.prototype.getContent=function(){var e=this.$element;var t=this.options;return e.attr("data-content")||(typeof t.content=="function"?t.content.call(e[0]):t.content)};t.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};t.prototype.tip=function(){if(!this.$tip)this.$tip=e(this.options.template);return this.$tip};var r=e.fn.popover;e.fn.popover=n;e.fn.popover.Constructor=t;e.fn.popover.noConflict=function(){e.fn.popover=r;return this}}(jQuery)
|
skin/adminhtml/default/default/unbxd/js/lib/chosen.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
/* Chosen v1.1.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
|
2 |
+
!function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b;return a.search_match||a.group_match?a.active_options>0?(b=document.createElement("li"),b.className="group-result",b.innerHTML=a.search_text,this.outerHTML(b)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);
|
skin/adminhtml/default/default/unbxd/js/lib/ractive-chosen.js
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
|
3 |
+
ractive-decorators-chosen
|
4 |
+
=============================================
|
5 |
+
|
6 |
+
Integrate Ractive with chosen
|
7 |
+
|
8 |
+
==========================
|
9 |
+
|
10 |
+
Troubleshooting: If you're using a module system in your app (AMD or
|
11 |
+
something more nodey) then you may need to change the paths below,
|
12 |
+
where it says `require( 'ractive' )` or `define([ 'ractive' ]...)`.
|
13 |
+
|
14 |
+
==========================
|
15 |
+
|
16 |
+
Usage: Include this file on your page below Ractive, e.g:
|
17 |
+
|
18 |
+
<script src='lib/ractive.js'></script>
|
19 |
+
<script src='lib/ractive-decorators-chosen.js'></script>
|
20 |
+
|
21 |
+
Or, if you're using a module loader, require this module:
|
22 |
+
|
23 |
+
// requiring the plugin will 'activate' it - no need to use
|
24 |
+
// the return value
|
25 |
+
require( 'ractive-decorators-chosen' );
|
26 |
+
|
27 |
+
*/
|
28 |
+
|
29 |
+
(function ( global, factory ) {
|
30 |
+
|
31 |
+
'use strict';
|
32 |
+
|
33 |
+
// Common JS (i.e. browserify) environment
|
34 |
+
if ( typeof module !== 'undefined' && module.exports && typeof require === 'function' ) {
|
35 |
+
factory( require( 'ractive' ), require( 'jquery' ) );
|
36 |
+
}
|
37 |
+
|
38 |
+
// AMD?
|
39 |
+
else if ( typeof define === 'function' && define.amd ) {
|
40 |
+
define([ 'ractive', 'jquery' ], factory );
|
41 |
+
}
|
42 |
+
|
43 |
+
// browser global
|
44 |
+
else if ( global.Ractive && global.jQuery) {
|
45 |
+
factory( global.Ractive, global.jQuery );
|
46 |
+
}
|
47 |
+
|
48 |
+
else {
|
49 |
+
throw new Error( 'Could not find Ractive or jQuery! They must be loaded before the ractive-decorators-chosen plugin' );
|
50 |
+
}
|
51 |
+
|
52 |
+
}( typeof window !== 'undefined' ? window : this, function ( Ractive, jQuery ) {
|
53 |
+
|
54 |
+
'use strict';
|
55 |
+
|
56 |
+
var chosenDecorator;
|
57 |
+
var $ = jQuery;
|
58 |
+
|
59 |
+
chosenDecorator = function (node, type) {
|
60 |
+
|
61 |
+
var ractive = node._ractive.root;
|
62 |
+
var setting = false;
|
63 |
+
var observer;
|
64 |
+
|
65 |
+
var options = {};
|
66 |
+
if (type) {
|
67 |
+
if (!chosenDecorator.type.hasOwnProperty(type)) {
|
68 |
+
throw new Error( 'Ractive Chosen type "' + type + '" is not defined!' );
|
69 |
+
}
|
70 |
+
|
71 |
+
options = chosenDecorator.type[type];
|
72 |
+
if (typeof options === 'function') {
|
73 |
+
options = options.call(this, node);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
// Push changes from ractive to chosen
|
78 |
+
if (node._ractive.binding) {
|
79 |
+
observer = ractive.observe(node._ractive.binding.keypath, function (newvalue) {
|
80 |
+
if (!setting) {
|
81 |
+
setting = true;
|
82 |
+
window.setTimeout(function () {
|
83 |
+
if(newvalue === '')
|
84 |
+
$(node).trigger('chosen:updated');
|
85 |
+
|
86 |
+
$(node).change();
|
87 |
+
setting = false;
|
88 |
+
}, 0);
|
89 |
+
}
|
90 |
+
});
|
91 |
+
}
|
92 |
+
|
93 |
+
// Pull changes from chosen to ractive
|
94 |
+
$(node).chosen(options).on('change', function () {
|
95 |
+
if (!setting) {
|
96 |
+
setting = true;
|
97 |
+
ractive.updateModel();
|
98 |
+
setting = false;
|
99 |
+
}
|
100 |
+
});
|
101 |
+
|
102 |
+
return {
|
103 |
+
teardown: function () {
|
104 |
+
$(node).chosen('destroy');
|
105 |
+
|
106 |
+
if (observer) {
|
107 |
+
observer.cancel();
|
108 |
+
}
|
109 |
+
}
|
110 |
+
};
|
111 |
+
};
|
112 |
+
|
113 |
+
chosenDecorator.type = {};
|
114 |
+
|
115 |
+
Ractive.decorators.chosen = chosenDecorator;
|
116 |
+
|
117 |
+
}));
|
skin/adminhtml/default/default/unbxd/js/lib/ractive.js
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
ractive.min.js v0.5.8
|
3 |
+
2014-09-18 - commit 2e726021
|
4 |
+
|
5 |
+
http://ractivejs.org
|
6 |
+
http://twitter.com/RactiveJS
|
7 |
+
|
8 |
+
Released under the MIT License.
|
9 |
+
*/
|
10 |
+
|
11 |
+
!function(a){"use strict";var b=a.Ractive,c=function(){var a={el:void 0,append:!1,template:{v:1,t:[]},"yield":null,preserveWhitespace:!1,sanitize:!1,stripComments:!0,data:{},computed:{},magic:!1,modifyArrays:!0,adapt:[],isolated:!1,twoway:!0,lazy:!1,noIntro:!1,transitionsEnabled:!0,complete:void 0,noCssTransform:!1,debug:!1};return a}(),d={linear:function(a){return a},easeIn:function(a){return Math.pow(a,3)},easeOut:function(a){return Math.pow(a-1,3)+1},easeInOut:function(a){return(a/=.5)<1?.5*Math.pow(a,3):.5*(Math.pow(a-2,3)+2)}},e=[],f=Object.prototype.hasOwnProperty,g=function(){var a=Object.prototype.toString;return function(b){return"[object Array]"===a.call(b)}}(),h=function(){var a=Object.prototype.toString;return function(b){return b&&"[object Object]"===a.call(b)}}(),i=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},j=function(a,b,c,d,e){var f,g,h;return a.push(function(){g=a.interpolate}),h=/^([+-]?[0-9]+\.?(?:[0-9]+)?)(px|em|ex|%|in|cm|mm|pt|pc)$/,f={number:function(a,b){var c;return e(a)&&e(b)?(a=+a,b=+b,c=b-a,c?function(b){return a+b*c}:function(){return a}):null},array:function(a,b){var d,e,f,h;if(!c(a)||!c(b))return null;for(d=[],e=[],h=f=Math.min(a.length,b.length);h--;)e[h]=g(a[h],b[h]);for(h=f;h<a.length;h+=1)d[h]=a[h];for(h=f;h<b.length;h+=1)d[h]=b[h];return function(a){for(var b=f;b--;)d[b]=e[b](a);return d}},object:function(a,c){var e,f,h,i,j;if(!d(a)||!d(c))return null;e=[],i={},h={};for(j in a)b.call(a,j)&&(b.call(c,j)?(e.push(j),h[j]=g(a[j],c[j])):i[j]=a[j]);for(j in c)b.call(c,j)&&!b.call(a,j)&&(i[j]=c[j]);return f=e.length,function(a){for(var b,c=f;c--;)b=e[c],i[b]=h[b](a);return i}}}}(e,f,g,h,i),k=function(){var a;return a="undefined"==typeof document?!1:document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}(),l=function(){function a(a){var b,d,e,f,g,h="";if(!c[a]){for(e=[];h.length<a;)h+=1;for(b=parseInt(h,2),f=function(a){return"1"===a},g=0;b>=g;g+=1){for(d=g.toString(2);d.length<a;)d="0"+d;e[g]=Array.prototype.map.call(d,f)}c[a]=e}return c[a]}var b,c={};return b=function(b){var d,e,f,g,h,i;for(d=b.split("."),(e=c[d.length])||(e=a(d.length)),h=[],f=function(a,b){return a?"*":d[b]},g=e.length;g--;)i=e[g].map(f).join("."),h.hasOwnProperty(i)||(h.push(i),h[i]=!0);return h}}(),m=function(a){function b(d,e,f,g){var h=arguments[4];void 0===h&&(h=!1);var i,j,k=!0;for(j=e.length;j>=0;j--)i=d._subs[e[j]],i&&(k=c(d,i,f,g)&&k);if(d._parent&&k){if(h&&d.component){var l=d.component.name+"."+e[e.length-1];e=a(l),f&&(f.component=d)}b(d._parent,e,f,g)}}function c(a,b,c,d){var e=null,f=!1;c&&(d=[c].concat(d));for(var g=0,h=b.length;h>g;g+=1)b[g].apply(a,d)===!1&&(f=!0);return c&&f&&(e=c.original)&&(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()),!f}var d;return d=function(c,d){var e=arguments[2];if(void 0===e&&(e={}),d){var f=a(d);b(c,f,e.event,e.args,!0)}}}(l),n=function(a,b){var c=a.indexOf(b);-1!==c&&a.splice(c,1)},o=function(){function a(a){setTimeout(a,0)}function b(a,b){return function(){for(var c;c=a.shift();)c(b)}}function c(a,b,d,f){var g;if(b===a)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(b instanceof e)b.then(d,f);else if(!b||"object"!=typeof b&&"function"!=typeof b)d(b);else{try{g=b.then}catch(h){return void f(h)}if("function"==typeof g){var i,j,k;j=function(b){i||(i=!0,c(a,b,d,f))},k=function(a){i||(i=!0,f(a))};try{g.call(b,j,k)}catch(h){if(!i)return f(h),void(i=!0)}}else d(b)}}var d,e,f={},g={},h={};return"function"==typeof o?e=o:(e=function(d){var i,j,k,l,m,n,o=[],p=[],q=f;k=function(c){return function(d){q===f&&(i=d,q=c,j=b(q===g?o:p,i),a(j))}},l=k(g),m=k(h);try{d(l,m)}catch(r){m(r)}return n={then:function(b,d){var g=new e(function(e,h){var i=function(a,b,d){b.push("function"==typeof a?function(b){var d;try{d=a(b),c(g,d,e,h)}catch(f){h(f)}}:d)};i(b,o,e),i(d,p,h),q!==f&&a(j)});return g}},n["catch"]=function(a){return this.then(null,a)},n},e.all=function(a){return new e(function(b,c){var d,e,f,g=[];if(!a.length)return void b(g);for(f=function(e){a[e].then(function(a){g[e]=a,--d||b(g)},c)},d=e=a.length;e--;)f(e)})},e.resolve=function(a){return new e(function(b){b(a)})},e.reject=function(a){return new e(function(b,c){c(a)})}),d=e}(),p=function(){var a=/\[\s*(\*|[0-9]|[1-9][0-9]+)\s*\]/g;return function(b){return(b||"").replace(a,".$1")}}(),q=function(a){do if(void 0!==a.context)return a.context;while(a=a.parent);return""},r=function(a,b){return null===a&&null===b?!0:"object"==typeof a||"object"==typeof b?!1:a===b},s=function(a,b,c){var d;a.push(function(){return d=a.runloop});var e=function(a,b,c,d,e){this.root=a,this.keypath=b,this.priority=e,this.otherInstance=c,this.otherKeypath=d,this.bind(),this.value=this.root.viewmodel.get(this.keypath)};return e.prototype={setValue:function(a){var e=this;return this.updating||this.counterpart&&this.counterpart.updating?void(this.value=a):void(b(a)&&a._ractive&&a._ractive.setting||c(a,this.value)||(this.updating=!0,d.addViewmodel(this.otherInstance.viewmodel),this.otherInstance.viewmodel.set(this.otherKeypath,a),this.value=a,d.scheduleTask(function(){return e.updating=!1})))},bind:function(){this.root.viewmodel.register(this.keypath,this)},rebind:function(a){this.unbind(),this.keypath=a,this.counterpart.otherKeypath=a,this.bind()},unbind:function(){this.root.viewmodel.unregister(this.keypath,this)}},function(a,b,c,d){var f,g,h,i,j,k;f=c+"="+d,h=a.bindings,h[f]||(g=a.instance,i=a.parentFragment.priority,j=new e(b,c,g,d,i),h.push(j),g.twoway&&(k=new e(g,d,b,c,1),h.push(k),j.counterpart=k,k.counterpart=j),h[f]=j)}}(e,g,r),t=function(a,b,c){function d(a,b){var c;if("."===b)return a;if(c=a?a.split("."):[],"../"===b.substr(0,3)){for(;"../"===b.substr(0,3);){if(!c.length)throw new Error(f);c.pop(),b=b.substring(3)}return c.push(b),c.join(".")}return a?a+b.replace(/^\.\//,"."):b.replace(/^\.\/?/,"")}var e,f,g;return f='Could not resolve reference - too many "../" prefixes',g={evaluateWrapped:!0},e=function h(e,f,i){var j,k,l,m,n,o,p,q,r,s;if(f=a(f),"~/"===f.substr(0,2))return f.substring(2);if("."===f.charAt(0))return d(b(i),f);k=f.split(".")[0];do if(j=i.context,j&&(o=!0,n=e.viewmodel.get(j,g),n&&("object"==typeof n||"function"==typeof n)&&k in n))return j+"."+f;while(i=i.parent);if(k in e.data||k in e.viewmodel.computations)return f;if(e._parent&&!e.isolated){if(i=e.component.parentFragment,i.indexRefs&&void 0!==(l=i.indexRefs[f]))return e.component.indexRefBindings[f]=f,void e.viewmodel.set(f,l,!0);if(m=h(e._parent,f,i)){for(p=m.split("."),q=f.split(".");p.length>1&&q.length>1&&p[p.length-1]===q[q.length-1];)p.pop(),q.pop();return r=p.join("."),s=q.join("."),e.viewmodel.set(s,e._parent.viewmodel.get(r),!0),c(e.component,e._parent,r,s),f}}return o?void 0!==e.viewmodel.get(f)?f:void 0:f}}(p,q,s),u=function(a){function b(a){a.detach()}function c(a){a.detachNodes()}function d(a){!a.ready||a.outros.length||a.outroChildren||(a.outrosComplete||(a.parent?a.parent.decrementOutros(a):a.detachNodes(),a.outrosComplete=!0),a.intros.length||a.totalChildren||("function"==typeof a.callback&&a.callback(),a.parent&&a.parent.decrementTotal()))}var e=function(a,b){this.callback=a,this.parent=b,this.intros=[],this.outros=[],this.children=[],this.totalChildren=this.outroChildren=0,this.detachQueue=[],this.outrosComplete=!1,b&&b.addChild(this)};return e.prototype={addChild:function(a){this.children.push(a),this.totalChildren+=1,this.outroChildren+=1},decrementOutros:function(){this.outroChildren-=1,d(this)},decrementTotal:function(){this.totalChildren-=1,d(this)},add:function(a){var b=a.isIntro?this.intros:this.outros;b.push(a)},remove:function(b){var c=b.isIntro?this.intros:this.outros;a(c,b),d(this)},init:function(){this.ready=!0,d(this)},detachNodes:function(){this.detachQueue.forEach(b),this.children.forEach(c)}},e}(n),v=function(a,b,c,d,e,f){function g(){var a,c,d;for(a=0;a<k.viewmodels.length;a+=1)c=k.viewmodels[a],d=c.applyChanges(),d&&b(c.ractive,"change",{args:[d]});for(k.viewmodels.length=0,h(),a=0;a<k.views.length;a+=1)k.views[a].update();for(k.views.length=0,a=0;a<k.tasks.length;a+=1)k.tasks[a]();return k.tasks.length=0,k.viewmodels.length?g():void 0}function h(){var a,b,c,d;for(a=m.length;a--;)b=m[a],b.keypath&&m.splice(a,1),(c=e(b.root,b.ref,b.parentFragment))&&((d||(d=[])).push({item:b,keypath:c}),m.splice(a,1));d&&d.forEach(i)}function i(a){a.item.resolve(a.keypath)}var j,k,l,m=[];return l={start:function(a,b){var c,e;return b&&(c=new d(function(a){return e=a})),k={previousBatch:k,transitionManager:new f(e,k&&k.transitionManager),views:[],tasks:[],viewmodels:[]},a&&k.viewmodels.push(a.viewmodel),c},end:function(){g(),k.transitionManager.init(),k=k.previousBatch},addViewmodel:function(a){k?-1===k.viewmodels.indexOf(a)&&k.viewmodels.push(a):a.applyChanges()},registerTransition:function(a){a._manager=k.transitionManager,k.transitionManager.add(a)},addView:function(a){k.views.push(a)},addUnresolved:function(a){m.push(a)},removeUnresolved:function(a){c(m,a)},detachWhenReady:function(a){k.transitionManager.detachQueue.push(a)},scheduleTask:function(a){k?k.tasks.push(a):a()}},a.runloop=l,j=l}(e,m,n,o,t,u),w=function(){var a=/^\s*[0-9]+\s*$/;return function(b){return a.test(b)?[]:{}}}(),x=function(a,b,c){function d(b,c,d){function e(b){var d,e;b.value=c,b.updating||(e=b.ractive,d=b.keypath,b.updating=!0,a.start(e),e.viewmodel.mark(d),a.end(),b.updating=!1)}var f,g,h,i,j,k;if(f=b.obj,g=b.prop,d&&!d.configurable){if("length"===g)return;throw new Error('Cannot use magic mode with property "'+g+'" - object is not configurable')}d&&(h=d.get,i=d.set),j=h||function(){return c},k=function(a){i&&i(a),c=h?h():a,k._ractiveWrappers.forEach(e)},k._ractiveWrappers=[b],Object.defineProperty(f,g,{get:j,set:k,enumerable:!0,configurable:!0})}var e,f,g;try{Object.defineProperty({},"test",{value:0}),f={filter:function(a,b,d){var e,f,g,h,i;return b?(e=b.split("."),f=e.pop(),g=e.join("."),(h=d.viewmodel.wrapped[g])&&!h.magic?!1:(i=d.get(g),c(i)&&/^[0-9]+$/.test(f)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(a,b,c){return new g(a,b,c)}},g=function(a,b,c){var e,f,g,h;return this.magic=!0,this.ractive=a,this.keypath=c,this.value=b,e=c.split("."),this.prop=e.pop(),f=e.join("."),this.obj=f?a.get(f):a.data,g=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),g&&g.set&&(h=g.set._ractiveWrappers)?void(-1===h.indexOf(this)&&h.push(this)):void d(this,b,g)},g.prototype={get:function(){return this.value},reset:function(b){this.updating||(this.updating=!0,this.obj[this.prop]=b,a.addViewmodel(this.ractive.viewmodel),this.ractive.viewmodel.mark(this.keypath),this.updating=!1)},set:function(a,c){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=b(a),this.updating=!1),this.obj[this.prop][a]=c)},teardown:function(){var a,b,c,d,e;return this.updating?!1:(a=Object.getOwnPropertyDescriptor(this.obj,this.prop),b=a&&a.set,void(b&&(d=b._ractiveWrappers,e=d.indexOf(this),-1!==e&&d.splice(e,1),d.length||(c=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=c))))}}}catch(h){f=!1}return e=f}(v,w,g),y=function(a){return!!a}(x),z={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},A=function(a,b){var c;return c=a?function(a,c){return c&&c!==b.html?document.createElementNS(c,a):document.createElement(a)}:function(a,c){if(c&&c!==b.html)throw"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://docs.ractivejs.org/latest/svg-and-older-browsers for more information";return document.createElement(a)}}(k,z),B=function(){var a="object"==typeof document;return a}(),C=function(a){var b;try{Object.defineProperty({},"test",{value:0}),a&&Object.defineProperty(document.createElement("div"),"test",{value:0}),b=Object.defineProperty}catch(c){b=function(a,b,c){a[b]=c.value}}return b}(B),D=function(a,b,c){var d;try{try{Object.defineProperties({},{test:{value:0}})}catch(e){throw e}c&&Object.defineProperties(a("div"),{test:{value:0}}),d=Object.defineProperties}catch(e){d=function(a,c){var d;for(d in c)c.hasOwnProperty(d)&&b(a,d,c[d])}}return d}(A,C,B),E=function(a){return function(b,c,d){var e;if("string"!=typeof c||!a(d))throw new Error("Bad arguments");if(e=+b.get(c)||0,!a(e))throw new Error("Cannot add to a non-numeric value");return b.set(c,e+d)}}(i),F=function(a){return function(b,c){return a(this,b,void 0===c?1:+c)}}(E),G=function(a){var b=/^\.+/;return function(c){return a(c).replace(b,"")}}(p),H=["o","ms","moz","webkit"],I=function(a){var b;return"undefined"==typeof window?b=null:(!function(a,b,c){var d,e;if(!c.requestAnimationFrame){for(d=0;d<a.length&&!c.requestAnimationFrame;++d)c.requestAnimationFrame=c[a[d]+"RequestAnimationFrame"];c.requestAnimationFrame||(e=c.setTimeout,c.requestAnimationFrame=function(a){var c,d,f;return c=Date.now(),d=Math.max(0,16-(c-b)),f=e(function(){a(c+d)},d),b=c+d,f})}}(a,0,window),b=window.requestAnimationFrame),b}(H),J=function(){var a;return a="undefined"!=typeof window&&window.performance&&"function"==typeof window.performance.now?function(){return window.performance.now()}:function(){return Date.now()}}(),K=function(a,b,c){var d=[],e={tick:function(){var f,g,h;for(h=b(),c.start(),f=0;f<d.length;f+=1)g=d[f],g.tick(h)||d.splice(f--,1);c.end(),d.length?a(e.tick):e.running=!1},add:function(b){d.push(b),e.running||(e.running=!0,a(e.tick))},abort:function(a,b){for(var c,e=d.length;e--;)c=d[e],c.root===b&&c.keypath===a&&c.stop()}};return e}(I,J,v),L=function(){var a,b={};return a="undefined"!=typeof console&&"function"==typeof console.warn&&"function"==typeof console.warn.apply?function(a,c){if(!c){if(b[a])return;b[a]=!0}console.warn(a)}:function(){}}(),M=function(){function a(a){return a.trim?a.trim():a.replace(/^\s+/,"").replace(/\s+$/,"")}function b(a){return a.str}var c,d=/(?:^|\})?\s*([^\{\}]+)\s*\{/g,e=/\/\*.*?\*\//g,f=/((?:(?:\[[^\]+]\])|(?:[^\s\+\>\~:]))+)((?::[^\s\+\>\~]+)?\s*[\s\+\>\~]?)\s*/g,g=/^@media/,h=/\[data-rvcguid="[a-z0-9-]+"]/g;return c=function(c,i){var j,k;return k=function(a){var c,d,e,g,h,j,k,l,m=[];for(c=[];d=f.exec(a);)c.push({str:d[0],base:d[1],modifiers:d[2]});for(g='[data-rvcguid="'+i+'"]',h=c.map(b),l=c.length;l--;)k=h.slice(),e=c[l],k[l]=e.base+g+e.modifiers||"",j=h.slice(),j[l]=g+" "+j[l],m.push(k.join(" "),j.join(" "));return m.join(", ")},j=h.test(c)?c.replace(h,'[data-rvcguid="'+i+'"]'):c.replace(e,"").replace(d,function(b,c){var d,e;return g.test(c)?b:(d=c.split(",").map(a),e=d.map(k).join(", ")+" ",b.replace(c,e))})}}(),N=function(a){function b(a,b,d){var e,f=b.constructor._guid;(e=c(d.css,d,f)||c(a.css,a,f))&&(b.constructor.css=e)}function c(b,c,d){return b?c.noCssTransform?b:a(b,d):void 0}var d={name:"css",extend:b,init:function(){}};return d}(M),O=function(){function a(a,b){return"function"==typeof b&&/_super/.test(a)}var b;return b=function(b,c,d){return d||a(b,c)?function(){var a,d="_super"in this,e=this._super;return this._super=c,a=b.apply(this,arguments),d&&(this._super=e),a}:b}}(),P=function(a){function b(a,b,c){var d=c.data||{},e=f(a.prototype.data);return g(e,d)}function c(a,c,d){c.data=b(a,c,d)}function d(a,c,d){var e=d.data,f=b(a,c,d);return"function"==typeof f&&(f=f.call(c,e)||e),c.data=f||{}}function e(a){var b=this.init(a.constructor,a,a);return b?(a.data=b,!0):void 0}function f(a){if("function"!=typeof a||!Object.keys(a).length)return a;var b={};return h(a,b),g(a,b)}function g(a,b){return"function"==typeof b?k(b,a):"function"==typeof a?j(b,a):i(b,a)}function h(a,b,c){for(var d in a)c&&d in b||(b[d]=a[d])}function i(a,b){return a=a||{},b?(h(b,a,!0),a):a}function j(a,b){return function(c){var d;if(a){d=[];for(var e in a)c&&e in c||d.push(e)}return c=b.call(this,c)||c,d&&d.length&&(c=c||{},d.forEach(function(b){c[b]=a[b]})),c}}function k(b,c){var d;return d="function"!=typeof c?function(a){i(a,c)}:function(b){return c=a(c,function(){},!0),c.call(this,b)||b},a(b,d)}var l,m={name:"data",extend:c,init:d,reset:e};return l=m}(O),Q={missingParser:"Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser",mergeComparisonFail:"Merge operation: comparison failed. Falling back to identity checking",noComponentEventArguments:"Components currently only support simple events - you cannot include arguments. Sorry!",noTemplateForPartial:'Could not find template for partial "{name}"',noNestedPartials:"Partials ({{>{name}}}) cannot contain nested inline partials",evaluationError:'Error evaluating "{uniqueString}": {err}',badArguments:"Bad arguments \"{arguments}\". I'm not allowed to argue unless you've paid.",failedComputation:'Failed to compute "{key}": {err}',missingPlugin:'Missing "{name}" {plugin} plugin. You may need to download a {plugin} via http://docs.ractivejs.org/latest/plugins#{plugin}s',badRadioInputBinding:"A radio input can have two-way binding on its name attribute, or its checked attribute - not both",noRegistryFunctionReturn:'A function was specified for "{name}" {registry}, but no {registry} was returned',defaultElSpecified:"The <{name}/> component has a default `el` property; it has been disregarded",noElementProxyEventWildcards:'Only component proxy-events may contain "*" wildcards, <{element} on-{event}/> is not valid.'},R={TEXT:1,INTERPOLATOR:2,TRIPLE:3,SECTION:4,INVERTED:5,CLOSING:6,ELEMENT:7,PARTIAL:8,COMMENT:9,DELIMCHANGE:10,MUSTACHE:11,TAG:12,ATTRIBUTE:13,CLOSING_TAG:14,COMPONENT:15,NUMBER_LITERAL:20,STRING_LITERAL:21,ARRAY_LITERAL:22,OBJECT_LITERAL:23,BOOLEAN_LITERAL:24,GLOBAL:26,KEY_VALUE_PAIR:27,REFERENCE:30,REFINEMENT:31,MEMBER:32,PREFIX_OPERATOR:33,BRACKETED:34,CONDITIONAL:35,INFIX_OPERATOR:36,INVOCATION:40,SECTION_IF:50,SECTION_UNLESS:51,SECTION_EACH:52,SECTION_WITH:53},S=function(){var a;try{Object.create(null),a=Object.create}catch(b){a=function(){var a=function(){};return function(b,c){var d;return null===b?{}:(a.prototype=b,d=new a,c&&Object.defineProperties(d,c),d)}}()}return a}(),T={expectedExpression:"Expected a JavaScript expression",expectedParen:"Expected closing paren"},U=function(a){var b=/^(?:[+-]?)(?:(?:(?:0|[1-9]\d*)?\.\d+)|(?:(?:0|[1-9]\d*)\.)|(?:0|[1-9]\d*))(?:[eE][+-]?\d+)?/;return function(c){var d;return(d=c.matchPattern(b))?{t:a.NUMBER_LITERAL,v:d}:null}}(R),V=function(a){return function(b){var c=b.remaining();return"true"===c.substr(0,4)?(b.pos+=4,{t:a.BOOLEAN_LITERAL,v:"true"}):"false"===c.substr(0,5)?(b.pos+=5,{t:a.BOOLEAN_LITERAL,v:"false"}):null}}(R),W=function(){var a,b,c;return a=/^(?=.)[^"'\\]+?(?:(?!.)|(?=["'\\]))/,b=/^\\(?:['"\\bfnrt]|0(?![0-9])|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|(?=.)[^ux0-9])/,c=/^\\(?:\r\n|[\u000A\u000D\u2028\u2029])/,function(d){return function(e){var f,g,h,i;for(f=e.pos,g='"',h=!1;!h;)i=e.matchPattern(a)||e.matchPattern(b)||e.matchString(d),i?g+='"'===i?'\\"':"\\'"===i?"'":i:(i=e.matchPattern(c),i?g+="\\u"+("000"+i.charCodeAt(1).toString(16)).slice(-4):h=!0);return g+='"',JSON.parse(g)}}}(),X=function(a){return a('"')}(W),Y=function(a){return a("'")}(W),Z=function(a,b,c){return function(d){var e,f;return e=d.pos,d.matchString('"')?(f=c(d),d.matchString('"')?{t:a.STRING_LITERAL,v:f}:(d.pos=e,null)):d.matchString("'")?(f=b(d),d.matchString("'")?{t:a.STRING_LITERAL,v:f}:(d.pos=e,null)):null}}(R,X,Y),$={name:/^[a-zA-Z_$][a-zA-Z_$0-9]*/},_=function(a,b,c){var d=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;return function(e){var f;return(f=a(e))?d.test(f.v)?f.v:'"'+f.v.replace(/"/g,'\\"')+'"':(f=b(e))?f.v:(f=e.matchPattern(c.name))?f:void 0}}(Z,U,$),ab=function(a,b){return function(c){var d,e,f;return d=c.pos,c.allowWhitespace(),e=b(c),null===e?(c.pos=d,null):(c.allowWhitespace(),c.matchString(":")?(c.allowWhitespace(),f=c.readExpression(),null===f?(c.pos=d,null):{t:a.KEY_VALUE_PAIR,k:e,v:f}):(c.pos=d,null))}}(R,_),bb=function(a){return function b(c){var d,e,f,g;return d=c.pos,f=a(c),null===f?null:(e=[f],c.matchString(",")?(g=b(c),g?e.concat(g):(c.pos=d,null)):e)}}(ab),cb=function(a,b){return function(c){var d,e;return d=c.pos,c.allowWhitespace(),c.matchString("{")?(e=b(c),c.allowWhitespace(),c.matchString("}")?{t:a.OBJECT_LITERAL,m:e}:(c.pos=d,null)):(c.pos=d,null)}}(R,bb),db=function(a){return function b(c){function d(a){f.push(a)}var e,f,g,h;return e=c.pos,c.allowWhitespace(),g=c.readExpression(),null===g?null:(f=[g],c.allowWhitespace(),c.matchString(",")&&(h=b(c),null===h&&c.error(a.expectedExpression),h.forEach(d)),f)}}(T),eb=function(a,b){return function(c){var d,e;return d=c.pos,c.allowWhitespace(),c.matchString("[")?(e=b(c),c.matchString("]")?{t:a.ARRAY_LITERAL,m:e}:(c.pos=d,null)):(c.pos=d,null)}}(R,db),fb=function(a,b,c,d,e){return function(f){var g=a(f)||b(f)||c(f)||d(f)||e(f);return g}}(U,V,Z,cb,eb),gb=function(a,b){var c,d,e,f,g;return c=/^\.[a-zA-Z_$0-9]+/,e=function(a){var b=a.matchPattern(d);return b?"."+b:null},d=/^\[(0|[1-9][0-9]*)\]/,f=/^(?:Array|Date|RegExp|decodeURIComponent|decodeURI|encodeURIComponent|encodeURI|isFinite|isNaN|parseFloat|parseInt|JSON|Math|NaN|undefined|null)$/,g=/^(?:break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|void|while|with)$/,function(d){var h,i,j,k,l,m,n;if(h=d.pos,d.matchString("~/"))i="~/";else for(i="";d.matchString("../");)i+="../";if(i||(k=d.matchString(".")||""),j=d.matchPattern(/^@(?:index|key)/)||d.matchPattern(b.name)||"",g.test(j))return d.pos=h,null;if(!i&&!k&&f.test(j))return{t:a.GLOBAL,v:j};if(l=(i||k)+j,!l)return null;for(;m=d.matchPattern(c)||e(d);)l+=m;return d.matchString("(")&&(n=l.lastIndexOf("."),-1!==n?(l=l.substr(0,n),d.pos=h+l.length):d.pos-=1),{t:a.REFERENCE,n:l.replace(/^this\./,"./").replace(/^this$/,".")}}}(R,$),hb=function(a,b){return function(c){var d,e;return d=c.pos,c.matchString("(")?(c.allowWhitespace(),e=c.readExpression(),e||c.error(b.expectedExpression),c.allowWhitespace(),c.matchString(")")||c.error(b.expectedParen),{t:a.BRACKETED,x:e}):null}}(R,T),ib=function(a,b,c){return function(d){return a(d)||b(d)||c(d)}}(fb,gb,hb),jb=function(a,b,c){return function(d){var e,f,g;if(e=d.pos,d.allowWhitespace(),d.matchString(".")){if(d.allowWhitespace(),f=d.matchPattern(c.name))return{t:a.REFINEMENT,n:f};d.error("Expected a property name")}return d.matchString("[")?(d.allowWhitespace(),g=d.readExpression(),g||d.error(b.expectedExpression),d.allowWhitespace(),d.matchString("]")||d.error("Expected ']'"),{t:a.REFINEMENT,x:g}):null}}(R,T,$),kb=function(a,b,c,d,e){return function(f){var g,h,i,j;if(h=b(f),!h)return null;for(;h;)if(g=f.pos,i=d(f))h={t:a.MEMBER,x:h,r:i};else{if(!f.matchString("("))break;f.allowWhitespace(),j=c(f),f.allowWhitespace(),f.matchString(")")||f.error(e.expectedParen),h={t:a.INVOCATION,x:h},j&&(h.o=j)}return h}}(R,ib,db,jb,T),lb=function(a,b,c){var d,e;return e=function(c,d){return function(e){var f;return(f=d(e))?f:e.matchString(c)?(e.allowWhitespace(),f=e.readExpression(),f||e.error(b.expectedExpression),{s:c,o:f,t:a.PREFIX_OPERATOR}):null}},function(){var a,b,f,g,h;for(g="! ~ + - typeof".split(" "),h=c,a=0,b=g.length;b>a;a+=1)f=e(g[a],h),h=f;d=h}(),d}(R,T,kb),mb=function(a,b){var c,d;return d=function(b,c){return function(d){var e,f,g;if(f=c(d),!f)return null;for(;;){if(e=d.pos,d.allowWhitespace(),!d.matchString(b))return d.pos=e,f;if("in"===b&&/[a-zA-Z_$0-9]/.test(d.remaining().charAt(0)))return d.pos=e,f;if(d.allowWhitespace(),g=c(d),!g)return d.pos=e,f;f={t:a.INFIX_OPERATOR,s:b,o:[f,g]}}}},function(){var a,e,f,g,h;for(g="* / % + - << >> >>> < <= > >= in instanceof == != === !== & ^ | && ||".split(" "),h=b,a=0,e=g.length;e>a;a+=1)f=d(g[a],h),h=f;c=h}(),c}(R,lb),nb=function(a,b,c){return function(d){var e,f,g,h;return(f=b(d))?(e=d.pos,d.allowWhitespace(),d.matchString("?")?(d.allowWhitespace(),g=d.readExpression(),g||d.error(c.expectedExpression),d.allowWhitespace(),d.matchString(":")||d.error('Expected ":"'),d.allowWhitespace(),h=d.readExpression(),h||d.error(c.expectedExpression),{t:a.CONDITIONAL,o:[f,g,h]}):(d.pos=e,f)):null}}(R,mb,T),ob=function(a,b){function c(a){return JSON.stringify(String(a))}function d(c,e){var f,g;if(c.t===a.REFERENCE&&-1===e.indexOf(c.n)&&e.unshift(c.n),g=c.o||c.m)if(b(g))d(g,e);else for(f=g.length;f--;)d(g[f],e);c.x&&d(c.x,e),c.r&&d(c.r,e),c.v&&d(c.v,e)}function e(b,d,f){var g=function(a){return e(b,a,f)};switch(d.t){case a.BOOLEAN_LITERAL:case a.GLOBAL:case a.NUMBER_LITERAL:return d.v;case a.STRING_LITERAL:return c(d.v);case a.ARRAY_LITERAL:return"["+(d.m?d.m.map(g).join(","):"")+"]";case a.OBJECT_LITERAL:return"{"+(d.m?d.m.map(g).join(","):"")+"}";case a.KEY_VALUE_PAIR:return d.k+":"+e(b,d.v,f);case a.PREFIX_OPERATOR:return("typeof"===d.s?"typeof ":d.s)+e(b,d.o,f);case a.INFIX_OPERATOR:return e(b,d.o[0],f)+("in"===d.s.substr(0,2)?" "+d.s+" ":d.s)+e(b,d.o[1],f);case a.INVOCATION:return e(b,d.x,f)+"("+(d.o?d.o.map(g).join(","):"")+")";case a.BRACKETED:return"("+e(b,d.x,f)+")";case a.MEMBER:return e(b,d.x,f)+e(b,d.r,f);case a.REFINEMENT:return d.n?"."+d.n:"["+e(b,d.x,f)+"]";case a.CONDITIONAL:return e(b,d.o[0],f)+"?"+e(b,d.o[1],f)+":"+e(b,d.o[2],f);case a.REFERENCE:return"_"+f.indexOf(d.n);default:b.error("Expected legal JavaScript")}}var f;return f=function(a){var b,c=[];return d(a,c),b={r:c,s:e(this,a,c)}}}(R,h),pb=function(a,b,c,d,e){var f,g,h=/^\s+/;return g=function(a){this.name="ParseError",this.message=a;try{throw new Error(a)}catch(b){this.stack=b.stack}},g.prototype=Error.prototype,f=function(a,b){var c,d,e=0;for(this.str=a,this.options=b||{},this.pos=0,this.lines=this.str.split("\n"),this.lineEnds=this.lines.map(function(a){var b=e+a.length+1;return e=b,b},0),this.init&&this.init(a,b),c=[];this.pos<this.str.length&&(d=this.read());)c.push(d);this.leftover=this.remaining(),this.result=this.postProcess?this.postProcess(c,b):c},f.prototype={read:function(a){var b,c,d,e;for(a||(a=this.converters),b=this.pos,d=a.length,c=0;d>c;c+=1)if(this.pos=b,e=a[c](this))return e;return null},readExpression:function(){return d(this)},flattenExpression:e,getLinePos:function(a){for(var b,c=0,d=0;a>=this.lineEnds[c];)d=this.lineEnds[c],c+=1;return b=a-d,[c+1,b+1]},error:function(a){var b,c,d,e,f,h;throw b=this.getLinePos(this.pos),c=b[0],d=b[1],e=this.lines[b[0]-1],f=e+"\n"+new Array(b[1]).join(" ")+"^----",h=new g(a+" at line "+c+" character "+d+":\n"+f),h.line=b[0],h.character=b[1],h.shortMessage=a,h},matchString:function(a){return this.str.substr(this.pos,a.length)===a?(this.pos+=a.length,a):void 0},matchPattern:function(a){var b;return(b=a.exec(this.remaining()))?(this.pos+=b[0].length,b[1]||b[0]):void 0},allowWhitespace:function(){this.matchPattern(h)},remaining:function(){return this.str.substring(this.pos)},nextChar:function(){return this.str.charAt(this.pos)}},f.extend=function(a){var d,e,g=this;d=function(a,b){f.call(this,a,b)},d.prototype=b(g.prototype);for(e in a)c.call(a,e)&&(d.prototype[e]=a[e]);return d.extend=f.extend,d},a.Parser=f,f}(e,S,f,nb,ob),qb=function(){var a=/^[^\s=]+/,b=/^\s+/;return function(c){var d,e,f;return c.matchString("=")?(d=c.pos,c.allowWhitespace(),(e=c.matchPattern(a))?c.matchPattern(b)?(f=c.matchPattern(a))?(c.allowWhitespace(),c.matchString("=")?[e,f]:(c.pos=d,null)):(c.pos=d,null):null:(c.pos=d,null)):null}}(),rb=[{delimiters:"delimiters",isTriple:!1,isStatic:!1},{delimiters:"tripleDelimiters",isTriple:!0,isStatic:!1},{delimiters:"staticDelimiters",isTriple:!1,isStatic:!0},{delimiters:"staticTripleDelimiters",isTriple:!0,isStatic:!0}],sb=function(a){var b={"#":a.SECTION,"^":a.INVERTED,"/":a.CLOSING,">":a.PARTIAL,"!":a.COMMENT,"&":a.TRIPLE};return function(a){var c=b[a.str.charAt(a.pos)];return c?(a.pos+=1,c):null}}(R),tb=function(a){return{"if":a.SECTION_IF,unless:a.SECTION_UNLESS,"with":a.SECTION_WITH,each:a.SECTION_EACH}}(R),ub=null,vb=function(a,b,c){function d(b,c,d){var f;if(c){for(;c.t===a.BRACKETED&&c.x;)c=c.x;return c.t===a.REFERENCE?d.r=c.n:c.t===a.NUMBER_LITERAL&&i.test(c.v)?d.r=c.v:(f=e(b,c))?d.rx=f:d.x=b.flattenExpression(c),d}}function e(b,c){for(var d,e=[];c.t===a.MEMBER&&c.r.t===a.REFINEMENT;)d=c.r,e.unshift(d.x?d.x.t===a.REFERENCE?d.x:b.flattenExpression(d.x):d.n),c=c.x;return c.t!==a.REFERENCE?null:{r:c.n,m:e}}var f,g,h=/^\s*:\s*([a-zA-Z_$][a-zA-Z_$0-9]*)/,i=/^[0-9][1-9]*$/,j=new RegExp("^("+Object.keys(c).join("|")+")\\b");return g=/^[a-zA-Z$_0-9]+(?:(\.[a-zA-Z$_0-9]+)|(\[[a-zA-Z$_0-9]+\]))*$/,f=function(c,e){var f,i,k,l,m,n,o,p,q,r;if(f=c.pos,k={},r=c[e.delimiters],e.isStatic&&(k.s=!0),e.isTriple)k.t=a.TRIPLE;else{if("!"===c.remaining()[0]){try{n=c.readExpression(),c.allowWhitespace(),c.remaining().indexOf(r[1])?n=null:k.t=a.INTERPOLATOR}catch(s){}if(!n)return q=c.remaining().indexOf(r[1]),~q?c.pos+=q:c.error("Expected closing delimiter ('"+r[1]+"')"),{t:a.COMMENT}}if(!n)if(l=b(c),k.t=l||a.INTERPOLATOR,l===a.SECTION)(m=c.matchPattern(j))&&(k.n=m),c.allowWhitespace();else if((l===a.COMMENT||l===a.CLOSING)&&(p=c.remaining(),q=p.indexOf(r[1]),-1!==q))return k.r=p.substr(0,q).split(" ")[0],c.pos+=q,k}if(!n){c.allowWhitespace(),n=c.readExpression();var t;if(k.t===a.PARTIAL&&n&&(t=c.readExpression())&&(k={contextPartialExpression:n},n=t),p=c.remaining(),p.substr(0,r[1].length)!==r[1]&&":"!==p.charAt(0)){if(i=c.pos,c.pos=f,p=c.remaining(),q=p.indexOf(r[1]),-1!==q)return k.r=p.substr(0,q).trim(),g.test(k.r)||c.error("Expected a legal Mustache reference"),c.pos+=q,k;c.pos=i}}return d(c,n,k),k.contextPartialExpression&&(k.contextPartialExpression=[d(c,k.contextPartialExpression,{t:a.PARTIAL})]),(o=c.matchPattern(h))&&(k.i=o),k}}(R,sb,tb,ub),wb=function(a,b,c,d,e){function f(a){var b;return a.interpolate[a.inside]===!1?null:(b=c.slice().sort(function(b,c){return a[c.delimiters][0].length-a[b.delimiters][0].length}),function d(c){return c?g(a,c)||d(b.shift()):null}(b.shift()))}function g(c,f){var g,i,j,l,n,o,p,q,r;if(g=c.pos,j=c[f.delimiters],!c.matchString(j[0]))return null;if(i=b(c))return c.matchString(j[1])?(c[f.delimiters]=i,m):null;if(c.allowWhitespace(),i=d(c,f),null===i)return c.pos=g,null;if(c.allowWhitespace(),c.matchString(j[1])||c.error("Expected closing delimiter '"+j[1]+"' after reference"),i.t===a.COMMENT&&(i.exclude=!0),i.t===a.CLOSING&&(c.sectionDepth-=1,c.sectionDepth<0&&(c.pos=g,c.error("Attempted to close a section that wasn't open"))),i.contextPartialExpression)i.f=i.contextPartialExpression,i.t=a.SECTION,i.n="with",delete i.contextPartialExpression;else if(k(i)){for(c.sectionDepth+=1,l=[],p=l,n=i.n;q=c.read();){if(q.t===a.CLOSING){n&&q.r!==n&&c.error("Expected {{/"+n+"}}");break}if(q.t===a.INTERPOLATOR&&"else"===q.r)switch(i.n){case"unless":c.error("{{else}} not allowed in {{#unless}}");break;case"with":c.error("{{else}} not allowed in {{#with}}");break;default:p=o=[];continue}p.push(q)}l.length&&(i.f=l,!i.i&&"each"===i.n&&(r=h(i.f))&&(i.i=r)),o&&o.length&&(i.l=o)}return c.includeLinePositions&&(i.p=c.getLinePos(g)),i.n?i.n=e[i.n]:i.t===a.INVERTED&&(i.t=a.SECTION,i.n=a.SECTION_UNLESS),i}function h(b){var c,d,e,f;if(b)for(c=b.length;c--;){if(d=b[c],d.t===a.ELEMENT){if(e=h(d.o&&d.o.d)||h(d.t0&&d.t0.d)||h(d.t1&&d.t1.d)||h(d.t2&&d.t2.d)||h(d.f))return e;for(f in d.v)if(d.v.hasOwnProperty(f)&&d.v[f].d&&(e=h(d.v[f].d)))return e;for(f in d.a)if(d.a.hasOwnProperty(f)&&(e=h(d.a[f])))return e}if(d.t===a.INTERPOLATOR||d.t===a.TRIPLE||d.t===a.SECTION){if(d.r&&n.test(d.r))return d.r;if(d.x&&(e=i(d.x)))return e;if(d.rx&&(e=j(d.rx)))return e}}}function i(a){var b;for(b=a.r.length;b--;)if(n.test(a.r[b]))return a.r[b]}function j(b){var c,d,e;for(c=b.m.length;c--;){if(e=b.m[c],e.r&&(d=i(e)))return d;if(e.t===a.REFERENCE&&n.test(e.n))return e.n}}function k(b){return b.t===a.SECTION||b.t===a.INVERTED}var l,m={t:a.DELIMCHANGE,exclude:!0},n=/^@(?:index|key)$/;return l=f}(R,qb,rb,vb,tb),xb=function(a){var b="<!--",c="-->";return function(d){var e,f,g,h,i;return e=d.pos,d.matchString(b)?(g=d.remaining(),h=g.indexOf(c),-1===h&&d.error("Illegal HTML - expected closing comment sequence ('-->')"),f=g.substr(0,h),d.pos+=h+3,i={t:a.COMMENT,c:f},d.includeLinePositions&&(i.p=d.getLinePos(e)),i):null
|
12 |
+
}}(R),yb=function(){var a=/^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i;return a}(),zb=function(a,b){var c,d,e;for(c=b.length;c--;){if(d=a.indexOf(b[c]),!d)return 0;-1!==d&&(!e||e>d)&&(e=d)}return e||-1},Ab=function(a){return function(b){var c,d,e,f;return d=b.remaining(),f=b.inside?"</"+b.inside:"<",b.inside&&!b.interpolate[b.inside]?c=d.indexOf(f):(e=[f,b.delimiters[0],b.tripleDelimiters[0],b.staticDelimiters[0],b.staticTripleDelimiters[0]],b.inAttribute===!0?e.push('"',"'","=",">","`"):b.inAttribute&&e.push(b.inAttribute),c=a(d,e)),c?(-1===c&&(c=d.length),b.pos+=c,d.substr(0,c)):null}}(zb),Bb=function(a){var b=/^([a-zA-Z]{1,}:?[a-zA-Z0-9\-]*)\s*\>/;return function(c){var d;return c.matchString("</")?(d=c.matchPattern(b))?{t:a.CLOSING_TAG,e:d}:(c.pos-=2,void c.error("Illegal closing tag")):null}}(R),Cb=function(){function a(a){return a?10===a?32:128>a?a:159>=a?d[a-128]:55296>a?a:57343>=a?65533:65535>=a?a:65533:65533}var b,c,d,e;return c={quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,"int":8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},d=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],e=new RegExp("&(#?(?:x[\\w\\d]+|\\d+|"+Object.keys(c).join("|")+"));?","g"),b=function(b){return b.replace(e,function(b,d){var e;return e="#"!==d[0]?c[d]:"x"===d[1]?parseInt(d.substring(2),16):parseInt(d.substring(1),10),e?String.fromCharCode(a(e)):b})}}(ub),Db=function(a,b,c){function d(a){var b,c,d;return a.allowWhitespace(),(c=a.matchPattern(k))?(b={name:c},d=e(a),d&&(b.value=d),b):null}function e(a){var b,d,e,f;return b=a.pos,a.allowWhitespace(),a.matchString("=")?(a.allowWhitespace(),d=a.pos,e=a.sectionDepth,f=h(a,"'")||h(a,'"')||g(a),a.sectionDepth!==e&&(a.pos=d,a.error("An attribute value must contain as many opening section tags as closing section tags")),null===f?(a.pos=b,null):f.length?1===f.length&&"string"==typeof f[0]?c(f[0]):f:null):(a.pos=b,null)}function f(b){var c,d,e,f,g;return c=b.pos,(d=b.matchPattern(l))?(e=d,f=[b.delimiters[0],b.tripleDelimiters[0],b.staticDelimiters[0],b.staticTripleDelimiters[0]],-1!==(g=a(e,f))&&(d=d.substr(0,g),b.pos=c+d.length),d):null}function g(a){var c,d;for(a.inAttribute=!0,c=[],d=b(a)||f(a);null!==d;)c.push(d),d=b(a)||f(a);return c.length?(a.inAttribute=!1,c):null}function h(a,c){var d,e,f;if(d=a.pos,!a.matchString(c))return null;for(a.inAttribute=c,e=[],f=b(a)||i(a,c);null!==f;)e.push(f),f=b(a)||i(a,c);return a.matchString(c)?(a.inAttribute=!1,e):(a.pos=d,null)}function i(b,c){var d,e,f,g;return d=b.pos,f=b.remaining(),g=[c,b.delimiters[0],b.tripleDelimiters[0],b.staticDelimiters[0],b.staticTripleDelimiters[0]],e=a(f,g),-1===e&&b.error("Quoted attribute value must have a closing quote"),e?(b.pos+=e,f.substr(0,e)):null}var j,k=/^[^\s"'>\/=]+/,l=/^[^\s"'=<>`]+/;return j=d}(zb,wb,Cb),Eb=function(a,b,c){function d(a){var b,d,e;return a.allowWhitespace(),(b=c(a))?(e={key:b},a.allowWhitespace(),a.matchString(":")?(a.allowWhitespace(),(d=a.read())?(e.value=d.v,e):null):null):null}var e,f,g,h,i,j,k;return f={"true":!0,"false":!1,undefined:void 0,"null":null},g=new RegExp("^(?:"+Object.keys(f).join("|")+")"),h=/^(?:[+-]?)(?:(?:(?:0|[1-9]\d*)?\.\d+)|(?:(?:0|[1-9]\d*)\.)|(?:0|[1-9]\d*))(?:[eE][+-]?\d+)?/,i=/\$\{([^\}]+)\}/g,j=/^\$\{([^\}]+)\}/,k=/^\s*$/,e=a.extend({init:function(a,b){this.values=b.values,this.allowWhitespace()},postProcess:function(a){return 1===a.length&&k.test(this.leftover)?{value:a[0].v}:null},converters:[function(a){var b;return a.values?(b=a.matchPattern(j),b&&a.values.hasOwnProperty(b)?{v:a.values[b]}:void 0):null},function(a){var b;return(b=a.matchPattern(g))?{v:f[b]}:void 0},function(a){var b;return(b=a.matchPattern(h))?{v:+b}:void 0},function(a){var c,d=b(a);return d&&(c=a.values)?{v:d.v.replace(i,function(a,b){return b in c?c[b]:b})}:d},function(a){var b,c;if(!a.matchString("{"))return null;if(b={},a.allowWhitespace(),a.matchString("}"))return{v:b};for(;c=d(a);){if(b[c.key]=c.value,a.allowWhitespace(),a.matchString("}"))return{v:b};if(!a.matchString(","))return null}return null},function(a){var b,c;if(!a.matchString("["))return null;if(b=[],a.allowWhitespace(),a.matchString("]"))return{v:b};for(;c=a.read();){if(b.push(c.v),a.allowWhitespace(),a.matchString("]"))return{v:b};if(!a.matchString(","))return null;a.allowWhitespace()}return null}]}),function(a,b){var c=new e(a,{values:b});return c.result}}(pb,Z,_),Fb=function(a,b,c,d){var e,f=/^([a-zA-Z_$][a-zA-Z_$0-9]*)\(/;return e=a.extend({converters:[b]}),function(a){var b,g,h,i,j,k,l,m,n;if("string"==typeof a){if(g=f.exec(a))return b={m:g[1]},i="["+a.slice(b.m.length+1,-1)+"]",h=new e(i),b.a=c(h.result[0]),b;if(-1===a.indexOf(":"))return a.trim();a=[a]}for(b={},l=[],m=[];a.length;)if(j=a.shift(),"string"==typeof j){if(k=j.indexOf(":"),-1!==k){k&&l.push(j.substr(0,k)),j.length>k+1&&(m[0]=j.substring(k+1));break}l.push(j)}else l.push(j);return m=m.concat(a),m.length||"string"!=typeof l?(b={n:1===l.length&&"string"==typeof l[0]?l[0]:l},1===m.length&&"string"==typeof m[0]?(n=d("["+m[0]+"]"),b.a=n?n.value:m[0].trim()):b.d=m):b=l,b}}(pb,nb,ob,Eb),Gb=function(a,b,c,d,e,f,g,h){function i(c){var d,e,f,i,k,m,u,v,w,x,y;if(d=c.pos,c.inside)return null;if(!c.matchString("<"))return null;if("/"===c.nextChar())return null;if(e={t:a.ELEMENT},c.includeLinePositions&&(e.p=c.getLinePos(d)),c.matchString("!")&&(e.y=1),e.e=c.matchPattern(n),!e.e)return null;for(o.test(c.nextChar())||c.error("Illegal tag name"),m=function(a,b){var d=b.n||b;r.test(d)&&(c.pos-=d.length,c.error("Cannot use reserved event names (change, reset, teardown, update)")),e.v[a]=b};u=g(c);)(i=s[u.name])?e[i]=h(u.value):(k=q.exec(u.name))?(e.v||(e.v={}),v=h(u.value),m(k[1],v)):c.sanitizeEventAttributes&&p.test(u.name)||(e.a||(e.a={}),e.a[u.name]=u.value||0);if(c.allowWhitespace(),c.matchString("/")&&(w=!0),!c.matchString(">"))return null;if(f=e.e.toLowerCase(),!w&&!b.test(e.e)){for(("script"===f||"style"===f)&&(c.inside=f),x=[];j(f,c.remaining())&&(y=c.read(l))&&y.t!==a.CLOSING&&y.t!==a.CLOSING_TAG;)x.push(y);x.length&&(e.f=x)}return c.inside=null,c.sanitizeElements&&-1!==c.sanitizeElements.indexOf(f)?t:e}function j(a,b){var c,d;return c=/^<([a-zA-Z][a-zA-Z0-9]*)/.exec(b),d=m[a],c&&d?!~d.indexOf(c[1].toLowerCase()):!0}var k,l,m,n=/^[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/,o=/^[\s\n\/>]/,p=/^on/,q=/^on-([a-zA-Z\\*\\.$_][a-zA-Z\\*\\.$_0-9\-]+)$/,r=/^(?:change|reset|teardown|update)$/,s={"intro-outro":"t0",intro:"t1",outro:"t2",decorator:"o"},t={exclude:!0};return l=[c,d,i,e,f],m={li:["li"],dt:["dt","dd"],dd:["dt","dd"],p:"address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul".split(" "),rt:["rt","rp"],rp:["rt","rp"],optgroup:["optgroup"],option:["option","optgroup"],thead:["tbody","tfoot"],tbody:["tbody","tfoot"],tfoot:["tbody"],tr:["tr","tbody"],td:["td","th","tr"],th:["td","th","tr"]},k=i}(R,yb,wb,xb,Ab,Bb,Db,Fb),Hb=function(){var a=/^[ \t\f\r\n]+/,b=/[ \t\f\r\n]+$/;return function(c,d,e){var f;d&&(f=c[0],"string"==typeof f&&(f=f.replace(a,""),f?c[0]=f:c.shift())),e&&(f=c[c.length-1],"string"==typeof f&&(f=f.replace(b,""),f?c[c.length-1]=f:c.pop()))}}(),Ib=function(a){function b(a){return"string"==typeof a}function c(b){return b.t===a.COMMENT||b.t===a.DELIMCHANGE}function d(b){return(b.t===a.SECTION||b.t===a.INVERTED)&&b.f}var e,f=/^\s*\r?\n/,g=/\r?\n\s*$/;return e=function(a){var e,h,i,j,k;for(e=1;e<a.length;e+=1)h=a[e],i=a[e-1],j=a[e-2],b(h)&&c(i)&&b(j)&&g.test(j)&&f.test(h)&&(a[e-2]=j.replace(g,"\n"),a[e]=h.replace(f,"")),d(h)&&b(i)&&g.test(i)&&b(h.f[0])&&f.test(h.f[0])&&(a[e-1]=i.replace(g,"\n"),h.f[0]=h.f[0].replace(f,"")),b(h)&&d(i)&&(k=i.f[i.f.length-1],b(k)&&g.test(k)&&f.test(h)&&(i.f[i.f.length-1]=k.replace(g,"\n"),a[e]=h.replace(f,"")));return a}}(R),Jb=function(){var a=/[-/\\^$*+?.()|[\]{}]/g;return function(b){return b.replace(a,"\\$&")}}(),Kb=function(a,b,c,d,e,f,g,h,i){function j(b,c,d,e,f,i){var k,l,m,n,s,t,u,v,w;for(h(b),k=b.length;k--;)l=b[k],l.exclude?b.splice(k,1):c&&l.t===a.COMMENT&&b.splice(k,1);for(g(b,e,f),k=b.length;k--;)if(l=b[k],l.f&&(s=d||l.t===a.ELEMENT&&p.test(l.e),s||(m=b[k-1],n=b[k+1],(!m||"string"==typeof m&&r.test(m))&&(t=!0),(!n||"string"==typeof n&&q.test(n))&&(u=!0)),j(l.f,c,s,t,u,i)),l.l&&(j(l.l,c,d,t,u,i),i&&(v={t:4,n:a.SECTION_UNLESS,f:l.l},l.r&&(v.r=l.r),l.x&&(v.x=l.x),l.rx&&(v.rx=l.rx),b.splice(k+1,0,v),delete l.l)),l.a)for(w in l.a)l.a.hasOwnProperty(w)&&"string"!=typeof l.a[w]&&j(l.a[w],c,d,t,u,i);for(k=b.length;k--;)"string"==typeof b[k]&&("string"==typeof b[k+1]&&(b[k]=b[k]+b[k+1],b.splice(k+1,1)),d||(b[k]=b[k].replace(o," ")),""===b[k]&&b.splice(k,1))}function k(a){var b=arguments[1];void 0===b&&(b=a),b.delimiters=a.delimiters||["{{","}}"],b.tripleDelimiters=a.tripleDelimiters||["{{{","}}}"],b.staticDelimiters=a.staticDelimiters||["[[","]]"],b.staticTripleDelimiters=a.staticTripleDelimiters||["[[[","]]]"]}var l,m,n,o=/[ \t\f\r\n]+/g,p=/^(?:pre|script|style|textarea)$/i,q=/^\s+/,r=/\s+$/;return m=b.extend({init:function(a,b){k(b,this),this.sectionDepth=0,this.interpolate={script:!b.interpolate||b.interpolate.script!==!1,style:!b.interpolate||b.interpolate.style!==!1},b.sanitize===!0&&(b.sanitize={elements:"applet base basefont body frame frameset head html isindex link meta noframes noscript object param script style title".split(" "),eventAttributes:!0}),this.sanitizeElements=b.sanitize&&b.sanitize.elements,this.sanitizeEventAttributes=b.sanitize&&b.sanitize.eventAttributes,this.includeLinePositions=b.includeLinePositions},postProcess:function(a,b){return this.sectionDepth>0&&this.error("A section was left open"),j(a,b.stripComments!==!1,b.preserveWhitespace,!b.preserveWhitespace,!b.preserveWhitespace,b.rewriteElse!==!1),a},converters:[c,d,e,f]}),n=function(a){var b=arguments[1];void 0===b&&(b={});var c,d,e,f,g,h,j,l;if(k(b),j=new RegExp("<!--\\s*"+i(b.delimiters[0])+"\\s*>\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*"+i(b.delimiters[1])+"\\s*-->"),l=new RegExp("<!--\\s*"+i(b.delimiters[0])+"\\s*\\/\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*"+i(b.delimiters[1])+"\\s*-->"),c={v:1},j.test(a)){for(d=a,a="";g=j.exec(d);){if(f=g[1],a+=d.substr(0,g.index),d=d.substring(g.index+g[0].length),h=l.exec(d),!h||h[1]!==f)throw new Error('Inline partials must have a closing delimiter, and cannot be nested. Expected closing for "'+f+'", but '+(h?'instead found "'+h[1]+'"':" no closing found"));(e||(e={}))[f]=new m(d.substr(0,h.index),b).result,d=d.substring(h.index+h[0].length)}a+=d,c.p=e}return c.t=new m(a,b).result,c},l=n}(R,pb,wb,xb,Gb,Ab,Hb,Ib,Jb),Lb=function(){return function(a,b){var c=a.map(b);return a.forEach(function(a,b){c[a]=c[b]}),c}}(ub),Mb=function(a){var b,c;return b=["preserveWhitespace","sanitize","stripComments","delimiters","tripleDelimiters","interpolate"],c=a(b,function(a){return a})}(Lb),Nb=function(a,b,c,d,e){function f(a){var b=d(l);return b.parse=function(b,c){return g(b,c||a)},b}function g(b,d){if(!c)throw new Error(a.missingParser);return c(b,d||this.options)}function h(a,c){var d;if(!b){if(c&&c.noThrow)return;throw new Error("Cannot retrieve template #"+a+" as Ractive is not running in a browser.")}if(i(a)&&(a=a.substring(1)),!(d=document.getElementById(a))){if(c&&c.noThrow)return;throw new Error("Could not find template element with id #"+a)}if("SCRIPT"!==d.tagName.toUpperCase()){if(c&&c.noThrow)return;throw new Error("Template element with id #"+a+", must be a <script> element")}return d.innerHTML}function i(a){return"#"===a.charAt(0)}function j(a){return!("string"==typeof a)}function k(a){return a.defaults&&(a=a.defaults),e.reduce(function(b,c){return b[c]=a[c],b},{})}var l={parse:g,fromId:h,isHashedId:i,isParsed:j,getParseOptions:k,createHelper:f};return l}(Q,B,Kb,S,Mb),Ob=function(a,b){function c(a){var b,c=a._config.template;if(c&&c.fn)return b=d(a,c.fn),b!==c.result?(c.result=b,b=e(b,a)):void 0}function d(b,c){var d=a.createHelper(a.getParseOptions(b));return c.call(b,b.data,d)}function e(c,d){if("string"==typeof c)"#"===c[0]&&(c=a.fromId(c)),c=b(c,a.getParseOptions(d));else if(1!==c.v)throw new Error("Mismatched template version! Please ensure you are using the latest version of Ractive.js in your build process as well as in your app");return c}function f(a,b,c){if(b)for(var d in b)(c||!a.hasOwnProperty(d))&&(a[d]=b[d])}var g={name:"template",extend:function(a,b,c){var d;"template"in c&&(d=c.template,b.template="function"==typeof d?d:e(d,b))},init:function(a,b,c){var g,h;g="template"in c?c.template:a.prototype.template,"function"==typeof g&&(h=g,g=d(b,h),b._config.template={fn:h,result:g}),g=e(g,b),b.template=g.t,g.p&&f(b.partials,g.p)},reset:function(a){var b,d=c(a);return d?(b=e(d,a),a.template=b.t,f(a.partials,b.p,!0),!0):void 0}};return g}(Nb,Kb),Pb=function(a){function b(a,b){this.name=a,this.useDefaults=b}function c(a,b){var d,e;return(d=b(a))?d:!a.isolated&&(e=a._parent)?c(e,b):void 0}return b.prototype={constructor:b,extend:function(a,b,c){this.configure(this.useDefaults?a.defaults:a,this.useDefaults?b:b.constructor,c)},init:function(a,b,c){this.configure(this.useDefaults?a.defaults:a,b,c)},configure:function(b,c,d){var e,f=this.name,g=d[f];e=a(b[f]);for(var h in g)e[h]=g[h];c[f]=e},reset:function(a){var b=a[this.name],c=!1;return Object.keys(b).forEach(function(a){var d=b[a];d._fn&&(d._fn.isOwner?b[a]=d._fn:delete b[a],c=!0)}),c},findOwner:function(a,b){return a[this.name].hasOwnProperty(b)?a:this.findConstructor(a.constructor,b)},findConstructor:function(a,b){return a?a[this.name].hasOwnProperty(b)?a:this.findConstructor(a._parent,b):void 0},find:function(a,b){var d=this;return c(a,function(a){return a[d.name][b]})},findInstance:function(a,b){var d=this;return c(a,function(a){return a[d.name][b]?a:void 0})}},b}(S,ub),Qb=function(a,b){var c=["adaptors","components","computed","decorators","easing","events","interpolators","partials","transitions"],d=a(c,function(a){return new b(a,"computed"===a)});return d}(Lb,Pb),Rb=function(){},Sb=function(a){function b(b,c){var d;if(c in b){var e=b[c];d="function"==typeof e?e:function(){return e}}else d=a;return d}var c;return c=function(a,c,d){if(!/_super/.test(d))return d;var e=function(){var a,f=b(e._parent,c),g="_super"in this,h=this._super;return this._super=f,a=d.apply(this,arguments),g?this._super=h:delete this._super,a};return e._parent=a,e._method=d,e}}(Rb),Tb=function(a,b){function c(b,c,e){if(c in b){if(e in b)throw new Error(d(c,e,!0));a(d(c,e)),b[e]=b[c]}}function d(a,b,c){return"options."+a+" has been deprecated in favour of options."+b+"."+(c?" You cannot specify both options, please use options."+b+".":"")}function e(a){c(a,"eventDefinitions","events")}function f(a){b(a.adaptors)&&c(a,"adaptors","adapt")}return function(a){e(a),f(a)}}(L,g),Ub=function(a,b,c,d,e,f,g,h){function i(a,b,c,d,e){k[b][a](c,d,e)}function j(a,b,d,e){h(e),i(a,"data",b,d,e),m.parseOptions.forEach(function(a){a in e&&(d[a]=e[a])});for(var f in e)if(f in c&&!(f in m.parseOptions)&&!(f in k)){var j=e[f];d[f]="function"==typeof j?g(b.prototype,f,j):j}m.registries.forEach(function(c){c[a](b,d,e)}),i(a,"template",b,d,e),i(a,"css",b,d,e)}var k,l,m;k={data:b,template:d,css:a},l=Object.keys(c).filter(function(a){return!f[a]&&!k[a]&&!e[a]}),m=[].concat(k.data,e,l,f,k.template,k.css);for(var n in k)m[n]=k[n];return m.keys=Object.keys(c).concat(f.map(function(a){return a.name})).concat(["css"]),m.parseOptions=e,m.registries=f,m.extend=function(a,b,c){j("extend",a,b,c)},m.init=function(a,b,c){j("init",a,b,c),b._config&&(b._config.options=c)},m.reset=function(a){return m.filter(function(b){return b.reset&&b.reset(a)}).map(function(a){return a.name})},m}(N,P,c,Ob,Mb,Qb,Sb,Tb),Vb=function(a,b,c,d){function e(a){return function(){return a}}var f,g=function(a,f,g,h){if(a===f)return e(f);if(h){var i=d.registries.interpolators.find(g,h);if(i)return i(a,f)||e(f);b('Missing "'+h+'" interpolator. You may need to download a plugin from [TODO]')}return c.number(a,f)||c.array(a,f)||c.object(a,f)||e(f)};return a.interpolate=g,f=g}(e,L,j,Ub),Wb=function(a,b,c){var d=function(a){var b;this.startTime=Date.now();for(b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);this.interpolator=c(this.from,this.to,this.root,this.interpolator),this.running=!0,this.tick()};return d.prototype={tick:function(){var c,d,e,f,g,h;return h=this.keypath,this.running?(f=Date.now(),c=f-this.startTime,c>=this.duration?(null!==h&&(b.start(this.root),this.root.viewmodel.set(h,this.to),b.end()),this.step&&this.step(1,this.to),this.complete(this.to),g=this.root._animations.indexOf(this),-1===g&&a("Animation was not found"),this.root._animations.splice(g,1),this.running=!1,!1):(d=this.easing?this.easing(c/this.duration):c/this.duration,null!==h&&(e=this.interpolator(d),b.start(this.root),this.root.viewmodel.set(h,e),b.end()),this.step&&this.step(d,e),!0)):!1},stop:function(){var b;this.running=!1,b=this.root._animations.indexOf(this),-1===b&&a("Animation was not found"),this.root._animations.splice(b,1)}},d}(L,v,Vb),Xb=function(a,b,c,d,e){function f(b,f,g,h){var j,k,l,m;return f&&(f=c(f)),null!==f&&(m=b.viewmodel.get(f)),d.abort(f,b),a(m,g)?(h.complete&&h.complete(h.to),i):(h.easing&&(j="function"==typeof h.easing?h.easing:b.easing[h.easing],"function"!=typeof j&&(j=null)),k=void 0===h.duration?400:h.duration,l=new e({keypath:f,from:m,to:g,root:b,duration:k,easing:j,interpolator:h.interpolator,step:h.step,complete:h.complete}),d.add(l),b._animations.push(l),l)}var g,h=function(){},i={stop:h};return g=function(a,c,d){var e,g,i,j,k,l,m,n,o,p,q,r,s,t;if(e=new b(function(a){g=a}),"object"==typeof a){d=c||{},l=d.easing,m=d.duration,k=[],n=d.step,o=d.complete,(n||o)&&(q={},d.step=null,d.complete=null,p=function(a){return function(b,c){q[a]=c}});for(i in a)a.hasOwnProperty(i)&&((n||o)&&(r=p(i),d={easing:l,duration:m},n&&(d.step=r)),d.complete=o?r:h,k.push(f(this,i,a[i],d)));return t={easing:l,duration:m},n&&(t.step=function(a){n(a,q)}),o&&e.then(function(a){o(a,q)}),t.complete=g,s=f(this,null,null,t),k.push(s),e.stop=function(){for(var a;a=k.pop();)a.stop();s&&s.stop()},e}return d=d||{},d.complete&&e.then(d.complete),d.complete=g,j=f(this,a,c,d),e.stop=function(){j.stop()},e}}(r,o,G,K,Wb),Yb=function(a){return function(){return this.detached?this.detached:(this.el&&a(this.el.__ractive_instances__,this),this.detached=this.fragment.detach(),this.detached)}}(n),Zb=function(a){return this.el?this.fragment.find(a):null},$b=function(a,b,c){var d,e,f,g,h,i,j,k;if(a){for(e=c("div"),f=["matches","matchesSelector"],k=function(a){return function(b,c){return b[a](c)}},i=f.length;i--&&!d;)if(g=f[i],e[g])d=k(g);else for(j=b.length;j--;)if(h=b[i]+g.substr(0,1).toUpperCase()+g.substring(1),e[h]){d=k(h);break}d||(d=function(a,b){var c,d,f;for(d=a.parentNode,d||(e.innerHTML="",d=e,a=a.cloneNode(),e.appendChild(a)),c=d.querySelectorAll(b),f=c.length;f--;)if(c[f]===a)return!0;return!1})}else d=null;return d}(B,H,A),_b=function(a){return function(b,c){var d=this._isComponentQuery?!this.selector||b.name===this.selector:a(b.node,this.selector);return d?(this.push(b.node||b.instance),c||this._makeDirty(),!0):void 0}}($b),ac=function(){var a,b,c;a=this._root[this._isComponentQuery?"liveComponentQueries":"liveQueries"],b=this.selector,c=a.indexOf(b),-1!==c&&(a.splice(c,1),a[b]=null)},bc=function(){function a(a){var b;return(b=a.parentFragment)?b.owner:a.component&&(b=a.component.parentFragment)?b.owner:void 0}function b(b){var c,d;for(c=[b],d=a(b);d;)c.push(d),d=a(d);return c}var c;return c=function(a,c){var d,e,f,g,h,i,j,k,l,m;for(d=b(a.component||a._ractive.proxy),e=b(c.component||c._ractive.proxy),f=d[d.length-1],g=e[e.length-1];f&&f===g;)d.pop(),e.pop(),h=f,f=d[d.length-1],g=e[e.length-1];if(f=f.component||f,g=g.component||g,l=f.parentFragment,m=g.parentFragment,l===m)return i=l.items.indexOf(f),j=m.items.indexOf(g),i-j||d.length-e.length;if(k=h.fragments)return i=k.indexOf(l),j=k.indexOf(m),i-j||d.length-e.length;throw new Error("An unexpected condition was met while comparing the position of two components. Please file an issue at https://github.com/RactiveJS/Ractive/issues - thanks!")}}(),cc=function(a){return function(b,c){var d;return b.compareDocumentPosition?(d=b.compareDocumentPosition(c),2&d?1:-1):a(b,c)}}(bc),dc=function(a,b){return function(){this.sort(this._isComponentQuery?b:a),this._dirty=!1}}(cc,bc),ec=function(a){return function(){var b=this;this._dirty||(this._dirty=!0,a.scheduleTask(function(){b._sort()}))}}(v),fc=function(a){var b=this.indexOf(this._isComponentQuery?a.instance:a);-1!==b&&this.splice(b,1)},gc=function(a,b,c,d,e,f){return function(g,h,i,j){var k=[];return a(k,{selector:{value:h},live:{value:i},_isComponentQuery:{value:j},_test:{value:b}}),i?(a(k,{cancel:{value:c},_root:{value:g},_sort:{value:d},_makeDirty:{value:e},_remove:{value:f},_dirty:{value:!1,writable:!0}}),k):k}}(D,_b,ac,dc,ec,fc),hc=function(a){return function(b,c){var d,e;return this.el?(c=c||{},d=this._liveQueries,(e=d[b])?c&&c.live?e:e.slice():(e=a(this,b,!!c.live,!1),e.live&&(d.push(b),d["_"+b]=e),this.fragment.findAll(b,e),e)):[]}}(gc),ic=function(a){return function(b,c){var d,e;return c=c||{},d=this._liveComponentQueries,(e=d[b])?c&&c.live?e:e.slice():(e=a(this,b,!!c.live,!0),e.live&&(d.push(b),d["_"+b]=e),this.fragment.findAllComponents(b,e),e)}}(gc),jc=function(a){return this.fragment.findComponent(a)},kc=function(a){return function(b){var c={args:Array.prototype.slice.call(arguments,1)};a(this,b,c)}}(m),lc=function(a){var b={capture:!0};return function(c){return c=a(c),this.viewmodel.get(c,b)}}(G),mc=function(a){var b;if(a&&"boolean"!=typeof a)return"undefined"!=typeof window&&document&&a?a.nodeType?a:"string"==typeof a&&(b=document.getElementById(a),!b&&document.querySelector&&(b=document.querySelector(a)),b&&b.nodeType)?b:a[0]&&a[0].nodeType?a[0]:null:null},nc=function(a){return function(b,c){if(!this.rendered)throw new Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(b=a(b),c=a(c)||null,!b)throw new Error("You must specify a valid target to insert into");b.insertBefore(this.detach(),c),this.el=b,(b.__ractive_instances__||(b.__ractive_instances__=[])).push(this),this.detached=null}}(mc),oc=function(a,b,c){return function(d,e,f){var g,h;return d=c(d),g=this.viewmodel.get(d),b(g)&&b(e)?(h=a.start(this,!0),this.viewmodel.merge(d,g,e,f),a.end(),f&&f.complete&&h.then(f.complete),h):this.set(d,e,f&&f.complete)}}(v,g,G),pc=function(a,b){var c=function(a,b,c,d){this.root=a,this.keypath=b,this.callback=c,this.defer=d.defer,this.priority=0,this.context=d&&d.context?d.context:a};return c.prototype={init:function(a){this.value=this.root.viewmodel.get(this.keypath),a!==!1?this.update():this.oldValue=this.value},setValue:function(c){var d=this;b(c,this.value)||(this.value=c,this.defer&&this.ready?a.scheduleTask(function(){return d.update()}):this.update())},update:function(){this.updating||(this.updating=!0,this.callback.call(this.context,this.value,this.oldValue,this.keypath),this.oldValue=this.value,this.updating=!1)}},c}(v,r),qc=function(a){return function(b,c){function d(c,d){var e,f,g;e=b.viewmodel.wrapped[d]?b.viewmodel.wrapped[d].get():b.get(d);for(f in e)!e.hasOwnProperty(f)||"_ractive"===f&&a(e)||(g=d?d+"."+f:f,c.push(g));return c}function e(a){return function(b){return b?b+"."+a:a}}var f,g,h;for(f=c.split("."),h=[""];g=f.shift();)"*"===g?h=h.reduce(d,[]):""===h[0]?h[0]=g:h=h.map(e(g));return h}}(g),rc=function(a){return function(b,c){var d,e;return d=a(b,c),e={},d.forEach(function(a){e[a]=b.get(a)}),e}}(qc),sc=function(a,b,c){var d,e=/\*/,f=Array.prototype.slice;return d=function(a,b,c,d){this.root=a,this.callback=c,this.defer=d.defer,this.keypath=b,this.regex=new RegExp("^"+b.replace(/\./g,"\\.").replace(/\*/g,"([^\\.]+)")+"$"),this.values={},this.defer&&(this.proxies=[]),this.priority="pattern",this.context=d&&d.context?d.context:a},d.prototype={init:function(a){var b,d;if(b=c(this.root,this.keypath),a!==!1)for(d in b)b.hasOwnProperty(d)&&this.update(d);else this.values=b},update:function(b){var d,f=this;if(e.test(b)){d=c(this.root,b);for(b in d)d.hasOwnProperty(b)&&this.update(b)}else if(!this.root.viewmodel.implicitChanges[b])return this.defer&&this.ready?void a.scheduleTask(function(){return f.getProxy(b).update()}):void this.reallyUpdate(b)},reallyUpdate:function(a){var c,d,e;return c=this.root.viewmodel.get(a),this.updating?void(this.values[a]=c):(this.updating=!0,b(c,this.values[a])&&this.ready||(d=f.call(this.regex.exec(a),1),e=[c,this.values[a],a].concat(d),this.callback.apply(this.context,e),this.values[a]=c),void(this.updating=!1))},getProxy:function(a){var b=this;return this.proxies[a]||(this.proxies[a]={update:function(){b.reallyUpdate(a)}}),this.proxies[a]}},d}(v,r,rc),tc=function(a,b,c){var d=/\*/,e={};return function(f,g,h,i){var j,k,l;return g=a(g),i=i||e,d.test(g)?(j=new c(f,g,h,i),f.viewmodel.patternObservers.push(j),k=!0):j=new b(f,g,h,i),f.viewmodel.register(g,j,k?"patternObservers":"observers"),j.init(i.init),j.ready=!0,{cancel:function(){var a;l||(k?(a=f.viewmodel.patternObservers.indexOf(j),f.viewmodel.patternObservers.splice(a,1),f.viewmodel.unregister(g,j,"patternObservers")):f.viewmodel.unregister(g,j,"observers"),l=!0)}}}}(G,pc,sc),uc=function(a,b){return function(c,d,e){var f,g,h,i;if(a(c)){e=d,g=c,f=[];for(c in g)g.hasOwnProperty(c)&&(d=g[c],f.push(this.observe(c,d,e)));return{cancel:function(){for(;f.length;)f.pop().cancel()}}}if("function"==typeof c)return e=d,d=c,c="",b(this,c,d,e);if(h=c.split(" "),1===h.length)return b(this,c,d,e);for(f=[],i=h.length;i--;)c=h[i],c&&f.push(b(this,c,d,e));return{cancel:function(){for(;f.length;)f.pop().cancel()}}}}(h,tc),vc=function(a){return a.trim()},wc=function(a){return""!==a},xc=function(a,b){return function(c,d){var e,f=this;if(c)e=c.split(" ").map(a).filter(b),e.forEach(function(a){var b,c;(b=f._subs[a])&&(d?(c=b.indexOf(d),-1!==c&&b.splice(c,1)):f._subs[a]=[])});else for(c in this._subs)delete this._subs[c];return this}}(vc,wc),yc=function(a,b){return function(c,d){var e,f,g,h=this,i=this;if("object"==typeof c){e=[];for(f in c)c.hasOwnProperty(f)&&e.push(this.on(f,c[f]));return{cancel:function(){for(var a;a=e.pop();)a.cancel()}}}return g=c.split(" ").map(a).filter(b),g.forEach(function(a){(h._subs[a]||(h._subs[a]=[])).push(d)}),{cancel:function(){i.off(c,d)}}}}(vc,wc),zc=function(a,b,c){switch(b){case"splice":return c;case"sort":case"reverse":return null;case"pop":return a.length?[-1]:null;case"push":return[a.length,0].concat(c);case"shift":return[0,1];case"unshift":return[0,0].concat(c)}},Ac=function(a,b){var c,d,e,f,g,h;return b?(c=+(b[0]<0?a.length+b[0]:b[0]),0>c?c=0:c>a.length&&(c=a.length),f=Math.max(0,b.length-2),g=void 0!==b[1]?b[1]:a.length-c,g=Math.min(g,a.length-c),h=f-g,e=a.length+h,d=h?Math.max(a.length,e):c+f,{rangeStart:c,rangeEnd:d,balance:h,added:f,removed:g}):null},Bc=function(a,b,c,d){var e=Array.prototype;return function(f){return function(g){var h,i,j,k,l,m=Array.prototype.slice,n=m.call(arguments,1);if(h=this.get(g),!a(h))throw new Error("Called ractive."+f+"('"+g+"'), but '"+g+"' does not refer to an array");return i=c(h,f,n),j=d(h,i),l=j?e.splice.apply(h,i):e[f].apply(h,n),k=b.start(this,!0),j?this.viewmodel.splice(g,j):this.viewmodel.mark(g),b.end(),("splice"===f||"pop"===f||"shift"===f)&&(k=k.then(function(){return l})),k}}}(g,v,zc,Ac),Cc=function(a){return a("pop")}(Bc),Dc=function(a){return a("push")}(Bc),Ec=function(a,b,c){var d,e,f,g,h,i,j,k="/* Ractive.js component styles */\n",l={},m=[];return b?(a.push(function(){f=a.runloop}),g=document.createElement("style"),g.type="text/css",h=document.getElementsByTagName("head")[0],j=!1,i=g.styleSheet,e=function(){var a;m.length?(a=k+m.join(" "),i?i.cssText=a:g.innerHTML=a,j||(h.appendChild(g),j=!0)):j&&(h.removeChild(g),j=!1)},d={add:function(a){a.css&&(l[a._guid]||(l[a._guid]=0,m.push(a.css),f.scheduleTask(e)),l[a._guid]+=1)},remove:function(a){a.css&&(l[a._guid]-=1,l[a._guid]||(c(m,a.css),f.scheduleTask(e)))}}):d=null,d}(e,B,n),Fc=function(a,b,c){function d(a){var b=e(a);for(a.init&&a.init(a._config.options);b.length;)d(b.shift());g[a._guid]=null}function e(a){return g[a._guid]||(g[a._guid]=[])}var f,g={},h={};return f=function(f,g){var i,j,k,l=this;if(h[this._guid]=!0,k=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),i=a.start(this,!0),this.rendered)throw new Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");return f=c(f)||this.el,g=c(g)||this.anchor,this.el=f,this.anchor=g,this.constructor.css&&b.add(this.constructor),f&&((j=f.__ractive_instances__)?j.push(this):f.__ractive_instances__=[this],g?f.insertBefore(this.fragment.render(),g):f.appendChild(this.fragment.render())),this._hasInited||(this._hasInited=!0,this._parent&&h[this._parent._guid]?e(this._parent).push(this):d(this)),h[this._guid]=!1,a.end(),this.rendered=!0,this.transitionsEnabled=k,this.complete&&i.then(function(){return l.complete()}),i}}(v,Ec,mc),Gc=function(){this.dirtyValue=this.dirtyArgs=!0,this.bound&&"function"==typeof this.owner.bubble&&this.owner.bubble()},Hc=function(){var a;return 1===this.items.length?this.items[0].detach():(a=document.createDocumentFragment(),this.items.forEach(function(b){a.appendChild(b.detach())}),a)},Ic=function(a){var b,c,d,e;if(this.items){for(c=this.items.length,b=0;c>b;b+=1)if(d=this.items[b],d.find&&(e=d.find(a)))return e;return null}},Jc=function(a,b){var c,d,e;if(this.items)for(d=this.items.length,c=0;d>c;c+=1)e=this.items[c],e.findAll&&e.findAll(a,b);
|
13 |
+
return b},Kc=function(a,b){var c,d,e;if(this.items)for(d=this.items.length,c=0;d>c;c+=1)e=this.items[c],e.findAllComponents&&e.findAllComponents(a,b);return b},Lc=function(a){var b,c,d,e;if(this.items){for(b=this.items.length,c=0;b>c;c+=1)if(d=this.items[c],d.findComponent&&(e=d.findComponent(a)))return e;return null}},Mc=function(a){var b,c=a.index;return b=this.items[c+1]?this.items[c+1].firstNode():this.owner===this.root?this.owner.component?this.owner.component.findNextNode():null:this.owner.findNextNode(this)},Nc=function(){return this.items&&this.items[0]?this.items[0].firstNode():null},Oc=function(){var a=this;do if(a.pElement)return a.pElement.node;while(a=a.parent);return this.root.detached||this.root.el},Pc=function(a){function b(a,c,d,e){return e=e||0,a.map(function(a){var f,g,h;return a.text?a.text:a.fragments?a.fragments.map(function(a){return b(a.items,c,d,e)}).join(""):(f=d+"-"+e++,h=(g=a.root.viewmodel.wrapped[a.keypath])?g.value:a.getValue(),c[f]=h,"${"+f+"}")}).join("")}var c,d={};return c=function(){var c=arguments[0];void 0===c&&(c=d);var e,f,g,h,i,j,k;return e=c.args,i=e?"argsList":"value",j=e?"dirtyArgs":"dirtyValue",this[j]&&(g=b(this.items,f={},this.root._guid),h=a(e?"["+g+"]":g,f),k=h?h.value:e?[this.toString()]:this.toString(),this[i]=k,this[j]=!1),this[i]}}(Eb),Qc=function(){var a=/</g,b=/>/g;return function(c){return c.replace(a,"<").replace(b,">")}}(),Rc=function(a){return a&&a.parentNode&&a.parentNode.removeChild(a),a},Sc=function(a){return function(){return a(this.node)}}(Rc),Tc=function(a,b,c,d){var e=function(b){this.type=a.TEXT,this.text=b.template};return e.prototype={detach:c,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(d(this.text))),this.node},toString:function(a){return a?b(this.text):this.text},unrender:function(a){return a?this.detach():void 0}},e}(R,Qc,Sc,Cb),Uc=function(a){return function(){this.keypath?this.root.viewmodel.unregister(this.keypath,this):a.removeUnresolved(this),this.resolver&&this.resolver.unbind()}}(v),Vc=function(){return this.value},Wc=function(a){var b=function(b,c,d,e){this.root=b,this.ref=c,this.parentFragment=d,this.resolve=e,a.addUnresolved(this)};return b.prototype={unbind:function(){a.removeUnresolved(this)}},b}(v),Xc=function(a,b){return a&&b&&a.substr(0,b.length+1)===b+"."},Yc=function(a){return function(b,c,d){return b===c?void 0!==d?d:null:a(b,c)?null===d?d:b.replace(c+".",d+"."):void 0}}(Xc),Zc=function(a,b){function c(a){var c=b[a.message]||a.message||"";return d(c,a.args)}function d(a,b){return a.replace(/{([^{}]*)}/g,function(a,c){return b[c]})}var e={warn:function(a,b){(a.debug||b)&&this.logger(c(a),a.allowDuplicates)},error:function(a){this.errorOnly(a),a.debug||this.warn(a,!0)},errorOnly:function(a){a.debug&&this.critical(a)},critical:function(a){var b=a.err||new Error(c(a));this.thrower(b)},logger:a,thrower:function(a){throw a}};return e}(L,Q),$c=function(){var a={};return function(b,c){var d,e;if(a[b])return a[b];for(e=[];c--;)e[c]="_"+c;return d=new Function(e.join(","),"return("+b+")"),a[b]=d,d}}(),_c=function(a,b,c){var d,e;for(d=b.length;d--;)e=b[d],-1===c.indexOf(e)&&a.viewmodel.unregister(e,a,"computed");for(d=c.length;d--;)e=c[d],-1===b.indexOf(e)&&a.viewmodel.register(e,a,"computed");a.dependencies=c.slice()},ad=function(a,b,c,d,e){function f(a,b){var d,e,f;if(a._noWrap)return a;if(e="__ractive_"+b._guid,d=a[e])return d;if(/this/.test(a.toString())){c(a,e,{value:j.call(a,b)});for(f in a)a.hasOwnProperty(f)&&(a[e][f]=a[f]);return a[e]}return c(a,"__ractive_nowrap",{value:a}),a.__ractive_nowrap}function g(a){return"function"==typeof a?a():a}var h,i,j=Function.prototype.bind;return i=function(a,b,c,e,g,h){var i=this,j=a.viewmodel;i.root=a,i.viewmodel=j,i.uniqueString=c,i.keypath=b,i.priority=h,i.fn=d(e,g.length),i.explicitDependencies=[],i.dependencies=[],i.argumentGetters=g.map(function(b){var c,d;return b?b.indexRef?d=b.value:(c=b.keypath,i.explicitDependencies.push(c),j.register(c,i,"computed"),function(){var b=j.get(c);return"function"==typeof b?f(b,a):b}):void 0})},i.prototype={wake:function(){this.awake=!0},sleep:function(){this.awake=!1},getValue:function(){var b,c,d;if(b=this.argumentGetters.map(g),!this.updating){this.updating=!0,this.viewmodel.capture();try{c=this.fn.apply(null,b)}catch(f){this.root.debug&&a.warn({debug:this.root.debug,message:"evaluationError",args:{uniqueString:this.uniqueString,err:f.message||f}}),c=void 0}return d=this.viewmodel.release(),e(this,this.dependencies,d),this.updating=!1,c}},update:function(){var a=this.getValue();return b(a,this.value)||(this.value=a,this.root.viewmodel.mark(this.keypath)),this},teardown:function(){var a=this;this.explicitDependencies.concat(this.dependencies).forEach(function(b){return a.viewmodel.unregister(b,a,"computed")}),this.root.viewmodel.evaluators[this.keypath]=null}},h=i}(Zc,r,C,$c,_c,ub),bd=function(a,b,c,d,e){function f(a,b){return a.replace(/_([0-9]+)/g,function(a,c){var d=b[c];return d?d.indexRef?d.value:d.keypath:"undefined"})}function g(a){return"${"+a.replace(/[\.\[\]]/g,"-")+"}"}var h,i=function(d,e,f,g){var h,i,j,k=this;return h=d.root,this.root=h,this.callback=g,this.owner=d,this.str=f.s,this.args=j=[],this.unresolved=[],this.pending=0,i=e.indexRefs,f.r&&f.r.length?(f.r.forEach(function(d,f){var g,l,m;return i&&void 0!==(g=i[d])?void(j[f]={indexRef:d,value:g}):(l=b(h,d,e))?void(j[f]={keypath:l}):"."===d?void(j[f]={"":""}):(j[f]=null,k.pending+=1,m=new c(h,d,e,function(b){k.resolve(f,b),a(k.unresolved,m)}),void k.unresolved.push(m))}),this.ready=!0,void this.bubble()):(this.resolved=this.ready=!0,void this.bubble())};return i.prototype={bubble:function(){this.ready&&(this.uniqueString=f(this.str,this.args),this.keypath=g(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var a;a=this.unresolved.pop();)a.unbind()},resolve:function(a,b){this.args[a]={keypath:b},this.bubble(),this.resolved=!--this.pending},createEvaluator:function(){var a=this.root.viewmodel.evaluators[this.keypath];a||(a=new d(this.root,this.keypath,this.uniqueString,this.str,this.args,this.owner.priority),this.root.viewmodel.evaluators[this.keypath]=a),a.update()},rebind:function(a,b,c,d){var f;this.args.forEach(function(g){var h;g&&(g.keypath&&(h=e(g.keypath,c,d))?(g.keypath=h,f=!0):g.indexRef&&g.indexRef===a&&(g.value=b,f=!0))}),f&&this.bubble()}},h=i}(n,t,Wc,ad,Yc),cd=function(a,b,c,d,e){var f=function(d,f,g){var h,i,j,k,l,m=this;m.resolver=f,m.root=f.root,m.viewmodel=f.root.viewmodel,"string"==typeof d?m.value=d:d.t===a.REFERENCE?(h=m.ref=d.n,(i=g.indexRefs)&&void 0!==(j=i[h])?(m.indexRef=h,m.value=j):(k=f.root,(l=b(k,h,g))?m.resolve(l):m.unresolved=new c(k,h,g,function(a){m.unresolved=null,m.resolve(a)}))):new e(f,g,d,function(a){m.resolve(a)})};return f.prototype={resolve:function(a){this.keypath=a,this.value=this.viewmodel.get(a),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(a,b,c,e){var f;if(a&&this.indexRef===a){if(b!==this.value)return this.value=b,!0}else if(this.keypath&&(f=d(this.keypath,c,e)))return this.unbind(),this.keypath=f,this.value=this.root.viewmodel.get(f),this.bind(),!0},setValue:function(a){this.value=a,this.resolver.bubble()},unbind:function(){this.keypath&&this.root.viewmodel.unregister(this.keypath,this),this.unresolved&&this.unresolved.unbind()},forceResolution:function(){this.unresolved&&(this.unresolved.unbind(),this.unresolved=null,this.keypath=this.ref,this.value=this.viewmodel.get(this.ref),this.bind())}},f}(R,t,Wc,Yc,bd),dd=function(a,b,c){function d(a){return a.value}function e(a){return void 0!=a}function f(a){a.unbind()}var g=function(d,e,f){var g,h,i,j,k=this,l=this;j=d.parentFragment,l.root=g=d.root,l.mustache=d,l.priority=d.priority,l.ref=h=e.r,l.callback=f,l.unresolved=[],(i=a(g,h,j))?l.base=i:l.baseResolver=new b(g,h,j,function(a){l.base=a,l.baseResolver=null,l.bubble()}),l.members=e.m.map(function(a){return new c(a,k,j)}),l.ready=!0,l.bubble()};return g.prototype={getKeypath:function(){var a=this.members.map(d);return!a.every(e)||this.baseResolver?null:this.base+"."+a.join(".")},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(f)},rebind:function(a,b,c,d){var e;this.members.forEach(function(f){f.rebind(a,b,c,d)&&(e=!0)}),e&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=this.ref,this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(function(a){return a.forceResolution()}),this.bubble()}},g}(t,Wc,cd),ed=function(a,b,c,d,e){return function(f,g){function h(a){var b=f.keypath;a!==b&&(f.resolve(a),void 0!==b&&f.fragments&&f.fragments.forEach(function(c){c.rebind(null,null,b,a)}))}var i,j,k,l,m,n;if(m=g.parentFragment,n=g.template,f.root=m.root,f.parentFragment=m,f.pElement=m.pElement,f.template=g.template,f.index=g.index||0,f.priority=m.priority,f.isStatic=g.template.s,f.type=g.template.t,i=n.r){if(k=m.indexRefs,k&&void 0!==(l=k[i]))return f.indexRef=i,void f.setValue(l);j=c(f.root,i,f.parentFragment),void 0!==j?f.resolve(j):(f.ref=i,b.addUnresolved(f))}g.template.x&&(f.resolver=new e(f,m,g.template.x,h)),g.template.rx&&(f.resolver=new d(f,g.template.rx,h)),f.template.n!==a.SECTION_UNLESS||f.hasOwnProperty("value")||f.setValue(void 0)}}(R,v,t,dd,bd),fd=function(a){var b,c,d;void 0!=this.keypath&&(this.root.viewmodel.unregister(this.keypath,this),b=!0),this.keypath=a,void 0!=a&&(c=this.root.viewmodel.get(a),this.root.viewmodel.register(a,this)),this.setValue(c),b&&(d=this.twowayBinding)&&d.rebound()},gd=function(a){return function(b,c,d,e){var f;this.fragments&&this.fragments.forEach(function(a){return a.rebind(b,c,d,e)}),this.resolver&&this.resolver.rebind(b,c,d,e),void 0!==this.keypath?(f=a(this.keypath,d,e),void 0!==f&&this.resolve(f)):void 0!==b&&this.indexRef===b&&this.setValue(c)}}(Yc),hd=function(a,b,c,d){return{getValue:a,init:b,resolve:c,rebind:d}}(Vc,ed,fd,gd),id=function(a,b,c,d,e,f,g,h){var i=function(b){this.type=a.INTERPOLATOR,g.init(this,b)};return i.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:g.resolve,rebind:g.rebind,detach:h,unbind:f,render:function(){return this.node||(this.node=document.createTextNode(void 0!=this.value?this.value:"")),this.node},unrender:function(a){a&&d(this.node)},getValue:g.getValue,setValue:function(a){var c;(c=this.root.viewmodel.wrapped[this.keypath])&&(a=c.get()),e(a,this.value)||(this.value=a,this.parentFragment.bubble(),this.node&&b.addView(this))},firstNode:function(){return this.node},toString:function(a){var b=void 0!=this.value?""+this.value:"";return a?c(b):b}},i}(R,v,Qc,Rc,r,Uc,hd,Sc),jd=function(){this.parentFragment.bubble()},kd=function(){var a;return 1===this.fragments.length?this.fragments[0].detach():(a=document.createDocumentFragment(),this.fragments.forEach(function(b){a.appendChild(b.detach())}),a)},ld=function(a){var b,c,d;for(c=this.fragments.length,b=0;c>b;b+=1)if(d=this.fragments[b].find(a))return d;return null},md=function(a,b){var c,d;for(d=this.fragments.length,c=0;d>c;c+=1)this.fragments[c].findAll(a,b)},nd=function(a,b){var c,d;for(d=this.fragments.length,c=0;d>c;c+=1)this.fragments[c].findAllComponents(a,b)},od=function(a){var b,c,d;for(c=this.fragments.length,b=0;c>b;b+=1)if(d=this.fragments[b].findComponent(a))return d;return null},pd=function(a){return this.fragments[a.index+1]?this.fragments[a.index+1].firstNode():this.parentFragment.findNextNode(this)},qd=function(){var a,b,c;if(a=this.fragments.length)for(b=0;a>b;b+=1)if(c=this.fragments[b].firstNode())return c;return this.parentFragment.findNextNode(this)},rd=function(a,b){var c;return b.push(function(){c=b.Fragment}),function(b){var c,d,e,f,g,h,i,j,k=this;if(!this.unbound){if(c=this.parentFragment,g=[],b.forEach(function(a,b){var c,e,f,h;return a===b?void(g[a]=k.fragments[b]):(c=k.fragments[b],void 0===d&&(d=b),-1===a?(k.fragmentsToUnrender.push(c),void c.unbind()):(e=a-b,f=k.keypath+"."+b,h=k.keypath+"."+a,c.rebind(k.template.i,a,f,h),void(g[a]=c)))}),f=this.root.get(this.keypath).length,void 0===d){if(this.length===f)return;d=this.length}for(this.length=this.fragments.length=f,a.addView(this),h={template:this.template.f,root:this.root,owner:this},this.template.i&&(h.indexRef=this.template.i),e=d;f>e;e+=1)(i=g[e])?this.docFrag.appendChild(i.detach(!1)):this.fragmentsToCreate.push(e),this.fragments[e]=i;j=c.findNextNode(this),this.parentFragment.getNode().insertBefore(this.docFrag,j)}}}(v,e),sd=function(){var a;return a=this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,a},td=function(a,b,c,d,e){function f(d,e){var f={template:d.template.f,root:d.root,pElement:d.parentFragment.pElement,owner:d};if(d.subtype)switch(d.subtype){case a.SECTION_IF:return j(d,e,!1,f);case a.SECTION_UNLESS:return j(d,e,!0,f);case a.SECTION_WITH:return i(d,f);case a.SECTION_EACH:if(c(e))return h(d,e,f)}return d.ordered=!!b(e),d.ordered?g(d,e,f):c(e)||"function"==typeof e?d.template.i?h(d,e,f):i(d,f):j(d,e,!1,f)}function g(a,b,c){var d,e,f;if(e=b.length,e===a.length)return!1;if(e<a.length)a.fragmentsToUnrender=a.fragments.splice(e,a.length-e),a.fragmentsToUnrender.forEach(k);else if(e>a.length)for(d=a.length;e>d;d+=1)c.context=a.keypath+"."+d,c.index=d,a.template.i&&(c.indexRef=a.template.i),f=new n(c),a.fragmentsToRender.push(a.fragments[d]=f);return a.length=e,!0}function h(a,b,c){var d,e,f,g,h;for(f=a.hasKey||(a.hasKey={}),e=a.fragments.length;e--;)g=a.fragments[e],g.index in b||(h=!0,g.unbind(),a.fragmentsToUnrender.push(g),a.fragments.splice(e,1),f[g.index]=!1);for(d in b)f[d]||(h=!0,c.context=a.keypath+"."+d,c.index=d,a.template.i&&(c.indexRef=a.template.i),g=new n(c),a.fragmentsToRender.push(g),a.fragments.push(g),f[d]=!0);return a.length=a.fragments.length,h}function i(a,b){var c;return a.length?void 0:(b.context=a.keypath,b.index=0,c=new n(b),a.fragmentsToRender.push(a.fragments[0]=c),a.length=1,!0)}function j(a,c,d,e){var f,g,h;if(g=b(c)&&0===c.length,f=d?g||!c:c&&!g){if(!a.length)return e.index=0,h=new n(e),a.fragmentsToRender.push(a.fragments[0]=h),a.length=1,!0;if(a.length>1)return a.fragmentsToUnrender=a.fragments.splice(1),a.fragmentsToUnrender.forEach(k),!0}else if(a.length)return a.fragmentsToUnrender=a.fragments.splice(0,a.fragments.length).filter(l),a.fragmentsToUnrender.forEach(k),a.length=a.fragmentsToRender.length=0,!0}function k(a){a.unbind()}function l(a){return a.rendered}var m,n;return e.push(function(){n=e.Fragment}),m=function(a){var b,c,e=this;this.updating||(this.updating=!0,(b=this.root.viewmodel.wrapped[this.keypath])&&(a=b.get()),this.fragmentsToCreate.length?(c={template:this.template.f,root:this.root,pElement:this.pElement,owner:this,indexRef:this.template.i},this.fragmentsToCreate.forEach(function(a){var b;c.context=e.keypath+"."+a,c.index=a,b=new n(c),e.fragmentsToRender.push(e.fragments[a]=b)}),this.fragmentsToCreate.length=0):f(this,a)&&(this.bubble(),this.rendered&&d.addView(this)),this.value=a,this.updating=!1)}}(R,g,h,v,e),ud=function(a,b){function c(a){a.unbind()}function d(a,b){var c,d=[];for(c=a;b>c;c+=1)d.push(c);return d}function e(a,b,c,d){var e,f,g,h,i;for(g=a.template.i,e=b;c>e;e+=1)f=a.fragments[e],h=a.keypath+"."+(e-d),i=a.keypath+"."+e,f.index=e,f.rebind(g,e,h,i)}var f,g;return b.push(function(){g=b.Fragment}),f=function(b){var f,g,h,i,j,k=this;if(!this.unbound&&(f=b.balance)){if(a.addView(k),g=b.rangeStart,k.length+=f,0>f)return k.fragmentsToUnrender=k.fragments.splice(g,-f),k.fragmentsToUnrender.forEach(c),void e(k,g,k.length,f);h=g+b.removed,i=g+b.added,j=[h,0],j.length+=f,k.fragments.splice.apply(k.fragments,j),e(k,i,k.length,f),k.fragmentsToCreate=d(h,i)}}}(v,e),vd=function(a){var b,c,d;for(b="",c=0,d=this.length,c=0;d>c;c+=1)b+=this.fragments[c].toString(a);return b},wd=function(a){function b(a){a.unbind()}var c;return c=function(){this.fragments.forEach(b),a.call(this),this.length=0,this.unbound=!0}}(Uc),xd=function(){function a(a){a.unrender(!0)}function b(a){a.unrender(!1)}var c;return c=function(c){this.fragments.forEach(c?a:b)}}(),yd=function(){for(var a,b,c,d,e;a=this.fragmentsToUnrender.pop();)a.unrender(!0);if(this.fragmentsToRender.length){for(this.rendered&&(e=this.parentFragment.getNode());a=this.fragmentsToRender.shift();)b=a.render(),this.docFrag.appendChild(b),this.rendered&&this.ordered&&(c=this.fragments[a.index+1],c&&c.rendered&&e.insertBefore(this.docFrag,c.firstNode()||null));this.rendered&&this.docFrag.childNodes.length&&(d=this.parentFragment.findNextNode(this),e.insertBefore(this.docFrag,d))}},zd=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){var s=function(c){this.type=a.SECTION,this.subtype=c.template.n,this.inverted=this.subtype===a.SECTION_UNLESS,this.pElement=c.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],this.length=0,b.init(this,c)};return s.prototype={bubble:c,detach:d,find:e,findAll:f,findAllComponents:g,findComponent:h,findNextNode:i,firstNode:j,getValue:b.getValue,merge:k,rebind:b.rebind,render:l,resolve:b.resolve,setValue:m,splice:n,toString:o,unbind:p,unrender:q,update:r},s}(R,hd,jd,kd,ld,md,nd,od,pd,qd,rd,sd,td,ud,vd,wd,xd,yd),Ad=function(){var a,b;if(this.docFrag){for(a=this.nodes.length,b=0;a>b;b+=1)this.docFrag.appendChild(this.nodes[b]);return this.docFrag}},Bd=function(a){return function(b){var c,d,e,f;for(d=this.nodes.length,c=0;d>c;c+=1)if(e=this.nodes[c],1===e.nodeType){if(a(e,b))return e;if(f=e.querySelector(b))return f}return null}}($b),Cd=function(a){return function(b,c){var d,e,f,g,h,i;for(e=this.nodes.length,d=0;e>d;d+=1)if(f=this.nodes[d],1===f.nodeType&&(a(f,b)&&c.push(f),g=f.querySelectorAll(b)))for(h=g.length,i=0;h>i;i+=1)c.push(g[i])}}($b),Dd=function(){return this.rendered&&this.nodes[0]?this.nodes[0]:this.parentFragment.findNextNode(this)},Ed=function(a,b){function c(a){return g[a]||(g[a]=b(a))}var d,e,f,g={};try{b("table").innerHTML="foo"}catch(h){e=!0,f={TABLE:['<table class="x">',"</table>"],THEAD:['<table><thead class="x">',"</thead></table>"],TBODY:['<table><tbody class="x">',"</tbody></table>"],TR:['<table><tr class="x">',"</tr></table>"],SELECT:['<select class="x">',"</select>"]}}return d=function(b,d,g){var h,i,j,k,l,m=[];if(null!=b&&""!==b){for(e&&(i=f[d.tagName])?(h=c("DIV"),h.innerHTML=i[0]+b+i[1],h=h.querySelector(".x"),"SELECT"===h.tagName&&(j=h.options[h.selectedIndex])):d.namespaceURI===a.svg?(h=c("DIV"),h.innerHTML='<svg class="x">'+b+"</svg>",h=h.querySelector(".x")):(h=c(d.tagName),h.innerHTML=b);k=h.firstChild;)m.push(k),g.appendChild(k);if(e&&"SELECT"===d.tagName)for(l=m.length;l--;)m[l]!==j&&(m[l].selected=!1)}return m}}(z,A),Fd=function(a){for(var b=[],c=a.length;c--;)b[c]=a[c];return b},Gd=function(a){function b(a){return a.selected}var c;return c=function(c){var d,e,f;c&&"select"===c.name&&c.binding&&(d=a(c.node.options).filter(b),c.getAttribute("multiple")?f=d.map(function(a){return a.value}):(e=d[0])&&(f=e.value),void 0!==f&&c.binding.setValue(f),c.bubble())}}(Fd),Hd=function(a,b){return function(){if(this.rendered)throw new Error("Attempted to render an item that was already rendered");return this.docFrag=document.createDocumentFragment(),this.nodes=a(this.value,this.parentFragment.getNode(),this.docFrag),b(this.pElement),this.rendered=!0,this.docFrag}}(Ed,Gd),Id=function(a){return function(b){var c;(c=this.root.viewmodel.wrapped[this.keypath])&&(b=c.get()),b!==this.value&&(this.value=b,this.parentFragment.bubble(),this.rendered&&a.addView(this))}}(v),Jd=function(a){return function(){return void 0!=this.value?a(""+this.value):""}}(Cb),Kd=function(a){return function(b){this.rendered&&b&&(this.nodes.forEach(a),this.rendered=!1)}}(Rc),Ld=function(a,b){return function(){var c,d;if(this.rendered){for(;this.nodes&&this.nodes.length;)c=this.nodes.pop(),c.parentNode.removeChild(c);d=this.parentFragment.getNode(),this.nodes=a(this.value,d,this.docFrag),d.insertBefore(this.docFrag,this.parentFragment.findNextNode(this)),b(this.pElement)}}}(Ed,Gd),Md=function(a,b,c,d,e,f,g,h,i,j,k,l){var m=function(c){this.type=a.TRIPLE,b.init(this,c)};return m.prototype={detach:c,find:d,findAll:e,firstNode:f,getValue:b.getValue,rebind:b.rebind,render:g,resolve:b.resolve,setValue:h,toString:i,unbind:l,unrender:j,update:k},m}(R,hd,Ad,Bd,Cd,Dd,Hd,Id,Jd,Kd,Ld,Uc),Nd=function(){this.parentFragment.bubble()},Od=function(){var a,b=this.node;return b?((a=b.parentNode)&&a.removeChild(b),b):void 0},Pd=function(a){return function(b){return a(this.node,b)?this.node:this.fragment&&this.fragment.find?this.fragment.find(b):void 0}}($b),Qd=function(a,b){b._test(this,!0)&&b.live&&(this.liveQueries||(this.liveQueries=[])).push(b),this.fragment&&this.fragment.findAll(a,b)},Rd=function(a,b){this.fragment&&this.fragment.findAllComponents(a,b)},Sd=function(a){return this.fragment?this.fragment.findComponent(a):void 0},Td=function(){return null},Ud=function(){return this.node},Vd=function(a){return this.attributes&&this.attributes[a]?this.attributes[a].value:void 0},Wd=function(){var a,b,c,d;return a="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),b="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),c=function(a){for(var b={},c=a.length;c--;)b[a[c].toLowerCase()]=a[c];return b},d=c(a.concat(b)),function(a){var b=a.toLowerCase();return d[b]||b}}(),Xd=function(a){return function(){var b=this.fragment.getValue();b!==this.value&&("id"===this.name&&this.value&&delete this.root.nodes[this.value],this.value=b,"value"===this.name&&this.node&&(this.node._ractive.value=b),this.rendered&&a.addView(this))}}(v),Yd=function(){var a=/^(allowFullscreen|async|autofocus|autoplay|checked|compact|controls|declare|default|defaultChecked|defaultMuted|defaultSelected|defer|disabled|draggable|enabled|formNoValidate|hidden|indeterminate|inert|isMap|itemScope|loop|multiple|muted|noHref|noResize|noShade|noValidate|noWrap|open|pauseOnExit|readOnly|required|reversed|scoped|seamless|selected|sortable|translate|trueSpeed|typeMustMatch|visible)$/i;return a}(),Zd=function(a,b){return function(c,d){var e,f;if(e=d.indexOf(":"),-1===e||(f=d.substr(0,e),"xmlns"===f))c.name=c.element.namespace!==a.html?b(d):d;else if(d=d.substring(e+1),c.name=b(d),c.namespace=a[f.toLowerCase()],!c.namespace)throw'Unknown namespace ("'+f+'")'}}(z,Wd),$d=function(a){return function(b){var c=b.fragment.items;if(1===c.length)return c[0].type===a.INTERPOLATOR?c[0]:void 0}}(R),_d=function(a,b){var c={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"};return function(d,e){var f;!d.pNode||d.namespace||e.pNode.namespaceURI&&e.pNode.namespaceURI!==a.html||(f=c[d.name]||d.name,void 0!==e.pNode[f]&&(d.propertyName=f),(b.test(f)||"value"===f)&&(d.useProperty=!0))}}(z,Yd),ae=function(a,b,c,d,e,f){var g;return f.push(function(){g=f.Fragment}),function(f){return this.type=a.ATTRIBUTE,this.element=f.element,this.root=f.root,c(this,f.name),f.value&&"string"!=typeof f.value?(this.parentFragment=this.element.parentFragment,this.fragment=new g({template:f.value,root:this.root,owner:this}),this.value=this.fragment.getValue(),this.interpolator=d(this),this.isBindable=!!this.interpolator&&!this.interpolator.isStatic,e(this,f),void(this.ready=!0)):void(this.value=b.test(this.name)?!0:f.value||"")}}(R,Yd,Zd,$d,_d,e),be=function(a,b,c,d){this.fragment&&this.fragment.rebind(a,b,c,d)},ce=function(a,b){var c={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"};return function(d){var e;this.node=d,d.namespaceURI&&d.namespaceURI!==a.html||(e=c[this.name]||this.name,void 0!==d[e]&&(this.propertyName=e),(b.test(e)||"value"===e)&&(this.useProperty=!0),"value"===e&&(this.useProperty=!0,d._ractive.value=this.value)),this.rendered=!0,this.update()}}(z,Yd),de=function(a){function b(a){return a.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'")}var c;return c=function(){var c=(f=this).name,d=f.value,e=f.interpolator,f=f.fragment;if(("value"!==c||"select"!==this.element.name&&"textarea"!==this.element.name)&&("value"!==c||void 0===this.element.getAttribute("contenteditable")))return"name"===c&&"input"===this.element.name&&e?"name={{"+(e.keypath||e.ref)+"}}":a.test(c)?d?c:"":(f&&(d=f.toString()),d?c+'="'+b(d)+'"':c)}}(Yd),ee=function(){this.fragment&&this.fragment.unbind()},fe=function(){var a,b,c,d,e=this.value;if(!this.locked)for(this.node._ractive.value=e,a=this.node.options,d=a.length;d--;)if(b=a[d],c=b._ractive?b._ractive.value:b.value,c==e){b.selected=!0;break}},ge=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]==b)return!0;return!1},he=function(a,b){return function(){var c,d,e,f,g=this.value;for(b(g)||(g=[g]),c=this.node.options,d=c.length;d--;)e=c[d],f=e._ractive?e._ractive.value:e.value,e.selected=a(g,f)}}(ge,g),ie=function(){var a=(b=this).node,b=b.value;a.checked=b==a._ractive.value},je=function(a){return function(){var b,c,d,e,f=this.node;if(b=f.checked,f.value=this.element.getAttribute("value"),f.checked=this.element.getAttribute("value")===this.element.getAttribute("name"),b&&!f.checked&&this.element.binding&&(d=this.element.binding.siblings,e=d.length)){for(;e--;){if(c=d[e],!c.element.node)return;if(c.element.node.checked)return a.addViewmodel(c.root.viewmodel),c.handleChange()}a.addViewmodel(c.root.viewmodel),this.root.viewmodel.set(c.keypath,void 0)}}}(v),ke=function(a){return function(){var b,c;b=this.node,c=this.value,b.checked=a(c)?-1!==c.indexOf(b._ractive.value):c==b._ractive.value}}(g),le=function(){var a,b;a=this.node,b=this.value,void 0===b&&(b=""),a.className=b},me=function(){var a,b;a=this.node,b=this.value,void 0!==b&&(this.root.nodes[b]=void 0),this.root.nodes[b]=a,a.id=b},ne=function(){var a,b;a=this.node,b=this.value,void 0===b&&(b=""),a.style.setAttribute("cssText",b)},oe=function(){var a=this.value;void 0===a&&(a=""),this.locked||(this.node.innerHTML=a)},pe=function(){var a=(b=this).node,b=b.value;a._ractive.value=b,this.locked||(a.value=void 0==b?"":b)},qe=function(){this.locked||(this.node[this.propertyName]=this.value)},re=function(a){return function(){var b=(f=this).node,c=f.namespace,d=f.name,e=f.value,f=f.fragment;c?b.setAttributeNS(c,d,(f||e).toString()):a.test(d)?e?b.setAttribute(d,""):b.removeAttribute(d):b.setAttribute(d,(f||e).toString())}}(Yd),se=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return function(){var o,p,q=(s=this).name,r=s.element,s=s.node;"id"===q?p=i:"value"===q?"select"===r.name&&"value"===q?p=r.getAttribute("multiple")?d:c:"textarea"===r.name?p=l:null!=r.getAttribute("contenteditable")?p=k:"input"===r.name&&(o=r.getAttribute("type"),p="file"===o?b:"radio"===o&&r.binding&&"name"===r.binding.name?f:l):this.twoway&&"name"===q?"radio"===s.type?p=e:"checkbox"===s.type&&(p=g):"style"===q&&s.style.setAttribute?p=j:"class"!==q||s.namespaceURI&&s.namespaceURI!==a.html?this.useProperty&&(p=m):p=h,p||(p=n),this.update=p,this.update()}}(z,Rb,fe,he,ie,je,ke,le,me,ne,oe,pe,qe,re),te=function(a,b,c,d,e,f,g){var h=function(a){this.init(a)};return h.prototype={bubble:a,init:b,rebind:c,render:d,toString:e,unbind:f,update:g},h}(Xd,ae,be,ce,de,ee,se),ue=function(a){return function(b,c){var d,e,f=[];for(d in c)c.hasOwnProperty(d)&&(e=new a({element:b,name:d,value:c[d],root:b.root}),f.push(f[d]=e));return f}}(te),ve=function(a){for(var b,c,d=Array.prototype.slice,e=d.call(arguments,1);c=e.shift();)for(b in c)c.hasOwnProperty(b)&&(a[b]=c[b]);return a},we=function(a,b,c,d,e){var f=function(a){var c,d,e;return this.element=a,this.root=a.root,this.attribute=a.attributes[this.name||"value"],c=this.attribute.interpolator,c.twowayBinding=this,c.keypath&&"${"===c.keypath.substr?(b("Two-way binding does not work with expressions: "+c.keypath),!1):(c.keypath||(c.ref&&c.resolve(c.ref),c.resolver&&c.resolver.forceResolution()),this.keypath=d=c.keypath,void(void 0===this.root.viewmodel.get(d)&&this.getInitialValue&&(e=this.getInitialValue(),void 0!==e&&this.root.viewmodel.set(d,e))))};return f.prototype={handleChange:function(){var b=this;a.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),a.scheduleTask(function(){return b.attribute.locked=!1}),a.end()},rebound:function(){var a,b,c;b=this.keypath,c=this.attribute.interpolator.keypath,b!==c&&(e(this.root._twowayBindings[b],this),this.keypath=c,a=this.root._twowayBindings[c]||(this.root._twowayBindings[c]=[]),a.push(this))},unbind:function(){}},f.extend=function(a){var b,e=this;return b=function(a){f.call(this,a),this.init&&this.init()},b.prototype=c(e.prototype),d(b.prototype,a),b.extend=f.extend,b},f}(v,L,S,ve,n),xe=function(){this._ractive.binding.handleChange()},ye=function(a,b){var c=a.extend({getInitialValue:function(){return this.element.fragment?this.element.fragment.toString():""},render:function(){var a=this.element.node;a.addEventListener("change",b,!1),this.root.lazy||(a.addEventListener("input",b,!1),a.attachEvent&&a.addEventListener("keyup",b,!1))},unrender:function(){var a=this.element.node;a.removeEventListener("change",b,!1),a.removeEventListener("input",b,!1),a.removeEventListener("keyup",b,!1)},getValue:function(){return this.element.node.innerHTML}});return c}(we,xe),ze=function(){var a={};return function(b,c,d){var e=b+c+d;return a[e]||(a[e]=[])}}(),Ae=function(a,b,c,d,e){var f=c.extend({name:"checked",init:function(){this.siblings=d(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var a=this.element.node;a.addEventListener("change",e,!1),a.attachEvent&&a.addEventListener("click",e,!1)},unrender:function(){var a=this.element.node;a.removeEventListener("change",e,!1),a.removeEventListener("click",e,!1)},handleChange:function(){a.start(this.root),this.siblings.forEach(function(a){a.root.viewmodel.set(a.keypath,a.getValue())}),a.end()},getValue:function(){return this.element.node.checked},unbind:function(){b(this.siblings,this)}});return f}(v,n,we,ze,xe),Be=function(a,b,c,d){var e=b.extend({name:"name",init:function(){this.siblings=d(this.root._guid,"radioname",this.keypath),this.siblings.push(this),this.radioName=!0,this.attribute.twoway=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0
|
14 |
+
},render:function(){var a=this.element.node;a.name="{{"+this.keypath+"}}",a.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),a.addEventListener("change",c,!1),a.attachEvent&&a.addEventListener("click",c,!1)},unrender:function(){var a=this.element.node;a.removeEventListener("change",c,!1),a.removeEventListener("click",c,!1)},getValue:function(){var a=this.element.node;return a._ractive?a._ractive.value:a.value},handleChange:function(){this.element.node.checked&&b.prototype.handleChange.call(this)},rebound:function(a,c,d,e){var f;b.prototype.rebound.call(this,a,c,d,e),(f=this.element.node)&&(f.name="{{"+this.keypath+"}}")},unbind:function(){a(this.siblings,this)}});return e}(n,we,xe,ze),Ce=function(a,b,c,d,e){function f(a){return a.isChecked}function g(a){return a.element.getAttribute("value")}var h=c.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var b,c,e;this.checkboxName=!0,this.siblings=d(this.root._guid,"checkboxes",this.keypath),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),e=this.siblings.noInitialValue,b=this.root.viewmodel.get(this.keypath),c=this.element.getAttribute("value"),e?(this.isChecked=this.element.getAttribute("checked"),this.isChecked&&b.push(c)):this.isChecked=a(b)?-1!==b.indexOf(c):b===c},unbind:function(){b(this.siblings,this)},render:function(){var a=this.element.node;a.name="{{"+this.keypath+"}}",a.checked=this.isChecked,a.addEventListener("change",e,!1),a.attachEvent&&a.addEventListener("click",e,!1)},unrender:function(){var a=this.element.node;a.removeEventListener("change",e,!1),a.removeEventListener("click",e,!1)},changed:function(){var a=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===a},handleChange:function(){this.isChecked=this.element.node.checked,c.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(f).map(g)}});return h}(g,n,we,ze,xe),De=function(a,b){var c=a.extend({name:"checked",render:function(){var a=this.element.node;a.addEventListener("change",b,!1),a.attachEvent&&a.addEventListener("click",b,!1)},unrender:function(){var a=this.element.node;a.removeEventListener("change",b,!1),a.removeEventListener("click",b,!1)},getValue:function(){return this.element.node.checked}});return c}(we,xe),Ee=function(a,b,c){var d=b.extend({getInitialValue:function(){var a,b,c,d,e=this.element.options;if(void 0===this.element.getAttribute("value")&&(b=a=e.length,a)){for(;b--;)if(e[b].getAttribute("selected")){c=e[b].getAttribute("value"),d=!0;break}if(!d)for(;++b<a;)if(!e[b].getAttribute("disabled")){c=e[b].getAttribute("value");break}return void 0!==c&&(this.element.attributes.value.value=c),c}},render:function(){this.element.node.addEventListener("change",c,!1)},unrender:function(){this.element.node.removeEventListener("change",c,!1)},setValue:function(b){a.addViewmodel(this.root.viewmodel),this.root.viewmodel.set(this.keypath,b)},getValue:function(){var a,b,c,d,e;for(a=this.element.node.options,c=a.length,b=0;c>b;b+=1)if(d=a[b],a[b].selected)return e=d._ractive?d._ractive.value:d.value},forceUpdate:function(){var b=this,c=this.getValue();void 0!==c&&(this.attribute.locked=!0,a.addViewmodel(this.root.viewmodel),a.scheduleTask(function(){return b.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,c))}});return d}(v,we,xe),Fe=function(a){return function(b,c){var d;if(!a(b)||!a(c))return!1;if(b.length!==c.length)return!1;for(d=b.length;d--;)if(b[d]!==c[d])return!1;return!0}}(g),Ge=function(a,b,c,d){var e=c.extend({getInitialValue:function(){return this.element.options.filter(function(a){return a.getAttribute("selected")}).map(function(a){return a.getAttribute("value")})},render:function(){var a;this.element.node.addEventListener("change",d,!1),a=this.root.viewmodel.get(this.keypath),void 0===a&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",d,!1)},setValue:function(){throw new Error("TODO not implemented yet")},getValue:function(){var a,b,c,d,e,f;for(a=[],b=this.element.node.options,d=b.length,c=0;d>c;c+=1)e=b[c],e.selected&&(f=e._ractive?e._ractive.value:e.value,a.push(f));return a},handleChange:function(){var a,d,e;return a=this.attribute,d=a.value,e=this.getValue(),void 0!==d&&b(e,d)||c.prototype.handleChange.call(this),this},forceUpdate:function(){var b=this,c=this.getValue();void 0!==c&&(this.attribute.locked=!0,a.addViewmodel(this.root.viewmodel),a.scheduleTask(function(){return b.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,c))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}});return e}(v,Fe,Ee,xe),He=function(a,b){var c=a.extend({render:function(){this.element.node.addEventListener("change",b,!1)},unrender:function(){this.element.node.removeEventListener("change",b,!1)},getValue:function(){return this.element.node.files}});return c}(we,xe),Ie=function(a,b){function c(){var a;b.call(this),a=this._ractive.root.viewmodel.get(this._ractive.binding.keypath,f),this.value=void 0==a?"":a}var d,e,f;return f={evaluateWrapped:!0},e=a.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var a=this.element.node;a.addEventListener("change",b,!1),this.root.lazy||(a.addEventListener("input",b,!1),a.attachEvent&&a.addEventListener("keyup",b,!1)),a.addEventListener("blur",c,!1)},unrender:function(){var a=this.element.node;a.removeEventListener("change",b,!1),a.removeEventListener("input",b,!1),a.removeEventListener("keyup",b,!1),a.removeEventListener("blur",c,!1)}}),d=e}(we,xe),Je=function(a){return a.extend({getInitialValue:function(){return void 0},getValue:function(){var a=parseFloat(this.element.node.value);return isNaN(a)?void 0:a}})}(Ie),Ke=function(a,b,c,d,e,f,g,h,i,j,k){function l(a){return a&&a.isBindable}var m;return m=function(m){var n,o,p,q,r=m.attributes;return m.binding&&(m.binding.teardown(),m.binding=null),m.getAttribute("contenteditable")&&l(r.value)?o=b:"input"===m.name?(n=m.getAttribute("type"),"radio"===n||"checkbox"===n?(p=l(r.name),q=l(r.checked),p&&q&&a.error({message:"badRadioInputBinding"}),p?o="radio"===n?d:e:q&&(o="radio"===n?c:f)):"file"===n&&l(r.value)?o=i:l(r.value)&&(o="number"===n||"range"===n?j:k)):"select"===m.name&&l(r.value)?o=m.getAttribute("multiple")?h:g:"textarea"===m.name&&l(r.value)&&(o=k),o?new o(m):void 0}}(Zc,ye,Ae,Be,Ce,De,Ee,Ge,He,Je,Ie),Le=function(){var a=this.getAction();a&&!this.hasListener?this.listen():!a&&this.hasListener&&this.unrender()},Me=function(a){return function(b){a(this.root,this.getAction(),{event:b})}}(m),Ne=function(){return this.action.toString().trim()},Oe=function(a,b,c,d,e,f,g){function h(a){var b,c,d;if(b=this.root,"function"!=typeof b[this.method])throw new Error('Attempted to call a non-existent method ("'+this.method+'")');c=this.args.map(function(c){var d,e,f;if(!c)return void 0;if(c.indexRef)return c.value;if(c.eventObject){if(d=a,e=c.refinements.length)for(f=0;e>f;f+=1)d=d[c.refinements[f]]}else d=b.get(c.keypath);return d}),d=this.fn.apply(null,c),b[this.method].apply(b,d)}function i(a){f(this.root,this.getAction(),{event:a,args:this.params})}function j(a){var b=this.dynamicParams.getValue(m);"string"==typeof b&&(b=b.substr(1,b.length-2)),f(this.root,this.getAction(),{event:a,args:b})}var k,l,m={args:!0},n=/^event(?:\.(.+))?/;return e.push(function(){l=e.Fragment}),k=function(e,f,k){var m,o,p,q,r,s=this;s.element=e,s.root=e.root,s.name=f,-1!==f.indexOf("*")&&(g.error({debug:this.root.debug,message:"noElementProxyEventWildcards",args:{element:e.tagName,event:f}}),this.invalid=!0),k.m?(s.method=k.m,s.args=o=[],s.unresolved=[],s.refs=k.a.r,s.fn=b(k.a.s,s.refs.length),r=e.parentFragment,p=r.indexRefs,q=s.root,k.a.r.forEach(function(b,e){var f,g,h,i;return p&&void 0!==(f=p[b])?void(o[e]={indexRef:b,value:f}):(h=n.exec(b))?void(o[e]={eventObject:!0,refinements:h[1]?h[1].split("."):[]}):(g=c(q,b,r))?void(o[e]={keypath:g}):(o[e]=null,i=new d(q,b,r,function(b){s.resolve(e,b),a(s.unresolved,i)}),void s.unresolved.push(i))}),this.fire=h):(m=k.n||k,"string"!=typeof m&&(m=new l({template:m,root:this.root,owner:this})),this.action=m,k.d?(this.dynamicParams=new l({template:k.d,root:this.root,owner:this.element}),this.fire=j):k.a&&(this.params=k.a,this.fire=i))}}(n,$c,t,Wc,e,m,Zc),Pe=function(a){var b,c;b=this._ractive,c=b.events[a.type],c.fire({node:this,original:a,index:b.index,keypath:b.keypath,context:b.root.get(b.keypath)})},Qe=function(a,b,c){function d(a){return f[a]||(f[a]=function(b){var c=b.node._ractive;b.index=c.index,b.keypath=c.keypath,b.context=c.root.get(c.keypath),c.events[a].fire(b)}),f[a]}var e,f={};return e=function(){var e,f=this.name;this.invalid||((e=a.registries.events.find(this.root,f))?this.custom=e(this.node,d(f)):("on"+f in this.node||window&&"on"+f in window||c.error({debug:this.root.debug,message:"missingPlugin",args:{plugin:"event",name:f}}),this.node.addEventListener(f,b,!1)),this.hasListener=!0)}}(Ub,Pe,Zc),Re=function(a){return function(b,c,d,e){return this.method?void this.args.forEach(function(f){f.indexRef&&f.indexRef===b&&(f.value=c),f.keypath&&(e=a(f.keypath,d,e))&&(f.keypath=e)}):("string"!=typeof this.action&&this.action.rebind(b,c,d,e),void(this.dynamicParams&&this.dynamicParams.rebind(b,c,d,e)))}}(Yc),Se=function(){this.node=this.element.node,this.node._ractive.events[this.name]=this,(this.method||this.getAction())&&this.listen()},Te=function(a,b){this.args[a]={keypath:b}},Ue=function(){function a(a){a.teardown()}var b;return b=function(){return this.method?void this.unresolved.forEach(a):("string"!=typeof this.action&&this.action.unbind(),void(this.dynamicParams&&this.dynamicParams.unbind()))}}(),Ve=function(a){return function(){this.custom?this.custom.teardown():this.node.removeEventListener(this.name,a,!1),this.hasListener=!1}}(Pe),We=function(a,b,c,d,e,f,g,h,i,j){var k=function(a,b,c){this.init(a,b,c)};return k.prototype={bubble:a,fire:b,getAction:c,init:d,listen:e,rebind:f,render:g,resolve:h,unbind:i,unrender:j},k}(Le,Me,Ne,Oe,Qe,Re,Se,Te,Ue,Ve),Xe=function(a){return function(b,c){var d,e,f,g,h=[];for(e in c)if(c.hasOwnProperty(e))for(f=e.split("-"),d=f.length;d--;)g=new a(b,f[d],c[e]),h.push(g);return h}}(We),Ye=function(a,b,c){var d,e,f;return b.push(function(){d=b.Fragment}),e={args:!0},f=function(b,f){var g,h,i,j=this;j.element=b,j.root=g=b.root,h=f.n||f,"string"!=typeof h&&(i=new d({template:h,root:g,owner:b}),h=i.toString(),i.unbind()),f.a?j.params=f.a:f.d&&(j.fragment=new d({template:f.d,root:g,owner:b}),j.params=j.fragment.getValue(e),j.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,j.params=this.getValue(e),j.ready&&j.update()}),j.fn=c.registries.decorators.find(g,h),j.fn||a.error({debug:g.debug,message:"missingPlugin",args:{plugin:"decorator",name:h}})},f.prototype={init:function(){var a,b,c,d=this;if(a=d.element.node,d.params?(c=[a].concat(d.params),b=d.fn.apply(d.root,c)):b=d.fn.call(d.root,a),!b||!b.teardown)throw new Error("Decorator definition must return an object with a teardown method");d.actual=b,d.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(a,b,c,d){this.fragment&&this.fragment.rebind(a,b,c,d)},teardown:function(a){this.actual.teardown(),!a&&this.fragment&&this.fragment.unbind()}},f}(Zc,e,Ub),Ze=function(a){function b(a,b){for(var c=a.length;c--;)if(a[c]==b)return!0}var c;return c=function(c){var d,e,f,g,h;d=c.node,d&&(g=a(d.options),e=c.getAttribute("value"),f=c.getAttribute("multiple"),void 0!==e?(g.forEach(function(a){var c,d;c=a._ractive?a._ractive.value:a.value,d=f?b(e,c):e==c,d&&(h=!0),a.selected=d}),h||(g[0]&&(g[0].selected=!0),c.binding&&c.binding.forceUpdate())):c.binding&&c.binding.forceUpdate())}}(Fd),$e=function(a,b){return function(){var c=this;this.dirty||(this.dirty=!0,a.scheduleTask(function(){b(c),c.dirty=!1})),this.parentFragment.bubble()}}(v,Ze),_e=function(a){do if("select"===a.name)return a;while(a=a.parent)},af=function(a){return function(b,c){b.select=a(b.parent),b.select&&(b.select.options.push(b),c.a||(c.a={}),c.a.value||c.a.hasOwnProperty("disabled")||(c.a.value=c.f),"selected"in c.a&&void 0!==b.select.getAttribute("value")&&delete c.a.selected)}}(_e),bf=function(a,b,c,d,e,f,g,h,i){var j;return i.push(function(){j=i.Fragment}),function(i){var k,l,m,n,o;this.type=a.ELEMENT,k=this.parentFragment=i.parentFragment,l=this.template=i.template,this.parent=i.pElement||k.pElement,this.root=m=k.root,this.index=i.index,this.name=b(l.e),"option"===this.name&&h(this,l),"select"===this.name&&(this.options=[],this.bubble=g),this.attributes=c(this,l.a),l.f&&(this.fragment=new j({template:l.f,root:m,owner:this,pElement:this})),m.twoway&&(n=d(this,l.a))&&(this.binding=n,o=this.root._twowayBindings[n.keypath]||(this.root._twowayBindings[n.keypath]=[]),o.push(n)),l.v&&(this.eventHandlers=e(this,l.v)),l.o&&(this.decorator=new f(this,l.o)),this.intro=l.t0||l.t1,this.outro=l.t0||l.t2}}(R,Wd,ue,Ke,Xe,Ye,$e,af,e),cf=function(a){return function(b,c){return b===c||a(b,c)}}(Xc),df=function(a,b){return function(c,d,e,f){var g=c[d];g&&!a(g,f)&&a(g,e)&&(c[d]=b(g,e,f))}}(cf,Yc),ef=function(a){return function(b,c,d,e){function f(a){a.rebind(b,c,d,e)}var g,h,i,j;if(this.attributes&&this.attributes.forEach(f),this.eventHandlers&&this.eventHandlers.forEach(f),this.decorator&&f(this.decorator),this.fragment&&f(this.fragment),i=this.liveQueries)for(j=this.root,g=i.length;g--;)i[g]._makeDirty();this.node&&(h=this.node._ractive)&&(a(h,"keypath",d,e),void 0!=b&&(h.index[b]=c))}}(df),ff=function(a){var b;(a.attributes.width||a.attributes.height)&&a.node.addEventListener("load",b=function(){var c=a.getAttribute("width"),d=a.getAttribute("height");void 0!==c&&a.node.setAttribute("width",c),void 0!==d&&a.node.setAttribute("height",d),a.node.removeEventListener("load",b,!1)},!1)},gf=function(a,b,c){var d,e={};return c.push(function(){d=c.Fragment}),function(c,f,g){var h,i,j,k=this;return k.element=c,k.root=h=c.root,k.isIntro=g,i=f.n||f,"string"!=typeof i&&(j=new d({template:i,root:h,owner:c}),i=j.toString(),j.unbind()),k.name=i,f.a?k.params=f.a:f.d&&(j=new d({template:f.d,root:h,owner:c}),k.params=j.getValue(e),j.unbind()),k._fn=b.registries.transitions.find(h,i),k._fn?void 0:void a.error({debug:h.debug,message:"missingPlugin",args:{plugin:"transition",name:i}})}}(Zc,Ub,e),hf=function(a){return a.replace(/-([a-zA-Z])/g,function(a,b){return b.toUpperCase()})},jf=function(a,b,c,d){var e,f,g;return a?(f={},g=c("div").style,e=function(a){var c,e,h;if(a=d(a),!f[a])if(void 0!==g[a])f[a]=a;else for(h=a.charAt(0).toUpperCase()+a.substring(1),c=b.length;c--;)if(e=b[c],void 0!==g[e+h]){f[a]=e+h;break}return f[a]}):e=null,e}(B,H,A,hf),kf=function(a,b,c,d){var e,f;return b?(f=window.getComputedStyle||a.getComputedStyle,e=function(a){var b,e,g,h,i;if(b=f(this.node),"string"==typeof a)return i=b[d(a)],"0px"===i&&(i=0),i;if(!c(a))throw new Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(e={},g=a.length;g--;)h=a[g],i=b[d(h)],"0px"===i&&(i=0),e[h]=i;return e}):e=null,e}(ub,B,g,jf),lf=function(a){return function(b,c){var d;if("string"==typeof b)this.node.style[a(b)]=c;else for(d in b)b.hasOwnProperty(d)&&(this.node.style[a(d)]=b[d]);return this}}(jf),mf=function(a,b,c){function d(a){return a}var e,f=function(e){var f;this.duration=e.duration,this.step=e.step,this.complete=e.complete,"string"==typeof e.easing?(f=e.root.easing[e.easing],f||(a('Missing easing function ("'+e.easing+'"). You may need to download a plugin from [TODO]'),f=d)):f="function"==typeof e.easing?e.easing:d,this.easing=f,this.start=b(),this.end=this.start+this.duration,this.running=!0,c.add(this)};return f.prototype={tick:function(a){var b,c;return this.running?a>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(b=a-this.start,c=this.easing(b/this.duration),this.step&&this.step(c),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}},e=f}(L,J,K),nf=function(a){var b=new RegExp("^-(?:"+a.join("|")+")-");return function(a){return a.replace(b,"")}}(H),of=function(a){var b=new RegExp("^(?:"+a.join("|")+")([A-Z])");return function(a){var c;return a?(b.test(a)&&(a="-"+a),c=a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()})):""}}(H),pf=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r={},s={};return a?(k=c("div").style,function(){void 0!==k.transition?(l="transition",m="transitionend",n=!0):void 0!==k.webkitTransition?(l="webkitTransition",m="webkitTransitionEnd",n=!0):n=!1}(),l&&(o=l+"Duration",p=l+"Property",q=l+"TimingFunction"),j=function(a,c,j,k,l){setTimeout(function(){var t,u,v,w,x;w=function(){u&&v&&(a.root.fire(a.name+":end",a.node,a.isIntro),l())},t=(a.node.namespaceURI||"")+a.node.tagName,a.node.style[p]=k.map(g).map(i).join(","),a.node.style[q]=i(j.easing||"linear"),a.node.style[o]=j.duration/1e3+"s",x=function(b){var c;c=k.indexOf(d(h(b.propertyName))),-1!==c&&k.splice(c,1),k.length||(a.node.removeEventListener(m,x,!1),v=!0,w())},a.node.addEventListener(m,x,!1),setTimeout(function(){for(var h,i,l,o,p,q=k.length,y=[];q--;)o=k[q],h=t+o,n&&!s[h]&&(a.node.style[g(o)]=c[o],r[h]||(i=a.getStyle(o),r[h]=a.getStyle(o)!=c[o],s[h]=!r[h],s[h]&&(a.node.style[g(o)]=i))),(!n||s[h])&&(void 0===i&&(i=a.getStyle(o)),l=k.indexOf(o),-1===l?b("Something very strange happened with transitions. If you see this message, please let @RactiveJS know. Thanks!"):k.splice(l,1),p=/[^\d]*$/.exec(c[o])[0],y.push({name:g(o),interpolator:e(parseFloat(i),parseFloat(c[o])),suffix:p}));y.length?new f({root:a.root,duration:j.duration,easing:d(j.easing||""),step:function(b){var c,d;for(d=y.length;d--;)c=y[d],a.node.style[c.name]=c.interpolator(b)+c.suffix},complete:function(){u=!0,w()}}):u=!0,k.length||(a.node.removeEventListener(m,x,!1),v=!0,w())},0)},j.delay||0)}):j=null,j}(B,L,A,hf,Vb,mf,jf,nf,of),qf=function(a){function b(){i.hidden=document[e]}function c(){i.hidden=!0}function d(){i.hidden=!1}var e,f,g,h,i;if("undefined"!=typeof document){if(e="hidden",i={},e in document)g="";else for(h=a.length;h--;)f=a[h],e=f+"Hidden",e in document&&(g=f);void 0!==g?(document.addEventListener(g+"visibilitychange",b),b()):("onfocusout"in document?(document.addEventListener("focusout",c),document.addEventListener("focusin",d)):(window.addEventListener("pagehide",c),window.addEventListener("blur",c),window.addEventListener("pageshow",d),window.addEventListener("focus",d)),i.hidden=!1)}return i}(H),rf=function(a,b,c,d,e,f,g){var h,i,j;return b?(i=window.getComputedStyle||a.getComputedStyle,h=function(a,b,h,k){var l,m=this;if(g.hidden)return this.setStyle(a,b),j||(j=d.resolve());"string"==typeof a?(l={},l[a]=b):(l=a,k=h,h=b),h||(c('The "'+m.name+'" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340'),h=m,k=m.complete);var n=new d(function(a){var b,c,d,g,j,k,n;if(!h.duration)return m.setStyle(l),void a();for(b=Object.keys(l),c=[],d=i(m.node),j={},k=b.length;k--;)n=b[k],g=d[e(n)],"0px"===g&&(g=0),g!=l[n]&&(c.push(n),m.node.style[e(n)]=g);return c.length?void f(m,l,h,c,a):void a()});return k&&(c("t.animateStyle returns a Promise as of 0.4.0. Transition authors should do t.animateStyle(...).then(callback)"),n.then(k)),n}):h=null,h}(ub,B,L,o,jf,pf,qf),sf=function(a,b){var c;for(c in b)!b.hasOwnProperty(c)||c in a||(a[c]=b[c]);return a},tf=function(a){return function(b,c){return"number"==typeof b?b={duration:b}:"string"==typeof b?b="slow"===b?{duration:600}:"fast"===b?{duration:200}:{duration:400}:b||(b={}),a(b,c)}}(sf),uf=function(){function a(a,b){b?a.setAttribute("style",b):(a.getAttribute("style"),a.removeAttribute("style"))}var b;return b=function(){var b,c,d=this;return b=d.node=d.element.node,c=b.getAttribute("style"),d.complete=function(e){!e&&d.isIntro&&a(b,c),b._ractive.transition=null,d._manager.remove(d)},d._fn?void d._fn.apply(d.root,[d].concat(d.params)):void d.complete()}}(),vf=function(a,b,c,d,e,f,g){var h,i;return g.push(function(){h=g.Fragment}),i=function(a,b,c){this.init(a,b,c)},i.prototype={init:a,start:f,getStyle:b,setStyle:c,animateStyle:d,processParams:e},i}(gf,kf,lf,rf,tf,uf,e),wf=function(a,b,c,d,e,f,g,h,i,j,k){function l(b){var c,d,e;return c=(d=b.getAttribute("xmlns"))?d:"svg"===b.name?a.svg:(e=b.parent)?"foreignObject"===e.name?a.html:e.node.namespaceURI:b.root.el.namespaceURI}function m(a){var c,d,e;if(a.select&&(d=a.select.getAttribute("value"),void 0!==d))if(c=a.getAttribute("value"),a.select.node.multiple&&b(d)){for(e=d.length;e--;)if(c==d[e]){a.node.selected=!0;break}}else a.node.selected=c==d}function n(a){var b,c,d,e,f;b=a.root;do for(c=b._liveQueries,d=c.length;d--;)e=c[d],f=c["_"+e],f._test(a)&&(a.liveQueries||(a.liveQueries=[])).push(f);while(b=b._parent)}var o,p,q;return p=function(){var a=this.node,b=this.fragment.toString(!1);if(a.styleSheet)a.styleSheet.cssText=b;else{for(;a.hasChildNodes();)a.removeChild(a.firstChild);a.appendChild(document.createTextNode(b))}},q=function(){this.node.type&&"text/javascript"!==this.node.type||c("Script tag was updated. This does not cause the code to be re-evaluated!"),this.node.text=this.fragment.toString(!1)},o=function(){var a,b,c=this,o=this.root;if(a=l(this),b=this.node=e(this.name,a),o.constructor.css&&this.parentFragment.getNode()===o.el&&this.node.setAttribute("data-rvcguid",o.constructor._guid),f(this.node,"_ractive",{value:{proxy:this,keypath:i(this.parentFragment),index:this.parentFragment.indexRefs,events:d(null),root:o}}),this.attributes.forEach(function(a){return a.render(b)}),this.fragment&&("script"===this.name?(this.bubble=q,this.node.text=this.fragment.toString(!1),this.fragment.unrender=g):"style"===this.name?(this.bubble=p,this.bubble(),this.fragment.unrender=g):this.binding&&this.getAttribute("contenteditable")?this.fragment.unrender=g:this.node.appendChild(this.fragment.render())),this.eventHandlers&&this.eventHandlers.forEach(function(a){return a.render()}),this.binding&&(this.binding.render(),this.node._ractive.binding=this.binding),"img"===this.name&&j(this),this.decorator&&this.decorator.fn&&h.scheduleTask(function(){c.decorator.init()}),o.transitionsEnabled&&this.intro){var r=new k(this,this.intro,!0);h.registerTransition(r),h.scheduleTask(function(){return r.start()})}return"option"===this.name&&m(this),this.node.autofocus&&h.scheduleTask(function(){return c.node.focus()}),n(this),this.node}}(z,g,L,S,A,C,Rb,v,q,ff,vf),xf=function(a,b,c){function d(a){var c,d,e;if(c=a.getAttribute("value"),void 0===c||!a.select)return!1;if(d=a.select.getAttribute("value"),d==c)return!0;if(a.select.getAttribute("multiple")&&b(d))for(e=d.length;e--;)if(d[e]==c)return!0}function e(a){var b,c,d,e;return b=a.attributes,c=b.type,d=b.value,e=b.name,c&&"radio"===c.value&&d&&e.interpolator&&d.value===e.interpolator.value?!0:void 0}function f(a){var b=a.toString();return b?" "+b:""}var g;return g=function(){var b,g;return b="<"+(this.template.y?"!DOCTYPE":this.template.e),b+=this.attributes.map(f).join(""),"option"===this.name&&d(this)&&(b+=" selected"),"input"===this.name&&e(this)&&(b+=" checked"),b+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?b+=c(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(b+=this.getAttribute("value")),this.fragment&&(g="script"!==this.name&&"style"!==this.name,b+=this.fragment.toString(g)),a.test(this.template.e)||(b+="</"+this.template.e+">"),b}}(yb,g,Qc),yf=function(a){return function(b){b.select&&a(b.select.options,b)}}(n),zf=function(a){function b(a){a.unbind()}var c;return c=function(){this.fragment&&this.fragment.unbind(),this.binding&&this.binding.unbind(),this.eventHandlers&&this.eventHandlers.forEach(b),"option"===this.name&&a(this),this.attributes.forEach(b)}}(yf),Af=function(a,b){function c(a){var b,c,d;for(d=a.liveQueries.length;d--;)b=a.liveQueries[d],c=b.selector,b._remove(a.node)}var d;return d=function(d){var e,f;if("option"===this.name?this.detach():d&&a.detachWhenReady(this),this.fragment&&this.fragment.unrender(!1),(e=this.binding)&&(this.binding.unrender(),this.node._ractive.binding=null,f=this.root._twowayBindings[e.keypath],f.splice(f.indexOf(e),1)),this.eventHandlers&&this.eventHandlers.forEach(function(a){return a.unrender()}),this.decorator&&this.decorator.teardown(),this.root.transitionsEnabled&&this.outro){var g=new b(this,this.outro,!1);a.registerTransition(g),a.scheduleTask(function(){return g.start()})}this.liveQueries&&c(this),this.node.id&&delete this.root.nodes[this.node.id]}}(v,vf),Bf=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=function(a){this.init(a)};return p.prototype={bubble:a,detach:b,find:c,findAll:d,findAllComponents:e,findComponent:f,findNextNode:g,firstNode:h,getAttribute:i,init:j,rebind:k,render:l,toString:m,unbind:n,unrender:o},p}(Nd,Od,Pd,Qd,Rd,Sd,Td,Ud,Vd,bf,ef,wf,xf,zf,Af),Cf=function(){function a(a,b){var c=d.exec(b)[0];return null===a||c.length<a.length?c:a}var b,c=/^\s*$/,d=/^\s*/;return b=function(b){var d,e,f,g;return d=b.split("\n"),e=d[0],void 0!==e&&c.test(e)&&d.shift(),f=d[d.length-1],void 0!==f&&c.test(f)&&d.pop(),g=d.reduce(a,null),g&&(b=d.map(function(a){return a.replace(g,"")}).join("\n")),b}}(),Df=function(a,b,c,d){function e(d,e){var f=b.registries.partials,g=f.findInstance(d,e);if(g){var h,i=g.partials[e];if("function"==typeof i&&(h=i.bind(g),h.isOwner=g.partials.hasOwnProperty(e),i=h(g.data,c)),!i)return void a.warn({debug:d.debug,message:"noRegistryFunctionReturn",args:{registry:"partial",name:e}});if(!c.isParsed(i)){var j=c.parse(i,c.getParseOptions(g));j.p&&a.warn({debug:d.debug,message:"noNestedPartials",args:{rname:e}});var k=h?g:f.findOwner(g,e);k.partials[e]=i=j.t}return h&&(i._fn=h),i.v?i.t:i}}var f;return f=function(b,f){var g;if(g=e(b,f))return g;if(g=c.fromId(f,{noThrow:!0})){g=d(g);var h=c.parse(g,c.getParseOptions(b));return b.partials[f]=h.t}return a.error({debug:b.debug,message:"noTemplateForPartial",args:{name:f}}),[]}}(Zc,Ub,Nb,Cf),Ef=function(a,b){var c;return b?c=a.split("\n").map(function(a,c){return c?b+a:a}).join("\n"):a},Ff=function(a,b,c,d,e,f,g,h){var i,j;return d.push(function(){j=d.Fragment}),i=function(b){var c=this.parentFragment=b.parentFragment;this.type=a.PARTIAL,this.name=b.template.r,this.index=b.index,this.root=c.root,f.init(this,b),this.update()},i.prototype={bubble:function(){this.parentFragment.bubble()},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},detach:function(){return this.fragment.detach()},render:function(){return this.update(),this.rendered=!0,this.fragment.render()},unrender:function(a){this.rendered&&(this.fragment.unrender(a),this.rendered=!1)},rebind:function(a,b,c,d){return this.fragment.rebind(a,b,c,d)},unbind:function(){this.fragment&&this.fragment.unbind()},toString:function(b){var d,e,f,g;return d=this.fragment.toString(b),e=this.parentFragment.items[this.index-1],e&&e.type===a.TEXT?(f=e.text.split("\n").pop(),(g=/^\s+$/.exec(f))?c(d,g[0]):d):d},find:function(a){return this.fragment.find(a)},findAll:function(a,b){return this.fragment.findAll(a,b)},findComponent:function(a){return this.fragment.findComponent(a)},findAllComponents:function(a,b){return this.fragment.findAllComponents(a,b)},getValue:function(){return this.fragment.getValue()},resolve:f.resolve,setValue:function(a){this.value!==a&&(this.fragment&&this.rendered&&this.fragment.unrender(!0),this.fragment=null,this.value=a,this.rendered?e.addView(this):(this.update(),this.bubble()))},update:function(){var a,c,d,e;this.fragment||(a=this.name&&(g.registries.partials.findInstance(this.root,this.name)||h.fromId(this.name,{noThrow:!0}))?b(this.root,this.name):this.value?b(this.root,this.value):[],this.fragment=new j({template:a,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.rendered&&(d=this.parentFragment.getNode(),c=this.fragment.render(),e=this.parentFragment.findNextNode(this),d.insertBefore(c,e)))}},i}(R,Df,Ef,e,v,hd,Ub,Nb),Gf=function(a,b,c){var d;return c.push(function(){d=c.Ractive}),function e(c,d){var f,g=a.registries.components.findInstance(c,d);if(g&&(f=g.components[d],!f._parent)){var h=f.bind(g);if(h.isOwner=g.components.hasOwnProperty(d),f=h(g.data),!f)return void b.warn({debug:c.debug,message:"noRegistryFunctionReturn",args:{registry:"component",name:d}});"string"==typeof f&&(f=e(c,f)),f._fn=h,g.components[d]=f}return f}}(Ub,Zc,e),Hf=function(){return this.instance.fragment.detach()},If=function(a){return this.instance.fragment.find(a)},Jf=function(a,b){return this.instance.fragment.findAll(a,b)},Kf=function(a,b){b._test(this,!0),this.instance.fragment&&this.instance.fragment.findAllComponents(a,b)},Lf=function(a){return a&&a!==this.name?this.instance.fragment?this.instance.fragment.findComponent(a):null:this.instance},Mf=function(){return this.parentFragment.findNextNode(this)},Nf=function(){return this.rendered?this.instance.fragment.firstNode():null},Of=function(a,b){var c,d;return b.push(function(){c=b.Fragment}),d=function(a,b,d){this.parentFragment=a.parentFragment,this.component=a,this.key=b,this.fragment=new c({template:d,root:a.root,owner:this}),this.value=this.fragment.getValue()},d.prototype={bubble:function(){this.dirty||(this.dirty=!0,a.addView(this))},update:function(){var b=this.fragment.getValue();this.component.instance.viewmodel.set(this.key,b),a.addViewmodel(this.component.instance.viewmodel),this.value=b,this.dirty=!1},rebind:function(a,b,c,d){this.fragment.rebind(a,b,c,d)},unbind:function(){this.fragment.unbind()}},d}(v,e),Pf=function(a,b){var c=function(c,d,e,f){var g=this;this.root=c.root,this.parentFragment=c.parentFragment,this.ready=!1,this.hash=null,this.resolver=new a(this,e,function(a){g.binding||(g.binding=c.bindings[g.hash])?(c.bindings[g.hash]=null,g.binding.rebind(a),g.hash=a+"="+d,c.bindings[g.hash]):g.ready?b(c,c.root,a,d):f.push({childKeypath:d,parentKeypath:a}),g.value=c.root.viewmodel.get(a)})};return c.prototype={rebind:function(a,b,c,d){this.resolver.rebind(a,b,c,d)},unbind:function(){this.resolver.unbind()}},c}(dd,s),Qf=function(a,b,c,d,e){function f(f,g,h,i){var j,k,l,m,n,o;if(l=f.root,m=f.parentFragment,"string"==typeof h)return k=b(h),k?k.value:h;if(null===h)return!0;if(1===h.length&&h[0].t===a.INTERPOLATOR){if(h[0].r)return m.indexRefs&&void 0!==m.indexRefs[o=h[0].r]?(f.indexRefBindings[o]=g,m.indexRefs[o]):(n=c(l,h[0].r,m)||h[0].r,i.push({childKeypath:g,parentKeypath:n}),l.viewmodel.get(n));if(h[0].rx)return j=new e(f,g,h[0].rx,i),f.complexParameters.push(j),j.ready=!0,j.value}return j=new d(f,g,h),f.complexParameters.push(j),j.value}var g;return g=function(a,b,c,d){var e,g,h={};a.complexParameters=[];for(e in c)c.hasOwnProperty(e)&&(g=f(a,e,c[e],d),(void 0!==g||void 0===b[e])&&(h[e]=g));return h}}(R,Eb,t,Of,Pf),Rf=function(a){return function(b,c,d,e){var f,g,h,i;return g=b.parentFragment,i=b.root,h={content:e||[]},c.defaults.el&&a.warn({debug:i.debug,message:"defaultElSpecified",args:{name:b.name}}),f=new c({el:null,append:!0,data:d,partials:h,magic:i.magic||c.defaults.magic,modifyArrays:i.modifyArrays,_parent:i,_component:b,adapt:i.adapt,"yield":{template:e,instance:i}})}}(Zc),Sf=function(a){return function(b,c){c.forEach(function(c){var d,e;a(b,b.root,c.parentKeypath,c.childKeypath),d=b.instance.viewmodel.get(c.childKeypath),e=b.root.viewmodel.get(c.parentKeypath),void 0!==d&&void 0===e&&b.root.viewmodel.set(c.parentKeypath,d)})}}(s),Tf=function(a,b,c){function d(a,d,e,f){"string"!=typeof f&&c.error({debug:d.debug,message:"noComponentEventArguments"}),a.on(e,function(){var a,c;return arguments.length&&arguments[0].node&&(a=Array.prototype.shift.call(arguments)),c=Array.prototype.slice.call(arguments),b(d,f,{event:a,args:c}),!1})}var e,f;return a.push(function(){f=a.Fragment}),e=function(a,b){var c;for(c in b)b.hasOwnProperty(c)&&d(a.instance,a.root,c,b[c])
|
15 |
+
}}(e,m,Zc),Uf=function(a){var b,c;for(b=a.root;b;)(c=b._liveComponentQueries["_"+a.name])&&c.push(a.instance),b=b._parent},Vf=function(a,b,c,d,e,f,g){return function(h,i){var j,k,l,m;if(j=this.parentFragment=h.parentFragment,k=j.root,this.root=k,this.type=a.COMPONENT,this.name=h.template.e,this.index=h.index,this.indexRefBindings={},this.bindings=[],this.yielder=null,!i)throw new Error('Component "'+this.name+'" not found');m=[],l=c(this,i.defaults.data||{},h.template.a,m),d(this,i,l,h.template.f),e(this,m),f(this,h.template.v),(h.template.t1||h.template.t2||h.template.o)&&b('The "intro", "outro" and "decorator" directives have no effect on components'),g(this)}}(R,L,Qf,Rf,Sf,Tf,Uf),Wf=function(a,b){return function(c,d,e,f){function g(a){a.rebind(c,d,e,f)}var h,i,j=this.instance,k=j._parent;this.bindings.forEach(function(a){var c;a.root===k&&(c=b(a.keypath,e,f))&&a.rebind(c)}),this.complexParameters.forEach(g),this.yielder&&g(this.yielder),(h=this.indexRefBindings[c])&&(a.addViewmodel(j.viewmodel),j.viewmodel.set(h,d)),(i=this.root._liveComponentQueries["_"+this.name])&&i._makeDirty()}}(v,Yc),Xf=function(){var a=this.instance;return a.render(this.parentFragment.getNode()),this.rendered=!0,a.fragment.detach()},Yf=function(){return this.instance.fragment.toString()},Zf=function(){function a(a){a.unbind()}function b(a){var b,c;b=a.root;do(c=b._liveComponentQueries["_"+a.name])&&c._remove(a);while(b=b._parent)}var c;return c=function(){this.complexParameters.forEach(a),this.bindings.forEach(a),b(this),this.instance.fragment.unbind()}}(),$f=function(a){return function(b){a(this.instance,"teardown"),this.shouldDestroy=b,this.instance.unrender()}}(m),_f=function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=function(a,b){this.init(a,b)};return n.prototype={detach:a,find:b,findAll:c,findAllComponents:d,findComponent:e,findNextNode:f,firstNode:g,init:h,rebind:i,render:j,toString:k,unbind:l,unrender:m},n}(Hf,If,Jf,Kf,Lf,Mf,Nf,Vf,Wf,Xf,Yf,Zf,$f),ag=function(a,b){var c=function(b){this.type=a.COMMENT,this.value=b.template.c};return c.prototype={detach:b,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return"<!--"+this.value+"-->"},unrender:function(a){a&&this.node.parentNode.removeChild(this.node)}},c}(R,Sc),bg=function(a){var b;a.push(function(){b=a.Fragment});var c=function(a){var c,d;if(c=a.parentFragment.root,this.component=d=c.component,this.surrogateParent=a.parentFragment,this.parentFragment=d.parentFragment,d.yielder)throw new Error("A component template can only have one {{yield}} declaration at a time");this.fragment=new b({owner:this,root:c.yield.instance,template:c.yield.template}),d.yielder=this};return c.prototype={detach:function(){return this.fragment.detach()},find:function(a){return this.fragment.find(a)},findAll:function(a,b){return this.fragment.findAll(a,b)},findComponent:function(a){return this.fragment.findComponent(a)},findAllComponents:function(a,b){return this.fragment.findAllComponents(a,b)},findNextNode:function(){return this.surrogateParent.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(a){return this.fragment.getValue(a)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(a){this.fragment.unrender(a),this.component.yielder=void 0},rebind:function(a,b,c,d){this.fragment.rebind(a,b,c,d)},toString:function(){return this.fragment.toString()}},c}(e),cg=function(a,b,c,d,e,f,g,h,i,j,k){return function(l){if("string"==typeof l.template)return new b(l);switch(l.template.t){case a.INTERPOLATOR:return"yield"===l.template.r?new k(l):new c(l);case a.SECTION:return new d(l);case a.TRIPLE:return new e(l);case a.ELEMENT:var m;return(m=h(l.parentFragment.root,l.template.e))?new i(l,m):new f(l);case a.PARTIAL:return new g(l);case a.COMMENT:return new j(l);default:throw new Error("Something very strange happened. Please file an issue at https://github.com/ractivejs/ractive/issues. Thanks!")}}}(R,Tc,id,zd,Md,Bf,Ff,Gf,_f,ag,bg),dg=function(a,b,c){return function(d){var e,f,g,h=this;if(this.owner=d.owner,e=this.parent=this.owner.parentFragment,this.root=d.root,this.pElement=d.pElement,this.context=d.context,this.owner.type===a.SECTION&&(this.index=d.index),e&&(f=e.indexRefs)){this.indexRefs=b(null);for(g in f)this.indexRefs[g]=f[g]}this.priority=e?e.priority+1:1,d.indexRef&&(this.indexRefs||(this.indexRefs={}),this.indexRefs[d.indexRef]=d.index),"string"==typeof d.template?d.template=[d.template]:d.template||(d.template=[]),this.items=d.template.map(function(a,b){return c({parentFragment:h,pElement:d.pElement,template:a,index:b})}),this.value=this.argsList=null,this.dirtyArgs=this.dirtyValue=!0,this.bound=!0}}(R,S,cg),eg=function(a){return function(b,c,d,e){a(this,"context",d,e),this.indexRefs&&void 0!==this.indexRefs[b]&&(this.indexRefs[b]=c),this.items.forEach(function(a){a.rebind&&a.rebind(b,c,d,e)})}}(df),fg=function(){var a;return 1===this.items.length?a=this.items[0].render():(a=document.createDocumentFragment(),this.items.forEach(function(b){a.appendChild(b.render())})),this.rendered=!0,a},gg=function(a){return this.items?this.items.map(function(b){return b.toString(a)}).join(""):""},hg=function(){function a(a){a.unbind&&a.unbind()}var b;return b=function(){this.bound&&(this.items.forEach(a),this.bound=!1)}}(),ig=function(a){if(!this.rendered)throw new Error("Attempted to unrender a fragment that was not rendered");this.items.forEach(function(b){return b.unrender(a)}),this.rendered=!1},jg=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){var r=function(a){this.init(a)};return r.prototype={bubble:a,detach:b,find:c,findAll:d,findAllComponents:e,findComponent:f,findNextNode:g,firstNode:h,getNode:i,getValue:j,init:k,rebind:l,render:m,toString:n,unbind:o,unrender:p},q.Fragment=r,r}(Gc,Hc,Ic,Jc,Kc,Lc,Mc,Nc,Oc,Pc,dg,eg,fg,gg,hg,ig,e),kg=function(a,b,c,d){var e=["template","partials","components","decorators","events"];return function(f,g){var h,i,j,k,l;if("function"!=typeof f||g?f=f||{}:(g=f,f={}),"object"!=typeof f)throw new Error("The reset method takes either no arguments, or an object containing new data");for((i=this.viewmodel.wrapped[""])&&i.reset?i.reset(f)===!1&&(this.data=f):this.data=f,j=d.reset(this),k=j.length;k--;)if(e.indexOf(j[k])>-1){l=!0;break}if(l){var m;this.viewmodel.mark(""),(m=this.component)&&(m.shouldDestroy=!0),this.unrender(),m&&(m.shouldDestroy=!1),this.fragment.template!==this.template&&(this.fragment.unbind(),this.fragment=new c({template:this.template,root:this,owner:this})),h=this.render(this.el,this.anchor)}else h=b.start(this,!0),this.viewmodel.mark(""),b.end();return a(this,"reset",{args:[f]}),g&&h.then(g),h}}(m,v,jg,Ub),lg=function(a,b){return function(c){var d,e;a.template.init(null,this,{template:c}),d=this.transitionsEnabled,this.transitionsEnabled=!1,(e=this.component)&&(e.shouldDestroy=!0),this.unrender(),e&&(e.shouldDestroy=!1),this.fragment.unbind(),this.fragment=new b({template:this.template,root:this,owner:this}),this.render(this.el,this.anchor),this.transitionsEnabled=d}}(Ub,jg),mg=function(a){return a("reverse")}(Bc),ng=function(a,b,c,d){var e=/\*/;return function(f,g,h){var i,j,k=this;if(j=a.start(this,!0),b(f)){i=f,h=g;for(f in i)i.hasOwnProperty(f)&&(g=i[f],f=c(f),this.viewmodel.set(f,g))}else f=c(f),e.test(f)?d(this,f).forEach(function(a){k.viewmodel.set(a,g)}):this.viewmodel.set(f,g);return a.end(),h&&j.then(h.bind(this)),j}}(v,h,G,qc),og=function(a){return a("shift")}(Bc),pg=function(a){return a("sort")}(Bc),qg=function(a){return a("splice")}(Bc),rg=function(a){return function(b,c){return a(this,b,void 0===c?-1:-c)}}(E),sg=function(a,b,c){return function(d){var e;return a(this,"teardown"),this.fragment.unbind(),this.viewmodel.teardown(),this.rendered&&this.el.__ractive_instances__&&b(this.el.__ractive_instances__,this),this.shouldDestroy=!0,e=this.rendered?this.unrender():c.resolve(),d&&e.then(d.bind(this)),e}}(m,n,o),tg=function(a){return function(b,c){var d;return"string"!=typeof b&&a.errorOnly({debug:this.debug,messsage:"badArguments",arg:{arguments:b}}),d=this.get(b),this.set(b,!d,c)}}(Zc),ug=function(){return this.fragment.toString(!0)},vg=function(a,b,c,d,e){return function(){var f,g,h=this;if(!this.rendered)return d.warn({debug:this.debug,message:"ractive.unrender() was called on a Ractive instance that was not rendered"}),e.resolve();for(f=b.start(this,!0),g=!this.component||this.component.shouldDestroy||this.shouldDestroy,this.constructor.css&&f.then(function(){c.remove(h.constructor)});this._animations[0];)this._animations[0].stop();return this.fragment.unrender(g),this.rendered=!1,a(this.el.__ractive_instances__,this),b.end(),f}}(n,v,Ec,Zc,o),wg=function(a){return a("unshift")}(Bc),xg=function(a,b){return function(c,d){var e;return"function"==typeof c?(d=c,c=""):c=c||"",e=b.start(this,!0),this.viewmodel.mark(c),b.end(),a(this,"update",{args:[c]}),d&&e.then(d.bind(this)),e}}(m,v),yg=function(a,b){function c(d,e,f,g){var h,i,j,k,l,m,n=[];if(h=d._twowayBindings[e],h&&(j=h.length))for(;j--;)k=h[j],(!k.radioName||k.element.node.checked)&&(k.checkboxName?n[k.keypath]||k.changed()||(n.push(k.keypath),n[k.keypath]=k):(l=k.attribute.value,m=k.getValue(),a(l,m)||b(l,m)||(f[e]=m)));if(n.length&&n.forEach(function(b){var c,d,e;c=n[b],d=c.attribute.value,e=c.getValue(),a(d,e)||(f[b]=e)}),g&&(i=d.viewmodel.depsMap["default"][e]))for(j=i.length;j--;)c(d,i[j],f,g)}var d;return d=function(a,b){var d;return"string"!=typeof a&&(a="",b=!0),c(this,a,d={},b),this.set(d)}}(Fe,r),zg=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F){return{add:a,animate:b,detach:c,find:d,findAll:e,findAllComponents:f,findComponent:g,fire:h,get:i,insert:j,merge:k,observe:l,off:m,on:n,pop:o,push:p,render:q,reset:r,resetTemplate:s,reverse:t,set:u,shift:v,sort:w,splice:x,subtract:y,teardown:z,toggle:A,toHTML:B,unrender:C,unshift:D,update:E,updateModel:F}}(F,Xb,Yb,Zb,hc,ic,jc,kc,lc,nc,oc,uc,xc,yc,Cc,Dc,Fc,kg,lg,mg,ng,og,pg,qg,rg,sg,tg,ug,vg,wg,xg,yg),Ag=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b,c;return b=16*Math.random()|0,c="x"==a?b:3&b|8,c.toString(16)})},Bg=function(){var a=0;return function(){return"r-"+a++}}(),Cg=function(a,b,c,d){var e=a.root,f=a.keypath;return"sort"===c||"reverse"===c?void e.viewmodel.set(f,b):void(d&&e.viewmodel.splice(f,d))},Dg=function(a,b,c,d,e){var f,g,h,i=[],j=["pop","push","reverse","shift","sort","splice","unshift"];return j.forEach(function(f){var g=function(){var b,g,h,i,j;for(b=c(this,f,Array.prototype.slice.call(arguments)),g=d(this,b),h=Array.prototype[f].apply(this,arguments),this._ractive.setting=!0,j=this._ractive.wrappers.length;j--;)i=this._ractive.wrappers[j],a.start(i.root),e(i,this,f,g),a.end();return this._ractive.setting=!1,h};b(i,f,{value:g})}),f={},f.__proto__?(g=function(a){a.__proto__=i},h=function(a){a.__proto__=Array.prototype}):(g=function(a){var c,d;for(c=j.length;c--;)d=j[c],b(a,d,{value:i[d],configurable:!0})},h=function(a){var b;for(b=j.length;b--;)delete a[j[b]]}),g.unpatch=h,g}(v,C,zc,Ac,Cg),Eg=function(a,b,c){var d,e,f;return d={filter:function(a){return b(a)&&(!a._ractive||!a._ractive.setting)},wrap:function(a,b,c){return new e(a,b,c)}},e=function(b,d,e){this.root=b,this.value=d,this.keypath=e,d._ractive||(a(d,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),c(d)),d._ractive.instances[b._guid]||(d._ractive.instances[b._guid]=0,d._ractive.instances.push(b)),d._ractive.instances[b._guid]+=1,d._ractive.wrappers.push(this)},e.prototype={get:function(){return this.value},teardown:function(){var a,b,d,e,g;if(a=this.value,b=a._ractive,d=b.wrappers,e=b.instances,b.setting)return!1;if(g=d.indexOf(this),-1===g)throw new Error(f);if(d.splice(g,1),d.length){if(e[this.root._guid]-=1,!e[this.root._guid]){if(g=e.indexOf(this.root),-1===g)throw new Error(f);e.splice(g,1)}}else delete a._ractive,c.unpatch(this.value)}},f="Something went wrong in a rather interesting way",d}(C,g,Dg),Fg=function(a,b){var c,d;return a&&(c={filter:function(c,d,e){return a.filter(c,d,e)&&b.filter(c)},wrap:function(a,b,c){return new d(a,b,c)}},d=function(c,d,e){this.value=d,this.magic=!0,this.magicWrapper=a.wrap(c,d,e),this.arrayWrapper=b.wrap(c,d,e)},d.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(a){return this.magicWrapper.reset(a)}}),c}(x,Eg),Gg=function(a,b,c,d){function e(a,b){var c,d={};if(!b)return a;b+=".";for(c in a)a.hasOwnProperty(c)&&(d[b+c]=a[c]);return d}function f(a){var b;return h[a]||(b=a?a+".":"",h[a]=function(c,d){var f;return"string"==typeof c?(f={},f[b+c]=d,f):"object"==typeof c?b?e(c,a):c:void 0}),h[a]}var g,h={};return g=function(e,g){var h,i,j,k,l=this.ractive;for(h=l.adapt.length,i=0;h>i;i+=1){if(j=l.adapt[i],"string"==typeof j){var m=a.registries.adaptors.find(l,j);if(!m)throw new Error('Missing adaptor "'+j+'"');j=l.adapt[i]=m}if(j.filter(g,e,l))return k=this.wrapped[e]=j.wrap(l,g,e,f(e)),k.value=g,g}return l.magic?d.filter(g,e,l)?this.wrapped[e]=d.wrap(l,g,e):c.filter(g,e,l)&&(this.wrapped[e]=c.wrap(l,g,e)):l.modifyArrays&&b.filter(g,e,l)&&(this.wrapped[e]=b.wrap(l,g,e)),g}}(Ub,Eg,x,Fg),Hg=function(a){var b,c,d,e,f=[""];for(b=a.length;b--;)for(c=a[b],d=c.split(".");d.length>1;)d.pop(),e=d.join("."),-1===f.indexOf(e)&&f.push(e);return f},Ig=function(){function a(a){var b,d,e,f,g,h="";if(!c[a]){for(e=[];h.length<a;)h+=1;for(b=parseInt(h,2),f=function(a){return"1"===a},g=0;b>=g;g+=1){for(d=g.toString(2);d.length<a;)d="0"+d;e[g]=Array.prototype.map.call(d,f)}c[a]=e}return c[a]}var b,c={};return b=function(b){var c,d,e,f;return c=b.split("."),d=a(c.length),e=function(a,b){return a?"*":c[b]},f=d.map(function(a){return a.map(e).join(".")})}}(),Jg=function(a){function b(b,e,f){var g;d(b,e),f||(g=a(e),g.forEach(function(a){c(b,a,e)}))}function c(a,b,e){var g,h,i;g=a.depsMap.patternObservers,h=g[b],h&&h.forEach(function(b){var g=f.exec(b)[0];i=e?e+"."+g:g,d(a,i),c(a,b,i)})}function d(a,b){a.patternObservers.forEach(function(a){a.regex.test(b)&&a.update(b)})}var e,f=/[^\.]+$/;return e=b}(Ig),Kg=function(a,b){function c(a){a.update()}function d(a,b,c){var d,e;(d=f(a,b,c))&&(e=a.get(b),d.forEach(function(a){return a.setValue(e)}))}function e(a,b,c){function d(a){a.forEach(e),a.forEach(g)}function e(b){var d=f(a,b,c);d&&i.push({keypath:b,deps:d})}function g(b){var e;(e=a.depsMap[c][b])&&d(e)}function h(b){var c=a.get(b.keypath);b.deps.forEach(function(a){return a.setValue(c)})}var i=[];d(b),i.forEach(h)}function f(a,b,c){var d=a.deps[c];return d?d[b]:null}function g(a,b){b.forEach(function(b){-1===a.indexOf(b)&&a.push(b)})}var h,i=["observers","default"];return h=function(){var f,h,j,k,l,m=this,n=this,o=[],p={};if(this.changes.length){k=function(a){var b;(b=n.deps.computed[a])&&g(j,b)},l=function(a){var b;k(a),(b=n.depsMap.computed[a])&&b.forEach(l)};do f=this.changes,g(o,f),this.changes=[],j=[],h=a(f),h.forEach(k),f.forEach(l),j.forEach(c);while(this.changes.length);return h=a(o),this.patternObservers.length&&(h.forEach(function(a){return b(m,a,!0)}),o.forEach(function(a){return b(m,a)})),i.forEach(function(a){m.deps[a]&&(h.forEach(function(b){return d(m,b,a)}),e(m,o,a))}),o.forEach(function(a){p[a]=m.get(a)}),this.implicitChanges={},p}}}(Hg,Jg),Lg=function(){this.capturing=!0,this.captured=[]},Mg=function(a,b){var c,d,e;if(b||(d=this.wrapped[a])&&d.teardown()!==!1&&(this.wrapped[a]=null),(e=this.computations[a])&&e.compute(),this.cache[a]=void 0,c=this.cacheMap[a])for(;c.length;)this.clearCache(c.pop())},Ng={FAILED_LOOKUP:!0},Og=function(a,b){var c={},d=function(a,d){this.viewmodel=a,this.root=a.ractive,this.ref=d,this.parentFragment=c,a.unresolvedImplicitDependencies[d]=!0,a.unresolvedImplicitDependencies.push(this),b.addUnresolved(this)};return d.prototype={resolve:function(){this.viewmodel.mark(this.ref),this.viewmodel.unresolvedImplicitDependencies[this.ref]=!1,a(this.viewmodel.unresolvedImplicitDependencies,this)},teardown:function(){b.removeUnresolved(this)}},d}(n,v),Pg=function(a,b){function c(b,c){var d,e,f,g,h,i,j;return d=c.split("."),e=d.pop(),f=d.join("."),g=b.get(f),(j=b.wrapped[f])&&(g=j.get()),null!==g&&void 0!==g?((h=b.cacheMap[f])?-1===h.indexOf(c)&&h.push(c):b.cacheMap[f]=[c],"object"!=typeof g||e in g?(i=g[e],b.adapt(c,i,!1),b.cache[c]=i,i):b.cache[c]=a):void 0}var d,e={};return d=function(d){var f=arguments[1];void 0===f&&(f=e);var g,h,i,j,k=this.ractive,l=this.cache;return void 0===l[d]?((h=this.computations[d])?g=h.value:(i=this.wrapped[d])?g=i.value:d?g=(j=this.evaluators[d])?j.value:c(this,d):(this.adapt("",k.data),g=k.data),l[d]=g):g=l[d],f.evaluateWrapped&&(i=this.wrapped[d])&&(g=i.get()),f.capture&&this.capturing&&-1===this.captured.indexOf(d)&&(this.captured.push(d),g===a&&this.unresolvedImplicitDependencies[d]!==!0&&new b(this,d)),g===a?void 0:g}}(Ng,Og),Qg=function(a,b){b&&(this.implicitChanges[a]=!0),-1===this.changes.indexOf(a)&&(this.changes.push(a),this.clearCache(a))},Rg=function(a,b){var c,d,e,f;return c={},d=0,e=a.map(function(a,e){var g,h,i;h=d,i=b.length;do{if(g=b.indexOf(a,h),-1===g)return f=!0,-1;h=g+1}while(c[g]&&i>h);return g===d&&(d+=1),g!==e&&(f=!0),c[g]=!0,g}),e.unchanged=!f,e},Sg=function(a,b,c){function d(b){return"function"==typeof b.merge&&(!b.subtype||b.subtype===a.SECTION_EACH)}function e(a){return JSON.stringify(a)}function f(a){if(a===!0)return e;if("string"==typeof a)return h[a]||(h[a]=function(b){return b[a]}),h[a];if("function"==typeof a)return a;throw new Error("The `compare` option must be a function, or a string representing an identifying field (or `true` to use JSON.stringify)")}var g,h={};return g=function(a,e,g,h){var i,j,k,l,m,n=this;if(this.mark(a),h&&h.compare){k=f(h.compare);try{i=e.map(k),j=g.map(k)}catch(o){if(this.debug)throw o;b("Merge operation: comparison failed. Falling back to identity checking"),i=e,j=g}}else i=e,j=g;l=c(i,j),l.forEach(function(b,c){-1===b&&n.mark(a+"."+c)}),this.set(a,g,!0),(m=this.deps["default"][a])&&m.filter(d).forEach(function(a){return a.merge(l)}),e.length!==g.length&&this.mark(a+".length",!0)}}(R,L,Rg),Tg=function(){function a(a,b,c){var d,e,f,g;for(d=b.split(".");d.length;)d.pop(),e=d.join("."),f=a.depsMap[c]||(a.depsMap[c]={}),g=f[e]||(f[e]=[]),void 0===g[b]&&(g[b]=0,g.push(b)),g[b]+=1,b=e}var b;return b=function(b,c){var d=arguments[2];void 0===d&&(d="default");var e,f,g;c.isStatic||(e=this.deps[d]||(this.deps[d]={}),f=e[b]||(e[b]=[]),f.push(c),b&&((g=this.evaluators[b])&&(g.dependants||g.wake(),g.dependants+=1),a(this,b,d)))}}(),Ug=function(){return this.capturing=!1,this.captured},Vg=function(a,b){return function(c,d,e){var f,g,h,i,j,k,l,m;j=this.computations[c],j&&!j.setting&&(j.set(d),d=j.get()),a(this.cache[c],d)||(k=this.wrapped[c],l=this.evaluators[c],k&&k.reset&&(m=k.reset(d)!==!1,m&&(d=k.get())),l&&(l.value=d),j||l||m||(f=c.split("."),g=f.pop(),h=f.join("."),k=this.wrapped[h],k&&k.set?k.set(g,d):(i=k?k.get():this.get(h),i||(i=b(g),this.set(h,i,!0)),i[g]=d)),e?this.clearCache(c):this.mark(c))}}(r,w),Wg=function(a){function b(b){return b.type===a.SECTION&&(!b.subtype||b.subtype===a.SECTION_EACH)&&b.rendered}var c;return c=function(a,c){var d,e,f=this;for(d=c.rangeStart;d<c.rangeEnd;d+=1)f.mark(a+"."+d);c.balance&&f.mark(a+".length",!0),(e=f.deps["default"][a])&&e.filter(b).forEach(function(a){return a.splice(c)})}}(R),Xg=function(){var a,b=this;for(Object.keys(this.cache).forEach(function(a){return b.clearCache(a)});a=this.unresolvedImplicitDependencies.pop();)a.teardown()},Yg=function(){function a(a,b,c){var d,e,f,g;for(d=b.split(".");d.length;)d.pop(),e=d.join("."),f=a.depsMap[c],g=f[e],g[b]-=1,g[b]||(g.splice(g.indexOf(b),1),g[b]=void 0),b=e}var b;return b=function(b,c){var d=arguments[2];void 0===d&&(d="default");var e,f,g;if(!c.isStatic){if(e=this.deps[d][b],f=e.indexOf(c),-1===f)throw new Error("Attempted to remove a dependant that was no longer registered! This should not happen. If you are seeing this bug in development please raise an issue at https://github.com/RactiveJS/Ractive/issues - thanks");e.splice(f,1),b&&((g=this.evaluators[b])&&(g.dependants-=1,g.dependants||g.sleep()),a(this,b,d))}}}(),Zg=function(){function a(a){var b="var __ractive=this;return("+a.replace(c,function(a,b){return'__ractive.get("'+b+'")'})+")";return new Function(b)}var b,c=/\$\{([^\}]+)\}/g;return b=function(b){return"function"==typeof b?{get:b}:"string"==typeof b?{get:a(b)}:("object"==typeof b&&"string"==typeof b.get&&(b={get:a(b.get),set:b.set}),b)}}(),$g=function(a,b,c){var d=function(a,b,c){var d;this.ractive=a,this.viewmodel=a.viewmodel,this.key=b,this.getter=c.get,this.setter=c.set,this.dependencies=[],(d=a.viewmodel.get(b))&&this.set(d),this.update()};return d.prototype={get:function(){return this.compute(),this.value},set:function(a){if(this.setting)return void(this.value=a);if(!this.setter)throw new Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter.call(this.ractive,a)},compute:function(){var b,d,e;b=this.ractive,b.viewmodel.capture();try{this.value=this.getter.call(b)}catch(f){a.warn({debug:b.debug,message:"failedComputation",args:{key:this.key,err:f.message||f}}),d=!0}return e=b.viewmodel.release(),c(this,this.dependencies,e),d?!1:!0},update:function(){var a=this.value;this.compute()&&!b(this.value,a)&&this.ractive.viewmodel.mark(this.key)}},d}(Zc,r,_c),_g=function(a,b){return function(c,d){var e,f;for(e in d)f=a(d[e]),c.viewmodel.computations[e]=new b(c,e,f)}}(Zg,$g),ah=function(){function a(a){return"string"==typeof a&&(a=[a]),a}var b={lookup:function(a,b){var c,d=a.adapt;if(!d||!d.length)return d;if(b&&Object.keys(b).length&&(c=d.length))for(;c--;){var e=d[c];"string"==typeof e&&(d[c]=b[e]||e)}return d},combine:function(b,c){return b=a(b),c=a(c),b&&b.length?c&&c.length?(b.forEach(function(a){-1===c.indexOf(a)&&c.push(a)}),c):b.slice():c}};return b}(),bh=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q;try{Object.defineProperty({},"test",{value:0})}catch(r){q=!0}var s=function(b){this.ractive=b,s.extend(b.constructor,b),this.cache={},this.cacheMap=a(null),this.deps={computed:{},"default":{}},this.depsMap={computed:{},"default":{}},this.patternObservers=[],this.wrapped=a(null),this.evaluators=a(null),this.computations=a(null),this.captured=null,this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={}};return s.extend=function(a,b){if(b.magic&&q)throw new Error("Getters and setters (magic mode) are not supported in this browser");b.adapt=p.combine(a.prototype.adapt,b.adapt)||[],b.adapt=p.lookup(b,b.adaptors)},s.prototype={adapt:b,applyChanges:c,capture:d,clearCache:e,get:f,mark:g,merge:h,register:i,release:j,set:k,splice:l,teardown:m,unregister:n,compute:function(){o(this.ractive,this.ractive.computed)}},s}(S,Gg,Kg,Lg,Mg,Pg,Qg,Sg,Tg,Ug,Vg,Wg,Xg,Yg,_g,ah),ch=function(a,b,c,d,e,f){function g(a){var b;if(b=c(a.el)){if(b&&!a.append){if(b.__ractive_instances__)try{b.__ractive_instances__.splice(0,b.__ractive_instances__.length).forEach(function(a){return a.teardown()})}catch(d){}b.innerHTML=""}a.render(b,a.append)}}function h(a,c){a._guid=d(),a._subs=b(null),a._config={},a._twowayBindings=b(null),a._animations=[],a.nodes={},a._liveQueries=[],a._liveComponentQueries=[],c._parent&&c._component&&(a._parent=c._parent,a.component=c._component,c._component.instance=a)}var i;return i=function(b){var c=arguments[1];void 0===c&&(c={}),h(b,c),a.init(b.constructor,b,c),b.viewmodel=new e(b),b.viewmodel.compute(),b.template&&(b.fragment=new f({template:b.template,root:b,owner:b})),g(b)}}(Ub,S,mc,Bg,bh,jg),dh=function(a){return function(b,c,d){b.beforeInit&&b.beforeInit(d),a(b,d)}}(ch),eh=function(a,b,c,d){function e(b,c,d){for(var e in d)if(!(e in j)&&d.hasOwnProperty(e)){var f=d[e];"function"==typeof f&&(f=a(b,e,f)),c[e]=f}}function f(a){if(!(a.prototype instanceof i))return a;for(var c={};a;)l.forEach(function(b){g(b.useDefaults?a.prototype:a,c,b.name)}),Object.keys(a.prototype).forEach(function(d){if("computed"!==d){var e=a.prototype[d];if(d in c){if("function"==typeof c[d]&&"function"==typeof e&&c[d]._method){var f,g=e._method;g&&(e=e._method),f=b(c[d]._method,e),g&&(f._method=f),c[d]=f}}else c[d]=e._method?e._method:e}}),a=a._parent!==i?a._parent:!1;return c}function g(a,b,c){var d,e=Object.keys(a[c]);e.length&&((d=b[c])||(d=b[c]={}),e.filter(function(a){return!(a in d)}).forEach(function(b){return d[b]=a[c][b]}))}var h,i,j={_parent:!0,_component:!0},k={toPrototype:e,toOptions:f},l=c.registries;return c.keys.forEach(function(a){return j[a]=!0}),d.push(function(){i=d.Ractive}),h=k}(Sb,O,Ub,e),fh=function(a,b,c,d,e,f,g){return function h(){var i=arguments[0];void 0===i&&(i={});var j,k,l,m=this;return i=g.toOptions(i),j=function(a){e(this,j,a)},k=a(m.prototype),k.constructor=j,l={_guid:{value:c()},defaults:{value:k},extend:{value:h,writable:!0,configurable:!0},_parent:{value:m}},b(j,l),d.extend(m,k,i),f.extend(m,k),g.toPrototype(m.prototype,k,i),j.prototype=k,j}}(S,D,Ag,Ub,dh,bh,eh),gh=function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n,o;for(n=function(a){l(this,a)},o={extend:{value:j},parse:{value:k},Promise:{value:h},svg:{value:d},magic:{value:e},VERSION:{value:"0.5.8"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:b},events:{writable:!0,value:{}},interpolators:{writable:!0,value:c},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},f(n,o),n.prototype=i(g,a),n.prototype.constructor=n,n.defaults=n.prototype,m.Ractive=n;m.length;)m.pop()();var p="function";if(typeof Date.now!==p||typeof String.prototype.trim!==p||typeof Object.keys!==p||typeof Array.prototype.indexOf!==p||typeof Array.prototype.forEach!==p||typeof Array.prototype.map!==p||typeof Array.prototype.filter!==p||"undefined"!=typeof window&&typeof window.addEventListener!==p)throw new Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");return n}(c,d,j,k,y,D,zg,o,ve,fh,Kb,ch,e);"undefined"!=typeof module&&module.exports?module.exports=gh:"function"==typeof define&&define.amd&&define(function(){return gh}),a.Ractive=gh,gh.noConflict=function(){return a.Ractive=b,gh}}("undefined"!=typeof window?window:this);
|
skin/adminhtml/default/default/unbxd/templates/analytics.html
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block pad-top-20 border-left-color pad-btm-10p">
|
2 |
+
|
3 |
+
{{^_unbxdObject.step2}}
|
4 |
+
<div class="row mar-0">
|
5 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-30" style="color: red;font-size: 20px;">Please map catlog and upload data first
|
6 |
+
</div>
|
7 |
+
</div>
|
8 |
+
<div on-click="disabledClick" class="unbxd-cover">
|
9 |
+
</div>
|
10 |
+
{{/_unbxdObject.step2}}
|
11 |
+
|
12 |
+
<div on-click="disabledClick" class="{{^_unbxdObject.step2}} unbxd-disabler {{/_unbxdObject.step2}}">
|
13 |
+
|
14 |
+
<div class="row mar-0">
|
15 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-10">
|
16 |
+
Event Tracking
|
17 |
+
</div>
|
18 |
+
</div>
|
19 |
+
<div class="row mar-0">
|
20 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-30">
|
21 |
+
Unbxd Recommendations automatically tries to add event handling tags to important visitor events like Product Views, Additions to Cart and Orders.
|
22 |
+
</div>
|
23 |
+
</div>
|
24 |
+
<div class="row mar-0">
|
25 |
+
<div class="col-md-60 magento-text pad-0">
|
26 |
+
These are required for
|
27 |
+
</div>
|
28 |
+
</div>
|
29 |
+
<div class="row mar-0">
|
30 |
+
<div class="col-md-60 magento-text pad-0">
|
31 |
+
a) Reporting
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
<div class="row mar-0">
|
35 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-30">
|
36 |
+
b) Tracking User-behavior for providing recommendations
|
37 |
+
</div>
|
38 |
+
</div>
|
39 |
+
<div class="row mar-0 unbxd-center-div pad-btm-20">
|
40 |
+
See below to check if the analytics integration is successful. Troubleshoot <a class="blue-link-help" href="http://unbxd.com/docs/product-recommendations/platforms/magento/">here</a>
|
41 |
+
</div>
|
42 |
+
<div class="row mar-0">
|
43 |
+
<div class="col-sm-60 col-xs-60 pad-0 fixed-width-800">
|
44 |
+
<div class="row">
|
45 |
+
<div class="col-md-60 col-sm-60 col-xs-60 mar-btm-30">
|
46 |
+
|
47 |
+
<div class="row mar-0">
|
48 |
+
<div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
|
49 |
+
{{^productClick}} magento-analytics-block1 {{/productClick}} mar-rgt-52">
|
50 |
+
<div class="row">
|
51 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
|
52 |
+
PRODUCT VIEWS
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
<div class="row">
|
56 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
|
57 |
+
{{^productClick}} magento-analytics-cross{{/productClick}} mar-btm-20">
|
58 |
+
|
59 |
+
</div>
|
60 |
+
</div>
|
61 |
+
<div class="row">
|
62 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 mar-btm-10">
|
63 |
+
{{#if productClick}}
|
64 |
+
Captured
|
65 |
+
{{else}}
|
66 |
+
Waiting for
|
67 |
+
{{/if}}
|
68 |
+
</div>
|
69 |
+
</div>
|
70 |
+
<div class="row">
|
71 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
|
72 |
+
Product Click
|
73 |
+
</div>
|
74 |
+
</div>
|
75 |
+
|
76 |
+
</div>
|
77 |
+
|
78 |
+
<div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
|
79 |
+
{{^addToCartClick}}magento-analytics-block1{{/addToCartClick}} mar-rgt-52">
|
80 |
+
<div class="row">
|
81 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
|
82 |
+
ADD TO CART
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
<div class="row">
|
86 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick {{^addToCartClick}}magento-analytics-cross{{/addToCartClick}} mar-btm-20">
|
87 |
+
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
<div class="row">
|
91 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 mar-btm-10">
|
92 |
+
{{#if addToCartClick}}
|
93 |
+
Captured
|
94 |
+
{{else}}
|
95 |
+
Waiting for
|
96 |
+
{{/if}}
|
97 |
+
</div>
|
98 |
+
</div>
|
99 |
+
<div class="row">
|
100 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
|
101 |
+
Add to Cart
|
102 |
+
</div>
|
103 |
+
</div>
|
104 |
+
|
105 |
+
</div>
|
106 |
+
<div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
|
107 |
+
{{^productBuysClick }} magento-analytics-block1 {{/productBuysClick}} mar-rgt-15">
|
108 |
+
<div class="row">
|
109 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
|
110 |
+
PRODUCT BUYS
|
111 |
+
</div>
|
112 |
+
</div>
|
113 |
+
<div class="row">
|
114 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
|
115 |
+
{{^productBuysClick}} magento-analytics-cross{{/productBuysClick}} mar-btm-20">
|
116 |
+
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
<div class="row">
|
120 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 mar-btm-10">
|
121 |
+
{{#if productBuysClick}}
|
122 |
+
Captured
|
123 |
+
{{else}}
|
124 |
+
Waiting for
|
125 |
+
{{/if}}
|
126 |
+
</div>
|
127 |
+
</div>
|
128 |
+
<div class="row">
|
129 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
|
130 |
+
an Order
|
131 |
+
</div>
|
132 |
+
</div>
|
133 |
+
</div>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
</div>
|
138 |
+
</div>
|
139 |
+
|
140 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-30" >
|
141 |
+
The above images indicate the events Unbxd Recommendations is able to track.
|
142 |
+
If the events are not being tracked it could be because your magento templates are customized. In such a case, follow the documentation <a class="blue-link-help" href="http://unbxd.com/docs/product-recommendations/platforms/magento/">here</a>, to manually add tags to track these events.
|
143 |
+
</div>
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
</div>
|
148 |
+
</div>
|
skin/adminhtml/default/default/unbxd/templates/catalog.html
ADDED
@@ -0,0 +1,297 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block border-left-color pad-btm-10p">
|
2 |
+
|
3 |
+
{{^_unbxdObject.step1}}
|
4 |
+
<div class="row mar-0">
|
5 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-30" style="color: red;font-size: 20px;">Please authenticate unbxd module
|
6 |
+
</div>
|
7 |
+
</div>
|
8 |
+
<div on-click="disabledClick" class="unbxd-cover">
|
9 |
+
</div>
|
10 |
+
{{/_unbxdObject.step1}}
|
11 |
+
|
12 |
+
<div class="{{^_unbxdObject.step1}} unbxd-disabler {{/_unbxdObject.step1}}">
|
13 |
+
<div class="row mar-0">
|
14 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-30">
|
15 |
+
Map Catalog Attributes
|
16 |
+
</div>
|
17 |
+
</div>
|
18 |
+
<div class="row mar-0">
|
19 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-10">
|
20 |
+
Unbxd needs your catalog data in order to show accurate recommendations.
|
21 |
+
</div>
|
22 |
+
</div>
|
23 |
+
<div class="row mar-0">
|
24 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-30">
|
25 |
+
Help the Unbxd Recommendation Engine make sense of this data by mapping your catalog attributes to the <br>
|
26 |
+
respective Unbxd attributes.
|
27 |
+
</div>
|
28 |
+
</div>
|
29 |
+
<div class="row mar-0">
|
30 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0">
|
31 |
+
<div class="row mar-0">
|
32 |
+
<div class="col-md-60 col-sm-60 pad-0 mar-btm-20 ">
|
33 |
+
<div class="table table-magento table-magento1 unbxd-table width-62">
|
34 |
+
<div class="unbxd-thead">
|
35 |
+
<div class="unbxd-tr">
|
36 |
+
<div class="magento-tooltip unbxd-th pull-left width-45" data-title="UNBXD Attribute" data-content=" Unbxd attributes are fields which are identified by the Unbxd Recommendation Engine and are required for the recommendation algorithms and reporting" >
|
37 |
+
UNBXD Attribute
|
38 |
+
</div>
|
39 |
+
<div class="magento-tooltip unbxd-th pull-right width-55 border-right-rad"
|
40 |
+
data-title="{{_unbxdObject.siteName}} Catalog Fields" data-content="These are fields from {{_unbxdObject.siteName}}'s catalog which need to be mapped to the relevant Unbxd attribute. Skip the mapping for an Unbxd attribute if it cannot be mapped to a particular field in the {{_unbxdObject.siteName}} catalog" >
|
41 |
+
Magento Attribute
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
</div>
|
45 |
+
|
46 |
+
<div >
|
47 |
+
{{#mappedAttributes}}
|
48 |
+
<div class="tr-row">
|
49 |
+
<div data-content="{{tooltip}}" data-title="{{featured_field}}" class=" td-left width-45 _tooltip bord-right" >
|
50 |
+
{{featured_field}}
|
51 |
+
</div>
|
52 |
+
|
53 |
+
{{#if enableEdit}}
|
54 |
+
<div class="td-right width-55">
|
55 |
+
<div class="btn-group width-100" >
|
56 |
+
<select disabled=disabled decorator='chosen'
|
57 |
+
value={{field_name}} name="unbxd-select" id="">
|
58 |
+
{{#magentoFields}}
|
59 |
+
<option class={{disabled}} disabled={{disabled}} value="{{value}}">
|
60 |
+
{{value}}
|
61 |
+
</option>
|
62 |
+
{{/magentoFields}}
|
63 |
+
</select>
|
64 |
+
</div>
|
65 |
+
</div>
|
66 |
+
{{else}}
|
67 |
+
<div class=" td-left width-55 _tooltip chosen-padding" >
|
68 |
+
{{field_name}}
|
69 |
+
</div>
|
70 |
+
{{/if}}
|
71 |
+
</div>
|
72 |
+
{{/mappedAttributes}}
|
73 |
+
</div>
|
74 |
+
</div>
|
75 |
+
|
76 |
+
</div>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
<div class="row mar-0 ">
|
80 |
+
<div class="width-62 pull-left">
|
81 |
+
{{^enableEdit}}
|
82 |
+
<div class="pull-right pad-left-10">
|
83 |
+
<div on-click="enableEdit" class="button-edit-magento width-140 clickable-btn">
|
84 |
+
Edit attribute
|
85 |
+
</div>
|
86 |
+
</div>
|
87 |
+
{{/enableEdit}}
|
88 |
+
|
89 |
+
{{#if enableEdit}}
|
90 |
+
<div class="pull-right {{saveMapping}} pad-left-10">
|
91 |
+
<div on-click="saveMapping" class="button-edit-magento button-save-magento width-140 clickable-btn">
|
92 |
+
Save attribute
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
<div class="pull-right pad-left-10">
|
97 |
+
<div on-click="disableEdit" class="button-edit-magento button-save-magento width-140 clickable-btn">
|
98 |
+
Cancel
|
99 |
+
</div>
|
100 |
+
</div>
|
101 |
+
{{/if}}
|
102 |
+
</div>
|
103 |
+
|
104 |
+
<div class="width-38 pull-left pad-top-5">
|
105 |
+
<div class="_unbxd-success">
|
106 |
+
{{successMsg}}
|
107 |
+
</div>
|
108 |
+
<div class="_unbxd-err">
|
109 |
+
{{errorMsg}}
|
110 |
+
</div>
|
111 |
+
</div>
|
112 |
+
|
113 |
+
</div>
|
114 |
+
|
115 |
+
|
116 |
+
<div class="row mar-0">
|
117 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-30 float-left">
|
118 |
+
<div class="pull-left">Add Custom attributes</div>
|
119 |
+
</div>
|
120 |
+
</div>
|
121 |
+
<div class="row mar-0">
|
122 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-20">
|
123 |
+
Certain fields like material, occasion, type etc. might be fields in
|
124 |
+
{{_unbxdObject.siteName}}'s catalog. These are not default Unbxd attributes. Provide information of the data type of these fields if these fields need to be displayed to in the recommendations to the site visitors.
|
125 |
+
</div>
|
126 |
+
</div>
|
127 |
+
<div class="row mar-0 pad-btm-20 add-attr">
|
128 |
+
<div on-click="showCustomAttribute" class="col-md-20 button-black-magento1 width-250 btn-add-attribute" >
|
129 |
+
<div class="clickable-btn" style="color: #fff !important;">
|
130 |
+
ADD ATTRIBUTE
|
131 |
+
</div>
|
132 |
+
</div>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
<div class="custom-attributes">
|
136 |
+
|
137 |
+
<div>
|
138 |
+
<div class="width-80 pad-btm-20" >
|
139 |
+
<div class="tr-row">
|
140 |
+
<div class="magento-tooltip unbxd-th pull-left width-40" data-title="Custom attribute" data-content="Custom attributes are fields from the your product catalog which are, by default, not displayed in the Recommendation Widgets" >
|
141 |
+
Custom attribute
|
142 |
+
</div>
|
143 |
+
<div class=" unbxd-th pull-left width-40 border-right-rad" >
|
144 |
+
Data-type
|
145 |
+
</div>
|
146 |
+
<div class="pull-left width-20">
|
147 |
+
{{#if customAttributes.length === 0}}
|
148 |
+
<div on-click="newTodo" class="add-row clickable-btn pull-left">
|
149 |
+
</div>
|
150 |
+
{{/if}}
|
151 |
+
</div>
|
152 |
+
</div>
|
153 |
+
<div class="cudtom-attr-rows">
|
154 |
+
{{#each customAttributes:i}}
|
155 |
+
{{>item}}
|
156 |
+
{{/each}}
|
157 |
+
</div>
|
158 |
+
</div>
|
159 |
+
|
160 |
+
|
161 |
+
<div class="row mar-0 ">
|
162 |
+
|
163 |
+
<div class="width-64 pull-left">
|
164 |
+
<div class="pull-right pad-left-10">
|
165 |
+
<div on-click="saveCustomAttribute" class="button-edit-magento button-save-magento width-140 clickable-btn {{disableSaveCustomAttr}}" >
|
166 |
+
Save
|
167 |
+
</div>
|
168 |
+
</div>
|
169 |
+
</div>
|
170 |
+
|
171 |
+
<div class="width-36 pull-left pad-top-5">
|
172 |
+
<div class="_unbxd-success">
|
173 |
+
{{customAttrSucessMsg}}
|
174 |
+
</div>
|
175 |
+
<div class="_unbxd-err">
|
176 |
+
{{customAttrErrorMsg}}
|
177 |
+
</div>
|
178 |
+
</div>
|
179 |
+
|
180 |
+
</div>
|
181 |
+
|
182 |
+
<div class="row mar-0">
|
183 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-20">
|
184 |
+
For a detailed explanation of data-types, click
|
185 |
+
<span on-click="showDataHelp" class="blue-link-help">here</span>
|
186 |
+
</div>
|
187 |
+
<div id="dataHelp" class="width-60" style="display:none" >
|
188 |
+
<div class="tr-row">
|
189 |
+
<div class="unbxd-th pull-left width-50 help-table-head unbxd-border" >
|
190 |
+
Data-type
|
191 |
+
</div>
|
192 |
+
<div class=" unbxd-th pull-left width-50 help-table-head unbxd-border border-right-rad" >
|
193 |
+
Description
|
194 |
+
</div>
|
195 |
+
</div>
|
196 |
+
<div id="unbxdHelpRows" class="cudtom-attr-rows">
|
197 |
+
<div class="tr-row" style="height:35px">
|
198 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
199 |
+
text
|
200 |
+
</div>
|
201 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
202 |
+
Any string value
|
203 |
+
</div>
|
204 |
+
</div>
|
205 |
+
<div class="tr-row" style="height:35px">
|
206 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
207 |
+
decimal
|
208 |
+
</div>
|
209 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
210 |
+
Any decimal
|
211 |
+
</div>
|
212 |
+
</div>
|
213 |
+
<div class="tr-row" style="height:35px">
|
214 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
215 |
+
number
|
216 |
+
</div>
|
217 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
218 |
+
Any integer
|
219 |
+
</div>
|
220 |
+
</div>
|
221 |
+
<div class="tr-row" style="height:35px">
|
222 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
223 |
+
longText
|
224 |
+
</div>
|
225 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
226 |
+
Any string value
|
227 |
+
</div>
|
228 |
+
</div>
|
229 |
+
<div class="tr-row" style="height:35px">
|
230 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
231 |
+
link
|
232 |
+
</div>
|
233 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
234 |
+
Any URL
|
235 |
+
</div>
|
236 |
+
</div>
|
237 |
+
<div class="tr-row" style="height:35px">
|
238 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
239 |
+
date
|
240 |
+
</div>
|
241 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
242 |
+
SO 8601 date (YYYYMMDDTHH:MM:SSZ)
|
243 |
+
</div>
|
244 |
+
</div>
|
245 |
+
<div class="tr-row" style="height:35px">
|
246 |
+
<div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
|
247 |
+
bool
|
248 |
+
</div>
|
249 |
+
<div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
|
250 |
+
Can be “true” OR “false”
|
251 |
+
</div>
|
252 |
+
</div>
|
253 |
+
</div>
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
</div>
|
258 |
+
|
259 |
+
<div class="row mar-0 pad-top-10">
|
260 |
+
<div class="col-md-60 magento-head pad-0">
|
261 |
+
Sync the catalog data
|
262 |
+
</div>
|
263 |
+
</div>
|
264 |
+
<div class="row mar-0">
|
265 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-10">
|
266 |
+
Sync your catalog data with the Unbxd Recommendation Engine once.
|
267 |
+
</div>
|
268 |
+
</div>
|
269 |
+
<div class="row mar-0 pad-top-30">
|
270 |
+
<div on-click="uploadData" class="col-md-20 button-black-magento1 width-250 {{#if disableButton}}disabled-btn{{/if}} " >
|
271 |
+
<div class="clickable-btn" style="color: #fff !important;">
|
272 |
+
UPLOAD CATALOG DATA
|
273 |
+
</div>
|
274 |
+
</div>
|
275 |
+
</div>
|
276 |
+
|
277 |
+
<!-- <div class="row mar-0 pad-10 background-success mar-top-10">
|
278 |
+
<div class="pull-left succes-div width-20">
|
279 |
+
|
280 |
+
</div>
|
281 |
+
<div class="magento-text width-80">
|
282 |
+
<div class="success-head">
|
283 |
+
Congratulations
|
284 |
+
</div>
|
285 |
+
{{_unbxdObject.siteName}}'s catalog has been successfully synced with Unbxd Recommendation Engine. Proceed to test for successful Analytics integration and widget integration.
|
286 |
+
</div>
|
287 |
+
</div> -->
|
288 |
+
|
289 |
+
<div style="padding-top: 9px;">
|
290 |
+
<div class="unbxd-error-msg">
|
291 |
+
{{dataErrorMsg}}
|
292 |
+
</div>
|
293 |
+
<div class="unbxd-success-msg">
|
294 |
+
{{dataSuccessMsg}}
|
295 |
+
</div>
|
296 |
+
</div>
|
297 |
+
</div>
|
skin/adminhtml/default/default/unbxd/templates/credentails.html
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
<div class="row mar-0 border-left-color pad-btm-10p">
|
4 |
+
<div class="col-md-60 col-sm-60 pad-0">
|
5 |
+
<div class="row mar-0">
|
6 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block brd-btm-none">
|
7 |
+
<div class="row mar-0">
|
8 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-20">
|
9 |
+
Authenticate the Unbxd Module
|
10 |
+
</div>
|
11 |
+
</div>
|
12 |
+
<div class="row mar-0">
|
13 |
+
<div class="col-md-60 magento-text text1 pad-0">
|
14 |
+
You will need an Unbxd Account in order to authenticate the Unbxd module
|
15 |
+
</div>
|
16 |
+
</div>
|
17 |
+
<div class="row mar-0">
|
18 |
+
<div class="col-md-60 magento-text text1 pad-0 mar-btm-70">
|
19 |
+
Create an account here <a href="//dashboard.unbxd.com/recommendations/#/register" target="_blank" style="color:#45b5c1;"> UNBXD Recommender </a>
|
20 |
+
</div>
|
21 |
+
</div>
|
22 |
+
|
23 |
+
</div>
|
24 |
+
</div>
|
25 |
+
|
26 |
+
<div class="row mar-0">
|
27 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-landing-block mar-btm-20">
|
28 |
+
|
29 |
+
<div class="row mar-0">
|
30 |
+
<div class="col-md-23 pad-0">
|
31 |
+
<div class="row">
|
32 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
|
33 |
+
Your Site Key
|
34 |
+
</div>
|
35 |
+
</div>
|
36 |
+
<div class="row">
|
37 |
+
<div class="col-md-48 col-sm-20 col-xs-60">
|
38 |
+
<input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{site_key}}>
|
39 |
+
</div>
|
40 |
+
<div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
|
41 |
+
data-title="Site Key" data-content="Receive the Site Key in a mail or find it in the Info Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard" data-container="#innerContainr" >
|
42 |
+
|
43 |
+
</div>
|
44 |
+
</div>
|
45 |
+
</div>
|
46 |
+
<div class="col-md-23 pad-0">
|
47 |
+
<div class="row">
|
48 |
+
<div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
|
49 |
+
Secret Key
|
50 |
+
</div>
|
51 |
+
</div>
|
52 |
+
<div class="row">
|
53 |
+
<div class="col-md-48 col-sm-20 col-xs-60">
|
54 |
+
<input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{secret_key}} >
|
55 |
+
</div>
|
56 |
+
<div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
|
57 |
+
data-title="Secret Key" data-content="Receive the Secret Key in a mail or find it in the Accounts Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard" data-container="#innerContainr" >
|
58 |
+
|
59 |
+
</div>
|
60 |
+
</div>
|
61 |
+
</div>
|
62 |
+
</div>
|
63 |
+
|
64 |
+
</div>
|
65 |
+
</div>
|
66 |
+
<div class="row mar-0">
|
67 |
+
|
68 |
+
<div on-click="authenticate" class="col-md-20
|
69 |
+
button-black-magento
|
70 |
+
{{#if btnDisabled}}disabled-btn{{/if}}
|
71 |
+
{{#if step1}}disabled-btn{{/if}}
|
72 |
+
width-190 clickable-btn unbxd-mar-left-30 unbxd-mar-btm-20" style="margin:0px auto;float:none;">
|
73 |
+
|
74 |
+
<div style="color: #fff !important;">
|
75 |
+
AUTHENTICATE
|
76 |
+
</div>
|
77 |
+
</div>
|
78 |
+
<div class="unbxd-error-msg unbxd-center-div " style="margin-left: 14% !important;">
|
79 |
+
{{errorMsg}}
|
80 |
+
</div>
|
81 |
+
<div class="unbxd-success-msg unbxd-center-div" style="margin-left: 14% !important;">
|
82 |
+
{{successMsg}}
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
</div>
|
87 |
+
|
88 |
+
|
89 |
+
|
skin/adminhtml/default/default/unbxd/templates/custom.html
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="tr-row">
|
2 |
+
|
3 |
+
<div class="td-left width-40 custom-attributes-td magento-border-left pull-left">
|
4 |
+
<div class="btn-group width-100" >
|
5 |
+
<select disabled={{disabled}} decorator='chosen' value={{field_name}} name="unbxd-customattr" id="">
|
6 |
+
{{#magentoFields}}
|
7 |
+
<option class={{disabled}} value="{{value}}">{{value}}</option>
|
8 |
+
{{/magentoFields}}
|
9 |
+
</select>
|
10 |
+
</div>
|
11 |
+
</div>
|
12 |
+
|
13 |
+
<div class="td-right width-40 custom-attributes-td magento-border-right pull-left">
|
14 |
+
<div class="btn-group width-100">
|
15 |
+
<select decorator='chosen' value="{{datatype}}"
|
16 |
+
on-change="changeOfUnbxdAttr" name="unbxd-customattr" id="">
|
17 |
+
{{#dataTypes}}
|
18 |
+
<option value="{{.}}">{{.}}</option>
|
19 |
+
{{/dataTypes}}
|
20 |
+
</select>
|
21 |
+
</div>
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<div class="pull-left width-20">
|
25 |
+
<div on-click="removeRow" class="remove-row clickable-btn pull-left">
|
26 |
+
</div>
|
27 |
+
<div on-click="newTodo" class="add-row clickable-btn pull-left">
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
|
31 |
+
</div>
|
skin/adminhtml/default/default/unbxd/templates/widgets.html
ADDED
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block border-left-color pad-btm-10p">
|
2 |
+
|
3 |
+
<div class="row mar-0">
|
4 |
+
<div class="col-md-60 magento-head pad-0 mar-btm-20">
|
5 |
+
Install Recommendation Widget
|
6 |
+
</div>
|
7 |
+
</div>
|
8 |
+
<div class="row mar-0">
|
9 |
+
<div class="col-md-60 magento-text pad-0 ">
|
10 |
+
Recommendation widgets can be displayed on the Homepage, Category Page, Brand Pages, on the Cart and Product Detail Pages.
|
11 |
+
</div>
|
12 |
+
</div>
|
13 |
+
<div class="row mar-0">
|
14 |
+
<div class="col-md-60 magento-text pad-0 mar-btm-20">
|
15 |
+
Unbxd Recommendation widgets can be integrated in the below methods
|
16 |
+
</div>
|
17 |
+
</div>
|
18 |
+
<div class="row mar-0 magento-text">
|
19 |
+
<ul>
|
20 |
+
<li class="pad-btm-20">1.Through the CMS. See steps to locate templates using CMS
|
21 |
+
<span class="blue-link-help" on-click="showCMSHelp">here</span>
|
22 |
+
<div id="cmsHelp" class="row mar-0 pad-left-30 cms-help" style="display:none">
|
23 |
+
<ul>
|
24 |
+
<li>a) On the Magento store admin, navigate to CMS -> Pages</li>
|
25 |
+
<li>b) In the Manage pages section, select the page you want to paste the widget snippet on</li>
|
26 |
+
<li>c) On the left navigation, click the Content section for Page Information</li>
|
27 |
+
<li>d) Paste the snippet on the page that opens up to the right in the appropriate location</li>
|
28 |
+
</ul>
|
29 |
+
</div>
|
30 |
+
<div>
|
31 |
+
Refer to table(a) below which provides information of page type applicable for each snippet
|
32 |
+
</div>
|
33 |
+
</li>
|
34 |
+
|
35 |
+
<li>
|
36 |
+
2) By pasting the snippets on the appropriate template files
|
37 |
+
<div class="row mar-0">
|
38 |
+
<div class="col-md-60 magento-text pad-0 cms-help" style="padding-bottom:0">
|
39 |
+
For eg – To display the <b>“Recently Viewed”</b> widget on the HomePage, place the below snippet in the app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml file
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
<div class="row">
|
43 |
+
<div class="col-md-60 col-sm-60 col-xs-60">
|
44 |
+
<div class="script-block" style="border:0;padding-top:10px">
|
45 |
+
<pre class="prettyprint-dashboard"> <div id=<span class="pun">"unbxd_recently_viewed"></span></div>
|
46 |
+
</pre>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
</div>
|
50 |
+
</li>
|
51 |
+
</ul>
|
52 |
+
</div>
|
53 |
+
<div class="row mar-0">
|
54 |
+
<b>Table (a)</b>
|
55 |
+
</div>
|
56 |
+
|
57 |
+
<div class="row mar-0">
|
58 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0">
|
59 |
+
<div class="row mar-0">
|
60 |
+
<div class="col-md-60 col-sm-60 pad-0 mar-btm-30 ">
|
61 |
+
<div class="table table-magento hide-over-flow" style="width: 95%;">
|
62 |
+
<div style="width: 100%;height: 50px;">
|
63 |
+
<div class="unbxd-div-td unbxd-th width-30 unbxd-text-verticle-center "
|
64 |
+
data-title="Magento Attribute" data-content="Magento fields in your feed" >
|
65 |
+
Widget Type
|
66 |
+
</div>
|
67 |
+
|
68 |
+
<div class="unbxd-div-td unbxd-th width-40 unbxd-text-verticle-center" data-title="Magento Attribute" data-content="Magento fields in your feed" >
|
69 |
+
HTML Snippet
|
70 |
+
</div>
|
71 |
+
|
72 |
+
<div class="unbxd-div-td unbxd-th width-30 unbxd-text-verticle-center" data-title="Magento Attribute" data-content="Magento fields in your feed" >
|
73 |
+
Page Type
|
74 |
+
</div>
|
75 |
+
</div>
|
76 |
+
|
77 |
+
|
78 |
+
<div>
|
79 |
+
<div class="tr-row ">
|
80 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
81 |
+
Recently Viewed
|
82 |
+
</div>
|
83 |
+
|
84 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break unbxd-text-center">
|
85 |
+
<div id="unbxd_recently_viewed"> </div>
|
86 |
+
</div>
|
87 |
+
|
88 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
|
89 |
+
|
90 |
+
Home Page, Product Page
|
91 |
+
</div>
|
92 |
+
|
93 |
+
</div>
|
94 |
+
|
95 |
+
<div class="tr-row ">
|
96 |
+
<div class="unbxd-div-td pad-left-10 width-30 child-right unbxd-text-center unbxd-caps">Recommended for you
|
97 |
+
</div>
|
98 |
+
|
99 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
100 |
+
<div id="unbxd_recommended_for_you"> </div>
|
101 |
+
</div>
|
102 |
+
|
103 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break child-right word-break unbxd-text-center">
|
104 |
+
Home Page, Product Page
|
105 |
+
</div>
|
106 |
+
|
107 |
+
</div>
|
108 |
+
|
109 |
+
<div class="tr-row ">
|
110 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
111 |
+
More Like these
|
112 |
+
</div>
|
113 |
+
|
114 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
115 |
+
<div id="unbxd_more_like_these"> </div>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
|
119 |
+
Product Page
|
120 |
+
</div>
|
121 |
+
|
122 |
+
</div>
|
123 |
+
<div class="tr-row ">
|
124 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
125 |
+
Viewed also Viewed
|
126 |
+
</div>
|
127 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
128 |
+
<div id="unbxd_also_viewed"> </div>
|
129 |
+
</div>
|
130 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
|
131 |
+
Product Page
|
132 |
+
</div>
|
133 |
+
|
134 |
+
</div>
|
135 |
+
|
136 |
+
<div class="tr-row ">
|
137 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">Bought Also Bought
|
138 |
+
</div>
|
139 |
+
|
140 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
141 |
+
<div id="unbxd_also_bought"> </div>
|
142 |
+
</div>
|
143 |
+
|
144 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Page
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
|
148 |
+
<div class="tr-row ">
|
149 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">Cart Recommendations
|
150 |
+
</div>
|
151 |
+
|
152 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
153 |
+
<div id="unbxd_cart_recommendations"> </div>
|
154 |
+
</div>
|
155 |
+
|
156 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Cart Page
|
157 |
+
</div>
|
158 |
+
</div>
|
159 |
+
|
160 |
+
<div class="tr-row ">
|
161 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
162 |
+
HomePage Top Sellers
|
163 |
+
</div>
|
164 |
+
|
165 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
166 |
+
<div id="unbxd_top_sellers"> </div>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Pages
|
170 |
+
</div>
|
171 |
+
|
172 |
+
<div class="tr-row ">
|
173 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
174 |
+
Category Top Sellers
|
175 |
+
</div>
|
176 |
+
|
177 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
178 |
+
<div id="unbxd_category_top_sellers"> </div>
|
179 |
+
</div>
|
180 |
+
|
181 |
+
|
182 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Category/Sub-category Pages
|
183 |
+
</div>
|
184 |
+
</div>
|
185 |
+
|
186 |
+
<div class="tr-row ">
|
187 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
188 |
+
Brand Top Sellers
|
189 |
+
</div>
|
190 |
+
|
191 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
192 |
+
<div id="unbxd_brand_top_sellers"> </div>
|
193 |
+
</div>
|
194 |
+
|
195 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Brand Pages
|
196 |
+
</div>
|
197 |
+
</div>
|
198 |
+
|
199 |
+
<div class="tr-row ">
|
200 |
+
<div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
|
201 |
+
PDP Top Sellers
|
202 |
+
</div>
|
203 |
+
|
204 |
+
<div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
|
205 |
+
<div id="unbxd_pdp_top_sellers"> </div>
|
206 |
+
</div>
|
207 |
+
|
208 |
+
<div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Pages
|
209 |
+
</div>
|
210 |
+
</div>
|
211 |
+
|
212 |
+
</div>
|
213 |
+
</div>
|
214 |
+
|
215 |
+
</div>
|
216 |
+
</div>
|
217 |
+
|
218 |
+
<div class="row mar-0">
|
219 |
+
<b>Table (b)</b>
|
220 |
+
</div>
|
221 |
+
|
222 |
+
<div class="row mar-0">
|
223 |
+
<div class="col-md-60 col-sm-60 col-xs-60 pad-0">
|
224 |
+
<div class="row mar-0" style="width: 95%;">
|
225 |
+
<div class="col-md-60 col-sm-60 pad-0 mar-btm-30 ">
|
226 |
+
<div class="table table-magento hide-over-flow">
|
227 |
+
<div style="width: 100%;height: 50px;">
|
228 |
+
<div class="unbxd-div-td unbxd-th width-20 unbxd-text-verticle-center "
|
229 |
+
data-title="Magento Attribute" data-content="Magento fields in your feed" >
|
230 |
+
Page Type
|
231 |
+
</div>
|
232 |
+
|
233 |
+
<div class="unbxd-div-td unbxd-th width-80 unbxd-text-verticle-center" data-title="Magento Attribute" data-content="Magento fields in your feed" >
|
234 |
+
Template File
|
235 |
+
</div>
|
236 |
+
</div>
|
237 |
+
|
238 |
+
|
239 |
+
<div>
|
240 |
+
<div class="tr-row ">
|
241 |
+
<div class="unbxd-div-td pad-left-10 width-20 child-right unbxd-text-center">Home Page</div>
|
242 |
+
|
243 |
+
<div class="unbxd-div-td pad-left-10 width-80 word-break child-right word-break unbxd-text-center">
|
244 |
+
app/design/frontend/{your_package}/{your_theme}/template/sample/home.phtml
|
245 |
+
</div>
|
246 |
+
|
247 |
+
</div>
|
248 |
+
<div class="tr-row ">
|
249 |
+
<div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
|
250 |
+
Product Page
|
251 |
+
</div>
|
252 |
+
|
253 |
+
<div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
|
254 |
+
app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<div class="tr-row ">
|
259 |
+
<div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
|
260 |
+
Cart Page
|
261 |
+
</div>
|
262 |
+
|
263 |
+
<div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
|
264 |
+
app/design/frontend/{your_package}/{your_theme}/template/checkout/cart.phtml
|
265 |
+
</div>
|
266 |
+
</div>
|
267 |
+
|
268 |
+
<div class="tr-row ">
|
269 |
+
<div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
|
270 |
+
Category Listing Page
|
271 |
+
</div>
|
272 |
+
|
273 |
+
<div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
|
274 |
+
app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
|
275 |
+
</div>
|
276 |
+
</div>
|
277 |
+
|
278 |
+
<div class="tr-row ">
|
279 |
+
<div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
|
280 |
+
Brand Pages
|
281 |
+
</div>
|
282 |
+
|
283 |
+
<div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
|
284 |
+
app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
|
285 |
+
</div>
|
286 |
+
</div>
|
287 |
+
|
288 |
+
|
289 |
+
</div>
|
290 |
+
</div>
|
291 |
+
|
292 |
+
</div>
|
293 |
+
</div>
|
294 |
+
|
295 |
+
|
296 |
+
<div class="row mar-0 magento-text">
|
297 |
+
In case you face any issues, please contact us at <span class="unbxd-blue-link">support@unbxd.com</span>
|
298 |
+
</div>
|
299 |
+
|
300 |
+
</div>
|
301 |
+
</div>
|
302 |
+
</div>
|