Version Notes
+ Phone mask at checkout
+ Customers don't have to input parentheses, spaces and dashes anymore
Download this release
Release Info
Developer | PotatoCommerce |
Extension | Potato_PhoneMask |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/Potato/PhoneMask/Block/Mask.php +15 -0
- app/code/community/Potato/PhoneMask/Helper/Config.php +27 -0
- app/code/community/Potato/PhoneMask/Helper/Data.php +6 -0
- app/code/community/Potato/PhoneMask/etc/adminhtml.xml +22 -0
- app/code/community/Potato/PhoneMask/etc/config.xml +57 -0
- app/code/community/Potato/PhoneMask/etc/system.xml +51 -0
- app/design/frontend/base/default/layout/po_phonemask.xml +11 -0
- app/design/frontend/base/default/template/potato_phonemask/mask.phtml +16 -0
- app/etc/modules/Potato_PhoneMask.xml +9 -0
- app/locale/en_US/Potato_PhoneMask.csv +7 -0
- js/po_phonemask/PhoneNumberMask.js +137 -0
- package.xml +36 -0
app/code/community/Potato/PhoneMask/Block/Mask.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_PhoneMask_Block_Mask extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
public function canShow()
|
6 |
+
{
|
7 |
+
$isEnabled = $this->helper('po_phonemask/config')->isEnabled();
|
8 |
+
return $isEnabled && $this->getMask();
|
9 |
+
}
|
10 |
+
|
11 |
+
public function getMask()
|
12 |
+
{
|
13 |
+
return $this->helper('po_phonemask/config')->getPhoneMask();
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Potato/PhoneMask/Helper/Config.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_PhoneMask_Helper_Config extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
const GENERAL_IS_ENABLED = 'po_phonemask/general/is_enabled';
|
6 |
+
const GENERAL_MASK = 'po_phonemask/general/mask';
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @param null|string|bool|int|Mage_Core_Model_Store $store
|
10 |
+
*
|
11 |
+
* @return bool
|
12 |
+
*/
|
13 |
+
public static function isEnabled($store = null)
|
14 |
+
{
|
15 |
+
return (bool)Mage::getStoreConfig(self::GENERAL_IS_ENABLED, $store);
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @param null|string|bool|int|Mage_Core_Model_Store $store
|
20 |
+
*
|
21 |
+
* @return string
|
22 |
+
*/
|
23 |
+
public static function getPhoneMask($store = null)
|
24 |
+
{
|
25 |
+
return (string)trim(Mage::getStoreConfig(self::GENERAL_MASK, $store));
|
26 |
+
}
|
27 |
+
}
|
app/code/community/Potato/PhoneMask/Helper/Data.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_PhoneMask_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/community/Potato/PhoneMask/etc/adminhtml.xml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<admin>
|
6 |
+
<children>
|
7 |
+
<system>
|
8 |
+
<children>
|
9 |
+
<config>
|
10 |
+
<children>
|
11 |
+
<po_phonemask>
|
12 |
+
<title>PotatoCommerce - Phone Mask</title>
|
13 |
+
</po_phonemask>
|
14 |
+
</children>
|
15 |
+
</config>
|
16 |
+
</children>
|
17 |
+
</system>
|
18 |
+
</children>
|
19 |
+
</admin>
|
20 |
+
</resources>
|
21 |
+
</acl>
|
22 |
+
</config>
|
app/code/community/Potato/PhoneMask/etc/config.xml
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Potato_PhoneMask>
|
5 |
+
<version>1.0.0</version>
|
6 |
+
</Potato_PhoneMask>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<blocks>
|
10 |
+
<po_phonemask>
|
11 |
+
<class>Potato_PhoneMask_Block</class>
|
12 |
+
</po_phonemask>
|
13 |
+
</blocks>
|
14 |
+
<helpers>
|
15 |
+
<po_phonemask>
|
16 |
+
<class>Potato_PhoneMask_Helper</class>
|
17 |
+
</po_phonemask>
|
18 |
+
</helpers>
|
19 |
+
</global>
|
20 |
+
<adminhtml>
|
21 |
+
<translate>
|
22 |
+
<modules>
|
23 |
+
<Potato_PhoneMask>
|
24 |
+
<files>
|
25 |
+
<default>Potato_PhoneMask.csv</default>
|
26 |
+
</files>
|
27 |
+
</Potato_PhoneMask>
|
28 |
+
</modules>
|
29 |
+
</translate>
|
30 |
+
</adminhtml>
|
31 |
+
<frontend>
|
32 |
+
<layout>
|
33 |
+
<updates>
|
34 |
+
<po_phonemask module="Potato_PhoneMask">
|
35 |
+
<file>po_phonemask.xml</file>
|
36 |
+
</po_phonemask>
|
37 |
+
</updates>
|
38 |
+
</layout>
|
39 |
+
<translate>
|
40 |
+
<modules>
|
41 |
+
<Potato_PhoneMask>
|
42 |
+
<files>
|
43 |
+
<default>Potato_PhoneMask.csv</default>
|
44 |
+
</files>
|
45 |
+
</Potato_PhoneMask>
|
46 |
+
</modules>
|
47 |
+
</translate>
|
48 |
+
</frontend>
|
49 |
+
<default>
|
50 |
+
<po_phonemask>
|
51 |
+
<general>
|
52 |
+
<is_enabled>0</is_enabled>
|
53 |
+
<mask>(___) ___-____</mask>
|
54 |
+
</general>
|
55 |
+
</po_phonemask>
|
56 |
+
</default>
|
57 |
+
</config>
|
app/code/community/Potato/PhoneMask/etc/system.xml
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<po_core translate="label" module="po_phonemask">
|
5 |
+
<label>POTATOCOMMERCE</label>
|
6 |
+
<class>po_core</class>
|
7 |
+
<sort_order>300</sort_order>
|
8 |
+
</po_core>
|
9 |
+
</tabs>
|
10 |
+
<sections>
|
11 |
+
<po_phonemask translate="label" module="po_phonemask">
|
12 |
+
<label>Phone Mask</label>
|
13 |
+
<tab>po_core</tab>
|
14 |
+
<frontend_type>text</frontend_type>
|
15 |
+
<sort_order>99998</sort_order>
|
16 |
+
<show_in_default>1</show_in_default>
|
17 |
+
<show_in_website>1</show_in_website>
|
18 |
+
<show_in_store>1</show_in_store>
|
19 |
+
<groups>
|
20 |
+
<general translate="label">
|
21 |
+
<label>General Settings</label>
|
22 |
+
<frontend_type>text</frontend_type>
|
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 |
+
<fields>
|
28 |
+
<is_enabled translate="label">
|
29 |
+
<label>Enable extension</label>
|
30 |
+
<frontend_type>select</frontend_type>
|
31 |
+
<sort_order>10</sort_order>
|
32 |
+
<show_in_default>1</show_in_default>
|
33 |
+
<show_in_website>1</show_in_website>
|
34 |
+
<show_in_store>1</show_in_store>
|
35 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
36 |
+
</is_enabled>
|
37 |
+
<mask translate="label comment">
|
38 |
+
<label>Phone mask</label>
|
39 |
+
<comment><![CDATA[<b>Example:</b> (___) ___-____<br>Where underscore is a digit.]]></comment>
|
40 |
+
<frontend_type>text</frontend_type>
|
41 |
+
<sort_order>20</sort_order>
|
42 |
+
<show_in_default>1</show_in_default>
|
43 |
+
<show_in_website>1</show_in_website>
|
44 |
+
<show_in_store>1</show_in_store>
|
45 |
+
</mask>
|
46 |
+
</fields>
|
47 |
+
</general>
|
48 |
+
</groups>
|
49 |
+
</po_phonemask>
|
50 |
+
</sections>
|
51 |
+
</config>
|
app/design/frontend/base/default/layout/po_phonemask.xml
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout>
|
3 |
+
<default>
|
4 |
+
<reference name="head">
|
5 |
+
<action ifconfig="po_phonemask/general/is_enabled" method="addJs"><script>po_phonemask/PhoneNumberMask.js</script></action>
|
6 |
+
</reference>
|
7 |
+
<reference name="before_body_end">
|
8 |
+
<block type="po_phonemask/mask" name="po_phonemask.mask" template="potato_phonemask/mask.phtml"/>
|
9 |
+
</reference>
|
10 |
+
</default>
|
11 |
+
</layout>
|
app/design/frontend/base/default/template/potato_phonemask/mask.phtml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php /* @var $this Potato_PhoneMask_Block_Mask */ ?>
|
2 |
+
<?php if ($this->canShow()):?>
|
3 |
+
<script type="text/javascript">
|
4 |
+
//<![CDATA[
|
5 |
+
if ($('billing:telephone')) {
|
6 |
+
new PhoneNumberMask('billing:telephone', '<?php echo $this->getMask()?>');
|
7 |
+
}
|
8 |
+
if ($('shipping:telephone')) {
|
9 |
+
new PhoneNumberMask('shipping:telephone', '<?php echo $this->getMask()?>');
|
10 |
+
}
|
11 |
+
if ($('telephone')) {
|
12 |
+
new PhoneNumberMask('telephone', '<?php echo $this->getMask()?>');
|
13 |
+
}
|
14 |
+
//]]>
|
15 |
+
</script>
|
16 |
+
<?php endif;?>
|
app/etc/modules/Potato_PhoneMask.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Potato_PhoneMask>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Potato_PhoneMask>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/locale/en_US/Potato_PhoneMask.csv
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"<b>Example:</b> (___) ___-____<br>Where underscore is a digit.","<b>Example:</b> (___) ___-____<br>Where underscore is a digit."
|
2 |
+
"Enable extension","Enable extension"
|
3 |
+
"General Settings","General Settings"
|
4 |
+
"General Settings","General Settings"
|
5 |
+
"POTATOCOMMERCE","POTATOCOMMERCE"
|
6 |
+
"Phone mask","Phone mask"
|
7 |
+
"PotatoCommerce - Phone Mask","PotatoCommerce - Phone Mask"
|
js/po_phonemask/PhoneNumberMask.js
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var PhoneNumberMask = Class.create();
|
2 |
+
PhoneNumberMask.prototype = {
|
3 |
+
initialize: function(elementId, mask) {
|
4 |
+
this.element = $(elementId);
|
5 |
+
this.numberMask = mask.toString();
|
6 |
+
|
7 |
+
if (!this.numberMask.length || !this.element) {
|
8 |
+
return;
|
9 |
+
}
|
10 |
+
|
11 |
+
this._blockedKeyCodeList = [
|
12 |
+
35, // End
|
13 |
+
36, // Home
|
14 |
+
37, // Left
|
15 |
+
38, // Up
|
16 |
+
39, // Right
|
17 |
+
40, // Down
|
18 |
+
46 // Delete
|
19 |
+
];
|
20 |
+
|
21 |
+
if (this.element.getValue() && !this.validate()) {
|
22 |
+
this.element.observe('input', this._onInputEmpty.bind(this));
|
23 |
+
} else {
|
24 |
+
this.initObservers();
|
25 |
+
this.initValidation();
|
26 |
+
this.processPhoneMask();
|
27 |
+
}
|
28 |
+
},
|
29 |
+
initObservers: function() {
|
30 |
+
if (typeof(this.element) === 'object') {
|
31 |
+
this.element.observe('click', this._onFocus.bind(this));
|
32 |
+
this.element.observe('focus', this._onFocus.bind(this));
|
33 |
+
this.element.observe('keydown', this._onKeyDown.bind(this));
|
34 |
+
this.element.observe('input', this._onInput.bind(this));
|
35 |
+
}
|
36 |
+
},
|
37 |
+
initValidation: function() {
|
38 |
+
var me = this;
|
39 |
+
this.element.addClassName('validate-po-phonemask-' + this.element.identify());
|
40 |
+
Validation.add(
|
41 |
+
'validate-po-phonemask-' + this.element.identify(),
|
42 |
+
'This is a required field.',
|
43 |
+
function() {
|
44 |
+
return me.validate();
|
45 |
+
}
|
46 |
+
);
|
47 |
+
},
|
48 |
+
validate: function() {
|
49 |
+
for (var i = 0; i < this.numberMask.length; i++) {
|
50 |
+
if (typeof(this.element.value[i]) == 'undefined') {
|
51 |
+
return false;
|
52 |
+
}
|
53 |
+
var isCharNotDigit = (this.element.value[i].charCodeAt() < 48 || this.element.value[i].charCodeAt() > 57);
|
54 |
+
if (isCharNotDigit && this.numberMask[i] == '_') {
|
55 |
+
return false;
|
56 |
+
}
|
57 |
+
if (this.element.value[i] != this.numberMask[i] && this.numberMask[i] != '_') {
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
return true;
|
62 |
+
},
|
63 |
+
processPhoneMask: function() {
|
64 |
+
var elementValue = '';
|
65 |
+
for (var i = 0; i < this.numberMask.length; i++) {
|
66 |
+
if (
|
67 |
+
(typeof(this.element.value[i]) == 'undefined') ||
|
68 |
+
(
|
69 |
+
(this.element.value[i].charCodeAt() < 48 || this.element.value[i].charCodeAt() > 57) &&
|
70 |
+
(this.numberMask[i] == '_')
|
71 |
+
)
|
72 |
+
)
|
73 |
+
{
|
74 |
+
elementValue = elementValue + this.numberMask[i];
|
75 |
+
} else if (this.element.value[i] != this.numberMask[i] && this.numberMask[i] != '_') {
|
76 |
+
elementValue = elementValue + this.numberMask[i];
|
77 |
+
} else {
|
78 |
+
elementValue = elementValue + this.element.value[i];
|
79 |
+
}
|
80 |
+
}
|
81 |
+
this.element.value = elementValue;
|
82 |
+
},
|
83 |
+
moveCursorToFirstUnderScore: function() {
|
84 |
+
for (var i = 0; i < this.element.value.length; i++) {
|
85 |
+
if (this.element.value[i] == '_') {
|
86 |
+
this._moveCursor(i);
|
87 |
+
break;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
},
|
91 |
+
moveCursorToLastDigit: function() {
|
92 |
+
var position = -1;
|
93 |
+
for (var i = 0; i < this.element.value.length; i++) {
|
94 |
+
if (this.element.value[i].charCodeAt() >= 48 && this.element.value[i].charCodeAt() <= 57) {
|
95 |
+
position = i;
|
96 |
+
}
|
97 |
+
if (this.element.value[i] == '_') {
|
98 |
+
if (position > -1) {
|
99 |
+
this._moveCursor(position + 1);
|
100 |
+
} else {
|
101 |
+
this._moveCursor(i);
|
102 |
+
}
|
103 |
+
break;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
},
|
107 |
+
_moveCursor: function(position) {
|
108 |
+
this.element.selectionStart = position;
|
109 |
+
this.element.selectionEnd = position;
|
110 |
+
},
|
111 |
+
_onFocus: function(e) {
|
112 |
+
this.moveCursorToFirstUnderScore();
|
113 |
+
},
|
114 |
+
_onInput: function() {
|
115 |
+
this.processPhoneMask();
|
116 |
+
this.moveCursorToFirstUnderScore();
|
117 |
+
},
|
118 |
+
_onInputEmpty: function() {
|
119 |
+
if (this.element.getValue() == '') {
|
120 |
+
this.initObservers();
|
121 |
+
this.initValidation();
|
122 |
+
this.processPhoneMask();
|
123 |
+
this.moveCursorToFirstUnderScore();
|
124 |
+
}
|
125 |
+
},
|
126 |
+
_onKeyDown: function(e) {
|
127 |
+
// Prevent navigation by keys
|
128 |
+
if (this._blockedKeyCodeList.indexOf(e.keyCode) > -1) {
|
129 |
+
e.stop();
|
130 |
+
return;
|
131 |
+
}
|
132 |
+
// Move cursor when backspace is pressed
|
133 |
+
if (e.keyCode == 8) {
|
134 |
+
this.moveCursorToLastDigit();
|
135 |
+
}
|
136 |
+
}
|
137 |
+
};
|
package.xml
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Potato_PhoneMask</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Phone Mask is a simple Magento extension that helps customers to input phone number easier at checkout. Auto-Formatted phone numbers always.</summary>
|
10 |
+
<description><p>Phone Mask is a simple Magento extension that helps customers to input phone number easier at checkout. Auto-Formatted phone numbers. Your customers don't have to input parentheses, spaces and dashes anymore.</p>
|
11 |
+
<p>No need to modify templates. Javascript only - the extension does not use any additional libraries.<br />Mask is defined by store administrator, that governs what a user is allowed to enter in as input. It can be said to be a template, or set format that entered data must conform to, mainly used for the purposes of data integrity by preventing transcription errors.</p>
|
12 |
+
<p>e.g. When entering a phone number on a data capture form, in the format <strong>"(___) ___ - ____"</strong> the area code brackets, the space between the number and the area code will automatically be placed in.</p>
|
13 |
+
<p><br /><br /></p>
|
14 |
+
<h3>Features</h3>
|
15 |
+
<ul>
|
16 |
+
<li><strong>Simplifies Magento checkout.</strong>&nbsp;Customer don't have to input parentheses, spaces and dashes.</li>
|
17 |
+
<li><strong>Mainly used for the purposes of data integrity by preventing transcription errors.</strong> All phone numbers will be of the same format. Say goodbye to obscurity.</li>
|
18 |
+
<li>Lifetime free support, bugfixes and updates</li>
|
19 |
+
<li>Installation service included</li>
|
20 |
+
</ul>
|
21 |
+
<p>&nbsp;</p>
|
22 |
+
<p>&nbsp;</p>
|
23 |
+
<p style="display: block; max-width: 391px; margin-left: auto; margin-right: auto;"><img style="box-shadow: #888888 1px 1px 3px 1px; display: block; margin-left: auto; margin-right: auto;" title="Phone Mask Magento Extension - in action" src="http://potatocommerce.com/media/animated-image-phone-mask-magento-extension.gif" alt="Phone Mask Magento Extension" width="100%" height="auto" /></p>
|
24 |
+
<p>&nbsp;</p>
|
25 |
+
<p>&nbsp;</p>
|
26 |
+
<p>&nbsp;</p>
|
27 |
+
<p style="display: block; max-width: 795px; margin-left: auto; margin-right: auto;"><a href="http://potatocommerce.com/about-us/"><img title="Click to learn more" src="http://potatocommerce.com/media/why-potatocommerce.png" alt="PotatoCommerce - Magento Extensions" width="100%" height="auto" /></a></p></description>
|
28 |
+
<notes>+ Phone mask at checkout
|
29 |
+
+ Customers don't have to input parentheses, spaces and dashes anymore</notes>
|
30 |
+
<authors><author><name>PotatoCommerce</name><user>potatocommerce</user><email>potatocommerce@gmail.com</email></author></authors>
|
31 |
+
<date>2015-05-28</date>
|
32 |
+
<time>20:28:40</time>
|
33 |
+
<contents><target name="magecommunity"><dir name="Potato"><dir name="PhoneMask"><dir name="Block"><file name="Mask.php" hash="117b507c7bfd255ef07e50f648713b70"/></dir><dir name="Helper"><file name="Config.php" hash="5900d28017b784efe41399c4805979f1"/><file name="Data.php" hash="d0bbab12ced81d145fe67a8c33db16ea"/></dir><dir name="etc"><file name="adminhtml.xml" hash="bed30896474dc0301b188c41948dd48c"/><file name="config.xml" hash="915cd5e308fede70b6c1861e9a548e8f"/><file name="system.xml" hash="a0192ae661c318f52e7aa0719085b0cd"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="po_phonemask.xml" hash="c4b83b00290c1ee1125230777041f189"/></dir><dir name="template"><dir name="potato_phonemask"><file name="mask.phtml" hash="edc4a564b3eab919ea026238fc0ae75d"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Potato_PhoneMask.xml" hash="45a4483489af419011365df7b77bb4fd"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Potato_PhoneMask.csv" hash="417a58c5be932f737b5dd6e5b80279d3"/></dir></target><target name="mageweb"><dir name="js"><dir name="po_phonemask"><file name="PhoneNumberMask.js" hash="7ecf59c4821d98dd372d1988519fb168"/></dir></dir></target></contents>
|
34 |
+
<compatible/>
|
35 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
36 |
+
</package>
|