From ea39bbfad1107e02388d81702d831c53a015322e Mon Sep 17 00:00:00 2001 From: DanielSeifert Date: Wed, 15 Oct 2014 15:17:26 +0000 Subject: [PATCH] added Google Shopping support --- .../inc/d3ga_universal_trustedstore.tpl | 32 +++-- .../d3_oxcmp_utils_googleanalytics.php | 19 --- .../d3_thankyou_googleanalytics.php | 111 ++++++++++++++++++ .../admin/de/d3_googleanalytics_lang.php | 19 +++ .../admin/en/d3_googleanalytics_lang.php | 19 +++ .../d3_cfg_googleanalytics_trustedstore.tpl | 80 ++++++++----- 6 files changed, 212 insertions(+), 68 deletions(-) diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl b/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl index c91d843..f7e0b9a 100644 --- a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl +++ b/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl @@ -6,12 +6,12 @@ gts.push(["id", "[{$oD3GASettings->getValue('sD3GATSId')}]"]); gts.push(["badge_position", "BOTTOM_RIGHT"]); gts.push(["locale", "[{$sD3CurrentGTSLang}]"]); -[{* - gts.push(["google_base_offer_id", "foo"]); - gts.push(["google_base_subaccount_id", "foo"]); - gts.push(["google_base_country", "foo"]); - gts.push(["google_base_language", "foo"]); -*}] + [{if $oD3GASettings->getValue('sD3GATSShoppingActive')}] +[{*gts.push(["google_base_offer_id", ""]);*}] + gts.push(["google_base_subaccount_id", "[{$oD3GASettings->getValue('sD3GATSShoppingAccountId')}]"]); + gts.push(["google_base_country", "[{$oD3GASettings->getValue('sD3GATSShoppingCountry')|upper}]"]); + gts.push(["google_base_language", "[{$oD3GASettings->getValue('sD3GATSShoppingLanguage')|lower}]"]); + [{/if}] (function() { var gts = document.createElement("script"); @@ -30,7 +30,7 @@ [{assign var="oOrder" value=$oView->getOrder()}] [{assign var="oOrderCurrency" value=$oOrder->getOrderCurrency()}] [{assign var="oUser" value=$oOrder->getOrderUser()}] - [{assign var="oUserCountry" value=$oD3GACountry}] + [{assign var="oUserCountry" value=$oView->d3GAGetUserCountry()}] [{if $oD3GASettings->getValue('blD3GAUseNetto')}] [{assign var="sTotal" value=$oOrder->getOrderNetSum()}] [{* // total - required - has to be gross sum *}] [{else}] @@ -49,10 +49,10 @@ -[{$oOrder->getFieldData('oxdiscount')}] [{$oOrder->getFieldData('oxdelcost')}] [{math equation="fi + se + th + fo" fi=$oOrder->getFieldData('oxartvatprice1') se=$oOrder->getFieldData('oxartvatprice2') th=$oOrder->getFieldData('oxpayvat') fo=$oOrder->getFieldData('oxdelvat') format="%.2f"}] - has_completed - has_completed - has_completed - has_completed + [{$oView->d3GAgetEstimatedDeliveryDate()}] + [{$oView->d3GAgetEstimatedShippingDate()}] + [{$oView->d3GAhasBackorderPreorder()}] + [{$oView->d3GAhasDigitalGoods()}] @@ -68,12 +68,10 @@ [{$oOrderArticle->oxorderarticles__oxtitle->value|escape:"quotes"}] [{$sPrice|string_format:"%.2f"}] [{$oOrderArticle->getFieldData('oxamount')}] -[{* - ITEM_NAME - ITEM_NAME - ITEM_NAME - ITEM_NAME -*}] + [{$oView->d3GAgetProductId($oOrderArticle)}] + [{$oD3GASettings->getValue('sD3GATSShoppingAccountId')}] + [{$oD3GASettings->getValue('sD3GATSShoppingCountry')|upper}] + [{$oD3GASettings->getValue('sD3GATSShoppingLanguage')|lower}] [{/foreach}] diff --git a/copy_this/modules/d3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics.php b/copy_this/modules/d3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics.php index 1fc1271..6a8059f 100644 --- a/copy_this/modules/d3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics.php +++ b/copy_this/modules/d3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics.php @@ -56,7 +56,6 @@ class d3_oxcmp_utils_googleanalytics extends d3_oxcmp_utils_googleanalytics_pare $oParentView->addTplParam('sD3GASendPageViewParameter', $this->d3getSendPageViewParameters()); $oParentView->addTplParam('sD3CurrentShopUrl', $this->d3GetCreateCurrentShopUrl()); $oParentView->addTplParam('sD3CurrentGTSLang', $this->d3GetGTSLang()); - $oParentView->addTplParam('oD3GACountry', $this->d3GAGetUserCountry()); if ($oSet->getValue('blD3GASetRemarketing')) { $aInfos = $this->d3GetGAProdInfos(); @@ -621,22 +620,4 @@ class d3_oxcmp_utils_googleanalytics extends d3_oxcmp_utils_googleanalytics_pare return $aParameter; } - - /** - * @return oxcountry - */ - public function d3GAGetUserCountry() - { - /** @var thankyou $oCurrentView */ - $oCurrentView = oxRegistry::getConfig()->getActiveView(); - /** @var oxcountry $oCountry */ - $oCountry = oxNew('oxcountry'); - - if (method_exists($oCurrentView, 'getOrder')) { - $sCountryId = $oCurrentView->getOrder()->getFieldData('oxbillcountryid'); - $oCountry->load($sCountryId); - } - - return $oCountry; - } } diff --git a/copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics.php b/copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics.php index 1a7751f..d85cdab 100644 --- a/copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics.php +++ b/copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics.php @@ -48,4 +48,115 @@ class d3_thankyou_googleanalytics extends d3_thankyou_googleanalytics_parent $sGACode ); } + + /** + * @return oxcountry + */ + public function d3GAGetUserCountry() + { + $sCountryId = $this->getOrder()->getFieldData('oxbillcountryid'); + /** @var oxcountry $oCountry */ + $oCountry = oxNew('oxcountry'); + $oCountry->load($sCountryId); + + return $oCountry; + } + + /** + * @return string + */ + public function d3GAgetEstimatedShippingDate() + { + return $this->d3GAgetEstimatedDate('iEstShippingTimeValue'); + } + + /** + * @return string + */ + public function d3GAgetEstimatedDeliveryDate() + { + return $this->d3GAgetEstimatedDate('iEstDeliveryTimeValue'); + } + + /** + * @param $sModCfgVarName + * + * @return string + */ + public function d3GAgetEstimatedDate($sModCfgVarName) + { + $iTimeValue = d3_cfg_mod::get($this->_sModCfgId)->getValue($sModCfgVarName); + + return date( + 'Y-m-d', + strtotime('+ '.$iTimeValue.' day') + ); + } + + /** + * @return string + */ + public function d3GAhasBackorderPreorder() + { + if (oxRegistry::getConfig()->getConfigParam('blUseStock')) { + /** @var oxorderarticle $oOrderArticle */ + foreach ($this->getOrder()->getOrderArticles() as $oOrderArticle) { + /** @var oxarticle $oArticle */ + $oArticle = $oOrderArticle->getArticle(); + + if ($oArticle->getFieldData('oxstockflag') != 4 // Fremdlager + && $oOrderArticle->getFieldData('oxamount') > $oOrderArticle->getFieldData('oxstock') + ) { + return 'Y'; + } + }; + } + + return 'N'; + } + + /** + * @return string + */ + public function d3GAhasDigitalGoods() + { + if (oxRegistry::getConfig()->getConfigParam('blUseStock')) { + /** @var oxorderarticle $oOrderArticle */ + foreach ($this->getOrder()->getOrderArticles() as $oOrderArticle) { + /** @var oxarticle $oArticle */ + $oArticle = $oOrderArticle->getArticle(); + $aArticleFiles = $oArticle->getArticleFiles(); + + if ($oArticle->getFieldData('oxisdownloadable') + && count($aArticleFiles) + ) { + /** @var oxfile $oArticleFile */ + foreach ($aArticleFiles as $oArticleFile) { + if ($oArticleFile->getFieldData('oxpurchasedonly')) { + return 'Y'; + } + } + } + }; + } + + return 'N'; + } + + /** + * @param oxorderarticle $oOrderArticle + * + * @return string + */ + public function d3GAgetProductId($oOrderArticle) + { + switch (d3_cfg_mod::get($this->_sModCfgId)->getValue('sD3GATSShoppingArtId')) { + case 'oxartnum': + return $oOrderArticle->getFieldData('oxartnum'); + case 'oxid': + return $oOrderArticle->getFieldData('oxartid'); + }; + + return $oOrderArticle->getFieldData(d3_cfg_mod::get($this->_sModCfgId)->getValue('sD3GATSShoppingArtId')); + } } diff --git a/copy_this/modules/d3/d3_googleanalytics/views/admin/de/d3_googleanalytics_lang.php b/copy_this/modules/d3/d3_googleanalytics/views/admin/de/d3_googleanalytics_lang.php index b6ee478..aa6928d 100644 --- a/copy_this/modules/d3/d3_googleanalytics/views/admin/de/d3_googleanalytics_lang.php +++ b/copy_this/modules/d3/d3_googleanalytics/views/admin/de/d3_googleanalytics_lang.php @@ -278,6 +278,25 @@ $aLang = array( 'D3_GOOGLEANALYTICS_TS_ACTIVE' => 'Trusted Store aktivieren', 'D3_GOOGLEANALYTICS_TS_ID' => 'Trusted Store-ID', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER' => 'durchschnittliches Versanddatum ab Lager nach Bestelleingang', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS' => 'Tag(e)', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC' => 'Google erwartet die Aussage, nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier größten Zeitraum in Tagen an (z.B. 3 bei "1 bis 3 Tage"). Der genannte Termin wird dem Kunden per Mail mitgeteilt. Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum abgeschlossenen Kauf.', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER' => 'durchschnittliches Lieferdatum beim Kunden nach Bestelleingang', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS' => 'Tag(e)', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC' => 'Google erwartet die Aussage, nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel in der Regel beim Kunden eintreffen. Geben Sie hier größten Zeitraum in Tagen an (z.B. 7 bei "5 bis 7 Tage"). Der genannte Termin wird dem Kunden per Mail mitgeteilt.', + 'D3_GOOGLEANALYTICS_TS_SHOPPING' => 'Verbindung zu Google Shopping', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE' => 'zusätzliche Daten aus Google Shopping übertragen', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC' => 'Verwenden Sie Google Shopping und möchten zusätzliche Daten zur Identifizierung übertragen, setzen Sie diesen Haken. Die folgenden Angaben sind dann ebenfalls erforderlich.', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID' => 'Google Shopping Kontonummer', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC' => 'Tragen Sie hier die Kontonummer (Account ID) aus Google Shopping ein.', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY' => 'Kürzel des Landes Ihres Google Shopping-Kontos', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC' => 'Geben Sie hier das Land Ihres Google Shopping Kontos an. Erwartet wird der ISO-3166-Ländercode (z.B.: DE, CH, AT, FR).', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE' => 'Kürzel der Sprache Ihres Google Shopping-Kontos', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC' => 'Geben Sie hier die Sprache Ihres Google Shopping Kontos an. Erwartet wird der ISO-639-1-Sprachcode (z.B.: de, en, fr).', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID' => 'Identifikation Ihrer Artikel bei Google Shopping', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_ARTNUM' => 'Artikelnummer (oxartnum)', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_OXID' => 'interne Ident-Nummer (oxid)', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC' => 'Über welches Feld kann Google Shopping die dort hinterlegten Artikel identfizieren?', 'D3_GOOGLEANALYTICS_METADATA_TITLE' => 'Google Analytics Schnittstelle', 'D3_GOOGLEANALYTICS_METADATA_DESC' => 'Dieses Modul stellt Ihnen die schnelle und '. diff --git a/copy_this/modules/d3/d3_googleanalytics/views/admin/en/d3_googleanalytics_lang.php b/copy_this/modules/d3/d3_googleanalytics/views/admin/en/d3_googleanalytics_lang.php index b81e59c..af4ee6e 100644 --- a/copy_this/modules/d3/d3_googleanalytics/views/admin/en/d3_googleanalytics_lang.php +++ b/copy_this/modules/d3/d3_googleanalytics/views/admin/en/d3_googleanalytics_lang.php @@ -277,6 +277,25 @@ $aLang = array( 'D3_GOOGLEANALYTICS_TS_ACTIVE' => 'activate Trusted Store', 'D3_GOOGLEANALYTICS_TS_ID' => 'Trusted Store-ID', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER' => 'durchschnittliches Versanddatum ab Lager nach Bestelleingang', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS' => 'Tag(e)', + 'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC' => 'Google erwartet die Aussage, nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier größten Zeitraum in Tagen an (z.B. 3 bei "1 bis 3 Tage"). Der genannte Termin wird dem Kunden per Mail mitgeteilt. Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum abgeschlossenen Kauf.', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER' => 'durchschnittliches Lieferdatum beim Kunden nach Bestelleingang', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS' => 'Tag(e)', + 'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC' => 'Google erwartet die Aussage, nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel in der Regel beim Kunden eintreffen. Geben Sie hier größten Zeitraum in Tagen an (z.B. 7 bei "5 bis 7 Tage"). Der genannte Termin wird dem Kunden per Mail mitgeteilt.', + 'D3_GOOGLEANALYTICS_TS_SHOPPING' => 'Verbindung zu Google Shopping', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE' => 'zusätzliche Daten aus Google Shopping übertragen', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC' => 'Verwenden Sie Google Shopping und möchten zusätzliche Daten zur Identifizierung übertragen, setzen Sie diesen Haken. Die folgenden Angaben sind dann ebenfalls erforderlich.', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID' => 'Google Shopping Kontonummer', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC' => 'Tragen Sie hier die Kontonummer (Account ID) aus Google Shopping ein.', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY' => 'Kürzel des Landes Ihres Google Shopping-Kontos', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC' => 'Geben Sie hier das Land Ihres Google Shopping Kontos an. Erwartet wird der ISO-3166-Ländercode (z.B.: DE, CH, AT, FR).', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE' => 'Kürzel der Sprache Ihres Google Shopping-Kontos', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC' => 'Geben Sie hier die Sprache Ihres Google Shopping Kontos an. Erwartet wird der ISO-639-1-Sprachcode (z.B.: de, en, fr).', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID' => 'Identifikation Ihrer Artikel bei Google Shopping', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_ARTNUM' => 'Artikelnummer (oxartnum)', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_OXID' => 'interne Ident-Nummer (oxid)', + 'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC' => 'Über welches Feld kann Google Shopping die dort hinterlegten Artikel identfizieren?', 'D3_GOOGLEANALYTICS_METADATA_TITLE' => 'Google Analytics Schnittstelle', 'D3_GOOGLEANALYTICS_METADATA_DESC' => 'Dieses Modul stellt Ihnen die schnelle und '. diff --git a/copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl b/copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl index 3f1ec3d..458814a 100644 --- a/copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl +++ b/copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl @@ -114,69 +114,85 @@ [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ID_DESC"}] +
+
+ +
+
+ + [{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS"}] + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC"}] +
+
+
+
+ +
+
+ + [{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS"}] + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC"}] +
+
+ + -[{* +
+
+ + + [{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPING"}] + +
- +
- - getValue('blD3GAAnonymizeIP')}]checked[{/if}] name="value[blD3GAAnonymizeIP]"> - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP_DESC"}] + + getValue('sD3GATSShoppingActive')}]checked[{/if}] name="value[sD3GATSShoppingActive]"> + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC"}]
- +
- - [{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_1"}] - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_DESC"}] + + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC"}]
- +
- - getValue('blD3GATrackPageLoadTime')}]checked[{/if}] name="value[blD3GATrackPageLoadTime]"> - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME_DESC"}] + + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC"}]
- +
- - [{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_1"}] - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_DESC"}] + + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC"}]
- +
- - getValue('blD3GAUseRemarketing')}]checked[{/if}] name="value[blD3GAUseRemarketing]"> - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_USEREMARKETING_DESC"}] + + [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC"}]
-
-
- -
-
- - getValue('blD3GAUseOptOut')}]checked[{/if}] name="value[blD3GAUseOptOut]"> - [{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_USEOPTOUT_DESC"}] -
-
-*}]