Version Notes
Minor Bug Fixes
Download this release
Release Info
Developer | Antonio José Moreno de la Rosa |
Extension | Zentio_Zentio |
Version | 1.0.3 |
Comparing to | |
See all releases |
Code changes from version 1.0.2 to 1.0.3
- app/code/community/Zentio/Zentio/Helper/Data.php +115 -0
- app/code/community/Zentio/Zentio/LICENSE.txt +13 -0
- app/code/community/Zentio/Zentio/controllers/Adminhtml/ZentioController.php +20 -0
- app/code/community/Zentio/Zentio/controllers/ApiController.php +127 -0
- app/code/community/Zentio/Zentio/etc/adminhtml.xml +51 -0
- app/code/community/Zentio/Zentio/etc/config.xml +56 -0
- app/code/community/Zentio/Zentio/etc/system.xml +65 -0
- app/etc/modules/Zentio_Zentio.xml +14 -0
- package.xml +10 -79
app/code/community/Zentio/Zentio/Helper/Data.php
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Zentio_Zentio_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
function loadCustomer($email, $website = null)
|
6 |
+
{
|
7 |
+
$customer = null;
|
8 |
+
|
9 |
+
if (Mage::getModel('customer/customer')->getSharingConfig()->isWebsiteScope()) {
|
10 |
+
// Customer email address can be used in multiple websites so we need to
|
11 |
+
// explicitly scope it
|
12 |
+
if ($website) {
|
13 |
+
// We've been given a specific website, so try that
|
14 |
+
$customer = Mage::getModel('customer/customer')
|
15 |
+
->setWebsiteId($website)
|
16 |
+
->loadByEmail($email);
|
17 |
+
} else {
|
18 |
+
// No particular website, so load all customers with the given email and then return a single object
|
19 |
+
$customers = Mage::getModel('customer/customer')
|
20 |
+
->getCollection()
|
21 |
+
->addFieldToFilter('email', array('eq' => array($email)));
|
22 |
+
|
23 |
+
if ($customers->getSize()) {
|
24 |
+
$id = $customers->getLastItem()->getId();
|
25 |
+
$customer = Mage::getModel('customer/customer')->load($id);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
} else {
|
30 |
+
// Customer email is global, so no scoping issues
|
31 |
+
$customer = Mage::getModel('customer/customer')->loadByEmail($email);
|
32 |
+
}
|
33 |
+
|
34 |
+
return $customer;
|
35 |
+
}
|
36 |
+
|
37 |
+
function getOrderDetail($order)
|
38 |
+
{
|
39 |
+
// if the admin site has a custom URL, use it
|
40 |
+
$urlModel = Mage::getModel('adminhtml/url')->setStore('admin');
|
41 |
+
|
42 |
+
$orderInfo = array(
|
43 |
+
'title' => array("label"=>"Last Order Detail", "value"=>$order->getId()),
|
44 |
+
'status' => array("label"=>"Status", "value"=>$order->getStatus()),
|
45 |
+
'created' => array("label"=>"Created", "value"=>$order->getCreatedAt()),
|
46 |
+
'updated' => array("label"=>"Updated", "value"=>$order->getUpdatedAt()),
|
47 |
+
'total' => array("label"=>"Total", "value"=>$order->getGrandTotal() . " " . $order->getOrderCurrencyCode()),
|
48 |
+
'admin_url' => array("label"=>"More", "value"=>$urlModel->getUrl('adminhtml/sales_order/view', array('order_id' => $order->getId()))),
|
49 |
+
);
|
50 |
+
|
51 |
+
$orderInfo['items']['label'] = "Items";
|
52 |
+
$orderInfo['items']['value']['header'] = array("SKU", "Product Name", "Price");
|
53 |
+
foreach($order->getItemsCollection(array(), true) as $item) {
|
54 |
+
$orderInfo['items']['value']['items'][] = array(
|
55 |
+
'sku' => $item->getSku(),
|
56 |
+
'name' => $item->getName(),
|
57 |
+
'price' => $item->getPrice()
|
58 |
+
);
|
59 |
+
}
|
60 |
+
|
61 |
+
return $orderInfo;
|
62 |
+
}
|
63 |
+
|
64 |
+
function getLastOrders($orders) {
|
65 |
+
|
66 |
+
$lastOrders=array();
|
67 |
+
$lastOrders['label'] = "Last Orders";
|
68 |
+
$lastOrders['value']['header'] = array("Id", "Status", "Created At", "Total", "More");
|
69 |
+
$lastOrders['value']['items'] = array();
|
70 |
+
|
71 |
+
foreach ($orders as $order) {
|
72 |
+
$lastOrders['value']['items'][] = $this->getLastOrdersRow($order);
|
73 |
+
}
|
74 |
+
|
75 |
+
return array("last_orders"=>$lastOrders);
|
76 |
+
}
|
77 |
+
|
78 |
+
function getLastOrdersRow($order)
|
79 |
+
{
|
80 |
+
// if the admin site has a custom URL, use it
|
81 |
+
$urlModel = Mage::getModel('adminhtml/url')->setStore('admin');
|
82 |
+
|
83 |
+
$orderInfo = array(
|
84 |
+
'id' => $order->getIncrementId(),
|
85 |
+
'status' => $order->getStatus(),
|
86 |
+
'created' => $order->getCreatedAt(),
|
87 |
+
'total' => $order->getGrandTotal(),
|
88 |
+
'admin_url' => $urlModel->getUrl('adminhtml/sales_order/view', array('order_id' => $order->getId())),
|
89 |
+
);
|
90 |
+
|
91 |
+
return $orderInfo;
|
92 |
+
}
|
93 |
+
|
94 |
+
function getApiToken($generate = true)
|
95 |
+
{
|
96 |
+
// Grab any existing token from the admin scope
|
97 |
+
$token = Mage::getStoreConfig('zentio/api/token', 0);
|
98 |
+
|
99 |
+
if( (!$token || strlen(trim($token)) == 0) && $generate) {
|
100 |
+
$token = $this->setApiToken();
|
101 |
+
}
|
102 |
+
|
103 |
+
return $token;
|
104 |
+
}
|
105 |
+
|
106 |
+
function setApiToken($token = null)
|
107 |
+
{
|
108 |
+
if(!$token) {
|
109 |
+
$token = md5(time());
|
110 |
+
}
|
111 |
+
Mage::getModel('core/config')->saveConfig('zentio/api/token', $token, 'default');
|
112 |
+
|
113 |
+
return $token;
|
114 |
+
}
|
115 |
+
}
|
app/code/community/Zentio/Zentio/LICENSE.txt
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright 2015 ZentIO
|
2 |
+
|
3 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
+
you may not use this file except in compliance with the License.
|
5 |
+
You may obtain a copy of the License at
|
6 |
+
|
7 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
8 |
+
|
9 |
+
Unless required by applicable law or agreed to in writing, software
|
10 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
+
See the License for the specific language governing permissions and
|
13 |
+
limitations under the License.
|
app/code/community/Zentio/Zentio/controllers/Adminhtml/ZentioController.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Zentio_Zentio_Adminhtml_ZentioController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Generates a new API Token
|
7 |
+
*/
|
8 |
+
function generateAction()
|
9 |
+
{
|
10 |
+
try {
|
11 |
+
Mage::helper('zentio')->setApiToken();
|
12 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('zentio')->__('Successfully generated a new API token'));
|
13 |
+
} catch(Exception $e) {
|
14 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getCode() . ': ' . $e->getMessage());
|
15 |
+
}
|
16 |
+
|
17 |
+
$this->_redirect('adminhtml/system_config/edit/section/zentio');
|
18 |
+
}
|
19 |
+
|
20 |
+
}
|
app/code/community/Zentio/Zentio/controllers/ApiController.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Zentio_Zentio_ApiController extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
public function customersAction()
|
6 |
+
{
|
7 |
+
if ( ! $this->checkAuth()) return $this;
|
8 |
+
|
9 |
+
$email = $this->getRequest()->getParam('email', null);
|
10 |
+
|
11 |
+
if ( ! $email) {
|
12 |
+
return $this->sendJsonResponse(array('messsage' => 'You must provide the email query parameter'), 400);
|
13 |
+
}
|
14 |
+
|
15 |
+
// load customer object for email
|
16 |
+
$customer = Mage::helper('zentio')->loadCustomer($email);
|
17 |
+
|
18 |
+
// Get a list of all orders for the given email address
|
19 |
+
// This is used to determine if a missing customer is a guest or if they really aren't a customer at all
|
20 |
+
$orderCollection = Mage::getModel('sales/order')->getCollection()
|
21 |
+
->addFieldToFilter('customer_email', array('eq' => array($email)));
|
22 |
+
|
23 |
+
$orderCollection->setOrder('increment_id','DESC')->getSelect()->limit(5);
|
24 |
+
|
25 |
+
$lastOrder = array();
|
26 |
+
$lastOrders = array();
|
27 |
+
if ($orderCollection->getSize()) {
|
28 |
+
$lastOrder = Mage::helper('zentio')->getOrderDetail($orderCollection->getFirstItem());
|
29 |
+
$lastOrders = Mage::helper('zentio')->getLastOrders($orderCollection);
|
30 |
+
}
|
31 |
+
|
32 |
+
if ($customer && $customer->getId()) {
|
33 |
+
$data = array(
|
34 |
+
'id' => $customer->getId(),
|
35 |
+
'name' => $customer->getName(),
|
36 |
+
'email' => $customer->getEmail(),
|
37 |
+
'phone' => $customer->getTelephone() ? $customer->getTelephone() : $customer->getDefaultBillingAddress()->getTelephone(),
|
38 |
+
);
|
39 |
+
|
40 |
+
/*if ($billing = $customer->getDefaultBillingAddress()) {
|
41 |
+
$data['address'] = $billing->format('text');
|
42 |
+
}*/
|
43 |
+
|
44 |
+
$data['custom_attributes'] = $lastOrder + $lastOrders;
|
45 |
+
|
46 |
+
return $this->sendJsonResponse($data);
|
47 |
+
}
|
48 |
+
|
49 |
+
return $this->sendJsonResponse(array('message' => 'Customer does not exist'), 404);
|
50 |
+
}
|
51 |
+
|
52 |
+
protected function sendJsonResponse(array $content, $statusCode = 200)
|
53 |
+
{
|
54 |
+
$this->getResponse()
|
55 |
+
->setBody(json_encode($content))
|
56 |
+
->setHttpResponseCode($statusCode)
|
57 |
+
->setHeader('Content-type', 'application/json', true);
|
58 |
+
|
59 |
+
return $this;
|
60 |
+
}
|
61 |
+
|
62 |
+
protected function setCustomAttribute(array &$data, $field, $value, $label = null)
|
63 |
+
{
|
64 |
+
$label = $label ? $label : ucfirst($field);
|
65 |
+
$data['custom_attributes'][$field] = array('label' => $label, 'value' => $value);
|
66 |
+
|
67 |
+
return $data;
|
68 |
+
}
|
69 |
+
|
70 |
+
protected function checkAuth()
|
71 |
+
{
|
72 |
+
$configs = $this->getAuthConfigs();
|
73 |
+
|
74 |
+
if ( ! $configs['enabled']) {
|
75 |
+
$message = 'API access is disabled';
|
76 |
+
Mage::log($messsage, null, 'zentio.log');
|
77 |
+
|
78 |
+
$this->sendJsonResponse(array('message' => $message), 403);
|
79 |
+
return false;
|
80 |
+
}
|
81 |
+
|
82 |
+
if ( ! $configs['username'] || !$configs['password']) {
|
83 |
+
$message = "API access details incomplete. username and/or password hasn't been set correctly. (in Magento ZentIO settings page)";
|
84 |
+
Mage::log($messsage, null, 'zentio.log');
|
85 |
+
|
86 |
+
$this->sendJsonResponse(array('message' => $message), 403);
|
87 |
+
return false;
|
88 |
+
}
|
89 |
+
|
90 |
+
$paramUsername = $this->getRequest()->getServer('PHP_AUTH_USER', null);
|
91 |
+
$paramPassword = $this->getRequest()->getServer('PHP_AUTH_PW', null);
|
92 |
+
|
93 |
+
if ( ! $paramUsername) {
|
94 |
+
$message = 'Requires authentication';
|
95 |
+
Mage::log($messsage, null, 'zentio.log');
|
96 |
+
|
97 |
+
$this->sendJsonResponse(array('message' => $message), 401);
|
98 |
+
return false;
|
99 |
+
}
|
100 |
+
|
101 |
+
if ($configs['username'] !== $paramUsername ||
|
102 |
+
$configs['password'] !== $paramPassword) {
|
103 |
+
$message = 'Authorization failed!';
|
104 |
+
Mage::log($messsage, null, 'zentio.log');
|
105 |
+
|
106 |
+
$this->sendJsonResponse(array('message' => $message), 403); // send forbidden if credentials are incorrect
|
107 |
+
return false;
|
108 |
+
}
|
109 |
+
|
110 |
+
return true;
|
111 |
+
}
|
112 |
+
|
113 |
+
protected function getAuthConfigs()
|
114 |
+
{
|
115 |
+
$basic_auth_realm = 'Zentio Realm';
|
116 |
+
$api_enabled = Mage::getStoreConfig('zentio/api/enabled', null);
|
117 |
+
$basic_auth_username = Mage::getStoreConfig('zentio/api/username', null);
|
118 |
+
$basic_auth_password = Mage::getStoreConfig('zentio/api/password', null);
|
119 |
+
|
120 |
+
return array(
|
121 |
+
'enabled' => (int) $api_enabled,
|
122 |
+
'realm' => $basic_auth_realm,
|
123 |
+
'username' => $basic_auth_username,
|
124 |
+
'password' => $basic_auth_password,
|
125 |
+
);
|
126 |
+
}
|
127 |
+
}
|
app/code/community/Zentio/Zentio/etc/adminhtml.xml
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<layout>
|
4 |
+
<updates>
|
5 |
+
<zentio_admin_layout>
|
6 |
+
<file>zentio.xml</file>
|
7 |
+
</zentio_admin_layout>
|
8 |
+
</updates>
|
9 |
+
</layout>
|
10 |
+
<menu>
|
11 |
+
<zentio translate="title" module="zentio">
|
12 |
+
<title>ZentIO</title>
|
13 |
+
<sort_order>99999</sort_order>
|
14 |
+
<children>
|
15 |
+
<zentio_settings module="zentio">
|
16 |
+
<title>Settings</title>
|
17 |
+
<action>adminhtml/system_config/edit/section/zentio</action>
|
18 |
+
<sort_order>10</sort_order>
|
19 |
+
</zentio_settings>
|
20 |
+
</children>
|
21 |
+
</zentio>
|
22 |
+
</menu>
|
23 |
+
<acl>
|
24 |
+
<resources>
|
25 |
+
<admin>
|
26 |
+
<children>
|
27 |
+
<zentio translate="title" module="zentio">
|
28 |
+
<title>ZentIO</title>
|
29 |
+
<children>
|
30 |
+
<zentio_settings translate="title" module="zentio">
|
31 |
+
<title>Settings</title>
|
32 |
+
<sort_order>10</sort_order>
|
33 |
+
</zentio_settings>
|
34 |
+
</children>
|
35 |
+
</zentio>
|
36 |
+
<system>
|
37 |
+
<children>
|
38 |
+
<config>
|
39 |
+
<children>
|
40 |
+
<zentio>
|
41 |
+
<title>ZentIO Settings section</title>
|
42 |
+
</zentio>
|
43 |
+
</children>
|
44 |
+
</config>
|
45 |
+
</children>
|
46 |
+
</system>
|
47 |
+
</children>
|
48 |
+
</admin>
|
49 |
+
</resources>
|
50 |
+
</acl>
|
51 |
+
</config>
|
app/code/community/Zentio/Zentio/etc/config.xml
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Module config
|
5 |
+
* @author ZentIO
|
6 |
+
*/
|
7 |
+
-->
|
8 |
+
<config>
|
9 |
+
<modules>
|
10 |
+
<Zentio_Zentio>
|
11 |
+
<version>1.0</version>
|
12 |
+
</Zentio_Zentio>
|
13 |
+
</modules>
|
14 |
+
|
15 |
+
<global>
|
16 |
+
<helpers>
|
17 |
+
<zentio>
|
18 |
+
<class>Zentio_Zentio_Helper</class>
|
19 |
+
</zentio>
|
20 |
+
</helpers>
|
21 |
+
<models>
|
22 |
+
<zentio>
|
23 |
+
<class>Zentio_Zentio_Model</class>
|
24 |
+
</zentio>
|
25 |
+
</models>
|
26 |
+
<blocks>
|
27 |
+
<zentio>
|
28 |
+
<class>Zentio_Zentio_Block</class>
|
29 |
+
</zentio>
|
30 |
+
</blocks>
|
31 |
+
</global>
|
32 |
+
|
33 |
+
<frontend>
|
34 |
+
<routers>
|
35 |
+
<zentio>
|
36 |
+
<use>standard</use>
|
37 |
+
<args>
|
38 |
+
<module>Zentio_Zentio</module>
|
39 |
+
<frontName>zentio</frontName>
|
40 |
+
</args>
|
41 |
+
</zentio>
|
42 |
+
</routers>
|
43 |
+
</frontend>
|
44 |
+
|
45 |
+
<admin>
|
46 |
+
<routers>
|
47 |
+
<adminhtml>
|
48 |
+
<args>
|
49 |
+
<modules>
|
50 |
+
<Zentio_Zentio after="Mage_Adminhtml">Zentio_Zentio_Adminhtml</Zentio_Zentio>
|
51 |
+
</modules>
|
52 |
+
</args>
|
53 |
+
</adminhtml>
|
54 |
+
</routers>
|
55 |
+
</admin>
|
56 |
+
</config>
|
app/code/community/Zentio/Zentio/etc/system.xml
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @author ZentIO
|
5 |
+
*/
|
6 |
+
-->
|
7 |
+
<config>
|
8 |
+
<tabs>
|
9 |
+
<zentio_extensions>
|
10 |
+
<label>ZentIO</label>
|
11 |
+
<sort_order>1000</sort_order>
|
12 |
+
</zentio_extensions>
|
13 |
+
</tabs>
|
14 |
+
<sections>
|
15 |
+
<zentio translate="label" module="zentio">
|
16 |
+
<label>ZentIO</label>
|
17 |
+
<tab>zentio_extensions</tab>
|
18 |
+
<frontend_type>text</frontend_type>
|
19 |
+
<class>zentio-section</class>
|
20 |
+
<header_css>zentio-header</header_css>
|
21 |
+
<sort_order>999999</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<groups>
|
26 |
+
<api translate="label comment">
|
27 |
+
<label>API Access Details</label>
|
28 |
+
<comment>Required for Magento integration inside ZentIO to work. Your Base Url is http://yourstoredomain.com/zentio/api</comment>
|
29 |
+
<frontend_type>text</frontend_type>
|
30 |
+
<sort_order>40</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
<fields>
|
35 |
+
<enabled translate="label">
|
36 |
+
<label>API Enabled</label>
|
37 |
+
<frontend_type>select</frontend_type>
|
38 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
39 |
+
<sort_order>1</sort_order>
|
40 |
+
<show_in_default>1</show_in_default>
|
41 |
+
<show_in_website>1</show_in_website>
|
42 |
+
<show_in_store>1</show_in_store>
|
43 |
+
</enabled>
|
44 |
+
<username translate="label">
|
45 |
+
<label>API Username</label>
|
46 |
+
<frontend_type>text</frontend_type>
|
47 |
+
<sort_order>2</sort_order>
|
48 |
+
<show_in_default>1</show_in_default>
|
49 |
+
<show_in_website>1</show_in_website>
|
50 |
+
<show_in_store>1</show_in_store>
|
51 |
+
</username>
|
52 |
+
<password translate="label">
|
53 |
+
<label>API Password</label>
|
54 |
+
<frontend_type>text</frontend_type>
|
55 |
+
<sort_order>3</sort_order>
|
56 |
+
<show_in_default>1</show_in_default>
|
57 |
+
<show_in_website>1</show_in_website>
|
58 |
+
<show_in_store>1</show_in_store>
|
59 |
+
</password>
|
60 |
+
</fields>
|
61 |
+
</api>
|
62 |
+
</groups>
|
63 |
+
</zentio>
|
64 |
+
</sections>
|
65 |
+
</config>
|
app/etc/modules/Zentio_Zentio.xml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @author ZentIO
|
5 |
+
*/
|
6 |
+
-->
|
7 |
+
<config>
|
8 |
+
<modules>
|
9 |
+
<Zentio_Zentio>
|
10 |
+
<active>true</active>
|
11 |
+
<codePool>community</codePool>
|
12 |
+
</Zentio_Zentio>
|
13 |
+
</modules>
|
14 |
+
</config>
|
package.xml
CHANGED
@@ -1,89 +1,20 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Zentio_Zentio</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
-
<license>ASL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Zent.io Multi-Channel Contact Center and Customer Support integrated into your store.</summary>
|
10 |
-
<description
|
11 |
-
<p><a href="http://zent.io"><b>See our website</b></a></p>
|
12 |
-
<ul>
|
13 |
-
<li>No upfront investment</li>
|
14 |
-
<li>No software/hardware required</li>
|
15 |
-
<li>Multichannel Administration</li>
|
16 |
-
<li>Multichannel Workplace</li>
|
17 |
-
<li>Dashboards and Reports</li>
|
18 |
-
<li>Multichannel Ticket/Case Management</li>
|
19 |
-
<li>Smart customer management</li>
|
20 |
-
<li>Team management</li>
|
21 |
-
<li>Shift planning</li>
|
22 |
-
<li>Outsourcing features</li>
|
23 |
-
<li>Service management</li>
|
24 |
-
<li>Collaborative tools</li>
|
25 |
-
<li>Remote agents</li>
|
26 |
-
</ul>
|
27 |
-
<h1>Chat</h1>
|
28 |
-
<b>Increase the productivity of your agents and customers engagement.</b>
|
29 |
-
<p>Real time chatting with a customer support expert not only builds customers‘ confidence during their shopping experience, but also helps to improve your conversion rates. According to a survey of American online consumers, 68% engage in live chat and 63% prefer getting back to a website with live chat for repeat purchase.</p>
|
30 |

