Order_tickets - Version 1.1.0

Version Notes

Possibility of creating new ticket in BO

Download this release

Release Info

Developer Magento Core Team
Extension Order_tickets
Version 1.1.0
Comparing to
See all releases


Code changes from version 1.0.7 to 1.1.0

Files changed (28) hide show
  1. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat.php +11 -1
  2. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create.php +45 -0
  3. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Form.php +26 -0
  4. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Order.php +27 -0
  5. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Order/Grid.php +121 -0
  6. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Steptwo.php +48 -0
  7. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Steptwo/Form.php +104 -0
  8. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View.php +4 -1
  9. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Form.php +5 -1
  10. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tab/Main.php +35 -1
  11. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tab/Tickets.php +35 -6
  12. app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tabs.php +14 -22
  13. app/code/community/Laurent/OrderTickets/Controller/Adminhtml/Chat.php +40 -0
  14. app/code/community/Laurent/OrderTickets/Helper/Data.php +15 -0
  15. app/code/community/Laurent/OrderTickets/Model/Chat.php +10 -0
  16. app/code/community/Laurent/OrderTickets/controllers/Adminhtml/ChatController.php +6 -28
  17. app/code/community/Laurent/OrderTickets/controllers/Adminhtml/CreateController.php +153 -0
  18. app/code/community/Laurent/OrderTickets/controllers/ChatController.php +1 -1
  19. app/code/community/Laurent/OrderTickets/doc/CREATE-IN-BO.txt +12 -0
  20. app/code/community/Laurent/OrderTickets/doc/EVOLUTIONS.txt +3 -2
  21. app/code/community/Laurent/OrderTickets/etc/adminhtml.xml +13 -12
  22. app/code/community/Laurent/OrderTickets/etc/config.xml +8 -1
  23. app/design/adminhtml/default/default/layout/ordertickets.xml +50 -2
  24. app/design/adminhtml/default/default/template/ordertickets/chat/create/abstract.phtml +19 -0
  25. app/design/adminhtml/default/default/template/ordertickets/chat/create/form.phtml +16 -0
  26. app/design/adminhtml/default/default/template/ordertickets/order/view/tab/tickets.phtml +31 -29
  27. app/locale/fr_FR/Laurent_OrderTickets.csv +16 -0
  28. package.xml +6 -6
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat.php CHANGED
@@ -22,7 +22,17 @@ class Laurent_OrderTickets_Block_Adminhtml_Chat extends Mage_Adminhtml_Block_Wid
22
  $this->_headerText = $this->__('Order tickets');
23
  $this->_blockGroup = 'ordertickets';
24
  parent::__construct();
25
- $this->_removeButton('add');
 
 
 
 
 
 
 
 
 
 
26
  }
27
  }
28
 
22
  $this->_headerText = $this->__('Order tickets');
23
  $this->_blockGroup = 'ordertickets';
24
  parent::__construct();
25
+
26
+ $userAllowedToCreate = Mage::getSingleton('admin/session')->isAllowed('sales/ordertickets/create');
27
+ if(!$userAllowedToCreate){
28
+ $this->_removeButton('add');
29
+ }
30
+
31
+ }
32
+
33
+ public function getCreateUrl()
34
+ {
35
+ return $this->getUrl('*/adminhtml_create');
36
  }
37
  }
