Productiveminds_Contactus - Version 0.1.6

Version Notes

The extension opens up the standard Magento contact us page as an overlay, which gives your customers the ability to leave a message without browsing away from their current page.

Download this release

Release Info

Developer Productiveminds
Extension Productiveminds_Contactus
Version 0.1.6
Comparing to
See all releases


Version 0.1.6

Files changed (41) hide show
  1. app/code/community/Productiveminds/Core/.DS_Store +0 -0
  2. app/code/community/Productiveminds/Core/Block/.DS_Store +0 -0
  3. app/code/community/Productiveminds/Core/Block/Adminhtml/Renderer/Attachedfiles.php +10 -0
  4. app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit.php +21 -0
  5. app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Form.php +17 -0
  6. app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tab/Form.php +69 -0
  7. app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tab/Options.php +9 -0
  8. app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tabs.php +31 -0
  9. app/code/community/Productiveminds/Core/Block/Adminhtml/System/Config/Form/Fieldset/Contactus.php +13 -0
  10. app/code/community/Productiveminds/Core/Block/Adminhtml/System/Config/Form/Fieldset/Promindsextensions/Item.php +25 -0
  11. app/code/community/Productiveminds/Core/Helper/Countrycat.php +371 -0
  12. app/code/community/Productiveminds/Core/Helper/Data.php +158 -0
  13. app/code/community/Productiveminds/Core/Model/Email.php +39 -0
  14. app/code/community/Productiveminds/Core/Model/System/Config/Source/Typeofissue.php +33 -0
  15. app/code/community/Productiveminds/Core/controllers/Adminhtml/IndexController.php +22 -0
  16. app/code/community/Productiveminds/Core/controllers/Adminhtml/SupportController.php +54 -0
  17. app/code/community/Productiveminds/Core/etc/adminhtml.xml +67 -0
  18. app/code/community/Productiveminds/Core/etc/config.xml +54 -0
  19. app/code/community/Productiveminds/Core/etc/system.xml +42 -0
  20. app/code/local/Productiveminds/Contactus/Block/Activate.php +49 -0
  21. app/code/local/Productiveminds/Contactus/Helper/Data.php +48 -0
  22. app/code/local/Productiveminds/Contactus/controllers/IndexController.php +157 -0
  23. app/code/local/Productiveminds/Contactus/etc/adminhtml.xml +39 -0
  24. app/code/local/Productiveminds/Contactus/etc/config.xml +65 -0
  25. app/code/local/Productiveminds/Contactus/etc/system.xml +117 -0
  26. app/design/adminhtml/default/default/layout/productiveminds/core.xml +16 -0
  27. app/design/frontend/base/default/layout/productiveminds/contactus.xml +55 -0
  28. app/design/frontend/base/default/template/productiveminds/contactus/contactus-live.phtml +71 -0
  29. app/design/frontend/base/default/template/productiveminds/contactus/contactus.phtml +72 -0
  30. app/design/frontend/base/default/template/productiveminds/contactus/form.phtml +99 -0
  31. app/design/frontend/base/default/template/productiveminds/contactus/link.phtml +41 -0
  32. app/design/frontend/base/default/template/productiveminds/contactus/overlay.phtml +46 -0
  33. app/etc/modules/Productiveminds_Contactus.xml +9 -0
  34. app/etc/modules/Productiveminds_Core.xml +9 -0
  35. app/locale/en_US/template/email/productiveminds/contactus.html +16 -0
  36. package.xml +18 -0
  37. skin/frontend/base/default/productiveminds/contactus/css/contactus.css +318 -0
  38. skin/frontend/base/default/productiveminds/contactus/css/overlay.css +51 -0
  39. skin/frontend/base/default/productiveminds/contactus/images/btn_bg.gif +0 -0
  40. skin/frontend/base/default/productiveminds/contactus/images/content_bg.gif +0 -0
  41. skin/frontend/base/default/productiveminds/contactus/images/window_close.png +0 -0