|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
<li>Cobrowsing</li>
|
38 |
-
<li>Customizable</li>
|
39 |
-
<li>Smart canned answers</li>
|
40 |
-
<li>Prechat form</li>
|
41 |
-
<li>Load balancing</li>
|
42 |
-
<li>Reports and KPIs</li>
|
43 |
-
<li>Javascript API</li>
|
44 |
-
<li>Real time messages delivery</li>
|
45 |
-
<li>Integration with GA</li>
|
46 |
-
</ul>
|
47 |
-
<h1>Voice</h1>
|
48 |
-
<b>Reduce your tech costs.</b>
|
49 |
-
<p>With our IVR templates builder, contact center administrator will be able to define advanced behaviors on incoming calls for a service/project. Since it's easy to use any administrator or supervisor can use since it doesn't require tech skills.</p>
|
50 |
-
<ul>
|
51 |
-
<li>IVR templates</li>
|
52 |
-
<li>No extra software required</li>
|
53 |
-
<li>Voice recording</li>
|
54 |
-
<li>Reporting and KPIs</li>
|
55 |
-
<li>Load balancing</li>
|
56 |
-
<li>VoIP</li>
|
57 |
-
</ul>
|
58 |
-
<h1>Email</h1>
|
59 |
-
<p>Improve your response time and productivity of your team. Manage all the incoming messages from customers to your contact center.</p>
|
60 |
-
<ul>
|
61 |
-
<li>Incoming mail management</li>
|
62 |
-
<li>Fully customizable</li>
|
63 |
-
<li>Reporting and KPIs</li>
|
64 |
-
</ul>
|
65 |
-
<h1>Customer Portal</h1>
|
66 |
-
<b>Share important information with customers.</b>
|
67 |
-
<p>Customer Portal helps to solve to customers questions from a service/project so they can solve them by themselves furthermore to add a new channel where the customer can start a case/ticket.</p>
|
68 |
-
<ul>
|
69 |
-
<li>Advanced search and categorization</li>
|
70 |
-
<li>Fully customizable</li>
|
71 |
-
<li>Ticket/Case submission</li>
|
72 |
-
</ul>
|
73 |
-
<h1>Integration to Magento</h1>
|
74 |
-
<p>You will see last orders and last order details for each customer that access to your customer service. </p>
|
75 |
-
<h1>Also for outsources</h1>
|
76 |
-
<p>Whether we are a contact center inside a company or a contact center that provides services to customers for other companies that outsource their customer care, being multichannel is a necessity nowadays. Give a step forward with Zent.io.</p>
|
77 |
-