38
 
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of New
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create extends Mage_Adminhtml_Block_Widget_Form_Container{
16
+
17
+ public function __construct()
18
+ {
19
+ $this->_controller = 'adminhtml_chat';
20
+ $this->_blockGroup = 'ordertickets';
21
+ $this->_mode = 'create';
22
+ parent::__construct();
23
+
24
+ $this->_removeButton('save');
25
+ $this->_removeButton('reset');
26
+ }
27
+
28
+ /**
29
+ * Page title
30
+ * @return string
31
+ */
32
+ public function getHeaderText(){
33
+ return $this->__('Create new order tickets');
34
+ }
35
+
36
+ /**
37
+ * Url to go back to grid of order tickets
38
+ * @return string
39
+ */
40
+ public function getBackUrl() {
41
+ return $this->getUrl('*/adminhtml_chat/');
42
+ }
43
+
44
+ }
45
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Form.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Form
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Form extends Mage_Adminhtml_Block_Widget_Form{
16
+
17
+ protected function _prepareForm()
18
+ {
19
+ $form = new Varien_Data_Form(array('id' => 'create_form', 'action' => $this->getData('action'), 'method' => 'post'));
20
+ $form->setUseContainer(true);
21
+ $this->setForm($form);
22
+ return parent::_prepareForm();
23
+ }
24
+ }
25
+
26
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Order.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Order
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Order extends Mage_Adminhtml_Block_Widget{
16
+
17
+ /**
18
+ * Header text for order grid
19
+ * @return string
20
+ */
21
+ public function getHeaderText(){
22
+ return $this->__('Please select an order');
23
+ }
24
+
25
+ }
26
+
27
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Order/Grid.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Grid
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid {
16
+
17
+ public function __construct()
18
+ {
19
+ parent::__construct();
20
+ $this->setId('ordertickets_chat_create_order_grid');
21
+ $this->setUseAjax(true);
22
+ $this->setDefaultSort('entity_id');
23
+ }
24
+
25
+ /**
26
+ * Preparing colllectio of orders
27
+ * @return Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Order_Grid
28
+ */
29
+ protected function _prepareCollection()
30
+ {
31
+ $collection = Mage::getResourceModel('sales/order_grid_collection');
32
+ $this->setCollection($collection);
33
+ return parent::_prepareCollection();
34
+ }
35
+
36
+ /**
37
+ * Columns of order Grid
38
+ * @return Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Order_Grid
39
+ */
40
+ protected function _prepareColumns()
41
+ {
42
+
43
+ $this->addColumn('real_order_id', array(
44
+ 'header'=> Mage::helper('sales')->__('Order #'),
45
+ 'width' => '80px',
46
+ 'type' => 'text',
47
+ 'index' => 'increment_id',
48
+ ));
49
+
50
+ if (!Mage::app()->isSingleStoreMode()) {
51
+ $this->addColumn('store_id', array(
52
+ 'header' => Mage::helper('sales')->__('Purchased From (Store)'),
53
+ 'index' => 'store_id',
54
+ 'type' => 'store',
55
+ 'store_view'=> true,
56
+ 'display_deleted' => true,
57
+ ));
58
+ }
59
+
60
+ $this->addColumn('created_at', array(
61
+ 'header' => Mage::helper('sales')->__('Purchased On'),
62
+ 'index' => 'created_at',
63
+ 'type' => 'datetime',
64
+ 'width' => '100px',
65
+ ));
66
+
67
+ $this->addColumn('billing_name', array(
68
+ 'header' => Mage::helper('sales')->__('Bill to Name'),
69
+ 'index' => 'billing_name',
70
+ ));
71
+
72
+ $this->addColumn('shipping_name', array(
73
+ 'header' => Mage::helper('sales')->__('Ship to Name'),
74
+ 'index' => 'shipping_name',
75
+ ));
76
+
77
+ $this->addColumn('base_grand_total', array(
78
+ 'header' => Mage::helper('sales')->__('G.T. (Base)'),
79
+ 'index' => 'base_grand_total',
80
+ 'type' => 'currency',
81
+ 'currency' => 'base_currency_code',
82
+ ));
83
+
84
+ $this->addColumn('grand_total', array(
85
+ 'header' => Mage::helper('sales')->__('G.T. (Purchased)'),
86
+ 'index' => 'grand_total',
87
+ 'type' => 'currency',
88
+ 'currency' => 'order_currency_code',
89
+ ));
90
+
91
+ $this->addColumn('status', array(
92
+ 'header' => Mage::helper('sales')->__('Status'),
93
+ 'index' => 'status',
94
+ 'type' => 'options',
95
+ 'width' => '70px',
96
+ 'options' => Mage::getSingleton('sales/order_config')->getStatuses(),
97
+ ));
98
+
99
+ return parent::_prepareColumns();
100
+ }
101
+
102
+ /**
103
+ * Url of Grid for reloading it with Ajax
104
+ * @return string
105
+ */
106
+ public function getGridUrl()
107
+ {
108
+ return $this->getUrl('*/*/loadOrderGrid');
109
+ }
110
+
111
+ /**
112
+ * Url when clicking on a row
113
+ * @param Mage_Sales_Model8order $order order of the row
114
+ * @return string
115
+ */
116
+ public function getRowUrl($order){
117
+ return $this->getUrl('*/*/stepTwo', array('order_id' => $order->getId()));
118
+ }
119
+ }
120
+
121
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Steptwo.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Steptwo
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Steptwo extends Mage_Adminhtml_Block_Widget_Form_Container {
16
+
17
+ public function __construct()
18
+ {
19
+ $this->_controller = 'adminhtml_chat_create';
20
+ $this->_blockGroup = 'ordertickets';
21
+ $this->_mode = 'steptwo';
22
+ parent::__construct();
23
+ }
24
+
25
+ /**
26
+ * Gives header text
27
+ * @return string
28
+ */
29
+ public function getHeaderText() {
30
+ return $this->__('Create new order tickets for order #%s', $this->getOrder()->getIncrementId());
31
+ }
32
+
33
+ /**
34
+ * Get order selected for this chat creation
35
+ * @return Mage_Sales_Model_Order
36
+ */
37
+ public function getOrder(){
38
+ $order = Mage::getModel('sales/order');
39
+ /* @var $order Mage_Sales_Model_Order */
40
+ $orderId = Mage::registry('chat_order_id');
41
+ $order->load($orderId);
42
+
43
+ return $order;
44
+ }
45
+
46
+ }
47
+
48
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/Create/Steptwo/Form.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Form
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Steptwo_Form extends Mage_Adminhtml_Block_Widget_Form {
16
+
17
+ protected function _prepareForm() {
18
+ $helper = Mage::helper('ordertickets');
19
+ /* @var $helper Laurent_OrderTickets_Helper_Data */
20
+ $order = $this->getOrder();
21
+
22
+ $form = new Varien_Data_Form(array(
23
+ 'id' => 'edit_form',
24
+ 'action' => $this->getUrl('*/*/save'),
25
+ 'method' => 'post',
26
+ ));
27
+
28
+ $fieldset = $form->addFieldset('create_steptwo_form_fildset', array(
29
+ 'legend' => $this->__('Order tickets details'),
30
+ ));
31
+
32
+ $fieldset->addField('customer_firstname', 'text', array(
33
+ 'label' => $this->__('Customer firstname'),
34
+ 'name' => 'chat[customer_firstname]',
35
+ 'required' => true,
36
+ 'value' => $order->getCustomerFirstname(),
37
+ ));
38
+
39
+ $fieldset->addField('customer_lastname', 'text', array(
40
+ 'label' => $this->__('Customer lastname'),
41
+ 'name' => 'chat[customer_lastname]',
42
+ 'required' => true,
43
+ 'value' => $order->getCustomerLastname(),
44
+ ));
45
+
46
+ $fieldset->addField('customer_email', 'text', array(
47
+ 'label' => $this->__('Customer email'),
48
+ 'name' => 'chat[customer_email]',
49
+ 'required' => true,
50
+ 'class' => 'validate-email',
51
+ 'value' => $order->getCustomerEmail(),
52
+ ));
53
+
54
+ $fieldset->addField('status', 'select', array(
55
+ 'label' => $this->__('Status'),
56
+ 'name' => 'chat[status]',
57
+ 'required' => true,
58
+ 'options' => $helper->getChatStatuses(),
59
+ 'value' => Laurent_OrderTickets_Model_Chat::STATUS_OPEN,
60
+ ));
61
+
62
+ $fieldset->addField('ticket_type', 'select', array(
63
+ 'label' => $this->__('Ticket type'),
64
+ 'name' => 'ticket[type]',
65
+ 'required' => true,
66
+ 'options' => $helper->getTicketTypes(),
67
+ 'value' => Laurent_OrderTickets_Model_Ticket::TYPE_REQUEST,
68
+ ));
69
+
70
+ $fieldset->addField('ticket_message', 'textarea', array(
71
+ 'label' => $this->__('Message'),
72
+ 'name' => 'ticket[message]',
73
+ 'required' => true,
74
+ ));
75
+
76
+ $fieldset->addField('order_id', 'hidden', array(
77
+ 'name' => 'chat[order_id]',
78
+ 'required' => true,
79
+ 'value' => $order->getId(),
80
+ ));
81
+
82
+ $form->setUseContainer(true);
83
+
84
+ $this->setForm($form);
85
+
86
+ return parent::_prepareForm();
87
+ }
88
+
89
+ /**
90
+ * Get order selected for this chat creation
91
+ * @return Mage_Sales_Model_Order
92
+ */
93
+ public function getOrder(){
94
+ $order = Mage::getModel('sales/order');
95
+ /* @var $order Mage_Sales_Model_Order */
96
+ $orderId = Mage::registry('chat_order_id');
97
+ $order->load($orderId);
98
+
99
+ return $order;
100
+ }
101
+
102
+ }
103
+
104
+ ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View.php CHANGED
@@ -22,9 +22,12 @@ class Laurent_OrderTickets_Block_Adminhtml_Chat_View extends Mage_Adminhtml_Bloc
22
  $this->_mode = 'view';
23
  parent::__construct();
24
  $this->_removeButton('delete');
25
-
26
  }
27
 
 
 
 
 
28
  public function getHeaderText(){
29
  return $this->__('Tickets for order %s', $this->getChat()->getOrder()->getIncrementId());
30
  }
22
  $this->_mode = 'view';
23
  parent::__construct();
24
  $this->_removeButton('delete');
 
25
  }
26
 
27
+ /**
28
+ * Gives Header text
29
+ * @return string
30
+ */
31
  public function getHeaderText(){
32
  return $this->__('Tickets for order %s', $this->getChat()->getOrder()->getIncrementId());
33
  }
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Form.php CHANGED
@@ -16,7 +16,11 @@ class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Form extends Mage_Adminhtml
16
 
17
  protected function _prepareForm()
