1
0
AntonLV 8 жил өмнө
parent
commit
f7a96bf2e5

+ 11 - 11
modules/boonex/russian/data/langs/bx_shopify/ru.xml

@@ -20,9 +20,9 @@
 	<string name="_bx_shopify_form_entry_input_sys_do_publish"><![CDATA[Опубликовать]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_do_publish"><![CDATA[Опубликовать]]></string>
 	<string name="_bx_shopify_form_entry_input_do_publish"><![CDATA[Опубликовать]]></string>
 	<string name="_bx_shopify_form_entry_input_do_publish"><![CDATA[Опубликовать]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_code"><![CDATA[ID продукта]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_code"><![CDATA[ID продукта]]></string>
-    <string name="_bx_shopify_form_entry_input_code"><![CDATA[ID продукта]]></string>
-    <string name="_bx_shopify_form_entry_input_code_inf"><![CDATA[ID продукта Вы можете получить из URL продукта, когда просматриваете продукт в секции Продукты в Панели администрирования вашего Shopify магазина.]]></string>
-    <string name="_bx_shopify_form_entry_input_code_err"><![CDATA[ID продукта обязателен. Пожалуйста, заполните это поле.]]></string>
+    <string name="_bx_shopify_form_entry_input_code"><![CDATA[Идентификатор продукта]]></string>
+    <string name="_bx_shopify_form_entry_input_code_inf"><![CDATA[Идентификатор продукта Вы можете в секции 'Предварительный просмотр в поисковых системах', когда редактируете продукт в секции Продукты в Панели администрирования вашего Shopify магазина.]]></string>
+    <string name="_bx_shopify_form_entry_input_code_err"><![CDATA[Идентификатор продукта обязателен. Пожалуйста, заполните это поле.]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_title"><![CDATA[Заголовок]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_title"><![CDATA[Заголовок]]></string>
 	<string name="_bx_shopify_form_entry_input_title"><![CDATA[Заголовок]]></string>
 	<string name="_bx_shopify_form_entry_input_title"><![CDATA[Заголовок]]></string>
 	<string name="_bx_shopify_form_entry_input_title_err"><![CDATA[Заголовок обязателен. Пожалуйста, заполните это поле]]></string>
 	<string name="_bx_shopify_form_entry_input_title_err"><![CDATA[Заголовок обязателен. Пожалуйста, заполните это поле]]></string>
@@ -43,15 +43,12 @@
 
 
     <string name="_bx_shopify_form_settings"><![CDATA[Настройки]]></string>
     <string name="_bx_shopify_form_settings"><![CDATA[Настройки]]></string>
     <string name="_bx_shopify_form_settings_display_edit"><![CDATA[Редактировать настройки]]></string>
     <string name="_bx_shopify_form_settings_display_edit"><![CDATA[Редактировать настройки]]></string>
-    <string name="_bx_shopify_form_settings_input_sys_api_key"><![CDATA[API ключ]]></string>
-    <string name="_bx_shopify_form_settings_input_api_key"><![CDATA[API ключ (Маркер доступа)]]></string>
-    <string name="_bx_shopify_form_settings_input_api_key_err"><![CDATA[Поле API ключ не может быть пустым]]></string>
     <string name="_bx_shopify_form_settings_input_sys_domain"><![CDATA[Домен]]></string>
     <string name="_bx_shopify_form_settings_input_sys_domain"><![CDATA[Домен]]></string>
     <string name="_bx_shopify_form_settings_input_domain"><![CDATA[Домен]]></string>
     <string name="_bx_shopify_form_settings_input_domain"><![CDATA[Домен]]></string>
-    <string name="_bx_shopify_form_settings_input_domain_err"><![CDATA[Поле домен не может быть пустым]]></string>
-    <string name="_bx_shopify_form_settings_input_sys_app_id"><![CDATA[App ID]]></string>
-    <string name="_bx_shopify_form_settings_input_app_id"><![CDATA[App ID]]></string>
-    <string name="_bx_shopify_form_settings_input_app_id_err"><![CDATA[Поле App ID не может быть пустым]]></string>
+    <string name="_bx_shopify_form_settings_input_domain_err"><![CDATA[Это поле не может быть пустым]]></string>
+    <string name="_bx_shopify_form_settings_input_sys_access_token"><![CDATA[Токен доступа к витрине]]></string>
+    <string name="_bx_shopify_form_settings_input_access_token"><![CDATA[Токен доступа к витрине]]></string>
+    <string name="_bx_shopify_form_settings_input_access_token_err"><![CDATA[Это поле не может быть пустым]]></string>
     <string name="_bx_shopify_form_settings_input_sys_do_submit"><![CDATA[Выполнить]]></string>
     <string name="_bx_shopify_form_settings_input_sys_do_submit"><![CDATA[Выполнить]]></string>
     <string name="_bx_shopify_form_settings_input_do_submit"><![CDATA[Выполнить]]></string>
     <string name="_bx_shopify_form_settings_input_do_submit"><![CDATA[Выполнить]]></string>
 
 
@@ -151,6 +148,8 @@
     <string name="_bx_shopify_menu_title_view_entry"><![CDATA[Товар - Действия]]></string>
     <string name="_bx_shopify_menu_title_view_entry"><![CDATA[Товар - Действия]]></string>
     <string name="_bx_shopify_menu_title_submenu"><![CDATA[Товары - Подменю]]></string>
     <string name="_bx_shopify_menu_title_submenu"><![CDATA[Товары - Подменю]]></string>
     <string name="_bx_shopify_menu_set_title_submenu"><![CDATA[Товары - Подменю]]></string>
     <string name="_bx_shopify_menu_set_title_submenu"><![CDATA[Товары - Подменю]]></string>
+    <string name="_bx_shopify_menu_item_title_system_buy_entry"><![CDATA[Купить]]></string>
+    <string name="_bx_shopify_menu_item_title_buy_entry"><![CDATA[Купить]]></string>
     <string name="_bx_shopify_menu_item_title_system_create_entry"><![CDATA[Товар]]></string>
     <string name="_bx_shopify_menu_item_title_system_create_entry"><![CDATA[Товар]]></string>
     <string name="_bx_shopify_menu_item_title_create_entry"><![CDATA[Товар]]></string>
     <string name="_bx_shopify_menu_item_title_create_entry"><![CDATA[Товар]]></string>
     <string name="_bx_shopify_menu_item_title_system_edit_entry"><![CDATA[Редактировать товар]]></string>
     <string name="_bx_shopify_menu_item_title_system_edit_entry"><![CDATA[Редактировать товар]]></string>
@@ -229,8 +228,9 @@
     <string name="_bx_shopify_msg_save_settings"><![CDATA[Настройки сохранены.]]></string>
     <string name="_bx_shopify_msg_save_settings"><![CDATA[Настройки сохранены.]]></string>
     <string name="_bx_shopify_err_save_settings"><![CDATA[Невозможно сохранить настройки.]]></string>
     <string name="_bx_shopify_err_save_settings"><![CDATA[Невозможно сохранить настройки.]]></string>
     <string name="_bx_shopify_err_not_configured"><![CDATA[Сначала вам необходимо настроить магазин. <a href="{0}">Нажмите здесь</a>.]]></string>
     <string name="_bx_shopify_err_not_configured"><![CDATA[Сначала вам необходимо настроить магазин. <a href="{0}">Нажмите здесь</a>.]]></string>
-    <string name="_bx_shopify_err_load_product"><![CDATA[Невозможно загрузить продукт. Пожалуйста, проверьте настройки вашего магазина и ID продукта.]]></string>
+    <string name="_bx_shopify_err_load_product"><![CDATA[Невозможно загрузить продукт. Пожалуйста, проверьте настройки вашего магазина и идентификатор продукта.]]></string>
     <string name="_bx_shopify_err_load_collection"><![CDATA[Невозможно загрузить коллекцию. Пожалуйста, проверьте настройки вашего магазина.]]></string>
     <string name="_bx_shopify_err_load_collection"><![CDATA[Невозможно загрузить коллекцию. Пожалуйста, проверьте настройки вашего магазина.]]></string>
+    <string name="_bx_shopify_err_purchase_product"><![CDATA[Невозможно купить продукт.]]></string>
 
 
     <string name="_bx_shopify_txt_all_entries_by"><![CDATA[<a href="{0}">Все товары от {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_by"><![CDATA[<a href="{0}">Все товары от {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_in"><![CDATA[<a href="{0}">Все альбомы в {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_in"><![CDATA[<a href="{0}">Все альбомы в {1} ({2})</a>]]></string>

+ 1 - 1
modules/boonex/shopify/classes/BxShopifyConfig.php

@@ -164,7 +164,7 @@ class BxShopifyConfig extends BxBaseModTextConfig
         );
         );
     }
     }
 
 
-	public function getHtmlIds($sKey = '')
+    public function getHtmlIds($sKey = '')
     {
     {
         if(empty($sKey))
         if(empty($sKey))
             return $this->_aHtmlIds;
             return $this->_aHtmlIds;

+ 5 - 0
modules/boonex/shopify/classes/BxShopifyMenuViewActions.php

@@ -21,6 +21,11 @@ class BxShopifyMenuViewActions extends BxBaseModTextMenuViewActions
         parent::__construct($aObject, $oTemplate);
         parent::__construct($aObject, $oTemplate);
     }
     }
 
 
+    protected function _getMenuItemBuyShopifyEntry($aItem)
+    {
+        return $this->_oModule->_oTemplate->entryBuy($this->_aContentInfo);
+    }
+
     protected function _getMenuItemEditShopifyEntry($aItem)
     protected function _getMenuItemEditShopifyEntry($aItem)
     {
     {
         return $this->_getMenuItemByNameActions($aItem);
         return $this->_getMenuItemByNameActions($aItem);

+ 11 - 8
modules/boonex/shopify/classes/BxShopifyTemplate.php

@@ -31,7 +31,7 @@ class BxShopifyTemplate extends BxBaseModTextTemplate
 
 
         $sProto = bx_proto();
         $sProto = bx_proto();
         $this->addJs(array(
         $this->addJs(array(
-            $sProto . '://sdks.shopifycdn.com/js-buy-sdk/v0/latest/shopify-buy.umd.polyfilled.min.js',
+            $sProto . '://sdks.shopifycdn.com/js-buy-sdk/v1/latest/index.umd.min.js',
             'shop.js'
             'shop.js'
         ));
         ));
     }
     }
@@ -42,9 +42,8 @@ class BxShopifyTemplate extends BxBaseModTextTemplate
             return '';
             return '';
 
 
         $sCode = $this->getJsCode('shop', array(
         $sCode = $this->getJsCode('shop', array(
-            'sAPIKey' => $aSettings['api_key'],
             'sDomain' => $aSettings['domain'],
             'sDomain' => $aSettings['domain'],
-            'sAppId' => $aSettings['app_id'],
+            'sAccessToken' => $aSettings['access_token'],
         ));
         ));
 
 
         $this->addJsTranslation(array(
         $this->addJsTranslation(array(
@@ -59,8 +58,12 @@ class BxShopifyTemplate extends BxBaseModTextTemplate
 
 
     public function entryBuy($aData)
     public function entryBuy($aData)
     {
     {
+        $CNF = &$this->getModule()->_oConfig->CNF;
+
         return $this->parseHtmlByName('entry-buy.html', array(
         return $this->parseHtmlByName('entry-buy.html', array(
-        	'html_id' => $this->_oConfig->getHtmlIds('entry_buy')
+            'js_object' => $this->_oConfig->getJsObjectShop($aData[$CNF['FIELD_AUTHOR']]),
+            'html_id' => $this->_oConfig->getHtmlIds('entry_buy'),
+            'entry_code' => $aData[$CNF['FIELD_CODE']]
         ));
         ));
     }
     }
 
 
@@ -82,7 +85,7 @@ class BxShopifyTemplate extends BxBaseModTextTemplate
         return $this->parseHtmlByName('attachments.html', array(
         return $this->parseHtmlByName('attachments.html', array(
             'html_id' => $this->_oConfig->getHtmlIds('entry_attachments'),
             'html_id' => $this->_oConfig->getHtmlIds('entry_attachments'),
             'html_id_sample' => $this->_oConfig->getHtmlIds('entry_attachment_sample'),
             'html_id_sample' => $this->_oConfig->getHtmlIds('entry_attachment_sample'),
-        	'popup_id' => $sPopupId,
+            'popup_id' => $sPopupId,
             'popup' => BxTemplFunctions::getInstance()->transBox($sPopupId, '<img class="bx-spf-attachment-popup-img" src="" />', true, true),
             'popup' => BxTemplFunctions::getInstance()->transBox($sPopupId, '<img class="bx-spf-attachment-popup-img" src="" />', true, true),
         ));
         ));
     }
     }
@@ -102,12 +105,12 @@ class BxShopifyTemplate extends BxBaseModTextTemplate
 
 
         $iProfileId = $aData[$CNF['FIELD_AUTHOR']];
         $iProfileId = $aData[$CNF['FIELD_AUTHOR']];
         $sCode = $aData[$CNF['FIELD_CODE']];
         $sCode = $aData[$CNF['FIELD_CODE']];
-		$sClass = $this->_getUnitClass($aData,(isset($aParams['template_name']) ? $aParams['template_name'] : ''));
+        $sClass = $this->_getUnitClass($aData,(isset($aParams['template_name']) ? $aParams['template_name'] : ''));
         return array_merge(parent::getUnit($aData, $aParams), array(
         return array_merge(parent::getUnit($aData, $aParams), array(
             'js_object' => $this->_oConfig->getJsObjectShop($iProfileId),
             'js_object' => $this->_oConfig->getJsObjectShop($iProfileId),
             'js_content' => $this->_oModule->serviceIncludeCode($iProfileId),
             'js_content' => $this->_oModule->serviceIncludeCode($iProfileId),
-        	'class' => $this->_oConfig->getHtmlIds('unit') . $sClass,
-            'entry_code' => $sCode,
+            'class' => (!empty($sClass) ? $sClass . ' ' : '') . $this->_oConfig->getHtmlIds('unit') . $sCode,
+            'entry_code' => $sCode
         ));
         ));
     }
     }
 }
 }

+ 11 - 11
modules/boonex/shopify/install/langs/en.xml

@@ -19,9 +19,9 @@
 	<string name="_bx_shopify_form_entry_input_do_submit"><![CDATA[Submit]]></string>
 	<string name="_bx_shopify_form_entry_input_do_submit"><![CDATA[Submit]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_do_publish"><![CDATA[Publish]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_do_publish"><![CDATA[Publish]]></string>
 	<string name="_bx_shopify_form_entry_input_do_publish"><![CDATA[Publish]]></string>
 	<string name="_bx_shopify_form_entry_input_do_publish"><![CDATA[Publish]]></string>
-	<string name="_bx_shopify_form_entry_input_sys_code"><![CDATA[Product ID]]></string>
-    <string name="_bx_shopify_form_entry_input_code"><![CDATA[Product ID]]></string>
-    <string name="_bx_shopify_form_entry_input_code_inf"><![CDATA[The Product ID can be taken from product's URL when you are viewing the product in Products section of your Shopify dashboard.]]></string>
+	<string name="_bx_shopify_form_entry_input_sys_code"><![CDATA[Product handle]]></string>
+    <string name="_bx_shopify_form_entry_input_code"><![CDATA[Product handle]]></string>
+    <string name="_bx_shopify_form_entry_input_code_inf"><![CDATA[The Product handle can be found in 'Search engine listing preview' section when you are editing the product in Products section of your Shopify dashboard.]]></string>
     <string name="_bx_shopify_form_entry_input_code_err"><![CDATA[Product ID is essential. Please, fill in this field.]]></string>
     <string name="_bx_shopify_form_entry_input_code_err"><![CDATA[Product ID is essential. Please, fill in this field.]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_title"><![CDATA[Title]]></string>
 	<string name="_bx_shopify_form_entry_input_sys_title"><![CDATA[Title]]></string>
 	<string name="_bx_shopify_form_entry_input_title"><![CDATA[Title]]></string>
 	<string name="_bx_shopify_form_entry_input_title"><![CDATA[Title]]></string>
@@ -43,15 +43,12 @@
 
 
     <string name="_bx_shopify_form_settings"><![CDATA[Settings]]></string>
     <string name="_bx_shopify_form_settings"><![CDATA[Settings]]></string>
     <string name="_bx_shopify_form_settings_display_edit"><![CDATA[Edit Settings]]></string>
     <string name="_bx_shopify_form_settings_display_edit"><![CDATA[Edit Settings]]></string>
-    <string name="_bx_shopify_form_settings_input_sys_api_key"><![CDATA[API Key]]></string>
-    <string name="_bx_shopify_form_settings_input_api_key"><![CDATA[API Key (Access Token)]]></string>
-    <string name="_bx_shopify_form_settings_input_api_key_err"><![CDATA[API Key field can't be empty]]></string>
     <string name="_bx_shopify_form_settings_input_sys_domain"><![CDATA[Domain]]></string>
     <string name="_bx_shopify_form_settings_input_sys_domain"><![CDATA[Domain]]></string>
     <string name="_bx_shopify_form_settings_input_domain"><![CDATA[Domain]]></string>
     <string name="_bx_shopify_form_settings_input_domain"><![CDATA[Domain]]></string>
-    <string name="_bx_shopify_form_settings_input_domain_err"><![CDATA[Domain field can't be empty]]></string>
-    <string name="_bx_shopify_form_settings_input_sys_app_id"><![CDATA[App ID]]></string>
-    <string name="_bx_shopify_form_settings_input_app_id"><![CDATA[App ID]]></string>
-    <string name="_bx_shopify_form_settings_input_app_id_err"><![CDATA[App ID field can't be empty]]></string>
+    <string name="_bx_shopify_form_settings_input_domain_err"><![CDATA[This field can't be empty]]></string>
+    <string name="_bx_shopify_form_settings_input_sys_access_token"><![CDATA[Storefront access token]]></string>
+    <string name="_bx_shopify_form_settings_input_access_token"><![CDATA[Storefront access token]]></string>
+    <string name="_bx_shopify_form_settings_input_access_token_err"><![CDATA[This field can't be empty]]></string>
     <string name="_bx_shopify_form_settings_input_sys_do_submit"><![CDATA[Submit]]></string>
     <string name="_bx_shopify_form_settings_input_sys_do_submit"><![CDATA[Submit]]></string>
     <string name="_bx_shopify_form_settings_input_do_submit"><![CDATA[Submit]]></string>
     <string name="_bx_shopify_form_settings_input_do_submit"><![CDATA[Submit]]></string>
 
 
@@ -150,6 +147,8 @@
     <string name="_bx_shopify_menu_title_view_entry"><![CDATA[Goods Actions]]></string>
     <string name="_bx_shopify_menu_title_view_entry"><![CDATA[Goods Actions]]></string>
     <string name="_bx_shopify_menu_title_submenu"><![CDATA[Goods Submenu]]></string>
     <string name="_bx_shopify_menu_title_submenu"><![CDATA[Goods Submenu]]></string>
     <string name="_bx_shopify_menu_set_title_submenu"><![CDATA[Goods Submenu]]></string>
     <string name="_bx_shopify_menu_set_title_submenu"><![CDATA[Goods Submenu]]></string>
+    <string name="_bx_shopify_menu_item_title_system_buy_entry"><![CDATA[Buy]]></string>
+    <string name="_bx_shopify_menu_item_title_buy_entry"><![CDATA[Buy]]></string>
     <string name="_bx_shopify_menu_item_title_system_create_entry"><![CDATA[Goods]]></string>
     <string name="_bx_shopify_menu_item_title_system_create_entry"><![CDATA[Goods]]></string>
     <string name="_bx_shopify_menu_item_title_create_entry"><![CDATA[Goods]]></string>
     <string name="_bx_shopify_menu_item_title_create_entry"><![CDATA[Goods]]></string>
     <string name="_bx_shopify_menu_item_title_system_edit_entry"><![CDATA[Edit]]></string>
     <string name="_bx_shopify_menu_item_title_system_edit_entry"><![CDATA[Edit]]></string>
@@ -228,8 +227,9 @@
     <string name="_bx_shopify_msg_save_settings"><![CDATA[Settings were successfully saved.]]></string>
     <string name="_bx_shopify_msg_save_settings"><![CDATA[Settings were successfully saved.]]></string>
     <string name="_bx_shopify_err_save_settings"><![CDATA[Cannot save settings.]]></string>
     <string name="_bx_shopify_err_save_settings"><![CDATA[Cannot save settings.]]></string>
     <string name="_bx_shopify_err_not_configured"><![CDATA[You need to configure shop settings first. <a href="{0}">Click here</a>.]]></string>
     <string name="_bx_shopify_err_not_configured"><![CDATA[You need to configure shop settings first. <a href="{0}">Click here</a>.]]></string>
-    <string name="_bx_shopify_err_load_product"><![CDATA[Cannot load product. Please check your shop settings and product ID.]]></string>
+    <string name="_bx_shopify_err_load_product"><![CDATA[Cannot load product. Please check your shop settings and product handle.]]></string>
     <string name="_bx_shopify_err_load_collection"><![CDATA[Cannot load collection. Please check your shop settings.]]></string>
     <string name="_bx_shopify_err_load_collection"><![CDATA[Cannot load collection. Please check your shop settings.]]></string>
+    <string name="_bx_shopify_err_purchase_product"><![CDATA[Cannot purchase the product.]]></string>
 
 
     <string name="_bx_shopify_txt_all_entries_by"><![CDATA[<a href="{0}">All Goods by {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_by"><![CDATA[<a href="{0}">All Goods by {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_in"><![CDATA[<a href="{0}">All Goods in {1} ({2})</a>]]></string>
     <string name="_bx_shopify_txt_all_entries_in"><![CDATA[<a href="{0}">All Goods in {1} ({2})</a>]]></string>

+ 1 - 0
modules/boonex/shopify/install/sql/enable.sql

@@ -189,6 +189,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_shopify_view_actions', 'bx_shopify', '_sys_menu_set_title_view_actions', 0);
 ('bx_shopify_view_actions', 'bx_shopify', '_sys_menu_set_title_view_actions', 0);
 
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('bx_shopify_view_actions', 'bx_shopify', 'buy-shopify-entry', '_bx_shopify_menu_item_title_system_buy_entry', '_bx_shopify_menu_item_title_buy_entry', '', '', '', '', '', '', 0, 2147483647, 1, 0, 0),
 ('bx_shopify_view_actions', 'bx_shopify', 'edit-shopify-entry', '_bx_shopify_menu_item_title_system_edit_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 10),
 ('bx_shopify_view_actions', 'bx_shopify', 'edit-shopify-entry', '_bx_shopify_menu_item_title_system_edit_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 10),
 ('bx_shopify_view_actions', 'bx_shopify', 'delete-shopify-entry', '_bx_shopify_menu_item_title_system_delete_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 20),
 ('bx_shopify_view_actions', 'bx_shopify', 'delete-shopify-entry', '_bx_shopify_menu_item_title_system_delete_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 20),
 ('bx_shopify_view_actions', 'bx_shopify', 'comment', '_sys_menu_item_title_system_va_comment', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 200),
 ('bx_shopify_view_actions', 'bx_shopify', 'comment', '_sys_menu_item_title_system_va_comment', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 200),

+ 5 - 8
modules/boonex/shopify/install/sql/install.sql

@@ -31,9 +31,8 @@ CREATE TABLE IF NOT EXISTS `bx_shopify_entries` (
 CREATE TABLE IF NOT EXISTS `bx_shopify_settings` (
 CREATE TABLE IF NOT EXISTS `bx_shopify_settings` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `author` int(10) unsigned NOT NULL,
   `author` int(10) unsigned NOT NULL,
-  `api_key` varchar(255) NOT NULL,
   `domain` varchar(255) NOT NULL,
   `domain` varchar(255) NOT NULL,
-  `app_id` tinyint(4) unsigned NOT NULL,
+  `access_token` varchar(255) NOT NULL,
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
   UNIQUE KEY `author` (`author`)
   UNIQUE KEY `author` (`author`)
 );
 );
@@ -186,9 +185,8 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_shopify', 'bx_shopify', 'added', '', '', 0, 'datetime', '_bx_shopify_form_entry_input_sys_date_added', '_bx_shopify_form_entry_input_date_added', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_shopify', 'bx_shopify', 'added', '', '', 0, 'datetime', '_bx_shopify_form_entry_input_sys_date_added', '_bx_shopify_form_entry_input_date_added', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_shopify', 'bx_shopify', 'changed', '', '', 0, 'datetime', '_bx_shopify_form_entry_input_sys_date_changed', '_bx_shopify_form_entry_input_date_changed', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_shopify', 'bx_shopify', 'changed', '', '', 0, 'datetime', '_bx_shopify_form_entry_input_sys_date_changed', '_bx_shopify_form_entry_input_date_changed', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 
 
-('bx_shopify_settings', 'bx_shopify', 'api_key', '', '', 0, 'text', '_bx_shopify_form_settings_input_sys_api_key', '_bx_shopify_form_settings_input_api_key', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_shopify_form_settings_input_api_key_err', 'Xss', '', 1, 0),
 ('bx_shopify_settings', 'bx_shopify', 'domain', '', '', 0, 'text', '_bx_shopify_form_settings_input_sys_domain', '_bx_shopify_form_settings_input_domain', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_shopify_form_settings_input_domain_err', 'Xss', '', 1, 0),
 ('bx_shopify_settings', 'bx_shopify', 'domain', '', '', 0, 'text', '_bx_shopify_form_settings_input_sys_domain', '_bx_shopify_form_settings_input_domain', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_shopify_form_settings_input_domain_err', 'Xss', '', 1, 0),
-('bx_shopify_settings', 'bx_shopify', 'app_id', '', '', 0, 'text', '_bx_shopify_form_settings_input_sys_app_id', '_bx_shopify_form_settings_input_app_id', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_shopify_form_settings_input_app_id_err', 'Int', '', 1, 0),
+('bx_shopify_settings', 'bx_shopify', 'access_token', '', '', 0, 'text', '_bx_shopify_form_settings_input_sys_access_token', '_bx_shopify_form_settings_input_access_token', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_shopify_form_settings_input_access_token_err', 'Xss', '', 1, 0),
 ('bx_shopify_settings', 'bx_shopify', 'do_submit', '_bx_shopify_form_settings_input_do_submit', '', 0, 'submit', '_bx_shopify_form_settings_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 ('bx_shopify_settings', 'bx_shopify', 'do_submit', '_bx_shopify_form_settings_input_do_submit', '', 0, 'submit', '_bx_shopify_form_settings_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
@@ -218,10 +216,9 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_shopify_entry_view_full', 'changed', 2147483647, 1, 3),
 ('bx_shopify_entry_view_full', 'changed', 2147483647, 1, 3),
 
 
 ('bx_shopify_settings_edit', 'mode', 2147483647, 1, 1),
 ('bx_shopify_settings_edit', 'mode', 2147483647, 1, 1),
-('bx_shopify_settings_edit', 'api_key', 2147483647, 1, 2),
-('bx_shopify_settings_edit', 'domain', 2147483647, 1, 3),
-('bx_shopify_settings_edit', 'app_id', 2147483647, 1, 4),
-('bx_shopify_settings_edit', 'do_submit', 2147483647, 1, 5);
+('bx_shopify_settings_edit', 'domain', 2147483647, 1, 2),
+('bx_shopify_settings_edit', 'access_token', 2147483647, 1, 3),
+('bx_shopify_settings_edit', 'do_submit', 2147483647, 1, 4);
 
 
 
 
 -- PRE-VALUES
 -- PRE-VALUES

+ 192 - 119
modules/boonex/shopify/js/shop.js

@@ -9,11 +9,10 @@
  */
  */
 
 
 function BxShopifyShop(oOptions) {
 function BxShopifyShop(oOptions) {
-	this._sAPIKey = oOptions.sAPIKey;
-	this._sDomain = oOptions.sDomain;
-	this._sAppId = oOptions.sAppId;
+    this._sDomain = oOptions.sDomain;
+    this._sAccessToken = oOptions.sAccessToken;
 
 
-	this._sActionsUrl = oOptions.sActionUrl;
+    this._sActionsUrl = oOptions.sActionUrl;
     this._sObjName = oOptions.sObjName == undefined ? 'oBxShopifyShop' : oOptions.sObjName;
     this._sObjName = oOptions.sObjName == undefined ? 'oBxShopifyShop' : oOptions.sObjName;
 
 
     this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
     this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
@@ -27,162 +26,236 @@ function BxShopifyShop(oOptions) {
     this._sClassLoading = 'bx-spf-loading';
     this._sClassLoading = 'bx-spf-loading';
     this._sClassLoaded = 'bx-spf-loaded';
     this._sClassLoaded = 'bx-spf-loaded';
 
 
-    this._oShopClient = ShopifyBuy.buildClient({
-	  accessToken: this._sAPIKey,
-	  domain: this._sDomain,
-	  appId: this._sAppId
-	});
+    this._oShopClient = window.ShopifyBuy.buildClient({
+        domain: this._sDomain,
+        storefrontAccessToken: this._sAccessToken
+    });
 }
 }
 
 
-BxShopifyShop.prototype.getUnit = function(iProduct) {
-	var $this = this;
+BxShopifyShop.prototype.getUnit = function(sProduct) {
+    var $this = this;
 
 
-	var oUnit = $('.' + this._aHtmlIds['unit'] + iProduct + ':not(.' + this._sClassLoading + ', .' + this._sClassLoaded + '):first');
-	if(!oUnit.length)
-		return;
+    var oUnit = $('.' + this._aHtmlIds['unit'] + sProduct + ':not(.' + this._sClassLoading + ', .' + this._sClassLoaded + '):first');
+    if(!oUnit.length)
+        return;
 
 
-	bx_loading(oUnit.addClass(this._sClassLoading), true);
+    bx_loading(oUnit.addClass(this._sClassLoading), true);
 
 
-	this.fetchProduct(iProduct, function (oProduct) {
-		$this.onGetUnit(oProduct);
-	}, function() {
-		bx_loading(oUnit.removeClass(this._sClassLoading), false);
+    this.fetchProductByHandle(sProduct, function (oProduct) {
+        $this.onGetUnit(oProduct);
+    }, function() {
+        bx_loading(oUnit.removeClass(this._sClassLoading), false);
 
 
-		bx_alert(_t('_bx_shopify_err_load_product'));
-	});
+        bx_alert(_t('_bx_shopify_err_load_product'));
+    });
 };
 };
 
 
 BxShopifyShop.prototype.onGetUnit = function(oProduct) {
 BxShopifyShop.prototype.onGetUnit = function(oProduct) {
-	if(!oProduct)
-		return;
-
-	var oUnit = $('.' + this._aHtmlIds['unit'] + oProduct.id + '.' + this._sClassLoading + ':first');
-	if(!oUnit.length)
-		return;
-
-	//--- Fetch product main image.
-	if(oProduct.selectedVariantImage.src) {
-		//--- for Extended view 
-		oUnit.find('.bx-spf-unit-cover img').attr('src', oProduct.selectedVariantImage.src).parents('.bx-spf-unit-cover:first').show();
-
-		//--- for Gallery view
-		oUnit.find('.bx-spf-unit-thumb').css('background-image', 'url(' + oProduct.selectedVariantImage.src + ')');
-	}
-
-	//--- Fetch product description.
-	oUnit.find('.bx-spf-unit-summary').html(oProduct.description);
-
-	//--- Fetch price.
-	if(oProduct.selectedVariant.formattedPrice) {
-		var oBuy = oUnit.find('.bx-shopify-buy');
-		var sBuyContent = oBuy.html();
-		oBuy.html(sBuyContent.replace('{price}', oProduct.selectedVariant.formattedPrice));
-		oBuy.attr('href', oProduct.selectedVariant.checkoutUrl(1));
-		oBuy.show();
-	}
-
-	bx_loading(oUnit.removeClass(this._sClassLoading).addClass(this._sClassLoaded), false);
-};
+    if(!oProduct)
+        return;
+
+    var oUnit = $('.' + this._aHtmlIds['unit'] + oProduct.handle + '.' + this._sClassLoading + ':first');
+    if(!oUnit.length)
+        return;
 
 
-BxShopifyShop.prototype.getEntry = function(iProduct) {
-	var $this = this;
-	var oLoading = $('.' + this._sClassCover);
+    //--- Fetch product description.
+    oUnit.find('.bx-spf-unit-title').html(oProduct.title);
 
 
-	bx_loading(oLoading, true);
+    //--- Fetch product description.
+    oUnit.find('.bx-spf-unit-summary').html(oProduct.description);
+    oUnit.find('.bx-base-text-unit-strecher').html(oProduct.description);
 
 
-	this.fetchProduct(iProduct, function (oProduct) {
-		$this.onGetEntry(oProduct);
-	}, function() {
-		bx_loading(oLoading, false);
+    //--- Fetch price.
+    if(oProduct.variants.length > 0) {
+        var oBuy = oUnit.find('.bx-shopify-buy');
+        var sBuyContent = oBuy.html();
+        oBuy.html(sBuyContent.replace('{price}', oProduct.variants[0].price)).show();
+    }
 
 
-		bx_alert(_t('_bx_shopify_err_load_product'));
-	});
+    bx_loading(oUnit.removeClass(this._sClassLoading).addClass(this._sClassLoaded), false);
 };
 };
 
 
-BxShopifyShop.prototype.onGetEntry = function(oProduct) {
-	if(!oProduct)
-		return;
+BxShopifyShop.prototype.getEntry = function(sProduct) {
+    var $this = this;
+    var oLoading = $('.' + this._sClassCover);
 
 
-	//--- Fetch product main image.
-	var iCoverImageId = oProduct.selectedVariantImage.id;
-	$('.' + this._sClassCover).css('background-image', 'url(' + oProduct.selectedVariantImage.src + ')');
+    bx_loading(oLoading, true);
 
 
-	//--- Fetch product description.
-	$('#' + this._aHtmlIds['entry_content']).find('.bx-spf-text').html(oProduct.description);
+    this.fetchProductByHandle(sProduct, function(oProduct) {
+        $this.onGetEntry(oProduct);
+    }, function() {
+        bx_loading(oLoading, false);
 
 
-	//--- Fetch product images.
-	var oSample = $('#' + this._aHtmlIds['entry_attachment_sample']);
-	var oContainer = $('#' + this._aHtmlIds['entry_attachments']);
-	oProduct.images.map(function(oImage) {
-		if(oImage.id == iCoverImageId)
-			return;
+        bx_alert(_t('_bx_shopify_err_load_product'));
+    });
+};
 
 
-		var oAttachment = oSample.clone().removeAttr('id').removeClass('bx-spf-attachment-sample');
+BxShopifyShop.prototype.onGetEntry = function(oProduct) {
+    if(!oProduct)
+        return;
+
+    //--- Fetch product title.
+    $('#' + this._aHtmlIds['entry_content']).find('.bx-spf-title').html(oProduct.title);
+
+    //--- Fetch product description.
+    $('#' + this._aHtmlIds['entry_content']).find('.bx-spf-text').html(oProduct.description);
+
+    //--- Fetch product images.
+    var oSample = $('#' + this._aHtmlIds['entry_attachment_sample']);
+    var oContainer = $('#' + this._aHtmlIds['entry_attachments']);
+    var iImage = 0;
+    oProduct.images.map(function(oImage) {
+        var oAttachment = oSample.clone().removeAttr('id').removeClass('bx-spf-attachment-sample');
+
+        var oLink = oAttachment.find('.bx-spf-attachment-link');
+        var sLinkOnClick = oLink.attr('onclick');
+        oLink.attr('onclick', sLinkOnClick.replace('{id}', iImage).replace('{url}', oImage.src));
+        oLink.find('.bx-spf-attachment-img').attr('src', oImage.src);
+
+        var oPopup = oAttachment.find('.bx-popup-wrapper');
+        var sPopupId = oPopup.attr('id');
+        oPopup.attr('id', sPopupId.replace('{id}', iImage));
+        oPopup.find('.bx-spf-attachment-popup-img').attr('src', oImage.src);
+
+        oContainer.prepend(oAttachment);
+
+        iImage += 1;
+    });
+    oSample.remove();
+
+    //--- Fetch price.
+    if(oProduct.variants.length > 0) {
+        var oBuy = $('#' + this._aHtmlIds['entry_buy']);
+        var sBuyContent = oBuy.html();
+        oBuy.html(sBuyContent.replace('{price}', oProduct.variants[0].price)).show();
+    }
+
+    bx_loading($('.' + this._sClassCover), false);
+};
 
 
-		var oLink = oAttachment.find('.bx-spf-attachment-link');
-		var sLinkOnClick = oLink.attr('onclick');
-		oLink.attr('onclick', sLinkOnClick.replace('{id}', oImage.id).replace('{url}', oImage.src));
-		oLink.find('.bx-spf-attachment-img').attr('src', oImage.src);
+BxShopifyShop.prototype.buyProductByHandle = function(sProduct, oLink) {
+    var $this = this;
+    oLink = $(oLink);
+
+    bx_loading_btn(oLink, true);
+
+    $this.fetchProductByHandle(sProduct, function(oProduct) {
+        if(oProduct.variants.length <= 0)
+            return;
+
+        $this.createCheckout(function(oCheckout) {
+            $this.addItems(oCheckout.id, [{variantId:oProduct.variants[0].id, quantity: 1}], function(oCheckout){
+                bx_loading_btn(oLink, false);
+
+                location.href = oCheckout.webUrl;
+            }, function() {
+                bx_loading_btn(oLink, false);
+                bx_alert(_t('_bx_shopify_err_purchase_product'));
+            });
+        }, function() {
+            bx_loading_btn(oLink, false);
+            bx_alert(_t('_bx_shopify_err_purchase_product'));
+        });
+    }, function() {
+        bx_loading_btn(oLink, false);
+        bx_alert(_t('_bx_shopify_err_load_product'));
+    });
+}
+    
+BxShopifyShop.prototype.fetchProduct = function(iProduct, onComplete, onError) {
+    var $this = this;
 
 
-		var oPopup = oAttachment.find('.bx-popup-wrapper');
-		var sPopupId = oPopup.attr('id');
-		oPopup.attr('id', sPopupId.replace('{id}', oImage.id));
-		oPopup.find('.bx-spf-attachment-popup-img').attr('src', oImage.src);
+    this._oShopClient.product.fetch(iProduct).then(function(oProduct) {
+        if(typeof(onComplete) == 'function')
+            onComplete(oProduct);
+        else 
+            $this.onFetchProduct(oProduct);
+    }).catch(function() {
+        if(typeof(onError) == 'function')
+            onError();
+        else 
+            bx_alert(_t('_bx_shopify_err_load_product'));
+    });
+};
 
 
-		oContainer.prepend(oAttachment);
-	});
-	oSample.remove();
+BxShopifyShop.prototype.fetchProductByHandle = function(sProduct, onComplete, onError) {
+    var $this = this;
 
 
-	bx_center_content('.bx-base-text-attachments', '.bx-base-text-attachment', true);
+    this._oShopClient.product.fetchByHandle(sProduct).then(function(oProduct) {
+        if(typeof(onComplete) == 'function')
+            onComplete(oProduct);
+        else 
+            $this.onFetchProduct(oProduct);
+    }).catch(function(oError) {
+        if(typeof(onError) == 'function')
+            onError();
+        else 
+            bx_alert(_t('_bx_shopify_err_load_product'));
+    });
+};
 
 
-	//--- Fetch price.
-	var oBuy = $('#' + this._aHtmlIds['entry_buy']);
-	var sBuyContent = oBuy.html();
-	oBuy.html(sBuyContent.replace('{price}', oProduct.selectedVariant.formattedPrice));
-	oBuy.attr('href', oProduct.selectedVariant.checkoutUrl(1));
-	oBuy.show();
+BxShopifyShop.prototype.fetchCollection = function(iCollection, onComplete, onError) {
+    var $this = this;
 
 
-	bx_loading($('.' + this._sClassCover), false);
+    this._oShopClient.fetchQueryProducts({collection_id: iCollection}).then(function(oProducts) {
+        if(typeof(onComplete) == 'function')
+            onComplete(oProduct);
+        else 
+            $this.onFetchCollection(oProducts);
+    }).catch(function() {
+        if(typeof(onError) == 'function')
+            onError();
+        else 
+            bx_alert(_t('_bx_shopify_err_load_collection'));
+    });
 };
 };
 
 
-BxShopifyShop.prototype.fetchProduct = function(iProduct, onComplete, onError) {
-	var $this = this;
+BxShopifyShop.prototype.createCheckout = function(onComplete, onError) {
+    var $this = this;
 
 
-	this._oShopClient.fetchProduct(iProduct).then(function(oProduct) {
-		if(typeof(onComplete) == 'function')
-			onComplete(oProduct);
+    this._oShopClient.checkout.create().then(function(oCheckout) {
+        if(typeof(onComplete) == 'function')
+            onComplete(oCheckout);
         else 
         else 
-        	$this.onFetchProduct(oProduct);
-	}).catch(function() {
-		if(typeof(onError) == 'function')
-			onError();
+            $this.onCreateCheckout(oCheckout);
+    }).catch(function() {
+        if(typeof(onError) == 'function')
+            onError();
         else 
         else 
-        	bx_alert(_t('_bx_shopify_err_load_product'));
-	});
+            bx_alert(_t('_bx_shopify_err_purchase_product'));
+    });
 };
 };
 
 
-BxShopifyShop.prototype.fetchCollection = function(iCollection, onComplete, onError) {
-	var $this = this;
+BxShopifyShop.prototype.addItems = function(sCheckoutId, aLineItems, onComplete, onError) {
+    var $this = this;
 
 
-	this._oShopClient.fetchQueryProducts({collection_id: iCollection}).then(function(oProducts) {
-		if(typeof(onComplete) == 'function')
-			onComplete(oProduct);
+    this._oShopClient.checkout.addLineItems(sCheckoutId, aLineItems).then(function(oCheckout) {
+        if(typeof(onComplete) == 'function')
+            onComplete(oCheckout);
         else 
         else 
-        	$this.onFetchCollection(oProducts);
-	}).catch(function() {
-		if(typeof(onError) == 'function')
-			onError();
+            $this.onAddItems(oCheckout);
+    }).catch(function() {
+        if(typeof(onError) == 'function')
+            onError();
         else 
         else 
-        	bx_alert(_t('_bx_shopify_err_load_collection'));
-	});
+            bx_alert(_t('_bx_shopify_err_purchase_product'));
+    });
 };
 };
 
 
 BxShopifyShop.prototype.onFetchProduct = function(oProduct) {
 BxShopifyShop.prototype.onFetchProduct = function(oProduct) {
-	//--- Some default action can be put here.
+    //--- Some default action can be put here.
 };
 };
 
 
 BxShopifyShop.prototype.onFetchCollection = function(oProducts) {
 BxShopifyShop.prototype.onFetchCollection = function(oProducts) {
-	//--- Some default action can be put here.
+    //--- Some default action can be put here.
+};
+
+BxShopifyShop.prototype.onCreateCheckout = function(oCheckout) {
+    //--- Some default action can be put here.
+};
+
+BxShopifyShop.prototype.onAddItems = function(oCheckout) {
+    //--- Some default action can be put here.
 };
 };
 
 
 /** @} */
 /** @} */

+ 4 - 4
modules/boonex/shopify/template/attachments.html

@@ -1,8 +1,8 @@
 <div id="__html_id__" class="bx-base-text-attachments bx-clearfix">
 <div id="__html_id__" class="bx-base-text-attachments bx-clearfix">
     <div id="__html_id_sample__" class="bx-base-text-attachment bx-spf-attachment-sample bx-def-box bx-def-color-bg-box bx-def-gal-img-size" style="float:left;">
     <div id="__html_id_sample__" class="bx-base-text-attachment bx-spf-attachment-sample bx-def-box bx-def-color-bg-box bx-def-gal-img-size" style="float:left;">
-		<a class="bx-spf-attachment-link" href="javascript:void(0);" onclick="$('#__popup_id__').dolPopupImage('{url}', $(this).parent())">
-		    <img class="bx-spf-attachment-img bx-def-gal-img-size" src="" />
-		</a>
-		__popup__
+        <a class="bx-spf-attachment-link" href="javascript:void(0);" onclick="$('#__popup_id__').dolPopupImage('{url}', $(this).parent())">
+            <img class="bx-spf-attachment-img bx-def-gal-img-size" src="" />
+        </a>
+        __popup__
     </div>
     </div>
 </div>
 </div>

+ 1 - 1
modules/boonex/shopify/template/entry-buy.html

@@ -1,3 +1,3 @@
-<a id="__html_id__" class="bx-btn bx-shopify-buy bx-def-margin-thd-topbottom bx-def-margin-right" href="" style="display:none">
+<a id="__html_id__" class="bx-btn bx-shopify-buy bx-def-margin-thd-topbottom bx-def-margin-right" href="javascript:void(0)" onclick="__js_object__.buyProductByHandle('__entry_code__', this)" style="display:none">
     <bx_text:_bx_shopify_menu_item_title_buy_for />
     <bx_text:_bx_shopify_menu_item_title_buy_for />
 </a>
 </a>

+ 2 - 2
modules/boonex/shopify/template/entry-text.html

@@ -1,10 +1,10 @@
 <div id="__html_id__" class="bx-base-text-entity-content bx-def-constraint-list bx-def-constraint-pre bx-def-constraint-object bx-def-constraint-iframe bx-def-constraint-img">
 <div id="__html_id__" class="bx-base-text-entity-content bx-def-constraint-list bx-def-constraint-pre bx-def-constraint-object bx-def-constraint-iframe bx-def-constraint-img">
-    <h1>__entry_title__</h1>
+    <h1 class="bx-spf-title">__entry_title__</h1>
     <div class="bx-spf-text"></div>
     <div class="bx-spf-text"></div>
     <div class="bx-spf-images"></div>
     <div class="bx-spf-images"></div>
     <script type="text/javascript">
     <script type="text/javascript">
     $(document).ready(function() {
     $(document).ready(function() {
-        __js_object__.getEntry(__entry_code__);
+        __js_object__.getEntry('__entry_code__');
     });
     });
     </script>
     </script>
 </div>
 </div>

+ 5 - 8
modules/boonex/shopify/template/unit.html

@@ -1,22 +1,19 @@
 <div class="bx-base-text-unit bx-base-text-unit-ext __class__ bx-def-box bx-def-round-corners bx-def-color-bg-box bx-def-margin-bottom">
 <div class="bx-base-text-unit bx-base-text-unit-ext __class__ bx-def-box bx-def-round-corners bx-def-color-bg-box bx-def-margin-bottom">
-	<div class="bx-base-text-unit-cover bx-spf-unit-cover" style="display:none">
-	    <img class="bx-base-text-unit-cover bx-def-round-corners" src="" />
-	</div>
     <div class="bx-base-text-unit-text bx-spf-unit-text bx-def-padding bx-def-box-sizing">
     <div class="bx-base-text-unit-text bx-spf-unit-text bx-def-padding bx-def-box-sizing">
-        <h2><a href="__content_url__">__title__</a></h2>
+        <h2><a class="bx-spf-unit-title" href="__content_url__">__title__</a></h2>
         <div class="bx-base-text-unit-info bx-def-margin-sec-top bx-def-font-small">
         <div class="bx-base-text-unit-info bx-def-margin-sec-top bx-def-font-small">
             <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
             <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
         </div>
         </div>
         <div class="bx-base-text-unit-summary bx-spf-unit-summary bx-def-margin-sec-top bx-clearfix"></div>
         <div class="bx-base-text-unit-summary bx-spf-unit-summary bx-def-margin-sec-top bx-clearfix"></div>
         <div class="bx-base-text-unit-actions bx-spf-unit-actions">
         <div class="bx-base-text-unit-actions bx-spf-unit-actions">
-            <a class="bx-btn bx-shopify-buy bx-def-margin-sec-top" href="" style="display:none">
-			    <bx_text:_bx_shopify_menu_item_title_buy_for />
-			</a>
+            <a class="bx-btn bx-shopify-buy bx-def-margin-sec-top" href="javascript:void(0)" onclick="__js_object__.buyProductByHandle('__entry_code__', this)" style="display:none">
+                <bx_text:_bx_shopify_menu_item_title_buy_for />
+            </a>
         </div>
         </div>
     </div>
     </div>
     <script type="text/javascript">
     <script type="text/javascript">
     $(document).ready(function() {
     $(document).ready(function() {
-        __js_object__.getUnit(__entry_code__);
+        __js_object__.getUnit('__entry_code__');
     });
     });
     </script>
     </script>
 </div>
 </div>

+ 3 - 3
modules/boonex/shopify/template/unit_full.html

@@ -1,17 +1,17 @@
 <div class="bx-base-text-unit bx-base-text-unit-ext __class__ bx-def-margin-bottom">
 <div class="bx-base-text-unit bx-base-text-unit-ext __class__ bx-def-margin-bottom">
-    <h1 class="bx-def-padding-sec-top"><a href="__content_url__">__title__</a></h1>
+    <h1 class="bx-def-padding-sec-top"><a class="bx-spf-unit-title" href="__content_url__">__title__</a></h1>
     <div class="bx-base-text-unit-info bx-def-margin-sec-top">
     <div class="bx-base-text-unit-info bx-def-margin-sec-top">
         <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
         <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
     </div>
     </div>
     <div class="bx-base-text-unit-summary bx-spf-unit-summary bx-def-margin-sec-top bx-def-margin-sec-bottom bx-clearfix"></div> 
     <div class="bx-base-text-unit-summary bx-spf-unit-summary bx-def-margin-sec-top bx-def-margin-sec-bottom bx-clearfix"></div> 
     <div class="bx-base-text-unit-actions bx-spf-unit-actions">
     <div class="bx-base-text-unit-actions bx-spf-unit-actions">
-        <a class="bx-btn bx-shopify-buy" href="" style="display:none">
+        <a class="bx-btn bx-shopify-buy" href="javascript:void(0)" onclick="__js_object__.buyProductByHandle('__entry_code__', this)" style="display:none">
             <bx_text:_bx_shopify_menu_item_title_buy_for />
             <bx_text:_bx_shopify_menu_item_title_buy_for />
         </a>
         </a>
     </div>
     </div>
     <script type="text/javascript">
     <script type="text/javascript">
     $(document).ready(function() {
     $(document).ready(function() {
-        __js_object__.getUnit(__entry_code__);
+        __js_object__.getUnit('__entry_code__');
     });
     });
     </script>
     </script>
 </div>
 </div>

+ 5 - 5
modules/boonex/shopify/template/unit_gallery.html

@@ -1,25 +1,25 @@
 <div class="bx-base-text-unit bx-base-text-unit-gallery __class__ bx-def-gal-unit-size bx-def-padding-sec bx-def-margin-sec-bottom">
 <div class="bx-base-text-unit bx-base-text-unit-gallery __class__ bx-def-gal-unit-size bx-def-padding-sec bx-def-margin-sec-bottom">
     <div class="bx-base-text-unit-cnt bx-def-box bx-def-round-corners bx-def-color-bg-box bx-def-box-sizing">
     <div class="bx-base-text-unit-cnt bx-def-box bx-def-round-corners bx-def-color-bg-box bx-def-box-sizing">
         <div class="bx-base-text-unit-text bx-def-padding-leftright bx-def-padding-sec-topbottom bx-def-font-align-center bx-def-box-sizing">
         <div class="bx-base-text-unit-text bx-def-padding-leftright bx-def-padding-sec-topbottom bx-def-font-align-center bx-def-box-sizing">
-            <h2><a href="__content_url__">__title__</a></h2>
+            <h2><a class="bx-spf-unit-title" href="__content_url__">__title__</a></h2>
             <div class="bx-base-text-unit-info">
             <div class="bx-base-text-unit-info">
                 <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
                 <bx_if:meta><div class="bx-base-general-unit-meta">__meta__</div></bx_if:meta>
             </div>
             </div>
         </div>
         </div>
-        <a href="__content_url__" title="__summary_attr__">
-            <div class="bx-base-text-unit-thumb bx-spf-unit-thumb bx-def-gal-div-size bx-def-round-corners bx-def-font-middle" style="background-image:url(__gallery_url__)">
+        <a href="__content_url__">
+            <div class="bx-base-text-unit-thumb bx-spf-unit-thumb bx-def-gal-div-size bx-def-round-corners bx-def-font-middle">
                 <div class="bx-base-text-unit-strecher">__strecher__</div>
                 <div class="bx-base-text-unit-strecher">__strecher__</div>
             </div>
             </div>
         </a>
         </a>
         <div class="bx-base-text-unit-actions bx-spf-unit-actions">
         <div class="bx-base-text-unit-actions bx-spf-unit-actions">
-            <a class="bx-btn bx-shopify-buy bx-def-margin-sec-topbottom" href="" style="display:none">
+            <a class="bx-btn bx-shopify-buy bx-def-margin-sec-topbottom" href="javascript:void(0)" onclick="__js_object__.buyProductByHandle('__entry_code__', this)" style="display:none">
                 <bx_text:_bx_shopify_menu_item_title_buy_for />
                 <bx_text:_bx_shopify_menu_item_title_buy_for />
             </a>
             </a>
         </div> 
         </div> 
     </div>
     </div>
     <script type="text/javascript">
     <script type="text/javascript">
     $(document).ready(function() {
     $(document).ready(function() {
-        __js_object__.getUnit(__entry_code__);
+        __js_object__.getUnit('__entry_code__');
     });
     });
     </script>
     </script>
 </div>
 </div>