|
78 |
-
<p><a href="http://www.zent.io/bundles/website/pdf/datasheet_zentio_en.pdf"><b>Datasheet</b></a></p>
|
79 |
-
<p><a href="http://zent.io">More</a></p>
|
80 |
-
</description>
|
81 |
-
<notes>Some bugs solved
|
82 |
-
Link to order</notes>
|
83 |
-
<authors><author><name>Antonio José Moreno de la Rosa</name><user>amoreno</user><email>support@zent.io</email></author></authors>
|
84 |
-
<date>2015-02-15</date>
|
85 |
-
<time>21:09:19</time>
|
86 |
-
<contents><target name="magelocal"><dir/></target></contents>
|
87 |
<compatible/>
|
88 |
-
<dependencies><required><php><min>5.
|
89 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Zentio_Zentio</name>
|
4 |
+
<version>1.0.3</version>
|
5 |
<stability>stable</stability>
|
6 |
+
<license uri="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License (ASL)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Zent.io Multi-Channel Contact Center and Customer Support integrated into your store.</summary>
|
10 |
+
<description>Zent.IO is a Contact Center Cloud Software Multichannel that unify chat, phone and e-mail. All the communication channels will be answered from a single interface. The agent will only need a web browser.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |

|
12 |
+
Whether we are a contact center inside a company or a contact center that provides services to customers for other companies that outsource their customer care, being multichannel is a necessity nowadays. Give a step forward with Zent.io</description>
|
13 |
+
<notes>Minor Bug Fixes</notes>
|
14 |
+
<authors><author><name>Antonio José Moreno de la Rosa</name><user>zentio</user><email>support@zent.io</email></author></authors>
|
15 |
+
<date>2015-02-19</date>
|
16 |
+
<time>06:43:01</time>
|
17 |
+
<contents><target name="magecommunity"><dir name="Zentio"><dir name="Zentio"><dir name="Helper"><file name="Data.php" hash="5efa851fe49b5bff580142f3e631d86b"/></dir><file name="LICENSE.txt" hash="51f3d38889a28739d45f31597a9f4446"/><dir name="controllers"><dir name="Adminhtml"><file name="ZentioController.php" hash="6072e05687cdd164e480b0af7b8d2530"/></dir><file name="ApiController.php" hash="314cad9f4ebc630f9180bb42868e9196"/></dir><dir name="etc"><file name="adminhtml.xml" hash="f649f2c785bca8dc36d06f8fdf8a4e31"/><file name="config.xml" hash="544edbc93b810416989b3f3a190a072e"/><file name="system.xml" hash="3b703cb9f4dcd7a0e697da456b124fae"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Zentio_Zentio.xml" hash="4e9c12b8be9848d47d75941c140ffe83"/></dir></target></contents>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
<compatible/>
|
19 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
20 |
</package>
|