Version Notes
Infobip StoreSMS API module
Download this release
Release Info
Developer | Infobip |
Extension | Infobip_Storesms |
Version | 2.0.1 |
Comparing to | |
See all releases |
Code changes from version 1.0.4 to 2.0.1
- app/code/community/Infobip/Storesms/Block/Adminhtml/Adminblock.php +12 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms.php +0 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit.php +0 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Form.php +0 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Tab/Form.php +0 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Tabs.php +0 -0
- app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Grid.php +0 -58
- app/code/community/Infobip/Storesms/Block/Adminhtml/System/Config/Fieldset/Branding.php +0 -0
- app/code/community/Infobip/Storesms/Block/Buttons/Contact.php +0 -0
- app/code/community/Infobip/Storesms/Helper/Data.php +57 -29
- app/code/community/Infobip/Storesms/Helper/Xml.php +0 -40
- app/code/community/Infobip/Storesms/Model/ApiClient.php +63 -56
- app/code/community/Infobip/Storesms/Model/Config.php +3 -42
- app/code/community/Infobip/Storesms/Model/Cron.php +0 -14
- app/code/community/Infobip/Storesms/Model/Observer.php +15 -33
- app/code/community/Infobip/Storesms/Model/Resource/Storesms.php +0 -13
- app/code/community/Infobip/Storesms/Model/Resource/Storesms/Collection.php +0 -12
- app/code/community/Infobip/Storesms/Model/Storesms.php +5 -59
- app/code/community/Infobip/Storesms/controllers/Adminhtml/StoresmsController.php +5 -3
- app/code/community/Infobip/Storesms/etc/config.xml +2 -29
- app/code/community/Infobip/Storesms/etc/system.xml +3 -23
- app/code/community/Infobip/Storesms/sql/storesms_setup/install-1.0.0.php +0 -32
- app/design/adminhtml/base/default/layout/Infobip_Storesms.xml +19 -19
- app/design/adminhtml/base/default/template/storesms/Adminblock.phtml +210 -0
- app/design/adminhtml/base/default/template/storesms/system/config/fieldset/branding.phtml +0 -0
- app/etc/modules/Infobip_Storesms.xml +0 -0
- app/locale/pl_PL/Infobip_Storesms.csv +0 -47
- js/infobipStoresms/storesmscounter.js +80 -80
- package.xml +159 -29
- skin/adminhtml/base/default/css/storesms/skin.css +4 -4
- skin/adminhtml/base/default/images/storesms/storesms_header.png +0 -0
app/code/community/Infobip/Storesms/Block/Adminhtml/Adminblock.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Created by IntelliJ IDEA.
|
4 |
+
* User: akomarica
|
5 |
+
* Date: 11.9.2015.
|
6 |
+
* Time: 11:07
|
7 |
+
*/
|
8 |
+
|
9 |
+
class Infobip_Storesms_Block_Adminhtml_Adminblock extends Mage_Core_Block_Template{
|
10 |
+
|
11 |
+
//here we can put some logic if we want to call it in our adminblock.phtml
|
12 |
+
}
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Form.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Tab/Form.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Edit/Tabs.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Adminhtml/Storesms/Grid.php
CHANGED
@@ -5,64 +5,6 @@ class Infobip_Storesms_Block_Adminhtml_Storesms_Grid extends Mage_Adminhtml_Bloc
|
|
5 |
public function __construct()
|
6 |
{
|
7 |
parent::__construct();
|
8 |
-
$this->setId('storesms_grid');
|
9 |
-
$this->setDefaultSort('id');
|
10 |
-
$this->setDefaultDir('desc');
|
11 |
-
$this->setSaveParametersInSession(true);
|
12 |
-
}
|
13 |
-
|
14 |
-
protected function _prepareCollection()
|
15 |
-
{
|
16 |
-
$collection = Mage::getModel('storesms/storesms')->getCollection();
|
17 |
-
$this->setCollection($collection);
|
18 |
-
return parent::_prepareCollection();
|
19 |
-
}
|
20 |
-
|
21 |
-
protected function _prepareColumns()
|
22 |
-
{
|
23 |
-
|
24 |
-
$this->addColumn('id', array(
|
25 |
-
'header' => Mage::helper('storesms')->__('ID'),
|
26 |
-
'align' =>'left',
|
27 |
-
'width' => '40px',
|
28 |
-
'index' => 'id',
|
29 |
-
));
|
30 |
-
$this->addColumn('created', array(
|
31 |
-
'header' => Mage::helper('storesms')->__('Created date'),
|
32 |
-
'align' =>'left',
|
33 |
-
'width' => '50px',
|
34 |
-
'index' => 'created',
|
35 |
-
'type' => 'date'
|
36 |
-
));
|
37 |
-
$this->addColumn('sender', array(
|
38 |
-
'header' => Mage::helper('storesms')->__('Sender'),
|
39 |
-
'align' =>'left',
|
40 |
-
'width' => '50px',
|
41 |
-
'index' => 'sender',
|
42 |
-
));
|
43 |
-
$this->addColumn('telephone', array(
|
44 |
-
'header' => Mage::helper('storesms')->__('Phone number'),
|
45 |
-
'align' =>'left',
|
46 |
-
'width' => '50px',
|
47 |
-
'index' => 'telephone',
|
48 |
-
));
|
49 |
-
$this->addColumn('message', array(
|
50 |
-
'header' => Mage::helper('storesms')->__('Message'),
|
51 |
-
'align' =>'left',
|
52 |
-
'width' => '250px',
|
53 |
-
'index' => 'message',
|
54 |
-
));
|
55 |
-
$this->addColumn('delivery_status', array(
|
56 |
-
'header' => Mage::helper('storesms')->__('Delivery Status'),
|
57 |
-
'align' =>'left',
|
58 |
-
'width' => '50px',
|
59 |
-
'index' => 'delivery_status',
|
60 |
-
'type' => 'options',
|
61 |
-
'options' => Mage::getModel('storesms/config')->getMessageStatuses()
|
62 |
-
));
|
63 |
-
|
64 |
-
|
65 |
-
return parent::_prepareColumns();
|
66 |
}
|
67 |
|
68 |
}
|
5 |
public function __construct()
|
6 |
{
|
7 |
parent::__construct();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
}
|
9 |
|
10 |
}
|
app/code/community/Infobip/Storesms/Block/Adminhtml/System/Config/Fieldset/Branding.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Block/Buttons/Contact.php
CHANGED
File without changes
|
app/code/community/Infobip/Storesms/Helper/Data.php
CHANGED
@@ -1,43 +1,71 @@
|
|
1 |
<?php
|
2 |
|
3 |
class Infobip_Storesms_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
-
{
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
public function getPhoneNumber($phoneNumber) {
|
9 |
-
|
10 |
$config = Mage::getModel('storesms/config');
|
11 |
$prefix = $config->getCountryPrefix();
|
12 |
-
|
|
|
13 |
if ($prefix) {
|
14 |
-
$
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
}
|
19 |
-
|
20 |
-
|
21 |
return $prefix . ltrim($phoneNumber,$toStrip);
|
22 |
|
23 |
}
|
24 |
-
|
25 |
-
|
26 |
-
public function getStatusVerbally($
|
27 |
-
|
28 |
-
$
|
29 |
-
|
30 |
-
$
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
'
|
35 |
-
'
|
36 |
-
'
|
|
|
|
|
|
|
|
|
|
|
37 |
);
|
38 |
-
|
39 |
-
return $
|
40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
-
|
43 |
}
|
1 |
<?php
|
2 |
|
3 |
class Infobip_Storesms_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
public function getPhoneNumber($phoneNumber) {
|
9 |
+
|
10 |
$config = Mage::getModel('storesms/config');
|
11 |
$prefix = $config->getCountryPrefix();
|
12 |
+
$toStrip = '+,0()';
|
13 |
+
|
14 |
if ($prefix) {
|
15 |
+
$pos = strpos($phoneNumber, $prefix);
|
16 |
+
if ($pos !== false && $pos <= 1) {
|
17 |
+
$phoneNumber = substr_replace($phoneNumber, '', $pos, strlen($prefix));
|
18 |
+
}
|
19 |
}
|
20 |
+
|
|
|
21 |
return $prefix . ltrim($phoneNumber,$toStrip);
|
22 |
|
23 |
}
|
24 |
+
|
25 |
+
|
26 |
+
public function getStatusVerbally($httpStatusCode) {
|
27 |
+
|
28 |
+
$httpStatusCode = ($httpStatusCode>=200 && $httpStatusCode<300) ? 200:$httpStatusCode;
|
29 |
+
$httpStatusCode = ($httpStatusCode>=300 && $httpStatusCode<400) ? 300:$httpStatusCode;
|
30 |
+
$httpStatusCode = ($httpStatusCode>=405 && $httpStatusCode<500) ? 402:$httpStatusCode;
|
31 |
+
$httpStatusCode = ($httpStatusCode>=500 && $httpStatusCode<600) ? 500:$httpStatusCode;
|
32 |
+
|
33 |
+
$httpStatusesVerbal = array(
|
34 |
+
'200' =>'OK',
|
35 |
+
'300' =>'REDIRECTION',
|
36 |
+
'400' =>'BAD_REQUEST',
|
37 |
+
'401' =>'UNAUTHORIZED',
|
38 |
+
'402' =>'CLIENT_ERROR',
|
39 |
+
'403' =>'FORBIDDEN',
|
40 |
+
'404' =>'NOT_FOUND',
|
41 |
+
'500' =>'SERVER_ERROR'
|
42 |
);
|
43 |
+
|
44 |
+
return $httpStatusesVerbal[$httpStatusCode];
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getLogs() {
|
49 |
+
|
50 |
+
$responseArray = Mage::getModel('storesms/apiClient') -> getMessageLogs();
|
51 |
+
$result= $responseArray["responseBodyXml"] -> results -> result;
|
52 |
+
foreach ($result as $message) {
|
53 |
+
$formatedSentAt = date("M d, Y - H:i:s P T", strtotime($message -> sentAt));
|
54 |
+
|
55 |
+
$sentMessageLog = array(
|
56 |
+
"message_id" => $message -> messageId,
|
57 |
+
"to" => $message -> to,
|
58 |
+
"from" => $message -> from,
|
59 |
+
"text" => $message -> text,
|
60 |
+
"sent_at" => $formatedSentAt,
|
61 |
+
"general_status" => $message -> status -> groupName,
|
62 |
+
"status_description" => $message -> status -> description
|
63 |
+
);
|
64 |
+
$arrayOfMessageLogs[] = $sentMessageLog;
|
65 |
+
}
|
66 |
+
|
67 |
+
return $arrayOfMessageLogs;
|
68 |
+
|
69 |
}
|
70 |
+
|
71 |
}
|
app/code/community/Infobip/Storesms/Helper/Xml.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
class Infobip_Storesms_Helper_Xml extends Mage_Core_Helper_Abstract
|
5 |
-
{
|
6 |
-
|
7 |
-
public function getStatusesFromXml($xml) {
|
8 |
-
|
9 |
-
$xmlResource = xml_parser_create();
|
10 |
-
xml_parse_into_struct($xmlResource, $xml, $vals, $index);
|
11 |
-
xml_parser_free($xmlResource);
|
12 |
-
|
13 |
-
$attributes = array();
|
14 |
-
|
15 |
-
foreach ($index['MESSAGE'] as $key) {
|
16 |
-
$attributes[] = $vals[$key]['attributes'];
|
17 |
-
}
|
18 |
-
|
19 |
-
return $attributes;
|
20 |
-
|
21 |
-
|
22 |
-
}
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
public function getStatusCode($xml) {
|
27 |
-
|
28 |
-
$vals = $index = array();
|
29 |
-
$xmlResource = xml_parser_create();
|
30 |
-
xml_parse_into_struct($xmlResource, $xml, $vals, $index);
|
31 |
-
xml_parser_free($xmlResource);
|
32 |
-
|
33 |
-
return $vals[$index['STATUS'][0]]['value']; //return value of <STATUS></STATUS> node
|
34 |
-
|
35 |
-
|
36 |
-
}
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Infobip/Storesms/Model/ApiClient.php
CHANGED
@@ -21,56 +21,55 @@ class Infobip_Storesms_Model_ApiClient {
|
|
21 |
throw new Exception(Mage::helper('storesms')->__('No recipients found'));
|
22 |
|
23 |
$config = Mage::getModel('storesms/config');
|
24 |
-
$postUrl = "http://
|
25 |
|
26 |
// XML-formatted data
|
27 |
-
|
28 |
-
$xmlLongSms = ($config->isSingle()==1) ? '':'<type>longSMS</type>';
|
29 |
-
$dataCoding = ($config->isUnicode()==1) ? '0':'8';
|
30 |
$sender = $config->getSender();
|
31 |
-
$xmlSender = ($config->isPro() && !empty($sender)) ?
|
|
|
32 |
|
33 |
-
$xmlRecipients = '<recipients>'."\r\n";
|
34 |
foreach ($smsData['recipients'] as $recipient) {
|
35 |
-
$
|
36 |
-
$xmlRecipients .=
|
|
|
37 |
}
|
38 |
-
|
39 |
-
|
40 |
$xmlString =
|
41 |
-
'<
|
42 |
-
<
|
43 |
-
<
|
44 |
-
<password>'.$config->getPassword().'</password>
|
45 |
-
</authentification>
|
46 |
-
<message>
|
47 |
-
'.$xmlSender.'
|
48 |
-
'.$xmlLongSms.'
|
49 |
<text>'.$smsData['message'].'</text>
|
50 |
-
|
51 |
-
</message>
|
52 |
-
'.$xmlRecipients.'
|
53 |
-
</SMS>';
|
54 |
|
55 |
// previously formatted XML data becomes value of "XML" POST variable
|
56 |
$fields = "XML=" . urlencode($xmlString);
|
57 |
|
58 |
$ch = curl_init();
|
|
|
59 |
|
60 |
curl_setopt($ch, CURLOPT_URL, $postUrl);
|
|
|
|
|
|
|
61 |
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
|
62 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
63 |
-
curl_setopt($ch, CURLOPT_HEADER, FALSE);
|
64 |
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
|
65 |
curl_setopt($ch, CURLOPT_MAXREDIRS,2);
|
66 |
curl_setopt($ch, CURLOPT_POST, 1);
|
67 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $
|
68 |
|
69 |
|
70 |
// response of the POST request
|
71 |
$response = curl_exec($ch);
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
curl_close($ch);
|
73 |
-
return $
|
74 |
}
|
75 |
|
76 |
|
@@ -78,15 +77,26 @@ class Infobip_Storesms_Model_ApiClient {
|
|
78 |
|
79 |
|
80 |
public function getCredits() {
|
81 |
-
|
82 |
-
$
|
|
|
83 |
$ch = curl_init();
|
84 |
curl_setopt($ch, CURLOPT_URL, $getUrl);
|
|
|
|
|
|
|
|
|
85 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
86 |
|
87 |
$response = curl_exec($ch);
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
curl_close($ch);
|
89 |
-
return $
|
90 |
|
91 |
|
92 |
}
|
@@ -109,13 +119,18 @@ class Infobip_Storesms_Model_ApiClient {
|
|
109 |
|
110 |
try {
|
111 |
|
112 |
-
$
|
|
|
|
|
113 |
|
114 |
-
if ($
|
115 |
Mage::getSingleton('core/session')->addError(Mage::helper('storesms')->__($config::WRONG_AUTH_DATA));
|
116 |
}
|
117 |
-
elseif($
|
118 |
-
|
|
|
|
|
|
|
119 |
}
|
120 |
|
121 |
}
|
@@ -127,41 +142,33 @@ class Infobip_Storesms_Model_ApiClient {
|
|
127 |
|
128 |
|
129 |
|
130 |
-
public function
|
131 |
|
132 |
$config = Mage::getModel('storesms/config');
|
133 |
-
$
|
|
|
134 |
$curl = curl_init();
|
135 |
curl_setopt($curl, CURLOPT_URL, $getUrl);
|
|
|
|
|
|
|
|
|
136 |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
137 |
$response = curl_exec($curl);
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
curl_close($curl);
|
139 |
-
return $
|
140 |
|
141 |
}
|
142 |
|
143 |
|
144 |
-
|
145 |
-
public function saveDelieveryReport($report = false) {
|
146 |
-
|
147 |
-
if ($report === false)
|
148 |
-
$report = $this->getDelieveryReport ();
|
149 |
-
|
150 |
-
if ($report == 'NO_DATA' || !$report)
|
151 |
-
return;
|
152 |
-
|
153 |
-
//if delievery report exists save it to db
|
154 |
-
$delieveryStatuses = Mage::helper('storesms/xml')->getStatusesFromXml($report);
|
155 |
-
$model = Mage::getModel('storesms/storesms');
|
156 |
-
|
157 |
-
//save delievery status for each message
|
158 |
-
foreach ($delieveryStatuses as $message) {
|
159 |
-
$model->setNewDeliveryStatus($message['ID'],$message['STATUS']);
|
160 |
-
$model->unsetData();
|
161 |
-
}
|
162 |
-
|
163 |
-
|
164 |
-
}
|
165 |
|
166 |
|
167 |
}
|
21 |
throw new Exception(Mage::helper('storesms')->__('No recipients found'));
|
22 |
|
23 |
$config = Mage::getModel('storesms/config');
|
24 |
+
$postUrl = "http://api.infobip.com/sms/1/text/single";
|
25 |
|
26 |
// XML-formatted data
|
27 |
+
|
|
|
|
|
28 |
$sender = $config->getSender();
|
29 |
+
$xmlSender = ($config->isPro() && !empty($sender)) ? $sender:'';
|
30 |
+
$xmlRecipients = '';
|
31 |
|
|
|
32 |
foreach ($smsData['recipients'] as $recipient) {
|
33 |
+
$xmlRecipients .= '<to>';
|
34 |
+
$xmlRecipients .= $recipient;
|
35 |
+
$xmlRecipients .= '</to>'."\r\n";
|
36 |
}
|
37 |
+
|
|
|
38 |
$xmlString =
|
39 |
+
'<request>
|
40 |
+
<from>'.$xmlSender.'</from>
|
41 |
+
<to>'.$xmlRecipients.'</to>
|
|
|
|
|
|
|
|
|
|
|
42 |
<text>'.$smsData['message'].'</text>
|
43 |
+
</request>';
|
|
|
|
|
|
|
44 |
|
45 |
// previously formatted XML data becomes value of "XML" POST variable
|
46 |
$fields = "XML=" . urlencode($xmlString);
|
47 |
|
48 |
$ch = curl_init();
|
49 |
+
$header = array('Content-Type:application/xml', 'Accept:application/xml');
|
50 |
|
51 |
curl_setopt($ch, CURLOPT_URL, $postUrl);
|
52 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
|
53 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
54 |
+
curl_setopt($ch, CURLOPT_USERPWD , $config->getLogin() . ":" . $config->getPassword());
|
55 |
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
|
56 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
|
57 |
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
|
58 |
curl_setopt($ch, CURLOPT_MAXREDIRS,2);
|
59 |
curl_setopt($ch, CURLOPT_POST, 1);
|
60 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlString);
|
61 |
|
62 |
|
63 |
// response of the POST request
|
64 |
$response = curl_exec($ch);
|
65 |
+
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
66 |
+
$responseBodyXml = new SimpleXMLElement($response);
|
67 |
+
$responseArray = array(
|
68 |
+
"httpStatusCode" => $httpcode,
|
69 |
+
"responseBodyXml" => $responseBodyXml
|
70 |
+
);
|
71 |
curl_close($ch);
|
72 |
+
return $responseArray;
|
73 |
}
|
74 |
|
75 |
|
77 |
|
78 |
|
79 |
public function getCredits() {
|
80 |
+
|
81 |
+
$config = Mage::getModel('storesms/config');
|
82 |
+
$getUrl = 'http://api.infobip.com//account/1/balance';
|
83 |
$ch = curl_init();
|
84 |
curl_setopt($ch, CURLOPT_URL, $getUrl);
|
85 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER , array('Accept:application/xml'));
|
86 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
87 |
+
curl_setopt($ch, CURLOPT_USERPWD , $config->getLogin() . ":" . $config->getPassword());
|
88 |
+
curl_setopt($ch, CURLOPT_HTTPGET , TRUE);
|
89 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
90 |
|
91 |
$response = curl_exec($ch);
|
92 |
+
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
93 |
+
$responseBodyXml = new SimpleXMLElement($response);
|
94 |
+
$responseArray = array(
|
95 |
+
"httpStatusCode" => $httpcode,
|
96 |
+
"responseBodyXml" => $responseBodyXml
|
97 |
+
);
|
98 |
curl_close($ch);
|
99 |
+
return $responseArray;
|
100 |
|
101 |
|
102 |
}
|
119 |
|
120 |
try {
|
121 |
|
122 |
+
$creditsArray = $this->getCredits();
|
123 |
+
$responseBodyXml = $creditsArray["responseBodyXml"];
|
124 |
+
$httpStatusCode = $creditsArray["httpStatusCode"];
|
125 |
|
126 |
+
if ($httpStatusCode==401) {
|
127 |
Mage::getSingleton('core/session')->addError(Mage::helper('storesms')->__($config::WRONG_AUTH_DATA));
|
128 |
}
|
129 |
+
elseif($httpStatusCode==200) {
|
130 |
+
$balance = $responseBodyXml -> balance;
|
131 |
+
if ($balance < $limit) {
|
132 |
+
Mage::getSingleton('core/session')->addError(Mage::helper('storesms')->__($config::LOW_CREDITS_WARNING_MESSAGE));
|
133 |
+
}
|
134 |
}
|
135 |
|
136 |
}
|
142 |
|
143 |
|
144 |
|
145 |
+
public function getMessageLogs() {
|
146 |
|
147 |
$config = Mage::getModel('storesms/config');
|
148 |
+
$limit = $config::DR_LIMIT;
|
149 |
+
$getUrl = 'http://api.infobip.com/sms/1/logs?limit='.$limit;
|
150 |
$curl = curl_init();
|
151 |
curl_setopt($curl, CURLOPT_URL, $getUrl);
|
152 |
+
curl_setopt($curl, CURLOPT_HTTPHEADER , array('Accept:application/xml'));
|
153 |
+
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
154 |
+
curl_setopt($curl, CURLOPT_USERPWD , $config->getLogin() . ":" . $config->getPassword());
|
155 |
+
curl_setopt($curl, CURLOPT_HTTPGET , TRUE);
|
156 |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
157 |
+
|
158 |
$response = curl_exec($curl);
|
159 |
+
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
160 |
+
$responseBodyXml = new SimpleXMLElement($response);
|
161 |
+
$responseArray = array(
|
162 |
+
"httpStatusCode" => $httpcode,
|
163 |
+
"responseBodyXml" => $responseBodyXml
|
164 |
+
);
|
165 |
curl_close($curl);
|
166 |
+
return $responseArray;
|
167 |
|
168 |
}
|
169 |
|
170 |
|
171 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
|
173 |
|
174 |
}
|
app/code/community/Infobip/Storesms/Model/Config.php
CHANGED
@@ -17,8 +17,9 @@
|
|
17 |
class Infobip_Storesms_Model_Config {
|
18 |
|
19 |
const LOW_CREDITS_WARNING_MESSAGE = 'Warning: Low credit level at your Storesms account. Buy credits.';
|
20 |
-
const API_HOST = '
|
21 |
const WRONG_AUTH_DATA = 'Storesms API: Wrong Password and/or Username' ;
|
|
|
22 |
|
23 |
public $contacts = array (
|
24 |
'en_US'=>'http://www.infobip.com/contact', //default international
|
@@ -75,24 +76,6 @@ class Infobip_Storesms_Model_Config {
|
|
75 |
return Mage::getStoreConfig('storesms/main_conf/sender_active');
|
76 |
}
|
77 |
|
78 |
-
|
79 |
-
/**
|
80 |
-
* Checks if allowed only single message
|
81 |
-
* @return int
|
82 |
-
*/
|
83 |
-
public function isSingle() {
|
84 |
-
$confRule = Mage::getStoreConfig('storesms/main_conf/allow_long_sms');
|
85 |
-
|
86 |
-
return ($confRule == 1) ? 0:1;
|
87 |
-
|
88 |
-
}
|
89 |
-
|
90 |
-
public function isUnicode() {
|
91 |
-
$confRule = Mage::getStoreConfig('storesms/main_conf/allow_unicode_sms');
|
92 |
-
|
93 |
-
return ($confRule == 1) ? 0:1;
|
94 |
-
|
95 |
-
}
|
96 |
|
97 |
|
98 |
public function getCountryPrefix() {
|
@@ -140,29 +123,7 @@ class Infobip_Storesms_Model_Config {
|
|
140 |
|
141 |
}
|
142 |
|
143 |
-
|
144 |
-
|
145 |
-
public function getMessageStatuses() {
|
146 |
-
$statuses = array( 'SEND_OK' =>'SEND_OK',
|
147 |
-
'AUTH_FAILED' =>'AUTH_FAILED',
|
148 |
-
'XML_ERROR' =>'XML_ERROR',
|
149 |
-
'NOT_ENOUGH_CREDITS' =>'NOT_ENOUGH_CREDITS',
|
150 |
-
'NO_RECIPIENTS' =>'NO_RECIPIENTS',
|
151 |
-
'GENERAL_ERROR' =>'GENERAL_ERROR',
|
152 |
-
'WAITING_FOR_DR' =>'WAITING_FOR_DR',
|
153 |
-
'NOT_SENT'=>'NOT_SENT',
|
154 |
-
'SENT'=>'SENT',
|
155 |
-
'NOT_DELIVERED'=>'NOT_DELIVERED',
|
156 |
-
'DELIVERED'=>'DELIVERED',
|
157 |
-
'NOT_ALLOWED'=>'NOT_ALLOWED',
|
158 |
-
'INVALID_DESTINATION_ADDRESS'=>'INVALID_DESTINATION_ADDRESS',
|
159 |
-
'INVALID_SOURCE_ADDRESS'=>'INVALID_SOURCE_ADDRESS',
|
160 |
-
'ROUTE_NOT_AVAILABLE'=>'ROUTE_NOT_AVAILABLE',
|
161 |
-
'NOT_ENOUGH_CREDITS'=>'NOT_ENOUGH_CREDITS',
|
162 |
-
'INVALID_MESSAGE_FORMAT'=>'INVALID_MESSAGE_FORMAT');
|
163 |
-
|
164 |
-
return $statuses;
|
165 |
-
}
|
166 |
|
167 |
|
168 |
}
|
17 |
class Infobip_Storesms_Model_Config {
|
18 |
|
19 |
const LOW_CREDITS_WARNING_MESSAGE = 'Warning: Low credit level at your Storesms account. Buy credits.';
|
20 |
+
const API_HOST = 'api.infobip.com';
|
21 |
const WRONG_AUTH_DATA = 'Storesms API: Wrong Password and/or Username' ;
|
22 |
+
const DR_LIMIT = 7654;
|
23 |
|
24 |
public $contacts = array (
|
25 |
'en_US'=>'http://www.infobip.com/contact', //default international
|
76 |
return Mage::getStoreConfig('storesms/main_conf/sender_active');
|
77 |
}
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
|
81 |
public function getCountryPrefix() {
|
123 |
|
124 |
}
|
125 |
|
126 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
|
129 |
}
|
app/code/community/Infobip/Storesms/Model/Cron.php
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Infobip_Storesms_Model_Cron {
|
4 |
-
|
5 |
-
public function getDelieveryReport() {
|
6 |
-
|
7 |
-
$apiClient = Mage::getModel('storesms/apiClient');
|
8 |
-
$apiClient->saveDelieveryReport();
|
9 |
-
|
10 |
-
|
11 |
-
}
|
12 |
-
|
13 |
-
|
14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Infobip/Storesms/Model/Observer.php
CHANGED
@@ -45,9 +45,10 @@ class Infobip_Storesms_Model_Observer {
|
|
45 |
if ($config->isApiEnabled()==0) return;
|
46 |
|
47 |
try {
|
48 |
-
$
|
|
|
49 |
|
50 |
-
if ($
|
51 |
throw new Exception(Mage::helper('storesms')->__($config::WRONG_AUTH_DATA));
|
52 |
}
|
53 |
else {
|
@@ -76,7 +77,6 @@ class Infobip_Storesms_Model_Observer {
|
|
76 |
$newStatus = $order->getData('status');
|
77 |
$origStatus = $order->getOrigData('status');
|
78 |
|
79 |
-
|
80 |
if (time()-self::$lastExecutionTime<=2)
|
81 |
return;
|
82 |
|
@@ -89,7 +89,6 @@ class Infobip_Storesms_Model_Observer {
|
|
89 |
if (!$message) //return if no active message template
|
90 |
return;
|
91 |
|
92 |
-
|
93 |
//getting last tracking number
|
94 |
$tracking = Mage::getResourceModel('sales/order_shipment_track_collection')->setOrderFilter($order)->getData();
|
95 |
|
@@ -100,7 +99,6 @@ class Infobip_Storesms_Model_Observer {
|
|
100 |
else
|
101 |
$last_tracking_number = 'no_tracking'; //if no tracking number set "no_tracking" message for {TRACKINGNUMBER} template
|
102 |
|
103 |
-
|
104 |
//getting order data to generate message template
|
105 |
$messageOrderData['{NAME}'] = $order->getShippingAddress()->getData('firstname');
|
106 |
$messageOrderData['{ORDERNUMBER}'] = $order->getIncrement_id();
|
@@ -113,42 +111,26 @@ class Infobip_Storesms_Model_Observer {
|
|
113 |
//prepare sms content
|
114 |
$msg['recipients'][] = Mage::helper('storesms')->getPhoneNumber($order->getShippingAddress()->getData('telephone')); //or getBillingAddress
|
115 |
$msg['message'] = $message;
|
116 |
-
$msg['single_message'] = $config->isSingle(); //allow_long_sms
|
117 |
$msg['sender'] = $config->getSender();//sender
|
118 |
|
119 |
-
|
120 |
//sending sms and getting API response
|
121 |
|
122 |
try {
|
123 |
|
124 |
$apiClient = Mage::getModel('storesms/apiClient');
|
125 |
-
$model = Mage::getModel('storesms/storesms');
|
126 |
-
$savedIds = $model->saveMessages($msg);
|
127 |
-
$msg['ids'] = $savedIds;
|
128 |
$response = $apiClient->sendByCurl($msg);
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
$responseVerbally = Mage::helper('storesms')->getStatusVerbally(Mage::helper('storesms/xml')->getStatusCode($response));
|
143 |
-
if ($responseVerbally!='SEND_OK')
|
144 |
-
Mage::throwException(Mage::helper('storesms')->__('Error sending Message:').' '.$responseVerbally);
|
145 |
-
//@successs add comment to order
|
146 |
-
$newComment = Mage::helper('storesms')->__('SMS notification sent (SMS id:').$msg['ids'][$msg['recipients'][0]].') ' ;
|
147 |
-
$history->setComment($newComment);
|
148 |
-
//Mage::getSingleton('core/session')->addSuccess($newComment);
|
149 |
-
$this->checkCreditLimit();
|
150 |
-
}
|
151 |
-
|
152 |
|
153 |
} catch (Exception $e) {
|
154 |
$newComment = Mage::helper('storesms')->__('SMS notification sending error:').' "'.$e->getMessage().'"';
|
45 |
if ($config->isApiEnabled()==0) return;
|
46 |
|
47 |
try {
|
48 |
+
$creditsXML = Mage::getModel('storesms/apiClient')->getCredits();
|
49 |
+
$ExceptionMessage = $creditsXML->requestError->serviceException->messageId;
|
50 |
|
51 |
+
if ($ExceptionMessage=='UNAUTHORIZED') {
|
52 |
throw new Exception(Mage::helper('storesms')->__($config::WRONG_AUTH_DATA));
|
53 |
}
|
54 |
else {
|
77 |
$newStatus = $order->getData('status');
|
78 |
$origStatus = $order->getOrigData('status');
|
79 |
|
|
|
80 |
if (time()-self::$lastExecutionTime<=2)
|
81 |
return;
|
82 |
|
89 |
if (!$message) //return if no active message template
|
90 |
return;
|
91 |
|
|
|
92 |
//getting last tracking number
|
93 |
$tracking = Mage::getResourceModel('sales/order_shipment_track_collection')->setOrderFilter($order)->getData();
|
94 |
|
99 |
else
|
100 |
$last_tracking_number = 'no_tracking'; //if no tracking number set "no_tracking" message for {TRACKINGNUMBER} template
|
101 |
|
|
|
102 |
//getting order data to generate message template
|
103 |
$messageOrderData['{NAME}'] = $order->getShippingAddress()->getData('firstname');
|
104 |
$messageOrderData['{ORDERNUMBER}'] = $order->getIncrement_id();
|
111 |
//prepare sms content
|
112 |
$msg['recipients'][] = Mage::helper('storesms')->getPhoneNumber($order->getShippingAddress()->getData('telephone')); //or getBillingAddress
|
113 |
$msg['message'] = $message;
|
|
|
114 |
$msg['sender'] = $config->getSender();//sender
|
115 |
|
|
|
116 |
//sending sms and getting API response
|
117 |
|
118 |
try {
|
119 |
|
120 |
$apiClient = Mage::getModel('storesms/apiClient');
|
|
|
|
|
|
|
121 |
$response = $apiClient->sendByCurl($msg);
|
122 |
+
$responseBodyXml = $response["responseBodyXml"];
|
123 |
+
$httpStatusCode = $response["httpStatusCode"];
|
124 |
+
$msgId = $responseBodyXml -> messages -> message -> messageId;
|
125 |
+
|
126 |
+
$responseVerbally = Mage::helper('storesms')->getStatusVerbally($httpStatusCode);
|
127 |
+
if ($responseVerbally!='OK')
|
128 |
+
Mage::throwException(Mage::helper('storesms')->__('Error sending Message:').' '.$responseVerbally);
|
129 |
+
//@successs add comment to order
|
130 |
+
$newComment = Mage::helper('storesms')->__('SMS notification sent (SMS id:').$msgId.') ' ;
|
131 |
+
$history->setComment($newComment);
|
132 |
+
//Mage::getSingleton('core/session')->addSuccess($newComment);
|
133 |
+
$this->checkCreditLimit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
|
135 |
} catch (Exception $e) {
|
136 |
$newComment = Mage::helper('storesms')->__('SMS notification sending error:').' "'.$e->getMessage().'"';
|
app/code/community/Infobip/Storesms/Model/Resource/Storesms.php
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Infobip_Storesms_Model_Resource_Storesms extends Mage_Core_Model_Resource_Db_Abstract {
|
4 |
-
|
5 |
-
|
6 |
-
public function _construct() {
|
7 |
-
$this->_init("storesms/infobip_storesms","id");
|
8 |
-
|
9 |
-
}
|
10 |
-
|
11 |
-
|
12 |
-
}
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Infobip/Storesms/Model/Resource/Storesms/Collection.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Infobip_Storesms_Model_Resource_Storesms_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract {
|
4 |
-
|
5 |
-
|
6 |
-
public function _construct() {
|
7 |
-
$this->_init("storesms/storesms");
|
8 |
-
|
9 |
-
}
|
10 |
-
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Infobip/Storesms/Model/Storesms.php
CHANGED
@@ -8,59 +8,7 @@ class Infobip_Storesms_Model_Storesms extends Mage_Core_Model_Abstract {
|
|
8 |
$this->_init("storesms/storesms");
|
9 |
}
|
10 |
|
11 |
-
/** Gets list of Partners or Distributors
|
12 |
-
*
|
13 |
-
* @param type $ofWhat
|
14 |
-
* @return type
|
15 |
-
*/
|
16 |
-
public function getFailedSmses() {
|
17 |
-
|
18 |
-
$collection = $this->getCollection();
|
19 |
-
$collection->addFieldToFilter("group_id" ,array("eq"=>$ofWhat));
|
20 |
-
$items = $collection->getItems();
|
21 |
-
|
22 |
-
foreach ($items as $item) {
|
23 |
-
$listToReturn[] = $item->getData();
|
24 |
-
}
|
25 |
-
|
26 |
-
return $listToReturn;
|
27 |
-
|
28 |
-
}
|
29 |
-
|
30 |
-
|
31 |
-
public function saveMessages(array $smsData) {
|
32 |
-
|
33 |
-
foreach ($smsData['recipients'] as $gsmNumber) { //save sms to database and retrieve message id's
|
34 |
-
|
35 |
-
$this->newSms($gsmNumber,$smsData['message'],'WAITING_FOR_DR',Mage::getModel('storesms/config')->getSender());
|
36 |
-
$smsId = $this->getData('id');
|
37 |
-
$smsIds[$gsmNumber] = $smsId;
|
38 |
-
$this->unsetData();
|
39 |
-
|
40 |
-
}
|
41 |
-
|
42 |
-
return $smsIds;
|
43 |
-
}
|
44 |
-
|
45 |
-
|
46 |
-
public function newSms($telephone,$message,$deliveryStatus,$sender = false) {
|
47 |
-
|
48 |
-
$this -> setSender($sender);
|
49 |
-
$this -> setTelephone($telephone);
|
50 |
-
$this -> setDeliveryStatus($deliveryStatus);
|
51 |
-
$this -> setMessage($message);
|
52 |
-
$this -> setAttemptsNumber(1);
|
53 |
-
$this -> setCreated(new Zend_Db_Expr('CURDATE()'));
|
54 |
-
$this -> save();
|
55 |
-
|
56 |
-
}
|
57 |
-
|
58 |
-
public function setNewDeliveryStatus($smsId,$deliveryStatus) {
|
59 |
-
|
60 |
-
$this -> load($smsId);
|
61 |
-
$this -> setDeliveryStatus($deliveryStatus)->save();
|
62 |
|
63 |
-
}
|
64 |
|
65 |
/**
|
66 |
* Get all phone numbers from customer address collection
|
@@ -94,17 +42,15 @@ class Infobip_Storesms_Model_Storesms extends Mage_Core_Model_Abstract {
|
|
94 |
|
95 |
try {
|
96 |
$apiClient = Mage::getModel('storesms/apiClient');
|
97 |
-
$savedIds = Mage::getModel('storesms/storesms')->saveMessages($message);
|
98 |
-
$message['ids'] = $savedIds;
|
99 |
|
100 |
$response = $apiClient->sendByCurl($message);
|
101 |
-
$
|
|
|
|
|
102 |
$errSendMessage = Mage::helper('storesms')->__('Error sending Message:');
|
103 |
-
if ($responseVerbally!='
|
104 |
throw new Exception ($errSendMessage.' '.$responseVerbally);
|
105 |
-
|
106 |
-
//if all is ok get delievery report from api
|
107 |
-
$apiClient->saveDelieveryReport();
|
108 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('storesms')->__('Message sent successfully'));
|
109 |
|
110 |
}
|
8 |
$this->_init("storesms/storesms");
|
9 |
}
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
|
|
12 |
|
13 |
/**
|
14 |
* Get all phone numbers from customer address collection
|
42 |
|
43 |
try {
|
44 |
$apiClient = Mage::getModel('storesms/apiClient');
|
|
|
|
|
45 |
|
46 |
$response = $apiClient->sendByCurl($message);
|
47 |
+
$httpStatusCode = $response["httpStatusCode"];
|
48 |
+
|
49 |
+
$responseVerbally = Mage::helper('storesms')->getStatusVerbally($httpStatusCode);
|
50 |
$errSendMessage = Mage::helper('storesms')->__('Error sending Message:');
|
51 |
+
if ($responseVerbally!='OK')
|
52 |
throw new Exception ($errSendMessage.' '.$responseVerbally);
|
53 |
+
|
|
|
|
|
54 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('storesms')->__('Message sent successfully'));
|
55 |
|
56 |
}
|
app/code/community/Infobip/Storesms/controllers/Adminhtml/StoresmsController.php
CHANGED
@@ -5,9 +5,11 @@ class Infobip_Storesms_Adminhtml_StoresmsController extends Mage_Adminhtml_Contr
|
|
5 |
|
6 |
public function indexAction() {
|
7 |
$this->loadLayout()
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
11 |
}
|
12 |
|
13 |
|
5 |
|
6 |
public function indexAction() {
|
7 |
$this->loadLayout()
|
8 |
+
->_addContent(
|
9 |
+
$this->getLayout()
|
10 |
+
->createBlock('storesms/adminhtml_adminblock')
|
11 |
+
->setTemplate('storesms/Adminblock.phtml'))
|
12 |
+
->renderLayout();
|
13 |
}
|
14 |
|
15 |
|
app/code/community/Infobip/Storesms/etc/config.xml
CHANGED
@@ -35,7 +35,7 @@
|
|
35 |
|
36 |
<modules>
|
37 |
<Infobip_Storesms>
|
38 |
-
<version>
|
39 |
</Infobip_Storesms>
|
40 |
</modules>
|
41 |
|
@@ -164,14 +164,6 @@
|
|
164 |
<class>Infobip_Storesms_Model</class>
|
165 |
<resourceModel>storesms_resource</resourceModel>
|
166 |
</storesms>
|
167 |
-
<storesms_resource>
|
168 |
-
<class>Infobip_Storesms_Model_Resource</class>
|
169 |
-
<entities>
|
170 |
-
<infobip_storesms>
|
171 |
-
<table>infobip_storesms</table>
|
172 |
-
</infobip_storesms>
|
173 |
-
</entities>
|
174 |
-
</storesms_resource>
|
175 |
</models>
|
176 |
<helpers>
|
177 |
<storesms>
|
@@ -183,13 +175,6 @@
|
|
183 |
<class>Infobip_Storesms_Block</class>
|
184 |
</storesms>
|
185 |
</blocks>
|
186 |
-
<resources>
|
187 |
-
<storesms_setup>
|
188 |
-
<setup>
|
189 |
-
<module>Infobip_Storesms</module>
|
190 |
-
</setup>
|
191 |
-
</storesms_setup>
|
192 |
-
</resources>
|
193 |
<events>
|
194 |
<sales_order_status_history_save_before>
|
195 |
<observers>
|
@@ -200,7 +185,7 @@
|
|
200 |
</observers>
|
201 |
</sales_order_status_history_save_before>
|
202 |
</events>
|
203 |
-
</global>
|
204 |
|
205 |
<default>
|
206 |
<storesms>
|
@@ -210,16 +195,4 @@
|
|
210 |
</storesms>
|
211 |
</default>
|
212 |
|
213 |
-
<crontab>
|
214 |
-
<jobs>
|
215 |
-
<storesms_getreports>
|
216 |
-
<schedule>
|
217 |
-
<cron_expr>0,30 * * * *</cron_expr>
|
218 |
-
</schedule>
|
219 |
-
<run><model>storesms/cron::getDelieveryReport</model></run>
|
220 |
-
</storesms_getreports>
|
221 |
-
</jobs>
|
222 |
-
</crontab>
|
223 |
-
|
224 |
-
|
225 |
</config>
|
35 |
|
36 |
<modules>
|
37 |
<Infobip_Storesms>
|
38 |
+
<version>2.0.1</version>
|
39 |
</Infobip_Storesms>
|
40 |
</modules>
|
41 |
|
164 |
<class>Infobip_Storesms_Model</class>
|
165 |
<resourceModel>storesms_resource</resourceModel>
|
166 |
</storesms>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
</models>
|
168 |
<helpers>
|
169 |
<storesms>
|
175 |
<class>Infobip_Storesms_Block</class>
|
176 |
</storesms>
|
177 |
</blocks>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
<events>
|
179 |
<sales_order_status_history_save_before>
|
180 |
<observers>
|
185 |
</observers>
|
186 |
</sales_order_status_history_save_before>
|
187 |
</events>
|
188 |
+
</global>
|
189 |
|
190 |
<default>
|
191 |
<storesms>
|
195 |
</storesms>
|
196 |
</default>
|
197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
</config>
|
app/code/community/Infobip/Storesms/etc/system.xml
CHANGED
@@ -74,7 +74,7 @@
|
|
74 |
</active>
|
75 |
|
76 |
<apilogin translate="label">
|
77 |
-
<label>
|
78 |
<frontend_type>text</frontend_type>
|
79 |
<sort_order>2</sort_order>
|
80 |
<show_in_default>1</show_in_default>
|
@@ -83,7 +83,7 @@
|
|
83 |
</apilogin>
|
84 |
|
85 |
<apipassword translate="label">
|
86 |
-
<label>
|
87 |
<frontend_type>obscure</frontend_type>
|
88 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
89 |
<sort_order>3</sort_order>
|
@@ -132,26 +132,6 @@
|
|
132 |
<validate>validate-length maximum-length-5</validate>
|
133 |
</country_prefix>
|
134 |
|
135 |
-
<allow_long_sms translate="label">
|
136 |
-
<label>Allow long messages (more than 160 chars or 70 for unicode)</label>
|
137 |
-
<frontend_type>select</frontend_type>
|
138 |
-
<source_model>adminhtml/system_config_source_yesno</source_model>
|
139 |
-
<sort_order>25</sort_order>
|
140 |
-
<show_in_default>1</show_in_default>
|
141 |
-
<show_in_website>1</show_in_website>
|
142 |
-
<show_in_store>1</show_in_store>
|
143 |
-
</allow_long_sms>
|
144 |
-
|
145 |
-
<allow_unicode_sms translate="label">
|
146 |
-
<label>Send as unicode message (70 characters)</label>
|
147 |
-
<frontend_type>select</frontend_type>
|
148 |
-
<source_model>adminhtml/system_config_source_yesno</source_model>
|
149 |
-
<sort_order>27</sort_order>
|
150 |
-
<show_in_default>1</show_in_default>
|
151 |
-
<show_in_website>1</show_in_website>
|
152 |
-
<show_in_store>1</show_in_store>
|
153 |
-
</allow_unicode_sms>
|
154 |
-
|
155 |
<credit_alert_limit translate="label comment">
|
156 |
<label>Notify if my Storesms account credits is below:</label>
|
157 |
<comment>0 - turn off/no alert</comment>
|
@@ -317,7 +297,7 @@
|
|
317 |
|
318 |
<newaccount translate="label comment" module="storesms">
|
319 |
<label>Sign up</label>
|
320 |
-
<comment><![CDATA[<p><strong>How to register and start using the Plugin?</strong><br /><br />
|
321 |
<frontend_type>text</frontend_type>
|
322 |
<sort_order>210</sort_order>
|
323 |
<show_in_default>1</show_in_default>
|
74 |
</active>
|
75 |
|
76 |
<apilogin translate="label">
|
77 |
+
<label>Username</label>
|
78 |
<frontend_type>text</frontend_type>
|
79 |
<sort_order>2</sort_order>
|
80 |
<show_in_default>1</show_in_default>
|
83 |
</apilogin>
|
84 |
|
85 |
<apipassword translate="label">
|
86 |
+
<label>Password</label>
|
87 |
<frontend_type>obscure</frontend_type>
|
88 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
89 |
<sort_order>3</sort_order>
|
132 |
<validate>validate-length maximum-length-5</validate>
|
133 |
</country_prefix>
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
<credit_alert_limit translate="label comment">
|
136 |
<label>Notify if my Storesms account credits is below:</label>
|
137 |
<comment>0 - turn off/no alert</comment>
|
297 |
|
298 |
<newaccount translate="label comment" module="storesms">
|
299 |
<label>Sign up</label>
|
300 |
+
<comment><![CDATA[<p><strong>How to register and start using the Plugin?</strong><br /><br />In order to use Infobip StoreSMS it is necessary to register on the Infobip platform (<a href="http://www.infobip.com/en/contact" target="_blank">http://www.infobip.com</a>). This allows you to get your login credentials and password for the plugin.</p>]]></comment>
|
301 |
<frontend_type>text</frontend_type>
|
302 |
<sort_order>210</sort_order>
|
303 |
<show_in_default>1</show_in_default>
|
app/code/community/Infobip/Storesms/sql/storesms_setup/install-1.0.0.php
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$installer = $this;
|
4 |
-
$installer->startSetup();
|
5 |
-
$table = $installer->getConnection()->newTable($installer->getTable('infobip_storesms'))
|
6 |
-
->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
7 |
-
'identity' => true,
|
8 |
-
'unsigned' => true,
|
9 |
-
'nullable' => false,
|
10 |
-
'primary' => true
|
11 |
-
), 'SMS ID')
|
12 |
-
->addColumn('sender', Varien_Db_Ddl_Table::TYPE_TEXT, 100, array(
|
13 |
-
'nullable' => false,
|
14 |
-
), 'Sender')
|
15 |
-
->addColumn('telephone', Varien_Db_Ddl_Table::TYPE_TEXT, 50, array(
|
16 |
-
'nullable' => false,
|
17 |
-
), 'Telephone')
|
18 |
-
->addColumn('message', Varien_Db_Ddl_Table::TYPE_TEXT, 1000, array(
|
19 |
-
'nullable' => false,
|
20 |
-
), 'Message')
|
21 |
-
->addColumn('attempts_number', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
22 |
-
'nullable' => false,
|
23 |
-
), 'Send Attempts')
|
24 |
-
->addColumn('delivery_status', Varien_Db_Ddl_Table::TYPE_TEXT, 100, array(
|
25 |
-
'nullable' => false,
|
26 |
-
), 'Delivery Status')
|
27 |
-
->addColumn('created', Varien_Db_Ddl_Table::TYPE_DATE , null, array(
|
28 |
-
'nullable' => false,
|
29 |
-
), 'First send date')
|
30 |
-
->setComment('Storesms API SMSes');
|
31 |
-
$installer->getConnection()->createTable($table);
|
32 |
-
$installer->endSetup();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/design/adminhtml/base/default/layout/Infobip_Storesms.xml
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<layout version="0.1.1">
|
3 |
-
<default>
|
4 |
-
<reference name="head">
|
5 |
-
<action method="addJs"><script>infobipStoresms/storesmscounter.js</script></action>
|
6 |
-
<action method="addCss"><name>css/storesms/skin.css</name></action>
|
7 |
-
</reference>
|
8 |
-
</default>
|
9 |
-
<adminhtml_storesms_index>
|
10 |
-
<reference name="content">
|
11 |
-
<block type="storesms/adminhtml_storesms" name="storesms" />
|
12 |
-
</reference>
|
13 |
-
</adminhtml_storesms_index>
|
14 |
-
|
15 |
-
<storesms_adminhtml_storesms_index>
|
16 |
-
<reference name="content">
|
17 |
-
<block type="storesms/adminhtml_storesms" name="storesms" />
|
18 |
-
</reference>
|
19 |
-
</storesms_adminhtml_storesms_index>
|
20 |
</layout>
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<layout version="0.1.1">
|
3 |
+
<default>
|
4 |
+
<reference name="head">
|
5 |
+
<action method="addJs"><script>infobipStoresms/storesmscounter.js</script></action>
|
6 |
+
<action method="addCss"><name>css/storesms/skin.css</name></action>
|
7 |
+
</reference>
|
8 |
+
</default>
|
9 |
+
<adminhtml_storesms_index>
|
10 |
+
<reference name="content">
|
11 |
+
<block type="storesms/adminhtml_storesms" name="storesms" />
|
12 |
+
</reference>
|
13 |
+
</adminhtml_storesms_index>
|
14 |
+
|
15 |
+
<storesms_adminhtml_storesms_index>
|
16 |
+
<reference name="content">
|
17 |
+
<block type="storesms/adminhtml_storesms" name="storesms" />
|
18 |
+
</reference>
|
19 |
+
</storesms_adminhtml_storesms_index>
|
20 |
</layout>
|
app/design/adminhtml/base/default/template/storesms/Adminblock.phtml
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
2 |
+
"http://www.w3.org/TR/html4/strict.dtd">
|
3 |
+
<html>
|
4 |
+
<head>
|
5 |
+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
|
6 |
+
<script type="text/javascript">
|
7 |
+
|
8 |
+
var $j = jQuery.noConflict();
|
9 |
+
|
10 |
+
function ClearFields() {
|
11 |
+
document.getElementById("storesms_grid_filter_message_id").value = "";
|
12 |
+
document.getElementById("storesms_grid_filter_to").value = "";
|
13 |
+
document.getElementById("storesms_grid_filter_from").value = "";
|
14 |
+
document.getElementById("storesms_grid_filter_text").value = "";
|
15 |
+
document.getElementById("storesms_grid_filter_status").value = "";
|
16 |
+
|
17 |
+
var $rows = $j('#storesms_grid_table tbody tr');
|
18 |
+
$rows.show();
|
19 |
+
}
|
20 |
+
|
21 |
+
window.onload = function FilterSearch() {
|
22 |
+
|
23 |
+
(function($j) {
|
24 |
+
$j.fn.multiFilter = function(filters) {
|
25 |
+
var $table = $j(this);
|
26 |
+
return $table.find('tbody > tr').each(function() {
|
27 |
+
var tr = $j(this);
|
28 |
+
|
29 |
+
// Make it an array to avoid special cases later.
|
30 |
+
if(!$j.isArray(filters))
|
31 |
+
filters = [ filters ];
|
32 |
+
|
33 |
+
howMany = 0;
|
34 |
+
for(i = 0, f = filters[0]; i < filters.length; f = filters[++i]) {
|
35 |
+
var index = 0;
|
36 |
+
$table.find('thead > tr > th').each(function(i) {
|
37 |
+
if($j(this).text() == f.column) {
|
38 |
+
index = i;
|
39 |
+
return false;
|
40 |
+
}
|
41 |
+
});
|
42 |
+
var text = tr.find('td:eq(' + index + ')').text();
|
43 |
+
if(text.toLowerCase().indexOf(f.word.toLowerCase()) != -1)
|
44 |
+
++howMany;
|
45 |
+
}
|
46 |
+
if(howMany == filters.length)
|
47 |
+
tr.show();
|
48 |
+
else
|
49 |
+
tr.hide();
|
50 |
+
});
|
51 |
+
};
|
52 |
+
})(jQuery);
|
53 |
+
|
54 |
+
$j('#storesms_grid_filter_message_id').keyup(function() {
|
55 |
+
var t = $j('table');
|
56 |
+
$j('#storesms_grid_table').multiFilter([
|
57 |
+
{ column: 'Message ID', word: this.value },
|
58 |
+
{ column: 'To', word: $j('#storesms_grid_filter_to').val() },
|
59 |
+
{ column: 'From', word: $j('#storesms_grid_filter_from').val() },
|
60 |
+
{ column: 'Text', word: $j('#storesms_grid_filter_text').val() },
|
61 |
+
{ column: 'General Status',word: $j('#storesms_grid_filter_status').val() }
|
62 |
+
]);
|
63 |
+
});
|
64 |
+
|
65 |
+
$j('#storesms_grid_filter_to').keyup(function() {
|
66 |
+
var t = $j('table');
|
67 |
+
$j('#storesms_grid_table').multiFilter([
|
68 |
+
{ column: 'Message ID', word: $j('#storesms_grid_filter_message_id').val() },
|
69 |
+
{ column: 'To', word: this.value },
|
70 |
+
{ column: 'From', word: $j('#storesms_grid_filter_from').val() },
|
71 |
+
{ column: 'Text', word: $j('#storesms_grid_filter_text').val() },
|
72 |
+
{ column: 'General Status',word: $j('#storesms_grid_filter_status').val() }
|
73 |
+
]);
|
74 |
+
});
|
75 |
+
|
76 |
+
$j('#storesms_grid_filter_from').keyup(function() {
|
77 |
+
var t = $j('table');
|
78 |
+
$j('#storesms_grid_table').multiFilter([
|
79 |
+
{ column: 'Message ID', word: $j('#storesms_grid_filter_message_id').val() },
|
80 |
+
{ column: 'To', word: $j('#storesms_grid_filter_to').val() },
|
81 |
+
{ column: 'From', word: this.value },
|
82 |
+
{ column: 'Text', word: $j('#storesms_grid_filter_text').val() },
|
83 |
+
{ column: 'General Status',word: $j('#storesms_grid_filter_status').val() }
|
84 |
+
]);
|
85 |
+
});
|
86 |
+
|
87 |
+
$j('#storesms_grid_filter_text').keyup(function() {
|
88 |
+
var t = $j('table');
|
89 |
+
$j('#storesms_grid_table').multiFilter([
|
90 |
+
{ column: 'Message ID', word: $j('#storesms_grid_filter_message_id').val() },
|
91 |
+
{ column: 'To', word: $j('#storesms_grid_filter_to').val() },
|
92 |
+
{ column: 'From', word: $j('#storesms_grid_filter_from').val() },
|
93 |
+
{ column: 'Text', word: this.value },
|
94 |
+
{ column: 'General Status',word: $j('#storesms_grid_filter_status').val() }
|
95 |
+
]);
|
96 |
+
});
|
97 |
+
|
98 |
+
$j('#storesms_grid_filter_status').change(function() {
|
99 |
+
var t = $j('table');
|
100 |
+
$j('#storesms_grid_table').multiFilter([
|
101 |
+
{ column: 'Message ID', word: $j('#storesms_grid_filter_message_id').val() },
|
102 |
+
{ column: 'To', word: $j('#storesms_grid_filter_to').val() },
|
103 |
+
{ column: 'From', word: $j('#storesms_grid_filter_from').val() },
|
104 |
+
{ column: 'Text', word: $j('#storesms_grid_filter_text').val() },
|
105 |
+
{ column: 'General Status',word: this.value }
|
106 |
+
]);
|
107 |
+
});
|
108 |
+
|
109 |
+
}
|
110 |
+
</script>
|
111 |
+
</head>
|
112 |
+
<body>
|
113 |
+
<div id="storesms_grid">
|
114 |
+
<table cellspacing="0" class="actions">
|
115 |
+
<tbody>
|
116 |
+
<tr>
|
117 |
+
<td class="filter-actions a-right">
|
118 |
+
<button id="id_reset" title="Reset Filter" type="button" class="scalable " onclick="ClearFields()" style=""><span>Reset Filter</span></button>
|
119 |
+
</td>
|
120 |
+
</tr>
|
121 |
+
</tbody>
|
122 |
+
</table>
|
123 |
+
<div class="grid">
|
124 |
+
<div class="hor-scroll">
|
125 |
+
<table cellspacing="0" class="data" id="storesms_grid_table">
|
126 |
+
<colgroup><col width="50">
|
127 |
+
<col width="50">
|
128 |
+
<col width="50">
|
129 |
+
<col width="250">
|
130 |
+
<col width="50">
|
131 |
+
<col width="50">
|
132 |
+
<col width="150">
|
133 |
+
</colgroup><thead>
|
134 |
+
<tr class="headings">
|
135 |
+
<th>Message ID</th>
|
136 |
+
<th>To</th>
|
137 |
+
<th>From</th>
|
138 |
+
<th>Text</th>
|
139 |
+
<th>General Status</th>
|
140 |
+
<th>Status Description</th>
|
141 |
+
<th>Sent At</th>
|
142 |
+
</tr>
|
143 |
+
<tr class="filter">
|
144 |
+
<th><div class="field-100"><input type="text" name="message_id" id="storesms_grid_filter_message_id" value="" class="input-text no-changes"></div></th>
|
145 |
+
<th><div class="field-100"><input type="text" name="to" id="storesms_grid_filter_to" value="" class="input-text no-changes"></div></th>
|
146 |
+
<th><div class="field-100"><input type="text" name="from" id="storesms_grid_filter_from" value="" class="input-text no-changes"></div></th>
|
147 |
+
<th><div class="field-100"><input type="text" name="text" id="storesms_grid_filter_text" value="" class="input-text no-changes"></div></th>
|
148 |
+
<th><select id="storesms_grid_filter_status" name="general status">
|
149 |
+
<option value=""></option>
|
150 |
+
<?php
|
151 |
+
// distinct result
|
152 |
+
$arrayOfMessageLogs = Mage::helper('storesms')->getLogs();
|
153 |
+
foreach ($arrayOfMessageLogs as $sentMessageLog) {
|
154 |
+
$generalStatuses[] = $sentMessageLog["general_status"];
|
155 |
+
|
156 |
+
}
|
157 |
+
$uniqueGeneralStatuses = array_unique($generalStatuses);
|
158 |
+
foreach ($uniqueGeneralStatuses as $genStat) {
|
159 |
+
echo "<option value=\"". $genStat ."\">". $genStat ."</option>";
|
160 |
+
}
|
161 |
+
?>
|
162 |
+
</select></th>
|
163 |
+
<th></th>
|
164 |
+
<th></th>
|
165 |
+
</tr>
|
166 |
+
</thead>
|
167 |
+
|
168 |
+
<tbody>
|
169 |
+
|
170 |
+
|
171 |
+
<?php
|
172 |
+
|
173 |
+
foreach ($arrayOfMessageLogs as $sentMessageLog) {
|
174 |
+
?>
|
175 |
+
<tr title="#" class="pointer">
|
176 |
+
<td class="a-left ">
|
177 |
+
<?php echo $sentMessageLog["message_id"]; ?>
|
178 |
+
</td>
|
179 |
+
<td id="col_to" class="a-left ">
|
180 |
+
<?php echo $sentMessageLog["to"]; ?>
|
181 |
+
</td>
|
182 |
+
<td id="col_from" class="a-left ">
|
183 |
+
<?php echo $sentMessageLog["from"]; ?>
|
184 |
+
</td>
|
185 |
+
<td class="a-left ">
|
186 |
+
<?php echo $sentMessageLog["text"]; ?>
|
187 |
+
</td>
|
188 |
+
<td class="a-left ">
|
189 |
+
<?php echo $sentMessageLog["general_status"]; ?>
|
190 |
+
</td>
|
191 |
+
<td class="a-left last ">
|
192 |
+
<?php echo $sentMessageLog["status_description"]; ?>
|
193 |
+
</td>
|
194 |
+
<td class="a-left ">
|
195 |
+
<?php echo $sentMessageLog["sent_at"]; ?>
|
196 |
+
</td>
|
197 |
+
</tr>
|
198 |
+
<?php
|
199 |
+
|
200 |
+
} ?>
|
201 |
+
|
202 |
+
</tbody>
|
203 |
+
|
204 |
+
|
205 |
+
</table>
|
206 |
+
</div>
|
207 |
+
</div>
|
208 |
+
</div>
|
209 |
+
</body>
|
210 |
+
</html>
|
app/design/adminhtml/base/default/template/storesms/system/config/fieldset/branding.phtml
CHANGED
File without changes
|
app/etc/modules/Infobip_Storesms.xml
CHANGED
File without changes
|
app/locale/pl_PL/Infobip_Storesms.csv
DELETED
@@ -1,47 +0,0 @@
|
|
1 |
-
"StoreSMS - Summary","StoreSMS - Podsumowanie"
|
2 |
-
"StoreSMS - Send Bulk SMS","StoreSMS: Hurtowa wysyłka wiadomości"
|
3 |
-
"Send Bulk SMS","Wyślij wiadomość hurtową"
|
4 |
-
"Send","Wyślij"
|
5 |
-
"StoreSMS - Settings","StoreSMS - Ustawienia"
|
6 |
-
"Storesms - Main Configuration","Storesms - konfiguracja podstawowa"
|
7 |
-
"Enabled","Włączony"
|
8 |
-
"API Login","API Login"
|
9 |
-
"API Password","API Hasło"
|
10 |
-
"Store name","Nazwa sklepu"
|
11 |
-
"Send as Pro Message (with sender)","Wyślij jako wiadomość Pro (z nadawcą)"
|
12 |
-
"Sender (max. 11 chars)","Nadawca (max. 11 znaków)"
|
13 |
-
"Country prefix","Prefix kraju"
|
14 |
-
"Allow long messages (more than 160 chars)","Zezwól na długie wiadomości (dłuższe niż 160 znaków)"
|
15 |
-
"Notify if my Storesms account credits is below:","Poinformuj mnie jeśli na moim koncie Storesms pozostało środków mniej niż:"
|
16 |
-
"<div style=""padding:10px;background-color:#fff;border:1px solid #CCC;margin-bottom:7px;"">In each template you can use dynamic data. You can add <br />- {NAME} - customer name <br />- {ORDERSTATUS} - status of an order <br />- {ORDERNUMBER} - order number<br />- {TRACKINGNUMBER} - tracking number (if exists)<br />- {STORENAME} - the name of the store<br />Example: Your order #{ORDERNUMBER} waits for a fee. Regards {STORENAME}<br />SMS Content: Your order #100000012 waits for a fee. Regards infobip.com</div><div id=""storesmsCounterContainer"">Message length: <span id=""storesmsCounter"">0</span> chars.<br /> <span id=""storesmsTooLongAlert""> Warning: The template can be to long for 1 SMS. Please shorten the message or allow to send long messages in Main Configuration.</span></div><br />","<div style=""padding:10px;background-color:#fff;border:1px solid #CCC;margin-bottom:7px;""><p>W każdym szablonie możesz używać danych dynamicznych. Możesz dodać:<br /> - {NAME} - imię klienta <br /> - {ORDERSTATUS} - status przesyłki <br /> - {ORDERNUMBER} - nr zamówienia<br /> - {TRACKINGNUMBER} - nr pozwalający na śledzenie przesyłki (jeśli istnieje)<br /> - {STORENAME} - nazwa sklepu<br /> Przykład: Twoje zamówienie nr {ORDERNUMBER} czeka na wpłatę. Pozdrawiamy {STORENAME}.<br /> Treść wysłanego SMSa: Twoje zamówienie nr 100000012 czeka na wpłatę. Pozdrawiamy infobip.com.pl.</p></div><div id=""storesmsCounterContainer"">Długość wiadomości: <span id=""storesmsCounter"">0</span> znaków.<br /> <span id=""storesmsTooLongAlert""> Uwaga: Szablon może być zbyt długi na 1 SMSa. Proszę skrócić wiadomość lub zezwolić na wysyłkę długich wiadomości w konfiguracji podstawowej.</span></div><br />"
|
17 |
-
"Send SMS after status changed to ""Pending Payment""","Wyślij SMS po zmianie statusu zamówienia na ""Oczekuje na wpłatę"""
|
18 |
-
"Message templates","Szablony wiadomości"
|
19 |
-
"Template","Szablon"
|
20 |
-
"Send SMS after status changed to ""On Hold""","Wyślij SMS po zmianie statusu zamówienia na ""Wstrzymano"""
|
21 |
-
"Send SMS after status changed to ""Processing""","Wyślij SMS po zmianie statusu zamówienia na ""Przetwarzam"""
|
22 |
-
"Send SMS after status changed to ""Canceled""","Wyślij SMS po zmianie statusu zamówienia na ""Anulowano"""
|
23 |
-
"end SMS after status changed to ""Complete""","Wyślij SMS po zmianie statusu zamówienia na ""Zakończone"""
|
24 |
-
"Send SMS after status changed to ""Closed""","Wyślij SMS po zmianie statusu zamówienia na ""Zamknięte"""
|
25 |
-
"Contact Us","Skontaktuj się z nami"
|
26 |
-
"Sign up","Zarejestruj się"
|
27 |
-
"Error sending Message:","Błąd podczas wysyłania wiadomości"
|
28 |
-
"Message sent successfully","Wiadomość wysłana"
|
29 |
-
"SMS notification sent (SMS id:","Powiadomienie SMS wysłane (id SMSa:"
|
30 |
-
"SMS notification sending error:","Błąd podczas wysyłania powiadomienia SMS:"
|
31 |
-
"Warning: Low credit level at your Storesms account. Buy credits.","Ostrzeżenie: Niski stan środków na koncie StoreSMS"
|
32 |
-
"Storesms API: Wrong Password and/or Username","StoreSMS API: Nieprawidłowa nazwa użytkownika lub hasło"
|
33 |
-
"No recipients found","Brak odbiorcy/ów"
|
34 |
-
"Open Sign Up form","Otwórz formularz rejestracyjny"
|
35 |
-
"Open contact form","Otwórz formularz kontaktowy"
|
36 |
-
"Storesms API: Messages summary","Storesms API: Podsumowanie wiadomości"
|
37 |
-
"ID","id"
|
38 |
-
"Created date","Data wysłania"
|
39 |
-
"Sender","Nadawca"
|
40 |
-
"Phone number","Odbiorca (nr tel.)"
|
41 |
-
"Message","Treść wiadomości"
|
42 |
-
"Delivery Status","Status doręczenia"
|
43 |
-
"SMS Content","Treść wiadomości"
|
44 |
-
"<p><strong>How to register and start using the Plugin?</strong><br /><br />Because Parseco provides Infobip's API integration, in order to use Infobip StoreSMS it is necessary to register over the Parseco platform (<a href=""http://www.parseco.com/"" target=""_blank"">www.parseco.com</a>). This allows you to get your login credentials and password for the plugin.</p>","<p><strong>Rejestracja i rozpoczęcie korzystania z Pluginu</strong><br /><br />Parseco jest marką Infobip pozwalającą na szybką integrację. Aby korzystać z Infobip Store SMS, niezbędna jest rejestracja na platformie Parseco (<a href=""http://www.parseco.com/"" target=""_blank"">www.parseco.com</a>). W ten sposób uzyskasz login i hasło wymagane przez Infobip Store SMS.</p>"
|
45 |
-
"<br /><p><strong>Using other Infobip services with Infobip StoreSMS</strong><br /><br /> Infobip is a global provider of mobile solutions connecting mobile network operators and enterprises through an in-house developed and operated mobile services cloud. SMS offers an ideal opportunity for business expansion because of its ubiquity, marketing effectiveness and wide reach.<br /> To find out more about SMS messaging solution visit <a href=""http://www.infobip.com/"" target=""_blank"">www.infobip.com</a><br />Magento users can go to <strong>System > Import/export > Dataflow Profiles > Export Customers > Run Profile</strong> to create a file that could later be imported to all of Infobip's other tools. This way, you can also use Infobip's Worx platform and inform your customers over SMS.</p>","<br /><p><strong>Korzystanie z pozostałych rozwiązań Infobip dla Infobip StoreSMS</strong><br /><br />Infobip jest globalnym dostawcą usług mobilnych, łączacym przedsiębiorców z operatorami telefonii komórkowej poprzez wewnętrznie tworzone, działające w chmurze aplikacje. Dzięki swojej uniwersalności I efektywności, SMS stanowi doskonały sposób na rozwój biznesu.<br />Aby dowiedzieć się więcej wejdź na <a href=""http://www.infobip.com.pl/"" target=""_blank"">www.infobip.com.pl</a><br /> Użytkownicy Magento mogą przejść do zakładki <strong>System > Import/export > Dataflow Profiles > Export Customers > Uruchom Profil</strong> aby utworzyć plik, który może później być użyty z narzędziami Infobip. W ten sposób, możesz wykorzystać pakiet Infobip Worx, do lepszej komunikacji z klientem.</p>"
|
46 |
-
"Message (max. 160 characters).","Treść (max. 160 znaków)."
|
47 |
-
"Bulk messaging is the process of sending a large number of SMS messages to various mobile number databases (mobile numbers). Bulk SMS is commonly used for alerts, reminders, marketing but also for providing information and communication between both staff and customers.","Hurtowa komunikacja to proces wysyłki dużej ilości wiadomości SMS do odpowiednio dużej bazy numerów komórkowych. Komunikacja hurtowa jest zazwyczaj używana do przypomnień, przekazywania informacji marketingowej lub komunikacji z klientami."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
js/infobipStoresms/storesmscounter.js
CHANGED
@@ -1,81 +1,81 @@
|
|
1 |
-
// Create the class
|
2 |
-
|
3 |
-
var myStoresmsCounter = Class.create({
|
4 |
-
initialize: function(eventToObserve) // Is called when the page has finished loading by the Event.observe code below
|
5 |
-
{
|
6 |
-
|
7 |
-
var storesmsCounter = document.getElementById('storesmsCounter');
|
8 |
-
var storesmsCounterContainer = document.getElementById('storesmsCounterContainer');
|
9 |
-
var maxchars = 160;
|
10 |
-
var childAdded = false;
|
11 |
-
var activeTextArea = false;
|
12 |
-
var textAreaId = false;
|
13 |
-
// var storeNameLenght = document.getElementById('storesms_main_conf_storename').value.length;
|
14 |
-
|
15 |
-
$('storesms_templates').observe(eventToObserve, function(event) {
|
16 |
-
var textlength = 0;
|
17 |
-
activeTextArea = event.findElement('textarea');
|
18 |
-
|
19 |
-
if (activeTextArea) {
|
20 |
-
|
21 |
-
|
22 |
-
if (textAreaId !== activeTextArea.id) {
|
23 |
-
storesmsCounterContainer.remove(); //remove old storesmsCounterContainer
|
24 |
-
activeTextArea.insert({//reinitialize conterContainer in new position
|
25 |
-
after: storesmsCounterContainer
|
26 |
-
});
|
27 |
-
storesmsCounterContainer.show(); //snow storesmsCounter div at starts
|
28 |
-
}
|
29 |
-
|
30 |
-
textlength = activeTextArea.value.length;
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
storesmsCounter.update(textlength);
|
35 |
-
|
36 |
-
if (textlength <= (maxchars - 50)) {
|
37 |
-
|
38 |
-
$('storesmsCounter').setStyle({
|
39 |
-
fontSize: '150%',
|
40 |
-
fontWeight: 'normal',
|
41 |
-
color: '#0F910F'
|
42 |
-
});
|
43 |
-
$('storesmsTooLongAlert').hide();
|
44 |
-
|
45 |
-
}
|
46 |
-
else if (textlength <= (maxchars - 20)) {
|
47 |
-
|
48 |
-
$('storesmsCounter').setStyle({
|
49 |
-
fontWeight: 'bold',
|
50 |
-
color: '#FF8400'
|
51 |
-
});
|
52 |
-
$('storesmsTooLongAlert').hide();
|
53 |
-
|
54 |
-
} else {
|
55 |
-
|
56 |
-
$('storesmsCounter').setStyle({
|
57 |
-
fontWeight: ' bold',
|
58 |
-
color: '#B80000'
|
59 |
-
});
|
60 |
-
$('storesmsTooLongAlert').show();
|
61 |
-
|
62 |
-
}
|
63 |
-
|
64 |
-
|
65 |
-
}
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
});
|
71 |
-
|
72 |
-
}
|
73 |
-
|
74 |
-
});
|
75 |
-
// Global variable for the instance of the class
|
76 |
-
// Creating an instance of the class if the page has finished loading
|
77 |
-
Event.observe(window, 'load', function() {
|
78 |
-
document.getElementById('storesmsCounterContainer').hide(); //hide storesmsCounter div at start
|
79 |
-
new myStoresmsCounter('click');
|
80 |
-
new myStoresmsCounter('keyup');
|
81 |
});
|
1 |
+
// Create the class
|
2 |
+
|
3 |
+
var myStoresmsCounter = Class.create({
|
4 |
+
initialize: function(eventToObserve) // Is called when the page has finished loading by the Event.observe code below
|
5 |
+
{
|
6 |
+
|
7 |
+
var storesmsCounter = document.getElementById('storesmsCounter');
|
8 |
+
var storesmsCounterContainer = document.getElementById('storesmsCounterContainer');
|
9 |
+
var maxchars = 160;
|
10 |
+
var childAdded = false;
|
11 |
+
var activeTextArea = false;
|
12 |
+
var textAreaId = false;
|
13 |
+
// var storeNameLenght = document.getElementById('storesms_main_conf_storename').value.length;
|
14 |
+
|
15 |
+
$('storesms_templates').observe(eventToObserve, function(event) {
|
16 |
+
var textlength = 0;
|
17 |
+
activeTextArea = event.findElement('textarea');
|
18 |
+
|
19 |
+
if (activeTextArea) {
|
20 |
+
|
21 |
+
|
22 |
+
if (textAreaId !== activeTextArea.id) {
|
23 |
+
storesmsCounterContainer.remove(); //remove old storesmsCounterContainer
|
24 |
+
activeTextArea.insert({//reinitialize conterContainer in new position
|
25 |
+
after: storesmsCounterContainer
|
26 |
+
});
|
27 |
+
storesmsCounterContainer.show(); //snow storesmsCounter div at starts
|
28 |
+
}
|
29 |
+
|
30 |
+
textlength = activeTextArea.value.length;
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
storesmsCounter.update(textlength);
|
35 |
+
|
36 |
+
if (textlength <= (maxchars - 50)) {
|
37 |
+
|
38 |
+
$('storesmsCounter').setStyle({
|
39 |
+
fontSize: '150%',
|
40 |
+
fontWeight: 'normal',
|
41 |
+
color: '#0F910F'
|
42 |
+
});
|
43 |
+
$('storesmsTooLongAlert').hide();
|
44 |
+
|
45 |
+
}
|
46 |
+
else if (textlength <= (maxchars - 20)) {
|
47 |
+
|
48 |
+
$('storesmsCounter').setStyle({
|
49 |
+
fontWeight: 'bold',
|
50 |
+
color: '#FF8400'
|
51 |
+
});
|
52 |
+
$('storesmsTooLongAlert').hide();
|
53 |
+
|
54 |
+
} else {
|
55 |
+
|
56 |
+
$('storesmsCounter').setStyle({
|
57 |
+
fontWeight: ' bold',
|
58 |
+
color: '#B80000'
|
59 |
+
});
|
60 |
+
$('storesmsTooLongAlert').show();
|
61 |
+
|
62 |
+
}
|
63 |
+
|
64 |
+
|
65 |
+
}
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
});
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
});
|
75 |
+
// Global variable for the instance of the class
|
76 |
+
// Creating an instance of the class if the page has finished loading
|
77 |
+
Event.observe(window, 'load', function() {
|
78 |
+
document.getElementById('storesmsCounterContainer').hide(); //hide storesmsCounter div at start
|
79 |
+
new myStoresmsCounter('click');
|
80 |
+
new myStoresmsCounter('keyup');
|
81 |
});
|
package.xml
CHANGED
@@ -1,29 +1,159 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<package>
|
3 |
-
<name>Infobip_Storesms</name>
|
4 |
-
<version>
|
5 |
-
<stability>stable</stability>
|
6 |
-
<license>Infobip StoreSMS licence</license>
|
7 |
-
<channel>community</channel>
|
8 |
-
<extends/>
|
9 |
-
<summary>By using Infobip StoreSMS you can easily keep your customers informed about the status of their shipments.
|
10 |
-
|
11 |
-
|
12 |
-
Infobip StoreSMS
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-

|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
<
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Infobip_Storesms</name>
|
4 |
+
<version>2.0.1</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>Infobip StoreSMS licence</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>By using Infobip StoreSMS you can easily keep your customers informed about the status of their shipments.
|
10 |
+
If your business sells or makes products that need shipping, Infobip StoreSMS is the right solution for you.
|
11 |
+
</summary>
|
12 |
+
<description>By using Infobip StoreSMS you can easily keep your customers informed about the status of their
|
13 |
+
shipments. If your business sells or makes products that need shipping, Infobip StoreSMS is the right solution
|
14 |
+
for you.
|
15 |
+

|
16 |
+
Infobip StoreSMS is a plugin based on SMS API technology.
|
17 |
+
Features
|
18 |
+

|
19 |
+
Keep customers happy - providing the right information at the right time adds value to your business and
|
20 |
+
increases customer loyalty.
|
21 |
+

|
22 |
+
Easy integration - a quick and esy way to provide your business with its own personal SMS service.
|
23 |
+

|
24 |
+
Bulk SMS - send out coupons or promotional offers and promote your business.
|
25 |
+

|
26 |
+
Sending speed - send up to 20 SMS messages per second over a highly reliable platform.
|
27 |
+
</description>
|
28 |
+
<notes>Infobip StoreSMS API module</notes>
|
29 |
+
<authors>
|
30 |
+
<author>
|
31 |
+
<name>Infobip</name>
|
32 |
+
<user>Infobip</user>
|
33 |
+
<email>magento@infobip.com</email>
|
34 |
+
</author>
|
35 |
+
</authors>
|
36 |
+
<date>2015-09-17</date>
|
37 |
+
<time>15:11:49</time>
|
38 |
+
<contents>
|
39 |
+
<target name="magecommunity">
|
40 |
+
<dir name="Infobip">
|
41 |
+
<dir name="Storesms">
|
42 |
+
<dir name="Block">
|
43 |
+
<dir name="Adminhtml">
|
44 |
+
<file name="Adminblock.php" hash="202015864597f1009051ecb6428004bc"/>
|
45 |
+
<dir name="Storesms">
|
46 |
+
<dir name="Edit">
|
47 |
+
<file name="Form.php" hash="1b369dae5e437d2dcf17b30275fcd489"/>
|
48 |
+
<dir name="Tab">
|
49 |
+
<file name="Form.php" hash="96d0f24063b0a7af61d55a728e13ad0e"/>
|
50 |
+
</dir>
|
51 |
+
<file name="Tabs.php" hash="188c99c05a103090fb0d3c65a30529a5"/>
|
52 |
+
</dir>
|
53 |
+
<file name="Edit.php" hash="d2095dd15d30a7ee0bb50f12c9d91c8d"/>
|
54 |
+
<file name="Grid.php" hash="53bae5db8d43a1c0635d33d4dc0e6b24"/>
|
55 |
+
</dir>
|
56 |
+
<file name="Storesms.php" hash="7bb4da25d3b5bc3e7363cf8b9a86bfd2"/>
|
57 |
+
<dir name="System">
|
58 |
+
<dir name="Config">
|
59 |
+
<dir name="Fieldset">
|
60 |
+
<file name="Branding.php" hash="eebc4a367ad619b8fe105dfd2fe42394"/>
|
61 |
+
</dir>
|
62 |
+
</dir>
|
63 |
+
</dir>
|
64 |
+
</dir>
|
65 |
+
<dir name="Buttons">
|
66 |
+
<file name="Contact.php" hash="a9ea799fe52cac5ce9eced905173a69d"/>
|
67 |
+
<file name="NewAccount.php" hash="03f0f45768a8dccb275c6e343cb86664"/>
|
68 |
+
</dir>
|
69 |
+
</dir>
|
70 |
+
<dir name="Helper">
|
71 |
+
<file name="Data.php" hash="004a36f801bde90fe9c10d7fcc49e0cf"/>
|
72 |
+
</dir>
|
73 |
+
<dir name="Model">
|
74 |
+
<file name="ApiClient.php" hash="1fdd7b2aa0cfdcdb5b44a52d269fe645"/>
|
75 |
+
<file name="Config.php" hash="ee2f15bd0e7b9a2cf400b926b0e9ffaa"/>
|
76 |
+
<file name="Observer.php" hash="349cb0e104daee12d14175c1c9072eeb"/>
|
77 |
+
<file name="Storesms.php" hash="70f8c280a744eb613cacabc65ddf2365"/>
|
78 |
+
</dir>
|
79 |
+
<dir name="controllers">
|
80 |
+
<dir name="Adminhtml">
|
81 |
+
<file name="StoresmsController.php" hash="4d8bcbeae354ec75750a2db09ad056e8"/>
|
82 |
+
</dir>
|
83 |
+
</dir>
|
84 |
+
<dir name="etc">
|
85 |
+
<file name="config.xml" hash="8e03f00ace819c36402311e36edb424f"/>
|
86 |
+
<file name="system.xml" hash="306dea3d0a32e1f961d753195f64e820"/>
|
87 |
+
</dir>
|
88 |
+
</dir>
|
89 |
+
</dir>
|
90 |
+
</target>
|
91 |
+
<target name="magedesign">
|
92 |
+
<dir name="adminhtml">
|
93 |
+
<dir name="base">
|
94 |
+
<dir name="default">
|
95 |
+
<dir name="layout">
|
96 |
+
<file name="Infobip_Storesms.xml" hash="adb7f697c159b49cc17313bf8d5426a8"/>
|
97 |
+
</dir>
|
98 |
+
<dir name="template">
|
99 |
+
<dir name="storesms">
|
100 |
+
<file name="Adminblock.phtml" hash="e4607b58eeca875391aab04720555f35"/>
|
101 |
+
<dir name="system">
|
102 |
+
<dir name="config">
|
103 |
+
<dir name="fieldset">
|
104 |
+
<file name="branding.phtml" hash="97fd7bad4030f34f3869363786cc46c8"/>
|
105 |
+
</dir>
|
106 |
+
</dir>
|
107 |
+
</dir>
|
108 |
+
</dir>
|
109 |
+
</dir>
|
110 |
+
</dir>
|
111 |
+
</dir>
|
112 |
+
</dir>
|
113 |
+
</target>
|
114 |
+
<target name="mageskin">
|
115 |
+
<dir name="adminhtml">
|
116 |
+
<dir name="base">
|
117 |
+
<dir name="default">
|
118 |
+
<dir name="images">
|
119 |
+
<dir name="storesms">
|
120 |
+
<file name="storesms_header.png" hash="ca8dce29b3bbe56ae222587b103f27ac"/>
|
121 |
+
</dir>
|
122 |
+
</dir>
|
123 |
+
<dir name="css">
|
124 |
+
<dir name="storesms">
|
125 |
+
<file name="skin.css" hash="2f6c219956ed5ac0bd28256279cdc0cf"/>
|
126 |
+
</dir>
|
127 |
+
</dir>
|
128 |
+
</dir>
|
129 |
+
</dir>
|
130 |
+
</dir>
|
131 |
+
</target>
|
132 |
+
<target name="mageetc">
|
133 |
+
<dir name="modules">
|
134 |
+
<file name="Infobip_Storesms.xml" hash="ea5ef63fd7a211500bdaefaf6e56809e"/>
|
135 |
+
</dir>
|
136 |
+
</target>
|
137 |
+
<target name="mage">
|
138 |
+
<dir name="js">
|
139 |
+
<dir name="infobipStoresms">
|
140 |
+
<file name="storesmscounter.js" hash="172592c438b41b35d5b3bec9ad8afc0d"/>
|
141 |
+
</dir>
|
142 |
+
</dir>
|
143 |
+
</target>
|
144 |
+
<target name="magelocale">
|
145 |
+
<dir name="pl_PL">
|
146 |
+
<file name="Infobip_Storesms.csv" hash="00700b577d39d3c4f9e0553301cdead7"/>
|
147 |
+
</dir>
|
148 |
+
</target>
|
149 |
+
</contents>
|
150 |
+
<compatible/>
|
151 |
+
<dependencies>
|
152 |
+
<required>
|
153 |
+
<php>
|
154 |
+
<min>5.2.0</min>
|
155 |
+
<max>6.0.0</max>
|
156 |
+
</php>
|
157 |
+
</required>
|
158 |
+
</dependencies>
|
159 |
+
</package>
|
skin/adminhtml/base/default/css/storesms/skin.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
.infobipadmin-menu {
|
2 |
-
color:#ff6900;
|
3 |
-
padding-left:0px !important;
|
4 |
-
padding-right:20px;
|
5 |
}
|
1 |
+
.infobipadmin-menu {
|
2 |
+
color:#ff6900;
|
3 |
+
padding-left:0px !important;
|
4 |
+
padding-right:20px;
|
5 |
}
|
skin/adminhtml/base/default/images/storesms/storesms_header.png
CHANGED
File without changes
|