app/code/community/Productiveminds/Core/.DS_Store ADDED
Binary file
app/code/community/Productiveminds/Core/Block/.DS_Store ADDED
Binary file
app/code/community/Productiveminds/Core/Block/Adminhtml/Renderer/Attachedfiles.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Renderer_Attachedfiles extends Varien_Data_Form_Element_File {
4
+ public function getElementHtml()
5
+ {
6
+ $html = parent::getElementHtml();
7
+ $newntml = substr_replace($html, 'multiple="true"', -2, 0);
8
+ return $newntml;
9
+ }
10
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Support_Edit extends Mage_Adminhtml_Block_Widget_Form_Container {
4
+
5
+ public function __construct() {
6
+ parent::__construct ();
7
+
8
+ $this->_objectId = 'id';
9
+ $this->_controller = 'adminhtml_support';
10
+ $this->_blockGroup = 'productivemindscore';
11
+ $this->_removeButton ( 'back' );
12
+ $this->_removeButton ( 'reset' );
13
+ $this->_removeButton ( 'save' );
14
+ $this->_headerText = Mage::helper ('productivemindscore')->__ ('Productiveminds Support');
15
+ }
16
+
17
+ public function getHeaderText() {
18
+ return Mage::helper('productivemindscore')->__('Productiveminds Support - Creating a Ticket');
19
+ }
20
+
21
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Form.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Support_Edit_Form extends Mage_Adminhtml_Block_Widget_Form {
4
+
5
+ protected function _prepareForm() {
6
+ $form = new Varien_Data_Form(array(
7
+ 'id' => 'edit_form',
8
+ 'action' => $this->getUrl('*/*/save'),
9
+ 'method' => 'post',
10
+ 'enctype' => "multipart/form-data",
11
+ )
12
+ );
13
+ $form->setUseContainer(true);
14
+ $this->setForm($form);
15
+ return parent::_prepareForm();
16
+ }
17
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tab/Form.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Support_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form {
4
+
5
+ protected function _prepareForm() {
6
+
7
+ $adminId = Mage::getSingleton ( 'admin/session' )->getUser ()->getId ();
8
+ $user = Mage::getModel ( 'admin/user' )->load ( $adminId );
9
+
10
+ $form = new Varien_Data_Form ();
11
+ $this->setForm ( $form );
12
+
13
+ $helper = Mage::helper ( 'productivemindscore' );
14
+
15
+ $fieldset = $form->addFieldset ( 'productivemindscore_form', array (
16
+ 'legend' => $helper->__ ( 'Support Tickets Details' ),
17
+ 'class' => 'fieldset-wide'
18
+ ) );
19
+
20
+ $fieldset->addField ( 'typeofissue', 'select', array (
21
+ 'name' => 'typeofissue',
22
+ 'label' => $helper->__ ( 'Type of issue' ),
23
+ 'values' => Mage::getModel ( 'productivemindscore/system_config_source_typeofissue' )->toOptionArray (),
24
+ 'required' => true,
25
+ 'value' => false
26
+ ) );
27
+ $fieldset->addField ( 'message', 'textarea', array (
28
+ 'name' => 'message',
29
+ 'label' => $helper->__ ( 'Issue Details' ),
30
+ 'required' => true,
31
+ 'note' => Mage::helper('productivemindscore')->__('Please provide as much details as possible'),
32
+ ) );
33
+
34
+ $fieldset->addType ( 'attachedfiles', Mage::getConfig ()->getBlockClassName ('productivemindscore/adminhtml_renderer_attachedfiles') );
35
+
36
+ $fieldset->addField ( 'attachments', 'attachedfiles', array (
37
+ 'name' => 'attachments[]',
38
+ 'multiple' => true,
39
+ 'label' => Mage::helper ( 'adminhtml' )->__ ( 'Attachment files' )
40
+ ) );
41
+
42
+ $fieldset->addField ( 'useremail', 'text', array (
43
+ 'name' => 'useremail',
44
+ 'label' => Mage::helper ( 'adminhtml' )->__ ( 'Your e-mail' ),
45
+ 'value' => $user['email'],
46
+ 'required' => true
47
+ ) );
48
+
49
+ $fieldset->addField ( 'username', 'text', array (
50
+ 'name' => 'username',
51
+ 'label' => Mage::helper ( 'adminhtml' )->__ ( 'Your name' ),
52
+ 'value' => "{$user['firstname']} {$user['lastname']}",
53
+ 'required' => true
54
+ ) );
55
+
56
+ $fieldset->addField ( 'systeminfo', 'hidden', array (
57
+ 'name' => 'systeminfo',
58
+ 'value' => $helper->systemInfo ()
59
+ ) );
60
+
61
+ $fieldset->addField ( 'save', 'submit', array (
62
+ 'name' => 'save',
63
+ 'class' => 'save',
64
+ 'value' => $helper->__ ( 'Submit Issue' )
65
+ ) );
66
+
67
+ return parent::_prepareForm ();
68
+ }
69
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tab/Options.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Support_Edit_Tab_Options extends Mage_Adminhtml_Block_Widget_Form {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ return parent::_prepareForm();
8
+ }
9
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/Support/Edit/Tabs.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_Support_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs {
4
+
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setId('productivemindscore_tabs');
9
+ $this->setDestElementId('edit_form');
10
+ $this->setTitle(Mage::helper('productivemindscore')->__('Productiveminds Support'));
11
+ }
12
+
13
+ protected function _beforeToHtml()
14
+ {
15
+ $this->addTab('ticket_section', array(
16
+ 'label' => Mage::helper('productivemindscore')->__('Create a support ticket'),
17
+ 'title' => Mage::helper('productivemindscore')->__('Create a support ticket'),
18
+ 'content' => $this->getLayout()->createBlock('productivemindscore/adminhtml_support_edit_tab_form')->toHtml(),
19
+ ));
20
+
21
+ /* TODO
22
+ $this->addTab('productivemindscore_section', array(
23
+ 'label' => Mage::helper('productivemindscore')->__('CONTACT INFORMATION'),
24
+ 'title' => Mage::helper('productivemindscore')->__('CONTACT INFORMATION'),
25
+ 'content' => $this->getLayout()->createBlock('productivemindscore/adminhtml_support_edit_tab_Options')->toHtml(),
26
+ ));
27
+ */
28
+
29
+ return parent::_beforeToHtml();
30
+ }
31
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/System/Config/Form/Fieldset/Contactus.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_System_Config_Form_Fieldset_Contactus
4
+ extends Mage_Adminhtml_Block_System_Config_Form_Fieldset
5
+ {
6
+ public function render(Varien_Data_Form_Element_Abstract $element)
7
+ {
8
+ $html = $this->_getHeaderHtml($element);
9
+ $html .= Mage::helper('productivemindscore')->__(Mage::getStoreConfig('productivemindscore_sectns/contactus/text'));
10
+ $html .= $this->_getFooterHtml($element);
11
+ return $html;
12
+ }
13
+ }
app/code/community/Productiveminds/Core/Block/Adminhtml/System/Config/Form/Fieldset/Promindsextensions/Item.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Block_Adminhtml_System_Config_Form_Fieldset_Promindsextensions_Item extends Mage_Adminhtml_Block_System_Config_Form_Fieldset {
4
+
5
+ public function render(Varien_Data_Form_Element_Abstract $element)
6
+ {
7
+ $html = $this->_getHeaderHtml($element);
8
+ $modules = Mage::getConfig()->getNode('modules')->children();
9
+ $linkTitle = Mage::helper('productivemindscore')->__('Visit Extension');
10
+ foreach ($modules as $moduleName => $values) {
11
+ if (0 !== strpos($moduleName, 'Productiveminds_')) {
12
+ continue;
13
+ }
14
+
15
+ $field = $element->addField($moduleName, 'label', array(
16
+ 'label' => $moduleName,
17
+ 'value' => (string) $values->version
18
+ ));
19
+ $html .= $field->toHtml();
20
+ }
21
+ $html .= $this->_getFooterHtml($element);
22
+
23
+ return $html;
24
+ }
25
+ }
app/code/community/Productiveminds/Core/Helper/Countrycat.php ADDED
@@ -0,0 +1,371 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * A Magento module by ProductiveMinds
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This code is the work and copyright of Productive Minds Ltd, A UK registered company.
8
+ * The copyright owner prohibit any fom of distribution of this code
9
+ *
10
+ * DISCLAIMER
11
+ *
12
+ * You are strongly advised to backup ALL your server files and database before installing and/or configuring
13
+ * this Magento module. ProductiveMinds will not take any form of responsibility for any adverse effects that
14
+ * may be cause directly or indirectly by using this software. As a usual practice with Software deployment,
15
+ * the copyright owner recommended that you first install this software on a test server verify its appropriateness
16
+ * before finally deploying it to a live server.
17
+ *
18
+ * @category Productiveminds
19
+ * @package Productiveminds_Sitesecurity
20
+ * @copyright Copyright (c) 2010 - 2015 Productive Minds Ltd (http://www.productiveminds.com)
21
+ * @license http://www.productiveminds.com/license/license.txt
22
+ * @author ProductiveMinds <info@productiveminds.com>
23
+ */
24
+
25
+ class Productiveminds_Core_Helper_Countrycat extends Mage_Core_Helper_Abstract
26
+ {
27
+
28
+ const CONTINENT_CODE_EUROPE = 'europe';
29
+ const CONTINENT_CODE_N_AMERICA = 'nAmerica';
30
+ const CONTINENT_CODE_AFRICA = 'africa';
31
+ const CONTINENT_CODE_S_AMERICA = 'sAmerica';
32
+ const CONTINENT_CODE_ANTARCTICA = 'antarctica';
33
+ const CONTINENT_CODE_ASIA = 'asia';
34
+ const CONTINENT_CODE_OCEANIA = 'oceania';
35
+ const CONTINENT_CODE_OTHER = 'other';
36
+
37
+
38
+ /**
39
+ * Renders user country
40
+ *
41
+ * @param string $coreRoute
42
+ */
43
+ public function getCountryContinent($countryCode = 1, $model)
44
+ {
45
+ $europe = self::isEurope();
46
+ $northAmerica = self::isNorthAmerica();
47
+ $africa = self::isAfrica();
48
+ $southAmerica = self::isSouthAmerica();
49
+ $asia = self::isAsia();
50
+ $antarctica = self::isAntarctica();
51
+ $oceania = self::isOceania();
52
+
53
+ if(in_array($countryCode, $europe)) {
54
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_EUROPE, 'code');
55
+ return $catObj->getCatId();
56
+ } else if(in_array($countryCode, $africa)) {
57
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_AFRICA, 'code');
58
+ return $catObj->getCatId();
59
+ } else if(in_array($countryCode, $northAmerica)) {
60
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_N_AMERICA, 'code');
61
+ return $catObj->getCatId();
62
+ } else if(in_array($countryCode, $southAmerica)) {
63
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_S_AMERICA, 'code');
64
+ return $catObj->getCatId();
65
+ } else if(in_array($countryCode, $asia)) {
66
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_ASIA, 'code');
67
+ return $catObj->getCatId();
68
+ } else if(in_array($countryCode, $antarctica)) {
69
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_ANTARCTICA, 'code');
70
+ return $catObj->getCatId();
71
+ } else if(in_array($countryCode, $oceania)) {
72
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_OCEANIA, 'code');
73
+ return $catObj->getCatId();
74
+ } else {
75
+ // Assign country to Other, if not found
76
+ $catObj = $model->load(Productiveminds_Core_Helper_Countrycat::CONTINENT_CODE_OTHER, 'code');
77
+ return $catObj->getCatId();
78
+ }
79
+ }
80
+
81
+ public static function isEurope() {
82
+ return
83
+ array(
84
+ 'AL',// Albania
85
+ 'AD',// Andorra
86
+ 'AT',// Austria
87
+ 'BE',// Belgium
88
+ 'BA',// Bosnia and Herzegovina
89
+ 'BG',// Bulgaria
90
+ 'BY',// Belarus
91
+ 'HR',// Croatia
92
+ 'CY',// Republic of Cyprus
93
+ 'CZ',// Czech Republic
94
+ 'DK',// Denmark
95
+ 'EE',// Estonia
96
+ 'FO',// Faroe Islands
97
+ 'FI',// Finland
98
+ 'FR',// France
99
+ 'DE',// Germany
100
+ 'GI',// Gibraltar
101
+ 'GR',// Greece
102
+ 'GG',// Guernsey
103
+ 'HU',// Hungary
104
+ 'IS',// Iceland
105
+ 'IE',// Ireland
106
+ 'IM',// Isle of Man
107
+ 'IT',// Italy
108
+ 'JE',// Jersey
109
+ 'LV',// Latvia
110
+ 'LI',// Liechtenstein
111
+ 'LT',// Lithuania
112
+ 'LU',// Luxembourg
113
+ 'MK',// Macedonia
114
+ 'MT',// Malta
115
+ 'MD',// moldova
116
+ 'MC',// Monaco
117
+ 'ME',// Montenegro
118
+ 'NO',// Norway
119
+ 'NL',// Netherlands
120
+ 'AN',// Netherlands Antilles
121
+ 'PL',// Poland
122
+ 'PT',// Portugal
123
+ 'RO',// Romania
124
+ 'RU',// Russia
125
+ 'SM',// San Marino
126
+ 'RS',// Serbia
127
+ 'SK',// Slovak Republic
128
+ 'SI',// Slovenia
129
+ 'ES',// Spain
130
+ 'SJ',// Svalbard and Jan Mayen
131
+ 'SE',// Sweden
132
+ 'CH',// Switzerland
133
+ 'UA',// Ukraine
134
+ 'GB',// Include UK
135
+ 'VA',// Vatican City
136
+ 'AX',// �land Islands
137
+ );
138
+ }
139
+
140
+ public static function isNorthAmerica() {
141
+ return
142
+ array(
143
+ 'AI',// Anguilla
144
+ 'AG',// Antigua and Barbuda
145
+ 'AW',// Aruba
146
+ 'BS',// Bahamas
147
+ 'BB',// Barbados
148
+ 'BZ',// Belize
149
+ 'BM',// Bermuda
150
+ 'VG',// British Virgin Islands
151
+ 'CA',// Canada
152
+ 'KY',// Cayman Islands
153
+ 'CR',// Costa Rica
154
+ 'CU',// Cuba
155
+ 'DM',// Dominica
156
+ 'DO',// Dominican Republic
157
+ 'EH',// Western Sahara
158
+ 'SV',// El Salvador
159
+ 'GL',// Greenland
160
+ 'GD',// Grenada
161
+ 'GP',// Guadeloupe
162
+ 'GT',// Guatemala
163
+ 'HT',// Haiti
164
+ 'HN',// Honduras
165
+ 'JM',// Jamaica
166
+ 'MQ',// Martinique
167
+ 'MX',// Mexico
168
+ 'MS',// Montserrat
169
+ 'NI',// Nicaragua
170
+ 'PA',// Panama
171
+ 'PR',// Puerto Rico
172
+ 'BL',// Saint Barth�lemy
173
+ 'KN',// Saint Kitts and Nevis
174
+ 'LC',// Saint Lucia
175
+ 'MF',// Saint Martin
176
+ 'PM',// Saint Pierre and Miquelon
177
+ 'VC',// Saint Vincent and the Grenadines
178
+ 'TT',// Trinidad and Tobago
179
+ 'TC',// Turks and Caicos Islands
180
+ 'UM',// U.S. Minor Outlying Islands
181
+ 'VI',// U.S. Virgin Islands
182
+ 'US',// United States
183
+ );
184
+ }
185
+
186
+ public static function isAfrica() {
187
+ return
188
+ array(
189
+ 'DZ',// Algeria
190
+ 'AO',// Angola
191
+ 'BJ',// Benin
192
+ 'BW',// Botswana
193
+ 'BF',// Burkina Faso
194
+ 'BI',// Burundi
195
+ 'CM',// Cameroon
196
+ 'CV',// Cape Verde
197
+ 'CF',// Central African Republic
198
+ 'TD',// Chad
199
+ 'KM',// Comoros
200
+ 'CG',// Congo - Brazzaville
201
+ 'CD',// Congo - Kinshasa
202
+ 'CI',// C�te d�Ivoire
203
+ 'DJ',// Djibouti
204
+ 'EG',// Egypt
205
+ 'GQ',// Equatorial Guinea
206
+ 'ER',// Eritrea
207
+ 'ET',// Ethiopia
208
+ 'GA',// Gabon
209
+ 'GM',// Gambia
210
+ 'GH',// Ghana
211
+ 'GN',// Guinea
212
+ 'GW',// Guinea-Bissau
213
+ 'KE',// Kenya
214
+ 'LS',// Lesotho
215
+ 'LR',// Liberia
216
+ 'LY',// Libya
217
+ 'MG',// Madagascar
218
+ 'MW',// Malawi
219
+ 'ML',// Mali
220
+ 'MR',// Mauritania
221
+ 'MU',// Mauritius
222
+ 'YT',// Mayotte
223
+ 'MA',// Morocco
224
+ 'MZ',// Mozambique
225
+ 'NA',// Namibia
226
+ 'NE',// Niger
227
+ 'NG',// Nigeria
228
+ 'RW',// Rwanda
229
+ 'RE',// R�union
230
+ 'SH',// Saint Helena
231
+ 'ST',// S�o Tom� and Pr�ncipe
232
+ 'SN',// Senegal
233
+ 'SC',// Seychelles
234
+ 'SL',// Sierra Leone
235
+ 'SO',// Somalia
236
+ 'ZA',// South Africa
237
+ 'SD',// Sudan
238
+ 'SZ',// Swaziland
239
+ 'TZ',// Tanzania
240
+ 'TG',// Togo
241
+ 'TN',// Tunisia
242
+ 'UG',// Uganda
243
+ 'ZM',// Zambia
244
+ 'ZW',// Zimbabwe
245
+ );
246
+ }
247
+
248
+ public static function isSouthAmerica() {
249
+ return
250
+ array(
251
+ 'AR',// Argentina
252
+ 'BO',// Bolivia
253
+ 'BR',// Brazil
254
+ 'CL',// Chile
255
+ 'CO',// Colombia
256
+ 'EC',// Ecuador
257
+ 'FK',// Falkland Islands
258
+ 'GF',// French Guiana
259
+ 'GY',// Guyana
260
+ 'PY',// Paraguay
261
+ 'PE',// Peru
262
+ 'GS',// South Georgia and the South Sandwich Islands
263
+ 'SR',// Suriname
264
+ 'UY',// Uruguay
265
+ 'VE',// Venezuela
266
+ );
267
+ }
268
+
269
+ public static function isAsia() {
270
+ return
271
+ array(
272
+ 'AF',// Afghanistan
273
+ 'AM',// Armenia
274
+ 'AZ',// Azerbaijan
275
+ 'BH',// Bahrain
276
+ 'BD',// Bangladesh
277
+ 'BT',// Bhutan
278
+ 'IO',// British Indian Ocean Territory
279
+ 'BN',// Brunei
280
+ 'KH',// Cambodia
281
+ 'CN',// China
282
+ 'CX',// Christmas Island
283
+ 'CC',// Cocos [Keeling] Islands
284
+ 'CY',// Cyprus
285
+ 'TL',// Timor-Leste
286
+ 'GE',// Georgia
287
+ 'HK',// Hong Kong SAR China
288
+ 'IN',// India
289
+ 'ID',// Indonesia
290
+ 'IR',// Iran
291
+ 'IQ',// Iraq
292
+ 'IL',// Israel
293
+ 'JP',// Japan
294
+ 'JO',// Jordan
295
+ 'KZ',// Kazakhstan
296
+ 'KW',// Kuwait
297
+ 'KG',// Kyrgyzstan
298
+ 'LA',// Laos
299
+ 'LB',// Lebanon
300
+ 'MO',// Macau SAR China
301
+ 'MY',// Malaysia
302
+ 'MV',// Maldives
303
+ 'MN',// Mongolia
304
+ 'MM',// Myanmar [Burma]
305
+ 'NP',// Nepal
306
+ 'KP',// North Korea
307
+ 'OM',// Oman
308
+ 'PK',// Pakistan
309
+ 'PS',// Palestinian Territories
310
+ 'PH',// Philippines
311
+ 'QA',// Qatar
312
+ 'SA',// Saudi Arabia
313
+ 'SG',// Singapore
314
+ 'KR',// South Korea
315
+ 'LK',// Sri Lanka
316
+ 'SY',// Syria
317
+ 'TW',// Taiwan
318
+ 'TJ',// Tajikistan
319
+ 'TH',// Thailand
320
+ 'TR',// Turkey
321
+ 'TM',// Turkmenistan
322
+ 'AE',// United Arab Emirates
323
+ 'UZ',// Uzbekistan
324
+ 'VN',// Vietnam
325
+ 'YE',// Yemen
326
+ );
327
+ }
328
+
329
+ public static function isAntarctica() {
330
+ return
331
+ array(
332
+ 'AQ',// Antarctica
333
+ 'BV',// Bouvet Island
334
+ 'HM',// Heard Island and McDonald Islands
335
+ 'TF',// French Southern Territories
336
+ );
337
+ }
338
+
339
+ public static function isOceania() {
340
+ return
341
+ array(
342
+ 'AS',// American Samoa
343
+ 'AU',// Australia
344
+ 'CK',// Cook Islands
345
+ 'FJ',// Fiji
346
+ 'PF',// French Polynesia
347
+ 'GU',// Guam
348
+ 'KI',// Kiribati
349
+ 'MH',// Marshall Islands
350
+ 'FM',// Micronesia
351
+ 'NR',// Nauru
352
+ 'NC',// New Caledonia
353
+ 'NZ',// New Zealand
354
+ 'NU',// Niue
355
+ 'NF',// Norfolk Island
356
+ 'MP',// Northern Mariana Islands
357
+ 'PW',// Palau
358
+ 'PG',// Papua New Guinea
359
+ 'PN',// Pitcairn Islands
360
+ 'WS',// Samoa
361
+ 'SB',// Solomon Islands
362
+ 'TK',// Tokelau
363
+ 'TO',// Tonga
364
+ 'TV',// Tuvalu
365
+ 'VU',// Vanuatu
366
+ 'WF',// Wallis and Futuna
367
+ );
368
+ }
369
+
370
+ }
371
+ ?>
app/code/community/Productiveminds/Core/Helper/Data.php ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * A Magento module by ProductiveMinds
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This code is the work and copyright of Productive Minds Ltd, A UK registered company.
9
+ * The copyright owner prohibit any fom of distribution of this code
10
+ *
11
+ * DISCLAIMER
12
+ *
13
+ * You are strongly advised to backup ALL your server files and database before installing and/or configuring
14
+ * this Magento module. ProductiveMinds will not take any form of responsibility for any adverse effects that
15
+ * may be cause directly or indirectly by using this software. As a usual practice with Software deployment,
16
+ * the copyright owner recommended that you first install this software on a test server verify its appropriateness
17
+ * before finally deploying it to a live server.
18
+ *
19
+ * @category Productiveminds
20
+ * @package Productiveminds_Sitesecurity
21
+ * @copyright Copyright (c) 2010 - 2015 Productive Minds Ltd (http://www.productiveminds.com)
22
+ * @license http://www.productiveminds.com/license/license.txt
23
+ * @author ProductiveMinds <info@productiveminds.com>
24
+ */
25
+
26
+
27
+ class Productiveminds_Core_Helper_Data extends Mage_Core_Helper_Abstract {
28
+
29
+ private $systemInfo = '<table rules="all" border=1 frame="void">';
30
+
31
+ public function isModuleActive($moduleName = null,$enabledLocation=null)
32
+ {
33
+
34
+ if ($moduleName === null) {
35
+ $moduleName = $this->_getModuleName();
36
+ }
37
+
38
+ if (Mage::getConfig()->getNode('modules/'.$moduleName) &&
39
+ Mage::getStoreConfig('productivemindscore_sectns/productivemindscore_grps/enabled', Mage::app()->getStore())
40
+ ) {
41
+ return true;
42
+ } else {
43
+ return false;
44
+ }
45
+ return false;
46
+ }
47
+
48
+ // return long from a readable IP address
49
+ public function getIp2long($ip='') {
50
+ // first check IP address is valid
51
+ if(filter_var($ip, FILTER_VALIDATE_IP)) {
52
+ $ip = trim($ip);
53
+ return ip2long($ip);
54
+ }
55
+ return 'invalid IP address';
56
+ }
57
+
58
+ // return a human readable IP address from long
59
+ public function getLong2ip($ip=0) {
60
+ return long2ip(trim($ip));
61
+ }
62
+
63
+ public function systemInfo()
64
+ {
65
+ $this->mageConfig();
66
+ $this->systemConfigs();
67
+ $this->phpExts();
68
+ $this->otherPromindsExts();
69
+
70
+ return $this->getCollatedInfo();
71
+ }
72
+
73
+ private function mageConfig() {
74
+ $this->addTableRow("Magento Details");
75
+
76
+ $this->addTableRow('Version', self::getInstalledMagentoVersion());
77
+
78
+ $compilerConfig = '../includes/config.php';
79
+ if (file_exists($compilerConfig)) {
80
+ include $compilerConfig;
81
+ }
82
+
83
+ $this->addTableRow('Compilation', defined('COMPILER_INCLUDE_PATH') ? 'Enabled' : 'Disabled');
84
+
85
+ $this->addTableRow('Domain', $_SERVER ["HTTP_HOST"]);
86
+ }
87
+
88
+ private function otherPromindsExts() {
89
+ $this->addTableRow("Other ProductiveMinds Extensions");
90
+
91
+ $modules = ( array )Mage::getConfig()->getNode('modules')->children();
92
+ foreach ($modules as $key => $value) {
93
+ if (strpos($key, 'Productiveminds_', 0) !== false) {
94
+ $this->addTableRow("{$key} (v {$value->version})", "{$value->active} ({$value->codePool})");
95
+ }
96
+ }
97
+ }
98
+
99
+ private function systemConfigs() {
100
+ $this->addTableRow("Server and PhP Configs");
101
+ $this->addTableRow('PHP version', phpversion());
102
+ $ini = array(
103
+ 'safe_mode',
104
+ 'memory_limit',
105
+ 'realpath_cache_ttl',
106
+ 'allow_url_fopen'
107
+ );
108
+ foreach ($ini as $i) {
109
+ $val = ini_get($i);
110
+ $val = empty ($val) ? 'off' : $val;
111
+ $this->addTableRow($i, $val);
112
+ }
113
+ }
114
+
115
+ private function phpExts() {
116
+ $this->addTableRow("Magento Required Extensions");
117
+ $extensions = array(
118
+ 'curl',
119
+ 'dom',
120
+ 'gd',
121
+ 'hash',
122
+ 'iconv',
123
+ 'mcrypt',
124
+ 'pcre',
125
+ 'pdo',
126
+ 'pdo_mysql',
127
+ 'simplexml'
128
+ );
129
+ foreach ($extensions as $extension)
130
+ $this->addTableRow($extension, extension_loaded($extension));
131
+ }
132
+
133
+ private function addTableRow($column1, $column2 = "") {
134
+ if ($column2 === "") {
135
+ $this->systemInfo .= "<tr><td colspan='2'> </td></tr>&nbsp;<tr><td colspan='2'><strong>{$column1}</strong></td></tr>";
136
+ } else {
137
+ $this->systemInfo .= "<tr><td>{$column1}</td><td>{$column2}</td></tr>";
138
+ }
139
+ }
140
+
141
+ private function getCollatedInfo() {
142
+ return ($this->systemInfo .= "<tr><td colspan='2'>&nbsp;</td></tr></table>");
143
+ }
144
+
145
+ public function getInstalledMagentoVersion()
146
+ {
147
+ $version = Mage::getVersion();
148
+ if (!Mage::getConfig()->getModuleConfig('Enterprise_Enterprise')) {
149
+ return $version;
150
+ }
151
+ $info = explode('.', $version);
152
+ $info[1] -= 5;
153
+ $version = implode('.', $info);
154
+ return $version;
155
+ }
156
+
157
+ }
158
+ ?>
app/code/community/Productiveminds/Core/Model/Email.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Model_Email {
4
+
5
+ const PROMINDS_EMAIL = 'support@productiveminds.com';
6
+ const PROMINDS_NAME = 'Prominds Support';
7
+
8
+ public function sendMail($subject, $useremail, $username, $emailBody, $attachments)
9
+ {
10
+ $mail = new Zend_Mail ();
11
+
12
+ $mail->setBodyHtml($emailBody, "UTF-8");
13
+ $mail->setFrom($useremail, $username);
14
+ $mail->addTo(self::PROMINDS_EMAIL, self::PROMINDS_NAME);
15
+ $mail->setSubject($subject);
16
+
17
+ for ($i = 0; $i < count($attachments['name']); $i++) {
18
+ $tmpFilePath = $attachments['tmp_name'] [$i];
19
+ if ($tmpFilePath != "") {
20
+ $newFilePath = "./media/downloadable/" . $attachments['name'] [$i];
21
+ if (move_uploaded_file($tmpFilePath, $newFilePath)) {
22
+ $fileName = $attachments['name'] [$i];
23
+ $attachedItem = new Zend_Mime_Part (file_get_contents($newFilePath));
24
+ $attachedItem->disposition = Zend_Mime::DISPOSITION_INLINE;
25
+ $attachedItem->encoding = Zend_Mime::ENCODING_BASE64;
26
+ $attachedItem->filename = $fileName;
27
+ $mail->addAttachment($attachedItem);
28
+ }
29
+ }
30
+ }
31
+
32
+ try {
33
+ $mail->send();
34
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('productivemindscore')->__('Your ticket was successfully sent - you will be in touch shortly, Many thanks.'));
35
+ } catch (Exception $ex) {
36
+ Mage::getSingleton('core/session')->addError(Mage::helper('productivemindscore')->__($ex->getMessage()));
37
+ }
38
+ }
39
+ }
app/code/community/Productiveminds/Core/Model/System/Config/Source/Typeofissue.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Productiveminds_Core_Model_System_Config_Source_Typeofissue {
3
+
4
+ public function toOptionArray()
5
+ {
6
+ $types = array(
7
+ array(
8
+ 'value' => false,
9
+ 'label' => "Choose a type"
10
+ ),
11
+ array(
12
+ 'value' => "NewFeature",
13
+ 'label' => "Request a New or Custom Feature"
14
+ )
15
+ );
16
+
17
+ $extensions = ( array )Mage::getConfig()->getNode('modules')->children();
18
+ $promindsExtensions = array();
19
+
20
+ foreach ($extensions as $key => $value)
21
+ if (strpos($key, 'Productiveminds_', 0) !== false && $key != 'Productiveminds_Core')
22
+ $promindsExtensions [] = array(
23
+ 'value' => $key,
24
+ 'label' => $key
25
+ );
26
+ $types [] = array(
27
+ 'value' => $promindsExtensions,
28
+ 'label' => 'Productiveminds Extensions'
29
+ );
30
+
31
+ return $types;
32
+ }
33
+ }
app/code/community/Productiveminds/Core/controllers/Adminhtml/IndexController.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Productiveminds_Core_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
4
+ {
5
+
6
+ protected function _initAction() {
7
+ $this->loadLayout()->_setActiveMenu('productiveminds');
8
+ $this->_title('Productiveminds Core');
9
+ return $this;
10
+ }
11
+
12
+ protected function _isAllowed() {
13
+ return true;
14
+ }
15
+
16
+ public function indexAction() {
17
+ $this->loadLayout();
18
+ $this->_initAction();
19
+ $this->renderLayout();
20
+ }
21
+
22
+ }
app/code/community/Productiveminds/Core/controllers/Adminhtml/SupportController.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Productiveminds_Core_Adminhtml_SupportController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected function _initAction() {
5
+ $this->loadLayout()
6
+ ->_setActiveMenu('productiveminds')
7
+ ->_title($this->__('Productiveminds Support'));
8
+
9
+ $this->_addBreadcrumb(Mage::helper('productivemindscore')->__('Productiveminds Support'),
10
+ Mage::helper('productivemindscore')->__('Productiveminds Support'));
11
+
12
+ return $this;
13
+ }
14
+
15
+ protected function _isAllowed() {
16
+ return true;
17
+ }
18
+
19
+
20
+ public function indexAction()
21
+ {
22
+ $this->loadLayout()
23
+ ->_setActiveMenu('productiveminds')
24
+ ->_title($this->__('Productiveminds Support'));
25
+
26
+ $this->_addBreadcrumb(Mage::helper('productivemindscore')->__('Productiveminds Support'),
27
+ Mage::helper('productivemindscore')->__('Productiveminds Support'));
28
+ $this->renderLayout();
29
+ }
30
+
31
+ public function newAction()
32
+ {
33
+ $this->loadLayout();
34
+ $this->_initAction();
35
+ $this->_title('Create new Ticket');
36
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
37
+ $this->_addContent($this->getLayout()->createBlock('productivemindscore/adminhtml_support_edit'))
38
+ ->_addLeft($this->getLayout()->createBlock('productivemindscore/adminhtml_support_edit_tabs'));
39
+ $this->renderLayout();
40
+ }
41
+
42
+ public function saveAction()
43
+ {
44
+ $subject = 'Customer ticket for: '.$this->getRequest()->getParam('typeofissue', false);
45
+ $message = $this->getRequest()->getParam('message', false);
46
+ $systeminfo = $this->getRequest()->getParam('systeminfo', false);
47
+ $username = $this->getRequest()->getParam('username', false);
48
+ $useremail = $this->getRequest()->getParam('useremail', false);
49
+ $emailBody = "<p>{$subject}</p> <p>{$message}</p> <p>{$systeminfo}</p> <br/> <p>Productiveminds Support</p><br/><br/>";
50
+
51
+ Mage::getModel('productivemindscore/email')->sendMail($subject, $useremail, $username, $emailBody, $_FILES['attachments']);
52
+ $this->getResponse()->setRedirect($this->getUrl("*/*/"));
53
+ }
54
+ }
app/code/community/Productiveminds/Core/etc/adminhtml.xml ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <menu>
4
+ <productiveminds translate="title" module="productivemindscore">
5
+ <title>Productiveminds</title>
6
+ <sort_order>90</sort_order>
7
+ <depends>
8
+ <module>Productiveminds_Core</module>
9
+ </depends>
10
+ <children>
11
+ <productivemindscore module="productivemindscore">
12
+ <title>Core</title>
13
+ <sort_order>10</sort_order>
14
+ <children>
15
+ <support translate="title" module="productivemindscore">
16
+ <title>Create a Support Ticket</title>
17
+ <sort_order>10</sort_order>
18
+ <action>productivemindscore_admin/adminhtml_support/new</action>
19
+ </support>
20
+ <settings translate="title" module="productivemindscore">
21
+ <title>Settings and Contact Info</title>
22
+ <sort_order>20</sort_order>
23
+ <action>adminhtml/system_config/edit/section/productivemindscore_sectns</action>
24
+ </settings>
25
+ </children>
26
+ </productivemindscore>
27
+ </children>
28
+ </productiveminds>
29
+ </menu>
30
+ <acl>
31
+ <resources>
32
+ <admin>
33
+ <children>
34
+ <productiveminds translate="title" module="productivemindscore">
35
+ <title>Productiveminds</title>
36
+ <sort_order>80</sort_order>
37
+ <children>
38
+ <productivemindscore module="productivemindscore">
39
+ <title>Core</title>
40
+ <sort_order>10</sort_order>
41
+ <children>
42
+ <support translate="title">
43
+ <title>Create a Support Ticket</title>
44
+ </support>
45
+ <settings translate="title">
46
+ <title>Settings and Contact Info</title>
47
+ </settings>
48
+ </children>
49
+ </productivemindscore>
50
+ </children>
51
+ </productiveminds>
52
+ <system>
53
+ <children>
54
+ <config>
55
+ <children>
56
+ <productivemindscore_sectns translate="title" module="productivemindscore">
57
+ <title>Productiveminds Core</title>
58
+ </productivemindscore_sectns>
59
+ </children>
60
+ </config>
61
+ </children>
62
+ </system>
63
+ </children>
64
+ </admin>
65
+ </resources>
66
+ </acl>
67
+ </config>
app/code/community/Productiveminds/Core/etc/config.xml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Productiveminds_Core>
5
+ <version>0.2.6</version>
6
+ </Productiveminds_Core>
7
+ </modules>
8
+ <adminhtml>
9
+ <layout>
10
+ <updates>
11
+ <productivemindscore>
12
+ <file>productiveminds/core.xml</file>
13
+ </productivemindscore>
14
+ </updates>
15
+ </layout>
16
+ </adminhtml>
17
+ <admin>
18
+ <routers>
19
+ <productivemindscore_admin>
20
+ <use>admin</use>
21
+ <args>
22
+ <module>Productiveminds_Core</module>
23
+ <frontName>productivemindscore_admin</frontName>
24
+ </args>
25
+ </productivemindscore_admin>
26
+ </routers>
27
+ </admin>
28
+ <global>
29
+ <helpers>
30
+ <productivemindscore>
31
+ <class>Productiveminds_Core_Helper</class>
32
+ </productivemindscore>
33
+ </helpers>
34
+ <blocks>
35
+ <productivemindscore>
36
+ <class>Productiveminds_Core_Block</class>
37
+ </productivemindscore>
38
+ </blocks>
39
+ <models>
40
+ <productivemindscore>
41
+ <class>Productiveminds_Core_Model</class>
42
+ </productivemindscore>
43
+ </models>
44
+ </global>
45
+ <default>
46
+ <productivemindscore_sectns>
47
+ <contactus>
48
+ <text>
49
+ <![CDATA[For all enquiries about our modules, feel free to <a href='http://www.productiveminds.com/contacts' onclick='window.open(this.href); return false;'>contact us here</a>.]]>
50
+ </text>
51
+ </contactus>
52
+ </productivemindscore_sectns>
53
+ </default>
54
+ </config>
app/code/community/Productiveminds/Core/etc/system.xml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <tabs>
4
+ <productive_minds translate="label" module="productivemindscore">
5
+ <label>Productiveminds-Modules</label>
6
+ <sort_order>188</sort_order>
7
+ </productive_minds>
8
+ </tabs>
9
+ <sections>
10
+ <productivemindscore_sectns translate="label" module="productivemindscore">
11
+ <label>Productiveminds Core</label>
12
+ <tab>productive_minds</tab>
13
+ <frontend_type>text</frontend_type>
14
+ <sort_order>10</sort_order>
15
+ <show_in_default>1</show_in_default>
16
+ <show_in_website>1</show_in_website>
17
+ <show_in_store>1</show_in_store>
18
+ <groups>
19
+ <contactus translate="label" module="productivemindscore">
20
+ <label>Productiveminds Contact Information</label>
21
+ <frontend_type>text</frontend_type>
22
+ <frontend_model>productivemindscore/adminhtml_system_config_form_fieldset_contactus</frontend_model>
23
+ <sort_order>10</sort_order>
24
+ <show_in_default>1</show_in_default>
25
+ <show_in_website>1</show_in_website>
26
+ <show_in_store>1</show_in_store>
27
+ <expanded>1</expanded>
28
+ </contactus>
29
+ <extensions translate="label" module="productivemindscore">
30
+ <label>Installed Productiveminds Extensions</label>
31
+ <frontend_type>text</frontend_type>
32
+ <frontend_model>productivemindscore/adminhtml_system_config_form_fieldset_promindsextensions_item</frontend_model>
33
+ <sort_order>20</sort_order>
34
+ <show_in_default>1</show_in_default>
35
+ <show_in_website>0</show_in_website>
36
+ <show_in_store>0</show_in_store>
37
+ <expanded>1</expanded>
38
+ </extensions>
39
+ </groups>
40
+ </productivemindscore_sectns>
41
+ </sections>
42
+ </config>
app/code/local/Productiveminds/Contactus/Block/Activate.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Core
23
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Messages block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Core
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Productiveminds_Contactus_Block_Activate extends Mage_Core_Block_Template
35
+ {
36
+ public function activateMessage() {
37
+ $activateMessage = Mage::getSingleton('core/session', array('name' => 'frontend'))->getActivateMessage();
38
+ Mage::getSingleton('core/session', array('name' => 'frontend'))->unsActivateMessage('');
39
+
40
+ return $activateMessage;
41
+ }
42
+
43
+ public function useFormKey() {
44
+ if (version_compare(Mage::helper('productivemindscore')->getInstalledMagentoVersion(), '1.8.0.0') >= 0) {
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+ }
app/code/local/Productiveminds/Contactus/Helper/Data.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Admin
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ class Productiveminds_Contactus_Helper_Data extends Mage_Core_Helper_Abstract
28
+ {
29
+
30
+ public function isModuleActive($moduleName = null,$enabledLocation=null)
31
+ {
32
+
33
+ if ($moduleName === null) {
34
+ $moduleName = $this->_getModuleName();
35
+ }
36
+
37
+ if (Mage::getConfig()->getNode('modules/'.$moduleName) &&
38
+ Mage::getStoreConfig('contactus_sectns/contactus_grps/enabled', Mage::app()->getStore())
39
+ ) {
40
+ return true;
41
+ } else {
42
+ return false;
43
+ }
44
+ return false;
45
+ }
46
+
47
+ }
48
+ ?>
app/code/local/Productiveminds/Contactus/controllers/IndexController.php ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Admin
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ require_once 'Mage/Contacts/controllers/IndexController.php';
28
+ class Productiveminds_Contactus_IndexController extends Mage_Contacts_IndexController
29
+ {
30
+
31
+ const XML_PATH_ENABLED = 'contactus_sectns/contactus_grps/enabled';
32
+ const XML_PATH_EMAIL_RECIPIENT = 'contactus_sectns/contactus_grps/email_recipient';
33
+ const XML_PATH_EMAIL_SENDER = 'contactus_sectns/contactus_grps/email_sender';
34
+ const XML_PATH_EMAIL_TEMPLATE = 'contactus_sectns/contactus_grps/email_template';
35
+
36
+ public function preDispatch() {
37
+ parent::preDispatch();
38
+ if( !Mage::getStoreConfigFlag(self::XML_PATH_ENABLED, Mage::app()->getStore()) ) {
39
+ //$this->norouteAction();
40
+ Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('The Productiveminds Contact us module is disabled. Please enable it (in admin) to continue'));
41
+ }
42
+ }
43
+
44
+ public function indexAction() {
45
+ $this->loadLayout();
46
+
47
+ $currentModule = $this->getRequest()->getModuleName();
48
+ if($currentModule == 'contacts') {
49
+ $this->getLayout()->getBlock('contactsForm')->setFormAction(Mage::getUrl('*/*/post'));
50
+ } else if($currentModule == 'contactus') {
51
+ $this->getLayout()->getBlock('contactusForm')->setFormAction(Mage::getUrl('*/*/post'));
52
+ }
53
+ $this->_initLayoutMessages('customer/session');
54
+ $this->_initLayoutMessages('catalog/session');
55
+ $this->renderLayout();
56
+ }
57
+
58
+ public function postAction() {
59
+ $post = $this->getRequest()->getPost();
60
+ if ( $post ) {
61
+
62
+ $is_not_spam = false;
63
+ if(empty($post['city']) || $post['city'] == '') {
64
+ $is_not_spam = true;
65
+ }
66
+ // Added by Sola: Now check if user fills the unrequired field
67
+ if($is_not_spam) {
68
+ $translate = Mage::getSingleton('core/translate');
69
+ /* @var $translate Mage_Core_Model_Translate */
70
+ $translate->setTranslateInline(false);
71
+ try {
72
+ $postObject = new Varien_Object();
73
+ $postObject->setData($post);
74
+
75
+ $error = false;
76
+
77
+ if (!Zend_Validate::is(trim($post['name']) , 'NotEmpty')) {
78
+ $error = true;
79
+ }
80
+
81
+ if (!Zend_Validate::is(trim($post['comment']) , 'NotEmpty')) {
82
+ $error = true;
83
+ }
84
+
85
+ if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) {
86
+ $error = true;
87
+ }
88
+
89
+ if (Zend_Validate::is(trim($post['hideit']), 'NotEmpty')) {
90
+ $error = true;
91
+ }
92
+
93
+ if ($error) {
94
+ throw new Exception();
95
+ }
96
+
97
+ if (version_compare(Mage::helper('productivemindscore')->getInstalledMagentoVersion(), '1.8.0.0') >= 0) {
98
+ if (!$this->_validateFormKey()) {
99
+ Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('Please refresh the page - invalid security form key.'));
100
+ $this->_redirect('*/*/');
101
+ return;
102
+ }
103
+ }
104
+
105
+ $mailTemplate = Mage::getModel('core/email_template');
106
+
107
+ $store = Mage::app()->getStore();
108
+ $senderEmailId = Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER, $store);
109
+ $recipientEmailId = Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT, $store);
110
+ $emailTemplate = Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE, $store);
111
+
112
+ if (empty($recipientEmailId) || $recipientEmailId == '') {
113
+ Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('Email address is missing - see module configuration in Magento admin.'));
114
+ $this->_redirect('*/*/');
115
+ return;
116
+ }
117
+
118
+ if (empty($emailTemplate) || $emailTemplate == '') {
119
+ Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('Email template is missing - see module configuration in Magento admin.'));
120
+ $this->_redirect('*/*/');
121
+ return;
122
+ }
123
+
124
+ $recipientEmailId = str_replace(' ', '', $recipientEmailId);
125
+ $recipientEmailId = explode(',', $recipientEmailId);
126
+
127
+ $mailTemplate->setDesignConfig(array('area' => 'frontend'))
128
+ ->setReplyTo($post['email'])
129
+ ->sendTransactional($emailTemplate, $senderEmailId, $recipientEmailId, null, array('data' => $postObject)
130
+ );
131
+
132
+ if (!$mailTemplate->getSentSuccess()) {
133
+ throw new Exception();
134
+ }
135
+
136
+ $translate->setTranslateInline(true);
137
+
138
+ $confirmationMessage = Mage::getStoreConfig('contactus_sectns/contactus_grps/confirmation_message', $store);
139
+ Mage::getSingleton('customer/session')->addSuccess(Mage::helper('contacts')->__($confirmationMessage));
140
+ $this->_redirect('*/*/');
141
+ return;
142
+
143
+ } catch (Exception $e) {
144
+ $translate->setTranslateInline(true);
145
+ Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('Unable to submit your request. Please, try again later'));
146
+ $this->_redirect('*/*/');
147
+ return;
148
+ }
149
+ } else {
150
+ $this->_redirect('*/*/');
151
+ }
152
+
153
+ } else {
154
+ $this->_redirect('*/*/');
155
+ }
156
+ }
157
+ }
app/code/local/Productiveminds/Contactus/etc/adminhtml.xml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <menu>
4
+ <productiveminds translate="title" module="contactus">
5
+ <children>
6
+ <contactus module="contactus">
7
+ <title>Contact us</title>
8
+ <sort_order>50</sort_order>
9
+ <children>
10
+ <settings translate="title" module="contactus">
11
+ <title>Settings</title>
12
+ <sort_order>10</sort_order>
13
+ <action>adminhtml/system_config/edit/section/contactus_sectns</action>
14
+ </settings>
15
+ </children>
16
+ </contactus>
17
+ </children>
18
+ </productiveminds>
19
+ </menu>
20
+ <acl>
21
+ <resources>
22
+ <admin>
23
+ <children>
24
+ <system>
25
+ <children>
26
+ <config>
27
+ <children>
28
+ <contactus_sectns translate="title" module="contactus">
29
+ <title>Productiveminds Contactus</title>
30
+ </contactus_sectns>
31
+ </children>
32
+ </config>
33
+ </children>
34
+ </system>
35
+ </children>
36
+ </admin>
37
+ </resources>
38
+ </acl>
39
+ </config>
app/code/local/Productiveminds/Contactus/etc/config.xml ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Productiveminds_Contactus>
5
+ <version>0.1.4</version>
6
+ </Productiveminds_Contactus>
7
+ </modules>
8
+ <frontend>
9
+ <layout>
10
+ <updates>
11
+ <contactus>
12
+ <file>productiveminds/contactus.xml</file>
13
+ </contactus>
14
+ </updates>
15
+ </layout>
16
+ <routers>
17
+ <contactus>
18
+ <use>standard</use>
19
+ <args>
20
+ <module>Productiveminds_Contactus</module>
21
+ <frontName>contactus</frontName>
22
+ </args>
23
+ </contactus>
24
+ </routers>
25
+ </frontend>
26
+ <global>
27
+ <models>
28
+ <contactus>
29
+ <class>Productiveminds_Contactus_Model</class>
30
+ </contactus>
31
+ </models>
32
+ <blocks>
33
+ <contactus>
34
+ <class>Productiveminds_Contactus_Block</class>
35
+ </contactus>
36
+ </blocks>
37
+ <helpers>
38
+ <contactus>
39
+ <class>Productiveminds_Contactus_Helper</class>
40
+ </contactus>
41
+ </helpers>
42
+ <template>
43
+ <email>
44
+ <contactus_sectns_contactus_grps_email_template translate="label" module="contactus">
45
+ <label>ProductiveMinds Contactus Email Template</label>
46
+ <file>productiveminds/contactus.html</file>
47
+ <type>text</type>
48
+ </contactus_sectns_contactus_grps_email_template>
49
+ </email>
50
+ </template>
51
+ </global>
52
+ <default>
53
+ <contactus_sectns>
54
+ <contactus_grps>
55
+ <enabled>1</enabled>
56
+ <confirmation_message>Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.</confirmation_message>
57
+ </contactus_grps>
58
+ <overlay_properties>
59
+ <title>Contact Us</title>
60
+ <width>480</width>
61
+ <height>480</height>
62
+ </overlay_properties>
63
+ </contactus_sectns>
64
+ </default>
65
+ </config>
app/code/local/Productiveminds/Contactus/etc/system.xml ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <sections>
4
+ <contactus_sectns translate="label" module="contactus">
5
+ <label>Productiveminds Contact Us</label>
6
+ <tab>productive_minds</tab>
7
+ <frontend_type>text</frontend_type>
8
+ <sort_order>50</sort_order>
9
+ <show_in_default>1</show_in_default>
10
+ <show_in_website>1</show_in_website>
11
+ <show_in_store>1</show_in_store>
12
+ <groups>
13
+ <contactus_grps translate="label">
14
+ <label>Productiveminds Contact Us</label>
15
+ <frontend_type>text</frontend_type>
16
+ <sort_order>10</sort_order>
17
+ <show_in_default>1</show_in_default>
18
+ <show_in_website>1</show_in_website>
19
+ <show_in_store>1</show_in_store>
20
+ <fields>
21
+ <enabled>
22
+ <label>Enabled</label>
23
+ <frontend_type>select</frontend_type>
24
+ <source_model>adminhtml/system_config_source_yesno</source_model>
25
+ <sort_order>10</sort_order>
26
+ <show_in_default>1</show_in_default>
27
+ <show_in_website>1</show_in_website>
28
+ <show_in_store>1</show_in_store>
29
+ </enabled>
30
+ <confirmation_message>
31
+ <label>Confirmation Message</label>
32
+ <frontend_type>textarea</frontend_type>
33
+ <sort_order>30</sort_order>
34
+ <show_in_default>1</show_in_default>
35
+ <show_in_website>1</show_in_website>
36
+ <show_in_store>1</show_in_store>
37
+ <comment>
38
+ <![CDATA[The confirmation message.]]>
39
+ </comment>
40
+ </confirmation_message>
41
+ <email_recipient translate="label comment">
42
+ <label>Email Recipient(s)</label>
43
+ <comment><![CDATA[Separate multiple with a comma ',' - e.g: one@example.com, two@example.com]]></comment>
44
+ <frontend_type>text</frontend_type>
45
+ <sort_order>60</sort_order>
46
+ <show_in_default>1</show_in_default>
47
+ <show_in_website>1</show_in_website>
48
+ <show_in_store>1</show_in_store>
49
+ </email_recipient>
50
+ <email_template translate="label">
51
+ <label>Email Template</label>
52
+ <frontend_type>select</frontend_type>
53
+ <source_model>adminhtml/system_config_source_email_template</source_model>
54
+ <sort_order>70</sort_order>
55
+ <show_in_default>1</show_in_default>
56
+ <show_in_website>1</show_in_website>
57
+ <show_in_store>1</show_in_store>
58
+ </email_template>
59
+ <email_sender translate="label">
60
+ <label>Email Sender</label>
61
+ <frontend_type>select</frontend_type>
62
+ <source_model>adminhtml/system_config_source_email_identity</source_model>
63
+ <sort_order>80</sort_order>
64
+ <show_in_default>1</show_in_default>
65
+ <show_in_website>1</show_in_website>
66
+ <show_in_store>1</show_in_store>
67
+ </email_sender>
68
+ </fields>
69
+ </contactus_grps>
70
+ <overlay_properties translate="label">
71
+ <label>Overlay Properties</label>
72
+ <frontend_type>text</frontend_type>
73
+ <sort_order>20</sort_order>
74
+ <show_in_default>1</show_in_default>
75
+ <show_in_website>1</show_in_website>
76
+ <show_in_store>1</show_in_store>
77
+ <expanded>1</expanded>
78
+ <fields>
79
+ <title>
80
+ <label>Overlay Title</label>
81
+ <frontend_type>text</frontend_type>
82
+ <sort_order>20</sort_order>
83
+ <show_in_default>1</show_in_default>
84
+ <show_in_website>1</show_in_website>
85
+ <show_in_store>1</show_in_store>
86
+ <comment>
87
+ <![CDATA[Title for the overlay.]]>
88
+ </comment>
89
+ </title>
90
+ <width>
91
+ <label>Overlay Width</label>
92
+ <frontend_type>text</frontend_type>
93
+ <sort_order>30</sort_order>
94
+ <show_in_default>1</show_in_default>
95
+ <show_in_website>1</show_in_website>
96
+ <show_in_store>1</show_in_store>
97
+ <comment>
98
+ <![CDATA[Width for the overlay.]]>
99
+ </comment>
100
+ </width>
101
+ <height>
102
+ <label>Overlay Height</label>
103
+ <frontend_type>text</frontend_type>
104
+ <sort_order>40</sort_order>
105
+ <show_in_default>1</show_in_default>
106
+ <show_in_website>1</show_in_website>
107
+ <show_in_store>1</show_in_store>
108
+ <comment>
109
+ <![CDATA[Height for the overlay.]]>
110
+ </comment>
111
+ </height>
112
+ </fields>
113
+ </overlay_properties>
114
+ </groups>
115
+ </contactus_sectns>
116
+ </sections>
117
+ </config>
app/design/adminhtml/default/default/layout/productiveminds/core.xml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <layout>
3
+ <default/>
4
+ <productivemindscore_admin_adminhtml_support_new>
5
+ <reference name="messages">
6
+ <action method="addNotice" translate="message">
7
+ <message>
8
+ The support ticket will be sent to the ProductiveMinds support - support@productiveminds.com.
9
+ Please provide detailed information to help us understand the problems you are experiencing or the request.
10
+ This email will enclose your system configurations such as Magento details and application server -
11
+ these details will help speed up our diagnosis of your system, hence a quick response.
12
+ </message>
13
+ </action>
14
+ </reference>
15
+ </productivemindscore_admin_adminhtml_support_new>
16
+ </layout>
app/design/frontend/base/default/layout/productiveminds/contactus.xml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package base_default
24
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+ <layout version="0.1.0">
29
+ <default>
30
+ <reference name="head">
31
+ <action method="addJs"><script>prototype/window.js</script></action>
32
+ <action method="addCss"><name>productiveminds/contactus/css/contactus.css</name></action>
33
+ </reference>
34
+ <reference name="header">
35
+ <block type="core/template" name="productiveminds_contactus" template="productiveminds/contactus/contactus.phtml"/>
36
+ </reference>
37
+ <reference name="footer">
38
+ <block type="core/template" name="contactusLink" template="productiveminds/contactus/link.phtml"/>
39
+ </reference>
40
+ </default>
41
+ <contactus_index_index translate="label">
42
+ <label>Contact Us Form</label>
43
+ <reference name="root">
44
+ <action method="setTemplate"><template>productiveminds/contactus/overlay.phtml</template></action>
45
+ <action method="setHeaderTitle" translate="title" module="contactus"><title>Contact Us</title></action>
46
+ </reference>
47
+ <reference name="head">
48
+ <action method="addCss"><name>productiveminds/contactus/css/overlay.css</name></action>
49
+ <action method="setTitle" translate="title" module="contactus"><title>Contact Us</title></action>
50
+ </reference>
51
+ <reference name="content">
52
+ <block type="contactus/activate" name="contactusForm" template="productiveminds/contactus/form.phtml"/>
53
+ </reference>
54
+ </contactus_index_index>
55
+ </layout>
app/design/frontend/base/default/template/productiveminds/contactus/contactus-live.phtml ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package base_default
23
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="header-content">
28
+ <div class="lefted">
29
+ <?php
30
+ $store = Mage::app()->getStore();
31
+ $urlToShow = $this->getUrl('').'contactus/';
32
+ $title = Mage::getStoreConfig('contactus_sectns/overlay_properties/title', $store);
33
+ $width = Mage::getStoreConfig('contactus_sectns/overlay_properties/width', $store);
34
+ $height = Mage::getStoreConfig('contactus_sectns/overlay_properties/height', $store);
35
+ ?>
36
+ <a style="color:#fff; font-weight:600;" id="contactusLink" href="#" onclick="contactusOverlay('<?php echo $urlToShow;?>')">Contact Us</a>
37
+ </div>
38
+ </div>
39
+ <script type="text/javascript">
40
+ //<![CDATA[
41
+ function contactusOverlay(urlToShow) {
42
+ contactusPopup = new Window({
43
+ id:'contactusConfirm_window',
44
+ className: 'contactus',
45
+ url: urlToShow,
46
+ width: '<?php echo $width;?>',
47
+ height: '<?php echo $height;?>',
48
+ title: '<?php echo $title;?>',
49
+ minimizable: false,
50
+ maximizable: false,
51
+ hideEffect:Element.hide,
52
+ showEffect:Element.show,
53
+ showEffectOptions: {
54
+ duration: 0.7
55
+ },
56
+ hideEffectOptions:{
57
+ duration: 0.7
58
+ },
59
+ destroyOnClose: true
60
+ });
61
+ contactusPopup.setZIndex(888888);
62
+ contactusPopup.showCenter(true);
63
+ contactusPopup.setDestroyOnClose(true);
64
+ }
65
+
66
+ function closePopup() {
67
+ Windows.close('contactusConfirm_window');
68
+ }
69
+
70
+ //]]>
71
+ </script>
app/design/frontend/base/default/template/productiveminds/contactus/contactus.phtml ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package base_default
23
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="header-content">
28
+ <div class="lefted">
29
+ <?php
30
+ $store = Mage::app()->getStore();
31
+ $urlToShow = $this->getUrl('').'contactus/';
32
+ $title = Mage::getStoreConfig('contactus_sectns/overlay_properties/title', $store);
33
+ $width = Mage::getStoreConfig('contactus_sectns/overlay_properties/width', $store);
34
+ $height = Mage::getStoreConfig('contactus_sectns/overlay_properties/height', $store);
35
+ ?>
36
+ <a style="color:#fff; font-weight:600;" id="contactusLink" href="#" onclick="contactusOverlay('<?php echo $urlToShow;?>')">Contact Us (extension)</a>
37
+ </div>
38
+ <div class="lefted eighty_left_margin">
39
+ <a class="button" href="http://www.productiveminds.com/multistore-contact-page-on-an-overlay.html">Download Multistore Contactus FREE Now</a>
40
+ </div>
41
+ </div>
42
+ <script type="text/javascript">
43
+ //<![CDATA[
44
+ function contactusOverlay(urlToShow) {
45
+ contactusPopup = new Window({
46
+ id:'contactusConfirm_window',
47
+ className: 'contactus',
48
+ url: urlToShow,
49
+ width: '<?php echo $width;?>',
50
+ height: '<?php echo $height;?>',
51
+ title: '<?php echo $title;?>',
52
+ minimizable: false,
53
+ maximizable: false,
54
+ hideEffect:Element.hide,
55
+ showEffect:Element.show,
56
+ showEffectOptions: {
57
+ duration: 0.7
58
+ },
59
+ hideEffectOptions:{
60
+ duration: 0.7
61
+ },
62
+ destroyOnClose: true
63
+ });
64
+ contactusPopup.setZIndex(888888);
65
+ contactusPopup.showCenter(true);
66
+ }
67
+
68
+ function closePopup() {
69
+ Windows.close('contactusConfirm_window');
70
+ }
71
+ //]]>
72
+ </script>
app/design/frontend/base/default/template/productiveminds/contactus/form.phtml ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Admin
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+ ?>
27
+ <div class="contactus_container">
28
+
29
+ <div id="messages_product_view"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div>
30
+
31
+ <div class="page-title">
32
+ <h1><?php echo Mage::helper('contactus')->__('Contact Us') ?></h1>
33
+ </div>
34
+ <form action="<?php echo $this->getFormAction(); ?>" id="contactusForm" method="post">
35
+ <?php
36
+ if($this->useFormKey()) {
37
+ echo $this->getBlockHtml('formkey');
38
+ }
39
+ ?>
40
+ <div class="fieldset">
41
+ <ul class="form-list">
42
+ <li>
43
+ <div class="input-box input-box-left">
44
+ <input placeholder="Name" onfocus="this.placeholder=''" onblur="this.placeholder='Name'" name="name" id="name" title="<?php echo Mage::helper('contactus')->__('Name') ?>" value="<?php echo $this->htmlEscape($this->helper('contacts')->getUserName()) ?>" class="input-text required-entry" type="text" />
45
+ </div>
46
+ </li>
47
+ <li>
48
+ <div class="input-box input-box-left">
49
+ <input placeholder="Email" onfocus="this.placeholder=''" onblur="this.placeholder='Email'" name="email" id="email" title="<?php echo Mage::helper('contactus')->__('Email') ?>" value="<?php echo $this->htmlEscape($this->helper('contacts')->getUserEmail()) ?>" class="input-text required-entry validate-email" type="text" />
50
+ </div>
51
+ </li>
52
+ <li>
53
+ <div class="input-box input-box-left">
54
+ <input placeholder="Telephone" onfocus="this.placeholder=''" onblur="this.placeholder='Telephone'" name="telephone" id="telephone" title="<?php echo Mage::helper('contactus')->__('Telephone') ?>" value="" class="input-text" type="text" />
55
+ </div>
56
+ </li>
57
+ <li>
58
+ <div class="input-box input-box-left">
59
+ <textarea placeholder="Comment" onfocus="this.placeholder=''" onblur="this.placeholder='Comment'" name="comment" id="comment" title="<?php echo Mage::helper('contactus')->__('Comment') ?>" class="required-entry input-text" cols="5" rows="3"></textarea>
60
+ </div>
61
+ </li>
62
+ </ul>
63
+ </div>
64
+ <div>
65
+ <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" />
66
+ <button id="submitButton" type="submit" title="<?php echo Mage::helper('contactus')->__('Submit') ?>" class="button"><span><span><?php echo Mage::helper('contactus')->__('Submit') ?></span></span></button>
67
+ </div>
68
+ <div class="topofstoreinfo">
69
+ <?php
70
+ $store_phone = Mage::getStoreConfig('general/store_information/phone', Mage::app()->getStore());
71
+ $store_address = Mage::getStoreConfig('general/store_information/address', Mage::app()->getStore());
72
+ $store_email = Mage::getStoreConfig('trans_email/ident_general/email', Mage::app()->getStore());
73
+ ?>
74
+ <?php if( $store_phone && $store_phone != '' && !empty($store_phone) ) { ?>
75
+ <div class="new-item"><strong>Phone: </strong> <?php echo $store_phone; ?></div>
76
+ <?php } ?>
77
+
78
+ <div class="new-item"><strong>Email: </strong> <?php echo $store_email; ?></div>
79
+
80
+ <?php if( $store_address && $store_address != '' && !empty($store_address) ) { ?>
81
+ <div class="new-item"><strong>Store address: </strong> <div><?php echo $store_address; ?></div></div>
82
+ <?php } ?>
83
+ </div>
84
+
85
+ <!-- BEGIN: hidden field added to tackle robotic form submissions -->
86
+ <div style="display: none; height: 0">
87
+ <div>
88
+ <input type="text" style="width:4px" name="city" id="ro_nammy" value="" />
89
+ </div>
90
+ </div>
91
+ <!-- END: hidden field added to tackle robotic form submissions -->
92
+ </form>
93
+ <script type="text/javascript">
94
+ //<![CDATA[
95
+ var contactusForm = new VarienForm('contactusForm', true);
96
+ document.getElementById("submitButton").focus();
97
+ //]]>
98
+ </script>
99
+ </div>
app/design/frontend/base/default/template/productiveminds/contactus/link.phtml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <?php
3
+ $store = Mage::app()->getStore();
4
+ $urlToShow = $this->getUrl('').'contactus/';
5
+ $title = Mage::getStoreConfig('contactus_sectns/overlay_properties/title', $store);
6
+ $width = Mage::getStoreConfig('contactus_sectns/overlay_properties/width', $store);
7
+ $height = Mage::getStoreConfig('contactus_sectns/overlay_properties/height', $store);
8
+ ?>
9
+ <a style="color:#900; font-weight:600;" id="contactusLink" href="#" onclick="contactusOverlayLink('<?php echo $urlToShow;?>')">Contact Us (by ProductiveMinds)</a>
10
+
11
+ <script type="text/javascript">
12
+ //<![CDATA[
13
+ function contactusOverlayLink(urlToShow) {
14
+ contactusPopup = new Window({
15
+ id:'contactusConfirm_window',
16
+ className: 'contactus',
17
+ url: urlToShow,
18
+ width: '<?php echo $width;?>',
19
+ height: '<?php echo $height;?>',
20
+ title: '<?php echo $title;?>',
21
+ minimizable: false,
22
+ maximizable: false,
23
+ hideEffect:Element.hide,
24
+ showEffect:Element.show,
25
+ showEffectOptions: {
26
+ duration: 0.7
27
+ },
28
+ hideEffectOptions:{
29
+ duration: 0.7
30
+ },
31
+ destroyOnClose: true
32
+ });
33
+ contactusPopup.setZIndex(888888);
34
+ contactusPopup.showCenter(true);
35
+ }
36
+
37
+ function closePopup() {
38
+ Windows.close('contactusConfirm_window');
39
+ }
40
+ //]]>
41
+ </script>
app/design/frontend/base/default/template/productiveminds/contactus/overlay.phtml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package base_default
23
+ * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for Mage_Page_Block_Html
30
+ */
31
+ ?>
32
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
33
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
34
+ <head>
35
+ <?php echo $this->getChildHtml('head') ?>
36
+ </head>
37
+ <body class="page-switch-confirm" <?php echo $this->getBodyClass()?$this->getBodyClass():'' ?>">
38
+ <div>
39
+ <?php echo $this->getChildHtml('after_body_start') ?>
40
+ <?php echo $this->getChildHtml('global_messages') ?>
41
+ <?php echo $this->getChildHtml('content') ?>
42
+ <?php echo $this->getChildHtml('before_body_end') ?>
43
+ <?php echo $this->getAbsoluteFooter() ?>
44
+ </div>
45
+ </body>
46
+ </html>
app/etc/modules/Productiveminds_Contactus.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Productiveminds_Contactus>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Productiveminds_Contactus>
8
+ </modules>
9
+ </config>
app/etc/modules/Productiveminds_Core.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Productiveminds_Core>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Productiveminds_Core>
8
+ </modules>
9
+ </config>
app/locale/en_US/template/email/productiveminds/contactus.html ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!--@subject {{var store.getFrontendName()}}: Contact Us @-->
2
+
3
+ Please find below a message submitted at, {{var store.getFrontendName()}}.
4
+
5
+ Full Name: {{var data.name}}
6
+
7
+ Email: {{var data.email}}
8
+
9
+ Phone Number: {{var data.telephone}}
10
+
11
+ Comment: {{var data.comment}}
12
+
13
+ This email is generated by the ProductiveMinds Contact Us, an extension for Magento.
14
+
15
+ ======================================================
16
+ End of email.
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Productiveminds_Contactus</name>
4
+ <version>0.1.6</version>
5
+ <stability>stable</stability>
6
+ <license>OSL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>The extension opens up the standard Magento contact us page as an overlay, which gives your customers the ability to leave a message without browsing away from their current page.</summary>
10
+ <description>The extension opens up the standard Magento contact us page as an overlay, which gives your customers the ability to leave a message without browsing away from their current page.</description>
11
+ <notes>The extension opens up the standard Magento contact us page as an overlay, which gives your customers the ability to leave a message without browsing away from their current page.</notes>
12
+ <authors><author><name>Productiveminds</name><user>productiveminds</user><email>info@productiveminds.com</email></author></authors>
13
+ <date>2015-11-14</date>
14
+ <time>07:29:06</time>
15
+ <contents><target name="magelocal"><dir name="Productiveminds"><dir name="Contactus"><dir name="Block"><file name="Activate.php" hash="7c4581206899f535962791d74ee30072"/></dir><dir name="Helper"><file name="Data.php" hash="9e6dbf9a28777ddc6bf9fce577fbf340"/></dir><dir name="controllers"><file name="IndexController.php" hash="b0242aa30c941fd391fc434677b4a68b"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8c0ae4497ff2d77fe61a9a9e5109617f"/><file name="config.xml" hash="586ccfce03b825c783f2df77754864d8"/><file name="system.xml" hash="b2ec8ab467742743568ffdec6d6aa1e7"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Productiveminds_Contactus.xml" hash="74be9c01285e18a758a16730ac6d54ed"/><file name="Productiveminds_Core.xml" hash="e187891e5f1d5b7a8ccbee065ac65c71"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="productiveminds"><dir name="contactus"><file name="contactus-live.phtml" hash="b4280bd19f8f5e747cde66bc68c7a31f"/><file name="contactus.phtml" hash="164ff4c729d1dc48c5b00be1d1d8ab49"/><file name="form.phtml" hash="e8a38c7169f2b3329f93c6eef215f1f8"/><file name="link.phtml" hash="b5232fd1d9555e864b8c9b6fe4289c98"/><file name="overlay.phtml" hash="dd36fc85c65bd30e6a848a5be7ab5d0b"/></dir></dir></dir><dir name="layout"><dir name="productiveminds"><file name="contactus.xml" hash="4aa87f0b33d16df44e5cf383b3fddb8f"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="productiveminds"><file name="core.xml" hash="2c94277f988a76a5c22946c1b8fe3f20"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="productiveminds"><file name="contactus.html" hash="f8c3e3aed41396162f76c9251b051553"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="productiveminds"><dir name="contactus"><dir name="css"><file name="contactus.css" hash="cda730e1c56909ec926eeeed53741c8a"/><file name="overlay.css" hash="e3f39a062752003aead4ba88826e311b"/></dir><dir name="images"><file name="btn_bg.gif" hash="37c51a4d48a92da9648dcd3ca011039f"/><file name="content_bg.gif" hash="21278ea0da2d4256f4ced96b6080ba2e"/><file name="window_close.png" hash="3af14f053f360bf31f8ba2df73ec7f1e"/></dir></dir></dir></dir></dir></dir></target><target name="magecommunity"><dir name="Productiveminds"><dir name="Core"><dir name="Block"><dir name="Adminhtml"><dir name="Renderer"><file name="Attachedfiles.php" hash="0983db648802fc4df55b52cecfa4a268"/></dir><dir name="Support"><dir name="Edit"><file name="Form.php" hash="4824bbe691fca695ed5c47448bf6b1f3"/><dir name="Tab"><file name="Form.php" hash="36b509e8d93e47196da2d3e9980382fc"/><file name="Options.php" hash="16d38bff80a954983124d1731d618249"/></dir><file name="Tabs.php" hash="e2136f21462d8e396003741f351045ea"/></dir><file name="Edit.php" hash="6e7a25c9319cf002db49ec454005a8ea"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Fieldset"><file name="Contactus.php" hash="67234576b89996fcf2a9d8b06d601baa"/><dir name="Promindsextensions"><file name="Item.php" hash="7c06f0367c41abe5fd0b18a175008344"/></dir></dir></dir></dir></dir></dir><file name=".DS_Store" hash="0047fe0bc161a58c6088a4e959de43a4"/></dir><dir name="Helper"><file name="Countrycat.php" hash="2d352bed3e1f9722044cf56d4d27c343"/><file name="Data.php" hash="497d793d8a25a3a34b3f4c3002f41e91"/></dir><dir name="Model"><file name="Email.php" hash="951b97048703ca5315a007e8c9e62c15"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Typeofissue.php" hash="8195c567345f997dea60020d50ab4f66"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="69487036587a296a1dbe5fe745adf34f"/><file name="SupportController.php" hash="983b88b4f68d9867a9da63f49bc334ec"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="2c8b5a3875905f97acfa08b73bece3dc"/><file name="config.xml" hash="e2228735e76519fdb2511dcc798f5001"/><file name="system.xml" hash="07ac2509bc9f2edd377c5b4bc591b506"/></dir><file name=".DS_Store" hash="3d15c499ef015dbcf750d9bbfc126aa0"/></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>5.6.0</max></php></required></dependencies>
18
+ </package>
skin/frontend/base/default/productiveminds/contactus/css/contactus.css ADDED
@@ -0,0 +1,318 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .header-contactus {
3
+ width: 100%;
4
+ background: #36454f;
5
+ }
6
+ .header-contactus .header {
7
+ padding: 0;
8
+ height: 40px;
9
+ color: #fff;
10
+ width: 950px;
11
+ margin: 0 auto;
12
+ text-align: left;
13
+ }
14
+ .header-contactus .header-content {
15
+ padding: 10px 0px;
16
+ }
17
+
18
+ .header-contactus .header-content img.arrow {
19
+ margin: 4px 0 0 4px;
20
+ }
21
+
22
+ .header-contactus .header .header-content a.button {
23
+ color: #fff;
24
+ height: 19px;
25
+ padding: 0 8px;
26
+ display: block;
27
+ text-align: center;
28
+ white-space: nowrap;
29
+ border: 1px solid #de5400;
30
+ background: none repeat scroll 0 0 #f18200;
31
+ font: bold 12px/19px Arial,Helvetica,sans-serif;
32
+ }
33
+ .header-contactus .header .header-content a.button:hover {
34
+ color: #f18200;
35
+ text-decoration: none;
36
+ background: none repeat scroll 0 0 #fff;
37
+ }
38
+
39
+ .header-content .currency-text {
40
+ }
41
+ .header-content img {
42
+ margin: 1px 5px 0px 0px;
43
+ }
44
+ .header-content a {
45
+ color: #fff;
46
+ font-weight: 600;
47
+ text-decoration: none;
48
+ }
49
+ .header-content a:hover {
50
+ color: #999;
51
+ text-decoration: underline;
52
+ }
53
+
54
+ .lefted {
55
+ float: left;
56
+ }
57
+
58
+ .righted {
59
+ float: right;
60
+ }
61
+
62
+ .eighty_left_margin {
63
+ margin-left: 80px !important;
64
+ }
65
+
66
+
67
+ .overlay_dialog {
68
+ background: #36454f;
69
+ filter:alpha(opacity=50);
70
+ -moz-opacity: 0.5;
71
+ opacity: 0.5;
72
+ }
73
+
74
+ .overlay___invisible__ {
75
+ background: #fff;
76
+ filter:alpha(opacity=0);
77
+ -moz-opacity: 0;
78
+ opacity: 0;
79
+ }
80
+
81
+ .top_draggable, .bottom_draggable {
82
+ cursor:move;
83
+ }
84
+
85
+ .status_bar {
86
+ font-size:12px;
87
+ }
88
+ .status_bar input{
89
+ font-size:12px;
90
+ }
91
+
92
+ .wired_frame {
93
+ display: block;
94
+ position: absolute;
95
+ border: 1px #36454f dashed;
96
+ }
97
+
98
+ .dialog {
99
+ display: block;
100
+ position: absolute;
101
+ border: none;
102
+ }
103
+ .dialog .bot { display: none; }
104
+
105
+ .dialog table.table_window {
106
+ border-collapse: collapse;
107
+ border-spacing: 0;
108
+ width: 100%;
109
+ margin: 0px;
110
+ padding:0px;
111
+ }
112
+
113
+ .dialog table.table_window td , .dialog table.table_window th {
114
+ padding: 0;
115
+ }
116
+
117
+ .dialog .title_window {
118
+ -moz-user-select:none;
119
+ }
120
+ .overlay_contactus {
121
+ opacity:.5;
122
+ -moz-opacity:.5;
123
+ -webkit-opacity:.5;
124
+ background-color:#36454f;
125
+ filter:alpha(opacity=60);
126
+ }
127
+
128
+ .top.table_window { border-bottom: none; background: transparent; }
129
+
130
+ #contactusConfirm_window {
131
+ }
132
+ #contactusConfirm_window_row1,
133
+ #contactusConfirm_window_row2,
134
+ #contactusConfirm_window_row3 {
135
+ }
136
+
137
+ #contactusConfirm_window_row1 {
138
+ padding-left: 10px;
139
+ }
140
+
141
+ #contactusConfirm_window_row2 {
142
+ }
143
+
144
+ .contactus_n {
145
+
146
+ }
147
+
148
+ #contactusConfirm_window_row3,
149
+ .contactus_w,
150
+ .contactus_e,
151
+ .contactus_s,
152
+ .contactus_sw,
153
+ .contactus_se,
154
+ .contactus_sizer,
155
+ .contactus_minimize,
156
+ .contactus_maximize {
157
+ display: none;
158
+ }
159
+
160
+ .contactus_close {
161
+ top: 15px;
162
+ right: 7px;
163
+ width: 16px;
164
+ height: 16px;
165
+ position:absolute;
166
+ cursor:pointer;
167
+ z-index:1000;
168
+ background:url(../images/window_close.png) no-repeat 0 0;
169
+ }
170
+ .contactus_title {
171
+ float: left;
172
+ width: 100%;
173
+ color: #fff;
174
+ background: #36454f;
175
+ padding: 5px 0px 5px 10px;
176
+ text-align: left;
177
+ font-size: 16px;
178
+ font-weight: 600;
179
+ border: 5px solid #36454f !important;
180
+ border-bottom: none;
181
+ }
182
+ #contactusConfirm_window_content {
183
+ border: 10px solid #36454f ;
184
+ border-top: none !important;
185
+ }
186
+ .contactus_content {
187
+ overflow:auto;
188
+ font-size:12px;
189
+ }
190
+ .contactus_container {
191
+ min-width: 360px !important;
192
+ padding: 5px;
193
+ }
194
+ .contactus_container .fields,
195
+ .contactus_container .fieldset,
196
+ .contactus_container .page-title {
197
+ width: 100%;
198
+ }
199
+ .contactus_container .page-title {
200
+ border: none;
201
+ margin: 0px 0px 10px 0px;
202
+ }
203
+
204
+ .contactus_container h1 {
205
+ margin: 0px;
206
+ }
207
+
208
+ .contactus_container .fields,
209
+ .contactus_container .fieldset {
210
+ margin: 0;
211
+ padding: 0px;
212
+ }
213
+ .contactus_container .fieldset {
214
+ padding: 0px;
215
+ }
216
+ .contactus_container .form-list li {
217
+ margin: 0 0 10px;
218
+ }
219
+ .contactus_container select,
220
+ .contactus_container textarea,
221
+ .contactus_container input.input-text,
222
+ .contactus_container .form-list select,
223
+ .contactus_container .form-list li.wide select,
224
+ .contactus_container .form-list input.input-text {
225
+ box-sizing: border-box;
226
+ font-size: 12px;
227
+ padding: 10px;
228
+ width: 100%;
229
+ }
230
+ .contactus_container .form-list input,
231
+ .contactus_container .form-list select,
232
+ .contactus_container .form-list textarea,
233
+ .contactus_container .form-list .input-box,
234
+ .contactus_container .form-list li.wide .input-box {
235
+ width: 100% !important;
236
+ box-shadow: 0 0 0 0 !important;
237
+ }
238
+ .contactus_container textarea,
239
+ .contactus_container input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="file"]):not([type="image"]) {
240
+ background: none repeat scroll 0 0 #fff;
241
+ border: 1px solid #bbb;
242
+ border-radius: 1px;
243
+ color: #2f2f2f !important;
244
+ font-family: inherit;
245
+ font-size: 12px;
246
+ line-height: 120%;
247
+ max-width: 100%;
248
+ outline: 0 none;
249
+ padding: 7px;
250
+ }
251
+ .contactus_container .form-list select {
252
+ padding: 5px;
253
+ height: 36px;
254
+ }
255
+ .contactus_container .form-list select option {
256
+ padding: 5px;
257
+ border-bottom: 1px dotted #999;
258
+ }
259
+ .contactus_container .button-set {
260
+ margin: 0 !important;
261
+ }
262
+
263
+ .contactus_container .buttons-set {
264
+ width: 300px;
265
+ margin: 20px 0 0 0;
266
+ }
267
+
268
+ .form-list label {
269
+ color: #36454f;
270
+ }
271
+ .contactus_container button.button,
272
+ .contactus_container button.button:hover {
273
+ padding: 5px 0 !important;
274
+ background: transparent !important;
275
+ }
276
+ .contactus_container button.button span {
277
+ height: auto;
278
+ color: #f6f6f6;
279
+ display: block;
280
+ font-size: 13px;
281
+ font-weight: 300;
282
+ padding: 5px 10px;
283
+ text-align: center;
284
+ border-radius: 1px;
285
+ white-space: nowrap;
286
+ border: medium none;
287
+ background: none repeat scroll 0 0 #36454f;
288
+ }
289
+ .contactus_container .contactus_container button.button span {
290
+ color: #fff;
291
+ display: block;
292
+ font-size: 14px;
293
+ font-weight: 400;
294
+ padding: 4px 12px;
295
+ background: #36454f;
296
+ border-radius: 1px !important;
297
+ }
298
+ .contactus_container .input-box-left,
299
+ .contactus_container .input-box-right {
300
+ float: left;
301
+ }
302
+ .contactus_container .input-box-right {
303
+ margin-left: 10px;
304
+ }
305
+ .contactus_container .fieldset {
306
+ border: transparent !important;
307
+ background: none !important;
308
+ }
309
+ .topofstoreinfo {
310
+ padding-top: 5px;
311
+ margin-top: 20px !important;
312
+ border-top: 1px solid #bbb;
313
+ }
314
+ .topofstoreinfo .new-item {
315
+ margin-top: 5px;
316
+ }
317
+ /* FOR IE */
318
+ * html .contactus_close { background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../images/window_close.png", sizingMethod="crop"); }
skin/frontend/base/default/productiveminds/contactus/css/overlay.css ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .page-switch-confirm {
3
+ padding: 10px;
4
+ text-align:left;
5
+ background:#fff !important;
6
+ }
7
+
8
+ .storesSwitching {
9
+ text-align: left;
10
+ }
11
+
12
+ .header-currency-overlay {
13
+
14
+ }
15
+
16
+ .header-currency-overlay img {
17
+ margin: 1px 3px 0px 0px;
18
+ }
19
+
20
+ .header-currency-overlay li.current {
21
+ color: #000;
22
+ width: 300px;
23
+ display: block;
24
+ padding: 8px 0;
25
+ font-weight: 600;
26
+ border-bottom: 1px dotted #bbb;
27
+ }
28
+ .header-currency-overlay li.current div.message-top,
29
+ .header-currency-overlay li.current div.message-bottom {
30
+ color: #000;
31
+ font-size: 12px;
32
+ font-weight: normal;
33
+ padding-bottom: 10px;
34
+ }
35
+ .header-currency-overlay li.current div.message-bottom {
36
+ padding: 15px 0 5px 0;
37
+ }
38
+ .header-currency-overlay li a {
39
+ color: #006ac3;
40
+ width: 300px;
41
+ display: block;
42
+ padding: 8px 0;
43
+ font-weight: 600;
44
+ text-decoration: none;
45
+ border-bottom: 1px dotted #bbb;
46
+ }
47
+ .header-currency-overlay li a:hover {
48
+ color: #000;
49
+ background: #f0f0f0;
50
+ }
51
+
skin/frontend/base/default/productiveminds/contactus/images/btn_bg.gif ADDED
Binary file
skin/frontend/base/default/productiveminds/contactus/images/content_bg.gif ADDED
Binary file
skin/frontend/base/default/productiveminds/contactus/images/window_close.png ADDED
Binary file