VeInteractive_VePlatform - Version 15.1.2.0

Version Notes

This release only support English at Magento Admin Panel.

Download this release

Release Info

Developer VeInteractive
Extension VeInteractive_VePlatform
Version 15.1.2.0
Comparing to
See all releases


Version 15.1.2.0

Files changed (57) hide show
  1. app/code/community/VeInteractive/VePlatform/Block/ConfigFieldset.php +223 -0
  2. app/code/community/VeInteractive/VePlatform/Block/Template.php +17 -0
  3. app/code/community/VeInteractive/VePlatform/Block/Vepixel.php +26 -0
  4. app/code/community/VeInteractive/VePlatform/Block/Vetag.php +16 -0
  5. app/code/community/VeInteractive/VePlatform/Helper/Data.php +73 -0
  6. app/code/community/VeInteractive/VePlatform/Model/Products.php +45 -0
  7. app/code/community/VeInteractive/VePlatform/Observer/AdminUserLoadAfter.php +164 -0
  8. app/code/community/VeInteractive/VePlatform/Observer/Layout.php +43 -0
  9. app/code/community/VeInteractive/VePlatform/Observer/SaveSettings.php +66 -0
  10. app/code/community/VeInteractive/VePlatform/Observer/ThanksPage.php +12 -0
  11. app/code/community/VeInteractive/VePlatform/etc/adminhtml.xml +22 -0
  12. app/code/community/VeInteractive/VePlatform/etc/config.xml +84 -0
  13. app/code/community/VeInteractive/VePlatform/etc/system.xml +38 -0
  14. app/code/community/VeInteractive/VePlatform/templates/vepixel.phtml +3 -0
  15. app/code/community/VeInteractive/VePlatform/templates/vetag.phtml +11 -0
  16. app/design/adminhtml/veplatform/default/template/systemconfig/veplatform_options_settings/formfieldset/footer.phtml +2 -0
  17. app/design/adminhtml/veplatform/default/template/systemconfig/veplatform_options_settings/formfieldset/header.phtml +1017 -0
  18. app/etc/modules/VeInteractive_VePlatform.xml +9 -0
  19. package.xml +27 -0
  20. skin/adminhtml/veplatform/default/fonts/DINComp-Bold.ttf +0 -0
  21. skin/adminhtml/veplatform/default/fonts/DINComp-Light.ttf +0 -0
  22. skin/adminhtml/veplatform/default/fonts/DINComp-Medium.ttf +0 -0
  23. skin/adminhtml/veplatform/default/fonts/DINComp.ttf +0 -0
  24. skin/adminhtml/veplatform/default/fonts/DINWeb-Bold.eot +0 -0
  25. skin/adminhtml/veplatform/default/fonts/DINWeb-Bold.woff +0 -0
  26. skin/adminhtml/veplatform/default/fonts/DINWeb-Light.eot +0 -0
  27. skin/adminhtml/veplatform/default/fonts/DINWeb-Light.woff +0 -0
  28. skin/adminhtml/veplatform/default/fonts/DINWeb-Medium.eot +0 -0
  29. skin/adminhtml/veplatform/default/fonts/DINWeb-Medium.woff +0 -0
  30. skin/adminhtml/veplatform/default/fonts/DINWeb.eot +0 -0
  31. skin/adminhtml/veplatform/default/fonts/DINWeb.woff +0 -0
  32. skin/adminhtml/veplatform/default/images/account-manager-logo.png +0 -0
  33. skin/adminhtml/veplatform/default/images/apps-logo.png +0 -0
  34. skin/adminhtml/veplatform/default/images/creatives-logo.png +0 -0
  35. skin/adminhtml/veplatform/default/images/header_banner.jpg +0 -0
  36. skin/adminhtml/veplatform/default/images/icons-sdb320c34e8.png +0 -0
  37. skin/adminhtml/veplatform/default/images/icons.png +0 -0
  38. skin/adminhtml/veplatform/default/images/icons/envelope.png +0 -0
  39. skin/adminhtml/veplatform/default/images/icons/phone.png +0 -0
  40. skin/adminhtml/veplatform/default/images/icons/pike.png +0 -0
  41. skin/adminhtml/veplatform/default/images/main-logo.png +0 -0
  42. skin/adminhtml/veplatform/default/images/product_selected.png +0 -0
  43. skin/adminhtml/veplatform/default/images/radio_selected.png +0 -0
  44. skin/adminhtml/veplatform/default/images/radio_unselected.png +0 -0
  45. skin/adminhtml/veplatform/default/images/ve-check.png +0 -0
  46. skin/adminhtml/veplatform/default/images/veads-logo-big.png +0 -0
  47. skin/adminhtml/veplatform/default/images/veads-logo-min.png +0 -0
  48. skin/adminhtml/veplatform/default/images/veads-logo.png +0 -0
  49. skin/adminhtml/veplatform/default/images/veassist-logo-big.png +0 -0
  50. skin/adminhtml/veplatform/default/images/veassist-logo-min.png +0 -0
  51. skin/adminhtml/veplatform/default/images/veassist-logo.png +0 -0
  52. skin/adminhtml/veplatform/default/images/vechat-logo-big.png +0 -0
  53. skin/adminhtml/veplatform/default/images/vechat-logo-min.png +0 -0
  54. skin/adminhtml/veplatform/default/images/vechat-logo.png +0 -0
  55. skin/adminhtml/veplatform/default/images/vecontact-logo-big.png +0 -0
  56. skin/adminhtml/veplatform/default/images/vecontact-logo-min.png +0 -0
  57. skin/adminhtml/veplatform/default/images/vecontact-logo.png +0 -0
