straker-translations-easy-translation-platform - Version 0.3.0

Version Notes

Initial development version

Download this release

Release Info

Developer Chris
Extension straker-translations-easy-translation-platform
Version 0.3.0
Comparing to
See all releases


Code changes from version 0.2.0 to 0.3.0

Files changed (28) hide show
  1. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Category.php +1 -1
  2. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Grid.php +10 -0
  3. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Product.php +1 -1
  4. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Product/Grid.php +7 -7
  5. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/New/Category/Confirm/Grid.php +41 -0
  6. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/New/Products/Grid.php +29 -0
  7. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/System/Config/Form/Store.php +48 -0
  8. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Action.php +2 -2
  9. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Backend.php +4 -1
  10. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Frontend.php +4 -1
  11. app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Status.php +4 -0
  12. app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Job.php +26 -0
  13. app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Resource/Job/Category/Collection.php +11 -0
  14. app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Resource/Job/Product/Collection.php +11 -0
  15. app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/JobController.php +0 -123
  16. app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/NewController.php +0 -196
  17. app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/ProductController.php +0 -63
  18. app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/Straker/NewController.php +20 -0
  19. app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/adminhtml.xml +7 -2
  20. app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/config.xml +10 -10
  21. app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/system.xml +96 -87
  22. app/code/community/StrakerTranslations/EasyTranslationPlatform/sql/strakertranslations_easytranslationplatform_setup/mysql4-upgrade-0.2.0-0.3.0.php +26 -0
  23. app/design/adminhtml/default/straker/template/straker/system/config/store.phtml +13 -0
  24. js/straker/livepipe/livepipe.js +0 -181
  25. js/straker/livepipe/window.js +0 -947
  26. package.xml +4 -4
  27. skin/adminhtml/default/straker/css/straker.css +124 -104
  28. skin/adminhtml/default/straker/css/straker.less +126 -0
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Category.php CHANGED
@@ -12,7 +12,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Job_Category e
12
  $jobStatus = Mage::getModel('strakertranslations_easytranslationplatform/job')->load($jobId)->getStatusId();
13
  if ( $jobStatus == '4'){
14
  $this->_addButton('publish', array(
15
- 'label' => Mage::helper('catalog')->__('Publish Translation'),
16
  'onclick' => "setLocation('{$this->getUrl('*/*/copyAll',array('job_id'=>$jobId))}');",
17
  'class' => 'task'
18
  ));
12
  $jobStatus = Mage::getModel('strakertranslations_easytranslationplatform/job')->load($jobId)->getStatusId();
13
  if ( $jobStatus == '4'){
14
  $this->_addButton('publish', array(
15
+ 'label' => Mage::helper('catalog')->__('Publish All Translations'),
16
  'onclick' => "setLocation('{$this->getUrl('*/*/copyAll',array('job_id'=>$jobId))}');",
17
  'class' => 'task'
18
  ));
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Grid.php CHANGED
@@ -12,6 +12,16 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Job_Grid exten
12
 
13
  protected function _prepareCollection() {
14
  $collection = Mage::getModel('strakertranslations_easytranslationplatform/job')->getCollection();
 
 
 
 
 
 
 
 
 
 
15
  $collection->getSelect()->joinLeft(
16
  'straker_job_type',
17
  'straker_job_type.type_id = main_table.type_id',
12
 
13
  protected function _prepareCollection() {
14
  $collection = Mage::getModel('strakertranslations_easytranslationplatform/job')->getCollection();
15
+
16
+ foreach($collection as $jobModel){
17
+ if($jobModel->getStatusId() == 4){
18
+ $jobModel->load($jobModel->getId())->isPublished();
19
+ }
20
+ }
21
+
22
+
23
+ $collection = Mage::getModel('strakertranslations_easytranslationplatform/job')->getCollection();
24
+
25
  $collection->getSelect()->joinLeft(
26
  'straker_job_type',
27
  'straker_job_type.type_id = main_table.type_id',
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Product.php CHANGED
@@ -12,7 +12,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Job_Product ex
12
  $jobStatus = Mage::getModel('strakertranslations_easytranslationplatform/job')->load($jobId)->getStatusId();
13
  if ( $jobStatus == '4'){
14
  $this->_addButton('publish', array(
15
- 'label' => Mage::helper('catalog')->__('Publish Translation'),
16
  'onclick' => "setLocation('{$this->getUrl('*/*/copyAll',array('job_id'=>$jobId))}');",
17
  'class' => 'task'
18
  ));
12
  $jobStatus = Mage::getModel('strakertranslations_easytranslationplatform/job')->load($jobId)->getStatusId();
13
  if ( $jobStatus == '4'){
14
  $this->_addButton('publish', array(
15
+ 'label' => Mage::helper('catalog')->__('Publish All Translations'),
16
  'onclick' => "setLocation('{$this->getUrl('*/*/copyAll',array('job_id'=>$jobId))}');",
17
  'class' => 'task'
18
  ));
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Job/Product/Grid.php CHANGED
@@ -46,12 +46,12 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Job_Product_Gr
46
  }
47
 
48
  protected function _prepareColumns() {
49
- // $this->addColumn('id', array(
50
- // 'header' => Mage::helper('strakertranslations_easytranslationplatform')->__('ID'),
51
- // 'align' => 'right',
52
- // 'width' => '50px',
53
- // 'index' => 'id',
54
- // ));
55
 
56
  $this->addColumn('product_id', array(
57
  'header' => Mage::helper('strakertranslations_easytranslationplatform')->__('Product ID'),
@@ -137,7 +137,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Job_Product_Gr
137
  $this->getMassactionBlock()->setHiddenParams($hiddenParams);
138
 
139
 
140
- Mage::dispatchEvent('adminhtml_strakertranslation_job_product_grid_prepare_massaction', array('block' => $this));
141
  return $this;
142
  }
143
  }
46
  }
47
 
48
  protected function _prepareColumns() {
49
+ $this->addColumn('id', array(
50
+ 'header' => Mage::helper('strakertranslations_easytranslationplatform')->__('ID'),
51
+ 'align' => 'right',
52
+ 'width' => '50px',
53
+ 'index' => 'id',
54
+ ));
55
 
56
  $this->addColumn('product_id', array(
57
  'header' => Mage::helper('strakertranslations_easytranslationplatform')->__('Product ID'),
137
  $this->getMassactionBlock()->setHiddenParams($hiddenParams);
138
 
139
 
140
+ // Mage::dispatchEvent('adminhtml_strakertranslation_job_product_grid_prepare_massaction', array('block' => $this));
141
  return $this;
142
  }
143
  }
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/New/Category/Confirm/Grid.php CHANGED
@@ -33,6 +33,13 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
33
  $collection->addAttributeToSelect($attr);
34
  }
35
 
 
 
 
 
 
 
 
36
  $this->setCollection($collection);
37
 
38
  parent::_prepareCollection();
@@ -40,6 +47,20 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
40
  return $this;
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  protected function _prepareColumns()
44
  {
45
 
@@ -50,6 +71,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
50
  'type' => 'number',
51
  'index' => 'entity_id',
52
  'filter' => false,
 
53
  ));
54
 
55
  if (in_array('name',$this->getAttrArray())) {
@@ -58,6 +80,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
58
  'header' => Mage::helper('catalog')->__('Name to translate'),
59
  'index' => 'name',
60
  'filter' => false,
 
61
  ));
62
  }
63
  else{
@@ -66,6 +89,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
66
  'header' => Mage::helper('catalog')->__('Name'),
67
  'index' => 'name',
68
  'filter' => false,
 
69
  ));
70
  }
71
 
@@ -75,6 +99,7 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
75
  'renderer' => 'StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_Renderer_Path',
76
  'index' => 'path',
77
  'filter' => false,
 
78
  ));
79
 
80
  foreach ($this->getAttrArray() as $attr){
@@ -85,10 +110,26 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Category_C
85
  'header' => Mage::helper('catalog')->__($attrModel->getFrontendLabel()) .' to Translate',
86
  'index' => $attr,
87
  'filter' => false,
 
88
  ));
89
  }
90
  }
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  return parent::_prepareColumns();
93
  }
94
 
33
  $collection->addAttributeToSelect($attr);
34
  }
35
 
36
+ //join straker job product table to get version for each product
37
+ $collection->getSelect()->joinLeft(
38
+ 'straker_job_category',
39
+ 'straker_job_category.category_id = e.entity_id',
40
+ 'version'
41
+ );
42
+
43
  $this->setCollection($collection);
44
 
45
  parent::_prepareCollection();
47
  return $this;
48
  }
49
 
50
+ // protected function _addColumnFilterToCollection($column)
51
+ // {
52
+ //
53
+ // if ($column->getId() == 'version') {
54
+ // $this->getCollection()->joinField('version',
55
+ // 'straker_job_category',
56
+ // 'version',
57
+ // 'category_id=entity_id',
58
+ // null,
59
+ // 'left');
60
+ // }
61
+ //
62
+ // }
63
+
64
  protected function _prepareColumns()
65
  {
66
 
71
  'type' => 'number',
72
  'index' => 'entity_id',
73
  'filter' => false,
74
+ 'sortable' => false
75
  ));
76
 
77
  if (in_array('name',$this->getAttrArray())) {
80
  'header' => Mage::helper('catalog')->__('Name to translate'),
81
  'index' => 'name',
82
  'filter' => false,
83
+ 'sortable' => false
84
  ));
85
  }
86
  else{
89
  'header' => Mage::helper('catalog')->__('Name'),
90
  'index' => 'name',
91
  'filter' => false,
92
+ 'sortable' => false
93
  ));
94
  }
95
 
99
  'renderer' => 'StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_Renderer_Path',
100
  'index' => 'path',
101
  'filter' => false,
102
+ 'sortable' => false
103
  ));
104
 
105
  foreach ($this->getAttrArray() as $attr){
110
  'header' => Mage::helper('catalog')->__($attrModel->getFrontendLabel()) .' to Translate',
111
  'index' => $attr,
112
  'filter' => false,
113
+ 'sortable' => false
114
  ));
115
  }
116
  }
117
 
118
+ $this->addColumn('version',
119
+ array(
120
+ 'header'=> Mage::helper('catalog')->__('Translated'),
121
+ 'width' => '70px',
122
+ 'index' => 'version',
123
+ 'type' => 'options',
124
+ 'filter' => false,
125
+ 'sortable' => false,
126
+ 'options' => array(
127
+ 1 => Mage::helper('catalog')->__('Translated'),
128
+ '' => Mage::helper('catalog')->__('Not Translated')
129
+ )
130
+ ));
131
+
132
+
133
  return parent::_prepareColumns();
134
  }
135
 
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/New/Products/Grid.php CHANGED
@@ -64,6 +64,13 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Products_G
64
  $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
65
  }
66
 
 
 
 
 
 
 
 
67
  $this->setCollection($collection);
68
 
69
  parent::_prepareCollection();
@@ -82,6 +89,16 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Products_G
82
  null,
83
  'left');
84
  }
 
 
 
 
 
 
 
 
 
 
85
  }
86
  return parent::_addColumnFilterToCollection($column);
87
  }
@@ -146,6 +163,18 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_New_Products_G
146
  'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(),
147
  ));
148
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  if (!Mage::app()->isSingleStoreMode()) {
150
  $this->addColumn('websites',
151
  array(
64
  $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
65
  }
66
 
67
+ //join straker job product table to get version for each product
68
+ $collection->getSelect()->joinLeft(
69
+ 'straker_job_product',
70
+ 'straker_job_product.product_id = e.entity_id',
71
+ 'version'
72
+ );
73
+
74
  $this->setCollection($collection);
75
 
76
  parent::_prepareCollection();
89
  null,
90
  'left');
91
  }
92
+
93
+ if ($column->getId() == 'version') {
94
+ $this->getCollection()->joinField('version',
95
+ 'straker_job_product',
96
+ 'version',
97
+ 'product_id=entity_id',
98
+ null,
99
+ 'left');
100
+ }
101
+
102
  }
103
  return parent::_addColumnFilterToCollection($column);
104
  }
163
  'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(),
164
  ));
165
 