18
  {
19
- $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
 
 
 
 
20
  $form->setUseContainer(true);
21
  $this->setForm($form);
22
  return parent::_prepareForm();
16
 
17
  protected function _prepareForm()
18
  {
19
+ $form = new Varien_Data_Form(array(
20
+ 'id' => 'edit_form',
21
+ 'action' => $this->getData('action'),
22
+ 'method' => 'post'
23
+ ));
24
  $form->setUseContainer(true);
25
  $this->setForm($form);
26
  return parent::_prepareForm();
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tab/Main.php CHANGED
@@ -12,7 +12,9 @@
12
  * Description of Main
13
  *
14
  */
15
- class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Main extends Mage_Adminhtml_Block_Widget_Form {
 
 
16
 
17
  protected function _prepareForm()
18
  {
@@ -78,6 +80,38 @@ class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Main extends Mage_Admin
78
 
79
  return parent::_prepareForm();
80
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  }
83
 
12
  * Description of Main
13
  *
14
  */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Main
16
+ extends Mage_Adminhtml_Block_Widget_Form
17
+ implements Mage_Adminhtml_Block_Widget_Tab_Interface {
18
 
19
  protected function _prepareForm()
20
  {
80
 
81
  return parent::_prepareForm();
82
  }
83
+
84
+ /**
85
+ * Can sho tab?
86
+ * @return boolean
87
+ */
88
+ public function canShowTab() {
89
+ return true;
90
+ }
91
+
92
+ /**
93
+ * Tab label
94
+ * @return string
95
+ */
96
+ public function getTabLabel() {
97
+ return $this->__('Details');
98
+ }
99
+
100
+ /**
101
+ * Tab title
102
+ * @return string
103
+ */
104
+ public function getTabTitle() {
105
+ return $this->__('Details');
106
+ }
107
+
108
+ /**
109
+ * Tab is hidden?
110
+ * @return boolean
111
+ */
112
+ public function isHidden() {
113
+ return false;
114
+ }
115
 
116
  }
117
 
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tab/Tickets.php CHANGED
@@ -12,12 +12,9 @@
12
  * Description of Tickets
13
  *
14
  */
15
- class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Tickets extends Mage_Adminhtml_Block_Widget {
16
-
17
- public function __construct() {
18
- parent::__construct();
19
- $this->setTemplate('ordertickets/chat/view/tab/tickets.phtml');
20
- }
21
 
22
  /**
23
  * Give collection of tickets for currenty seen chat
@@ -38,6 +35,38 @@ class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Tickets extends Mage_Ad
38
  public function getPostAnswerUrl(){
39
  return $this->getUrl('*/*/answerPost');
40
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
42
 
43
  ?>
12
  * Description of Tickets
13
  *
14
  */
15
+ class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tab_Tickets
16
+ extends Mage_Adminhtml_Block_Template
17
+ implements Mage_Adminhtml_Block_Widget_Tab_Interface {
 
 
 
18
 
19
  /**
20
  * Give collection of tickets for currenty seen chat
35
  public function getPostAnswerUrl(){
36
  return $this->getUrl('*/*/answerPost');
37
  }
38
+
39
+ /**
40
+ * Can show tab?
41
+ * @return boolean
42
+ */
43
+ public function canShowTab() {
44
+ return true;
45
+ }
46
+
47
+ /**
48
+ * Tab label
49
+ * @return string
50
+ */
51
+ public function getTabLabel() {
52
+ return $this->__('Tickets');
53
+ }
54
+
55
+ /**
56
+ * Tab title
57
+ * @return string
58
+ */
59
+ public function getTabTitle() {
60
+ return $this->__('Tickets');
61
+ }
62
+
63
+ /**
64
+ * Tab is hidden?
65
+ * @return boolean
66
+ */
67
+ public function isHidden() {
68
+ return false;
69
+ }
70
  }
71
 
72
  ?>
app/code/community/Laurent/OrderTickets/Block/Adminhtml/Chat/View/Tabs.php CHANGED
@@ -13,31 +13,23 @@
13
  *
14
  */
15
  class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tabs extends Mage_Adminhtml_Block_Widget_Tabs{
 
 
16
 
17
- public function __construct()
18
- {
19
- parent::__construct();
20
- $this->setId('chat_tabs');
21
- $this->setDestElementId('edit_form');
22
- $this->setTitle($this->__('Chat Information'));
23
  }
24
 
25
- protected function _beforeToHtml()
26
- {
27
- $this->addTab('main_section', array(
28
- 'label' => $this->__('Details'),
29
- 'title' => $this->__('Details'),
30
- 'content' => $this->getLayout()->createBlock('ordertickets/adminhtml_chat_view_tab_main')->toHtml(),
31
- 'active' => true
32
- ));
33
-
34
- $this->addTab('tickets', array(
35
- 'label' => $this->__('Tickets'),
36
- 'title' => $this->__('Tickets'),
37
- 'content' => $this->getLayout()->createBlock('ordertickets/adminhtml_chat_view_tab_tickets')->toHtml(),
38
- ));
39
-
40
- return parent::_beforeToHtml();
41
  }
42
  }
43
 
13
  *
14
  */
15
  class Laurent_OrderTickets_Block_Adminhtml_Chat_View_Tabs extends Mage_Adminhtml_Block_Widget_Tabs{
16
+
17
+ protected $_destElementId = 'edit_form';
18
 
19
+ /**
20
+ * Tabs id
21
+ * @return string
22
+ */
23
+ public function getId() {
24
+ return 'chat_tabs';
25
  }
26
 
27
+ /**
28
+ * Tabs title
29
+ * @return string
30
+ */
31
+ public function getTitle(){
32
+ return $this->__('Chat Information');
 
 
 
 
 
 
 
 
 
 
33
  }
34
  }
35
 
app/code/community/Laurent/OrderTickets/Controller/Adminhtml/Chat.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of Chat
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Controller_Adminhtml_Chat extends Mage_Adminhtml_Controller_Action {
16
+
17
+ /**
18
+ * Initialize action
19
+ *
20
+ * @return Mage_Adminhtml_Controller_Action
21
+ */
22
+ protected function _initAction()
23
+ {
24
+ $this->loadLayout()
25
+ ->_setActiveMenu('sales/ordertickets')
26
+ ->_addBreadcrumb($this->__('Sales'), $this->__('Sales'))
27
+ ->_addBreadcrumb($this->__('Order tickets'), $this->__('Order tickets'));
28
+ return $this;
29
+ }
30
+
31
+ /**
32
+ * Set base title for order tickets actions
33
+ */
34
+ protected function _baseTitle(){
35
+ $this->_title($this->__('Sales'))->_title($this->__('Order tickets'));
36
+ }
37
+
38
+ }
39
+
40
+ ?>
app/code/community/Laurent/OrderTickets/Helper/Data.php CHANGED
@@ -29,6 +29,10 @@ class Laurent_OrderTickets_Helper_Data extends Mage_Core_Helper_Abstract{
29
  return $chat;
30
  }
31
 
 
 
 
 
32
  public function getChatStatuses(){
33
  return array(
34
  Laurent_OrderTickets_Model_Chat::STATUS_CLOSED => $this->__('Closed'),
@@ -36,6 +40,17 @@ class Laurent_OrderTickets_Helper_Data extends Mage_Core_Helper_Abstract{
36
  Laurent_OrderTickets_Model_Chat::STATUS_PENDING_ANSWER => $this->__('Pending answer')
37
  );
38
  }
 
 
 
 
 
 
 
 
 
 
 
39
  }
40
 
41
  ?>
29
  return $chat;
30
  }
31
 
32
+ /**
33
+ * Get associative array of chat statuses
34
+ * @return array status code => status label
35
+ */
36
  public function getChatStatuses(){
37
  return array(
38
  Laurent_OrderTickets_Model_Chat::STATUS_CLOSED => $this->__('Closed'),
40
  Laurent_OrderTickets_Model_Chat::STATUS_PENDING_ANSWER => $this->__('Pending answer')
41
  );
42
  }
43
+
44
+ /**
45
+ * Get associative array of ticket types
46
+ * @return array type code => type label
47
+ */
48
+ public function getTicketTypes() {
49
+ return array(
50
+ Laurent_OrderTickets_Model_Ticket::TYPE_REQUEST => $this->__('Customer request'),
51
+ Laurent_OrderTickets_Model_Ticket::TYPE_ANSWER => $this->__('Store answer'),
52
+ );
53
+ }
54
  }
55
 
56
  ?>
app/code/community/Laurent/OrderTickets/Model/Chat.php CHANGED
@@ -72,6 +72,16 @@ class Laurent_OrderTickets_Model_Chat extends Laurent_OrderTickets_Model_Abstrac
72
  return $this->getStatus();
73
  }
74
  }
 
 
 
 
 
 
 
 
 
 
75
  }
76
 
77
  ?>
72
  return $this->getStatus();
73
  }
74
  }
75
+
76
+ /**
77
+ * Try to load a chat by a given order id
78
+ * @param int $orderId
79
+ * @return LaurentOrderTickets_Model_Chat
80
+ */
81
+ public function loadByOrderId($orderId) {
82
+ $orderId = (int) $orderId;
83
+ return $this->load($orderId, 'order_id');
84
+ }
85
  }
86
 
87
  ?>
app/code/community/Laurent/OrderTickets/controllers/Adminhtml/ChatController.php CHANGED
@@ -12,11 +12,11 @@
12
  * Description of ChatController
13
  *
14
  */