app/code/community/VeInteractive/VePlatform/Block/ConfigFieldset.php ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Block_ConfigFieldset
4
+ extends Mage_Adminhtml_Block_System_Config_Form_Fieldset {
5
+
6
+ const MY_SECTION = "veplatform_options";
7
+ const MY_PACKAGE = "veplatform";
8
+ const MY_THEME = "default";
9
+ const PUBLIC_DESIGN_AREA = "skin";
10
+ const IMAGES_DIR = "images";
11
+ const FONTS_DIR = "fonts";
12
+ const PRODUCTS_MODEL_KEY = "VeInteractive_VePlatform/Products";
13
+ const PRODUCTS_SETTINGS_KEY = 'veplatform_options/settings/products';
14
+ const THANKS_DISPLAYED_KEY_PATTERN = "veplatform/adminhtml/%s/thanks_displayed";
15
+ const HEADER_TEMPLATE_PATH = "systemconfig/%s/formfieldset/header.phtml";
16
+ const FOOTER_TEMPLATE_PATH = "systemconfig/%s/formfieldset/footer.phtml";
17
+
18
+ private $on_my_section;
19
+ private $found_table;
20
+ private $model;
21
+
22
+ public function getMyImagesUrl( $image )
23
+ {
24
+ return $this->getSkinUrl(). self::IMAGES_DIR. DS. $image;
25
+ }
26
+
27
+ public function getMyFontsUrl( $font )
28
+ {
29
+ return $this->getSkinUrl(). self::FONTS_DIR. DS. $font;
30
+ }
31
+
32
+ public function isVeAssistCtrlEnabled()
33
+ {
34
+ return $this->isProductCtrlEnabled( $this->getModel()->getVeAssistID() );
35
+ }
36
+
37
+ public function isVeAdsCtrlEnabled()
38
+ {
39
+ return $this->isProductCtrlEnabled( $this->getModel()->getVeAdsID() );
40
+ }
41
+
42
+ public function isVeChatCtrlEnabled()
43
+ {
44
+ return $this->isProductCtrlEnabled( $this->getModel()->getVeChatID() );
45
+ }
46
+
47
+ public function isVeContactCtrlEnabled()
48
+ {
49
+ return $this->isProductCtrlEnabled( $this->getModel()->getVeContactID() );
50
+ }
51
+
52
+ public function isAnyProductCtrlEnabled()
53
+ {
54
+ if( $this->isVeChatCtrlEnabled() ) return true;
55
+ if( $this->isVeContactCtrlEnabled() ) return true;
56
+ if( $this->isVeAssistCtrlEnabled() ) return true;
57
+ if( $this->isVeAdsCtrlEnabled() ) return true;
58
+ // Add products.
59
+ return false;
60
+ }
61
+
62
+ public function triggerThanksTime() {
63
+ $isThanksDisplayed = true;
64
+ $products = $this->getModel()->getAlls();
65
+ if( $products ) {
66
+ for( $idx = 0; $idx < count( $products ); $idx++ ) {
67
+ if( $this->isProductCtrlEnabled( $products[ $idx ] ) ) {
68
+ $isProductThanksDisplayed = $this->triggerThanksDisplayed( $products[ $idx ] );
69
+ if( !$isProductThanksDisplayed ) $isThanksDisplayed = false;
70
+ }
71
+ }
72
+ }
73
+ return !$isThanksDisplayed;
74
+ }
75
+
76
+ private function triggerThanksDisplayed( $product ) {
77
+ $config_path = sprintf( self::THANKS_DISPLAYED_KEY_PATTERN, $product );
78
+ $thanks_displayed = Mage::getStoreConfig( $config_path );
79
+ if( !$thanks_displayed ) {
80
+ Mage::getConfig()->saveConfig( $config_path, true );
81
+ Mage::app()->getCacheInstance()->cleanType( "config" );
82
+ }
83
+ return $thanks_displayed;
84
+ }
85
+
86
+ private function isProductCtrlEnabled( $product ) {
87
+ $products = self::getProductsEnabled();
88
+ return ( $products && in_array( $product, $products ) );
89
+ }
90
+
91
+ public static function setProductsEnabled( $products ) {
92
+ if( empty( $products ) ) $products = array();
93
+ $products_list = implode( ',', $products );
94
+ $products_list = ','. $products_list;
95
+ // Example: $products_list = ',vecontact,vechat'.
96
+ // VeInteractive_VePlatform_Model_Products - save it as list.
97
+ Mage::getConfig()->saveConfig( self::PRODUCTS_SETTINGS_KEY, $products_list );
98
+ Mage::app()->getCacheInstance()->cleanType( "config" );
99
+ }
100
+
101
+ public static function getProductsEnabled() {
102
+ // Example: $products_list = ',vecontact,vechat'.
103
+ // VeInteractive_VePlatform_Model_Products - save it as list.
104
+ $products = null;
105
+ $products_list = Mage::getStoreConfig( self::PRODUCTS_SETTINGS_KEY );
106
+ if( $products_list ) $products = explode( ',', trim( $products_list, ',' ) );
107
+ return $products;
108
+ }
109
+
110
+ private function getModel() {
111
+ if( !$this->model ) $this->model = Mage::getModel( self::PRODUCTS_MODEL_KEY );
112
+ return $this->model;
113
+ }
114
+
115
+ protected function _construct(){
116
+ parent::_construct();
117
+ $section = $this->getAction()->getRequest()->getParam( 'section', false );
118
+ $this->on_my_section = ( $section === self::MY_SECTION );
119
+ }
120
+
121
+ /* To use this function remove fieldset from template.
122
+ protected function _getHeaderHtml( $element ) {
123
+
124
+ $header = parent::_getHeaderHtml( $element );
125
+
126
+ if( $this->on_my_section ) {
127
+
128
+ $header_without_table = $this->removeTable( $header, true );
129
+ if( $header_without_table !== false ) {
130
+ $this->found_table = true;
131
+ $this->setData( "parent_html_id", $element->getHtmlId() );
132
+ $template_path = sprintf( self::HEADER_TEMPLATE_PATH, $element->getHtmlId() );
133
+ $header = $header_without_table. $this->generateHtml( $template_path );
134
+ }
135
+
136
+ }
137
+
138
+ return $header;
139
+
140
+ }
141
+ */
142
+
143
+ protected function _getHeaderHtml( $element ) {
144
+ if( !$this->on_my_section ) {
145
+ $header = parent::_getHeaderHtml( $element );
146
+ }
147
+ else {
148
+ $this->setData( "parent_html_id", $element->getHtmlId() );
149
+ $template_path = sprintf( self::HEADER_TEMPLATE_PATH, $element->getHtmlId() );
150
+ $header = $this->generateHtml( $template_path );
151
+ }
152
+ return $header;
153
+ }
154
+
155
+ /* To use this function remove fieldset from template.
156
+ protected function _getFooterHtml( $element ) {
157
+
158
+ $footer = parent::_getFooterHtml( $element );
159
+
160
+ if( $this->on_my_section && $this->found_table ) {
161
+
162
+ $footer_without_table = $this->removeTable( $footer, false );
163
+ if( $footer_without_table !== false ) {
164
+ $template_path = sprintf( self::FOOTER_TEMPLATE_PATH, $element->getHtmlId() );
165
+ $footer = $footer_without_table. $this->generateHtml( $template_path );
166
+ }
167
+
168
+ }
169
+
170
+ return $footer;
171
+ }
172
+ */
173
+
174
+ protected function _getFooterHtml($element) {
175
+ if( !$this->on_my_section ) {
176
+ $footer = parent::_getFooterHtml( $element );
177
+ }
178
+ else {
179
+ $template_path = sprintf( self::FOOTER_TEMPLATE_PATH, $element->getHtmlId() );
180
+ $footer = $this->generateHtml( $template_path );
181
+ }
182
+ return $footer;
183
+ }
184
+
185
+ private function generateHtml( $template_path ) {
186
+
187
+ $this->setTemplate( $template_path );
188
+
189
+ // Change Theme only for this Block.
190
+ $design = Mage::getDesign();
191
+ $package_name = $design->getPackageName();
192
+ $theme_name = $design->getTheme( self::PUBLIC_DESIGN_AREA );
193
+ $design->setPackageName( self::MY_PACKAGE )->setTheme( self::MY_THEME );
194
+
195
+ $html = $this->toHtml();
196
+
197
+ // Restore Theme.
198
+ $design->setPackageName( $package_name )->setTheme( $theme_name );
199
+
200
+ return $html;
201
+
202
+ }
203
+
204
+ /*
205
+ private function removeTable( $html, $toend ) {
206
+
207
+ if( $toend ) {
208
+ // Remove from <table> to end.
209
+ $ipos = stripos( $html, "<table " );
210
+ if( $ipos !== false )
211
+ $html_without_table = substr( $html, 0, $ipos );
212
+ } else {
213
+ // Remove until </table> included.
214
+ $ipos = stripos( $html, "</table>" );
215
+ if( $ipos !== false )
216
+ $html_without_table = substr( $html, $ipos + strlen( "</table>" ), strlen( $html ) - strlen( "</table>" ) - $ipos );
217
+ }
218
+
219
+ return $html_without_table;
220
+
221
+ }
222
+ */
223
+ }
app/code/community/VeInteractive/VePlatform/Block/Template.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Block_Template extends Mage_Core_Block_Template {
4
+
5
+ public function renderLocalTemplate( $template_name, $params = array() )
6
+ {
7
+ $template_path = Mage::getModuleDir( '', $this->getModuleName() ). DS. 'templates'. DS. $template_name. '.phtml';
8
+ $inums = extract( $params );
9
+
10
+ ob_start();
11
+ require $template_path;
12
+ $html = ob_get_contents();
13
+ ob_end_clean();
14
+
15
+ return $html;
16
+ }
17
+ }
app/code/community/VeInteractive/VePlatform/Block/Vepixel.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Block_Vepixel extends VeInteractive_VePlatform_Block_Template
4
+ {
5
+ public function showPixel()
6
+ {
7
+ $show = Mage::getSingleton('core/session')->getShowPixel();
8
+ if($show) {
9
+ Mage::getSingleton('core/session')->unsShowPixel();
10
+ }
11
+
12
+ return $show;
13
+ }
14
+
15
+ public function journeyPixel()
16
+ {
17
+ $journeyPixel = Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::PIXEL_URL);
18
+
19
+ return $journeyPixel;
20
+ }
21
+
22
+ public function _toHtml()
23
+ {
24
+ return $this->renderLocalTemplate( 'vepixel' );
25
+ }
26
+ }
app/code/community/VeInteractive/VePlatform/Block/Vetag.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Block_Vetag extends VeInteractive_VePlatform_Block_Template
4
+ {
5
+ public function journeyTag()
6
+ {
7
+ $journeyTag = Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::TAG_URL);
8
+
9
+ return $journeyTag;
10
+ }
11
+
12
+ public function _toHtml()
13
+ {
14
+ return $this->renderLocalTemplate( 'vetag' );
15
+ }
16
+ }
app/code/community/VeInteractive/VePlatform/Helper/Data.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+ const TAG_URL = 'veplatform/journey/tag';
6
+ const PIXEL_URL = 'veplatform/journey/pixel';
7
+ const TOKEN = 'veplatform/journey/token';
8
+ const CONFIG_LAST_REQUEST = 'veplatform/journey/lastrequest';
9
+ const MODULE_INSTALLED = 'veplatform/adminhtml/module_installed';
10
+
11
+ private $baseUrl;
12
+
13
+ public function __construct()
14
+ {
15
+ $this->baseUrl = Mage::getConfig()->getNode('default/veplatform/service/url');
16
+ }
17
+
18
+
19
+ private function httpPost($url, $parameters)
20
+ {
21
+ Mage::log( "BEGIN[httpPost] - Send(". $url. ") = ". var_export( $parameters, true ) );
22
+
23
+ $journey = false;
24
+
25
+
26
+ $client = new Varien_Http_Client($url);
27
+ $client->setMethod(Varien_Http_Client::POST);
28
+ $client->setConfig(array(
29
+ 'timeout'=>25,
30
+ ));
31
+
32
+ $client->setRawData(json_encode($parameters), "application/json;charset=UTF-8");
33
+
34
+ //more parameters
35
+ try{
36
+ $response = $client->request();
37
+
38
+ if ($response->isSuccessful()) {
39
+ $journey = $response->getBody();
40
+ }
41
+ } catch (Exception $e) {
42
+ }
43
+
44
+ Mage::log( "END[httpPost] - Receive = ". var_export( $journey, true ) );
45
+ return $journey;
46
+ }
47
+
48
+ public function install($data)
49
+ {
50
+
51
+ return $this->httpPost( $this->baseUrl . '/API/Magento/Install', $data);
52
+ }
53
+
54
+ public function sendProducts($data)
55
+ {
56
+ return $this->httpPost( $this->baseUrl . '/API/Magento/ActivateProducts', $data);
57
+ }
58
+
59
+ public function getLang()
60
+ {
61
+ $lang = Mage::getStoreConfig('general/locale/code');
62
+ $subDashPositionInLang = strpos($lang, '_');
63
+ if($subDashPositionInLang > 0) {
64
+ $lang = substr($lang, 0, $subDashPositionInLang);
65
+ }
66
+ return $lang;
67
+ }
68
+
69
+ public function getBaseUrl()
70
+ {
71
+ return preg_replace("(^https?://)", "", Mage::getBaseUrl( Mage_Core_Model_Store::URL_TYPE_WEB, false ) );
72
+ }
73
+ }
app/code/community/VeInteractive/VePlatform/Model/Products.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Model_Products
4
+ {
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array( 'value' => '', 'label'=> '' ), // BUG-FIX for Magento < 1.7.
9
+ array( 'value' => $this->getVeContactID(), 'label' => Mage::helper('VeInteractive_VePlatform')->__('VeContact') ),
10
+ array( 'value' => $this->getVeChatID(), 'label' => Mage::helper('VeInteractive_VePlatform')->__('VeChat') ),
11
+ array( 'value' => $this->getVeAssistID(), 'label' => Mage::helper('VeInteractive_VePlatform')->__('VeAssist') ),
12
+ array( 'value' => $this->getVeAdsID(), 'label' => Mage::helper('VeInteractive_VePlatform')->__('VeAds') ),
13
+ );
14
+ }
15
+
16
+ public function getAlls()
17
+ {
18
+ return array(
19
+ $this->getVeContactID(),
20
+ $this->getVeChatID(),
21
+ $this->getVeAssistID(),
22
+ $this->getVeAdsID(),
23
+ );
24
+ }
25
+
26
+ public function getVeChatID()
27
+ {
28
+ return "vechat";
29
+ }
30
+
31
+ public function getVeContactID()
32
+ {
33
+ return "vecontact";
34
+ }
35
+
36
+ public function getVeAssistID()
37
+ {
38
+ return "veassist";
39
+ }
40
+
41
+ public function getVeAdsID()
42
+ {
43
+ return "veads";
44
+ }
45
+ }
app/code/community/VeInteractive/VePlatform/Observer/AdminUserLoadAfter.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Observer_AdminUserLoadAfter {
4
+
5
+ /**
6
+ * Time in seconds to recheck
7
+ */
8
+ const REQUEST_THRESHOLD = 3600;
9
+
10
+ /**
11
+ * Checks if the client has been created in VePlatform, will be called when the user access the admin panel
12
+ *
13
+ * @param [type] $observer
14
+ * @return null
15
+ */
16
+ public function checkInstallation($observer)
17
+ {
18
+ $isAjax = Mage::app()->getRequest()->isXmlHttpRequest();
19
+ if(!$isAjax) {
20
+ $this->checkModuleInstallation();
21
+ $this->checkJourneyInstallation();
22
+ }
23
+ }
24
+
25
+ private function checkJourneyInstallation()
26
+ {
27
+ // Ensure journey code exists
28
+ $journeyTagUrl = Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::TAG_URL);
29
+
30
+ // If not install
31
+ if(!$journeyTagUrl) {
32
+ $helper = Mage::helper('VeInteractive_VePlatform');
33
+
34
+ // get last request
35
+ $lastRequest = (int) Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::CONFIG_LAST_REQUEST);
36
+
37
+ // Is the user reting
38
+ $veretry = (int) Mage::app()->getRequest()->getParam('veretry', 0);
39
+
40
+ // If it has spent an hour since last request or if it is the first time we do the journey request (install)
41
+ $delta = time() - $lastRequest;
42
+
43
+ if($veretry || self::REQUEST_THRESHOLD < $delta) {
44
+
45
+ // get data to send
46
+ $data = array(
47
+ 'domain' => $helper->getBaseUrl(),
48
+ 'language' => $helper->getLang(),
49
+ 'email' => Mage::getSingleton('admin/session')->getUser()->getEmail(),
50
+ 'phone' => Mage::getStoreConfig('general/store_information/phone'),
51
+ 'merchant' => Mage::app()->getWebsite()->getName(),
52
+ 'country' => Mage::getStoreConfig('general/country/default'),
53
+ 'currency'=> Mage::app()->getBaseCurrencyCode()
54
+ );
55
+
56
+ $jsonString = $helper->install($data);
57
+
58
+ $response = false;
59
+ if($jsonString) {
60
+
61
+ $response = json_decode($jsonString);
62
+
63
+ if( $response && isset($response->URLTag) && isset($response->URLPixel) && isset($response->Token)) {
64
+ $journeyTagUrl = $response->URLTag;
65
+ $journeyPixelUrl = $response->URLPixel;
66
+ $token = $response->Token;
67
+ if( strpos($journeyTagUrl, 'https://') === 0) {
68
+ $journeyTagUrl = substr($journeyTagUrl, 6);
69
+ }
70
+ else if( strpos($journeyTagUrl, 'http://') === 0) {
71
+ $journeyTagUrl = substr($journeyTagUrl, 5);
72
+ }
73
+ if( strpos($journeyPixelUrl, 'https://') === 0) {
74
+ $journeyPixelUrl = substr($journeyPixelUrl, 6);
75
+ }
76
+ else if( strpos($journeyPixelUrl, 'http://') === 0) {
77
+ $journeyPixelUrl = substr($journeyPixelUrl, 5);
78
+ }
79
+ }
80
+ }
81
+
82
+ // If a Journey code is returned we save it
83
+ $config = new Mage_Core_Model_Config();
84
+ if( isset($journeyTagUrl) && $journeyTagUrl && isset($journeyPixelUrl) && $journeyPixelUrl && isset($response->Token) && $token) {
85
+
86
+ $config ->saveConfig(VeInteractive_VePlatform_Helper_Data::TAG_URL, $journeyTagUrl, 'default', 0);
87
+ $config ->saveConfig(VeInteractive_VePlatform_Helper_Data::PIXEL_URL, $journeyPixelUrl, 'default', 0);
88
+ $config ->saveConfig(VeInteractive_VePlatform_Helper_Data::TOKEN, $token, 'default', 0);
89
+ }
90
+ else {
91
+ $config ->saveConfig(VeInteractive_VePlatform_Helper_Data::CONFIG_LAST_REQUEST, time(), 'default', 0);
92
+ }
93
+ // Clear config cache
94
+ Mage::app()->getCacheInstance()->cleanType( "config" );
95
+ }
96
+ }
97
+
98
+ // Check again, maybe we have it now
99
+ if(!$journeyTagUrl) {
100
+ if(!$this->isMessageSended()) {
101
+ $optionsUrl = Mage::helper("adminhtml")->getUrl("adminhtml/system_config/edit/section/veplatform_options", array('veretry' => 1));
102
+ $message = Mage::helper('VeInteractive_VePlatform')->__('There was a problem connecting to Ve Interactive Server, <a href="%s">try again please</a>', $optionsUrl);
103
+ Mage::getSingleton('adminhtml/session')->addWarning($message);
104
+ }
105
+ }
106
+ // If we have it we will check if it has select product
107
+ else {
108
+ // Check if has select any product, If not we show him a notice.
109
+ if(!VeInteractive_VePlatform_Block_ConfigFieldset::getProductsEnabled()) {
110
+ if( !$this->isMessageSended() && !$this->isOptionsPage() ) {
111
+ $optionsUrl = Mage::helper("adminhtml")->getUrl("adminhtml/system_config/edit/section/veplatform_options");
112
+ $message = Mage::helper('VeInteractive_VePlatform')->__('You have installed VePlatform successfully, please select which products want you to use: <a href="%s">Select Ve Products</a>', $optionsUrl);
113
+ Mage::getSingleton('adminhtml/session')->addNotice($message);
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Check if is the Ve options page
121
+ *
122
+ * @return boolean [description]
123
+ */
124
+ private function isOptionsPage()
125
+ {
126
+ $params = Mage::app()->getRequest()->getParams();
127
+ if(isset($params['section']) && 'veplatform_options' == $params['section']) {
128
+ return true;
129
+ }
130
+
131
+ return false;
132
+ }
133
+
134
+ /**
135
+ * Check if we have already sended the message
136
+ *
137
+ * @return boolean [description]
138
+ */
139
+ private function isMessageSended()
140
+ {
141
+ $toSearch = array('VePlatform', 'VeInteractive');
142
+ $smessages = Mage::getSingleton('adminhtml/session')->getMessages()->getItems();
143
+ foreach ($smessages as $smessage) {
144
+ foreach ($toSearch as $toSearchItem) {
145
+ if(stripos($smessage->getText(), $toSearchItem) !== false) {
146
+ return true;
147
+ }
148
+ }
149
+ }
150
+
151
+ return false;
152
+ }
153
+
154
+ private function checkModuleInstallation()
155
+ {
156
+ // Update ACL is needed after module installation to avoid 404 Error while accessing System > Configuration > VeInteractive > VePlatform.
157
+ $module_installed = Mage::getStoreConfig( VeInteractive_VePlatform_Helper_Data::MODULE_INSTALLED );
158
+ if( !$module_installed ) {
159
+ Mage::getConfig()->saveConfig( VeInteractive_VePlatform_Helper_Data::MODULE_INSTALLED, true );
160
+ Mage::app()->getCacheInstance()->cleanType( "config" );
161
+ Mage::getSingleton( 'admin/session' )->setAcl( Mage::getResourceModel( 'admin/acl' )->loadAcl() );
162
+ }
163
+ }
164
+ }
app/code/community/VeInteractive/VePlatform/Observer/Layout.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Observer_Layout
4
+ {
5
+ private static $BLOCKS = array(
6
+ array(
7
+ 'block'=> 'veplatform/vetag',
8
+ 'name'=> 'veplatform.vetag',
9
+ 'parent'=> 'before_body_end'
10
+ ),
11
+ array(
12
+ 'block'=> 'veplatform/vepixel',
13
+ 'name'=> 'veplatform.vepixel',
14
+ 'parent'=> 'content'
15
+ )
16
+ );
17
+
18
+ public function updateLayout( Varien_Event_Observer $observer )
19
+ {
20
+ // Only for FrontEnd.
21
+ if( $observer->getLayout()->getArea() === 'frontend' ) {
22
+ $layout = $observer->getLayout();
23
+ if( $layout ) {
24
+ foreach( self::$BLOCKS as $setting ) {
25
+ // Avoid adding the block twice.
26
+ if( !$layout->getBlock( $setting['block'] ) ){
27
+ $block = $layout->createBlock(
28
+ $setting['block'],
29
+ $setting['name']
30
+ );
31
+
32
+ if( $block ) {
33
+ $parent = $layout->getBlock( $setting['parent'] );
34
+ if( $parent ) {
35
+ $parent->append( $block );
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
app/code/community/VeInteractive/VePlatform/Observer/SaveSettings.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Observer_SaveSettings
4
+ {
5
+ const ACTIVATED_PRODUCTS_KEY = 'veplatform/adminhtml/activatedproducts';
6
+
7
+ public function sendData()
8
+ {
9
+ $recentSaveSettings = VeInteractive_VePlatform_Block_ConfigFieldset::getProductsEnabled();
10
+ if( $recentSaveSettings ) {
11
+ $alreadyActivatedProducts = @unserialize( Mage::getStoreConfig( self::ACTIVATED_PRODUCTS_KEY ) );
12
+ if( is_array( $alreadyActivatedProducts ) )
13
+ $currentActivatedProducts = array_diff( $recentSaveSettings, $alreadyActivatedProducts );
14
+ else
15
+ $currentActivatedProducts = $recentSaveSettings;
16
+ if( $currentActivatedProducts ) {
17
+
18
+ $helper = Mage::helper('VeInteractive_VePlatform');
19
+
20
+ $token = Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::TOKEN);
21
+
22
+ $data = array(
23
+ 'token' => $token,
24
+ 'language' => $helper->getLang(),
25
+ 'domain' => $helper->getBaseUrl(),
26
+ 'email' => Mage::getSingleton('admin/session')->getUser()->getEmail(),
27
+ 'country' => Mage::getStoreConfig('general/country/default'),
28
+ 'currency'=>Mage::app()->getBaseCurrencyCode(),
29
+ 'taskId' => 1,
30
+ 'appCodes' => self::getAppCodes( $currentActivatedProducts ),
31
+ );
32
+
33
+ $jsonString = $helper->sendProducts($data);
34
+
35
+ if( $jsonString ) {
36
+ Mage::getConfig()->saveConfig( self::ACTIVATED_PRODUCTS_KEY, serialize( $recentSaveSettings ) );
37
+ Mage::app()->getCacheInstance()->cleanType( "config" );
38
+ } else {
39
+ // Rollback changes already saved, before to call this method.
40
+ VeInteractive_VePlatform_Block_ConfigFieldset::setProductsEnabled( $alreadyActivatedProducts );
41
+ $message = Mage::helper('VeInteractive_VePlatform')->__('There was a problem connecting to Ve Interactive Server, try again please.');
42
+ throw new Mage_Core_Exception( $message );
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ static private function getAppCodes( $productSettings )
49
+ {
50
+ $appCodes = array();
51
+ if(in_array('vecontact', $productSettings)) {
52
+ $appCodes[] = 1;
53
+ }
54
+ if(in_array('vechat', $productSettings)) {
55
+ $appCodes[] = 2;
56
+ }
57
+ if(in_array('veassist', $productSettings)) {
58
+ $appCodes[] = 3;
59
+ }
60
+ if(in_array('veads', $productSettings)) {
61
+ $appCodes[] = 5;
62
+ }
63
+ $appCodes = implode('|', $appCodes);
64
+ return $appCodes;
65
+ }
66
+ }
app/code/community/VeInteractive/VePlatform/Observer/ThanksPage.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VeInteractive_VePlatform_Observer_ThanksPage
4
+ {
5
+ public function showPixel()
6
+ {
7
+ $journeyPixel = Mage::getStoreConfig(VeInteractive_VePlatform_Helper_Data::PIXEL_URL);
8
+ if($journeyPixel) {
9
+ Mage::getSingleton('core/session')->setShowPixel(true);
10
+ }
11
+ }
12
+ }
app/code/community/VeInteractive/VePlatform/etc/adminhtml.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <veplatform_options translate="label" >
12
+ <title>VePlatform Section</title>
13
+ </veplatform_options>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ </children>
19
+ </admin>
20
+ </resources>
21
+ </acl>
22
+ </config>
app/code/community/VeInteractive/VePlatform/etc/config.xml ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <VeInteractive_VePlatform>
5
+ <version>15.1.2.0</version>
6
+ </VeInteractive_VePlatform>
7
+ </modules>
8
+ <global>
9
+ <models>
10
+ <VeInteractive_VePlatform>
11
+ <class>VeInteractive_VePlatform_Model</class>
12
+ </VeInteractive_VePlatform>
13
+ </models>
14
+ <helpers>
15
+ <VeInteractive_VePlatform>
16
+ <class>VeInteractive_VePlatform_Helper</class>
17
+ </VeInteractive_VePlatform>
18
+ </helpers>
19
+ <events>
20
+ <admin_user_load_after>
21
+ <observers>
22
+ <veplatform_admin_user_load_after_observer>
23
+ <type>singleton</type>
24
+ <class>VeInteractive_VePlatform_Observer_AdminUserLoadAfter</class>
25
+ <method>checkInstallation</method>
26
+ </veplatform_admin_user_load_after_observer>
27
+ </observers>
28
+ </admin_user_load_after>
29
+ <controller_action_layout_generate_blocks_after>
30
+ <observers>
31
+ <veplatform_controller_action_layout_generate_blocks_after_observer>
32
+ <type>singleton</type>
33
+ <class>VeInteractive_VePlatform_Observer_Layout</class>
34
+ <method>updateLayout</method>
35
+ </veplatform_controller_action_layout_generate_blocks_after_observer>
36
+ </observers>
37
+ </controller_action_layout_generate_blocks_after>
38
+ <checkout_onepage_controller_success_action>
39
+ <observers>
40
+ <veplatform_checkout_onepage_controller_success_action_observer>
41
+ <type>singleton</type>
42
+ <class>VeInteractive_VePlatform_Observer_ThanksPage</class>
43
+ <method>showPixel</method>
44
+ </veplatform_checkout_onepage_controller_success_action_observer>
45
+ </observers>
46
+ </checkout_onepage_controller_success_action>
47
+ <checkout_multishipping_controller_success_action>
48
+ <observers>
49
+ <veplatform_checkout_multishipping_controller_success_action_observer>
50
+ <type>singleton</type>
51
+ <class>VeInteractive_VePlatform_Observer_ThanksPage</class>
52
+ <method>showPixel</method>
53
+ </veplatform_checkout_multishipping_controller_success_action_observer>
54
+ </observers>
55
+ </checkout_multishipping_controller_success_action>
56
+ <admin_system_config_changed_section_veplatform_options>
57
+ <observers>
58
+ <veplatform_admin_system_config_changed_section_veplatform_options_observer>
59
+ <type>singleton</type>
60
+ <class>VeInteractive_VePlatform_Observer_SaveSettings</class>
61
+ <method>sendData</method>
62
+ </veplatform_admin_system_config_changed_section_veplatform_options_observer>
63
+ </observers>
64
+ </admin_system_config_changed_section_veplatform_options>
65
+ </events>
66
+ <blocks>
67
+ <veplatform>
68
+ <class>VeInteractive_VePlatform_Block</class>
69
+ </veplatform>
70
+ <adminhtml>
71
+ <rewrite>
72
+ <system_config_form_fieldset>VeInteractive_VePlatform_Block_ConfigFieldset</system_config_form_fieldset>
73
+ </rewrite>
74
+ </adminhtml>
75
+ </blocks>
76
+ </global>
77
+ <default>
78
+ <veplatform>
79
+ <service>
80
+ <url>http://veconnect.veinteractive.com</url>
81
+ </service>
82
+ </veplatform>
83
+ </default>
84
+ </config>
app/code/community/VeInteractive/VePlatform/etc/system.xml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <veinteractive_tab translate="label" module="VeInteractive_VePlatform">
5
+ <label>Ve Interactive</label>
6
+ <sort_order>900</sort_order>
7
+ </veinteractive_tab>
8
+ </tabs>
9
+ <sections>
10
+ <veplatform_options translate="label" module="VeInteractive_VePlatform">
11
+ <label>VePlatform</label>
12
+ <tab>veinteractive_tab</tab>
13
+ <sort_order>100</sort_order>
14
+ <frontend_type>text</frontend_type>
15
+ <show_in_default>1</show_in_default>
16
+ <show_in_website>0</show_in_website>
17
+ <show_in_store>0</show_in_store>
18
+ <groups>
19
+ <settings translate="label">
20
+ <label>Setting</label>
21
+ <frontend_type>text</frontend_type>
22
+ <show_in_default>1</show_in_default>
23
+ <show_in_website>0</show_in_website>
24
+ <show_in_store>0</show_in_store>
25
+ <fields>
26
+ <products>
27
+ <frontend_type>multiselect</frontend_type>
28
+ <source_model>VeInteractive_VePlatform/Products</source_model>
29
+ <show_in_default>1</show_in_default>
30
+ <show_in_website>0</show_in_website>
31
+ <show_in_store>0</show_in_store>
32
+ </products>
33
+ </fields>
34
+ </settings>
35
+ </groups>
36
+ </veplatform_options>
37
+ </sections>
38
+ </config>
app/code/community/VeInteractive/VePlatform/templates/vepixel.phtml ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php if($this->showPixel()): ?>
2
+ <img height="1" width="1" src="<?php echo $this->journeyPixel() ; ?>" />
3
+ <?php endif; ?>
app/code/community/VeInteractive/VePlatform/templates/vetag.phtml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $tag = $this->journeyTag(); ?>
2
+ <?php if($tag): ?>
3
+ <script type='text/javascript'>
4
+ (function() {
5
+ var ve = document.createElement('script');
6
+ ve.type = 'text/javascript';
7
+ ve.async = true;
8
+ ve.src = document.location.protocol + '<?php echo $tag; ?>';
9
+ var s = document.getElementsByTagName('body')[0];s.appendChild(ve, s);})()
10
+ </script>
11
+ <?php endif; ?>
app/design/adminhtml/veplatform/default/template/systemconfig/veplatform_options_settings/formfieldset/footer.phtml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ </div>
2
+ </fieldset>
app/design/adminhtml/veplatform/default/template/systemconfig/veplatform_options_settings/formfieldset/header.phtml ADDED
@@ -0,0 +1,1017 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style>
2
+ /**
3
+ * Magento styles
4
+ */
5
+ #veplatform_options_settings {
6
+ padding: 0;
7
+ }
8
+ #mage-veplatform_options_settings {
9
+ display:none;
10
+ }
11
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .quest_btn,
12
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info .quest_btn {
13
+ font-family: DINWeb-Medium, sans-serif;
14
+ background: #fff;
15
+ color: #1fbd9d;
16
+ border: 1px solid #dadada;
17
+ padding: 10px;
18
+ display: block;
19
+ margin: 0 auto;
20
+ font-size: 18px;
21
+ font-weight: normal; }
22
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .quest_btn.hidden {
23
+ visibility: hidden;
24
+ }
25
+ #veinteractive_main .ve_footer {
26
+ height: 50px;
27
+ }
28
+
29
+ /**
30
+ * Common styles
31
+ */
32
+ .icons-sprite, .icons-envelope, .icons-phone, .icons-pike {
33
+ background-image: url('<?php echo $this->getMyImagesUrl( 'icons-sdb320c34e8.png' ); ?>');
34
+ background-repeat: no-repeat; }
35
+
36
+ .icons-envelope {
37
+ background-position: 0 0; }
38
+
39
+ .icons-phone {
40
+ background-position: 0 -12px; }
41
+
42
+ .icons-pike {
43
+ background-position: 0 -28px; }
44
+
45
+ @font-face {
46
+ font-family: DINWeb;
47
+ src: url(<?php echo $this->getMyFontsUrl( 'DINWeb.eot?' ); ?>) format("eot"), url(<?php echo $this->getMyFontsUrl( 'DINWeb.woff' ); ?>) format("woff"), url(<?php echo $this->getMyFontsUrl( 'DINComp.ttf' ); ?>) format("truetype"); }
48
+ @font-face {
49
+ font-family: DINWeb-Medium;
50
+ src: url(<?php echo $this->getMyFontsUrl( 'DINWeb-Medium.eot?' ); ?>) format("eot"), url(<?php echo $this->getMyFontsUrl( 'DINWeb-Medium.woff' ); ?>) format("woff"), url(<?php echo $this->getMyFontsUrl( 'DINComp-Medium.ttf' ); ?>) format("truetype"); }
51
+ @font-face {
52
+ font-family: DINWeb-Bold;
53
+ src: url(<?php echo $this->getMyFontsUrl( 'DINWeb-Bold.eot?' ); ?>) format("eot"), url(<?php echo $this->getMyFontsUrl( 'DINWeb-Bold.woff' ); ?>) format("woff"), url(<?php echo $this->getMyFontsUrl( 'DINComp-Bold.ttf' ); ?>) format("truetype"); }
54
+ @font-face {
55
+ font-family: DINWeb-Light;
56
+ src: url(<?php echo $this->getMyFontsUrl( 'DINWeb-Light.eot?' ); ?>) format("eot"), url(<?php echo $this->getMyFontsUrl( 'DINWeb-Light.woff' ); ?>) format("woff"), url(<?php echo $this->getMyFontsUrl( 'DINComp-Light.ttf' ); ?>) format("truetype"); }
57
+ #veinteractive_main {
58
+ border: 0;
59
+ background-color: #fff;
60
+ margin: 0; }
61
+ #veinteractive_main .product-logo-clickable {
62
+ cursor: pointer; }
63
+ #veinteractive_main .product-logo-clickable.no-clickable {
64
+ cursor: default; }
65
+ #veinteractive_main .main_messages h2, #veinteractive_main p, #veinteractive_main span, #veinteractive_main li {
66
+ font-family: DINWeb; }
67
+ #veinteractive_main .content_grid {
68
+ width: 100%;
69
+ max-width: 1200px;
70
+ margin: 0 auto; }
71
+ #veinteractive_main a {
72
+ text-decoration: none;
73
+ font-family: DINWeb-Bold; }
74
+ #veinteractive_main .ve_header .header_top .right_header .hidden,
75
+ #veinteractive_main .hidden .extra_content {
76
+ display: none; }
77
+ #veinteractive_main .ecommerce-logo {
78
+ margin-bottom: 34px; }
79
+ #veinteractive_main .icons-pike,
80
+ #veinteractive_main .icons-envelope,
81
+ #veinteractive_main .icons-phone {
82
+ display: inline-block;
83
+ position: relative; }
84
+ #veinteractive_main .icons-pike {
85
+ height: 12px;
86
+ width: 12px;
87
+ top: 2px;
88
+ margin-left: 5px; }
89
+ #veinteractive_main .icons-envelope {
90
+ height: 12px;
91
+ width: 17px;
92
+ top: 2px;
93
+ margin-right: 15px; }
94
+ #veinteractive_main .icons-phone {
95
+ height: 18px;
96
+ width: 18px;
97
+ top: 3px;
98
+ margin-right: 15px; }
99
+ #veinteractive_main .ve_error {
100
+ background: #fff; }
101
+ #veinteractive_main .ve_error p {
102
+ font-family: DINWeb-Medium;
103
+ display: block;
104
+ text-align: center;
105
+ color: red;
106
+ font-weight: bold;
107
+ font-size: 20px; }
108
+ #veinteractive_main .ve_header {
109
+ background: url("<?php echo $this->getMyImagesUrl( 'header_banner.jpg' ); ?>") center center;
110
+ width: 100%;
111
+ padding-bottom: 70px;
112
+ height: 216px; }
113
+ #veinteractive_main .ve_header .header_top {
114
+ padding: 35px 30px; }
115
+ #veinteractive_main .ve_header .header_top .left_header, #veinteractive_main .ve_header .header_top .right_header {
116
+ width: 50%; }
117
+ #veinteractive_main .ve_header .header_top .left_header {
118
+ float: left; }
119
+ #veinteractive_main .ve_header .header_top .right_header {
120
+ float: right; }
121
+ #veinteractive_main .ve_header .header_top .right_header .main_menu {
122
+ margin-top: 34px; }
123
+ #veinteractive_main .ve_header .header_top .right_header li {
124
+ display: block;
125
+ text-align: right; }
126
+ #veinteractive_main .ve_header .header_top .right_header li .cli_quest {
127
+ color: #92ab45;
128
+ margin-right: 10px;
129
+ font-size: 16px; }
130
+ #veinteractive_main .ve_header .header_top .right_header li a {
131
+ color: #fff;
132
+ font-size: 20px; }
133
+ #veinteractive_main .ve_header .header_top .right_header li a:hover {
134
+ color: #92ab45; }
135
+ #veinteractive_main .ve_header .faint-line {
136
+ margin: 50px 0;
137
+ padding-top: 10px;
138
+ border-top: 2px solid #788590;
139
+ border-top: 2px solid rgba(255, 255, 255, 0.05); }
140
+ #veinteractive_main .ve_header .faint-line .main_messages .conf-msg, #veinteractive_main .ve_header .faint-line .main_messages .thx-msg {
141
+ display: block;
142
+ text-align: left;
143
+ margin: 20px 0px; }
144
+ #veinteractive_main .ve_header .faint-line .main_messages .thx-msg {
145
+ color: #9d9a9a;
146
+ font-size: 28px; }
147
+ #veinteractive_main .ve_header .faint-line .main_messages .conf-msg {
148
+ color: #fff;
149
+ font-size: 36px; }
150
+ #veinteractive_main .ve_main .hidden {
151
+ display: none; }
152
+ #veinteractive_main .ve_main .company_info,
153
+ #veinteractive_main .ve_main .legal_info,
154
+ #veinteractive_main .ve_main .thanks_info {
155
+ margin: 70px auto; }
156
+ #veinteractive_main .ve_main .company_info .info_text p,
157
+ #veinteractive_main .ve_main .legal_info .info_text p,
158
+ #veinteractive_main .ve_main .thanks_info .info_text p {
159
+ color: #6e7479;
160
+ font-size: 16px;
161
+ line-height: 25px; }
162
+ #veinteractive_main .ve_main .company_info .info_text a,
163
+ #veinteractive_main .ve_main .legal_info .info_text a,
164
+ #veinteractive_main .ve_main .thanks_info .info_text a {
165
+ color: #1fbd9d; }
166
+ #veinteractive_main .ve_main .company_info .info_text a:hover,
167
+ #veinteractive_main .ve_main .legal_info .info_text a:hover,
168
+ #veinteractive_main .ve_main .thanks_info .info_text a:hover {
169
+ color: #000; }
170
+ #veinteractive_main .ve_main .company_info .info_text .ve-list,
171
+ #veinteractive_main .ve_main .legal_info .info_text .ve-list,
172
+ #veinteractive_main .ve_main .thanks_info .info_text .ve-list {
173
+ list-style-image: url("<?php echo $this->getMyImagesUrl( 've-check.png' ); ?>");
174
+ margin: 0;
175
+ padding: 0 40px; }
176
+ #veinteractive_main .ve_main .company_info .info_text .ve-list li,
177
+ #veinteractive_main .ve_main .legal_info .info_text .ve-list li,
178
+ #veinteractive_main .ve_main .thanks_info .info_text .ve-list li {
179
+ color: #6e7479;
180
+ line-height: 25px;
181
+ font-size: 16px; }
182
+ #veinteractive_main .ve_main .company_info .info_text .ve-list li:empty,
183
+ #veinteractive_main .ve_main .legal_info .info_text .ve-list li:empty,
184
+ #veinteractive_main .ve_main .thanks_info .info_text .ve-list li:empty {
185
+ display: none; }
186
+ #veinteractive_main .ve_main .company_info .info_text .social-info,
187
+ #veinteractive_main .ve_main .legal_info .info_text .social-info,
188
+ #veinteractive_main .ve_main .thanks_info .info_text .social-info {
189
+ margin: 0;
190
+ padding: 0; }
191
+ #veinteractive_main .ve_main .company_info .info_text .social-info li,
192
+ #veinteractive_main .ve_main .legal_info .info_text .social-info li,
193
+ #veinteractive_main .ve_main .thanks_info .info_text .social-info li {
194
+ list-style: none;
195
+ margin: 5px 10px; }
196
+ #veinteractive_main .ve_main .company_info .info_text .social-info a,
197
+ #veinteractive_main .ve_main .legal_info .info_text .social-info a,
198
+ #veinteractive_main .ve_main .thanks_info .info_text .social-info a {
199
+ font-size: 16px; }
200
+ #veinteractive_main .ve_main .company_info .info_text .social-info span,
201
+ #veinteractive_main .ve_main .legal_info .info_text .social-info span,
202
+ #veinteractive_main .ve_main .thanks_info .info_text .social-info span {
203
+ color: #6e7479;
204
+ font-size: 16px; }
205
+ #veinteractive_main .ve_main .company_info .info_text .social-info .country,
206
+ #veinteractive_main .ve_main .legal_info .info_text .social-info .country,
207
+ #veinteractive_main .ve_main .thanks_info .info_text .social-info .country {
208
+ font-family: DINWeb-Bold; }
209
+ #veinteractive_main .ve_main .product_activation {
210
+ background-color: #f0f0f0;
211
+ padding: 70px 40px; }
212
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vebutton .confirm-btn {
213
+ font-family: DINWeb-Medium;
214
+ font-size: 16px;
215
+ display: block;
216
+ margin: 50px auto 0px;
217
+ padding: 10px 20px;
218
+ background: #09b692;
219
+ color: #fff;
220
+ border: none;
221
+ -moz-border-radius: 2px;
222
+ -webkit-border-radius: 2px;
223
+ border-radius: 2px; }
224
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vebutton .confirm-btn:hover {
225
+ cursor: pointer; }
226
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product_act_title {
227
+ font-family: DINWeb-Medium;
228
+ color: #343f48;
229
+ padding-bottom: 5px;
230
+ margin-bottom: 32px;
231
+ font-size: 30px;
232
+ font-weight: lighter;
233
+ display: block;
234
+ text-align: center;
235
+ border-bottom: 1px solid #dadada; }
236
+ #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content {
237
+ margin: 64px 0px 0px; }
238
+ #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content p {
239
+ float: left; }
240
+ #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content .product_logo {
241
+ width: 30%; }
242
+ #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content p {
243
+ width: 70%;
244
+ font-size: 16px;
245
+ line-height: 25px; }
246
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product {
247
+ width: 25%; }
248
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_name {
249
+ margin: 0 auto; }
250
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_logo {
251
+ height: 232px;
252
+ width: 212px; }
253
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_name {
254
+ text-align: center; }
255
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_name p {
256
+ font-size: 16px; }
257
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product input[type="checkbox"] {
258
+ display: none; }
259
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product input[type="checkbox"] + label {
260
+ display: block;
261
+ margin: 20px auto;
262
+ width: 22px;
263
+ height: 22px;
264
+ background: url("<?php echo $this->getMyImagesUrl( 'radio_unselected.png' ); ?>") left top no-repeat; }
265
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product input[type="checkbox"]:checked + label {
266
+ background: url("<?php echo $this->getMyImagesUrl( 'radio_selected.png' ); ?>") left top no-repeat; }
267
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product input[type="checkbox"]:disabled + label {
268
+ background: url("<?php echo $this->getMyImagesUrl( 'product_selected.png' ); ?>") left top no-repeat; }
269
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product input[type="checkbox"]:disabled + label:hover {
270
+ cursor: default; }
271
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product label:hover {
272
+ cursor: pointer; }
273
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .quest_btn {
274
+ font-family: DINWeb-Medium;
275
+ background-color: #F0F0F0;
276
+ color: #1fbd9d;
277
+ border: 1px solid #dadada;
278
+ padding: 10px;
279
+ display: block;
280
+ margin: 0 auto;
281
+ font-size: 18px; }
282
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .quest_btn:hover {
283
+ cursor: pointer; }
284
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info .product_logo {
285
+ height: 180px;
286
+ width: 212px;
287
+ margin: 0 auto; }
288
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vecontact_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vechat_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veassist_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veads_info_content .product_logo {
289
+ margin-right: 50px; }
290
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vecontact_info_content .product_logo {
291
+ background: url("<?php echo $this->getMyImagesUrl( 'vecontact-logo-min.png' ); ?>") no-repeat; }
292
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vechat_info_content .product_logo {
293
+ background: url("<?php echo $this->getMyImagesUrl( 'vechat-logo-min.png' ); ?>") no-repeat; }
294
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veassist_info_content .product_logo {
295
+ background: url("<?php echo $this->getMyImagesUrl( 'veassist-logo-min.png' ); ?>") no-repeat; }
296
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veads_info_content .product_logo {
297
+ background: url("<?php echo $this->getMyImagesUrl( 'veads-logo-min.png' ); ?>") no-repeat; }
298
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info .quest_btn {
299
+ font-family: DINWeb-Medium;
300
+ background-color: #F0F0F0;
301
+ color: #1fbd9d;
302
+ border: 1px solid #dadada;
303
+ padding: 10px;
304
+ display: inline-block;
305
+ font-size: 18px; }
306
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info .quest_btn:hover {
307
+ cursor: pointer; }
308
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vecontact .product_logo {
309
+ background: url("<?php echo $this->getMyImagesUrl( 'vecontact-logo-big.png' ); ?>") no-repeat; }
310
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vechat {
311
+ float: right; }
312
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vechat .product_logo {
313
+ background: url("<?php echo $this->getMyImagesUrl( 'vechat-logo-big.png' ); ?>") no-repeat; }
314
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veassist {
315
+ float: right; }
316
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veassist .product_logo {
317
+ background: url("<?php echo $this->getMyImagesUrl( 'veassist-logo-big.png' ); ?>") no-repeat; }
318
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veads {
319
+ float: right; }
320
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veads .product_logo {
321
+ background: url("<?php echo $this->getMyImagesUrl( 'veads-logo-big.png' ); ?>") no-repeat; }
322
+ #veinteractive_main .ve_footer {
323
+ background-color: #2f383c; }
324
+ #veinteractive_main .ve_footer .footer-content {
325
+ margin: 0 auto;
326
+ padding: 25px 50px 0px;
327
+ font-size: 14px;
328
+ color: #fff; }
329
+ #veinteractive_main .ve_footer .footer-content .footer-left, #veinteractive_main .ve_footer .footer-content .footer-center, #veinteractive_main .ve_footer .footer-content .footer-right {
330
+ width: 33%;
331
+ position: relative;
332
+ top: 50%;
333
+ -webkit-transform: translateY(-50%);
334
+ -ms-transform: translateY(-50%);
335
+ transform: translateY(-50%); }
336
+ #veinteractive_main .ve_footer .footer-content .footer-left {
337
+ float: left; }
338
+ #veinteractive_main .ve_footer .footer-content .footer-left a {
339
+ font-family: DINWeb-Light;
340
+ color: #fff; }
341
+ #veinteractive_main .ve_footer .footer-content .footer-left a:hover {
342
+ color: #1fbd9d; }
343
+ #veinteractive_main .ve_footer .footer-content .footer-center {
344
+ display: inline-block;
345
+ margin: 0 auto; }
346
+ #veinteractive_main .ve_footer .footer-content .footer-center img {
347
+ display: block;
348
+ margin: 0 auto; }
349
+ #veinteractive_main .ve_footer .footer-content .footer-right {
350
+ float: right;
351
+ text-align: right; }
352
+ #veinteractive_main .ve_footer .footer-content .footer-right span {
353
+ font-family: DINWeb-Light; }
354
+
355
+ @media screen and (max-width: 1600px) {
356
+ #veinteractive_main .content_grid {
357
+ max-width: 900px;
358
+ margin: 0px auto;
359
+ min-width: 500px; }
360
+ }
361
+
362
+ @media screen and (max-width: 1335px) {
363
+ #veinteractive_main .ve_footer .footer-content {
364
+ padding: 25px 0px 0px; }
365
+
366
+
367
+ }
368
+ @media screen and (max-width: 1287px) {
369
+ #veinteractive_main .ve_footer .footer-content .footer-right {
370
+ text-align: right; } }
371
+ @media screen and (max-width: 1253px) {
372
+ #veinteractive_main .ve_header .header_top {
373
+ padding: 35px 30px; }
374
+
375
+ #veinteractive_main .ve_header .faint-line .main_messages .thx-msg, #veinteractive_main .ve_header .faint-line .main_messages .conf-msg {
376
+ margin: 20px 30px; }
377
+
378
+ #veinteractive_main .content_grid {
379
+ max-width: 900px;
380
+ margin: 0px auto;
381
+ min-width: 500px; }
382
+
383
+ #veinteractive_main .info_text {
384
+ margin: 0 30px; }
385
+
386
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vecontact .product_logo {
387
+ background: url("<?php echo $this->getMyImagesUrl( 'vecontact-logo.png' ); ?>") no-repeat; }
388
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vechat .product_logo {
389
+ background: url("<?php echo $this->getMyImagesUrl( 'vechat-logo.png' ); ?>") no-repeat; }
390
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veassist .product_logo {
391
+ background: url("<?php echo $this->getMyImagesUrl( 'veassist-logo.png' ); ?>") no-repeat; }
392
+ #veinteractive_main .ve_main .product_activation .product_activation_content .veads .product_logo {
393
+ background: url("<?php echo $this->getMyImagesUrl( 'veads-logo.png' ); ?>") no-repeat; }
394
+
395
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product .product_logo {
396
+ height: 200px;
397
+ width: 175px; }
398
+
399
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info .quest_btn {
400
+ display: block;
401
+ margin: 0 auto; }
402
+
403
+ #veinteractive_main .ve_footer .footer-content .footer-center, #veinteractive_main .ve_footer .footer-content .footer-right {
404
+ text-align: center; }
405
+
406
+ #veinteractive_main .ve_header .header_top .right_header li {
407
+ margin-right: 40px; } }
408
+ @media screen and (max-width: 1120px) {
409
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product {
410
+ width: 50%;
411
+ display: inline-block;
412
+ margin-bottom: 50px; }
413
+
414
+ #veinteractive_main .ve_main .product_activation .product_activation_content .vebutton .confirm-btn {
415
+ margin: 0 auto; }
416
+
417
+ #veinteractive_main .ve_footer {
418
+ padding: 0 30px; } }
419
+ @media screen and (max-width: 990px) {
420
+ #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vecontact_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #vechat_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veassist_info_content .product_logo, #veinteractive_main .ve_main .product_activation .product_activation_content .product-extra-info #veads_info_content .product_logo {
421
+ display: none; }
422
+
423
+ #veinteractive_main .ve_main .product_activation .product_activation_content .extra_content p {
424
+ width: auto; }
425
+
426
+ #veinteractive_main .ve_footer .footer-content {
427
+ font-size: 12px; } }
428
+ @media screen and (max-width: 800px) {
429
+ #veinteractive_main .ve_header .faint-line .main_messages .thx-msg {
430
+ font-size: 22px; }
431
+
432
+ #veinteractive_main .ve_header .faint-line .main_messages .conf-msg {
433
+ font-size: 30px; }
434
+
435
+ #veinteractive_main .ve_header .header_top .right_header li {
436
+ text-align: right;
437
+ display: block;
438
+ margin-right: 40px; }
439
+ #veinteractive_main .ve_header .header_top .right_header li .cli_quest {
440
+ display: block;
441
+ margin-right: 0; } }
442
+
443
+ </style>
444
+
445
+ <script>
446
+ (function (window, document){
447
+ 'use strict';
448
+
449
+ function veAnimate(elem,style,unit,from,to,time,prop) {
450
+ if( !elem) return;
451
+ var start = new Date().getTime(),
452
+ timer = setInterval(function() {
453
+ var step = Math.min(1,(new Date().getTime()-start)/time);
454
+ if (prop) {
455
+ elem[style] = (from+step*(to-from))+unit;
456
+ } else {
457
+ elem.style[style] = (from+step*(to-from))+unit;
458
+ }
459
+ if( step == 1) clearInterval(timer);
460
+ },25);
461
+
462
+ elem.style[style] = from+unit;
463
+ }
464
+
465
+ function veAddEvent( evnt, elem, func ) {
466
+ if( elem.addEventListener ) { // W3C DOM
467
+ elem.addEventListener( evnt, func, false );
468
+ }
469
+ else if( elem.attachEvent ) { // IE DOM
470
+ elem.attachEvent( "on"+evnt, func );
471
+ }
472
+ else { // No much to do
473
+ elem[ evnt ] = func;
474
+ }
475
+ }
476
+
477
+ function veQueryClass(matchClass) {
478
+ var responseElems = [];
479
+ var elems = document.getElementsByTagName('*'), i;
480
+
481
+ for (i=0;i<elems.length;i++) {
482
+ if((' ' + elems[i].className + ' ').indexOf(' ' + matchClass + ' ') > -1) {
483
+ responseElems.push(elems[i]);
484
+ }
485
+ }
486
+
487
+ return responseElems;
488
+ }
489
+
490
+ function veAddClass(elem, classToAdd) {
491
+ if (elem.className.split(' ').indexOf(classToAdd) < 0) {
492
+ elem.className = elem.className + ' ' + classToAdd;
493
+ }
494
+ }
495
+
496
+ function veHasClass(elem, classToCheck) {
497
+ return elem.className.match(new RegExp('(\\s|^)' + classToCheck + '(\\s|$)'));
498
+ }
499
+
500
+ function veRemoveClass(elem, classToRemove) {
501
+ if (veHasClass(elem, classToRemove)) {
502
+ var reg = new RegExp('(\\s|^)' + classToRemove + '(\\s|$)');
503
+ elem.className = elem.className.replace(reg, ' ');
504
+ }
505
+ }
506
+
507
+ function veCheckButton() {
508
+ var confirmButton = document.getElementById('confirm-btn');
509
+ var checkBoxes = veQueryClass('veplatform-checkbox');
510
+ var itr;
511
+ var allFalse = true;
512
+
513
+ for (itr=0;itr<checkBoxes.length;itr++) {
514
+ if(checkBoxes[itr].checked && !checkBoxes[itr].disabled) {
515
+ allFalse = false;
516
+ }
517
+ }
518
+
519
+ if(allFalse) {
520
+ confirmButton.style.visibility = "hidden";
521
+ }
522
+ else {
523
+ confirmButton.style.visibility = "visible";
524
+ }
525
+ }
526
+
527
+ function veFindItemByValue( element, value ){
528
+ var index = null;
529
+ for( var i = 0; index == null && i < element.options.length; i++ ) {
530
+ if( element.options[i].value === value ) {
531
+ index = i;
532
+ }
533
+ }
534
+ return index;
535
+ }
536
+
537
+ function veProductSelected( productSelected ) {
538
+ var productList = document.getElementById( "veplatform_options_settings_products" );
539
+ var idx = veFindItemByValue( productList, productSelected );
540
+
541
+ if( idx != null ) {
542
+ productList.options[ idx ].selected = !productList.options[ idx ].selected;
543
+ }
544
+ }
545
+
546
+ function veSelectAllByDefault() {
547
+ var productList = document.getElementById( "veplatform_options_settings_products" );
548
+ var idx;
549
+
550
+ for (idx=0;idx<productList.options.length;idx++) {
551
+ productList.options[ idx ].selected = true;
552
+ }
553
+ }
554
+
555
+ window.onload = function( onloadEvent ) {
556
+ var iterator, logo, checkbox, button, closeButton, infoContentIterator;
557
+ var buttons = veQueryClass('ve-open-info');
558
+ var closeButtons = veQueryClass('ve-close-info');
559
+ var infoContents = veQueryClass('ve-info-content');
560
+ var checkBoxes = veQueryClass('veplatform-checkbox');
561
+ var logos = veQueryClass('product-logo-clickable');
562
+
563
+ // Click logo
564
+ for (iterator=0;iterator<logos.length;iterator++) {
565
+ logo = logos[iterator];
566
+
567
+ veAddEvent( 'click', logo, function(currentEvent) {
568
+ var currentEvent = currentEvent || window.event;
569
+ var that = this;
570
+ var targetId = that.getAttribute('data-target');
571
+ var targetValue = that.getAttribute('data-value');
572
+ var target = document.getElementById(targetId);
573
+
574
+ currentEvent.preventDefault();
575
+
576
+ if(target.checked) {
577
+ target.checked = false;
578
+ }
579
+ else {
580
+ target.checked = true;
581
+ }
582
+
583
+ veCheckButton();
584
+
585
+ if(!veHasClass(that, 'no-clickable')) {
586
+ veProductSelected(targetValue);
587
+ }
588
+ });
589
+ }
590
+
591
+ // Check boxes
592
+ for (iterator=0;iterator<checkBoxes.length;iterator++) {
593
+ checkbox = checkBoxes[iterator];
594
+
595
+ veAddEvent( 'change', checkbox, function(currentEvent) {
596
+ var that = this;
597
+
598
+ veCheckButton();
599
+ veProductSelected(that.value);
600
+ });
601
+ }
602
+
603
+ // Open buttons
604
+ for (iterator=0;iterator<buttons.length;iterator++) {
605
+ button = buttons[iterator];
606
+
607
+ veAddEvent( 'click', button, function(currentEvent) {
608
+ var currentEvent = currentEvent || window.event;
609
+ var that = this;
610
+ var infoContentIterator;
611
+ var infoContent;
612
+ var targetId = that.getAttribute('data-target');
613
+ var target = document.getElementById(targetId);
614
+
615
+ currentEvent.preventDefault();
616
+
617
+ if(veHasClass(target, 'hidden')) {
618
+ for(infoContentIterator=0;infoContentIterator<infoContents.length;infoContentIterator++) {
619
+ infoContent = infoContents[infoContentIterator];
620
+ veAddClass(infoContent, 'hidden');
621
+ }
622
+
623
+ veRemoveClass(target, 'hidden');
624
+ veAnimate(document.documentElement, "scrollTop", "", document.documentElement.scrollTop, target.offsetTop, 300, true);
625
+ veAnimate(document.body, "scrollTop", "", document.body.scrollTop, target.offsetTop, 300, true);
626
+ }
627
+ else {
628
+ veAddClass(target, 'hidden');
629
+ }
630
+ });
631
+ }
632
+
633
+ // Close buttons
634
+ for (iterator=0;iterator<closeButtons.length;iterator++) {
635
+ closeButton = closeButtons[iterator];
636
+
637
+ veAddEvent( 'click', closeButton, function(currentEvent) {
638
+ var currentEvent = currentEvent || window.event;
639
+ var that = this;
640
+ var targetId = that.getAttribute('data-target');
641
+ var target = document.getElementById(targetId);
642
+
643
+ currentEvent.preventDefault();
644
+
645
+ veAddClass(target, 'hidden');
646
+ });
647
+ }
648
+
649
+ veCheckButton();
650
+ veSelectAllByDefault();
651
+ };
652
+
653
+ }(window, document));
654
+
655
+ /*
656
+ (function (window){
657
+ 'use strict';
658
+
659
+ function veProductCloseInfo( currentEvent, me, infoContentId ) {
660
+ var infoContent = document.getElementById( infoContentId );
661
+ infoContent.className = "hidden";
662
+ }
663
+
664
+ function veProductOpenInfo( currentEvent, me, infoContentId, allInfoContent ) {
665
+
666
+ var infoContent = document.getElementById( infoContentId );
667
+
668
+ if(infoContent.className == "") {
669
+ infoContent.className = "hidden";
670
+
671
+ return;
672
+ }
673
+
674
+ for(var i = 0; i < allInfoContent.length; i++) {
675
+ document.getElementById( allInfoContent[i] ).className = "hidden";
676
+ }
677
+
678
+ infoContent.className = "";
679
+ }
680
+
681
+ function veProductSelected( currentEvent, me, productListId, productSelected ) {
682
+ var productList = document.getElementById( productListId );
683
+ var idx = veFindItemByValue( productList, productSelected );
684
+ if( idx != null ) {
685
+ productList.options[ idx ].selected = !productList.options[ idx ].selected;
686
+ }
687
+ }
688
+
689
+ function veProductLoad( currentEvent, me ) {
690
+ me.disabled = me.checked;
691
+ }
692
+
693
+ var veEvents = {
694
+ "vecontact_moreinfo": {
695
+ "click": {
696
+ prevent: true,
697
+ funct: veProductOpenInfo,
698
+ args: [ "vecontact_info_content", [ "vecontact_info_content", "vechat_info_content" ] ]
699
+ }
700
+ },
701
+ "vecontact_closeinfo": {
702
+ "click": {
703
+ prevent: true,
704
+ funct: veProductCloseInfo,
705
+ args: [ "vecontact_info_content" ]
706
+ }
707
+ },
708
+ "vechat_moreinfo": {
709
+ "click": {
710
+ prevent: true,
711
+ funct: veProductOpenInfo,
712
+ args: [ "vechat_info_content", [ "vecontact_info_content", "vechat_info_content" ] ]
713
+ }
714
+ },
715
+ "vechat_closeinfo": {
716
+ "click": {
717
+ prevent: true,
718
+ funct: veProductCloseInfo,
719
+ args: [ "vechat_info_content" ]
720
+ }
721
+ },
722
+ "contactCb": {
723
+ "click": {
724
+ funct: veProductSelected,
725
+ args: [ "veplatform_options_settings_products", "vecontact" ]
726
+ },
727
+ "load":{
728
+ funct: veProductLoad
729
+ }
730
+ },
731
+ "chatCb": {
732
+ "click": {
733
+ funct: veProductSelected,
734
+ args: [ "veplatform_options_settings_products", "vechat" ]
735
+ },
736
+ "load": {
737
+ funct: veProductLoad
738
+ }
739
+ }
740
+ };
741
+
742
+ function veAddEvent( evnt, elem, func ) {
743
+ if( elem.addEventListener ) { // W3C DOM
744
+ elem.addEventListener( evnt, func, false );
745
+ } else if( elem.attachEvent ) { // IE DOM
746
+ elem.attachEvent( "on"+evnt, func );
747
+ } else { // No much to do
748
+ elem[ evnt ] = func;
749
+ }
750
+ }
751
+
752
+ function veFindItemByValue( element, value ){
753
+ var index = null;
754
+ for( var i = 0; index == null && i < element.options.length; i++ ) {
755
+ if( element.options[i].value === value ) {
756
+ index = i;
757
+ }
758
+ }
759
+ return index;
760
+ }
761
+
762
+ function veCall( currentEvent, me, funct, args ) {
763
+ var new_args;
764
+
765
+ if( typeof funct === "function" ) {
766
+ new_args = [ currentEvent, me ];
767
+ if( args ) new_args = new_args.concat( args );
768
+ funct.apply( null, new_args );
769
+ }
770
+ }
771
+
772
+ window.onload = function( onloadEvent ) {
773
+ var onloadEvent = onloadEvent || window.event;
774
+
775
+ for( var elementId in veEvents ){
776
+ if(veEvents.hasOwnProperty(elementId)) {
777
+ for( var eventId in veEvents[ elementId ] ) {
778
+ if(veEvents[ elementId ].hasOwnProperty(eventId)) {
779
+ if( eventId == "load" ) {
780
+ veCall( onloadEvent, document.getElementById( elementId ), veEvents[elementId][eventId].funct, veEvents[elementId][eventId].args );
781
+ }
782
+ else {
783
+ veAddEvent( eventId, document.getElementById( elementId ), function( currentEvent ) {
784
+ var currentEvent = currentEvent || window.event;
785
+
786
+ if( veEvents[this.id][currentEvent.type].prevent ) currentEvent.preventDefault();
787
+ veCall( currentEvent, this, veEvents[this.id][currentEvent.type].funct, veEvents[this.id][currentEvent.type].args );
788
+ });
789
+ }
790
+ }
791
+ }
792
+ }
793
+ }
794
+ };
795
+ }(window));
796
+ */
797
+ </script>
798
+
799
+ <?php $isThanksTime = $this->triggerThanksTime(); ?>
800
+ <fieldset class="<?php echo $this->_getFieldsetCss(); ?>" id="<?php echo $this->parent_html_id; ?>">
801
+ <div id="veinteractive_main">
802
+
803
+ <div class="ve_header">
804
+ <div class="header_top content_grid">
805
+ <div class="left_header">
806
+ <img src="<?php echo $this->getMyImagesUrl( 'main-logo.png' ); ?>" alt="VeInteractive">
807
+ </div>
808
+ <div class="right_header">
809
+ <nav class="main_menu">
810
+ <ul>
811
+ <li class="<?php if( !$this->isAnyProductCtrlEnabled() ) echo "hidden"; ?>">
812
+ <span class="cli_quest">Are you already a client? Then...</span>
813
+ <a href="http://veplatform.veinteractive.com/Account/Login?ReturnUrl=%2f">Login</a>
814
+ </li>
815
+ </ul>
816
+ </nav>
817
+ </div>
818
+ </div>
819
+
820
+ <div class="faint-line">
821
+ <div class="main_messages content_grid">
822
+ <h2 class="thx-msg">
823
+ <?php if( $isThanksTime ) : ?>
824
+ Thank you for selecting your Ve product
825
+ <?php else: ?>
826
+ Thank you for installing VePlatform with Magento
827
+ <?php endif; ?>
828
+ </h2>
829
+ <h2 class="conf-msg">
830
+ <?php if( $isThanksTime ) : ?>
831
+ Now see below for the next steps
832
+ <?php else: ?>
833
+ Now choose from our range of applications
834
+ <?php endif; ?>
835
+ </h2>
836
+ </div>
837
+ </div>
838
+ </div>
839
+
840
+ <div class="ve_main">
841
+ <div class="company_info content_grid">
842
+ <div class="info_text">
843
+ <?php if( $isThanksTime ) : ?>
844
+ <p>
845
+ Thank you for selecting your Ve Apps.
846
+ You are one step closer to increasing customer engagement and conversions on your site.
847
+ </p>
848
+ <p>
849
+ An Account Manager will contact you within 2 working days to configure your
850
+ first campaigns or you can contact us below to get started straight away.
851
+ </p>
852
+ <p>
853
+ Creative examples of our apps available to view<a href="http://vecreative.veinteractive.com"> here</a>.
854
+ </p>
855
+ <ul class="social-info">
856
+ <li>
857
+ <span class="icons-envelope"></span>
858
+ <a href="mailto:magento@veinteractive.com">Magento@veinteractive.com</a>
859
+ </li>
860
+ <li>
861
+ <span class="icons-phone"></span>
862
+ <span class="country">US:</span>
863
+ <span>+1 857-284-7007</span>
864
+ </li>
865
+ <li>
866
+ <span class="icons-phone"></span>
867
+ <span class="country">UK:</span>
868
+ <span>+44 (0)20 337 22555</span>
869
+ </li>
870
+ </ul>
871
+ <p>Best regards,</p>
872
+ <p>Ve Interactive</p>
873
+ <?php else: ?>
874
+ <p>
875
+ By integrating the VePlatform into your Magento webstore, you now have instant access to its suite of
876
+ retargeting, remarketing and re-engagement apps designed to:
877
+ </p>
878
+ <ul class="ve-list">
879
+ <li>Reduce your website's bounce rate</li>
880
+ <li>Recover lost sales with email, display retargeting and SMS messaging</li>
881
+ <li>Increase conversion with real time onsite engagement</li>
882
+ <li>Reach new and existing prospects with digital display advertising</li>
883
+ </ul>
884
+ <p>
885
+ Activating all the Ve Apps on the VePlatform will deliver the maximum uplift in conversion. However, we also
886
+ provide the option of selecting one or multiple apps to match your ecommerce goals.
887
+ </p>
888
+ <?php endif; ?>
889
+ </div>
890
+ </div>
891
+
892
+ <div class="product_activation">
893
+ <div class="product_activation_content content_grid">
894
+ <h2 class="product_act_title">Please select from the following apps</h2>
895
+
896
+ <div id="veads-section" class="veads product">
897
+ <div class="product_logo product-logo-clickable <?php if( $this->isVeAdsCtrlEnabled() ) echo "no-clickable"; ?>" data-target="adsCb" data-value="veads"></div>
898
+ <div class="product_name">
899
+ <p>Dynamic display advertising</p>
900
+ </div>
901
+ <input type="checkbox" class="veplatform-checkbox" id="adsCb" name="product" value="veads" <?php if( $this->isVeAdsCtrlEnabled() ): ?>checked disabled <?php else: ?> checked <?php endif; ?> />
902
+ <label for="adsCb"></label>
903
+ <button id="veads_moreinfo" class="quest_btn ve-open-info" data-target="veads_info_content">
904
+ Find out more <span class="icons-pike"></span>
905
+ </button>
906
+ </div>
907
+
908
+ <div id="veassist-section" class="veassist product">
909
+ <div class="product_logo product-logo-clickable <?php if( $this->isVeAssistCtrlEnabled() ) echo "no-clickable"; ?>" data-target="assistCb" data-value="veassist"></div>
910
+ <div class="product_name">
911
+ <p>Search optimization</p>
912
+ </div>
913
+ <input type="checkbox" class="veplatform-checkbox" id="assistCb" name="product" value="veassist" <?php if( $this->isVeAssistCtrlEnabled() ): ?>checked disabled <?php else: ?> checked <?php endif; ?> />
914
+ <label for="assistCb"></label>
915
+ <button id="veassist_moreinfo" class="quest_btn ve-open-info" data-target="veassist_info_content">
916
+ Find out more <span class="icons-pike"></span>
917
+ </button>
918
+ </div>
919
+
920
+ <div id="vechat-section" class="vechat product">
921
+ <div class="product_logo product-logo-clickable <?php if( $this->isVeChatCtrlEnabled() ) echo "no-clickable"; ?>" data-target="chatCb" data-value="vechat"></div>
922
+ <div class="product_name">
923
+ <p>Increase website conversion</p>
924
+ </div>
925
+ <input type="checkbox" class="veplatform-checkbox" id="chatCb" name="product" value="vechat" <?php if( $this->isVeChatCtrlEnabled() ): ?>checked disabled <?php else: ?> checked <?php endif; ?> />
926
+ <label for="chatCb"></label>
927
+ <button id="vechat_moreinfo" class="quest_btn ve-open-info" data-target="vechat_info_content">
928
+ Find out more <span class="icons-pike"></span>
929
+ </button>
930
+ </div>
931
+
932
+ <div id="vecontact-section" class="vecontact product">
933
+ <div class="product_logo product-logo-clickable <?php if( $this->isVeContactCtrlEnabled() ) echo "no-clickable"; ?>" data-target="contactCb" data-value="vecontact"></div>
934
+ <div class="product_name">
935
+ <p>Recover lost shopping carts</p>
936
+ </div>
937
+ <input type="checkbox" class="veplatform-checkbox" id="contactCb" name="product" value="vecontact" <?php if( $this->isVeContactCtrlEnabled() ): ?>checked disabled <?php else: ?> checked <?php endif; ?> />
938
+ <label for="contactCb"></label>
939
+ <button id="vecontact_moreinfo" class="quest_btn ve-open-info" data-target="vecontact_info_content">
940
+ Find out more <span class="icons-pike"></span>
941
+ </button>
942
+ </div>
943
+
944
+ <div class="vebutton">
945
+ <input id="confirm-btn" class="confirm-btn" type="submit" value="Confirm Selection" onclick="configForm.submit()" />
946
+ </div>
947
+
948
+ <div class="product-extra-info">
949
+ <div id="vechat_info_content" class="hidden ve-info-content">
950
+ <div class="extra_content content_grid">
951
+ <h2 class="product_act_title">VeChat: Increase website conversion</h2>
952
+ <div class="product_logo"></div>
953
+ <p>
954
+ VeChat re-engages your customers at the point they abandon your website and prevents lost sales caused by price comparison shopping, site usability or distraction during the purchase process. The VeChat automated agent delivers real-time re-marketing messages. VeChat can also deliver promotional codes to specific segments based on purchasing behaviour.
955
+ </p>
956
+ <button id="vechat_closeinfo" class="quest_btn ve-close-info" data-target="vechat_info_content">Close App Details</button>
957
+ </div>
958
+ </div>
959
+ <div id="vecontact_info_content" class="hidden ve-info-content">
960
+ <div class="extra_content content_grid">
961
+ <h2 class="product_act_title">VeContact: Recover lost shopping carts</h2>
962
+ <div class="product_logo"></div>
963
+ <p>
964
+ VeContact increases your sales by delivering real-time emails to customers who abandon at the check-out, enticing them back to complete their purchase with highly targeted and personalised content. Includes promo code integration and compatible across all devices.
965
+ </p>
966
+ <button id="vecontact_closeinfo" class="quest_btn ve-close-info" data-target="vecontact_info_content">Close App Details</button>
967
+ </div>
968
+ </div>
969
+ <div id="veassist_info_content" class="hidden ve-info-content">
970
+ <div class="extra_content content_grid">
971
+ <h2 class="product_act_title">VeAssist: Search optimization</h2>
972
+ <div class="product_logo"></div>
973
+ <p>
974
+ VeAssist is an onsite product matching tool that directly tackles bounce caused by the disconnect that can exist between search and the products displayed on landing pages. Activated when a customer hits the back button to bounce, VeAssist interrogates your inventory and uses 'exact' and 'nearest' match logic to present the customer with enhanced product results, based on their original search engine query. Compatible with all search engines.
975
+ </p>
976
+ <button id="veassist_closeinfo" class="quest_btn ve-close-info" data-target="veassist_info_content">Close App Details</button>
977
+ </div>
978
+ </div>
979
+ <div id="veads_info_content" class="hidden ve-info-content">
980
+ <div class="extra_content content_grid">
981
+ <h2 class="product_act_title">VeAds: Dynamic display advertising</h2>
982
+ <div class="product_logo"></div>
983
+ <p>
984
+ VeAds harnesses the power of customer and purchasing intent data to deliver advertising campaigns that meet all advertiser KPIs. VeAds helps you target and convert new audiences, on a vast scale, across all connected devices.
985
+ A successful digital advertising campaign uses a blend of prospecting and on and off site re-engagement to ensure that marketing dollars invested generate the best possible return.
986
+ </p>
987
+ <button id="veads_closeinfo" class="quest_btn ve-close-info" data-target="veads_info_content">Close App Details</button>
988
+ </div>
989
+ </div>
990
+ </div>
991
+ </div>
992
+ </div>
993
+
994
+ <div class="legal_info content_grid">
995
+ <div class="info_text">
996
+ <p>
997
+ All Ve Apps are free to install and deploy. There are no upfront costs for set up, one-off charges or ongoing subscription costs.
998
+ We only charge on a cost per acquisition basis meaning you only pay a 8% commission when one of our apps converts a sale on your site. If they all contribute to a sale, you still only pay once.
999
+ </p>
1000
+ </div>
1001
+ </div>
1002
+ </div>
1003
+
1004
+ <div class="ve_footer">
1005
+ <div class="footer-content content_grid">
1006
+ <div class="footer-left">
1007
+ <span><a target="_blank" href="http://www.veinteractive.com">Ve Interactive</a></span>
1008
+ </div>
1009
+ <div class="footer-right">
1010
+ <span>&copy; <?php echo date("Y"); ?> All rights Reserved. Ve Interactive </span>
1011
+ </div>
1012
+ </div>
1013
+ </div>
1014
+
1015
+ </div>
1016
+
1017
+ <div id="mage-<?php echo $this->parent_html_id; ?>">
app/etc/modules/VeInteractive_VePlatform.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <VeInteractive_VePlatform>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </VeInteractive_VePlatform>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>VeInteractive_VePlatform</name>
4
+ <version>15.1.2.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/OSL-3.0">Open Source License (OSL)</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>VePlatform: Increase conversions from abandoned carts.</summary>
10
+ <description>Instantly increase your sales by adding the VePlatform&#x2019;s integrated remarketing and re-engagement apps that convert customers who abandon your site.&#xD;
11
+ &#xD;
12
+ Merchant Benefits:&#xD;
13
+ &#xD;
14
+ By integrating with the VePlatform you will have instant access to its suite of conversion enhancing remarketing and re-engagement apps designed to:&#xD;
15
+ - Improve your bounce rate.&#xD;
16
+ - Increase customer engagement.&#xD;
17
+ - Increase conversions by reducing abandonment.&#xD;
18
+ - Generate higher ROI from your campaigns.&#xD;
19
+ - Deliver incremental revenue.</description>
20
+ <notes>This release only support English at Magento Admin Panel.</notes>
21
+ <authors><author><name>VeInteractive</name><user>VeInteractive</user><email>magento@veinteractive.com</email></author></authors>
22
+ <date>2015-01-28</date>
23
+ <time>14:08:58</time>
24
+ <contents><target name="magecommunity"><dir name="VeInteractive"><dir name="VePlatform"><dir name="Block"><file name="ConfigFieldset.php" hash="572a650624cf2ab215e179b8376f340c"/><file name="Template.php" hash="8e3d2b912f786b5b29ffabdc3d838a60"/><file name="Vepixel.php" hash="63bbbba36389c22b6bf90caa697a73da"/><file name="Vetag.php" hash="aff8bf067fc9b63563db3fe3eeb17419"/></dir><dir name="Helper"><file name="Data.php" hash="abc7301b74c4f572f39c910feb8724a9"/></dir><dir name="Model"><file name="Products.php" hash="8698f312bc56e6cff245728a31380adc"/></dir><dir name="Observer"><file name="AdminUserLoadAfter.php" hash="964e6c5bbbffc1c947a98f2985248d00"/><file name="Layout.php" hash="2cee6a40331543feedbe6c7f8a8b1c92"/><file name="SaveSettings.php" hash="2413560ada3a5f17449bafebef79acd8"/><file name="ThanksPage.php" hash="e347e9eaee6c31f1ba0f8ba0b819bc19"/></dir><dir name="etc"><file name="adminhtml.xml" hash="23ea2e499eb2e9e3b92fb87999d06331"/><file name="config.xml" hash="9f163f302ee696b88a9fe98c48468c4f"/><file name="system.xml" hash="5bb9f7ce67bebdfa9243c8bae2c2d1ed"/></dir><dir name="templates"><file name="vepixel.phtml" hash="e972ba05a7fc6267ae3c0e34a8a5274c"/><file name="vetag.phtml" hash="f31a9c96f62bad694b40c621bfa3a950"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="VeInteractive_VePlatform.xml" hash="fbe1d8209404d5b7d916a380a08b5f3a"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="veplatform"><dir name="default"><dir name="template"><dir name="systemconfig"><dir name="veplatform_options_settings"><dir name="formfieldset"><file name="footer.phtml" hash="ab72eeaf4a01bec6e5143aee9da9f655"/><file name="header.phtml" hash="038c2e479ea7be12535cc3182e81650a"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="veplatform"><dir name="default"><dir name="fonts"><file name="DINComp-Bold.ttf" hash="29a99a27fa48933c02cc47676e19ad1a"/><file name="DINComp-Light.ttf" hash="82bda6ffd6917610e787bdeaeddd811c"/><file name="DINComp-Medium.ttf" hash="03c28b69f3c99ca8fd4c011eb33cc22b"/><file name="DINComp.ttf" hash="3f1179a02f4ce1c3da780cae8fc8149d"/><file name="DINWeb-Bold.eot" hash="5f30c5806b6b26bcc46448a5ddca9b67"/><file name="DINWeb-Bold.woff" hash="a407b2546aeedeade21e31296945085e"/><file name="DINWeb-Light.eot" hash="03b09f3707b0faa147d0ef1e6e710904"/><file name="DINWeb-Light.woff" hash="6e72d4655039f1c33e2530f2340e0657"/><file name="DINWeb-Medium.eot" hash="c178e7c174e95ff9c95361395b9d325b"/><file name="DINWeb-Medium.woff" hash="08cf2c3f11f091aac767e788332bd1f4"/><file name="DINWeb.eot" hash="8daf4116fe83c7fa36454950832563e0"/><file name="DINWeb.woff" hash="f8df07a0857003759a5798eecfbd9324"/></dir><dir name="images"><file name="account-manager-logo.png" hash="856fd84bfca6dce479cb97602ac8573c"/><file name="apps-logo.png" hash="9007fd834d71f69a5d444189679f6bb4"/><file name="creatives-logo.png" hash="758e390ef9f209610916c514a15d4432"/><file name="header_banner.jpg" hash="cded95d37c171c69d4a384f092cf9a0f"/><dir name="icons"><file name="envelope.png" hash="49484f1364fd34e900f8edffaffa4100"/><file name="phone.png" hash="deb42024869831e863ece1a4ab8e1786"/><file name="pike.png" hash="0bba667c071b9bfbb51ceae09d4c9f3d"/></dir><file name="icons-sdb320c34e8.png" hash="8bb70bdb0631bbc5196b60f20c82350e"/><file name="icons.png" hash="8bb70bdb0631bbc5196b60f20c82350e"/><file name="main-logo.png" hash="9d326ad238477552f68833976eb75811"/><file name="product_selected.png" hash="bd1b368cc613df4808565d41dbb3b480"/><file name="radio_selected.png" hash="b257ac6f184cff8903285f9d6d9738d3"/><file name="radio_unselected.png" hash="bf02541872bfa223f2aeeb55b5cbd557"/><file name="ve-check.png" hash="c0a278358d23463819608a59f5657a5f"/><file name="veads-logo-big.png" hash="e7bcebb044ec61c555830aef25dbac9b"/><file name="veads-logo-min.png" hash="792ba1356919f972b42857175ee1079d"/><file name="veads-logo.png" hash="55f7a097f013a6dd38a23286d5782f3f"/><file name="veassist-logo-big.png" hash="5d957fc9674f2151ad2be6b48c5937a6"/><file name="veassist-logo-min.png" hash="3c67b79d6e74830f08344cd91889efca"/><file name="veassist-logo.png" hash="39d4a4f518f901211034ac0ab5509bcc"/><file name="vechat-logo-big.png" hash="8dc2a6d299f18480e979ef2b89a3182a"/><file name="vechat-logo-min.png" hash="476449006c5ca3f29302150ae24ccbc4"/><file name="vechat-logo.png" hash="57b5ff82ffc152379353207450b82c3f"/><file name="vecontact-logo-big.png" hash="0357256f6b6d431fd7d362194e05f573"/><file name="vecontact-logo-min.png" hash="6778f334408c71f96f76263657eb2972"/><file name="vecontact-logo.png" hash="ce76319d0fdce22b7170a261f30ca473"/></dir></dir></dir></dir></target></contents>
25
+ <compatible/>
26
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
27
+ </package>
skin/adminhtml/veplatform/default/fonts/DINComp-Bold.ttf ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINComp-Light.ttf ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINComp-Medium.ttf ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINComp.ttf ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Bold.eot ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Bold.woff ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Light.eot ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Light.woff ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Medium.eot ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb-Medium.woff ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb.eot ADDED
Binary file
skin/adminhtml/veplatform/default/fonts/DINWeb.woff ADDED
Binary file
skin/adminhtml/veplatform/default/images/account-manager-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/apps-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/creatives-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/header_banner.jpg ADDED
Binary file
skin/adminhtml/veplatform/default/images/icons-sdb320c34e8.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/icons.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/icons/envelope.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/icons/phone.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/icons/pike.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/main-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/product_selected.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/radio_selected.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/radio_unselected.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/ve-check.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veads-logo-big.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veads-logo-min.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veads-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veassist-logo-big.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veassist-logo-min.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/veassist-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vechat-logo-big.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vechat-logo-min.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vechat-logo.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vecontact-logo-big.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vecontact-logo-min.png ADDED
Binary file
skin/adminhtml/veplatform/default/images/vecontact-logo.png ADDED
Binary file