166
+ $this->addColumn('version',
167
+ array(
168
+ 'header'=> Mage::helper('catalog')->__('Translated'),
169
+ 'width' => '70px',
170
+ 'index' => 'version',
171
+ 'type' => 'options',
172
+ 'options' => array(
173
+ 1 => Mage::helper('catalog')->__('Translated'),
174
+ '' => Mage::helper('catalog')->__('Not Translated')
175
+ )
176
+ ));
177
+
178
  if (!Mage::app()->isSingleStoreMode()) {
179
  $this->addColumn('websites',
180
  array(
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/System/Config/Form/Store.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_System_Config_Form_Store extends Mage_Adminhtml_Block_System_Config_Form_Field
3
+ {
4
+ /*
5
+ * Set template
6
+ */
7
+ protected function _construct()
8
+ {
9
+ parent::_construct();
10
+ $this->setTemplate('straker/system/config/store.phtml');
11
+ }
12
+
13
+ /**
14
+ * Return element html
15
+ *
16
+ * @param Varien_Data_Form_Element_Abstract $element
17
+ * @return string
18
+ */
19
+ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
20
+ {
21
+ return $this->_toHtml();
22
+ }
23
+
24
+ /**
25
+ * Generate button html
26
+ *
27
+ * @return string
28
+ */
29
+ public function getClearStoreButtonHtml($store)
30
+ {
31
+ if ($store->getId() && Mage::helper('strakertranslations_easytranslationplatform')->getStoreSetup($store->getId())) {
32
+ $button = $this->getLayout()->createBlock('adminhtml/widget_button')
33
+ ->setData(array(
34
+ 'id' => 'straker_clear_store_button_' . $store->getCode(),
35
+ 'label' => $this->helper('adminhtml')->__('Clear'),
36
+ 'onclick' => 'setLocation(\'' . Mage::helper('adminhtml')->getUrl(
37
+ 'adminhtml/straker_new/resetStoreSettings',
38
+ array('store' => $store->getId())
39
+ ) . '\');'
40
+ ));
41
+ return $button->toHtml();
42
+ }
43
+ else{
44
+
45
+ return '<div class="empty-button">'.$this->__('No settings found.').'</div>';
46
+ }
47
+ }
48
+ }
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Action.php CHANGED
@@ -6,9 +6,9 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_
6
  {
7
  if (get_class($row) == get_class(Mage::getModel('strakertranslations_easytranslationplatform/job'))) {
8
 
9
- $buttonText = $row->getStatusId() == 4 ? $this->__('Publish') : $this->__('View Order');
10
 
11
- $out = '<button id="button-update-'.$row->getId().'" style="margin: 5px; display: block;" onclick="event.stopPropagation(); setLocation(\'' . Mage::helper("adminhtml")->getUrl("adminhtml/straker_".strtolower($row->getTypeName()).'/', array('job_id' => $row->getId())) . '\')" title="View Order" type="button" style="">'.$buttonText.'</button>';
12
  return $out;
13
  }
14
  }
6
  {
7
  if (get_class($row) == get_class(Mage::getModel('strakertranslations_easytranslationplatform/job'))) {
8
 
9
+ $buttonText = $row->getStatusId() == 4 ? $this->__('Publish') : $this->__('View');
10
 
11
+ $out = '<button id="button-update-'.$row->getId().'" style="margin: 5px; display: block;" onclick="event.stopPropagation(); setLocation(\'' . Mage::helper("adminhtml")->getUrl("adminhtml/straker_".strtolower($row->getTypeName()).'/', array('job_id' => $row->getId())) . '\')" title="View" type="button" style="">'.$buttonText.'</button>';
12
  return $out;
13
  }
14
  }
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Backend.php CHANGED
@@ -6,7 +6,10 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_
6
 
7
  public function render(Varien_Object $row){
8
  $html = '';
9
- if ($row->getProductId()) {
 
 
 
10
  $product = Mage::getModel('catalog/product')->load($row->getProductId());
11
  $url = $this->getUrl('adminhtml/catalog_product/edit', array(
12
  'store' => $this->getStoreId($row),
6
 
7
  public function render(Varien_Object $row){
8
  $html = '';
9
+ if(!$row->getVersion()){
10
+ $html .= '<p class="inactive">' . $this->__('View Product in Backend') . '</p>';
11
+ }
12
+ elseif ($row->getProductId()) {
13
  $product = Mage::getModel('catalog/product')->load($row->getProductId());
14
  $url = $this->getUrl('adminhtml/catalog_product/edit', array(
15
  'store' => $this->getStoreId($row),
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Frontend.php CHANGED
@@ -6,7 +6,10 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_
6
 
7
  public function render(Varien_Object $row){
8
  $html = '';
9
- if ($row->getProductId()) {
 
 
 
10
  $product = Mage::getModel('catalog/product')->setStoreId($this->getStoreId($row))->load($row->getProductId());
11
  if (!$product->isDisabled() && $product->isVisibleInSiteVisibility()) {
12
  $html .= '<a target="_blank" href="' . $product->getProductUrl() . '">' . $this->__('View Product in Frontend') . '</a>';
6
 
7
  public function render(Varien_Object $row){
8
  $html = '';
9
+ if(!$row->getVersion()){
10
+ $html .= '<p class="inactive">' . $this->__('View Product in Frontend') . '</p>';
11
+ }
12
+ elseif ($row->getProductId()) {
13
  $product = Mage::getModel('catalog/product')->setStoreId($this->getStoreId($row))->load($row->getProductId());
14
  if (!$product->isDisabled() && $product->isVisibleInSiteVisibility()) {
15
  $html .= '<a target="_blank" href="' . $product->getProductUrl() . '">' . $this->__('View Product in Frontend') . '</a>';
app/code/community/StrakerTranslations/EasyTranslationPlatform/Block/Adminhtml/Template/Grid/Renderer/Status.php CHANGED
@@ -25,6 +25,10 @@ class StrakerTranslations_EasyTranslationPlatform_Block_Adminhtml_Template_Grid_
25
  elseif ($row->getStatusName() == 'COMPLETED') {
26
  $html = $this->__('Ready to Publish');
27
  }
 
 
 
 
28
  return $html;
29
  }
30
 
25
  elseif ($row->getStatusName() == 'COMPLETED') {
26
  $html = $this->__('Ready to Publish');
27
  }
28
+ //else if status is PUBLISHED
29
+ elseif ($row->getStatusName() == 'PUBLISHED') {
30
+ $html = $this->__('Published');
31
+ }
32
  return $html;
33
  }
34
 
app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Job.php CHANGED
@@ -444,6 +444,32 @@ class StrakerTranslations_EasyTranslationPlatform_Model_Job extends Mage_Core_Mo
444
  return true;
445
  }
446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  public function submitSupport(array $data){
448
 
449
  $res = $this->_getApi()->callSupport($data);
444
  return true;
445
  }
446
 
447
+ public function isPublished()
448
+ {
449
+ if ($this->getStatusId() == 5) {
450
+ return true;
451
+ } elseif($this->getStatusId() == 4) {
452
+ return $this->updatePublishedStatus()->getStatus() == 5;
453
+ }
454
+ else{
455
+ return false;
456
+ }
457
+ }
458
+
459
+ protected function updatePublishedStatus(){
460
+ $collection = Mage::getModel('strakertranslations_easytranslationplatform/job_'.$this->_getType())->getCollection()->addFieldToFilter('job_id',$this->getId());
461
+ $collection->addFieldToFilter('version',
462
+ array(
463
+ array('neq' => '1'),
464
+ array('null' => true)
465
+ )
466
+ );
467
+ if(!$collection->getFirstItem()->getId()){
468
+ $this->setStatusId(5)->save();
469
+ }
470
+ return $this;
471
+ }
472
+
473
  public function submitSupport(array $data){
474
 
475
  $res = $this->_getApi()->callSupport($data);
app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Resource/Job/Category/Collection.php CHANGED
@@ -13,4 +13,15 @@ class StrakerTranslations_EasyTranslationPlatform_Model_Resource_Job_Category_Co
13
  $this->_init('strakertranslations_easytranslationplatform/job_category');
14
  }
15
 
 
 
 
 
 
 
 
 
 
 
 
16
  }
13
  $this->_init('strakertranslations_easytranslationplatform/job_category');
14
  }
15
 
16
+ public function getAllIds()
17
+ {
18
+ $idsSelect = clone $this->getSelect();
19
+ $idsSelect->reset(Zend_Db_Select::ORDER);
20
+ $idsSelect->reset(Zend_Db_Select::LIMIT_COUNT);
21
+ $idsSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
22
+ $idsSelect->reset(Zend_Db_Select::COLUMNS);
23
+
24
+ $idsSelect->columns('category_id', 'main_table');
25
+ return $this->getConnection()->fetchCol($idsSelect);
26
+ }
27
  }
app/code/community/StrakerTranslations/EasyTranslationPlatform/Model/Resource/Job/Product/Collection.php CHANGED
@@ -13,4 +13,15 @@ class StrakerTranslations_EasyTranslationPlatform_Model_Resource_Job_Product_Col
13
  $this->_init('strakertranslations_easytranslationplatform/job_product');
14
  }
15
 
 
 
 
 
 
 
 
 
 
 
 
16
  }
13
  $this->_init('strakertranslations_easytranslationplatform/job_product');
14
  }
15
 
16
+ public function getAllIds()
17
+ {
18
+ $idsSelect = clone $this->getSelect();
19
+ $idsSelect->reset(Zend_Db_Select::ORDER);
20
+ $idsSelect->reset(Zend_Db_Select::LIMIT_COUNT);
21
+ $idsSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
22
+ $idsSelect->reset(Zend_Db_Select::COLUMNS);
23
+
24
+ $idsSelect->columns('product_id', 'main_table');
25
+ return $this->getConnection()->fetchCol($idsSelect);
26
+ }
27
  }
app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/JobController.php DELETED
@@ -1,123 +0,0 @@
1
- <?php
2
- Class StrakerTranslations_EasyTranslationPlatform_Adminhtml_JobController extends Mage_Adminhtml_Controller_Action{
3
- protected function _isAllowed()
4
- {
5
- return Mage::getSingleton('admin/session')->isAllowed('admin/straker/job');
6
- }
7
-
8
- protected function _initAction()
9
- {
10
- $this
11
- ->loadLayout()
12
- ->_setActiveMenu('straker/job')
13
- ;
14
-
15
- return $this;
16
- }
17
-
18
- public function indexAction(){
19
- $this->_title($this->__('Straker Translations'))
20
- ->_title($this->__('Manage Jobs'));
21
-
22
- $this->loadLayout();
23
- $this->renderLayout();
24
- }
25
-
26
- public function updateJobAction() {
27
-
28
- $data = $this->getRequest()->getParams();
29
- if($data['job_id']){
30
- $job = Mage::getModel('strakertranslations_easytranslationplatform/job')->load((int) $data['job_id']);
31
-
32
- if(!$job->getJobKey()){
33
- return false;
34
- }
35
-
36
-
37
- switch ($job->getStatusName()){
38
-
39
- Case 'QUEUED' :
40
-
41
- if ($job->getPaymentStatus()){
42
- if( $job->updateTranslation() ){
43
- Mage::getSingleton('core/session')->addSuccess($this->__('Job %s has been updated.', $job->getId()));
44
- }
45
- } else {
46
-
47
- if($job->updatePayment()){
48
- if( $job->updateTranslation() ){
49
- Mage::getSingleton('core/session')->addSuccess($this->__('Job %s has been updated.', $job->getId()));
50
- }
51
-
52
- }elseif($job->updateQuote()){
53
- Mage::getSingleton('core/session')->addSuccess($this->__('Job %s has been updated.', $job->getId()));
54
- }
55
-
56
- }
57
-
58
- $this->_redirect('*/*/');
59
- return;
60
- break;
61
-
62
- default:
63
- if( $job->updateTranslation() ){
64
- Mage::getSingleton('core/session')->addSuccess($this->__('Job %s has been updated.', $job->getId()));
65
- }
66
- $this->_redirect('*/*/');
67
- return;
68
-
69
- }
70
-
71
- }
72
-
73
- return false;
74
-
75
- }
76
-
77
-
78
- public function disputeAction() {
79
- $data = $this->getRequest()->getParams();
80
- if($data['job_id'] && $data['message']){
81
- $job = Mage::getModel('strakertranslations_easytranslationplatform/job')->load((int) $data['job_id']);
82
-
83
-
84
- $response = $job->submitSupport(array(
85
- 'title' => 'Dispute for '.$job->getTjNumber(),
86
- 'message' => $data['message']
87
- ));
88
-
89
- //Send out email
90
-
91
- $mail = new Zend_Mail(); //class for mail
92
- $mail->setBodyHtml($data['message']); //for sending message containing html code
93
- $mail->setFrom(Mage::getStoreConfig('trans_email/ident_general/email'), Mage::getStoreConfig('trans_email/ident_general/name'));
94
- $mail->addTo('processing@strakertranslations.com', 'Straker Support');
95
- $mail->setSubject('Dispute for '.$job->getTjNumber());
96
- $msg ='';
97
- Mage::log(print_r($mail,true), null , 'debugging.log' , true);
98
- try {
99
- if($mail->send())
100
- {
101
- $msg = true;
102
- }
103
- }
104
- catch(Exception $ex) {
105
- $msg = false;
106
- }
107
- if($msg){
108
- Mage::getSingleton('adminhtml/session')->addSuccess('Dispute has been submitted.');
109
- }
110
- else{
111
- Mage::getSingleton('adminhtml/session')->addError('Unkown error when sending email to processing@strakertranslations.com.');
112
- }
113
- }
114
- else{
115
- Mage::getSingleton('adminhtml/session')->addError('Required parameters missing when submitting a dispute.');
116
- }
117
- $this->_redirect('straker/adminhtml_product/index', array(
118
- 'job_id' => $data['job_id']
119
- ));
120
- return;
121
- }
122
-
123
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/NewController.php DELETED
@@ -1,196 +0,0 @@
1
- <?php
2
- Class StrakerTranslations_EasyTranslationPlatform_Adminhtml_NewController extends Mage_Adminhtml_Controller_Action{
3
- protected function _isAllowed()
4
- {
5
- return Mage::getSingleton('admin/session')->isAllowed('admin/straker/new');
6
- }
7
-
8
- protected function _initAction()
9
- {
10
- $this
11
- ->loadLayout()
12
- ->_setActiveMenu('straker/new')
13
- ;
14
- $this->_title($this->__('Create New Job'));
15
- return $this;
16
- }
17
-
18
- public function indexAction(){
19
- $params = $this->getRequest()->getParams();
20
- if (Mage::helper('strakertranslations_easytranslationplatform')->getAppKey() === false || Mage::helper('strakertranslations_easytranslationplatform')->getAccessToken() === false){
21
- return $this->_initAction()
22
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_register'))
23
- ->renderLayout();
24
- }
25
- elseif (empty($params['store'])){
26
- return $this->_initAction()
27
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_selectstore'))
28
- ->renderLayout();
29
- }
30
- elseif ( Mage::helper('strakertranslations_easytranslationplatform')->getStoreSetup($params['store']) === false
31
- ){
32
- return $this->_initAction()
33
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_setupstore', 'strakertranslations_easytranslationplatform_new_setupstore', array('setup_store_id' => $params['store'])))
34
- ->renderLayout();
35
- }
36
- elseif (empty($params['attr'])) {
37
- return $this->_initAction()
38
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_attribute','strakertranslations_easytranslationplatform_new_attribute',array('setup_store_id' => $params['store'])))
39
- ->renderLayout();
40
- }
41
- else{
42
- return $this->_initAction()
43
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_products','strakertranslations_easytranslationplatform_new_products',array('setup_store_id' => $params['store'], 'attr' => $params['attr'])))
44
- ->renderLayout();
45
- }
46
- }
47
-
48
- public function registerAction(){
49
-
50
- $data = $this->getRequest()->getPost();
51
- if (array_key_exists('form_key', $data)){
52
- unset($data['form_key']);
53
- }
54
- if ($data['first_name'] && $data['last_name'] && $data['email'] && $data['terms']) {
55
- if ($data['company'] == ''){
56
- $data['company'] = $data['first_name'] .' '. $data['last_name'];
57
- }
58
- $apiModel = Mage::getModel('strakertranslations_easytranslationplatform/api');
59
- $response = $apiModel->callRegister($data);
60
- if($response->access_token && $response->application_key) {
61
- $apiModel->saveAccessToken($response->access_token);
62
- $apiModel->saveAppKey($response->application_key);
63
- Mage::getSingleton('adminhtml/session')->addSuccess('Registration success.');
64
- }
65
- elseif($response->magentoMessage){
66
- Mage::getSingleton('adminhtml/session')->addError($response->magentoMessage);
67
- }
68
- else{
69
- Mage::getSingleton('adminhtml/session')->addError('Registration unsuccessful.');
70
- }
71
- }
72
- $this->_redirect('*/*/');
73
- }
74
-
75
- public function selectstoreAction(){
76
- $store = $this->getRequest()->getParam('store');
77
- if($store){
78
- $this->_redirect('*/*/', array('store' => $store));
79
- }
80
- else {
81
- $this->_redirect('*/*/');
82
- }
83
- }
84
-
85
- public function setupstoreAction(){
86
- $data = $this->getRequest()->getParams();
87
- if ($data['store'] && $data['source'] && $data['from'] && $data['to']) {
88
- /** @var $session Mage_Admin_Model_Session */
89
- $session = Mage::getSingleton('adminhtml/session');
90
- try {
91
- //save the source, language from and to in stystem config
92
- $helper = Mage::helper('strakertranslations_easytranslationplatform');
93
-
94
- if ($helper->saveStoreSetup($data['store'], $data['source'], $data['from'], $data['to']) !== false ){
95
- $this->_redirect('*/*/', array('store' => $data['store']));
96
- return;
97
- }
98
- else {
99
- Mage::throwException(Mage::helper('strakertranslations_easytranslationplatform')->__('Unable to save store configurations.'));
100
- }
101
- } catch (Exception $e) {
102
- $session->addError($e->getMessage());
103
- $this->_redirect('*/*/');
104
- return;
105
- }
106
- }
107
- $this->_redirect('*/*/');
108
- }
109
-
110
- public function attributeAction(){
111
- $data = $this->getRequest()->getParams();
112
- if($data['attr'] && $data['store']){
113
- $this->_redirect('*/*/', array('store' => $data['store'], 'attr' => implode(",",array_keys($data['attr']))));
114
- }
115
- else {
116
- $this->_redirect('*/*/');
117
- }
118
- }
119
-
120
- public function addtoconfirmAction(){
121
- $data = $this->getRequest()->getParams();
122
- if($data['attr'] && $data['store'] && $data['product']){
123
- return $this->_initAction()
124
- ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_new_confirm', 'strakertranslations_easytranslationplatform_new_confirm', array('store' => $data['store'], 'attr' => $data['attr'], 'product' => $data['product'])))
125
- ->renderLayout();
126
- }
127
- else {
128
- $this->_redirect('*/*/', $data);
129
- }
130
- }
131
-
132
- public function submitjobAction(){
133
- $data = $this->getRequest()->getParams();
134
- if($data['attr'] && $data['store'] && $data['product']){
135
- //todo: refine attribute code and id procedure
136
- $jobModel = Mage::getModel('strakertranslations_easytranslationplatform/job');
137
- try {
138
- $jobModel->checkAndCreateFolder();
139
- }
140
- catch (Mage_Core_Exception $e){
141
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
142
- $this->_redirect('*/*/', array(
143
- 'store' => $data['store'],
144
- 'attr' => $data['attr']
145
- ));
146
- return;
147
- }
148
- foreach(explode(',', $data['attr']) as $attributeCode){
149
- $attr_ids[] = $attribute = Mage::getSingleton('eav/config')
150
- ->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode)->getAttributeId();
151
- }
152
- $helper = Mage::helper('strakertranslations_easytranslationplatform');
153
- $storeSetup = $helper->getStoreSetup($data['store']);
154
- $jobModel->setStoreId($data['store']);
155
- $jobModel->setSl($storeSetup['from']);
156
- $jobModel->setTl($storeSetup['to']);
157
- $jobModel->setTitle('Title');
158
- $jobModel->setToken('Token');
159
- $jobModel->submitProducts($attr_ids, explode(',',$data['product']));
160
- if ($jobModel->getLastStatus()) {
161
- Mage::getSingleton('adminhtml/session')->addSuccess('New job created');
162
- $this->_redirect('*/adminhtml_job/');
163
- }
164
- else{
165
- Mage::getSingleton('adminhtml/session')->addError($jobModel->getLastMessage());
166
- $this->_redirect('*/*/');
167
- }
168
- }
169
- else {
170
- $this->_redirect('*/*/', $data);
171
- }
172
- }
173
-
174
- public function clearSettingsAction()
175
- {
176
- $session = Mage::getSingleton('adminhtml/session');
177
-
178
- try {
179
- $apiModel = Mage::getModel('strakertranslations_easytranslationplatform/api');
180
-
181
- $apiModel->saveAccessToken('');
182
- $apiModel->saveAppKey('');
183
-
184
- $helper = Mage::helper('strakertranslations_easytranslationplatform');
185
- foreach (Mage::app()->getStores() as $store) {
186
- $helper->saveStoreSetup($store->getId(), '', '', '');
187
- }
188
- $session->addSuccess('Straker Settings has been cleared.');
189
-
190
- } catch (Exception $e) {
191
- $session->addError($e->getMessage());
192
- }
193
- $this->_redirect('adminhtml/system_config/edit/section/straker');
194
- return;
195
- }
196
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/ProductController.php DELETED
@@ -1,63 +0,0 @@
1
- <?php
2
- Class StrakerTranslations_EasyTranslationPlatform_Adminhtml_ProductController extends Mage_Adminhtml_Controller_Action{
3
- protected function _isAllowed()
4
- {
5
- return Mage::getSingleton('admin/session')->isAllowed('admin/straker/job');
6
- }
7
-
8
- protected function _initAction()
9
- {
10
- $this
11
- ->loadLayout()
12
- ->_setActiveMenu('straker/job')
13
- ;
14
-
15
- return $this;
16
- }
17
-
18
- public function indexAction(){
19
-
20
- if (!$this->getRequest()->getParam('job_id')){
21
- Mage::getSingleton('adminhtml/session')->addError('Job ID missing');
22
- $this->_redirect('*/adminhtml_job/');
23
- return;
24
- }
25
-
26
- $this->_title($this->__('Straker Translations'))
27
- ->_title($this->__('Manage Jobs'));
28
-
29
- $this->loadLayout();
30
- $this->renderLayout();
31
-
32
- // try {
33
- // $this->_title($this->__('Manage Jobs'));
34
- // return $this->_initAction()
35
- // ->_addContent(Mage::getSingleton('core/layout')->createBlock('strakertranslations_easytranslationplatform/adminhtml_job_grid'))
36
- // ->renderLayout();
37
- // } catch (Exception $e) {
38
- // Mage::getSingleton('core/session')->addError($this->__('Error occurred. Please contact service administrator.'));
39
- // $this->_redirect('adminhtml/dashboard');
40
- // }
41
- }
42
- public function copyAllAction(){
43
- $job = Mage::getModel('strakertranslations_easytranslationplatform/job')->load($this->getRequest()->getParam('job_id'));
44
-
45
- if (empty($job)){
46
- Mage::getSingleton('adminhtml/session')->addError('Job ID missing');
47
- $this->_redirect('*/adminhtml_job/');
48
- return;
49
- }
50
-
51
- if($job->applyTranslation()) {
52
- Mage::getSingleton('adminhtml/session')->addSuccess('Translation has been copied.');
53
- $this->_redirect('*/adminhtml_job/');
54
- return;
55
- } else {
56
- Mage::getSingleton('adminhtml/session')->addError('Error when copying translation.');
57
- $this->_redirect('*/adminhtml_job/');
58
- return;
59
- }
60
-
61
-
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/StrakerTranslations/EasyTranslationPlatform/controllers/Adminhtml/Straker/NewController.php CHANGED
@@ -15,6 +15,10 @@ Class StrakerTranslations_EasyTranslationPlatform_Adminhtml_Straker_NewControlle
15
  return $this;
16
  }
17
 
 
 
 
 
18
  public function indexAction(){
19
  $params = $this->getRequest()->getParams();
20
  if (Mage::helper('strakertranslations_easytranslationplatform')->getAppKey() === false || Mage::helper('strakertranslations_easytranslationplatform')->getAccessToken() === false){
@@ -208,4 +212,20 @@ Class StrakerTranslations_EasyTranslationPlatform_Adminhtml_Straker_NewControlle
208
  }
209
 
210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  }
15
  return $this;
16
  }
17
 
18
+ public function accountAction(){
19
+ $this->_redirectUrl("http://myaccount.strakertranslations.com/");
20
+ }
21
+
22
  public function indexAction(){
23
  $params = $this->getRequest()->getParams();
24
  if (Mage::helper('strakertranslations_easytranslationplatform')->getAppKey() === false || Mage::helper('strakertranslations_easytranslationplatform')->getAccessToken() === false){
212
  }
213
 
214
 
215
+ public function resetStoreSettingsAction(){
216
+ $storeId = $this->getRequest()->getParam('store');
217
+ $helper = Mage::helper('strakertranslations_easytranslationplatform');
218
+ $session = Mage::getSingleton('adminhtml/session');
219
+
220
+ if($helper->getStoreSetup($storeId)){
221
+ $helper->saveStoreSetup($storeId, '', '', '');
222
+ $session->addSuccess($this->__('Language settings has been reset.'));
223
+ }
224
+ else{
225
+ $session->addError($this->__('Store code is not valid.'));
226
+ }
227
+ $this->_redirect('adminhtml/system_config/edit/section/straker');
228
+ return;
229
+ }
230
+
231
  }
app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/adminhtml.xml CHANGED
@@ -17,14 +17,19 @@
17
  </new>
18
  <job translate="title">
19
  <title>Manage Jobs</title>
20
- <sort_order>0</sort_order>
21
  <action>adminhtml/straker_job/index</action>
22
  </job>
23
  <settings translate="title">
24
  <title>Settings</title>
25
  <action>adminhtml/system_config/edit/section/straker</action>
26
- <sort_order>40</sort_order>
27
  </settings>
 
 
 
 
 
28
  </children>
29
  </straker>
30
  </menu>
17
  </new>
18
  <job translate="title">
19
  <title>Manage Jobs</title>
20
+ <sort_order>10</sort_order>
21
  <action>adminhtml/straker_job/index</action>
22
  </job>
23
  <settings translate="title">
24
  <title>Settings</title>
25
  <action>adminhtml/system_config/edit/section/straker</action>
26
+ <sort_order>20</sort_order>
27
  </settings>
28
+ <account translate="title">
29
+ <title>Account</title>
30
+ <action>adminhtml/straker_new/account</action>
31
+ <sort_order>30</sort_order>
32
+ </account>
33
  </children>
34
  </straker>
35
  </menu>
app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <StrakerTranslations_EasyTranslationPlatform>
5
- <version>0.2.0</version>
6
  </StrakerTranslations_EasyTranslationPlatform>
7
  </modules>
8
  <global>
@@ -111,15 +111,15 @@
111
  <default>
112
  <straker>
113
  <api_url>
114
- <register>https://uat-magento-api.strakertranslations.com/v1/register</register>
115
- <languages>https://uat-magento-api.strakertranslations.com/v1/languages</languages>
116
- <translate>https://uat-magento-api.strakertranslations.com/v1/translate</translate>
117
- <quote>https://uat-magento-api.strakertranslations.com/v1/quote</quote>
118
- <payment>https://uat-magento-api.strakertranslations.com/v1/payment</payment>
119
- <countries>https://uat-magento-api.strakertranslations.com/v1/countries</countries>
120
- <payment>https://uat-magento-api.strakertranslations.com/v1/payment</payment>
121
- <payment_page>http://uat-api-myaccount.strakertranslations.com/o/?action=api.quote</payment_page>
122
- <support>https://uat-magento-api.strakertranslations.com/v1/support</support>
123
  </api_url>
124
  </straker>
125
  </default>
2
  <config>
3
  <modules>
4
  <StrakerTranslations_EasyTranslationPlatform>
5
+ <version>0.3.0</version>
6
  </StrakerTranslations_EasyTranslationPlatform>
7
  </modules>
8
  <global>
111
  <default>
112
  <straker>
113
  <api_url>
114
+ <register>https://magento-api.strakertranslations.com/v1/register</register>
115
+ <languages>https://magento-api.strakertranslations.com/v1/languages</languages>
116
+ <translate>https://magento-api.strakertranslations.com/v1/translate</translate>
117
+ <quote>https://magento-api.strakertranslations.com/v1/quote</quote>
118
+ <payment>https://magento-api.strakertranslations.com/v1/payment</payment>
119
+ <countries>https://magento-api.strakertranslations.com/v1/countries</countries>
120
+ <payment>https://magento-api.strakertranslations.com/v1/payment</payment>
121
+ <payment_page>https://myaccount.strakertranslations.com/o/?action=api.quote</payment_page>
122
+ <support>https://magento-api.strakertranslations.com/v1/support</support>
123
  </api_url>
124
  </straker>
125
  </default>
app/code/community/StrakerTranslations/EasyTranslationPlatform/etc/system.xml CHANGED
@@ -32,14 +32,14 @@
32
  <show_in_website>1</show_in_website>
33
  <show_in_store>1</show_in_store>
34
  </access_token>
35
- <application_key translate="label comment" >
36
- <label>Application Key</label>
37
- <frontend_type>text</frontend_type>
38
- <sort_order>20</sort_order>
39
- <show_in_default>1</show_in_default>
40
- <show_in_website>1</show_in_website>
41
- <show_in_store>1</show_in_store>
42
- </application_key>
43
  <clear translate="label">
44
  <label>Clear All Settings</label>
45
  <frontend_type>button</frontend_type>
@@ -49,92 +49,101 @@
49
  <show_in_website>1</show_in_website>
50
  <show_in_store>1</show_in_store>
51
  </clear>
52
- <backup translate="label">
53
- <label>Backup Product Data</label>
54
  <frontend_type>button</frontend_type>
55
- <frontend_model>strakertranslations_easytranslationplatform/adminhtml_system_config_form_backupbutton</frontend_model>
56
  <sort_order>40</sort_order>
57
  <show_in_default>1</show_in_default>
58
  <show_in_website>1</show_in_website>
59
  <show_in_store>1</show_in_store>
60
- </backup>
61
- <restore translate="label">
62
- <label>Backup Product Data</label>
63
- <frontend_type>button</frontend_type>
64
- <frontend_model>strakertranslations_easytranslationplatform/adminhtml_system_config_form_restorebutton</frontend_model>
65
- <sort_order>50</sort_order>
66
- <show_in_default>1</show_in_default>
67
- <show_in_website>1</show_in_website>
68
- <show_in_store>1</show_in_store>
69
- </restore>
 
 
 
 
 
 
 
 
 
70
  </fields>
71
  </general>
72
- <api_url translate="label">
73
- <label>Api Url</label>
74
- <frontend_type>text</frontend_type>
75
- <sort_order>100</sort_order>
76
- <show_in_default>1</show_in_default>
77
- <show_in_website>1</show_in_website>
78
- <show_in_store>1</show_in_store>
79
- <fields>
80
- <register translate="label comment" >
81
- <label>Register</label>
82
- <frontend_type>text</frontend_type>
83
- <sort_order>10</sort_order>
84
- <show_in_default>1</show_in_default>
85
- <show_in_website>1</show_in_website>
86
- <show_in_store>1</show_in_store>
87
- </register>
88
- <languages translate="label comment" >
89
- <label>Languages</label>
90
- <frontend_type>text</frontend_type>
91
- <sort_order>30</sort_order>
92
- <show_in_default>1</show_in_default>
93
- <show_in_website>1</show_in_website>
94
- <show_in_store>1</show_in_store>
95
- </languages>
96
- <translate translate="label comment" >
97
- <label>Translate</label>
98
- <frontend_type>text</frontend_type>
99
- <sort_order>40</sort_order>
100
- <show_in_default>1</show_in_default>
101
- <show_in_website>1</show_in_website>
102
- <show_in_store>1</show_in_store>
103
- </translate>
104
- <countries translate="label comment" >
105
- <label>Countries</label>
106
- <frontend_type>text</frontend_type>
107
- <sort_order>20</sort_order>
108
- <show_in_default>1</show_in_default>
109
- <show_in_website>1</show_in_website>
110
- <show_in_store>1</show_in_store>
111
- </countries>
112
- <quote translate="label comment" >
113
- <label>Quote</label>
114
- <frontend_type>text</frontend_type>
115
- <sort_order>20</sort_order>
116
- <show_in_default>1</show_in_default>
117
- <show_in_website>1</show_in_website>
118
- <show_in_store>1</show_in_store>
119
- </quote>
120
- <payment translate="label comment" >
121
- <label>Payment</label>
122
- <frontend_type>text</frontend_type>
123
- <sort_order>50</sort_order>
124
- <show_in_default>1</show_in_default>
125
- <show_in_website>1</show_in_website>
126
- <show_in_store>1</show_in_store>
127
- </payment>
128
- <payment_page translate="label comment" >
129
- <label>Payment Page</label>
130
- <frontend_type>text</frontend_type>
131
- <sort_order>50</sort_order>
132
- <show_in_default>1</show_in_default>
133
- <show_in_website>1</show_in_website>
134
- <show_in_store>1</show_in_store>
135
- </payment_page>
136
- </fields>
137
- </api_url>
138
  </groups>
139
  </straker>
140
  </sections>
32
  <show_in_website>1</show_in_website>
33
  <show_in_store>1</show_in_store>
34
  </access_token>
35
+ <!--<application_key translate="label comment" >-->
36
+ <!--<label>Application Key</label>-->
37
+ <!--<frontend_type>text</frontend_type>-->
38
+ <!--<sort_order>20</sort_order>-->
39
+ <!--<show_in_default>1</show_in_default>-->
40
+ <!--<show_in_website>1</show_in_website>-->
41
+ <!--<show_in_store>1</show_in_store>-->
42
+ <!--</application_key>-->
43
  <clear translate="label">
44
  <label>Clear All Settings</label>
45
  <frontend_type>button</frontend_type>
49
  <show_in_website>1</show_in_website>
50
  <show_in_store>1</show_in_store>
51
  </clear>
52
+ <store translate="label">
53
+ <label>Reset Language Settings for a Store</label>
54
  <frontend_type>button</frontend_type>
55
+ <frontend_model>strakertranslations_easytranslationplatform/adminhtml_system_config_form_store</frontend_model>
56
  <sort_order>40</sort_order>
57
  <show_in_default>1</show_in_default>
58
  <show_in_website>1</show_in_website>
59
  <show_in_store>1</show_in_store>
60
+ </store>
61
+ <!--<backup translate="label">-->
62
+ <!--<label>Backup Product Data</label>-->
63
+ <!--<frontend_type>button</frontend_type>-->
64
+ <!--<frontend_model>strakertranslations_easytranslationplatform/adminhtml_system_config_form_backupbutton</frontend_model>-->
65
+ <!--<sort_order>40</sort_order>-->
66
+ <!--<show_in_default>1</show_in_default>-->
67
+ <!--<show_in_website>1</show_in_website>-->
68
+ <!--<show_in_store>1</show_in_store>-->
69
+ <!--</backup>-->
70
+ <!--<restore translate="label">-->
71
+ <!--<label>Backup Product Data</label>-->
72
+ <!--<frontend_type>button</frontend_type>-->
73
+ <!--<frontend_model>strakertranslations_easytranslationplatform/adminhtml_system_config_form_restorebutton</frontend_model>-->
74
+ <!--<sort_order>50</sort_order>-->
75
+ <!--<show_in_default>1</show_in_default>-->
76
+ <!--<show_in_website>1</show_in_website>-->
77
+ <!--<show_in_store>1</show_in_store>-->
78
+ <!--</restore>-->
79
  </fields>
80
  </general>
81
+ <!--<api_url translate="label">-->
82
+ <!--<label>Api Url</label>-->
83
+ <!--<frontend_type>text</frontend_type>-->
84
+ <!--<sort_order>100</sort_order>-->
85
+ <!--<show_in_default>1</show_in_default>-->
86
+ <!--<show_in_website>1</show_in_website>-->
87
+ <!--<show_in_store>1</show_in_store>-->
88
+ <!--<fields>-->
89
+ <!--<register translate="label comment" >-->
90
+ <!--<label>Register</label>-->
91
+ <!--<frontend_type>text</frontend_type>-->
92
+ <!--<sort_order>10</sort_order>-->
93
+ <!--<show_in_default>1</show_in_default>-->
94
+ <!--<show_in_website>1</show_in_website>-->
95
+ <!--<show_in_store>1</show_in_store>-->
96
+ <!--</register>-->
97
+ <!--<languages translate="label comment" >-->
98
+ <!--<label>Languages</label>-->
99
+ <!--<frontend_type>text</frontend_type>-->
100
+ <!--<sort_order>30</sort_order>-->
101
+ <!--<show_in_default>1</show_in_default>-->
102
+ <!--<show_in_website>1</show_in_website>-->
103
+ <!--<show_in_store>1</show_in_store>-->
104
+ <!--</languages>-->
105
+ <!--<translate translate="label comment" >-->
106
+ <!--<label>Translate</label>-->
107
+ <!--<frontend_type>text</frontend_type>-->
108
+ <!--<sort_order>40</sort_order>-->
109
+ <!--<show_in_default>1</show_in_default>-->
110
+ <!--<show_in_website>1</show_in_website>-->
111
+ <!--<show_in_store>1</show_in_store>-->
112
+ <!--</translate>-->
113
+ <!--<countries translate="label comment" >-->
114
+ <!--<label>Countries</label>-->
115
+ <!--<frontend_type>text</frontend_type>-->
116
+ <!--<sort_order>20</sort_order>-->
117
+ <!--<show_in_default>1</show_in_default>-->
118
+ <!--<show_in_website>1</show_in_website>-->
119
+ <!--<show_in_store>1</show_in_store>-->
120
+ <!--</countries>-->
121
+ <!--<quote translate="label comment" >-->
122
+ <!--<label>Quote</label>-->
123
+ <!--<frontend_type>text</frontend_type>-->
124
+ <!--<sort_order>20</sort_order>-->
125
+ <!--<show_in_default>1</show_in_default>-->
126
+ <!--<show_in_website>1</show_in_website>-->
127
+ <!--<show_in_store>1</show_in_store>-->
128
+ <!--</quote>-->
129
+ <!--<payment translate="label comment" >-->
130
+ <!--<label>Payment</label>-->
131
+ <!--<frontend_type>text</frontend_type>-->
132
+ <!--<sort_order>50</sort_order>-->
133
+ <!--<show_in_default>1</show_in_default>-->
134
+ <!--<show_in_website>1</show_in_website>-->
135
+ <!--<show_in_store>1</show_in_store>-->
136
+ <!--</payment>-->
137
+ <!--<payment_page translate="label comment" >-->
138
+ <!--<label>Payment Page</label>-->
139
+ <!--<frontend_type>text</frontend_type>-->
140
+ <!--<sort_order>50</sort_order>-->
141
+ <!--<show_in_default>1</show_in_default>-->
142
+ <!--<show_in_website>1</show_in_website>-->
143
+ <!--<show_in_store>1</show_in_store>-->
144
+ <!--</payment_page>-->
145
+ <!--</fields>-->
146
+ <!--</api_url>-->
147
  </groups>
148
  </straker>
149
  </sections>
app/code/community/StrakerTranslations/EasyTranslationPlatform/sql/strakertranslations_easytranslationplatform_setup/mysql4-upgrade-0.2.0-0.3.0.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: stevenyang
5
+ * Date: 18/09/15
6
+ * Time: 9:46 AM
7
+ */
8
+ /* @var $installer Mage_Core_Model_Resource_Setup */
9
+ $installer = $this;
10
+
11
+ $installer->startSetup();
12
+
13
+ try {
14
+ $installer->run("
15
+
16
+ INSERT INTO `straker_job_status` (`status_id`, `status_name`)
17
+ VALUES
18
+ (5, 'PUBLISHED');
19
+
20
+
21
+ ");
22
+ } catch (Exception $e) {
23
+ Mage::logException($e);
24
+ }
25
+
26
+ $installer->endSetup();
app/design/adminhtml/default/straker/template/straker/system/config/store.phtml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php foreach (Mage::app()->getWebsites() as $website) { ?>
2
+ <div class="straker-store-settings-wrapper">
3
+ <?php foreach ($website->getGroups() as $group) {
4
+ $stores = $group->getStores();
5
+ foreach ($stores as $store) { ?>
6
+ <div class="straker-store-settings-row">
7
+ <label><?php echo $store->getName() ?></label>
8
+ <?php echo $this->getClearStoreButtonHtml($store) ?>
9
+ </div>
10
+ <?php } ?>
11
+ </div>
12
+ <?php }
13
+ }
js/straker/livepipe/livepipe.js DELETED
@@ -1,181 +0,0 @@
1
- /**
2
- * @author Ryan Johnson <http://syntacticx.com/>
3
- * @copyright 2008 PersonalGrid Corporation <http://personalgrid.com/>
4
- * @package LivePipe UI
5
- * @license MIT
6
- * @url http://livepipe.net/core
7
- * @require prototype.js
8
- */
9
-
10
- if(typeof(Control) == 'undefined')
11
- Control = {};
12
-
13
- var $proc = function(proc){
14
- return typeof(proc) == 'function' ? proc : function(){return proc};
15
- };
16
-
17
- var $value = function(value){
18
- return typeof(value) == 'function' ? value() : value;
19
- };
20
-
21
- Object.Event = {
22
- extend: function(object){
23
- object._objectEventSetup = function(event_name){
24
- this._observers = this._observers || {};
25
- this._observers[event_name] = this._observers[event_name] || [];
26
- };
27
- object.observe = function(event_name,observer){
28
- if(typeof(event_name) == 'string' && typeof(observer) != 'undefined'){
29
- this._objectEventSetup(event_name);
30
- if(!this._observers[event_name].include(observer))
31
- this._observers[event_name].push(observer);
32
- }else
33
- for(var e in event_name)
34
- this.observe(e,event_name[e]);
35
- };
36
- object.stopObserving = function(event_name,observer){
37
- this._objectEventSetup(event_name);
38
- if(event_name && observer)
39
- this._observers[event_name] = this._observers[event_name].without(observer);
40
- else if(event_name)
41
- this._observers[event_name] = [];
42
- else
43
- this._observers = {};
44
- };
45
- object.observeOnce = function(event_name,outer_observer){
46
- var inner_observer = function(){
47
- outer_observer.apply(this,arguments);
48
- this.stopObserving(event_name,inner_observer);
49
- }.bind(this);
50
- this._objectEventSetup(event_name);
51
- this._observers[event_name].push(inner_observer);
52
- };
53
- object.notify = function(event_name){
54
- this._objectEventSetup(event_name);
55
- var collected_return_values = [];
56
- var args = $A(arguments).slice(1);
57
- try{
58
- for(var i = 0; i < this._observers[event_name].length; ++i)
59
- collected_return_values.push(this._observers[event_name][i].apply(this,args) || null);
60
- }catch(e){
61
- if(e == $break)
62
- return false;
63
- else
64
- throw e;
65
- }
66
- return collected_return_values;
67
- };
68
- if(object.prototype){
69
- object.prototype._objectEventSetup = object._objectEventSetup;
70
- object.prototype.observe = object.observe;
71
- object.prototype.stopObserving = object.stopObserving;
72
- object.prototype.observeOnce = object.observeOnce;
73
- object.prototype.notify = function(event_name){
74
- if(object.notify){
75
- var args = $A(arguments).slice(1);
76
- args.unshift(this);
77
- args.unshift(event_name);
78
- object.notify.apply(object,args);
79
- }
80
- this._objectEventSetup(event_name);
81
- var args = $A(arguments).slice(1);
82
- var collected_return_values = [];
83
- try{
84
- if(this.options && this.options[event_name] && typeof(this.options[event_name]) == 'function')
85
- collected_return_values.push(this.options[event_name].apply(this,args) || null);
86
- var callbacks_copy = this._observers[event_name]; // since original array will be modified after observeOnce calls
87
- for(var i = 0; i < callbacks_copy.length; ++i)
88
- collected_return_values.push(callbacks_copy[i].apply(this,args) || null);
89
- }catch(e){
90
- if(e == $break)
91
- return false;
92
- else
93
- throw e;
94
- }
95
- return collected_return_values;
96
- };
97
- }
98
- }
99
- };
100
-
101
- /* Begin Core Extensions */
102
-
103
- //Element.observeOnce
104
- Element.addMethods({
105
- observeOnce: function(element,event_name,outer_callback){
106
- var inner_callback = function(){
107
- outer_callback.apply(this,arguments);
108
- Element.stopObserving(element,event_name,inner_callback);
109
- };
110
- Element.observe(element,event_name,inner_callback);
111
- }
112
- });
113
-
114
- //mouse:wheel
115
- (function(){
116
- function wheel(event){
117
- var delta, element, custom_event;
118
- // normalize the delta
119
- if (event.wheelDelta) { // IE & Opera
120
- delta = event.wheelDelta / 120;
121
- } else if (event.detail) { // W3C
122
- delta =- event.detail / 3;
123
- }
124
- if (!delta) { return; }
125
- element = Event.extend(event).target;
126
- element = Element.extend(element.nodeType === Node.TEXT_NODE ? element.parentNode : element);
127
- custom_event = element.fire('mouse:wheel',{ delta: delta });
128
- if (custom_event.stopped) {
129
- Event.stop(event);
130
- return false;
131
- }
132
- }
133
- document.observe('mousewheel',wheel);
134
- document.observe('DOMMouseScroll',wheel);
135
- })();
136
-
137
- /* End Core Extensions */
138
-
139
- //from PrototypeUI
140
- var IframeShim = Class.create({
141
- initialize: function() {
142
- this.element = new Element('iframe',{
143
- style: 'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',
144
- src: 'javascript:void(0);',
145
- frameborder: 0
146
- });
147
- $(document.body).insert(this.element);
148
- },
149
- hide: function() {
150
- this.element.hide();
151
- return this;
152
- },
153
- show: function() {
154
- this.element.show();
155
- return this;
156
- },
157
- positionUnder: function(element) {
158
- var element = $(element);
159
- var offset = element.cumulativeOffset();
160
- var dimensions = element.getDimensions();
161
- this.element.setStyle({
162
- left: offset[0] + 'px',
163
- top: offset[1] + 'px',
164
- width: dimensions.width + 'px',
165
- height: dimensions.height + 'px',
166
- zIndex: element.getStyle('zIndex') - 1
167
- }).show();
168
- return this;
169
- },
170
- setBounds: function(bounds) {
171
- for(prop in bounds)
172
- bounds[prop] += 'px';
173
- this.element.setStyle(bounds);
174
- return this;
175
- },
176
- destroy: function() {
177
- if(this.element)
178
- this.element.remove();
179
- return this;
180
- }
181
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/straker/livepipe/window.js DELETED
@@ -1,947 +0,0 @@
1
- /**
2
- * @author Ryan Johnson <http://syntacticx.com/>
3
- * @copyright 2008 PersonalGrid Corporation <http://personalgrid.com/>
4
- * @package LivePipe UI
5
- * @license MIT
6
- * @url http://livepipe.net/control/window
7
- * @require prototype.js, effects.js, draggable.js, resizable.js, livepipe.js
8
- */
9
-
10
- //adds onDraw and constrainToViewport option to draggable
11
- if(typeof(Draggable) != 'undefined'){
12
- //allows the point to be modified with an onDraw callback
13
- Draggable.prototype.draw = function(point) {
14
- var pos = Position.cumulativeOffset(this.element);
15
- if(this.options.ghosting) {
16
- var r = Position.realOffset(this.element);
17
- pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
18
- }
19
-
20
- var d = this.currentDelta();
21
- pos[0] -= d[0]; pos[1] -= d[1];
22
-
23
- if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
24
- pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
25
- pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
26
- }
27
-
28
- var p = [0,1].map(function(i){
29
- return (point[i]-pos[i]-this.offset[i])
30
- }.bind(this));
31
-
32
- if(this.options.snap) {
33
- if(typeof this.options.snap == 'function') {
34
- p = this.options.snap(p[0],p[1],this);
35
- } else {
36
- if(this.options.snap instanceof Array) {
37
- p = p.map( function(v, i) {return Math.round(v/this.options.snap[i])*this.options.snap[i] }.bind(this))
38
- } else {
39
- p = p.map( function(v) {return Math.round(v/this.options.snap)*this.options.snap }.bind(this))
40
- }
41
- }
42
- }
43
-
44
- if(this.options.onDraw)
45
- this.options.onDraw.bind(this)(p);
46
- else{
47
- var style = this.element.style;
48
- if(this.options.constrainToViewport){
49
- var viewport_dimensions = document.viewport.getDimensions();
50
- var container_dimensions = this.element.getDimensions();
51
- var margin_top = parseInt(this.element.getStyle('margin-top'));
52
- var margin_left = parseInt(this.element.getStyle('margin-left'));
53
- var boundary = [[
54
- 0 - margin_left,
55
- 0 - margin_top
56
- ],[
57
- (viewport_dimensions.width - container_dimensions.width) - margin_left,
58
- (viewport_dimensions.height - container_dimensions.height) - margin_top
59
- ]];
60
- if((!this.options.constraint) || (this.options.constraint=='horizontal')){
61
- if((p[0] >= boundary[0][0]) && (p[0] <= boundary[1][0]))
62
- this.element.style.left = p[0] + "px";
63
- else
64
- this.element.style.left = ((p[0] < boundary[0][0]) ? boundary[0][0] : boundary[1][0]) + "px";
65
- }
66
- if((!this.options.constraint) || (this.options.constraint=='vertical')){
67
- if((p[1] >= boundary[0][1] ) && (p[1] <= boundary[1][1]))
68
- this.element.style.top = p[1] + "px";
69
- else
70
- this.element.style.top = ((p[1] <= boundary[0][1]) ? boundary[0][1] : boundary[1][1]) + "px";
71
- }
72
- }else{
73
- if((!this.options.constraint) || (this.options.constraint=='horizontal'))
74
- style.left = p[0] + "px";
75
- if((!this.options.constraint) || (this.options.constraint=='vertical'))
76
- style.top = p[1] + "px";
77
- }
78
- if(style.visibility=="hidden")
79
- style.visibility = ""; // fix gecko rendering
80
- }
81
- };
82
- }
83
-
84
- if(typeof(Prototype) == "undefined")
85
- throw "Control.Window requires Prototype to be loaded.";
86
- if(typeof(IframeShim) == "undefined")
87
- throw "Control.Window requires IframeShim to be loaded.";
88
- if(typeof(Object.Event) == "undefined")
89
- throw "Control.Window requires Object.Event to be loaded.";
90
- /*
91
- known issues:
92
- - when iframe is clicked is does not gain focus
93
- - safari can't open multiple iframes properly
94
- - constrainToViewport: body must have no margin or padding for this to work properly
95
- - iframe will be mis positioned during fade in
96
- - document.viewport does not account for scrollbars (this will eventually be fixed in the prototype core)
97
- notes
98
- - setting constrainToViewport only works when the page is not scrollable
99
- - setting draggable: true will negate the effects of position: center
100
- */
101
- Control.Window = Class.create({
102
- initialize: function(container,options){
103
- Control.Window.windows.push(this);
104
-
105
- //attribute initialization
106
- this.container = false;
107
- this.isOpen = false;
108
- this.href = false;
109
- this.sourceContainer = false; //this is optionally the container that will open the window
110
- this.ajaxRequest = false;
111
- this.remoteContentLoaded = false; //this is set when the code to load the remote content is run, onRemoteContentLoaded is fired when the connection is closed
112
- this.numberInSequence = Control.Window.windows.length + 1; //only useful for the effect scoping
113
- this.indicator = false;
114
- this.effects = {
115
- fade: false,
116
- appear: false
117
- };
118
- this.indicatorEffects = {
119
- fade: false,
120
- appear: false
121
- };
122
-
123
- //options
124
- this.options = Object.extend({
125
- //lifecycle
126
- beforeOpen: Prototype.emptyFunction,
127
- afterOpen: Prototype.emptyFunction,
128
- beforeClose: Prototype.emptyFunction,
129
- afterClose: Prototype.emptyFunction,
130
- //dimensions and modes
131
- height: null,
132
- width: null,
133
- className: false,
134
- position: 'center', //'center', 'center_once', 'relative', [x,y], [function(){return x;},function(){return y;}]
135
- offsetLeft: 0, //available only for anchors opening the window, or windows set to position: hover
136
- offsetTop: 0, //""
137
- iframe: false, //if the window has an href, this will display the href as an iframe instead of requesting the url as an an Ajax.Request
138
- hover: false, //element object to hover over, or if "true" only available for windows with sourceContainer (an anchor or any element already on the page with an href attribute)
139
- indicator: false, //element to show or hide when ajax requests, images and iframes are loading
140
- closeOnClick: false, //does not work with hover,can be: true (click anywhere), 'container' (will refer to this.container), or element (a specific element)
141
- iframeshim: true, //whether or not to position an iFrameShim underneath the window
142
- //effects
143
- fade: false,
144
- fadeDuration: 0.75,
145
- //draggable
146
- draggable: false,
147
- onDrag: Prototype.emptyFunction,
148
- //resizable
149
- resizable: false,
150
- minHeight: false,
151
- minWidth: false,
152
- maxHeight: false,
153
- maxWidth: false,
154
- onResize: Prototype.emptyFunction,
155
- //draggable and resizable
156
- constrainToViewport: false,
157
- //ajax
158
- method: 'post',
159
- parameters: {},
160
- onComplete: Prototype.emptyFunction,
161
- onSuccess: Prototype.emptyFunction,
162
- onFailure: Prototype.emptyFunction,
163
- onException: Prototype.emptyFunction,
164
- //any element with an href (image,iframe,ajax) will call this after it is done loading
165
- onRemoteContentLoaded: Prototype.emptyFunction,
166
- insertRemoteContentAt: false //false will set this to this.container, can be string selector (first returned will be selected), or an Element that must be a child of this.container
167
- },options || {});
168
-
169
- //container setup
170
- this.indicator = this.options.indicator ? $(this.options.indicator) : false;
171
- if(container){
172
- if(typeof(container) == "string" && container.match(Control.Window.uriRegex))
173
- this.href = container;
174
- else{
175
- this.container = $(container);
176
- //need to create the container now for tooltips (or hover: element with no container already on the page)
177
- //second call made below will not create the container since the check is done inside createDefaultContainer()
178
- this.createDefaultContainer(container);
179
- //if an element with an href was passed in we use it to activate the window
180
- if(this.container && ((this.container.readAttribute('href') && this.container.readAttribute('href') != '') || (this.options.hover && this.options.hover !== true))){
181
- if(this.options.hover && this.options.hover !== true)
182
- this.sourceContainer = $(this.options.hover);
183
- else{
184
- this.sourceContainer = this.container;
185
- this.href = this.container.readAttribute('href');
186
- var rel = this.href.match(/^#(.+)$/);
187
- if(rel && rel[1]){
188
- this.container = $(rel[1]);
189
- this.href = false;
190
- }else
191
- this.container = false;
192
- }
193
- //hover or click handling
194
- this.sourceContainerOpenHandler = function(event){
195
- this.open(event);
196
- event.stop();
197
- return false;
198
- }.bindAsEventListener(this);
199
- this.sourceContainerCloseHandler = function(event){
200
- this.close(event);
201
- }.bindAsEventListener(this);
202
- this.sourceContainerMouseMoveHandler = function(event){
203
- this.position(event);
204
- }.bindAsEventListener(this);
205
- if(this.options.hover){
206
- this.sourceContainer.observe('mouseenter',this.sourceContainerOpenHandler);
207
- this.sourceContainer.observe('mouseleave',this.sourceContainerCloseHandler);
208
- if(this.options.position == 'mouse')
209
- this.sourceContainer.observe('mousemove',this.sourceContainerMouseMoveHandler);
210
- }else
211
- this.sourceContainer.observe('click',this.sourceContainerOpenHandler);
212
- }
213
- }
214
- }
215
- this.createDefaultContainer(container);
216
- if(this.options.insertRemoteContentAt === false)
217
- this.options.insertRemoteContentAt = this.container;
218
- var styles = {
219
- margin: 0,
220
- position: 'absolute',
221
- zIndex: Control.Window.initialZIndexForWindow()
222
- };
223
- if(this.options.width)
224
- styles.width = $value(this.options.width) + 'px';
225
- if(this.options.height)
226
- styles.height = $value(this.options.height) + 'px';
227
- this.container.setStyle(styles);
228
- if(this.options.className)
229
- this.container.addClassName(this.options.className);
230
- this.positionHandler = this.position.bindAsEventListener(this);
231
- this.outOfBoundsPositionHandler = this.ensureInBounds.bindAsEventListener(this);
232
- this.bringToFrontHandler = this.bringToFront.bindAsEventListener(this);
233
- this.container.observe('mousedown',this.bringToFrontHandler);
234
- this.container.hide();
235
- this.closeHandler = this.close.bindAsEventListener(this);
236
- //iframeshim setup
237
- if(this.options.iframeshim){
238
- this.iFrameShim = new IframeShim();
239
- this.iFrameShim.hide();
240
- }
241
- //resizable support
242
- this.applyResizable();
243
- //draggable support
244
- this.applyDraggable();
245
-
246
- //makes sure the window can't go out of bounds
247
- Event.observe(window,'resize',this.outOfBoundsPositionHandler);
248
-
249
- this.notify('afterInitialize');
250
- },
251
- open: function(event){
252
- if(this.isOpen){
253
- this.bringToFront();
254
- return false;
255
- }
256
- if(this.notify('beforeOpen') === false)
257
- return false;
258
- //closeOnClick
259
- if(this.options.closeOnClick){
260
- if(this.options.closeOnClick === true)
261
- this.closeOnClickContainer = $(document.body);
262
- else if(this.options.closeOnClick == 'container')
263
- this.closeOnClickContainer = this.container;
264
- else if (this.options.closeOnClick == 'overlay'){
265
- Control.Overlay.load();
266
- this.closeOnClickContainer = Control.Overlay.container;
267
- }else
268
- this.closeOnClickContainer = $(this.options.closeOnClick);
269
- this.closeOnClickContainer.observe('click',this.closeHandler);
270
- }
271
- if(this.href && !this.options.iframe && !this.remoteContentLoaded){
272
- //link to image
273
- this.remoteContentLoaded = true;
274
- if(this.href.match(/\.(jpe?g|gif|png|tiff?)$/i)){
275
- var img = new Element('img');
276
- img.observe('load',function(img){
277
- this.getRemoteContentInsertionTarget().insert(img);
278
- this.position();
279
- if(this.notify('onRemoteContentLoaded') !== false){
280
- if(this.options.indicator)
281
- this.hideIndicator();
282
- this.finishOpen();
283
- }
284
- }.bind(this,img));
285
- img.writeAttribute('src',this.href);
286
- }else{
287
- //if this is an ajax window it will only open if the request is successful
288
- if(!this.ajaxRequest){
289
- if(this.options.indicator)
290
- this.showIndicator();
291
- this.ajaxRequest = new Ajax.Request(this.href,{
292
- method: this.options.method,
293
- parameters: this.options.parameters,
294
- onComplete: function(request){
295
- this.notify('onComplete',request);
296
- this.ajaxRequest = false;
297
- }.bind(this),
298
- onSuccess: function(request){
299
- this.getRemoteContentInsertionTarget().insert(request.responseText);
300
- this.notify('onSuccess',request);
301
- if(this.notify('onRemoteContentLoaded') !== false){
302
- if(this.options.indicator)
303
- this.hideIndicator();
304
- this.finishOpen();
305
- }
306
- }.bind(this),
307
- onFailure: function(request){
308
- this.notify('onFailure',request);
309
- if(this.options.indicator)
310
- this.hideIndicator();
311
- }.bind(this),
312
- onException: function(request,e){
313
- this.notify('onException',request,e);
314
- if(this.options.indicator)
315
- this.hideIndicator();
316
- }.bind(this)
317
- });
318
- }
319
- }
320
- return true;
321
- }else if(this.options.iframe && !this.remoteContentLoaded){
322
- //iframe
323
- this.remoteContentLoaded = true;
324
- if(this.options.indicator)
325
- this.showIndicator();
326
- this.getRemoteContentInsertionTarget().insert(Control.Window.iframeTemplate.evaluate({
327
- href: this.href
328
- }));
329
- var iframe = this.container.down('iframe');
330
- iframe.onload = function(){
331
- this.notify('onRemoteContentLoaded');
332
- if(this.options.indicator)
333
- this.hideIndicator();
334
- iframe.onload = null;
335
- }.bind(this);
336
- }
337
- this.finishOpen(event);
338
- return true
339
- },
340
- close: function(event){ //event may or may not be present
341
- if(!this.isOpen || this.notify('beforeClose',event) === false)
342
- return false;
343
- if(this.options.closeOnClick)
344
- this.closeOnClickContainer.stopObserving('click',this.closeHandler);
345
- if(this.options.fade){
346
- this.effects.fade = new Effect.Fade(this.container,{
347
- queue: {
348
- position: 'front',
349
- scope: 'Control.Window' + this.numberInSequence
350
- },
351
- from: 1,
352
- to: 0,
353
- duration: this.options.fadeDuration / 2,
354
- afterFinish: function(){
355
- if(this.iFrameShim)
356
- this.iFrameShim.hide();
357
- this.isOpen = false;
358
- this.notify('afterClose');
359
- }.bind(this)
360
- });
361
- }else{
362
- this.container.hide();
363
- if(this.iFrameShim)
364
- this.iFrameShim.hide();
365
- }
366
- if(this.ajaxRequest)
367
- this.ajaxRequest.transport.abort();
368
- if(!(this.options.draggable || this.options.resizable) && this.options.position == 'center')
369
- Event.stopObserving(window,'resize',this.positionHandler);
370
- if(!this.options.draggable && this.options.position == 'center')
371
- Event.stopObserving(window,'scroll',this.positionHandler);
372
- if(this.options.indicator)
373
- this.hideIndicator();
374
- if(!this.options.fade){
375
- this.isOpen = false;
376
- this.notify('afterClose');
377
- }
378
- return true;
379
- },
380
- position: function(event){
381
- //this is up top for performance reasons
382
- if(this.options.position == 'mouse'){
383
- var xy = [Event.pointerX(event),Event.pointerY(event)];
384
- this.container.setStyle({
385
- top: xy[1] + $value(this.options.offsetTop) + 'px',
386
- left: xy[0] + $value(this.options.offsetLeft) + 'px'
387
- });
388
- return;
389
- }
390
- var container_dimensions = this.container.getDimensions();
391
- var viewport_dimensions = document.viewport.getDimensions();
392
- Position.prepare();
393
- var offset_left = (Position.deltaX + Math.floor((viewport_dimensions.width - container_dimensions.width) / 2));
394
- var offset_top = (Position.deltaY + ((viewport_dimensions.height > container_dimensions.height) ? Math.floor((viewport_dimensions.height - container_dimensions.height) / 2) : 0));
395
- if(this.options.position == 'center' || this.options.position == 'center_once'){
396
- this.container.setStyle({
397
- top: (container_dimensions.height <= viewport_dimensions.height) ? ((offset_top != null && offset_top > 0) ? offset_top : 0) + 'px' : 0,
398
- left: (container_dimensions.width <= viewport_dimensions.width) ? ((offset_left != null && offset_left > 0) ? offset_left : 0) + 'px' : 0
399
- });
400
- }else if(this.options.position == 'relative'){
401
- var xy = this.sourceContainer.cumulativeOffset();
402
- var top = xy[1] + $value(this.options.offsetTop);
403
- var left = xy[0] + $value(this.options.offsetLeft);
404
- this.container.setStyle({
405
- top: (container_dimensions.height <= viewport_dimensions.height) ? (this.options.constrainToViewport ? Math.max(0,Math.min(viewport_dimensions.height - (container_dimensions.height),top)) : top) + 'px' : 0,
406
- left: (container_dimensions.width <= viewport_dimensions.width) ? (this.options.constrainToViewport ? Math.max(0,Math.min(viewport_dimensions.width - (container_dimensions.width),left)) : left) + 'px' : 0
407
- });
408
- }else if(this.options.position.length){
409
- var top = $value(this.options.position[1]) + $value(this.options.offsetTop);
410
- var left = $value(this.options.position[0]) + $value(this.options.offsetLeft);
411
- this.container.setStyle({
412
- top: (container_dimensions.height <= viewport_dimensions.height) ? (this.options.constrainToViewport ? Math.max(0,Math.min(viewport_dimensions.height - (container_dimensions.height),top)) : top) + 'px' : 0,
413
- left: (container_dimensions.width <= viewport_dimensions.width) ? (this.options.constrainToViewport ? Math.max(0,Math.min(viewport_dimensions.width - (container_dimensions.width),left)) : left) + 'px' : 0
414
- });
415
- }
416
- if(this.iFrameShim)
417
- this.updateIFrameShimZIndex();
418
- },
419
- ensureInBounds: function(){
420
- if(!this.isOpen)
421
- return;
422
- var viewport_dimensions = document.viewport.getDimensions();
423
- var container_offset = this.container.cumulativeOffset();
424
- var container_dimensions = this.container.getDimensions();
425
- if(container_offset.left + container_dimensions.width > viewport_dimensions.width){
426
- this.container.setStyle({
427
- left: (Math.max(0,viewport_dimensions.width - container_dimensions.width)) + 'px'
428
- });
429
- }
430
- if(container_offset.top + container_dimensions.height > viewport_dimensions.height){
431
- this.container.setStyle({
432
- top: (Math.max(0,viewport_dimensions.height - container_dimensions.height)) + 'px'
433
- });
434
- }
435
- },
436
- bringToFront: function(){
437
- Control.Window.bringToFront(this);
438
- this.notify('bringToFront');
439
- },
440
- destroy: function(){
441
- this.container.stopObserving('mousedown',this.bringToFrontHandler);
442
- if(this.draggable){
443
- Draggables.removeObserver(this.container);
444
- this.draggable.handle.stopObserving('mousedown',this.bringToFrontHandler);
445
- this.draggable.destroy();
446
- }
447
- if(this.resizable){
448
- Resizables.removeObserver(this.container);
449
- this.resizable.handle.stopObserving('mousedown',this.bringToFrontHandler);
450
- this.resizable.destroy();
451
- }
452
- if(this.container && !this.sourceContainer)
453
- this.container.remove();
454
- if(this.sourceContainer){
455
- if(this.options.hover){
456
- this.sourceContainer.stopObserving('mouseenter',this.sourceContainerOpenHandler);
457
- this.sourceContainer.stopObserving('mouseleave',this.sourceContainerCloseHandler);
458
- if(this.options.position == 'mouse')
459
- this.sourceContainer.stopObserving('mousemove',this.sourceContainerMouseMoveHandler);
460
- }else
461
- this.sourceContainer.stopObserving('click',this.sourceContainerOpenHandler);
462
- }
463
- if(this.iFrameShim)
464
- this.iFrameShim.destroy();
465
- Event.stopObserving(window,'resize',this.outOfBoundsPositionHandler);
466
- Control.Window.windows = Control.Window.windows.without(this);
467
- this.notify('afterDestroy');
468
- },
469
- //private
470
- applyResizable: function(){
471
- if(this.options.resizable){
472
- if(typeof(Resizable) == "undefined")
473
- throw "Control.Window requires resizable.js to be loaded.";
474
- var resizable_handle = null;
475
- if(this.options.resizable === true){
476
- resizable_handle = new Element('div',{
477
- className: 'resizable_handle'
478
- });
479
- this.container.insert(resizable_handle);
480
- }else
481
- resizable_handle = $(this.options.resziable);
482
- this.resizable = new Resizable(this.container,{
483
- handle: resizable_handle,
484
- minHeight: this.options.minHeight,
485
- minWidth: this.options.minWidth,
486
- maxHeight: this.options.constrainToViewport ? function(element){
487
- //viewport height - top - total border height
488
- return (document.viewport.getDimensions().height - parseInt(element.style.top || 0)) - (element.getHeight() - parseInt(element.style.height || 0));
489
- } : this.options.maxHeight,
490
- maxWidth: this.options.constrainToViewport ? function(element){
491
- //viewport width - left - total border width
492
- return (document.viewport.getDimensions().width - parseInt(element.style.left || 0)) - (element.getWidth() - parseInt(element.style.width || 0));
493
- } : this.options.maxWidth
494
- });
495
- this.resizable.handle.observe('mousedown',this.bringToFrontHandler);
496
- Resizables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){
497
- if(this.iFrameShim)
498
- this.updateIFrameShimZIndex();
499
- this.notify('onResize');
500
- }.bind(this)));
501
- }
502
- },
503
- applyDraggable: function(){
504
- if(this.options.draggable){
505
- if(typeof(Draggables) == "undefined")
506
- throw "Control.Window requires dragdrop.js to be loaded.";
507
- var draggable_handle = null;
508
- if(this.options.draggable === true){
509
- draggable_handle = new Element('div',{
510
- className: 'draggable_handle'
511
- });
512
- this.container.insert(draggable_handle);
513
- }else
514
- draggable_handle = $(this.options.draggable);
515
- this.draggable = new Draggable(this.container,{
516
- handle: draggable_handle,
517
- constrainToViewport: this.options.constrainToViewport,
518
- zindex: this.container.getStyle('z-index'),
519
- starteffect: function(){
520
- if(Prototype.Browser.IE){
521
- this.old_onselectstart = document.onselectstart;
522
- document.onselectstart = function(){
523
- return false;
524
- };
525
- }
526
- }.bind(this),
527
- endeffect: function(){
528
- document.onselectstart = this.old_onselectstart;
529
- }.bind(this)
530
- });
531
- this.draggable.handle.observe('mousedown',this.bringToFrontHandler);
532
- Draggables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){
533
- if(this.iFrameShim)
534
- this.updateIFrameShimZIndex();
535
- this.notify('onDrag');
536
- }.bind(this)));
537
- }
538
- },
539
- createDefaultContainer: function(container){
540
- if(!this.container){
541
- //no container passed or found, create it
542
- this.container = new Element('div',{
543
- id: 'control_window_' + this.numberInSequence
544
- });
545
- $(document.body).insert(this.container);
546
- if(typeof(container) == "string" && $(container) == null && !container.match(/^#(.+)$/) && !container.match(Control.Window.uriRegex))
547
- this.container.update(container);
548
- }
549
- },
550
- finishOpen: function(event){
551
- this.bringToFront();
552
- if(this.options.fade){
553
- if(typeof(Effect) == "undefined")
554
- throw "Control.Window requires effects.js to be loaded."
555
- if(this.effects.fade)
556
- this.effects.fade.cancel();
557
- this.effects.appear = new Effect.Appear(this.container,{
558
- queue: {
559
- position: 'end',
560
- scope: 'Control.Window.' + this.numberInSequence
561
- },
562
- from: 0,
563
- to: 1,
564
- duration: this.options.fadeDuration / 2,
565
- afterFinish: function(){
566
- if(this.iFrameShim)
567
- this.updateIFrameShimZIndex();
568
- this.isOpen = true;
569
- this.notify('afterOpen');
570
- }.bind(this)
571
- });
572
- }else
573
- this.container.show();
574
- this.position(event);
575
- if(!(this.options.draggable || this.options.resizable) && this.options.position == 'center')
576
- Event.observe(window,'resize',this.positionHandler,false);
577
- if(!this.options.draggable && this.options.position == 'center')
578
- Event.observe(window,'scroll',this.positionHandler,false);
579
- if(!this.options.fade){
580
- this.isOpen = true;
581
- this.notify('afterOpen');
582
- }
583
- return true;
584
- },
585
- showIndicator: function(){
586
- this.showIndicatorTimeout = window.setTimeout(function(){
587
- if(this.options.fade){
588
- this.indicatorEffects.appear = new Effect.Appear(this.indicator,{
589
- queue: {
590
- position: 'front',
591
- scope: 'Control.Window.indicator.' + this.numberInSequence
592
- },
593
- from: 0,
594
- to: 1,
595
- duration: this.options.fadeDuration / 2
596
- });
597
- }else
598
- this.indicator.show();
599
- }.bind(this),Control.Window.indicatorTimeout);
600
- },
601
- hideIndicator: function(){
602
- if(this.showIndicatorTimeout)
603
- window.clearTimeout(this.showIndicatorTimeout);
604
- this.indicator.hide();
605
- },
606
- getRemoteContentInsertionTarget: function(){
607
- return typeof(this.options.insertRemoteContentAt) == "string" ? this.container.down(this.options.insertRemoteContentAt) : $(this.options.insertRemoteContentAt);
608
- },
609
- updateIFrameShimZIndex: function(){
610
- if(this.iFrameShim)
611
- this.iFrameShim.positionUnder(this.container);
612
- }
613
- });
614
- //class methods
615
- Object.extend(Control.Window,{
616
- windows: [],
617
- baseZIndex: 9999,
618
- indicatorTimeout: 250,
619
- iframeTemplate: new Template('<iframe src="#{href}" width="100%" height="100%" frameborder="0"></iframe>'),
620
- uriRegex: /^(\/|\#|https?\:\/\/|[\w]+\/)/,
621
- bringToFront: function(w){
622
- Control.Window.windows = Control.Window.windows.without(w);
623
- Control.Window.windows.push(w);
624
- Control.Window.windows.each(function(w,i){
625
- var z_index = Control.Window.baseZIndex + i;
626
- w.container.setStyle({
627
- zIndex: z_index
628
- });
629
- if(w.isOpen){
630
- if(w.iFrameShim)
631
- w.updateIFrameShimZIndex();
632
- }
633
- if(w.options.draggable)
634
- w.draggable.options.zindex = z_index;
635
- });
636
- },
637
- open: function(container,options){
638
- var w = new Control.Window(container,options);
639
- w.open();
640
- return w;
641
- },
642
- //protected
643
- initialZIndexForWindow: function(w){
644
- return Control.Window.baseZIndex + (Control.Window.windows.length - 1);
645
- }
646
- });
647
- Object.Event.extend(Control.Window);
648
-
649
- //this is the observer for both Resizables and Draggables
650
- Control.Window.LayoutUpdateObserver = Class.create({
651
- initialize: function(w,observer){
652
- this.w = w;
653
- this.element = $(w.container);
654
- this.observer = observer;
655
- },
656
- onStart: Prototype.emptyFunction,
657
- onEnd: function(event_name,instance){
658
- if(instance.element == this.element && this.iFrameShim)
659
- this.w.updateIFrameShimZIndex();
660
- },
661
- onResize: function(event_name,instance){
662
- if(instance.element == this.element)
663
- this.observer(this.element);
664
- },
665
- onDrag: function(event_name,instance){
666
- if(instance.element == this.element)
667
- this.observer(this.element);
668
- }
669
- });
670
-
671
- //overlay for Control.Modal
672
- Control.Overlay = {
673
- id: 'control_overlay',
674
- loaded: false,
675
- container: false,
676
- lastOpacity: 0,
677
- getStyles: function() {
678
- return {
679
- position: 'fixed',
680
- top: 0,
681
- left: 0,
682
- width: '100%',
683
- height: '100%',
684
- zIndex: Control.Window.baseZIndex - 1
685
- };
686
- },
687
- getIeStyles: function() {
688
- return {
689
- position: 'absolute',
690
- top: 0,
691
- left: 0,
692
- zIndex: Control.Window.baseZIndex - 1
693
- };
694
- },
695
- effects: {
696
- fade: false,
697
- appear: false
698
- },
699
- load: function(){
700
- if(Control.Overlay.loaded)
701
- return false;
702
- Control.Overlay.loaded = true;
703
- Control.Overlay.container = new Element('div',{
704
- id: Control.Overlay.id
705
- });
706
- $(document.body).insert(Control.Overlay.container);
707
- if(Prototype.Browser.IE){
708
- Control.Overlay.container.setStyle(Control.Overlay.getIeStyles());
709
- Event.observe(window,'scroll',Control.Overlay.positionOverlay);
710
- Event.observe(window,'resize',Control.Overlay.positionOverlay);
711
- Control.Overlay.observe('beforeShow',Control.Overlay.positionOverlay);
712
- }else
713
- Control.Overlay.container.setStyle(Control.Overlay.getStyles());
714
- Control.Overlay.iFrameShim = new IframeShim();
715
- Control.Overlay.iFrameShim.hide();
716
- Event.observe(window,'resize',Control.Overlay.positionIFrameShim);
717
- Control.Overlay.container.hide();
718
- return true;
719
- },
720
- unload: function(){
721
- if(!Control.Overlay.loaded)
722
- return false;
723
- Event.stopObserving(window,'resize',Control.Overlay.positionOverlay);
724
- Control.Overlay.stopObserving('beforeShow',Control.Overlay.positionOverlay);
725
- Event.stopObserving(window,'resize',Control.Overlay.positionIFrameShim);
726
- Control.Overlay.iFrameShim.destroy();
727
- Control.Overlay.container.remove();
728
- Control.Overlay.loaded = false;
729
- return true;
730
- },
731
- show: function(opacity,fade){
732
- if(Control.Overlay.notify('beforeShow') === false)
733
- return false;
734
- Control.Overlay.lastOpacity = opacity;
735
- Control.Overlay.positionIFrameShim();
736
- Control.Overlay.iFrameShim.show();
737
- if(fade){
738
- if(typeof(Effect) == "undefined")
739
- throw "Control.Window requires effects.js to be loaded."
740
- if(Control.Overlay.effects.fade)
741
- Control.Overlay.effects.fade.cancel();
742
- Control.Overlay.effects.appear = new Effect.Appear(Control.Overlay.container,{
743
- queue: {
744
- position: 'end',
745
- scope: 'Control.Overlay'
746
- },
747
- afterFinish: function(){
748
- Control.Overlay.notify('afterShow');
749
- },
750
- from: 0,
751
- to: Control.Overlay.lastOpacity,
752
- duration: (fade === true ? 0.75 : fade) / 2
753
- });
754
- }else{
755
- Control.Overlay.container.setStyle({
756
- opacity: opacity || 1
757
- });
758
- Control.Overlay.container.show();
759
- Control.Overlay.notify('afterShow');
760
- }
761
- return true;
762
- },
763
- hide: function(fade){
764
- if(Control.Overlay.notify('beforeHide') === false)
765
- return false;
766
- if(Control.Overlay.effects.appear)
767
- Control.Overlay.effects.appear.cancel();
768
- Control.Overlay.iFrameShim.hide();
769
- if(fade){
770
- Control.Overlay.effects.fade = new Effect.Fade(Control.Overlay.container,{
771
- queue: {
772
- position: 'front',
773
- scope: 'Control.Overlay'
774
- },
775
- afterFinish: function(){
776
- Control.Overlay.notify('afterHide');
777
- },
778
- from: Control.Overlay.lastOpacity,
779
- to: 0,
780
- duration: (fade === true ? 0.75 : fade) / 2
781
- });
782
- }else{
783
- Control.Overlay.container.hide();
784
- Control.Overlay.notify('afterHide');
785
- }
786
- return true;
787
- },
788
- positionIFrameShim: function(){
789
- if(Control.Overlay.container.visible())
790
- Control.Overlay.iFrameShim.positionUnder(Control.Overlay.container);
791
- },
792
- //IE only
793
- positionOverlay: function(){
794
- Control.Overlay.container.setStyle({
795
- width: document.body.clientWidth + 'px',
796
- height: document.body.clientHeight + 'px'
797
- });
798
- }
799
- };
800
- Object.Event.extend(Control.Overlay);
801
-
802
- Control.ToolTip = Class.create(Control.Window,{
803
- initialize: function($super,container,tooltip,options){
804
- $super(tooltip,Object.extend(Object.extend(Object.clone(Control.ToolTip.defaultOptions),options || {}),{
805
- position: 'mouse',
806
- hover: container
807
- }));
808
- }
809
- });
810
- Object.extend(Control.ToolTip,{
811
- defaultOptions: {
812
- offsetLeft: 10
813
- }
814
- });
815
-
816
- Control.Modal = Class.create(Control.Window,{
817
- initialize: function($super,container,options){
818
- Control.Modal.InstanceMethods.beforeInitialize.bind(this)();
819
- $super(container,Object.extend(Object.clone(Control.Modal.defaultOptions),options || {}));
820
- },
821
- closeWithoutOverlay: function(){
822
- this.keepOverlay = true;
823
- this.close();
824
- }
825
- });
826
- Object.extend(Control.Modal,{
827
- defaultOptions: {
828
- overlayOpacity: 0.5,
829
- closeOnClick: 'overlay'
830
- },
831
- current: false,
832
- open: function(container,options){
833
- var modal = new Control.Modal(container,options);
834
- modal.open();
835
- return modal;
836
- },
837
- close: function(){
838
- if(Control.Modal.current)
839
- Control.Modal.current.close();
840
- },
841
- InstanceMethods: {
842
- beforeInitialize: function(){
843
- Control.Overlay.load();
844
- this.observe('beforeOpen',Control.Modal.Observers.beforeOpen.bind(this));
845
- this.observe('afterOpen',Control.Modal.Observers.afterOpen.bind(this));
846
- this.observe('afterClose',Control.Modal.Observers.afterClose.bind(this));
847
- }
848
- },
849
- Observers: {
850
- beforeOpen: function(){
851
- Control.Window.windows.without(this).each(function(w){
852
- if(w.closeWithoutOverlay && w.isOpen){
853
- w.closeWithoutOverlay();
854
- }else{
855
- w.close();
856
- }
857
- });
858
- if(!Control.Overlay.overlayFinishedOpening){
859
- Control.Overlay.observeOnce('afterShow',function(){
860
- Control.Overlay.overlayFinishedOpening = true;
861
- this.open();
862
- }.bind(this));
863
- Control.Overlay.show(this.options.overlayOpacity,this.options.fade ? this.options.fadeDuration : false);
864
- throw $break;
865
- }
866
- },
867
- afterOpen: function(){
868
- Control.Overlay.show(this.options.overlayOpacity);
869
- Control.Overlay.overlayFinishedOpening = true;
870
- Control.Modal.current = this;
871
- },
872
- afterClose: function(){
873
- if(!this.keepOverlay){
874
- Control.Overlay.hide(this.options.fade ? this.options.fadeDuration : false);
875
- Control.Overlay.overlayFinishedOpening = false;
876
- }
877
- this.keepOverlay = false;
878
- Control.Modal.current = false;
879
- }
880
- }
881
- });
882
-
883
- Control.LightBox = Class.create(Control.Window,{
884
- initialize: function($super,container,options){
885
- this.allImagesLoaded = false;
886
- if(options.modal){
887
- var options = Object.extend(Object.clone(Control.LightBox.defaultOptions),options || {});
888
- options = Object.extend(Object.clone(Control.Modal.defaultOptions),options);
889
- options = Control.Modal.InstanceMethods.beforeInitialize.bind(this)(options);
890
- $super(container,options);
891
- }else
892
- $super(container,Object.extend(Object.clone(Control.LightBox.defaultOptions),options || {}));
893
- this.hasRemoteContent = this.href && !this.options.iframe;
894
- if(this.hasRemoteContent)
895
- this.observe('onRemoteContentLoaded',Control.LightBox.Observers.onRemoteContentLoaded.bind(this));
896
- else
897
- this.applyImageObservers();
898
- this.observe('beforeOpen',Control.LightBox.Observers.beforeOpen.bind(this));
899
- },
900
- applyImageObservers:function(){
901
- var images = this.getImages();
902
- this.numberImagesToLoad = images.length;
903
- this.numberofImagesLoaded = 0;
904
- images.each(function(image){
905
- image.observe('load',function(image){
906
- ++this.numberofImagesLoaded;
907
- if(this.numberImagesToLoad == this.numberofImagesLoaded){
908
- this.allImagesLoaded = true;
909
- this.onAllImagesLoaded();
910
- }
911
- }.bind(this,image));
912
- image.hide();
913
- }.bind(this));
914
- },
915
- onAllImagesLoaded: function(){
916
- this.getImages().each(function(image){
917
- this.showImage(image);
918
- }.bind(this));
919
- if(this.hasRemoteContent){
920
- if(this.options.indicator)
921
- this.hideIndicator();
922
- this.finishOpen();
923
- }else
924
- this.open();
925
- },
926
- getImages: function(){
927
- return this.container.select(Control.LightBox.imageSelector);
928
- },
929
- showImage: function(image){
930
- image.show();
931
- }
932
- });
933
- Object.extend(Control.LightBox,{
934
- imageSelector: 'img',
935
- defaultOptions: {},
936
- Observers: {
937
- beforeOpen: function(){
938
- if(!this.hasRemoteContent && !this.allImagesLoaded)
939
- throw $break;
940
- },
941
- onRemoteContentLoaded: function(){
942
- this.applyImageObservers();
943
- if(!this.allImagesLoaded)
944
- throw $break;
945
- }
946
- }
947
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>straker-translations-easy-translation-platform</name>
4
- <version>0.2.0</version>
5
  <stability>devel</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Total automation of the translation process, simple installation and setup, quality human translation at cost-effective rates, scalable to more than 80 languages and 1000s of projects and powerful dashboard reporting.</description>
11
  <notes>Initial development version</notes>
12
  <authors><author><name>Chris </name><user>Straker_support</user><email>extensions@strakertranslations.com</email></author></authors>
13
- <date>2015-12-01</date>
14
- <time>04:59:48</time>
15
- <contents><target name="magecommunity"><dir name="StrakerTranslations"><dir name="EasyTranslationPlatform"><dir name="Block"><dir name="Adminhtml"><dir name="Job"><dir name="Category"><file name="Grid.php" hash="85c8665aae723ab004dcdce4f38d8eb3"/></dir><file name="Category.php" hash="76a4cfea25b28c12c5156ccccea11e1c"/><file name="Grid.php" hash="68f3942d4ed11070c66fd3b0629ce320"/><dir name="Product"><file name="Grid.php" hash="70253de55da33dae98c812e130e48426"/></dir><file name="Product.php" hash="b03bcde5309ebc604e4b73d2a18f974c"/></dir><file name="Job.php" hash="bf5ad4cd596a3a93a54447ee112c0a23"/><dir name="New"><file name="Attribute.php" hash="f7705a1fc16c7844a0cffd3e237dbb7a"/><dir name="Category"><file name="Attribute.php" hash="b6698a36ee449853edff1815fca6a56f"/><dir name="Confirm"><file name="Grid.php" hash="8ae2189b1d9b4449d1babb19c28d4944"/></dir><file name="Confirm.php" hash="b710371dceb26866857a62f9d19425e7"/><file name="Tree.php" hash="b405b4bf4969812e13d63d752cd89c23"/></dir><dir name="Confirm"><file name="Grid.php" hash="49a048fe7340150dc387a30355951385"/></dir><file name="Confirm.php" hash="a903a2f53c3b44fb8c72dc70716ff0d3"/><dir name="Products"><file name="Attribute.php" hash="4aab6c02b883d138205db19c021dba1f"/><dir name="Confirm"><file name="Grid.php" hash="a00382ca90618800d6be0e889521d14a"/></dir><file name="Confirm.php" hash="d4dddb499ff29d646fcd48246666126a"/><file name="Grid.php" hash="dfdf0052b447f9b65cdaf1eba545c05a"/></dir><file name="Products.php" hash="cd0c2de765d91c4c7a82cc74bb1797c9"/><file name="Register.php" hash="7f43aee445980708a6cb8510eec21e78"/><file name="Selectstore.php" hash="42553d67a4e14ca8f754ea096ddf9cf6"/><file name="Setupstore.php" hash="bc1ca941654f47f763d0e7605fc7b050"/><file name="Type.php" hash="9552bdb41b0dd5acd20f4e5c5928393a"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Backupbutton.php" hash="8bfae419ddceed0553db1f5dc5322356"/><file name="Button.php" hash="9604001bfb931ce0674785937a5766c2"/><file name="Restorebutton.php" hash="e98058e6769f5308fa9f48fa19a22704"/></dir></dir></dir><dir name="Template"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="7973fea548f4160d38010f62ea120b4e"/><file name="Backend.php" hash="66fa7d4689b2d5ec0bd492f38d39825e"/><file name="Dispute.php" hash="3bae4a4bbf43890a53a8c2698315430e"/><file name="Frontend.php" hash="b390c2395807ba7db0f8121775f1eedd"/><file name="Path.php" hash="5d9e268bde77a5e1d6d435a48d9f60b7"/><file name="Quote.php" hash="728f3e53af9619760a3921993a823ca6"/><file name="Refresh.php" hash="28db5556c4dad64f4d3aa808758673dd"/><file name="Status.php" hash="2503f30bb8fc73f059816b1f0676897d"/><file name="Update.php" hash="43a114983b2c00af3432e664512b1704"/><file name="Version.php" hash="908c1697bd48848a2ebf00cd38aa8dc1"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="e4ebcaf86721cfa7b2c699ec844e3460"/></dir><dir name="Model"><file name="Actionlog.php" hash="bd8a61e14712e32937e0622376b07ae7"/><file name="Api.php" hash="28967043b3073fb37fc3cbdc69c3bd99"/><dir name="Category"><file name="Attributes.php" hash="31639770ebe8f2aa4b320d686786f716"/><file name="Translate.php" hash="63888c2d229d1cc860b2d3555470f597"/></dir><dir name="Job"><file name="Category.php" hash="37079e7131a4d10a9577afb499c6d7b6"/><file name="Product.php" hash="9f02ce34f909df6dd26c3414356ad565"/><file name="Status.php" hash="64c766deaf33bd0460c739f04544f8db"/><file name="Type.php" hash="c5010524e83e0c3c56595bcd72bba97d"/></dir><file name="Job.php" hash="e3a302dacd67eb3280604d5cf8bf0ac7"/><dir name="Product"><file name="Attributes.php" hash="f8539bb8a73a59017b811bea7d99835b"/><file name="Translate.php" hash="b2d3d28d48dbeebafb9406d5b2920290"/></dir><dir name="Resource"><dir name="Actionlog"><file name="Collection.php" hash="a60fb59aa09d55b5e5d4f41d58e20e6f"/></dir><file name="Actionlog.php" hash="5742408ecac5dce23b3492d118d6ca41"/><dir name="Category"><dir name="Attributes"><file name="Collection.php" hash="d0d1bdb74c8b6d3ebcd00e986bbda5ac"/></dir><file name="Attributes.php" hash="438aefd7fd4768a18dea3835e592d020"/><dir name="Translate"><file name="Collection.php" hash="6f9b263579ba9c988dbf476a9a8d5254"/></dir><file name="Translate.php" hash="3493c3a5f4dff5278e61cf758b58f09e"/></dir><dir name="Job"><dir name="Category"><file name="Collection.php" hash="bfaf21e4fb96e9144ac0339af6290888"/></dir><file name="Category.php" hash="5cb332770a4600be8d82d5440a42a2a6"/><file name="Collection.php" hash="26b821d388a969c048418254c702767d"/><dir name="Product"><file name="Collection.php" hash="3e56b98a2b8198a78faebef6fb6ad72f"/></dir><file name="Product.php" hash="8b0dfa9ce28bc4292021055f9253ea5d"/><dir name="Status"><file name="Collection.php" hash="84dd6c9d32fda84ea11102692b5359a9"/></dir><file name="Status.php" hash="5e29fbf619c9b1278273266fb2ce2afa"/><dir name="Type"><file name="Collection.php" hash="625b61447aee152376c19f36a347d5d8"/></dir><file name="Type.php" hash="36b8ec250e3bc2377c1fb755459fad95"/></dir><file name="Job.php" hash="b0b4460e3ca9dd9493cbc2548b43f052"/><dir name="Product"><dir name="Attributes"><file name="Collection.php" hash="3f479577ce23ba9f264125439c1d1099"/></dir><file name="Attributes.php" hash="93c962dc76384771d9139574796c16b5"/><dir name="Translate"><file name="Collection.php" hash="4dc7e3a0a44edd6acea4b8cf45b40d05"/></dir><file name="Translate.php" hash="f88f7ea6f6e1dfdc55ef648ddea2ca38"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="JobController.php" hash="d4c9b7b302bf5d8c33764ccefcb4a713"/><file name="NewController.php" hash="d02df7fe360aa8f7e08030e7d1a120d5"/><file name="ProductController.php" hash="5ad93e2dd8a46bd6b8a74c5e5446c80e"/><dir name="Straker"><file name="CategoryController.php" hash="910a02d1c27af7178584311f57705646"/><file name="JobController.php" hash="8fb3b3bced0b90cad7a1f0518a8de2d9"/><file name="NewController.php" hash="beadea79b9cad9a9aeaa27f4e03126f5"/><file name="ProductController.php" hash="f4742ae9e313f6fcf080a953a3251c75"/></dir></dir><file name="CallbackController.php" hash="c9abd6304f6f071940735a47ab658633"/></dir><dir name="etc"><file name="adminhtml.xml" hash="30c57a0cd1a47ef81334cb26a512720c"/><file name="config.xml" hash="dc3a04cc12370761a44224aaa27cc572"/><file name="system.xml" hash="93dcdae11b03b287ecb9e267cd197cf5"/></dir><dir name="sql"><dir name="strakertranslations_easytranslationplatform_setup"><file name="mysql4-install-0.1.0.php" hash="b1d51eaaa6816baf8b984bb4951a86ba"/><file name="mysql4-upgrade-0.1.0-0.2.0.php" hash="fc4eb48d6f7000319507cedcd903debb"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="straker"><dir name="layout"><file name="straker.xml" hash="d1faabffeea1fc63a922a22c059ef832"/></dir><dir name="template"><dir name="straker"><dir name="job"><dir name="category"><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="category.phtml" hash="b291de6217ced6b7cc9df49f90506fe5"/><dir name="product"><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="product.phtml" hash="b291de6217ced6b7cc9df49f90506fe5"/></dir><file name="job.phtml" hash="63c7a5b66b969635ee9996638878d63c"/><dir name="new"><file name="attributes.phtml" hash="a2b5136923f2afad369185077a3c4c53"/><dir name="category"><file name="attributes.phtml" hash="f8a91a330273d18e168d75d460c920c4"/><file name="confirm.phtml" hash="651d98be32a0fd2f768cbeee1907a843"/><file name="tree.phtml" hash="376c21aa034258af888dc03d8f9f5dd8"/></dir><file name="confirm.phtml" hash="defc2a26d6eb659a312e83c884270c4d"/><dir name="products"><file name="attributes.phtml" hash="6f53969076d404bc0fafe71c3ea0de72"/><file name="confirm.phtml" hash="a46c670c32070216772cc8108ef834d0"/><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="products.phtml" hash="faf17e8b26f9270758c5cc19d77f4384"/><file name="register.phtml" hash="3fbc5e22e54cfc98000c14cfbd824a75"/><file name="selectstore.phtml" hash="beb08c491221afca55d4c7cf7525d6d4"/><file name="setupstore.phtml" hash="86954fb6c02e62dee9e17e71b074e585"/><file name="type.phtml" hash="65089368178025d6a164cc5c34884950"/></dir><dir name="system"><dir name="config"><file name="button.phtml" hash="9725dd1eea9e0a5c6ff9a34a31d5e433"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="straker"><dir name="css"><file name="straker.css" hash="83deaa2bbb4feddf9ef6ea1a4d744836"/><file name="straker.less" hash="b738070f73fcdde73410b8bd51f4dee3"/></dir><dir name="images"><dir name="default"><file name="bottom_left.gif" hash="fb99ffa815a8648f95f42698fe5dfaa1"/><file name="bottom_mid.gif" hash="49b9ca7025562ea7f070a9111282364b"/><file name="bottom_right.gif" hash="e46768f632765cd86c5fe5d0166dcf2c"/><file name="bottom_right_resize.gif" hash="1b35a4ec3b734dfe37e31ba87bcc7d99"/><file name="center_left.gif" hash="bd567580b4ee16a7a2734057cfbbe219"/><file name="center_right.gif" hash="eef184d5d89d1710313581a2ccf408e8"/><file name="clear.gif" hash="7af1206eeb0e7834a75e69d70676060d"/><file name="close.gif" hash="8a08f243c37a8e25a88d4ac135b2f07d"/><file name="inspect.gif" hash="aa2a0961067aad5c54b8634919af863b"/><file name="maximize.gif" hash="e73cd71c4979ebeadeb9e27d40a9e8fb"/><file name="minimize.gif" hash="2d2f4b1bd0506f342425f80ab76c49a3"/><file name="overlay.png" hash="536d40e87cda0c7ae7b11f1721aa52d0"/><file name="resize.gif" hash="320f534b5d444b39701e0b679529e779"/><file name="sizer.gif" hash="1b35a4ec3b734dfe37e31ba87bcc7d99"/><file name="top_left.gif" hash="9c5e5920bfc189a45cc618099af93aa8"/><file name="top_mid.gif" hash="a12ff2b944025ad2d127d033dae5e9e1"/><file name="top_right.gif" hash="0cf1ec5b93f8ac8fcce0e2f72cf7f45e"/></dir><file name="magento-banner.jpg" hash="b3105fd2dd00004ab903db4fbb81b61e"/><file name="refresh_32.png" hash="96e793bcbcc2dc48768b8e124beea378"/><file name="straker-translations-logo.png" hash="7cb5e29f562420142f918147d95ed232"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="StrakerTranslations_EasyTranslationPlatform.xml" hash="eb61fdaac7559a75e39bc01206165d0c"/></dir></target><target name="mage"><dir name="js"><dir name="straker"><dir name="livepipe"><file name="livepipe.js" hash="417ba064736fed2772778641f66555c0"/><file name="window.js" hash="f6eba488d6a80e05f59d97a0cef59730"/></dir><file name="translations.js" hash="69717bb0023ff1516cefa1ef483789b4"/></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>straker-translations-easy-translation-platform</name>
4
+ <version>0.3.0</version>
5
  <stability>devel</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
10
  <description>Total automation of the translation process, simple installation and setup, quality human translation at cost-effective rates, scalable to more than 80 languages and 1000s of projects and powerful dashboard reporting.</description>
11
  <notes>Initial development version</notes>
12
  <authors><author><name>Chris </name><user>Straker_support</user><email>extensions@strakertranslations.com</email></author></authors>
13
+ <date>2016-01-05</date>
14
+ <time>00:52:57</time>
15
+ <contents><target name="magecommunity"><dir name="StrakerTranslations"><dir name="EasyTranslationPlatform"><dir name="Block"><dir name="Adminhtml"><dir name="Job"><dir name="Category"><file name="Grid.php" hash="85c8665aae723ab004dcdce4f38d8eb3"/></dir><file name="Category.php" hash="bdd86f858dd7ca8c77cc1db52361ef64"/><file name="Grid.php" hash="a0047d807b29b3a6762b9f680724ff93"/><dir name="Product"><file name="Grid.php" hash="416e189648ccdb3707c07c252e80bd07"/></dir><file name="Product.php" hash="4efd1f43887a468deda49ec66fd19ff3"/></dir><file name="Job.php" hash="bf5ad4cd596a3a93a54447ee112c0a23"/><dir name="New"><file name="Attribute.php" hash="f7705a1fc16c7844a0cffd3e237dbb7a"/><dir name="Category"><file name="Attribute.php" hash="b6698a36ee449853edff1815fca6a56f"/><dir name="Confirm"><file name="Grid.php" hash="6dae0cfcb1b91e3fdea45a521f263afa"/></dir><file name="Confirm.php" hash="b710371dceb26866857a62f9d19425e7"/><file name="Tree.php" hash="b405b4bf4969812e13d63d752cd89c23"/></dir><dir name="Confirm"><file name="Grid.php" hash="49a048fe7340150dc387a30355951385"/></dir><file name="Confirm.php" hash="a903a2f53c3b44fb8c72dc70716ff0d3"/><dir name="Products"><file name="Attribute.php" hash="4aab6c02b883d138205db19c021dba1f"/><dir name="Confirm"><file name="Grid.php" hash="a00382ca90618800d6be0e889521d14a"/></dir><file name="Confirm.php" hash="d4dddb499ff29d646fcd48246666126a"/><file name="Grid.php" hash="b2ce18933176e0c5c41f47b618ceef51"/></dir><file name="Products.php" hash="cd0c2de765d91c4c7a82cc74bb1797c9"/><file name="Register.php" hash="7f43aee445980708a6cb8510eec21e78"/><file name="Selectstore.php" hash="42553d67a4e14ca8f754ea096ddf9cf6"/><file name="Setupstore.php" hash="bc1ca941654f47f763d0e7605fc7b050"/><file name="Type.php" hash="9552bdb41b0dd5acd20f4e5c5928393a"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Backupbutton.php" hash="8bfae419ddceed0553db1f5dc5322356"/><file name="Button.php" hash="9604001bfb931ce0674785937a5766c2"/><file name="Restorebutton.php" hash="e98058e6769f5308fa9f48fa19a22704"/><file name="Store.php" hash="d962cfad8b87dfbe988beda890d5790d"/></dir></dir></dir><dir name="Template"><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="1f8e6a90be07b3eef6ea303fef9d45e4"/><file name="Backend.php" hash="6ca085c9a5c50e635f8f4aa41d3314e1"/><file name="Dispute.php" hash="3bae4a4bbf43890a53a8c2698315430e"/><file name="Frontend.php" hash="f1a0c9a0b98e3e16ec28a46c11f3b71f"/><file name="Path.php" hash="5d9e268bde77a5e1d6d435a48d9f60b7"/><file name="Quote.php" hash="728f3e53af9619760a3921993a823ca6"/><file name="Refresh.php" hash="28db5556c4dad64f4d3aa808758673dd"/><file name="Status.php" hash="5a2f7bce9d4a07d342a69d5e7b454ce3"/><file name="Update.php" hash="43a114983b2c00af3432e664512b1704"/><file name="Version.php" hash="908c1697bd48848a2ebf00cd38aa8dc1"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="e4ebcaf86721cfa7b2c699ec844e3460"/></dir><dir name="Model"><file name="Actionlog.php" hash="bd8a61e14712e32937e0622376b07ae7"/><file name="Api.php" hash="28967043b3073fb37fc3cbdc69c3bd99"/><dir name="Category"><file name="Attributes.php" hash="31639770ebe8f2aa4b320d686786f716"/><file name="Translate.php" hash="63888c2d229d1cc860b2d3555470f597"/></dir><dir name="Job"><file name="Category.php" hash="37079e7131a4d10a9577afb499c6d7b6"/><file name="Product.php" hash="9f02ce34f909df6dd26c3414356ad565"/><file name="Status.php" hash="64c766deaf33bd0460c739f04544f8db"/><file name="Type.php" hash="c5010524e83e0c3c56595bcd72bba97d"/></dir><file name="Job.php" hash="93c678827087c5ca0b426645a0e5de7e"/><dir name="Product"><file name="Attributes.php" hash="f8539bb8a73a59017b811bea7d99835b"/><file name="Translate.php" hash="b2d3d28d48dbeebafb9406d5b2920290"/></dir><dir name="Resource"><dir name="Actionlog"><file name="Collection.php" hash="a60fb59aa09d55b5e5d4f41d58e20e6f"/></dir><file name="Actionlog.php" hash="5742408ecac5dce23b3492d118d6ca41"/><dir name="Category"><dir name="Attributes"><file name="Collection.php" hash="d0d1bdb74c8b6d3ebcd00e986bbda5ac"/></dir><file name="Attributes.php" hash="438aefd7fd4768a18dea3835e592d020"/><dir name="Translate"><file name="Collection.php" hash="6f9b263579ba9c988dbf476a9a8d5254"/></dir><file name="Translate.php" hash="3493c3a5f4dff5278e61cf758b58f09e"/></dir><dir name="Job"><dir name="Category"><file name="Collection.php" hash="6e29696c703503c821fb4fbeb04f7169"/></dir><file name="Category.php" hash="5cb332770a4600be8d82d5440a42a2a6"/><file name="Collection.php" hash="26b821d388a969c048418254c702767d"/><dir name="Product"><file name="Collection.php" hash="0b333a2caf8977dbc9a8e71e58c54de6"/></dir><file name="Product.php" hash="8b0dfa9ce28bc4292021055f9253ea5d"/><dir name="Status"><file name="Collection.php" hash="84dd6c9d32fda84ea11102692b5359a9"/></dir><file name="Status.php" hash="5e29fbf619c9b1278273266fb2ce2afa"/><dir name="Type"><file name="Collection.php" hash="625b61447aee152376c19f36a347d5d8"/></dir><file name="Type.php" hash="36b8ec250e3bc2377c1fb755459fad95"/></dir><file name="Job.php" hash="b0b4460e3ca9dd9493cbc2548b43f052"/><dir name="Product"><dir name="Attributes"><file name="Collection.php" hash="3f479577ce23ba9f264125439c1d1099"/></dir><file name="Attributes.php" hash="93c962dc76384771d9139574796c16b5"/><dir name="Translate"><file name="Collection.php" hash="4dc7e3a0a44edd6acea4b8cf45b40d05"/></dir><file name="Translate.php" hash="f88f7ea6f6e1dfdc55ef648ddea2ca38"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Straker"><file name="CategoryController.php" hash="910a02d1c27af7178584311f57705646"/><file name="JobController.php" hash="8fb3b3bced0b90cad7a1f0518a8de2d9"/><file name="NewController.php" hash="96ae111d8fad3b0b32cdc11c805e5a71"/><file name="ProductController.php" hash="f4742ae9e313f6fcf080a953a3251c75"/></dir></dir><file name="CallbackController.php" hash="c9abd6304f6f071940735a47ab658633"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0e4088d77ea6561acd41d15c737f1f1b"/><file name="config.xml" hash="7fb6b0f87c9c163a6dcf3a92d75ca8d6"/><file name="system.xml" hash="f501acec468fce2d1928eddf0142171b"/></dir><dir name="sql"><dir name="strakertranslations_easytranslationplatform_setup"><file name="mysql4-install-0.1.0.php" hash="b1d51eaaa6816baf8b984bb4951a86ba"/><file name="mysql4-upgrade-0.1.0-0.2.0.php" hash="fc4eb48d6f7000319507cedcd903debb"/><file name="mysql4-upgrade-0.2.0-0.3.0.php" hash="8f0d9d00308a23c08e894c88edde5920"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="straker"><dir name="layout"><file name="straker.xml" hash="d1faabffeea1fc63a922a22c059ef832"/></dir><dir name="template"><dir name="straker"><dir name="job"><dir name="category"><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="category.phtml" hash="b291de6217ced6b7cc9df49f90506fe5"/><dir name="product"><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="product.phtml" hash="b291de6217ced6b7cc9df49f90506fe5"/></dir><file name="job.phtml" hash="63c7a5b66b969635ee9996638878d63c"/><dir name="new"><file name="attributes.phtml" hash="a2b5136923f2afad369185077a3c4c53"/><dir name="category"><file name="attributes.phtml" hash="f8a91a330273d18e168d75d460c920c4"/><file name="confirm.phtml" hash="651d98be32a0fd2f768cbeee1907a843"/><file name="tree.phtml" hash="376c21aa034258af888dc03d8f9f5dd8"/></dir><file name="confirm.phtml" hash="defc2a26d6eb659a312e83c884270c4d"/><dir name="products"><file name="attributes.phtml" hash="6f53969076d404bc0fafe71c3ea0de72"/><file name="confirm.phtml" hash="a46c670c32070216772cc8108ef834d0"/><file name="massaction.phtml" hash="1c3b4ce443f6e4086bcc362d43f75354"/></dir><file name="products.phtml" hash="faf17e8b26f9270758c5cc19d77f4384"/><file name="register.phtml" hash="3fbc5e22e54cfc98000c14cfbd824a75"/><file name="selectstore.phtml" hash="beb08c491221afca55d4c7cf7525d6d4"/><file name="setupstore.phtml" hash="86954fb6c02e62dee9e17e71b074e585"/><file name="type.phtml" hash="65089368178025d6a164cc5c34884950"/></dir><dir name="system"><dir name="config"><file name="button.phtml" hash="9725dd1eea9e0a5c6ff9a34a31d5e433"/><file name="store.phtml" hash="accefd80ff19bf7c917c923b2aed961c"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="straker"><dir name="css"><file name="straker.css" hash="17041d76dba1d87442f2e9439d7ff26d"/><file name="straker.less" hash="e3b1f672521faf5f65280ffe03f6221c"/></dir><dir name="images"><dir name="default"><file name="bottom_left.gif" hash="fb99ffa815a8648f95f42698fe5dfaa1"/><file name="bottom_mid.gif" hash="49b9ca7025562ea7f070a9111282364b"/><file name="bottom_right.gif" hash="e46768f632765cd86c5fe5d0166dcf2c"/><file name="bottom_right_resize.gif" hash="1b35a4ec3b734dfe37e31ba87bcc7d99"/><file name="center_left.gif" hash="bd567580b4ee16a7a2734057cfbbe219"/><file name="center_right.gif" hash="eef184d5d89d1710313581a2ccf408e8"/><file name="clear.gif" hash="7af1206eeb0e7834a75e69d70676060d"/><file name="close.gif" hash="8a08f243c37a8e25a88d4ac135b2f07d"/><file name="inspect.gif" hash="aa2a0961067aad5c54b8634919af863b"/><file name="maximize.gif" hash="e73cd71c4979ebeadeb9e27d40a9e8fb"/><file name="minimize.gif" hash="2d2f4b1bd0506f342425f80ab76c49a3"/><file name="overlay.png" hash="536d40e87cda0c7ae7b11f1721aa52d0"/><file name="resize.gif" hash="320f534b5d444b39701e0b679529e779"/><file name="sizer.gif" hash="1b35a4ec3b734dfe37e31ba87bcc7d99"/><file name="top_left.gif" hash="9c5e5920bfc189a45cc618099af93aa8"/><file name="top_mid.gif" hash="a12ff2b944025ad2d127d033dae5e9e1"/><file name="top_right.gif" hash="0cf1ec5b93f8ac8fcce0e2f72cf7f45e"/></dir><file name="magento-banner.jpg" hash="b3105fd2dd00004ab903db4fbb81b61e"/><file name="refresh_32.png" hash="96e793bcbcc2dc48768b8e124beea378"/><file name="straker-translations-logo.png" hash="7cb5e29f562420142f918147d95ed232"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="StrakerTranslations_EasyTranslationPlatform.xml" hash="eb61fdaac7559a75e39bc01206165d0c"/></dir></target><target name="mage"><dir name="js"><dir name="straker"><file name="translations.js" hash="69717bb0023ff1516cefa1ef483789b4"/></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
skin/adminhtml/default/straker/css/straker.css CHANGED
@@ -1,5 +1,6 @@
1
  .straker-main-container {
2
  padding: 30px;
 
3
  max-width: 600px;
4
  margin: 0 auto;
5
  }
@@ -258,6 +259,11 @@
258
  font-weight: normal;
259
  text-decoration: underline;
260
  }
 
 
 
 
 
261
  ol.wizard {
262
  margin-bottom: 30px;
263
  }
@@ -328,107 +334,121 @@ ol.wizard li.wizard-todo:before {
328
  /*
329
  Temp UI Updates : Yogi
330
  */
331
- .straker-main-container, .straker-main-container.border, .store-select-container {
332
- border: 1px solid #31BBEA;
333
- padding: 20px;
334
- overflow: hidden;
335
- border-radius: 5px;
336
- }
337
- .straker-main-container .store-select-container{
338
- border: 1px solid #B0EBFF;
339
- }
340
- .store-select-container .input-box{
341
- margin-top: 10px;
342
- }
343
- .store-select-container{
344
- color: #EB5E00;
345
- }
346
- .store-select-container label{
347
- width: 130px;
348
- text-align: left !important;
349
- display: inline-block;
350
- }
351
- .straker-main-container h2{
352
- font-size: 18px;
353
- }
354
- .straker-main-container input.form-button{
355
- padding: 5px 15px;
356
- border-radius: 2px;
357
- border: 1px solid #FF8E3C;
358
- font-size: 13px;
359
- color: #fff !important;
360
- }
361
- .straker-main-container label{
362
- color: #565656;
363
- font-size: 13px;
364
- line-height: 26px;
365
- }
366
- .straker-main-container select.validate-select, .store-select-container select.disabled{
367
- border: 1px solid #ccc;
368
- width: 258px;
369
- height: 29px;
370
- margin-top: 5px;
371
- }
372
- .store-select-container select.disabled{
373
- border: 1px solid #E7E7E7;
374
- }
375
- .straker-main-container .col-left{
376
- border-right: 1px solid #A4A4A4;
377
- }
378
- .straker-main-container .input-text{
379
- border: 1px solid #ADADAD;
380
- border-radius: 2px;
381
- padding: 6px;
382
- margin-bottom: 10px;
383
- }
384
- .straker-main-container h1{
385
- color: #595959;
386
- font-size: 20px;
387
- }
388
- .straker-main-container h3, .straker-main-container h2{
389
- color: #595959;
390
- }
391
- .straker-main-container p {
392
- font-size: 20px;
393
- font-size: 15px;
394
- color: #8A8A8A;
395
- }
396
- .job-type-btn-wrap{
397
- width: 410px;
398
- margin-top: 20px;
399
- overflow: hidden;
400
- }
401
- .job-type-btn-wrap a.job-type-btn {
402
- color: #fff;
403
- background: #02A3DB;
404
- padding: 9px 12px;
405
- overflow: hidden;
406
- float: left;
407
- display: block;
408
- width: 130px;
409
- text-align: center;
410
- text-decoration: none;
411
- margin-bottom: 10px;
412
- margin-right: 15px;
413
- border-radius: 3px;
414
- font-weight: bold;
415
- font-size: 14px;
416
- }
417
- .category-attr{
418
- margin-top: 18px;
419
- }
420
- .category-attr input {
421
- color: #595959;
422
- font-size: 16px;
423
- margin-bottom: 10px;
424
- }
425
- ol.wizard{
426
- width: 700px;
427
- }
428
- .magento-banner-wrap{
429
- overflow: hidden;
430
- margin-bottom: 20px;
431
- }
432
- .destination-container label[for=store]{
433
- padding-right: 15px;
434
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .straker-main-container {
2
  padding: 30px;
3
+ border: 1px solid #000000;
4
  max-width: 600px;
5
  margin: 0 auto;
6
  }
259
  font-weight: normal;
260
  text-decoration: underline;
261
  }
262
+ .adminhtml-straker-product-index p.inactive,
263
+ .adminhtml-straker-category-index p.inactive {
264
+ color: #888888;
265
+ text-decoration: underline;
266
+ }
267
  ol.wizard {
268
  margin-bottom: 30px;
269
  }
334
  /*
335
  Temp UI Updates : Yogi
336
  */
337
+ .straker-main-container,
338
+ .straker-main-container.border,
339
+ .store-select-container {
340
+ border: 1px solid #31BBEA;
341
+ padding: 20px;
342
+ overflow: hidden;
343
+ border-radius: 5px;
344
+ }
345
+ .straker-main-container .store-select-container {
346
+ border: 1px solid #B0EBFF;
347
+ }
348
+ .store-select-container .input-box {
349
+ margin-top: 10px;
350
+ }
351
+ .store-select-container {
352
+ color: #EB5E00;
353
+ }
354
+ .store-select-container label {
355
+ width: 130px;
356
+ text-align: left !important;
357
+ display: inline-block;
358
+ }
359
+ .straker-main-container h2 {
360
+ font-size: 18px;
361
+ }
362
+ .straker-main-container input.form-button {
363
+ padding: 5px 15px;
364
+ border-radius: 2px;
365
+ border: 1px solid #FF8E3C;
366
+ font-size: 13px;
367
+ color: #fff !important;
368
+ }
369
+ .straker-main-container label {
370
+ color: #565656;
371
+ font-size: 13px;
372
+ line-height: 26px;
373
+ }
374
+ .straker-main-container select.validate-select,
375
+ .store-select-container select.disabled {
376
+ border: 1px solid #ccc;
377
+ width: 258px;
378
+ height: 29px;
379
+ margin-top: 5px;
380
+ }
381
+ .store-select-container select.disabled {
382
+ border: 1px solid #E7E7E7;
383
+ }
384
+ .straker-main-container .col-left {
385
+ border-right: 1px solid #A4A4A4;
386
+ }
387
+ .straker-main-container .input-text {
388
+ border: 1px solid #ADADAD;
389
+ border-radius: 2px;
390
+ padding: 6px;
391
+ margin-bottom: 10px;
392
+ }
393
+ .straker-main-container h1 {
394
+ color: #595959;
395
+ font-size: 20px;
396
+ }
397
+ .straker-main-container h3,
398
+ .straker-main-container h2 {
399
+ color: #595959;
400
+ }
401
+ .straker-main-container p {
402
+ font-size: 20px;
403
+ font-size: 15px;
404
+ color: #8A8A8A;
405
+ }
406
+ .job-type-btn-wrap {
407
+ width: 410px;
408
+ margin-top: 20px;
409
+ overflow: hidden;
410
+ }
411
+ .job-type-btn-wrap a.job-type-btn {
412
+ color: #fff;
413
+ background: #02A3DB;
414
+ padding: 9px 12px;
415
+ overflow: hidden;
416
+ float: left;
417
+ display: block;
418
+ width: 130px;
419
+ text-align: center;
420
+ text-decoration: none;
421
+ margin-bottom: 10px;
422
+ margin-right: 15px;
423
+ border-radius: 3px;
424
+ font-weight: bold;
425
+ font-size: 14px;
426
+ }
427
+ .category-attr {
428
+ margin-top: 18px;
429
+ }
430
+ .category-attr input {
431
+ color: #595959;
432
+ font-size: 16px;
433
+ margin-bottom: 10px;
434
+ }
435
+ ol.wizard {
436
+ width: 700px;
437
+ }
438
+ .magento-banner-wrap {
439
+ overflow: hidden;
440
+ margin-bottom: 20px;
441
+ }
442
+ .destination-container label[for=store] {
443
+ padding-right: 15px;
444
+ }
445
+ .straker-store-settings-wrapper .straker-store-settings-row {
446
+ margin-bottom: 10px;
447
+ }
448
+ .straker-store-settings-wrapper .straker-store-settings-row > label {
449
+ display: inline-block;
450
+ width: 100px;
451
+ }
452
+ .straker-store-settings-wrapper .straker-store-settings-row > .empty-button {
453
+ display: inline-block;
454
+ }
skin/adminhtml/default/straker/css/straker.less CHANGED
@@ -286,6 +286,10 @@
286
  text-decoration: underline;
287
  }
288
  }
 
 
 
 
289
  }
290
 
291
  //Wizard progress bar
@@ -357,4 +361,126 @@ ol.wizard {
357
  bottom: -1.6em;
358
  }
359
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  }
286
  text-decoration: underline;
287
  }
288
  }
289
+ p.inactive{
290
+ color: #888888;
291
+ text-decoration: underline;
292
+ }
293
  }
294
 
295
  //Wizard progress bar
361
  bottom: -1.6em;
362
  }
363
  }
364
+ }
365
+
366
+ /*
367
+ Temp UI Updates : Yogi
368
+ */
369
+ .straker-main-container, .straker-main-container.border, .store-select-container {
370
+ border: 1px solid #31BBEA;
371
+ padding: 20px;
372
+ overflow: hidden;
373
+ border-radius: 5px;
374
+ }
375
+ .straker-main-container .store-select-container{
376
+ border: 1px solid #B0EBFF;
377
+ }
378
+ .store-select-container .input-box{
379
+ margin-top: 10px;
380
+ }
381
+ .store-select-container{
382
+ color: #EB5E00;
383
+ }
384
+ .store-select-container label{
385
+ width: 130px;
386
+ text-align: left !important;
387
+ display: inline-block;
388
+ }
389
+ .straker-main-container h2{
390
+ font-size: 18px;
391
+ }
392
+ .straker-main-container input.form-button{
393
+ padding: 5px 15px;
394
+ border-radius: 2px;
395
+ border: 1px solid #FF8E3C;
396
+ font-size: 13px;
397
+ color: #fff !important;
398
+ }
399
+ .straker-main-container label{
400
+ color: #565656;
401
+ font-size: 13px;
402
+ line-height: 26px;
403
+ }
404
+ .straker-main-container select.validate-select, .store-select-container select.disabled{
405
+ border: 1px solid #ccc;
406
+ width: 258px;
407
+ height: 29px;
408
+ margin-top: 5px;
409
+ }
410
+ .store-select-container select.disabled{
411
+ border: 1px solid #E7E7E7;
412
+ }
413
+ .straker-main-container .col-left{
414
+ border-right: 1px solid #A4A4A4;
415
+ }
416
+ .straker-main-container .input-text{
417
+ border: 1px solid #ADADAD;
418
+ border-radius: 2px;
419
+ padding: 6px;
420
+ margin-bottom: 10px;
421
+ }
422
+ .straker-main-container h1{
423
+ color: #595959;
424
+ font-size: 20px;
425
+ }
426
+ .straker-main-container h3, .straker-main-container h2{
427
+ color: #595959;
428
+ }
429
+ .straker-main-container p {
430
+ font-size: 20px;
431
+ font-size: 15px;
432
+ color: #8A8A8A;
433
+ }
434
+ .job-type-btn-wrap{
435
+ width: 410px;
436
+ margin-top: 20px;
437
+ overflow: hidden;
438
+ }
439
+ .job-type-btn-wrap a.job-type-btn {
440
+ color: #fff;
441
+ background: #02A3DB;
442
+ padding: 9px 12px;
443
+ overflow: hidden;
444
+ float: left;
445
+ display: block;
446
+ width: 130px;
447
+ text-align: center;
448
+ text-decoration: none;
449
+ margin-bottom: 10px;
450
+ margin-right: 15px;
451
+ border-radius: 3px;
452
+ font-weight: bold;
453
+ font-size: 14px;
454
+ }
455
+ .category-attr{
456
+ margin-top: 18px;
457
+ }
458
+ .category-attr input {
459
+ color: #595959;
460
+ font-size: 16px;
461
+ margin-bottom: 10px;
462
+ }
463
+ ol.wizard{
464
+ width: 700px;
465
+ }
466
+ .magento-banner-wrap{
467
+ overflow: hidden;
468
+ margin-bottom: 20px;
469
+ }
470
+ .destination-container label[for=store]{
471
+ padding-right: 15px;
472
+ }
473
+
474
+ //system config section
475
+ .straker-store-settings-wrapper{
476
+ .straker-store-settings-row{
477
+ margin-bottom: 10px;
478
+ > label{
479
+ display: inline-block;
480
+ width: 100px;
481
+ }
482
+ > .empty-button{
483
+ display: inline-block;
484
+ }
485
+ }
486
  }