15
- class Laurent_OrderTickets_Adminhtml_ChatController extends Mage_Adminhtml_Controller_Action {
16
 
17
  public function indexAction(){
 
18
  $this->_initAction();
19
- $this->_addContent($this->getLayout()->createBlock('ordertickets/adminhtml_chat'));
20
  $this->renderLayout();
21
  }
22
 
@@ -27,12 +27,14 @@ class Laurent_OrderTickets_Adminhtml_ChatController extends Mage_Adminhtml_Contr
27
  $chatId = $this->getRequest()->getParam('chat_id');
28
 
29
  $chat = Mage::getModel('ordertickets/chat')->load($chatId);
 
30
 
31
  if($chat->getId()){
32
  Mage::register('ordertickets_chat', $chat);
 
 
 
33
  $this->_initAction();
34
- $this->_addContent($this->getLayout()->createBlock('ordertickets/adminhtml_chat_view'));
35
- $this->_addLeft($this->getLayout()->createBlock('ordertickets/adminhtml_chat_view_tabs'));
36
  $this->renderLayout();
37
  }
38
  else{
@@ -120,30 +122,6 @@ class Laurent_OrderTickets_Adminhtml_ChatController extends Mage_Adminhtml_Contr
120
 
121
  $this->getResponse()->setBody($this->getLayout()->createBlock('ordertickets/adminhtml_customer_edit_tab_tickets')->toHtml());
122
  }
123
-
124
- /**
125
- * Initialize action
126
- *
127
- * @return Mage_Adminhtml_Controller_Action
128
- */
129
- protected function _initAction()
130
- {
131
- $this->loadLayout()
132
- ->_setActiveMenu('sales/ordertickets')
133
- ->_addBreadcrumb($this->__('Sales'), $this->__('Sales'))
134
- ->_addBreadcrumb($this->__('Order tickets'), $this->__('Order tickets'));
135
- return $this;
136
- }
137
-
138
- /**
139
- * Create a new Chat Action
140
- */
141
- public function newAction()
142
- {
143
- $this->_initAction();
144
- $this->renderLayout();
145
- }
146
-
147
  }
148
 
149
  ?>
12
  * Description of ChatController
13
  *
14
  */
15
+ class Laurent_OrderTickets_Adminhtml_ChatController extends Laurent_OrderTickets_Controller_Adminhtml_Chat {
16
 
17
  public function indexAction(){
18
+ $this->_baseTitle();
19
  $this->_initAction();
 
20
  $this->renderLayout();
21
  }
22
 
27
  $chatId = $this->getRequest()->getParam('chat_id');
28
 
29
  $chat = Mage::getModel('ordertickets/chat')->load($chatId);
30
+ /* @var $chat Laurent_OrderTickets_Model_Chat */
31
 
32
  if($chat->getId()){
33
  Mage::register('ordertickets_chat', $chat);
34
+
35
+ $this->_baseTitle();
36
+ $this->_title($this->__('Tickets for order %s', $chat->getOrder()->getIncrementId()));
37
  $this->_initAction();
 
 
38
  $this->renderLayout();
39
  }
40
  else{
122
 
123
  $this->getResponse()->setBody($this->getLayout()->createBlock('ordertickets/adminhtml_customer_edit_tab_tickets')->toHtml());
124
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  }
126
 
127
  ?>
app/code/community/Laurent/OrderTickets/controllers/Adminhtml/CreateController.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * @category Laurent
5
+ * @package Laurent_OrderTickets
6
+ * @copyright Copyright (c) 2012 Laurent Clouet
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ * @author Laurent Clouet <laurent35240@gmail.com>
9
+ */
10
+
11
+ /**
12
+ * Description of CreateController
13
+ *
14
+ */
15
+ class Laurent_OrderTickets_Adminhtml_CreateController extends Laurent_OrderTickets_Controller_Adminhtml_Chat {
16
+
17
+ /**
18
+ * Create a new Chat Action
19
+ */
20
+ public function indexAction() {
21
+ $this->_baseTitle();
22
+ $this->_title($this->__('Create new order tickets'));
23
+ $this->_initAction();
24
+ $this->renderLayout();
25
+ }
26
+
27
+ /**
28
+ * Rendering order grid for creating new ordertickets
29
+ */
30
+ public function loadOrderGridAction() {
31
+ $this->loadLayout(false);
32
+ $this->renderLayout();
33
+ }
34
+
35
+ /**
36
+ * Check if we can create order tickets for required order
37
+ */
38
+ public function stepTwoAction() {
39
+ $session = $this->_getSession();
40
+
41
+ try {
42
+ //Checking if we receive an order id
43
+ $orderId = (int) $this->getRequest()->getParam('order_id');
44
+ $this->_checkOrderId($orderId);
45
+ $order = Mage::getModel('sales/order')->load($orderId);
46
+ /* @var $order Mage_Sales_Model_Order */
47
+
48
+ //Checking if there is already started order chat for this order
49
+ //If chat is found we redirect then to chat edit page
50
+ $orderChat = Mage::getModel('ordertickets/chat');
51
+ /* @var $orderChat Laurent_OrderTickets_Model_Chat */
52
+ $orderChat->loadByOrderId($orderId);
53
+ if($orderChat->getId()){
54
+ $message = $this->__('Tickets already exist for this order. Please add new here.');
55
+ $session->addNotice($message);
56
+ $this->_redirect('*/adminhtml_chat/view', array('chat_id' => $orderChat->getId()));
57
+ return false;
58
+ }
59
+
60
+ //Displaying form
61
+ Mage::register('chat_order_id', $orderId);
62
+ $this->_baseTitle();
63
+ $this->_title($this->__('Create new order tickets for order #%s', $order->getIncrementId()));
64
+ $this->_initAction();
65
+ $this->renderLayout();
66
+
67
+ } catch (Mage_Core_Exception $e) {
68
+ $message = $this->__("Error while creating new order tickets: %s", $e->getMessage());
69
+ $session->addError($message);
70
+ $this->_redirect('*/adminhtml_chat');
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Processing data to save
76
+ */
77
+ public function saveAction(){
78
+ $session = $this->_getSession();
79
+
80
+ try {
81
+ $request = $this->getRequest();
82
+ $postData = $request->getPost();
83
+ if (!$postData) {
84
+ $exceptionMsg = $this->__('There is no data to save.');
85
+ throw new Mage_Core_Exception($exceptionMsg);
86
+ }
87
+
88
+ $chatData = $request->getParam('chat');
89
+ $ticketData = $request->getParam('ticket');
90
+
91
+ $orderId = (isset($chatData['order_id']) ? $chatData['order_id'] : null);
92
+ $this->_checkOrderId($orderId);
93
+
94
+ $chat = Mage::getModel('ordertickets/chat');
95
+ /* @var $chat Laurent_OrderTickets_Model_Chat */
96
+ $chat->setData($chatData);
97
+ $chat->save();
98
+
99
+ $ticketData['chat_id'] = $chat->getId();
100
+ $ticket = Mage::getModel('ordertickets/ticket');
101
+ /* @var $ticket Laurent_OrderTickets_Model_Ticket */
102
+ $ticket->setData($ticketData);
103
+ $ticket->save();
104
+
105
+ $successMessage = $this->__('Ticket has been correctly saved.');
106
+ $session->addSuccess($successMessage);
107
+ $this->_redirect('*/adminhtml_chat');
108
+ return false;
109
+
110
+ } catch (Mage_Core_Exception $e) {
111
+ $errorMesage = $this->__("Error while creating new order tickets: %s", $e->getMessage());
112
+ $session->addError($errorMesage);
113
+ $this->_redirect('*/adminhtml_chat');
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Check if order id is correct and correspond to an order
119
+ * @param int $orderId
120
+ * @return boolean true if it is ok
121
+ * @throws Mage_Core_Exception If order id is incorrect
122
+ */
123
+ protected function _checkOrderId($orderId) {
124
+ if (!$orderId) {
125
+ $message = $this->__('No order selected for creating new order tickets.');
126
+ throw new Mage_Core_Exception($message);
127
+ }
128
+
129
+
130
+ //Checking if order exists
131
+ $order = Mage::getModel('sales/order');
132
+ /* @var $order Mage_Sales_Model_Order */
133
+ $order->load($orderId);
134
+ if (!$order->getId()) {
135
+ $message = $this->__('Order not found.');
136
+ throw new Mage_Core_Exception($message);
137
+ }
138
+
139
+ return true;
140
+ }
141
+
142
+ /**
143
+ * Tells if user can use actions of this controller
144
+ * @return boolean
145
+ */
146
+ protected function _isAllowed()
147
+ {
148
+ return Mage::getSingleton('admin/session')->isAllowed('sales/ordertickets/create');
149
+ }
150
+
151
+ }
152
+
153
+ ?>
app/code/community/Laurent/OrderTickets/controllers/ChatController.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php
2
 
3
  /*
4
  * @category Laurent
1
+ g<?php
2
 
3
  /*
4
  * @category Laurent
app/code/community/Laurent/OrderTickets/doc/CREATE-IN-BO.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Creation of new ticket in BO:
2
+
3
+ - First step after clicking on button Create New, will be to select for which
4
+ order this ticket will be related too.
5
+ - Possibility of creating new ticket while viewing an order in BO
6
+ - Customer data will then be prefilled with the one from the order. But it can
7
+ be edited if needed
8
+ - Status will be put by default to Open but it can be changed if needed
9
+ - We can set what type of message we want to register: Message from customer or
10
+ message from the shop. By default this option will be put on message from the
11
+ shop
12
+ - New created message will not have to be reported by cron
app/code/community/Laurent/OrderTickets/doc/EVOLUTIONS.txt CHANGED
@@ -16,6 +16,7 @@ specific action
16
  - More straightforward relations between tickets for being able to indicate to
17
  which message an answer is dedicated
18
 
19
- - Possibility of edditing/deleting every message in BO
20
 
21
- - Notifying customer by email about a new answer
 
16
  - More straightforward relations between tickets for being able to indicate to
17
  which message an answer is dedicated
18
 
19
+ - Possibility of editing/deleting every message in BO
20
 
21
+ - Notifying customer by email about a new answer
22
+ - Possibility for a customer to attach a file to his message
app/code/community/Laurent/OrderTickets/etc/adminhtml.xml CHANGED
@@ -1,16 +1,12 @@
1
- <?xml version="1.0"?>
 
 
 
 
 
 
 
2
  <config>
3
- <menu>
4
- <sales>
5
- <children>
6
- <ordertickets translate="title">
7
- <title>Order tickets</title>
8
- <action>ordertickets/adminhtml_chat</action>
9
- <sort_order>600</sort_order>
10
- </ordertickets>
11
- </children>
12
- </sales>
13
- </menu>
14
  <acl>
15
  <resources>
16
  <admin>
@@ -19,6 +15,11 @@
19
  <children>
20
  <ordertickets translate="title" module="ordertickets">
21
  <title>Order tickets</title>
 
 
 
 
 
22
  </ordertickets>
23
  </children>
24
  </sales>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ @category Laurent
4
+ @package Tower
5
+ @copyright Copyright (c) 2012 Laurent Clouet
6
+ @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
7
+ @author Laurent Clouet <laurent35240@gmail.com>
8
+ -->
9
  <config>
 
 
 
 
 
 
 
 
 
 
 
10
  <acl>
11
  <resources>
12
  <admin>
15
  <children>
16
  <ordertickets translate="title" module="ordertickets">
17
  <title>Order tickets</title>
18
+ <children>
19
+ <create translate="title" module="ordertickets">
20
+ <title>Create</title>
21
+ </create>
22
+ </children>
23
  </ordertickets>
24
  </children>
25
  </sales>
app/code/community/Laurent/OrderTickets/etc/config.xml CHANGED
@@ -1,8 +1,15 @@
1
  <?xml version="1.0"?>
 
 
 
 
 
 
 
2
  <config>
3
  <modules>
4
  <Laurent_OrderTickets>
5
- <version>1.0.7</version>
6
  </Laurent_OrderTickets>
7
  </modules>
8
  <global>
1
  <?xml version="1.0"?>
2
+ <!--
3
+ @category Laurent
4
+ @package Tower
5
+ @copyright Copyright (c) 2012 Laurent Clouet
6
+ @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
7
+ @author Laurent Clouet <laurent35240@gmail.com>
8
+ -->
9
  <config>
10
  <modules>
11
  <Laurent_OrderTickets>
12
+ <version>1.1.0</version>
13
  </Laurent_OrderTickets>
14
  </modules>
15
  <global>
app/design/adminhtml/default/default/layout/ordertickets.xml CHANGED
@@ -2,12 +2,60 @@
2
  <layout>
3
  <adminhtml_customer_edit>
4
  <reference name="customer_edit_tabs">
5
- <action method="addTab"><name>customer_tickets</name><block>ordertickets/adminhtml_customer_edit_tab_tickets</block></action>
 
 
 
6
  </reference>
7
  </adminhtml_customer_edit>
8
  <adminhtml_sales_order_view>
9
  <reference name="sales_order_tabs">
10
- <action method="addTab"><name>order_tickets</name><block>ordertickets/adminhtml_order_view_tab_tickets</block></action>
 
 
 
11
  </reference>
12
  </adminhtml_sales_order_view>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  </layout>
2
  <layout>
3
  <adminhtml_customer_edit>
4
  <reference name="customer_edit_tabs">
5
+ <action method="addTab">
6
+ <name>customer_tickets</name>
7
+ <block>ordertickets/adminhtml_customer_edit_tab_tickets</block>
8
+ </action>
9
  </reference>
10
  </adminhtml_customer_edit>
11
  <adminhtml_sales_order_view>
12
  <reference name="sales_order_tabs">
13
+ <action method="addTab">
14
+ <name>order_tickets</name>
15
+ <block>ordertickets/adminhtml_order_view_tab_tickets</block>
16
+ </action>
17
  </reference>
18
  </adminhtml_sales_order_view>
19
+ <ordertickets_adminhtml_chat_index>
20
+ <reference name="content">
21
+ <block type="ordertickets/adminhtml_chat" name="chat_grid"></block>
22
+ </reference>
23
+ </ordertickets_adminhtml_chat_index>
24
+ <ordertickets_adminhtml_chat_view>
25
+ <reference name="content">
26
+ <block type="ordertickets/adminhtml_chat_view" name="chat_view"></block>
27
+ </reference>
28
+ <reference name="left">
29
+ <block type="ordertickets/adminhtml_chat_view_tabs" name="chat_view_tabs">
30
+ <block type="ordertickets/adminhtml_chat_view_tab_tickets" name="chat_view_tab_tickets" template="ordertickets/chat/view/tab/tickets.phtml"></block>
31
+ <action method="addTab">
32
+ <name>chat_view_tab_main</name>
33
+ <block>ordertickets/adminhtml_chat_view_tab_main</block>
34
+ </action>
35
+ <action method="addTab">
36
+ <name>chat_view_tab_tickets</name>
37
+ <block>chat_view_tab_tickets</block>
38
+ </action>
39
+ </block>
40
+ </reference>
41
+ </ordertickets_adminhtml_chat_view>
42
+ <ordertickets_adminhtml_create_index>
43
+ <reference name="content">
44
+ <block type="ordertickets/adminhtml_chat_create" name="chat_create">
45
+ <block type="ordertickets/adminhtml_chat_create_form" template="ordertickets/chat/create/form.phtml" name="form">
46
+ <block type="ordertickets/adminhtml_chat_create_order" template="ordertickets/chat/create/abstract.phtml" name="order">
47
+ <block type="ordertickets/adminhtml_chat_create_order_grid" name="grid" />
48
+ </block>
49
+ </block>
50
+ </block>
51
+ </reference>
52
+ </ordertickets_adminhtml_create_index>
53
+ <ordertickets_adminhtml_create_loadordergrid>
54
+ <block type="ordertickets/adminhtml_chat_create_order_grid" name="grid" output="toHtml" />
55
+ </ordertickets_adminhtml_create_loadordergrid>
56
+ <ordertickets_adminhtml_create_steptwo>
57
+ <reference name="content">
58
+ <block type="ordertickets/adminhtml_chat_create_steptwo" name="chat_create_steptwo"></block>
59
+ </reference>
60
+ </ordertickets_adminhtml_create_steptwo>
61
  </layout>
app/design/adminhtml/default/default/template/ordertickets/chat/create/abstract.phtml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @category Laurent
4
+ * @package Laurent_OrderTickets
5
+ * @copyright Copyright (c) 2012 Laurent Clouet
6
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
7
+ * @author Laurent Clouet <laurent35240@gmail.com>
8
+ * @see Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Order
9
+ */
10
+
11
+ ?>
12
+ <div class="entry-edit">
13
+ <div class="entry-edit-head">
14
+ <h4 class="fieldset-legend <?php echo ($this->getHeaderCssClass()) ? $this->getHeaderCssClass().' icon-head' : '' ?>"><?php echo $this->getHeaderText() ?></h4>
15
+ </div>
16
+ <div class="fieldset">
17
+ <?php echo $this->getChildHtml('', true, true) ?>
18
+ </div>
19
+ </div>
app/design/adminhtml/default/default/template/ordertickets/chat/create/form.phtml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @category Laurent
4
+ * @package Laurent_OrderTickets
5
+ * @copyright Copyright (c) 2012 Laurent Clouet
6
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
7
+ * @author Laurent Clouet <laurent35240@gmail.com>
8
+ * @see Laurent_OrderTickets_Block_Adminhtml_Chat_Create_Form
9
+ */
10
+
11
+ ?>
12
+ <form id="edit_form" action="<?php echo $this->getSaveUrl() ?>" method="post" >
13
+ <div id="orderticket-order" >
14
+ <?php echo $this->getChildHtml('order') ?>
15
+ </div>
16
+ </form>
app/design/adminhtml/default/default/template/ordertickets/order/view/tab/tickets.phtml CHANGED
@@ -1,38 +1,40 @@
1
  <?php
2
- /**
3
- * @see Laurent_OrderTickets_Block_Adminhtml_Order_View_Tab_Tickets
4
- */
5
  ?>
6
  <div class="entry-edit">
7
  <div class="entry-edit-head">
8
  <h4><?php echo $this->__('Order tickets'); ?></h4>
9
  </div>
10
  <div class="fieldset fieldset-wide">
11
- <?php if($this->hasChat()):?>
12
- <table cellspacing="0" class="form-list">
13
- <tr>
14
- <td class="label"><?php echo $this->__('Created at') ?></td>
15
- <td class="value"><?php echo Mage::helper('core')->formatDate($this->getChat()->getCreatedAt(), 'full', true)?></td>
16
- </tr>
17
- <tr>
18
- <td class="label"><?php echo $this->__('Last answer date') ?></td>
19
- <td class="value"><?php echo Mage::helper('core')->formatDate($this->getChat()->getLastAnswerDate(), 'full', true)?></td>
20
- </tr>
21
- <tr>
22
- <td class="label"><?php echo $this->__('Status') ?></td>
23
- <td class="value"><?php echo $this->getChat()->getStatusLabel() ?></td>
24
- </tr>
25
- <tr>
26
- <td class="label">
27
- <a href="<?php echo $this->getChatViewUrl()?>">
28
- &gt; <?php echo $this->__('Details') ?>
29
- </a>
30
- </td>
31
- <td class="value"></td>
32
- </tr>
33
- </table>
34
- <?php else: ?>
35
- <?php echo $this->__('There is no ticket associated to this order')?>
36
- <?php endif; ?>
 
 
 
 
37
  </div>
38
  </div>
1
  <?php
2
+ /* @var $this Laurent_OrderTickets_Block_Adminhtml_Order_View_Tab_Tickets */
 
 
3
  ?>
4
  <div class="entry-edit">
5
  <div class="entry-edit-head">
6
  <h4><?php echo $this->__('Order tickets'); ?></h4>
7
  </div>
8
  <div class="fieldset fieldset-wide">
9
+ <?php if ($this->hasChat()): ?>
10
+ <table cellspacing="0" class="form-list">
11
+ <tr>
12
+ <td class="label"><?php echo $this->__('Created at') ?></td>
13
+ <td class="value"><?php echo Mage::helper('core')->formatDate($this->getChat()->getCreatedAt(), 'full', true) ?></td>
14
+ </tr>
15
+ <tr>
16
+ <td class="label"><?php echo $this->__('Last answer date') ?></td>
17
+ <td class="value"><?php echo Mage::helper('core')->formatDate($this->getChat()->getLastAnswerDate(), 'full', true) ?></td>
18
+ </tr>
19
+ <tr>
20
+ <td class="label"><?php echo $this->__('Status') ?></td>
21
+ <td class="value"><?php echo $this->getChat()->getStatusLabel() ?></td>
22
+ </tr>
23
+ <tr>
24
+ <td class="label">
25
+ <a href="<?php echo $this->getChatViewUrl() ?>">
26
+ &gt; <?php echo $this->__('Details') ?>
27
+ </a>
28
+ </td>
29
+ <td class="value"></td>
30
+ </tr>
31
+ </table>
32
+ <?php else: ?>
33
+ <?php echo $this->__('There is no ticket associated to this order') ?><br />
34
+ <button type="button" class="scalable add"
35
+ onclick="setLocation('<?php echo $this->getUrl('ordertickets/adminhtml_create/steptwo', array('order_id' => $this->getOrder()->getId()))?>')">
36
+ <span><?php echo $this->__('Create ticket') ?></span>
37
+ </button>
38
+ <?php endif; ?>
39
  </div>
40
  </div>
app/locale/fr_FR/Laurent_OrderTickets.csv CHANGED
@@ -8,13 +8,19 @@
8
  "Chat Information","Informations sur le chat"
9
  "Chat was succesfully saved","Le chat a bien été enregistré"
10
  "Closed","Clôturé"
 
 
 
 
11
  "Created at","Créé le"
12
  "Cron frequency","Fréquence du cron"
13
  "Cron recipients","Destinataires de l'email du cron"
14
  "Customer email","Email du client"
15
  "Customer firstname","Prénom du client"
16
  "Customer lastname","Nom du client"
 
17
  "Details","Détails"
 
18
  "Error while saving your message. Please try again","Erreur lors de l'enregistrement de votre message. Veuillez réessayer."
19
  "Firstname","Prénom"
20
  "General Information","Informations générales"
@@ -25,16 +31,26 @@
25
  "Message date","Date du message"
26
  "Message from %s send the","Message de %s envoyé le"
27
  "Messages","Messages"
 
28
  "Open","Ouvert"
29
  "Order","Commande"
30
  "Order #%s - Messages","Commande n°%s - Messages"
 
31
  "Order tickets","Tickets de la commande"
32
  "Orders tickets","Tickets des commandes"
 
33
  "Pending answer","En attente de réponse"
 
34
  "Send","Envoyer"
35
  "Separate recipients with comma","Séparer les destinataires avec des virgules"
36
  "Status","Statut"
 
 
37
  "There is no ticket associated to this order","Il n'y a pas de ticket associé à cette commande"
38
  "This chat does not exist","Cette discussion n'existe pas"
 
 
 
 
39
  "Your message send the","Votre message envoyé le"
40
  "Your message was successfully recorded","Votre message a bien été enregistré"
8
  "Chat Information","Informations sur le chat"
9
  "Chat was succesfully saved","Le chat a bien été enregistré"
10
  "Closed","Clôturé"
11
+ "Create","Création"
12
+ "Create new order tickets","Créer un ticket pour une commande"
13
+ "Create new order tickets for order #%s","Créer un ticket pour la commande n°%s"
14
+ "Create ticket","Créer un ticket"
15
  "Created at","Créé le"
16
  "Cron frequency","Fréquence du cron"
17
  "Cron recipients","Destinataires de l'email du cron"
18
  "Customer email","Email du client"
19
  "Customer firstname","Prénom du client"
20
  "Customer lastname","Nom du client"
21
+ "Customer request","Demande du client"
22
  "Details","Détails"
23
+ "Error while creating new order tickets: %s","Erreur lors de la création d'un nouveau ticket de commande : %s"
24
  "Error while saving your message. Please try again","Erreur lors de l'enregistrement de votre message. Veuillez réessayer."
25
  "Firstname","Prénom"
26
  "General Information","Informations générales"
31
  "Message date","Date du message"
32
  "Message from %s send the","Message de %s envoyé le"
33
  "Messages","Messages"
34
+ "No order selected for creating new order tickets.","Aucune commande n'a été sélectionnée pour créer un nouveau ticket."
35
  "Open","Ouvert"
36
  "Order","Commande"
37
  "Order #%s - Messages","Commande n°%s - Messages"
38
+ "Order not found.","Commande inconnue."
39
  "Order tickets","Tickets de la commande"
40
  "Orders tickets","Tickets des commandes"
41
+ "Order tickets details","Détails du ticket de la commande"
42
  "Pending answer","En attente de réponse"
43
+ "Please select an order","Veuillez sélectionner une commande"
44
  "Send","Envoyer"
45
  "Separate recipients with comma","Séparer les destinataires avec des virgules"
46
  "Status","Statut"
47
+ "Store answer","Réponse du magasin"
48
+ "There is no data to save.","Il n'y a aucune donnée à sauvegarder."
49
  "There is no ticket associated to this order","Il n'y a pas de ticket associé à cette commande"
50
  "This chat does not exist","Cette discussion n'existe pas"
51
+ "Tickets already exist for this order. Please add new here.","Il existe déjà des tickets pour cette commande. Ajoutez les nouveaux ici."
52
+ "Tickets for order %s","Tickets de la commande %s"
53
+ "Ticket type","Type de ticket"
54
+ "Ticket has been correctly saved.","Le ticket a bien été enregistré."
55
  "Your message send the","Votre message envoyé le"
56
  "Your message was successfully recorded","Votre message a bien été enregistré"
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Order_tickets</name>
4
- <version>1.0.7</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/afl-3.0.php">Academic Free License (AFL 3.0)</license>
7
  <channel>community</channel>
@@ -9,13 +9,13 @@
9
  <summary>Ticketing system to order</summary>
10
  <description>Ticketing system to order:&#xD;
11
  - customer can add message to orders&#xD;
12
- - administrator can see thes messages, reply to them and change status of a chat&#xD;
13
  - a cron also exists to send a reminder email to administrator about new messages</description>
14
- <notes>Possibility to add "order ticket" permission to a role in back office</notes>
15
  <authors><author><name>Laurent Clouet</name><user>auto-converted</user><email>laurent35240@gmail.com</email></author></authors>
16
- <date>2012-01-01</date>
17
- <time>21:10:35</time>
18
- <contents><target name="magecommunity"><dir name="Laurent"><dir name="OrderTickets"><dir name="Block"><dir name="Adminhtml"><dir name="Chat"><dir name="View"><dir name="Tab"><file name="Main.php" hash="7ecd14eb6520037b80d171201b09a1a0"/><file name="Tickets.php" hash="f5db58785feb531e5c874e272ff7e6ca"/></dir><file name="Form.php" hash="c6b0a9e3ee8f74e03ad8bd91f6dd54ad"/><file name="Tabs.php" hash="f2ced70970ffaa74b7478709088ff146"/></dir><file name="Grid.php" hash="1254b6c710f7c3c77a1e78c188372727"/><file name="View.php" hash="bcb470a6e4e442129dd6c798b11576d4"/></dir><dir name="Customer"><dir name="Edit"><dir name="Tab"><file name="Tickets.php" hash="4be3b09ea9ad7265fc04ac82db5e8653"/></dir></dir></dir><dir name="Order"><dir name="View"><dir name="Tab"><file name="Tickets.php" hash="39efa19606e5a65d92a3cafa4e83f72e"/></dir></dir></dir><file name="Chat.php" hash="1e64e9e58574cdf03e3765e2578a8dee"/></dir><dir name="Order"><file name="Tabs.php" hash="362c07b1138c110dc270d26b1636f59b"/></dir><file name="Chat.php" hash="77536ef68fe6a21ee58c6672d78a0120"/></dir><dir name="Helper"><file name="Data.php" hash="2b6517dae27dd5154075dea1ed329293"/></dir><dir name="Model"><dir name="Config"><file name="Cron.php" hash="1c4e850b9f7c772390e89b2ce4971a86"/></dir><dir name="Mysql4"><dir name="Chat"><file name="Collection.php" hash="2bc9017a38a52d99f5af7716df5724a3"/></dir><dir name="Ticket"><file name="Collection.php" hash="83b7bd93adc9b8e8c2767aa814d38c08"/></dir><file name="Chat.php" hash="bf438bbfe69eb42c73ef6f1774c74ebe"/><file name="Ticket.php" hash="bb305039b5fc4640efce960d039979cd"/></dir><file name="Abstract.php" hash="5ec0482cd76b8273c555ddaaaa339b22"/><file name="Chat.php" hash="3dac1681629ddd1a13e1d9262038baf0"/><file name="Observer.php" hash="74716dbbfd538381a08aa6e68479c286"/><file name="Ticket.php" hash="acef6bed5b8e78250123c652f5a610ac"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ChatController.php" hash="85ee56a6cd12210acd6535716acd5481"/></dir><file name="ChatController.php" hash="5121a7b2220ffa73e446e19914af5b59"/></dir><dir name="doc"><dir name="screeenshots"><file name="bo_order_tickets_tab.png" hash="ca1d6d13d53cc6a1c2af3c9b4bfa61a9"/><file name="bo_ticket_details.png" hash="7228ed41de8dfe0626bdcadbeae05f4b"/><file name="bo_ticket_tickets.png" hash="7491fb1b62a9352d1abe9bdbbd6bc845"/><file name="bo_tickets_grid.png" hash="1270d49ebe5bb6c93420ad8f7a9ba08f"/><file name="fo_tickets_on_order.png" hash="e8a7af6d00a3c19d8de4a66d022b2988"/></dir><file name="EVOLUTIONS.txt" hash="0a8331edd958a989a0ba023ade61ba7e"/><file name="INSTALL.txt" hash="316098ba4cebfa621753e18d550880fe"/><file name="logo.png" hash="2a863ae353401ed20c679782b8e694bf"/><file name="logo.svg" hash="eb6d4bd165834e3fd308c421c6a6e9bd"/><file name="tables_scheme.graphml" hash="66b71ac524ad926ba5a4c110840f5b57"/><file name="tables_scheme.jpg" hash="c26b66b1381efa32c7140892e11932ba"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8566cc2b8e8274510af2dd4b5a6cb44b"/><file name="config.xml" hash="56cfa67a5037706c8dfbac7fd060bad7"/><file name="system.xml" hash="37739c5007d90bdf7ee8cbe567e98b6a"/></dir><dir name="sql"><dir name="ordertickets_setup"><file name="mysql4-install-0.1.0.php" hash="d0b81bbbd209f3741f3a1610197155f8"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="00f3ac0bcd2b467affce40b6f507cbcc"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="ordertickets.xml" hash="b956aaf75b258d4677e6ba54974a8397"/></dir><dir name="template"><dir name="ordertickets"><dir name="chat"><dir name="view"><dir name="tab"><file name="tickets.phtml" hash="8843f45ab15ab1159cd78daa9af1e5a5"/></dir></dir></dir><dir name="order"><dir name="view"><dir name="tab"><file name="tickets.phtml" hash="d989be63e673e14fd7754d9d77a548c8"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="ordertickets.xml" hash="ff2e6b3a75dcf121fdc5a11bc320d46f"/></dir><dir name="template"><dir name="ordertickets"><dir name="order"><file name="tabs.phtml" hash="3a146acbd5ef5af0a7c939f60ee4c383"/></dir><file name="chat.phtml" hash="2c87d7b906dd80ebdfd86dcf2aadd755"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Laurent_OrderTickets.xml" hash="46fdc0a685ad8d9144f4db4cb99f97fe"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Laurent_OrderTickets.csv" hash="fc98199584867d140ba7e21cbb17ee49"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="ordertickets.css" hash="f009140fffa838b6b3a3bfe011cebaa2"/></dir></dir></dir></dir></target></contents>
19
  <compatible/>
20
  <dependencies/>
21
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Order_tickets</name>
4
+ <version>1.1.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/afl-3.0.php">Academic Free License (AFL 3.0)</license>
7
  <channel>community</channel>
9
  <summary>Ticketing system to order</summary>
10
  <description>Ticketing system to order:&#xD;
11
  - customer can add message to orders&#xD;
12
+ - administrator can see these messages, reply to them, change status of a chat and create new messages&#xD;
13
  - a cron also exists to send a reminder email to administrator about new messages</description>
14
+ <notes>Possibility of creating new ticket in BO</notes>
15
  <authors><author><name>Laurent Clouet</name><user>auto-converted</user><email>laurent35240@gmail.com</email></author></authors>
16
+ <date>2012-03-01</date>
17
+ <time>21:34:19</time>
18
+ <contents><target name="magecommunity"><dir name="Laurent"><dir name="OrderTickets"><dir name="Block"><dir name="Adminhtml"><dir name="Chat"><dir name="Create"><dir name="Order"><file name="Grid.php" hash="3eae3e84411fe25ef8cd9527de9ccd5e"/></dir><dir name="Steptwo"><file name="Form.php" hash="29a476319b5159084d5cf6e4d6db2472"/></dir><file name="Form.php" hash="6d2c2ec969e93f9293a02f973af6b6b7"/><file name="Order.php" hash="f8b1633a38bfbb4d7e393778d8ac7682"/><file name="Steptwo.php" hash="31d7d6f07b7049c5ff6cb564b71c3758"/></dir><dir name="View"><dir name="Tab"><file name="Main.php" hash="01c4e17cd2090fadb21b0ad32e3f23ae"/><file name="Tickets.php" hash="69859743a6a76c6cc365d8868bf1b23d"/></dir><file name="Form.php" hash="e8a4cc66db1c60ce2ae7da6da8d43a56"/><file name="Tabs.php" hash="ccd6226bff2e9a8f079d9f22396313eb"/></dir><file name="Create.php" hash="c9e05324c1373948577ac91cf5388ac2"/><file name="Grid.php" hash="1254b6c710f7c3c77a1e78c188372727"/><file name="View.php" hash="26f5062f80f8f0a63c15ad2089e3c866"/></dir><dir name="Customer"><dir name="Edit"><dir name="Tab"><file name="Tickets.php" hash="4be3b09ea9ad7265fc04ac82db5e8653"/></dir></dir></dir><dir name="Order"><dir name="View"><dir name="Tab"><file name="Tickets.php" hash="39efa19606e5a65d92a3cafa4e83f72e"/></dir></dir></dir><file name="Chat.php" hash="44389d41bc3926b8cdc86d1a373e3c45"/></dir><dir name="Order"><file name="Tabs.php" hash="362c07b1138c110dc270d26b1636f59b"/></dir><file name="Chat.php" hash="77536ef68fe6a21ee58c6672d78a0120"/></dir><dir name="Controller"><dir name="Adminhtml"><file name="Chat.php" hash="abe202058ba182ff65c9f811b6d2dd76"/></dir></dir><dir name="Helper"><file name="Data.php" hash="cb84c7e814bc6247d8f9fe5007e5e76b"/></dir><dir name="Model"><dir name="Config"><file name="Cron.php" hash="1c4e850b9f7c772390e89b2ce4971a86"/></dir><dir name="Mysql4"><dir name="Chat"><file name="Collection.php" hash="2bc9017a38a52d99f5af7716df5724a3"/></dir><dir name="Ticket"><file name="Collection.php" hash="83b7bd93adc9b8e8c2767aa814d38c08"/></dir><file name="Chat.php" hash="bf438bbfe69eb42c73ef6f1774c74ebe"/><file name="Ticket.php" hash="bb305039b5fc4640efce960d039979cd"/></dir><file name="Abstract.php" hash="5ec0482cd76b8273c555ddaaaa339b22"/><file name="Chat.php" hash="929046b23851405043fc169b4d4b020f"/><file name="Observer.php" hash="74716dbbfd538381a08aa6e68479c286"/><file name="Ticket.php" hash="acef6bed5b8e78250123c652f5a610ac"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ChatController.php" hash="06f9d4808e4184d269940c9d50a424f4"/><file name="CreateController.php" hash="a5ab5f6647a58d8f44e0aefccac98616"/></dir><file name="ChatController.php" hash="0a3ed9336507aa7d06353a90c16443ba"/></dir><dir name="doc"><dir name="screeenshots"><file name="bo_order_tickets_tab.png" hash="ca1d6d13d53cc6a1c2af3c9b4bfa61a9"/><file name="bo_ticket_details.png" hash="7228ed41de8dfe0626bdcadbeae05f4b"/><file name="bo_ticket_tickets.png" hash="7491fb1b62a9352d1abe9bdbbd6bc845"/><file name="bo_tickets_grid.png" hash="1270d49ebe5bb6c93420ad8f7a9ba08f"/><file name="fo_tickets_on_order.png" hash="e8a7af6d00a3c19d8de4a66d022b2988"/></dir><file name="CREATE-IN-BO.txt" hash="020114172e426f95d7a1d733fcaaf49a"/><file name="EVOLUTIONS.txt" hash="f7916ea0d3d00122873970c678f026a6"/><file name="INSTALL.txt" hash="316098ba4cebfa621753e18d550880fe"/><file name="logo.png" hash="2a863ae353401ed20c679782b8e694bf"/><file name="logo.svg" hash="eb6d4bd165834e3fd308c421c6a6e9bd"/><file name="tables_scheme.graphml" hash="66b71ac524ad926ba5a4c110840f5b57"/><file name="tables_scheme.jpg" hash="c26b66b1381efa32c7140892e11932ba"/></dir><dir name="etc"><file name="adminhtml.xml" hash="83a3d5ef9d9fb1041b7e6dba8fa66dd5"/><file name="config.xml" hash="9609ddadd6f7b4b3007c281e8577f64d"/><file name="system.xml" hash="37739c5007d90bdf7ee8cbe567e98b6a"/></dir><dir name="sql"><dir name="ordertickets_setup"><file name="mysql4-install-0.1.0.php" hash="d0b81bbbd209f3741f3a1610197155f8"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="00f3ac0bcd2b467affce40b6f507cbcc"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="ordertickets.xml" hash="f3802540ee8a0f81c288dcfc19c0a589"/></dir><dir name="template"><dir name="ordertickets"><dir name="chat"><dir name="create"><file name="abstract.phtml" hash="19cbea5ac678b9197b08c6d9e8f55880"/><file name="form.phtml" hash="5a45de144e3f0b6b52a2e2ee19450413"/></dir><dir name="view"><dir name="tab"><file name="tickets.phtml" hash="8843f45ab15ab1159cd78daa9af1e5a5"/></dir></dir></dir><dir name="order"><dir name="view"><dir name="tab"><file name="tickets.phtml" hash="f3aa00997858afcf85373b8e0f1716db"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="ordertickets.xml" hash="ff2e6b3a75dcf121fdc5a11bc320d46f"/></dir><dir name="template"><dir name="ordertickets"><dir name="order"><file name="tabs.phtml" hash="3a146acbd5ef5af0a7c939f60ee4c383"/></dir><file name="chat.phtml" hash="2c87d7b906dd80ebdfd86dcf2aadd755"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Laurent_OrderTickets.xml" hash="46fdc0a685ad8d9144f4db4cb99f97fe"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Laurent_OrderTickets.csv" hash="c8eafd1da65d14384b589d3db5c1537e"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="ordertickets.css" hash="f009140fffa838b6b3a3bfe011cebaa2"/></dir></dir></dir></dir></target></contents>
19
  <compatible/>
20
  <dependencies/>
21
  </package>