eurotext_translationMANAGER - Version 3.2.16

Version Notes

# Installation
We STRONGLY recommend installing and testing the plugin in a test environment before going live. Please back up your database before installing.
Further information can be found at http://eurotext.screenstepslive.com/s/translationmanager

# Update
Only install once all ongoing projects have been completed / successfully imported.
We STRONGLY recommend installing and testing the update in a test environment before going live. Please back up your database before installing.
Further information can be found at http://eurotext.screenstepslive.com/s/translationmanager

# General terms & conditions for Eurotext AG software applications
http://eurotext.de/en/contact/terms-and-conditions/

Download this release

Release Info

Developer Eurotext AG
Extension eurotext_translationMANAGER
Version 3.2.16
Comparing to
See all releases


Code changes from version 3.2.14 to 3.2.16

Files changed (59) hide show
  1. app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Grid/Massaction.php +5 -5
  2. app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Main.php +1 -79
  3. app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Products.php +9 -9
  4. app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Products/CategoryTreeAjax.php +1 -0
  5. app/code/community/Eurotext/TranslationManager/Block/Status.php +11 -10
  6. app/code/community/Eurotext/TranslationManager/Helper/Data.php +9 -9
  7. app/code/community/Eurotext/TranslationManager/Helper/Eurotext.php +21 -22
  8. app/code/community/Eurotext/TranslationManager/Helper/Filesystem.php +10 -16
  9. app/code/community/Eurotext/TranslationManager/Model/EurotextLanguages.php +4 -4
  10. app/code/community/Eurotext/TranslationManager/Model/Export/Project.php +9 -10
  11. app/code/community/Eurotext/TranslationManager/Model/Export/Project/Attribute.php +16 -16
  12. app/code/community/Eurotext/TranslationManager/Model/Export/Project/Category.php +19 -17
  13. app/code/community/Eurotext/TranslationManager/Model/Export/Project/CmsBlock.php +15 -16
  14. app/code/community/Eurotext/TranslationManager/Model/Export/Project/CmsPage.php +20 -20
  15. app/code/community/Eurotext/TranslationManager/Model/Export/Project/CreateControlFile.php +25 -35
  16. app/code/community/Eurotext/TranslationManager/Model/Export/Project/EmailDatabaseTemplates.php +7 -7
  17. app/code/community/Eurotext/TranslationManager/Model/Export/Project/EmailFileTemplates.php +6 -6
  18. app/code/community/Eurotext/TranslationManager/Model/Export/Project/FtpUpload.php +12 -12
  19. app/code/community/Eurotext/TranslationManager/Model/Export/Project/LocaleCsvFiles.php +9 -8
  20. app/code/community/Eurotext/TranslationManager/Model/Export/Project/Product.php +41 -39
  21. app/code/community/Eurotext/TranslationManager/Model/Extractor.php +1 -1
  22. app/code/community/Eurotext/TranslationManager/Model/Import/Project.php +15 -27
  23. app/code/community/Eurotext/TranslationManager/Model/Import/Project/Attributes.php +8 -8
  24. app/code/community/Eurotext/TranslationManager/Model/Import/Project/Categories.php +5 -5
  25. app/code/community/Eurotext/TranslationManager/Model/Import/Project/CmsBlocks.php +6 -7
  26. app/code/community/Eurotext/TranslationManager/Model/Import/Project/CmsPages.php +7 -6
  27. app/code/community/Eurotext/TranslationManager/Model/Import/Project/EmailTemplates.php +2 -2
  28. app/code/community/Eurotext/TranslationManager/Model/Import/Project/LocaleCsvFiles.php +4 -5
  29. app/code/community/Eurotext/TranslationManager/Model/Import/Project/Product.php +22 -25
  30. app/code/community/Eurotext/TranslationManager/Model/Import/Queue.php +2 -1
  31. app/code/community/Eurotext/TranslationManager/Model/Import/Validator.php +2 -2
  32. app/code/community/Eurotext/TranslationManager/Model/Observer.php +8 -8
  33. app/code/community/Eurotext/TranslationManager/Model/ProductLoader.php +19 -2
  34. app/code/community/Eurotext/TranslationManager/Model/Project.php +1 -5
  35. app/code/community/Eurotext/TranslationManager/Model/Resource/Csv/Collection.php +3 -4
  36. app/code/community/Eurotext/TranslationManager/Model/Xml/Import/Cms/BlockReader.php +4 -5
  37. app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/.DS_Store +0 -0
  38. app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/Project/ExportController.php +6 -6
  39. app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/Project/ImportController.php +5 -7
  40. app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/ProjectController.php +34 -12
  41. app/code/community/Eurotext/TranslationManager/etc/config.xml +1 -1
  42. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/install-3.0.0.php +1 -1
  43. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-install-1.0.0.0.php +68 -68
  44. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-upgrade-1.0.0.5-1.0.0.6.php +7 -7
  45. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-upgrade-1.0.0.7-1.0.0.8.php +1 -1
  46. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.1.2.1-1.2.0.0.php +8 -8
  47. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.0-1.2.0.1.php +3 -3
  48. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.1-1.2.0.2.php +9 -9
  49. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.2-1.2.0.3.php +12 -12
  50. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.1-1.2.2.php +3 -3
  51. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.2-2.0.0.php +2 -2
  52. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-2.0.0-2.0.1.php +2 -2
  53. app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-2.0.1-2.0.2.php +2 -2
  54. app/code/community/Eurotext/Uploader/Block/Abstract.php +4 -4
  55. app/code/community/Eurotext/Uploader/Helper/File.php +0 -1
  56. app/code/community/Eurotext/Uploader/Model/Config/Abstract.php +2 -4
  57. app/design/adminhtml/base/default/template/eurotext/translationmanager/export/overview.phtml +2 -2
  58. app/design/adminhtml/base/default/template/eurotext/translationmanager/help.phtml +58 -24
  59. package.xml +5 -124
app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Grid/Massaction.php CHANGED
@@ -31,10 +31,10 @@ class Eurotext_TranslationManager_Block_Adminhtml_Eurotext_Project_Edit_Tab_Grid
31
  $this->getParentBlock()->getSelected()
32
  );
33
  if ($selected) {
34
- return join(',', $selected);
35
- } else {
36
- return '';
37
  }
 
 
38
  }
39
 
40
  /**
@@ -51,8 +51,8 @@ class Eurotext_TranslationManager_Block_Adminhtml_Eurotext_Project_Edit_Tab_Grid
51
  $selected = explode(',', $selected);
52
 
53
  return $selected;
54
- } else {
55
- return [];
56
  }
 
 
57
  }
58
  }
31
  $this->getParentBlock()->getSelected()
32
  );
33
  if ($selected) {
34
+ return implode(',', $selected);
 
 
35
  }
36
+
37
+ return '';
38
  }
39
 
40
  /**
51
  $selected = explode(',', $selected);
52
 
53
  return $selected;
 
 
54
  }
55
+
56
+ return [];
57
  }
58
  }
app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Main.php CHANGED
@@ -109,85 +109,7 @@ class Eurotext_TranslationManager_Block_Adminhtml_Eurotext_Project_Edit_Tab_Main
109
  $fieldset = $form->addFieldset(
110
  'exported_data',
111
  [
112
- 'legend' => $helper->__('Exported data'),
113
- ]
114
- );
115
-
116
- $fieldset->addField(
117
- 'comment',
118
- 'note',
119
- [
120
- 'text' => '<b>' . $helper->__('Only data is exported, which is not translated yet.') . '</b>',
121
- ]
122
- );
123
-
124
- $fieldset->addField('productmode_hidden', 'hidden', ['name' => 'productmode', 'value' => 0]);
125
- $fieldset->addField(
126
- 'productmode',
127
- 'checkbox',
128
- [
129
- 'name' => 'productmode',
130
- 'label' => $helper->__('Products'),
131
- 'value' => 1,
132
- 'checked' => $project->getProductmode(),
133
- 'disabled' => !$project->isEditable() ? 'disabled="disabled"' : '',
134
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
135
- ]
136
- );
137
-
138
- $fieldset->addField('categorymode_hidden', 'hidden', ['name' => 'categorymode', 'value' => 0]);
139
- $fieldset->addField(
140
- 'categorymode',
141
- 'checkbox',
142
- [
143
- 'name' => 'categorymode',
144
- 'label' => $helper->__('Categories'),
145
- 'value' => 1,
146
- 'checked' => $project->getCategorymode(),
147
- 'disabled' => !$project->isEditable() ? 'disabled="disabled"' : '',
148
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
149
- ]
150
- );
151
-
152
- $fieldset->addField('cmsmode_hidden', 'hidden', ['name' => 'cmsmode', 'value' => 0]);
153
- $fieldset->addField(
154
- 'cmsmode',
155
- 'checkbox',
156
- [
157
- 'name' => 'cmsmode',
158
- 'label' => $helper->__('CMS Pages and Blocks'),
159
- 'value' => 1,
160
- 'checked' => $project->getCmsmode(),
161
- 'disabled' => !$project->isEditable() ? 'disabled="disabled"' : '',
162
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
163
- ]
164
- );
165
-
166
- $fieldset->addField('templatemode_hidden', 'hidden', ['name' => 'templatemode', 'value' => 0]);
167
- $fieldset->addField(
168
- 'templatemode',
169
- 'checkbox',
170
- [
171
- 'name' => 'templatemode',
172
- 'label' => $helper->__('Email Templates'),
173
- 'value' => 1,
174
- 'checked' => $project->getTemplatemode(),
175
- 'disabled' => !$project->isEditable() ? 'disabled="disabled"' : '',
176
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
177
- ]
178
- );
179
-
180
- $fieldset->addField('langfilesmode_hidden', 'hidden', ['name' => 'langfilesmode', 'value' => 0]);
181
- $fieldset->addField(
182
- 'langfilesmode',
183
- 'checkbox',
184
- [
185
- 'name' => 'langfilesmode',
186
- 'label' => $helper->__('Translation files'),
187
- 'value' => 1,
188
- 'checked' => $project->getLangfilesmode(),
189
- 'disabled' => !$project->isEditable() ? 'disabled="disabled"' : '',
190
- 'onclick' => 'this.value = this.checked ? 1 : 0;',
191
  ]
192
  );
193
 
109
  $fieldset = $form->addFieldset(
110
  'exported_data',
111
  [
112
+ 'legend' => $helper->__('Export all data of the following selection'),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  ]
114
  );
115
 
app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Products.php CHANGED
@@ -303,17 +303,17 @@ class Eurotext_TranslationManager_Block_Adminhtml_Eurotext_Project_Edit_Tab_Prod
303
  if (!$category->getIsAnchor()) {
304
  $collection = $category->getProductCollection();
305
 
306
- return $collection;
307
- } else {
308
- $categoryCollection = Mage::getResourceModel('catalog/category_collection')
309
- ->addPathFilter("^{$category->getPath()}/[0-9]*$");
310
- $categories = $categoryCollection->getAllIds();
311
- $categories[] = $category->getId();
312
- $collection->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id')
313
- ->addAttributeToFilter('category_id', ['in' => $categories]);
314
-
315
  return $collection;
316
  }
 
 
 
 
 
 
 
 
 
317
  }
318
 
319
  return $collection;
303
  if (!$category->getIsAnchor()) {
304
  $collection = $category->getProductCollection();
305
 
 
 
 
 
 
 
 
 
 
306
  return $collection;
307
  }
308
+
309
+ $categoryCollection = Mage::getResourceModel('catalog/category_collection')
310
+ ->addPathFilter("^{$category->getPath()}/[0-9]*$");
311
+ $categories = $categoryCollection->getAllIds();
312
+ $categories[] = $category->getId();
313
+ $collection->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id')
314
+ ->addAttributeToFilter('category_id', ['in' => $categories]);
315
+
316
+ return $collection;
317
  }
318
 
319
  return $collection;
app/code/community/Eurotext/TranslationManager/Block/Adminhtml/Eurotext/Project/Edit/Tab/Products/CategoryTreeAjax.php CHANGED
@@ -12,6 +12,7 @@ class Eurotext_TranslationManager_Block_Adminhtml_Eurotext_Project_Edit_Tab_Prod
12
 
13
  protected function _getNodeJson($node, $level = 0)
14
  {
 
15
  $item = parent::_getNodeJson($node, $level);
16
  if (in_array($node->getId(), $this->getSelectedCategories())) {
17
  $item['checked'] = true;
12
 
13
  protected function _getNodeJson($node, $level = 0)
14
  {
15
+ /** @var $item string[] */
16
  $item = parent::_getNodeJson($node, $level);
17
  if (in_array($node->getId(), $this->getSelectedCategories())) {
18
  $item['checked'] = true;
app/code/community/Eurotext/TranslationManager/Block/Status.php CHANGED
@@ -65,7 +65,7 @@ class Eurotext_TranslationManager_Block_Status extends Mage_Adminhtml_Block_Widg
65
  }
66
 
67
  /**
68
- * @return string[]
69
  */
70
  private function getLanguagesInStores()
71
  {
@@ -96,22 +96,22 @@ class Eurotext_TranslationManager_Block_Status extends Mage_Adminhtml_Block_Widg
96
  'module_version' => [
97
  'name' => $this->__('Plugin version'),
98
  'value_now' => $this->configHelper->getModuleVersion(),
99
- 'value_required' => "&mdash;",
100
  ],
101
  'php_version' => [
102
  'name' => $this->__('PHP version'),
103
  'value_now' => PHP_VERSION,
104
- 'value_required' => "> 5.5.0",
105
  ],
106
  'ftp_extension' => [
107
  'name' => $this->__('FTP-Extension'),
108
- 'value_now' => extension_loaded('ftp') ? $this->__("Installed") : $this->__("Missing"),
109
- 'value_required' => $this->__("Installed"),
110
  ],
111
  'zip_extension' => [
112
  'name' => $this->__('ZIP-Extension'),
113
- 'value_now' => extension_loaded('zip') ? $this->__("Installed") : $this->__("Missing"),
114
- 'value_required' => $this->__("Installed"),
115
  ],
116
  'max_execution_time' => [
117
  'name' => $this->__("Value for 'max_execution_time'"),
@@ -221,7 +221,7 @@ class Eurotext_TranslationManager_Block_Status extends Mage_Adminhtml_Block_Widg
221
  );
222
  } else {
223
  $ftpMessage = $this->__(
224
- "Your Magento installation allows the translation of URLs of categories and products."
225
  );
226
  $fieldset->addField(
227
  'url_key_scope',
@@ -258,11 +258,12 @@ class Eurotext_TranslationManager_Block_Status extends Mage_Adminhtml_Block_Widg
258
 
259
  /**
260
  * @param string $dir
 
261
  */
262
  private function checkDirectory($dir)
263
  {
264
- if (!is_dir($dir)) {
265
- mkdir($dir, 0777, true);
266
  }
267
 
268
  return is_dir_writeable($dir);
65
  }
66
 
67
  /**
68
+ * @return string[][]
69
  */
70
  private function getLanguagesInStores()
71
  {
96
  'module_version' => [
97
  'name' => $this->__('Plugin version'),
98
  'value_now' => $this->configHelper->getModuleVersion(),
99
+ 'value_required' => '&mdash;',
100
  ],
101
  'php_version' => [
102
  'name' => $this->__('PHP version'),
103
  'value_now' => PHP_VERSION,
104
+ 'value_required' => '> 5.5.0',
105
  ],
106
  'ftp_extension' => [
107
  'name' => $this->__('FTP-Extension'),
108
+ 'value_now' => extension_loaded('ftp') ? $this->__('Installed') : $this->__('Missing'),
109
+ 'value_required' => $this->__('Installed'),
110
  ],
111
  'zip_extension' => [
112
  'name' => $this->__('ZIP-Extension'),
113
+ 'value_now' => extension_loaded('zip') ? $this->__('Installed') : $this->__('Missing'),
114
+ 'value_required' => $this->__('Installed'),
115
  ],
116
  'max_execution_time' => [
117
  'name' => $this->__("Value for 'max_execution_time'"),
221
  );
222
  } else {
223
  $ftpMessage = $this->__(
224
+ 'Your Magento installation allows the translation of URLs of categories and products.'
225
  );
226
  $fieldset->addField(
227
  'url_key_scope',
258
 
259
  /**
260
  * @param string $dir
261
+ * @return bool
262
  */
263
  private function checkDirectory($dir)
264
  {
265
+ if (!@mkdir($dir, 0777, true) && !is_dir($dir)) {
266
+ throw new Exception(sprintf('Directory %s could not be created.', $dir));
267
  }
268
 
269
  return is_dir_writeable($dir);
app/code/community/Eurotext/TranslationManager/Helper/Data.php CHANGED
@@ -5,27 +5,27 @@ class Eurotext_TranslationManager_Helper_Data extends Mage_Core_Helper_Abstract
5
  /**
6
  * @var string
7
  */
8
- private $helpUrl = "http://www.eurotext.de";
9
 
10
  /**
11
  * @var string
12
  */
13
- private $liveRegistrationEmail = "magento@eurotext.de";
14
 
15
  /**
16
  * @var string
17
  */
18
- private $liveRegistrationEmailName = "Eurotext Magento (Live)";
19
 
20
  /**
21
  * @var string
22
  */
23
- private $debugRegistrationEmail = "debug@eurotext.de";
24
 
25
  /**
26
  * @var string
27
  */
28
- private $debugRegistrationEmailName = "Eurotext Magento (Debug)";
29
 
30
  /**
31
  * @var Eurotext_TranslationManager_Helper_Config
@@ -92,14 +92,14 @@ class Eurotext_TranslationManager_Helper_Data extends Mage_Core_Helper_Abstract
92
  {
93
  $recipient = [];
94
  if ($this->configHelper->isDebugMode()) {
95
- $recipient["email"] = $this->debugRegistrationEmail;
96
- $recipient["name"] = $this->debugRegistrationEmailName;
97
 
98
  return $recipient;
99
  }
100
 
101
- $recipient["email"] = $this->liveRegistrationEmail;
102
- $recipient["name"] = $this->liveRegistrationEmailName;
103
 
104
  return $recipient;
105
  }
5
  /**
6
  * @var string
7
  */
8
+ private $helpUrl = 'http://www.eurotext.de';
9
 
10
  /**
11
  * @var string
12
  */
13
+ private $liveRegistrationEmail = 'magento@eurotext.de';
14
 
15
  /**
16
  * @var string
17
  */
18
+ private $liveRegistrationEmailName = 'Eurotext Magento (Live)';
19
 
20
  /**
21
  * @var string
22
  */
23
+ private $debugRegistrationEmail = 'debug@eurotext.de';
24
 
25
  /**
26
  * @var string
27
  */
28
+ private $debugRegistrationEmailName = 'Eurotext Magento (Debug)';
29
 
30
  /**
31
  * @var Eurotext_TranslationManager_Helper_Config
92
  {
93
  $recipient = [];
94
  if ($this->configHelper->isDebugMode()) {
95
+ $recipient['email'] = $this->debugRegistrationEmail;
96
+ $recipient['name'] = $this->debugRegistrationEmailName;
97
 
98
  return $recipient;
99
  }
100
 
101
+ $recipient['email'] = $this->liveRegistrationEmail;
102
+ $recipient['name'] = $this->liveRegistrationEmailName;
103
 
104
  return $recipient;
105
  }
app/code/community/Eurotext/TranslationManager/Helper/Eurotext.php CHANGED
@@ -10,9 +10,9 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
10
  $lastSep = strrpos($rpath, DIRECTORY_SEPARATOR);
11
  if ($lastSep >= 0) {
12
  return substr($rpath, 0, $lastSep);
13
- } else {
14
- return $path;
15
  }
 
 
16
  }
17
 
18
  // Extract directory-part of path
@@ -81,11 +81,10 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
81
  return false;
82
  }
83
 
84
- public function zipFolder($directory, $zipFile, $comment = "")
85
  {
86
-
87
  $helper = Mage::helper('eurotext_translationmanager');
88
- if (!class_exists("ZipArchive")) {
89
  $helper->log('ZipArchive Class does not exist!', Zend_Log::CRIT);
90
 
91
  return false;
@@ -96,7 +95,7 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
96
 
97
  $mode = file_exists($zipFile) ? ZipArchive::OVERWRITE : ZipArchive::CREATE;
98
 
99
- $zip = new ZipArchive;
100
  $zipOpeningResult = $zip->open($zipFile, $mode);
101
 
102
  if ($zipOpeningResult !== true) {
@@ -106,21 +105,20 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
106
  return false;
107
  }
108
 
109
- if ($comment != "") {
110
  $zip->setArchiveComment($comment);
111
  }
112
 
113
  foreach ($items as $item) {
114
  if ($item['full_path'] == $zipFile) {
115
- // Skip
116
- } else {
117
- $inZipPath = substr($item['full_path'], strlen($dirpath) + 1);
118
 
119
- if ($item['type'] == "dir") {
120
- $zip->addEmptyDir($inZipPath);
121
- } else {
122
- $zip->addFile($item['full_path'], $inZipPath);
123
- }
124
  }
125
  }
126
 
@@ -145,20 +143,21 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
145
  while (false !== ($item = readdir($dir))) {
146
  $full_path = $dirpath . DIRECTORY_SEPARATOR . $item;
147
  if (($item == ".") || ($item == "..")) {
148
- // Skip
149
- } elseif ((is_file($full_path)) && ($enumerateFiles)) {
 
150
  $rvItem = [];
151
  $rvItem['full_path'] = $full_path;
152
  $rvItem['name'] = $item;
153
- $rvItem['type'] = "file";
154
- array_push($result, $rvItem);
155
  } elseif (is_dir($full_path)) {
156
  if ($enumerateDirs) {
157
  $rvItem = [];
158
  $rvItem['full_path'] = $full_path;
159
  $rvItem['name'] = $item;
160
- $rvItem['type'] = "dir";
161
- array_push($result, $rvItem);
162
  }
163
 
164
  if ($recurse) {
@@ -178,7 +177,7 @@ class Eurotext_TranslationManager_Helper_Eurotext extends Mage_Core_Helper_Abstr
178
  }
179
 
180
  if ($sortResult) {
181
- usort($result, [$this, "compareFileItems"]);
182
  }
183
 
184
  return $result;
10
  $lastSep = strrpos($rpath, DIRECTORY_SEPARATOR);
11
  if ($lastSep >= 0) {
12
  return substr($rpath, 0, $lastSep);
 
 
13
  }
14
+
15
+ return $path;
16
  }
17
 
18
  // Extract directory-part of path
81
  return false;
82
  }
83
 
84
+ public function zipFolder($directory, $zipFile, $comment = '')
85
  {
 
86
  $helper = Mage::helper('eurotext_translationmanager');
87
+ if (!class_exists(ZipArchive::class)) {
88
  $helper->log('ZipArchive Class does not exist!', Zend_Log::CRIT);
89
 
90
  return false;
95
 
96
  $mode = file_exists($zipFile) ? ZipArchive::OVERWRITE : ZipArchive::CREATE;
97
 
98
+ $zip = new ZipArchive();
99
  $zipOpeningResult = $zip->open($zipFile, $mode);
100
 
101
  if ($zipOpeningResult !== true) {
105
  return false;
106
  }
107
 
108
+ if ($comment != '') {
109
  $zip->setArchiveComment($comment);
110
  }
111
 
112
  foreach ($items as $item) {
113
  if ($item['full_path'] == $zipFile) {
114
+ continue;
115
+ }
116
+ $inZipPath = substr($item['full_path'], strlen($dirpath) + 1);
117
 
118
+ if ($item['type'] == 'dir') {
119
+ $zip->addEmptyDir($inZipPath);
120
+ } else {
121
+ $zip->addFile($item['full_path'], $inZipPath);
 
122
  }
123
  }
124
 
143
  while (false !== ($item = readdir($dir))) {
144
  $full_path = $dirpath . DIRECTORY_SEPARATOR . $item;
145
  if (($item == ".") || ($item == "..")) {
146
+ continue;
147
+ }
148
+ if ($enumerateFiles && is_file($full_path)) {
149
  $rvItem = [];
150
  $rvItem['full_path'] = $full_path;
151
  $rvItem['name'] = $item;
152
+ $rvItem['type'] = 'file';
153
+ $result[] = $rvItem;
154
  } elseif (is_dir($full_path)) {
155
  if ($enumerateDirs) {
156
  $rvItem = [];
157
  $rvItem['full_path'] = $full_path;
158
  $rvItem['name'] = $item;
159
+ $rvItem['type'] = 'dir';
160
+ $result[] = $rvItem;
161
  }
162
 
163
  if ($recurse) {
177
  }
178
 
179
  if ($sortResult) {
180
+ usort($result, [$this, 'compareFileItems']);
181
  }
182
 
183
  return $result;
app/code/community/Eurotext/TranslationManager/Helper/Filesystem.php CHANGED
@@ -11,10 +11,8 @@ class Eurotext_TranslationManager_Helper_Filesystem
11
  {
12
  $xmlDir = $this->getExportXMLPath($project);
13
  $xmlDir .= DS . $subdir;
14
- if (!is_dir($xmlDir)) {
15
- mkdir($xmlDir, 0777, true);
16
-
17
- return $xmlDir;
18
  }
19
 
20
  return $xmlDir;
@@ -39,7 +37,7 @@ class Eurotext_TranslationManager_Helper_Filesystem
39
  */
40
  private function createHtaccessFile($dir)
41
  {
42
- $htaccessFilename = $dir . DS . ".htaccess";
43
  if (!is_file($htaccessFilename)) {
44
  file_put_contents($htaccessFilename, "# Eurotext Export folder\nOrder Deny,Allow\nDeny From All");
45
  }
@@ -53,10 +51,8 @@ class Eurotext_TranslationManager_Helper_Filesystem
53
  private function createProjectExportDirectory(Eurotext_TranslationManager_Model_Project $project, $dir)
54
  {
55
  $dir .= DS . "projects/{$project->getId()}/export";
56
- if (!is_dir($dir)) {
57
- mkdir($dir, 0777, true);
58
-
59
- return $dir;
60
  }
61
 
62
  return $dir;
@@ -67,12 +63,10 @@ class Eurotext_TranslationManager_Helper_Filesystem
67
  */
68
  private function tryCreateEurotextVarDirectory($dir)
69
  {
70
- if (!is_dir($dir)) {
71
- if (!mkdir($dir, 0777, true)) {
72
- Mage::helper('eurotext_translationmanager')
73
- ->log('Working directory could not be created in ' . Mage::getBaseDir('var'), Zend_Log::CRIT);
74
- throw new Magento_Exception('Eurotext working directory could not be created.');
75
- }
76
  }
77
  }
78
 
@@ -82,7 +76,7 @@ class Eurotext_TranslationManager_Helper_Filesystem
82
  */
83
  public function getFilenameSafeString($filename)
84
  {
85
- $filename = trim(strtolower($filename));
86
  $filename = preg_replace('#[^a-z0-9-_.]#', '-', $filename);
87
 
88
  do {
11
  {
12
  $xmlDir = $this->getExportXMLPath($project);
13
  $xmlDir .= DS . $subdir;
14
+ if (!@mkdir($xmlDir, 0777, true) && !is_dir($xmlDir)) {
15
+ throw new Exception(sprintf('Directory %s could not be created.', $xmlDir));
 
 
16
  }
17
 
18
  return $xmlDir;
37
  */
38
  private function createHtaccessFile($dir)
39
  {
40
+ $htaccessFilename = $dir . DS . '.htaccess';
41
  if (!is_file($htaccessFilename)) {
42
  file_put_contents($htaccessFilename, "# Eurotext Export folder\nOrder Deny,Allow\nDeny From All");
43
  }
51
  private function createProjectExportDirectory(Eurotext_TranslationManager_Model_Project $project, $dir)
52
  {
53
  $dir .= DS . "projects/{$project->getId()}/export";
54
+ if (!@mkdir($dir, 0777, true) && !is_dir($dir)) {
55
+ throw new Exception(sprintf('Directory %s could not be created.', $dir));
 
 
56
  }
57
 
58
  return $dir;
63
  */
64
  private function tryCreateEurotextVarDirectory($dir)
65
  {
66
+ if (!@mkdir($dir, 0777, true) && !is_dir($dir)) {
67
+ Mage::helper('eurotext_translationmanager')
68
+ ->log('Working directory could not be created in ' . Mage::getBaseDir('var'), Zend_Log::CRIT);
69
+ throw new Magento_Exception('Eurotext working directory could not be created.');
 
 
70
  }
71
  }
72
 
76
  */
77
  public function getFilenameSafeString($filename)
78
  {
79
+ $filename = strtolower(trim($filename));
80
  $filename = preg_replace('#[^a-z0-9-_.]#', '-', $filename);
81
 
82
  do {
app/code/community/Eurotext/TranslationManager/Model/EurotextLanguages.php CHANGED
@@ -122,8 +122,8 @@ class Eurotext_TranslationManager_Model_EurotextLanguages
122
 
123
  return [
124
  'locale' => $locale,
125
- 'locale_eurotext' => "-",
126
- 'lang_name' => Mage::helper('eurotext_translationmanager')->__("Unsupported language"),
127
  'supported' => false,
128
  ];
129
  }
@@ -138,8 +138,8 @@ class Eurotext_TranslationManager_Model_EurotextLanguages
138
 
139
  return [
140
  'locale' => $locale,
141
- 'locale_eurotext' => "-",
142
- 'lang_name' => Mage::helper('eurotext_translationmanager')->__("Unsupported language"),
143
  'supported' => false,
144
  ];
145
  }
122
 
123
  return [
124
  'locale' => $locale,
125
+ 'locale_eurotext' => '-',
126
+ 'lang_name' => Mage::helper('eurotext_translationmanager')->__('Unsupported language'),
127
  'supported' => false,
128
  ];
129
  }
138
 
139
  return [
140
  'locale' => $locale,
141
+ 'locale_eurotext' => '-',
142
+ 'lang_name' => Mage::helper('eurotext_translationmanager')->__('Unsupported language'),
143
  'supported' => false,
144
  ];
145
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project.php CHANGED
@@ -63,7 +63,7 @@ class Eurotext_TranslationManager_Model_Export_Project
63
  ->validateFtpConnection();
64
  $this->setDataOnStatusBlock(
65
  $block,
66
- ['offset' => 1, 'step' => self::STEP_BUILD_LANGXML, 'status_msg' => '']
67
  );
68
  } elseif ($step == self::STEP_BUILD_LANGXML) {
69
  $rvSub = $this->ajaxexportAction_BuildLangXML($project, $offset);
@@ -92,18 +92,18 @@ class Eurotext_TranslationManager_Model_Export_Project
92
  } elseif ($step == self::STEP_GENERATE_CONTROL_FILE) {
93
  $this->ajaxexportAction_GenerateControlFile($project);
94
  $block->setStep(self::STEP_COMPRESS_FILES);
95
- $block->setStatusMsg($this->helper->__("Generating ZIP archive"));
96
  } elseif ($step == self::STEP_COMPRESS_FILES) {
97
  $this->ajaxexportAction_CompressFiles($project);
98
  $block->setStep(self::STEP_TRANSMIT_ARCHIVE);
99
- $block->setStatusMsg($this->helper->__("Sending data"));
100
  } elseif ($step == self::STEP_TRANSMIT_ARCHIVE) {
101
  $this->ajaxexportAction_TransmitArchive($project);
102
  $block->setStep(self::STEP_DONE);
103
- $block->setStatusMsg($this->helper->__("Data sent."));
104
  } else {
105
  $block->setStep(self::STEP_DONE);
106
- $block->setStatusMsg($this->helper->__("Export done."));
107
  $block->setStatusCode('success');
108
  $block->setFinished(true);
109
  }
@@ -211,13 +211,12 @@ class Eurotext_TranslationManager_Model_Export_Project
211
 
212
  /**
213
  * @param Eurotext_TranslationManager_Model_Project $project
214
- * @return mixed[]
215
  */
216
  private function ajaxexportAction_CompressFiles(Eurotext_TranslationManager_Model_Project $project)
217
  {
218
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getExportXMLPath($project);
219
  $this->getEurotextHelper()
220
- ->zipFolder($xmlDir, $this->getProjectZipFilename($project), "Created by Eurotext Magento Module");
221
  }
222
 
223
  /**
@@ -228,7 +227,7 @@ class Eurotext_TranslationManager_Model_Export_Project
228
  {
229
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getExportXMLPath($project);
230
 
231
- if ($project->getZipFilename() != "") {
232
  return $xmlDir . DS . $project->getZipFilename();
233
  }
234
 
@@ -273,12 +272,12 @@ class Eurotext_TranslationManager_Model_Export_Project
273
  private function generateZipFilename(Eurotext_TranslationManager_Model_Project $project)
274
  {
275
  $filename = sprintf(
276
- "ET-%s-%s-%s.zip",
277
  Mage::helper('eurotext_translationmanager/filesystem')
278
  ->getFilenameSafeString($this->configHelper->getShopname()),
279
  Mage::helper('eurotext_translationmanager/filesystem')
280
  ->getFilenameSafeString($this->configHelper->getCustomerId()),
281
- date("Y-m-d_H-i-s_T")
282
  );
283
 
284
  $project->setZipFilename($filename);
63
  ->validateFtpConnection();
64
  $this->setDataOnStatusBlock(
65
  $block,
66
+ ['offset' => 0, 'step' => self::STEP_BUILD_LANGXML, 'status_msg' => '']
67
  );
68
  } elseif ($step == self::STEP_BUILD_LANGXML) {
69
  $rvSub = $this->ajaxexportAction_BuildLangXML($project, $offset);
92
  } elseif ($step == self::STEP_GENERATE_CONTROL_FILE) {
93
  $this->ajaxexportAction_GenerateControlFile($project);
94
  $block->setStep(self::STEP_COMPRESS_FILES);
95
+ $block->setStatusMsg($this->helper->__('Generating ZIP archive'));
96
  } elseif ($step == self::STEP_COMPRESS_FILES) {
97
  $this->ajaxexportAction_CompressFiles($project);
98
  $block->setStep(self::STEP_TRANSMIT_ARCHIVE);
99
+ $block->setStatusMsg($this->helper->__('Sending data'));
100
  } elseif ($step == self::STEP_TRANSMIT_ARCHIVE) {
101
  $this->ajaxexportAction_TransmitArchive($project);
102
  $block->setStep(self::STEP_DONE);
103
+ $block->setStatusMsg($this->helper->__('Data sent.'));
104
  } else {
105
  $block->setStep(self::STEP_DONE);
106
+ $block->setStatusMsg($this->helper->__('Export done.'));
107
  $block->setStatusCode('success');
108
  $block->setFinished(true);
109
  }
211
 
212
  /**
213
  * @param Eurotext_TranslationManager_Model_Project $project
 
214
  */
215
  private function ajaxexportAction_CompressFiles(Eurotext_TranslationManager_Model_Project $project)
216
  {
217
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getExportXMLPath($project);
218
  $this->getEurotextHelper()
219
+ ->zipFolder($xmlDir, $this->getProjectZipFilename($project), 'Created by Eurotext Magento Module');
220
  }
221
 
222
  /**
227
  {
228
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getExportXMLPath($project);
229
 
230
+ if ($project->getZipFilename() != '') {
231
  return $xmlDir . DS . $project->getZipFilename();
232
  }
233
 
272
  private function generateZipFilename(Eurotext_TranslationManager_Model_Project $project)
273
  {
274
  $filename = sprintf(
275
+ 'ET-%s-%s-%s.zip',
276
  Mage::helper('eurotext_translationmanager/filesystem')
277
  ->getFilenameSafeString($this->configHelper->getShopname()),
278
  Mage::helper('eurotext_translationmanager/filesystem')
279
  ->getFilenameSafeString($this->configHelper->getCustomerId()),
280
+ date('Y-m-d_H-i-s_T')
281
  );
282
 
283
  $project->setZipFilename($filename);
app/code/community/Eurotext/TranslationManager/Model/Export/Project/Attribute.php CHANGED
@@ -19,7 +19,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Attribute
19
  $this->doc = new DOMDocument('1.0', 'UTF-8');
20
  $this->doc->formatOutput = true;
21
 
22
- $this->nodeAttributes = $this->doc->createElement("attributes");
23
  $this->doc->appendChild($this->nodeAttributes);
24
  }
25
 
@@ -39,12 +39,12 @@ class Eurotext_TranslationManager_Model_Export_Project_Attribute
39
  ->addFieldToFilter('is_user_defined', 1);
40
 
41
  foreach ($attributes as $a) {
42
- $comment = $a->getFrontendLabel() == $a->getStoreLabel() ? "(default label)" : "(src-storeview label)";
43
 
44
- $nodeAttribute = $this->doc->createElement("attribute");
45
  $this->nodeAttributes->appendChild($nodeAttribute);
46
 
47
- $optionId = $this->doc->createAttribute("id");
48
  $optionId->value = $a->getId();
49
  $nodeAttribute->appendChild($optionId);
50
 
@@ -52,12 +52,12 @@ class Eurotext_TranslationManager_Model_Export_Project_Attribute
52
  $nodeAttributeComment = $this->doc->createComment($comment);
53
  $nodeAttribute->appendChild($nodeAttributeComment);
54
 
55
- $nodeName = $this->doc->createElement("AttributeName");
56
  Mage::helper('eurotext_translationmanager/xml')
57
  ->appendTextChild($this->doc, $nodeName, $a->getStoreLabel());
58
 
59
- $attrTranslate = $this->doc->createAttribute("translate");
60
- $attrTranslate->value = "1";
61
  $nodeName->appendChild($attrTranslate);
62
 
63
  $nodeAttribute->appendChild($nodeName);
@@ -71,30 +71,30 @@ class Eurotext_TranslationManager_Model_Export_Project_Attribute
71
  $optionCollection->addOrder('sort_order ASC, main_table.option_id', 'ASC');
72
 
73
  if ($optionCollection->count()) {
74
- $nodeOptions = $this->doc->createElement("options");
75
  $nodeAttribute->appendChild($nodeOptions);
76
  foreach ($optionCollection as $optionValue) {
77
  $defaultValue = $optionValue->getValue();
78
  $storeValue = $optionValue->getStoreValue();
79
 
80
- $nodeOption = $this->doc->createElement("option");
81
  $nodeOptions->appendChild($nodeOption);
82
 
83
- $optionId = $this->doc->createAttribute("id");
84
  $optionId->value = $optionValue->getOptionId();
85
  $nodeOption->appendChild($optionId);
86
 
87
- $optionComment = empty($storeValue) || $defaultValue == $storeValue ? "(has default label)" : "(has src-storeview label)";
88
 
89
  $nodeAttributeOptionComment = $this->doc->createComment($optionComment);
90
  $nodeOption->appendChild($nodeAttributeOptionComment);
91
 
92
- $nodeName = $this->doc->createElement("OptionName");
93
  Mage::helper('eurotext_translationmanager/xml')
94
  ->appendTextChild($this->doc, $nodeName, $storeValue ?: $defaultValue);
95
 
96
- $attrTranslate = $this->doc->createAttribute("translate");
97
- $attrTranslate->value = "1";
98
  $nodeName->appendChild($attrTranslate);
99
 
100
  $nodeOption->appendChild($nodeName);
@@ -109,13 +109,13 @@ class Eurotext_TranslationManager_Model_Export_Project_Attribute
109
  $subdir
110
  );
111
 
112
- $xml_filename = $xmlDir . DS . "attributes.xml";
113
 
114
  $this->doc->save($xml_filename);
115
  }
116
 
117
  return [
118
- 'status_msg' => Mage::helper('eurotext_translationmanager')->__("Exported attributes."),
119
  'step' => ProjectExporter::STEP_GENERATE_CONTROL_FILE,
120
  'offset' => 1,
121
  ];
19
  $this->doc = new DOMDocument('1.0', 'UTF-8');
20
  $this->doc->formatOutput = true;
21
 
22
+ $this->nodeAttributes = $this->doc->createElement('attributes');
23
  $this->doc->appendChild($this->nodeAttributes);
24
  }
25
 
39
  ->addFieldToFilter('is_user_defined', 1);
40
 
41
  foreach ($attributes as $a) {
42
+ $comment = $a->getFrontendLabel() == $a->getStoreLabel() ? '(default label)' : '(src-storeview label)';
43
 
44
+ $nodeAttribute = $this->doc->createElement('attribute');
45
  $this->nodeAttributes->appendChild($nodeAttribute);
46
 
47
+ $optionId = $this->doc->createAttribute('id');
48
  $optionId->value = $a->getId();
49
  $nodeAttribute->appendChild($optionId);
50
 
52
  $nodeAttributeComment = $this->doc->createComment($comment);
53
  $nodeAttribute->appendChild($nodeAttributeComment);
54
 
55
+ $nodeName = $this->doc->createElement('AttributeName');
56
  Mage::helper('eurotext_translationmanager/xml')
57
  ->appendTextChild($this->doc, $nodeName, $a->getStoreLabel());
58
 
59
+ $attrTranslate = $this->doc->createAttribute('translate');
60
+ $attrTranslate->value = '1';
61
  $nodeName->appendChild($attrTranslate);
62
 
63
  $nodeAttribute->appendChild($nodeName);
71
  $optionCollection->addOrder('sort_order ASC, main_table.option_id', 'ASC');
72
 
73
  if ($optionCollection->count()) {
74
+ $nodeOptions = $this->doc->createElement('options');
75
  $nodeAttribute->appendChild($nodeOptions);
76
  foreach ($optionCollection as $optionValue) {
77
  $defaultValue = $optionValue->getValue();
78
  $storeValue = $optionValue->getStoreValue();
79
 
80
+ $nodeOption = $this->doc->createElement('option');
81
  $nodeOptions->appendChild($nodeOption);
82
 
83
+ $optionId = $this->doc->createAttribute('id');
84
  $optionId->value = $optionValue->getOptionId();
85
  $nodeOption->appendChild($optionId);
86
 
87
+ $optionComment = empty($storeValue) || $defaultValue == $storeValue ? '(has default label)' : '(has src-storeview label)';
88
 
89
  $nodeAttributeOptionComment = $this->doc->createComment($optionComment);
90
  $nodeOption->appendChild($nodeAttributeOptionComment);
91
 
92
+ $nodeName = $this->doc->createElement('OptionName');
93
  Mage::helper('eurotext_translationmanager/xml')
94
  ->appendTextChild($this->doc, $nodeName, $storeValue ?: $defaultValue);
95
 
96
+ $attrTranslate = $this->doc->createAttribute('translate');
97
+ $attrTranslate->value = '1';
98
  $nodeName->appendChild($attrTranslate);
99
 
100
  $nodeOption->appendChild($nodeName);
109
  $subdir
110
  );
111
 
112
+ $xml_filename = $xmlDir . DS . 'attributes.xml';
113
 
114
  $this->doc->save($xml_filename);
115
  }
116
 
117
  return [
118
+ 'status_msg' => Mage::helper('eurotext_translationmanager')->__('Exported attributes.'),
119
  'step' => ProjectExporter::STEP_GENERATE_CONTROL_FILE,
120
  'offset' => 1,
121
  ];
app/code/community/Eurotext/TranslationManager/Model/Export/Project/Category.php CHANGED
@@ -66,23 +66,23 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
66
  $categoryDstCollection->addIdFilter($project->getCategories());
67
  }
68
 
69
- if ((!count($project->getCategories()) && !$project->isExportingAllCategories()) ||
70
- $page > $categorySrcCollection->getLastPageNumber()
71
  ) {
72
  $emulator->stopEnvironmentEmulation($emulation);
73
 
74
  return [
75
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_CMSPAGES,
76
  'offset' => 1,
77
- 'status_msg' => $this->helper->__("Exported categories."),
78
  ];
79
  }
80
 
81
- $cats = $this->doc->createElement("categories");
82
  $this->doc->appendChild($cats);
83
 
84
  $statusMessage = sprintf(
85
- Mage::helper('eurotext_translationmanager')->__("Batch %s / %s Categories:"),
86
  $page,
87
  $categorySrcCollection->getLastPageNumber()
88
  );
@@ -94,7 +94,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
94
 
95
  $statusMessage .= "\n<br />- " . $catSrc->getName();
96
 
97
- $catNode = $this->doc->createElement("category");
98
 
99
  $this->createDefaultAttributeNodes($catNode, $catDst, $catSrc, $manualSelected);
100
  $this->createCustomCategoryAttributeNodes($catNode, $catDst, $catSrc, $manualSelected);
@@ -114,7 +114,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
114
  }
115
  }
116
 
117
- if($cats->hasChildNodes()){
118
 
119
  $subdir = 'categories';
120
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getXmlSubdirectoryAndMakeSureItExists(
@@ -122,7 +122,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
122
  $subdir
123
  );
124
 
125
- $xmlFilename = $xmlDir . DS . "cat" . $page . ".xml";
126
  $this->doc->save($xmlFilename);
127
  }
128
  $emulator->stopEnvironmentEmulation($emulation);
@@ -162,9 +162,9 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
162
  * @param DOMElement $catNode
163
  * @param Mage_Catalog_Model_Category $catSrc
164
  */
165
- private function createIdNode($catNode,$catSrc)
166
  {
167
- $nodeId = $this->doc->createElement("Id");
168
  $nodeId->appendChild($this->doc->createTextNode($catSrc->getId()));
169
 
170
  $firstChildNode = $catNode->childNodes->item(0);
@@ -177,7 +177,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
177
  */
178
  private function createUrlNode($catNode, $catSrc)
179
  {
180
- $nodeUrl = $this->doc->createElement("Url");
181
  $nodeUrl->appendChild($this->doc->createTextNode($catSrc->getUrl()));
182
 
183
  $secondChildNode = $catNode->childNodes->item(1);
@@ -200,7 +200,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
200
  $valueSrc = $catSrc->getDataUsingMethod($attr);
201
  $valueDst = $catDst->getDataUsingMethod($attr);
202
 
203
- if ($valueSrc != "" && ($valueSrc == $valueDst || $valueDst == "" || $manualSelected)) {
204
  $item = $this->doc->createElement($nodeName);
205
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild($this->doc, $item, $valueSrc);
206
  $catNode->appendChild($item);
@@ -210,7 +210,9 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
210
 
211
  /**
212
  * @param DOMElement $catNode
 
213
  * @param Mage_Catalog_Model_Category $catSrc
 
214
  */
215
  private function createCustomCategoryAttributeNodes(
216
  DOMElement $catNode,
@@ -227,7 +229,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
227
  $valueSrc = $catSrc->getDataUsingMethod($customCategoryAttribute);
228
  $valueDst = $catDst->getDataUsingMethod($customCategoryAttribute);
229
 
230
- if ($valueSrc != "" && ($valueSrc == $valueDst || $valueDst == "" || $manualSelected)) {
231
  Mage::helper('eurotext_translationmanager/xml')->appendTextNode(
232
  $this->doc,
233
  (string)$customCategoryAttribute,
@@ -237,7 +239,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
237
  }
238
  }
239
 
240
- if($nodeCustomCategoryAttributes->hasChildNodes()){
241
  $catNode->appendChild($nodeCustomCategoryAttributes);
242
  }
243
  }
@@ -256,8 +258,8 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
256
  ) {
257
  $srcUrlKey = $catSrc->getUrlKey();
258
  $dstUrlKey = $catDst->getUrlKey();
259
- if ($srcUrlKey != "" && (($srcUrlKey == $dstUrlKey) || ($dstUrlKey == "") || ($manualSelected))) {
260
- $item = $this->doc->createElement("UrlKey");
261
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild(
262
  $this->doc,
263
  $item,
@@ -283,7 +285,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Category
283
  $valueSrc = $catSrc->getDataUsingMethod($attr);
284
  $valueDst = $catDst->getDataUsingMethod($attr);
285
 
286
- if ($valueSrc != "" && ($valueSrc == $valueDst || $valueDst == "" || $manualSelected)) {
287
  $item = $this->doc->createElement($nodeName);
288
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild($this->doc, $item, $valueSrc);
289
  $catNode->appendChild($item);
66
  $categoryDstCollection->addIdFilter($project->getCategories());
67
  }
68
 
69
+ if ($page > $categorySrcCollection->getLastPageNumber() ||
70
+ (!count($project->getCategories()) && !$project->isExportingAllCategories())
71
  ) {
72
  $emulator->stopEnvironmentEmulation($emulation);
73
 
74
  return [
75
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_CMSPAGES,
76
  'offset' => 1,
77
+ 'status_msg' => $this->helper->__('Exported categories.'),
78
  ];
79
  }
80
 
81
+ $cats = $this->doc->createElement('categories');
82
  $this->doc->appendChild($cats);
83
 
84
  $statusMessage = sprintf(
85
+ Mage::helper('eurotext_translationmanager')->__('Batch %s / %s Categories:'),
86
  $page,
87
  $categorySrcCollection->getLastPageNumber()
88
  );
94
 
95
  $statusMessage .= "\n<br />- " . $catSrc->getName();
96
 
97
+ $catNode = $this->doc->createElement('category');
98
 
99
  $this->createDefaultAttributeNodes($catNode, $catDst, $catSrc, $manualSelected);
100
  $this->createCustomCategoryAttributeNodes($catNode, $catDst, $catSrc, $manualSelected);
114
  }
115
  }
116
 
117
+ if ($cats->hasChildNodes()) {
118
 
119
  $subdir = 'categories';
120
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')->getXmlSubdirectoryAndMakeSureItExists(
122
  $subdir
123
  );
124
 
125
+ $xmlFilename = $xmlDir . DS . 'cat' . $page . '.xml';
126
  $this->doc->save($xmlFilename);
127
  }
128
  $emulator->stopEnvironmentEmulation($emulation);
162
  * @param DOMElement $catNode
163
  * @param Mage_Catalog_Model_Category $catSrc
164
  */
165
+ private function createIdNode($catNode, $catSrc)
166
  {
167
+ $nodeId = $this->doc->createElement('Id');
168
  $nodeId->appendChild($this->doc->createTextNode($catSrc->getId()));
169
 
170
  $firstChildNode = $catNode->childNodes->item(0);
177
  */
178
  private function createUrlNode($catNode, $catSrc)
179
  {
180
+ $nodeUrl = $this->doc->createElement('Url');
181
  $nodeUrl->appendChild($this->doc->createTextNode($catSrc->getUrl()));
182
 
183
  $secondChildNode = $catNode->childNodes->item(1);
200
  $valueSrc = $catSrc->getDataUsingMethod($attr);
201
  $valueDst = $catDst->getDataUsingMethod($attr);
202
 
203
+ if ($valueSrc != '' && ($valueSrc == $valueDst || $valueDst == '' || $manualSelected)) {
204
  $item = $this->doc->createElement($nodeName);
205
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild($this->doc, $item, $valueSrc);
206
  $catNode->appendChild($item);
210
 
211
  /**
212
  * @param DOMElement $catNode
213
+ * @param Mage_Catalog_Model_Category $catDst
214
  * @param Mage_Catalog_Model_Category $catSrc
215
+ * @param bool $manualSelected
216
  */
217
  private function createCustomCategoryAttributeNodes(
218
  DOMElement $catNode,
229
  $valueSrc = $catSrc->getDataUsingMethod($customCategoryAttribute);
230
  $valueDst = $catDst->getDataUsingMethod($customCategoryAttribute);
231
 
232
+ if ($valueSrc != '' && ($valueSrc == $valueDst || $valueDst == '' || $manualSelected)) {
233
  Mage::helper('eurotext_translationmanager/xml')->appendTextNode(
234
  $this->doc,
235
  (string)$customCategoryAttribute,
239
  }
240
  }
241
 
242
+ if ($nodeCustomCategoryAttributes->hasChildNodes()) {
243
  $catNode->appendChild($nodeCustomCategoryAttributes);
244
  }
245
  }
258
  ) {
259
  $srcUrlKey = $catSrc->getUrlKey();
260
  $dstUrlKey = $catDst->getUrlKey();
261
+ if ($srcUrlKey != '' && (($srcUrlKey == $dstUrlKey) || ($dstUrlKey == '') || $manualSelected)) {
262
+ $item = $this->doc->createElement('UrlKey');
263
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild(
264
  $this->doc,
265
  $item,
285
  $valueSrc = $catSrc->getDataUsingMethod($attr);
286
  $valueDst = $catDst->getDataUsingMethod($attr);
287
 
288
+ if ($valueSrc != '' && ($valueSrc == $valueDst || $valueDst == '' || $manualSelected)) {
289
  $item = $this->doc->createElement($nodeName);
290
  Mage::helper('eurotext_translationmanager/xml')->appendTextChild($this->doc, $item, $valueSrc);
291
  $catNode->appendChild($item);
app/code/community/Eurotext/TranslationManager/Model/Export/Project/CmsBlock.php CHANGED
@@ -59,18 +59,18 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsBlock
59
  $manualSelected = true;
60
  }
61
 
62
- if ((!$project->isExportingAllCmsContent() && !count($project->getBlocks()))
63
- || $offset > $blockSrcCollection->getLastPageNumber()
64
  ) {
65
  return [
66
- 'status_msg' => $helper->__("Exported CMS Blocks."),
67
  'step' => ProjectExporter::STEP_COLLECT_TEMPLATES_FILES,
68
  'offset' => 0,
69
  ];
70
  }
71
 
72
  $statusMessage = sprintf(
73
- Mage::helper('eurotext_translationmanager')->__("Batch %s / %s CMS Blocks:"),
74
  $offset + 1,
75
  $blockSrcCollection->getLastPageNumber()
76
  );
@@ -109,16 +109,15 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsBlock
109
  }
110
 
111
  return [
112
- "status_msg" => $statusMessage,
113
- "offset" => ($offset + 1),
114
- "step" => ProjectExporter::STEP_COLLECT_CMSBLOCKS,
115
  ];
116
  }
117
 
118
  /**
119
  * @param string $nodeName
120
  * @param string $value
121
- * @return DOMElement
122
  */
123
  private function addNodeToBlockNode($nodeName, $value)
124
  {
@@ -138,7 +137,7 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsBlock
138
  {
139
  $srcValue = $blockSrc->getDataUsingMethod($attr);
140
  $dstValue = $blockDst->getDataUsingMethod($attr);
141
- if ($srcValue != "" && (($srcValue == $dstValue) || ($dstValue == "") || ($manualSelected))) {
142
  $item = $this->doc->createElement($nodeName);
143
  Mage::helper('eurotext_translationmanager/xml')
144
  ->appendTextChild($this->doc, $item, $srcValue);
@@ -172,10 +171,10 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsBlock
172
  */
173
  private function addBasicInformation(Eurotext_TranslationManager_Model_Project $project, $blockSrc, $blockDst)
174
  {
175
- $this->addNodeToBlockNode("Id", $blockSrc->getId());
176
- $this->addNodeToBlockNode("StoreviewSrc", $project->getStoreviewSrc());
177
- $this->addNodeToBlockNode("StoreviewDst", $project->getStoreviewDst());
178
- $this->addNodeToBlockNode("PageIdDst", $blockDst->getId() != $blockSrc->getId() ? $blockDst->getId() : -1);
179
  }
180
 
181
  /**
@@ -191,11 +190,11 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsBlock
191
 
192
  private function createNewDOMDocument()
193
  {
194
- $this->doc = new DOMDocument('1.0', 'UTF-8');
195
  $this->doc->formatOutput = true;
196
- $cmsSites = $this->doc->createElement("cms-sites");
197
  $this->doc->appendChild($cmsSites);
198
- $this->cmsSiteNode = $this->doc->createElement("cms-site");
199
  $cmsSites->appendChild($this->cmsSiteNode);
200
  }
201
  }
59
  $manualSelected = true;
60
  }
61
 
62
+ if ($offset > $blockSrcCollection->getLastPageNumber() ||
63
+ (!$project->isExportingAllCmsContent() && !count($project->getBlocks()))
64
  ) {
65
  return [
66
+ 'status_msg' => $helper->__('Exported CMS Blocks.'),
67
  'step' => ProjectExporter::STEP_COLLECT_TEMPLATES_FILES,
68
  'offset' => 0,
69
  ];
70
  }
71
 
72
  $statusMessage = sprintf(
73
+ Mage::helper('eurotext_translationmanager')->__('Batch %s / %s CMS Blocks:'),
74
  $offset + 1,
75
  $blockSrcCollection->getLastPageNumber()
76
  );
109
  }
110
 
111
  return [
112
+ 'status_msg' => $statusMessage,
113
+ 'offset' => $offset + 1,
114
+ 'step' => ProjectExporter::STEP_COLLECT_CMSBLOCKS,
115
  ];
116
  }
117
 
118
  /**
119
  * @param string $nodeName
120
  * @param string $value
 
121
  */
122
  private function addNodeToBlockNode($nodeName, $value)
123
  {
137
  {
138
  $srcValue = $blockSrc->getDataUsingMethod($attr);
139
  $dstValue = $blockDst->getDataUsingMethod($attr);
140
+ if ($srcValue != '' && (($srcValue == $dstValue) || ($dstValue == '') || $manualSelected)) {
141
  $item = $this->doc->createElement($nodeName);
142
  Mage::helper('eurotext_translationmanager/xml')
143
  ->appendTextChild($this->doc, $item, $srcValue);
171
  */
172
  private function addBasicInformation(Eurotext_TranslationManager_Model_Project $project, $blockSrc, $blockDst)
173
  {
174
+ $this->addNodeToBlockNode('Id', $blockSrc->getId());
175
+ $this->addNodeToBlockNode('StoreviewSrc', $project->getStoreviewSrc());
176
+ $this->addNodeToBlockNode('StoreviewDst', $project->getStoreviewDst());
177
+ $this->addNodeToBlockNode('PageIdDst', $blockDst->getId() != $blockSrc->getId() ? $blockDst->getId() : -1);
178
  }
179
 
180
  /**
190
 
191
  private function createNewDOMDocument()
192
  {
193
+ $this->doc = new DOMDocument('1.0', 'UTF-8');
194
  $this->doc->formatOutput = true;
195
+ $cmsSites = $this->doc->createElement('cms-sites');
196
  $this->doc->appendChild($cmsSites);
197
+ $this->cmsSiteNode = $this->doc->createElement('cms-site');
198
  $cmsSites->appendChild($this->cmsSiteNode);
199
  }
200
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project/CmsPage.php CHANGED
@@ -54,18 +54,18 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
54
  $manualSelected = true;
55
  }
56
 
57
- if ((!$project->isExportingAllCmsContent() && !count($project->getPages()))
58
- || $offset > $pageSrcCollection->getLastPageNumber()
59
  ) {
60
  return [
61
- 'status_msg' => $helper->__("Exported CMS Pages."),
62
  'step' => ProjectExporter::STEP_COLLECT_CMSBLOCKS,
63
  'offset' => 1,
64
  ];
65
  }
66
 
67
  $statusMessage = sprintf(
68
- Mage::helper('eurotext_translationmanager')->__("Batch %s / %s CMS Pages:"),
69
  $offset + 1,
70
  $pageSrcCollection->getLastPageNumber()
71
  );
@@ -78,9 +78,9 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
78
  $identifier = $pageSrc->getIdentifier();
79
  /** @var Mage_Cms_Model_Page $matchingPage */
80
  $matchingPage = Mage::getResourceModel('cms/page_collection')
81
- ->addStoreFilter($project->getStoreviewDst())
82
- ->addFieldToFilter('identifier', $identifier)
83
- ->getFirstItem();
84
 
85
  if (!$matchingPage->isObjectNew()) {
86
  $pageDst = $matchingPage;
@@ -131,7 +131,7 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
131
  {
132
  $srcValue = $pageSrc->getDataUsingMethod($attr);
133
  $dstValue = $pageDst->getDataUsingMethod($attr);
134
- if ($srcValue != "" && (($srcValue == $dstValue) || ($dstValue == "") || ($manualSelected))) {
135
  $item = $this->doc->createElement($nodeName);
136
  Mage::helper('eurotext_translationmanager/xml')
137
  ->appendTextChild($this->doc, $item, $srcValue);
@@ -148,13 +148,13 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
148
  if ($this->cmsSiteNode->hasChildNodes()) {
149
  $subdir = 'cms-sites';
150
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
151
- ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
152
 
153
  $identifier = Mage::helper('eurotext_translationmanager/filesystem')
154
- ->getFilenameSafeString($page->getIdentifier());
155
 
156
  $xmlFilename = "$xmlDir/cms-" . Mage::helper('eurotext_translationmanager/filesystem')
157
- ->getFilenameSafeString($identifier) . "-" . $page->getId() . ".xml";
158
 
159
  $this->doc->save($xmlFilename);
160
  }
@@ -167,10 +167,10 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
167
  */
168
  private function addBasicInformation(Eurotext_TranslationManager_Model_Project $project, $pageSrc, $pageDst)
169
  {
170
- $this->addNodeTopageNode("Id", $pageSrc->getId());
171
- $this->addNodeTopageNode("StoreviewSrc", $project->getStoreviewSrc());
172
- $this->addNodeTopageNode("StoreviewDst", $project->getStoreviewDst());
173
- $this->addNodeTopageNode("PageIdDst", $pageDst->getId() != $pageSrc->getId() ? $pageDst->getId() : -1);
174
  }
175
 
176
  /**
@@ -181,17 +181,17 @@ class Eurotext_TranslationManager_Model_Export_Project_CmsPage
181
  private function getCmsPageCollectionFor($storeId)
182
  {
183
  return Mage::getResourceModel('cms/page_collection')
184
- ->addStoreFilter($storeId)
185
- ->addOrder('page_id');
186
  }
187
 
188
  private function createNewDOMDocument()
189
  {
190
- $this->doc = new DOMDocument('1.0', 'UTF-8');
191
  $this->doc->formatOutput = true;
192
- $cmsSites = $this->doc->createElement("cms-sites");
193
  $this->doc->appendChild($cmsSites);
194
- $this->cmsSiteNode = $this->doc->createElement("cms-site");
195
  $cmsSites->appendChild($this->cmsSiteNode);
196
  }
197
  }
54
  $manualSelected = true;
55
  }
56
 
57
+ if ($offset > $pageSrcCollection->getLastPageNumber() ||
58
+ (!$project->isExportingAllCmsContent() && !count($project->getPages()))
59
  ) {
60
  return [
61
+ 'status_msg' => $helper->__('Exported CMS Pages.'),
62
  'step' => ProjectExporter::STEP_COLLECT_CMSBLOCKS,
63
  'offset' => 1,
64
  ];
65
  }
66
 
67
  $statusMessage = sprintf(
68
+ Mage::helper('eurotext_translationmanager')->__('Batch %s / %s CMS Pages:'),
69
  $offset + 1,
70
  $pageSrcCollection->getLastPageNumber()
71
  );
78
  $identifier = $pageSrc->getIdentifier();
79
  /** @var Mage_Cms_Model_Page $matchingPage */
80
  $matchingPage = Mage::getResourceModel('cms/page_collection')
81
+ ->addStoreFilter($project->getStoreviewDst())
82
+ ->addFieldToFilter('identifier', $identifier)
83
+ ->getFirstItem();
84
 
85
  if (!$matchingPage->isObjectNew()) {
86
  $pageDst = $matchingPage;
131
  {
132
  $srcValue = $pageSrc->getDataUsingMethod($attr);
133
  $dstValue = $pageDst->getDataUsingMethod($attr);
134
+ if ($srcValue != '' && (($srcValue == $dstValue) || ($dstValue == '') || $manualSelected)) {
135
  $item = $this->doc->createElement($nodeName);
136
  Mage::helper('eurotext_translationmanager/xml')
137
  ->appendTextChild($this->doc, $item, $srcValue);
148
  if ($this->cmsSiteNode->hasChildNodes()) {
149
  $subdir = 'cms-sites';
150
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
151
+ ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
152
 
153
  $identifier = Mage::helper('eurotext_translationmanager/filesystem')
154
+ ->getFilenameSafeString($page->getIdentifier());
155
 
156
  $xmlFilename = "$xmlDir/cms-" . Mage::helper('eurotext_translationmanager/filesystem')
157
+ ->getFilenameSafeString($identifier) . '-' . $page->getId() . '.xml';
158
 
159
  $this->doc->save($xmlFilename);
160
  }
167
  */
168
  private function addBasicInformation(Eurotext_TranslationManager_Model_Project $project, $pageSrc, $pageDst)
169
  {
170
+ $this->addNodeTopageNode('Id', $pageSrc->getId());
171
+ $this->addNodeTopageNode('StoreviewSrc', $project->getStoreviewSrc());
172
+ $this->addNodeTopageNode('StoreviewDst', $project->getStoreviewDst());
173
+ $this->addNodeTopageNode('PageIdDst', $pageDst->getId() != $pageSrc->getId() ? $pageDst->getId() : -1);
174
  }
175
 
176
  /**
181
  private function getCmsPageCollectionFor($storeId)
182
  {
183
  return Mage::getResourceModel('cms/page_collection')
184
+ ->addStoreFilter($storeId)
185
+ ->addOrder('page_id');
186
  }
187
 
188
  private function createNewDOMDocument()
189
  {
190
+ $this->doc = new DOMDocument('1.0', 'UTF-8');
191
  $this->doc->formatOutput = true;
192
+ $cmsSites = $this->doc->createElement('cms-sites');
193
  $this->doc->appendChild($cmsSites);
194
+ $this->cmsSiteNode = $this->doc->createElement('cms-site');
195
  $cmsSites->appendChild($this->cmsSiteNode);
196
  }
197
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project/CreateControlFile.php CHANGED
@@ -12,10 +12,6 @@ class Eurotext_TranslationManager_Model_Export_Project_CreateControlFile
12
  * @var DOMDocument
13
  */
14
  private $doc;
15
- /**
16
- * @var DOMElement
17
- */
18
- private $requestNode;
19
 
20
  /**
21
  * @var DOMElement
@@ -36,11 +32,6 @@ class Eurotext_TranslationManager_Model_Export_Project_CreateControlFile
36
  */
37
  private $helper;
38
 
39
- /**
40
- * @var Eurotext_TranslationManager_Helper_Eurotext
41
- */
42
- private $etHelper;
43
-
44
  /**
45
  * @var Eurotext_TranslationManager_Helper_Config
46
  */
@@ -50,15 +41,14 @@ class Eurotext_TranslationManager_Model_Export_Project_CreateControlFile
50
  {
51
  $this->doc = new DOMDocument('1.0', 'UTF-8');
52
  $this->doc->formatOutput = true;
53
- $this->requestNode = $this->doc->createElement("Request");
54
- $this->doc->appendChild($this->requestNode);
55
- $this->generalNode = $this->doc->createElement("General");
56
- $this->requestNode->appendChild($this->generalNode);
57
- $this->languageCombinationNode = $this->doc->createElement("LanguageCombinations");
58
- $this->requestNode->appendChild($this->languageCombinationNode);
59
 
60
  $this->helper = Mage::helper('eurotext_translationmanager');
61
- $this->etHelper = Mage::helper('eurotext_translationmanager/eurotext');
62
  $this->configHelper = Mage::helper('eurotext_translationmanager/config');
63
  }
64
 
@@ -84,21 +74,21 @@ class Eurotext_TranslationManager_Model_Export_Project_CreateControlFile
84
 
85
  private function addCustomerContact()
86
  {
87
- $nodeCustomerContact = $this->doc->createElement("CustomerContact");
88
  $nodeCustomerContact->appendChild($this->doc->createTextNode($this->configHelper->getName()));
89
  $this->generalNode->appendChild($nodeCustomerContact);
90
  }
91
 
92
  private function addCustomerEmail()
93
  {
94
- $nodeCustomerEmail = $this->doc->createElement("CustomerMail");
95
  $nodeCustomerEmail->appendChild($this->doc->createTextNode($this->configHelper->getEmail()));
96
  $this->generalNode->appendChild($nodeCustomerEmail);
97
  }
98
 
99
  private function addCustomerId()
100
  {
101
- $customerId = $this->doc->createElement("CustomerID_of_Supplier");
102
  $customerId->appendChild($this->doc->createTextNode($this->configHelper->getCustomerId()));
103
  $this->generalNode->appendChild($customerId);
104
  }
@@ -108,21 +98,21 @@ class Eurotext_TranslationManager_Model_Export_Project_CreateControlFile
108
  */
109
  private function addProjectName(Eurotext_TranslationManager_Model_Project $project)
110
  {
111
- $nodeProjectName = $this->doc->createElement("ProjectName");
112
  $nodeProjectName->appendChild($this->doc->createTextNode($project->getProjectName()));
113
  $this->generalNode->appendChild($nodeProjectName);
114
  }
115
 
116
  private function addDeadline()
117
  {
118
- $nodeDeadline = $this->doc->createElement("Deadline");
119
  $this->generalNode->appendChild($nodeDeadline);
120
  }
121
 
122
  private function addTarget()
123
  {
124
- $nodeTargetProject = $this->doc->createElement("TargetProject");
125
- $nodeTargetProject->appendChild($this->doc->createTextNode("Quote"));
126
  $this->generalNode->appendChild($nodeTargetProject);
127
  }
128
 
@@ -156,12 +146,12 @@ COMMENT;
156
  );
157
  $description .= "\n\nSrc-Storeview: '" . $srcName . "' (" . $project->getStoreviewSrcLocale() . ")\n";
158
  $description .= "Dst-Storeview: '" . $dstName . "' (" . $project->getStoreviewDstLocale() . ")\n";
159
- $description .= "Export SEO content: " . ($project->isExportingMetaAttributes() ? "Yes" : "No") . "\n";
160
- $description .= "Export attributes and attribute options? ";
161
- $description .= ($project->isExportingAttributes() ? "Yes" : "No") . "\n";
162
- $description .= "Export URL keys? " . ($project->isExportingUrlKeys() ? "Yes" : "No");
163
 
164
- $nodeDescription = $this->doc->createElement("Description");
165
  $nodeDescription->appendChild($this->doc->createTextNode($description));
166
  $this->generalNode->appendChild($nodeDescription);
167
  }
@@ -204,7 +194,7 @@ COMMENT;
204
  */
205
  private function writeXml($xmlDir)
206
  {
207
- $xmlFilename = $xmlDir . DS . "control.xml";
208
  $this->doc->save($xmlFilename);
209
  }
210
 
@@ -243,15 +233,15 @@ COMMENT;
243
  */
244
  private function createLanguageCombination(Eurotext_TranslationManager_Model_Project $project)
245
  {
246
- $nodeLanguageCombination = $this->doc->createElement("LanguageCombination");
247
- $source = $this->doc->createAttribute("source");
248
 
249
  $etLocalesrc = $this->getEurotextLocale($project->getStoreviewSrcLocale());
250
  $source->value = $etLocalesrc['locale_eurotext'];
251
  $nodeLanguageCombination->appendChild($source);
252
 
253
  $etLocaleDst = $this->getEurotextLocale($project->getStoreviewDstLocale());
254
- $target = $this->doc->createAttribute("target");
255
  $target->value = $etLocaleDst['locale_eurotext'];
256
 
257
  $nodeLanguageCombination->appendChild($target);
@@ -294,15 +284,15 @@ COMMENT;
294
  {
295
  $absoluteFile = $xmlDir . '/' . $file;
296
 
297
- $nodeUploadedFile = $this->doc->createElement("uploadedFile");
298
  $nodeLanguageCombination->appendChild($nodeUploadedFile);
299
 
300
- $attrfileName = $this->doc->createAttribute("fileName");
301
  $attrfileName->value = $file;
302
  $nodeUploadedFile->appendChild($attrfileName);
303
 
304
 
305
- $attrsize = $this->doc->createAttribute("size");
306
  $attrsize->value = filesize($absoluteFile);
307
  $nodeUploadedFile->appendChild($attrsize);
308
  }
12
  * @var DOMDocument
13
  */
14
  private $doc;
 
 
 
 
15
 
16
  /**
17
  * @var DOMElement
32
  */
33
  private $helper;
34
 
 
 
 
 
 
35
  /**
36
  * @var Eurotext_TranslationManager_Helper_Config
37
  */
41
  {
42
  $this->doc = new DOMDocument('1.0', 'UTF-8');
43
  $this->doc->formatOutput = true;
44
+ $requestNode = $this->doc->createElement('Request');
45
+ $this->doc->appendChild($requestNode);
46
+ $this->generalNode = $this->doc->createElement('General');
47
+ $requestNode->appendChild($this->generalNode);
48
+ $this->languageCombinationNode = $this->doc->createElement('LanguageCombinations');
49
+ $requestNode->appendChild($this->languageCombinationNode);
50
 
51
  $this->helper = Mage::helper('eurotext_translationmanager');
 
52
  $this->configHelper = Mage::helper('eurotext_translationmanager/config');
53
  }
54
 
74
 
75
  private function addCustomerContact()
76
  {
77
+ $nodeCustomerContact = $this->doc->createElement('CustomerContact');
78
  $nodeCustomerContact->appendChild($this->doc->createTextNode($this->configHelper->getName()));
79
  $this->generalNode->appendChild($nodeCustomerContact);
80
  }
81
 
82
  private function addCustomerEmail()
83
  {
84
+ $nodeCustomerEmail = $this->doc->createElement('CustomerMail');
85
  $nodeCustomerEmail->appendChild($this->doc->createTextNode($this->configHelper->getEmail()));
86
  $this->generalNode->appendChild($nodeCustomerEmail);
87
  }
88
 
89
  private function addCustomerId()
90
  {
91
+ $customerId = $this->doc->createElement('CustomerID_of_Supplier');
92
  $customerId->appendChild($this->doc->createTextNode($this->configHelper->getCustomerId()));
93
  $this->generalNode->appendChild($customerId);
94
  }
98
  */
99
  private function addProjectName(Eurotext_TranslationManager_Model_Project $project)
100
  {
101
+ $nodeProjectName = $this->doc->createElement('ProjectName');
102
  $nodeProjectName->appendChild($this->doc->createTextNode($project->getProjectName()));
103
  $this->generalNode->appendChild($nodeProjectName);
104
  }
105
 
106
  private function addDeadline()
107
  {
108
+ $nodeDeadline = $this->doc->createElement('Deadline');
109
  $this->generalNode->appendChild($nodeDeadline);
110
  }
111
 
112
  private function addTarget()
113
  {
114
+ $nodeTargetProject = $this->doc->createElement('TargetProject');
115
+ $nodeTargetProject->appendChild($this->doc->createTextNode('Quote'));
116
  $this->generalNode->appendChild($nodeTargetProject);
117
  }
118
 
146
  );
147
  $description .= "\n\nSrc-Storeview: '" . $srcName . "' (" . $project->getStoreviewSrcLocale() . ")\n";
148
  $description .= "Dst-Storeview: '" . $dstName . "' (" . $project->getStoreviewDstLocale() . ")\n";
149
+ $description .= 'Export SEO content: ' . ($project->isExportingMetaAttributes() ? 'Yes' : 'No') . "\n";
150
+ $description .= 'Export attributes and attribute options? ';
151
+ $description .= ($project->isExportingAttributes() ? 'Yes' : 'No') . "\n";
152
+ $description .= 'Export URL keys? ' . ($project->isExportingUrlKeys() ? 'Yes' : 'No');
153
 
154
+ $nodeDescription = $this->doc->createElement('Description');
155
  $nodeDescription->appendChild($this->doc->createTextNode($description));
156
  $this->generalNode->appendChild($nodeDescription);
157
  }
194
  */
195
  private function writeXml($xmlDir)
196
  {
197
+ $xmlFilename = $xmlDir . DS . 'control.xml';
198
  $this->doc->save($xmlFilename);
199
  }
200
 
233
  */
234
  private function createLanguageCombination(Eurotext_TranslationManager_Model_Project $project)
235
  {
236
+ $nodeLanguageCombination = $this->doc->createElement('LanguageCombination');
237
+ $source = $this->doc->createAttribute('source');
238
 
239
  $etLocalesrc = $this->getEurotextLocale($project->getStoreviewSrcLocale());
240
  $source->value = $etLocalesrc['locale_eurotext'];
241
  $nodeLanguageCombination->appendChild($source);
242
 
243
  $etLocaleDst = $this->getEurotextLocale($project->getStoreviewDstLocale());
244
+ $target = $this->doc->createAttribute('target');
245
  $target->value = $etLocaleDst['locale_eurotext'];
246
 
247
  $nodeLanguageCombination->appendChild($target);
284
  {
285
  $absoluteFile = $xmlDir . '/' . $file;
286
 
287
+ $nodeUploadedFile = $this->doc->createElement('uploadedFile');
288
  $nodeLanguageCombination->appendChild($nodeUploadedFile);
289
 
290
+ $attrfileName = $this->doc->createAttribute('fileName');
291
  $attrfileName->value = $file;
292
  $nodeUploadedFile->appendChild($attrfileName);
293
 
294
 
295
+ $attrsize = $this->doc->createAttribute('size');
296
  $attrsize->value = filesize($absoluteFile);
297
  $nodeUploadedFile->appendChild($attrsize);
298
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project/EmailDatabaseTemplates.php CHANGED
@@ -50,7 +50,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailDatabaseTemplates
50
 
51
  if (!$templateCollection->getSize()) {
52
  return [
53
- 'status_msg' => $this->getHelper()->__("No Email Templates from the database exported"),
54
  'offset' => 1,
55
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
56
  ];
@@ -58,7 +58,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailDatabaseTemplates
58
 
59
  if ($templateCollection->getLastPageNumber() < $this->offset) {
60
  return [
61
- 'status_msg' => $this->getHelper()->__("All Email-Database-Templates exported"),
62
  'offset' => 1,
63
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
64
  ];
@@ -70,7 +70,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailDatabaseTemplates
70
  $this->writeXml($templateCollection);
71
 
72
  return [
73
- 'status_msg' => $this->getHelper()->__("%s Email-Database-Templates exported", $templateCollection->getSize()),
74
  'offset' => $this->offset + 1,
75
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
76
  ];
@@ -107,13 +107,13 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailDatabaseTemplates
107
  $type = $t->getType() == \Mage_Core_Model_Template::TYPE_HTML ? 'html' : 'plaintext';
108
  $xmlWriter->writeElement('Type', $type);
109
  $xmlWriter->startElement('Styles');
110
- $xmlWriter->writeCdata($t->getTemplateStyles());
111
  $xmlWriter->endElement(); // Styles
112
  $xmlWriter->startElement('Subject');
113
- $xmlWriter->writeCdata($t->getTemplateSubject());
114
  $xmlWriter->endElement(); // Subject
115
  $xmlWriter->startElement('Text');
116
- $xmlWriter->writeCdata(
117
  Mage::helper('eurotext_translationmanager/string')
118
  ->replaceMagentoBlockDirectives($t->getTemplateText())
119
  );
@@ -123,7 +123,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailDatabaseTemplates
123
  $xmlWriter->endElement(); // emails
124
 
125
  file_put_contents(
126
- sprintf($this->xmlDir . '/emailtemplates-db-%s.xml', ($this->offset * self::PAGE_SIZE) + $i++),
127
  $xmlWriter->flush()
128
  );
129
  }
50
 
51
  if (!$templateCollection->getSize()) {
52
  return [
53
+ 'status_msg' => $this->getHelper()->__('No Email Templates from the database exported'),
54
  'offset' => 1,
55
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
56
  ];
58
 
59
  if ($templateCollection->getLastPageNumber() < $this->offset) {
60
  return [
61
+ 'status_msg' => $this->getHelper()->__('All Email-Database-Templates exported'),
62
  'offset' => 1,
63
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
64
  ];
70
  $this->writeXml($templateCollection);
71
 
72
  return [
73
+ 'status_msg' => $this->getHelper()->__('%s Email-Database-Templates exported', $templateCollection->getSize()),
74
  'offset' => $this->offset + 1,
75
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_EXPORT_ATTRIBUTES,
76
  ];
107
  $type = $t->getType() == \Mage_Core_Model_Template::TYPE_HTML ? 'html' : 'plaintext';
108
  $xmlWriter->writeElement('Type', $type);
109
  $xmlWriter->startElement('Styles');
110
+ $xmlWriter->writeCData($t->getTemplateStyles());
111
  $xmlWriter->endElement(); // Styles
112
  $xmlWriter->startElement('Subject');
113
+ $xmlWriter->writeCData($t->getTemplateSubject());
114
  $xmlWriter->endElement(); // Subject
115
  $xmlWriter->startElement('Text');
116
+ $xmlWriter->writeCData(
117
  Mage::helper('eurotext_translationmanager/string')
118
  ->replaceMagentoBlockDirectives($t->getTemplateText())
119
  );
123
  $xmlWriter->endElement(); // emails
124
 
125
  file_put_contents(
126
+ sprintf($this->xmlDir . '/emailtemplates-db-%s.xml', (($this->offset - 1) * self::PAGE_SIZE) + $i++),
127
  $xmlWriter->flush()
128
  );
129
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project/EmailFileTemplates.php CHANGED
@@ -40,7 +40,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailFileTemplates
40
 
41
  if (!$numberOfEmailTemplatesExported) {
42
  return [
43
- 'status_msg' => $this->getHelper()->__("No Email-File-Templates exported"),
44
  'offset' => 1,
45
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_TEMPLATES_DATABASE,
46
  ];
@@ -53,7 +53,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailFileTemplates
53
  $this->writeXml($emailTemplates, $project);
54
 
55
  return [
56
- 'status_msg' => $this->getHelper()->__("Exported %s Email Templates", $this->exportedTemplateFiles),
57
  'offset' => 1,
58
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_TEMPLATES_DATABASE,
59
  ];
@@ -82,7 +82,7 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailFileTemplates
82
  $filenameSrc = $baseLocale . "/{$project->getStoreviewSrcLocale()}/template$relativeFilePath";
83
  $filenameDst = $baseLocale . "/{$project->getStoreviewDstLocale()}/template$relativeFilePath";
84
 
85
- if (!$this->isTranslationNeeded($filenameDst) || !isset($this->emailPaths[$fileInConfigXml])) {
86
  continue;
87
  }
88
  $this->exportedTemplateFiles++;
@@ -98,13 +98,13 @@ class Eurotext_TranslationManager_Model_Export_Project_EmailFileTemplates
98
  $type = $this->emailPaths[$fileInConfigXml]['type'];
99
  $xmlWriter->writeElement('Type', $type);
100
  $xmlWriter->startElement('Styles');
101
- $xmlWriter->writeCdata($info['styles']);
102
  $xmlWriter->endElement(); // Styles
103
  $xmlWriter->startElement('Subject');
104
- $xmlWriter->writeCdata($info['subject']);
105
  $xmlWriter->endElement(); // Subject
106
  $xmlWriter->startElement('Text');
107
- $xmlWriter->writeCdata($info['text']);
108
  $xmlWriter->endElement(); // Text
109
  $xmlWriter->endElement(); // email
110
 
40
 
41
  if (!$numberOfEmailTemplatesExported) {
42
  return [
43
+ 'status_msg' => $this->getHelper()->__('No Email-File-Templates exported'),
44
  'offset' => 1,
45
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_TEMPLATES_DATABASE,
46
  ];
53
  $this->writeXml($emailTemplates, $project);
54
 
55
  return [
56
+ 'status_msg' => $this->getHelper()->__('Exported %s Email Templates', $this->exportedTemplateFiles),
57
  'offset' => 1,
58
  'step' => Eurotext_TranslationManager_Model_Export_Project::STEP_COLLECT_TEMPLATES_DATABASE,
59
  ];
82
  $filenameSrc = $baseLocale . "/{$project->getStoreviewSrcLocale()}/template$relativeFilePath";
83
  $filenameDst = $baseLocale . "/{$project->getStoreviewDstLocale()}/template$relativeFilePath";
84
 
85
+ if (!isset($this->emailPaths[$fileInConfigXml]) || !$this->isTranslationNeeded($filenameDst)) {
86
  continue;
87
  }
88
  $this->exportedTemplateFiles++;
98
  $type = $this->emailPaths[$fileInConfigXml]['type'];
99
  $xmlWriter->writeElement('Type', $type);
100
  $xmlWriter->startElement('Styles');
101
+ $xmlWriter->writeCData($info['styles']);
102
  $xmlWriter->endElement(); // Styles
103
  $xmlWriter->startElement('Subject');
104
+ $xmlWriter->writeCData($info['subject']);
105
  $xmlWriter->endElement(); // Subject
106
  $xmlWriter->startElement('Text');
107
+ $xmlWriter->writeCData($info['text']);
108
  $xmlWriter->endElement(); // Text
109
  $xmlWriter->endElement(); // email
110
 
app/code/community/Eurotext/TranslationManager/Model/Export/Project/FtpUpload.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
4
  {
5
- const FTP_HOST = "eurotext-services.de";
6
  const FTP_PORT = 21;
7
 
8
  /**
@@ -63,7 +63,7 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
63
 
64
  $uploadSuccess = $this->uploadZipFileToEurotext($zipFile);
65
 
66
- if ((false === $uploadSuccess || true === $this->configHelper->isDebugMode())) {
67
  $this->createFallbackFile($zipFile);
68
  }
69
 
@@ -155,11 +155,11 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
155
 
156
  private function validateUsername()
157
  {
158
- if (trim($this->ftpUsername) == "") {
159
  $this->helper->log('Login data is not set.', Zend_Log::ERR);
160
  throw new Eurotext_TranslationManager_Exception_FtpException(
161
  $this->helper->__(
162
- "There seems to be a problem with your login data. Please check username and password!"
163
  )
164
  );
165
  }
@@ -167,11 +167,11 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
167
 
168
  private function validateFtpConnectExists()
169
  {
170
- if (!function_exists("ftp_connect")) {
171
  $this->helper->log('There is no FTP Client available: ftp_connect does not exist.', Zend_Log::CRIT);
172
  throw new Eurotext_TranslationManager_Exception_FtpException(
173
  $this->helper->__(
174
- "There is no FTP Client available: ftp_connect does not exist."
175
  )
176
  );
177
  }
@@ -183,7 +183,7 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
183
  $this->helper->log('There is no FTP Client available: ftp_connect is disabled in PHP.', Zend_Log::CRIT);
184
  throw new Eurotext_TranslationManager_Exception_FtpException(
185
  $this->helper->__(
186
- "There is no FTP Client available: ftp_connect is disabled in PHP."
187
  )
188
  );
189
  }
@@ -195,7 +195,7 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
195
  $this->helper->log('Could not connect to Translation Portal Server.', Zend_Log::ERR);
196
  throw new Eurotext_TranslationManager_Exception_FtpException(
197
  $this->helper->__(
198
- "Could not connect to server. Could be a temporary error or firewall problem. You could also check for a new module version. It might be a problem with your login data, too. Please check username and password!"
199
  )
200
  );
201
  }
@@ -204,13 +204,13 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
204
  private function cleanupFtp()
205
  {
206
  @ftp_delete($this->ftpConnection, $this->project->getData('zip_filename'));
207
- @ftp_delete($this->ftpConnection, $this->project->getData('zip_filename') . ".uploading");
208
  }
209
 
210
  private function setupFtpSettings()
211
  {
212
  ftp_pasv($this->ftpConnection, true);
213
- ftp_chdir($this->ftpConnection, "/");
214
  }
215
 
216
  /**
@@ -218,7 +218,7 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
218
  */
219
  private function uploadZipWithUploadingExtension($zipFile)
220
  {
221
- if (ftp_put($this->ftpConnection, $this->project->getZipFilename() . ".uploading", $zipFile, FTP_BINARY)) {
222
  $this->helper->log(
223
  'File was successfully uploaded to ' . $this->project->getZipFilename() . '.uploading',
224
  Zend_Log::INFO
@@ -232,7 +232,7 @@ class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
232
  private function removeUploadingExtension()
233
  {
234
  $filename = $this->project->getZipFilename();
235
- $uploadSuccess = ftp_rename($this->ftpConnection, $filename . ".uploading", $filename);
236
  if ($uploadSuccess) {
237
  $this->helper->log('File was successfully renamed to ' . $filename, Zend_Log::INFO);
238
  }
2
 
3
  class Eurotext_TranslationManager_Model_Export_Project_FtpUpload
4
  {
5
+ const FTP_HOST = 'eurotext-services.de';
6
  const FTP_PORT = 21;
7
 
8
  /**
63
 
64
  $uploadSuccess = $this->uploadZipFileToEurotext($zipFile);
65
 
66
+ if (false === $uploadSuccess || true === $this->configHelper->isDebugMode()) {
67
  $this->createFallbackFile($zipFile);
68
  }
69
 
155
 
156
  private function validateUsername()
157
  {
158
+ if (trim($this->ftpUsername) == '') {
159
  $this->helper->log('Login data is not set.', Zend_Log::ERR);
160
  throw new Eurotext_TranslationManager_Exception_FtpException(
161
  $this->helper->__(
162
+ 'There seems to be a problem with your login data. Please check username and password!'
163
  )
164
  );
165
  }
167
 
168
  private function validateFtpConnectExists()
169
  {
170
+ if (!function_exists('ftp_connect')) {
171
  $this->helper->log('There is no FTP Client available: ftp_connect does not exist.', Zend_Log::CRIT);
172
  throw new Eurotext_TranslationManager_Exception_FtpException(
173
  $this->helper->__(
174
+ 'There is no FTP Client available: ftp_connect does not exist.'
175
  )
176
  );
177
  }
183
  $this->helper->log('There is no FTP Client available: ftp_connect is disabled in PHP.', Zend_Log::CRIT);
184
  throw new Eurotext_TranslationManager_Exception_FtpException(
185
  $this->helper->__(
186
+ 'There is no FTP Client available: ftp_connect is disabled in PHP.'
187
  )
188
  );
189
  }
195
  $this->helper->log('Could not connect to Translation Portal Server.', Zend_Log::ERR);
196
  throw new Eurotext_TranslationManager_Exception_FtpException(
197
  $this->helper->__(
198
+ 'Could not connect to server. Could be a temporary error or firewall problem. You could also check for a new module version. It might be a problem with your login data, too. Please check username and password!'
199
  )
200
  );
201
  }
204
  private function cleanupFtp()
205
  {
206
  @ftp_delete($this->ftpConnection, $this->project->getData('zip_filename'));
207
+ @ftp_delete($this->ftpConnection, $this->project->getData('zip_filename') . '.uploading');
208
  }
209
 
210
  private function setupFtpSettings()
211
  {
212
  ftp_pasv($this->ftpConnection, true);
213
+ ftp_chdir($this->ftpConnection, '/');
214
  }
215
 
216
  /**
218
  */
219
  private function uploadZipWithUploadingExtension($zipFile)
220
  {
221
+ if (ftp_put($this->ftpConnection, $this->project->getZipFilename() . '.uploading', $zipFile, FTP_BINARY)) {
222
  $this->helper->log(
223
  'File was successfully uploaded to ' . $this->project->getZipFilename() . '.uploading',
224
  Zend_Log::INFO
232
  private function removeUploadingExtension()
233
  {
234
  $filename = $this->project->getZipFilename();
235
+ $uploadSuccess = ftp_rename($this->ftpConnection, $filename . '.uploading', $filename);
236
  if ($uploadSuccess) {
237
  $this->helper->log('File was successfully renamed to ' . $filename, Zend_Log::INFO);
238
  }
app/code/community/Eurotext/TranslationManager/Model/Export/Project/LocaleCsvFiles.php CHANGED
@@ -34,7 +34,7 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
34
  $count = $csvCollection->count();
35
  if (!$csv) {
36
  return [
37
- "status_msg" => $this->getHelper()->__("Exported language files."),
38
  'step' => ExportProject::STEP_COLLECT_PRODUCTS,
39
  'offset' => 1,
40
  ];
@@ -46,7 +46,7 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
46
  $filenameEn = preg_replace('#/[a-z]{2}_[A-Z]{2}/#', '/en_US/', $filenameSrc);
47
  $filenameDst = preg_replace('#/[a-z]{2}_[A-Z]{2}/#', "/{$project->getStoreviewDstLocale()}/", $filenameSrc);
48
 
49
- $statusMessage = $this->getHelper()->__("Batch %s / %s CSV File: %s", $offset + 1, $count, $filenameSrc);
50
 
51
  $srcCsvFilename = basename($filenameEn);
52
  $xmlFilename = $this->createFilenameFromCsvFilename($srcCsvFilename, $xmlDir);
@@ -110,7 +110,7 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
110
  {
111
  $this->doc = new DOMDocument('1.0', 'UTF-8');
112
  $this->doc->formatOutput = true;
113
- $translation = $this->doc->createElement("translation");
114
 
115
  $this->writeAttribute($translation, 'src_filename', $filenameSrc);
116
  $this->writeAttribute($translation, 'dst_filename', $filenameDst);
@@ -123,11 +123,12 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
123
  /**
124
  * @param int $itemCount
125
  * @param string $txtEn
 
126
  * @param DOMNOde $lineExport
127
  */
128
  private function createLineContextNode($itemCount, $txtEn, $locale, DOMNode $lineExport)
129
  {
130
- $lineContext = $this->doc->createElement("line-context");
131
  $this->writeAttribute($lineContext, 'num', $itemCount);
132
  $this->writeAttribute($lineContext, 'context', 'yes');
133
  $this->writeAttribute($lineContext, 'locale', $locale);
@@ -160,7 +161,7 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
160
  $txtSrc,
161
  $lineExport
162
  ) {
163
- $lineContext = $this->doc->createElement("line");
164
  $this->writeAttribute($lineContext, 'num', $itemCount);
165
  $this->writeAttribute($lineContext, 'locale-src', $project->getStoreviewSrcLocale());
166
  $this->writeAttribute($lineContext, 'locale-dst', $project->getStoreviewDstLocale());
@@ -184,10 +185,10 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
184
  $txtDst,
185
  $txtSrc
186
  ) {
187
- $comment = $this->doc->createComment("Line " . $itemCount);
188
  $translation->appendChild($comment);
189
 
190
- $lineExport = $this->doc->createElement("line" . $itemCount);
191
  $translation->appendChild($lineExport);
192
 
193
  $this->createLineContextNode($itemCount, $txtEn, 'en_US', $lineExport);
@@ -223,7 +224,7 @@ class Eurotext_TranslationManager_Model_Export_Project_LocaleCsvFiles
223
  */
224
  private function createSubdirectory(Eurotext_TranslationManager_Model_Project $project)
225
  {
226
- $subdir = "framework";
227
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
228
  ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
229
 
34
  $count = $csvCollection->count();
35
  if (!$csv) {
36
  return [
37
+ 'status_msg' => $this->getHelper()->__('Exported language files.'),
38
  'step' => ExportProject::STEP_COLLECT_PRODUCTS,
39
  'offset' => 1,
40
  ];
46
  $filenameEn = preg_replace('#/[a-z]{2}_[A-Z]{2}/#', '/en_US/', $filenameSrc);
47
  $filenameDst = preg_replace('#/[a-z]{2}_[A-Z]{2}/#', "/{$project->getStoreviewDstLocale()}/", $filenameSrc);
48
 
49
+ $statusMessage = $this->getHelper()->__('Batch %s / %s CSV File: %s', $offset + 1, $count, $filenameSrc);
50
 
51
  $srcCsvFilename = basename($filenameEn);
52
  $xmlFilename = $this->createFilenameFromCsvFilename($srcCsvFilename, $xmlDir);
110
  {
111
  $this->doc = new DOMDocument('1.0', 'UTF-8');
112
  $this->doc->formatOutput = true;
113
+ $translation = $this->doc->createElement('translation');
114
 
115
  $this->writeAttribute($translation, 'src_filename', $filenameSrc);
116
  $this->writeAttribute($translation, 'dst_filename', $filenameDst);
123
  /**
124
  * @param int $itemCount
125
  * @param string $txtEn
126
+ * @param string $locale
127
  * @param DOMNOde $lineExport
128
  */
129
  private function createLineContextNode($itemCount, $txtEn, $locale, DOMNode $lineExport)
130
  {
131
+ $lineContext = $this->doc->createElement('line-context');
132
  $this->writeAttribute($lineContext, 'num', $itemCount);
133
  $this->writeAttribute($lineContext, 'context', 'yes');
134
  $this->writeAttribute($lineContext, 'locale', $locale);
161
  $txtSrc,
162
  $lineExport
163
  ) {
164
+ $lineContext = $this->doc->createElement('line');
165
  $this->writeAttribute($lineContext, 'num', $itemCount);
166
  $this->writeAttribute($lineContext, 'locale-src', $project->getStoreviewSrcLocale());
167
  $this->writeAttribute($lineContext, 'locale-dst', $project->getStoreviewDstLocale());
185
  $txtDst,
186
  $txtSrc
187
  ) {
188
+ $comment = $this->doc->createComment('Line ' . $itemCount);
189
  $translation->appendChild($comment);
190
 
191
+ $lineExport = $this->doc->createElement('line' . $itemCount);
192
  $translation->appendChild($lineExport);
193
 
194
  $this->createLineContextNode($itemCount, $txtEn, 'en_US', $lineExport);
224
  */
225
  private function createSubdirectory(Eurotext_TranslationManager_Model_Project $project)
226
  {
227
+ $subdir = 'framework';
228
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
229
  ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
230
 
app/code/community/Eurotext/TranslationManager/Model/Export/Project/Product.php CHANGED
@@ -86,8 +86,8 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
86
  $productCollectionDst->addIdFilter($project->getProducts());
87
  }
88
 
89
- if ((!count($project->getProducts()) && !$project->isExportingAllProducts()) ||
90
- $page > $productCollectionSrc->getLastPageNumber()
91
  ) {
92
  $emulator->stopEnvironmentEmulation($emulation);
93
 
@@ -107,12 +107,14 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
107
  'eurotext_translationmanager/catalog_product_attribute_backend_media_onlyStoreValues'
108
  );
109
 
110
- $statusMessage = Mage::helper('eurotext_translationmanager')->__("Batch %s / %s Products:",
111
- $page,
112
- $productCollectionSrc->getLastPageNumber());
 
 
113
 
114
  foreach ($productCollectionSrc as $productSrc) {
115
- $this->nodeArticle = $this->doc->createElement("article");
116
  $statusMessage .= "\n<br />- " . $productSrc->getSku();
117
  /** @var Mage_Catalog_Model_Product $productDst */
118
  $productDst = $productCollectionDst->getItemById($productSrc->getId());
@@ -132,7 +134,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
132
  if ($this->nodeArticle->hasChildNodes()) {
133
  $firstChildNode = $this->nodeArticle->childNodes->item(0);
134
 
135
- $nodeArticleId = $this->doc->createElement("Id");
136
  $nodeArticleId->appendChild($this->doc->createTextNode($productSrc->getId()));
137
  $this->nodeArticle->insertBefore($nodeArticleId, $firstChildNode);
138
 
@@ -144,19 +146,19 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
144
  }
145
  }
146
 
147
- if($this->articlesNode->hasChildNodes()){
148
- $subdir = "articles";
149
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
150
  ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
151
 
152
- $this->doc->save($xmlDir . DS . "a" . ((int)($page)) . ".xml");
153
  }
154
  $emulator->stopEnvironmentEmulation($emulation);
155
 
156
  return [
157
- "offset" => $page + 1,
158
- "step" => ProjectExporter::STEP_COLLECT_PRODUCTS,
159
- "status_msg" => $statusMessage,
160
  ];
161
  }
162
 
@@ -222,46 +224,46 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
222
  }
223
 
224
  $hasImages = false;
225
- $imagesNode = $this->doc->createElement("Images");
226
 
227
  foreach ($imagesOrig as $imgValueId => $imgLabel) {
228
  if (!array_key_exists($imgValueId, $imagesDstLabel)) {
229
- $imagesDstLabel[$imgValueId] = "";
230
  }
231
 
232
  $needsUpdate = $manualSelected;
233
- if (strlen(trim($imagesDstLabel[$imgValueId])) == 0) {
234
  $needsUpdate = true;
235
  }
236
 
237
- if ($needsUpdate && strlen(trim($imgLabel))) {
238
  $hasImages = true;
239
- $imageNode = $this->doc->createElement("Image");
240
  $imagesNode->appendChild($imageNode);
241
 
242
- $imageNodeId = $this->doc->createAttribute("value_id");
243
  $imageNodeId->value = $imgValueId;
244
  $imageNode->appendChild($imageNodeId);
245
 
246
- $imageNodePosition = $this->doc->createAttribute("position");
247
  $imageNodePosition->value = $imagesDstPosition[$imgValueId];
248
  $imageNode->appendChild($imageNodePosition);
249
 
250
- $imageNodeDisabled = $this->doc->createAttribute("disabled");
251
  $imageNodeDisabled->value = $imagesDstDisabled[$imgValueId];
252
  $imageNode->appendChild($imageNodeDisabled);
253
 
254
  // URL:
255
  $imgUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) .
256
- "catalog/product" . $imagesOrigUrl[$imgValueId];
257
 
258
- $imageNodeUrl = $this->doc->createElement("Url");
259
  Mage::helper('eurotext_translationmanager/xml')
260
  ->appendTextChild($this->doc, $imageNodeUrl, $imgUrl);
261
  $imageNode->appendChild($imageNodeUrl);
262
 
263
  // Label:
264
- $labelNode = $this->doc->createElement("Label");
265
  Mage::helper('eurotext_translationmanager/xml')
266
  ->appendTextChild($this->doc, $labelNode, $imgLabel);
267
  $imageNode->appendChild($labelNode);
@@ -288,7 +290,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
288
  foreach ($this->configHelper->getCustomProductAttributesForExport() as $customProductAttribute) {
289
  $srcValue = $productSrc->getDataUsingMethod($customProductAttribute);
290
  $dstValue = $productDst->getDataUsingMethod($customProductAttribute);
291
- if ($srcValue && ($srcValue == $dstValue || $dstValue == "" || $manualSelected)) {
292
  Mage::helper('eurotext_translationmanager/xml')->appendTextNode(
293
  $this->doc,
294
  (string)$customProductAttribute,
@@ -298,9 +300,9 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
298
  }
299
  }
300
 
301
- if($nodeCustomProductAttributes->hasChildNodes()) {
302
  $this->nodeArticle->appendChild($nodeCustomProductAttributes);
303
- }
304
 
305
  }
306
 
@@ -315,7 +317,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
315
  foreach ($this->attributesToExportAlways as $attribute => $xmlNode) {
316
  $srcValue = $productSrc->getDataUsingMethod($attribute);
317
  $dstValue = $productDst->getDataUsingMethod($attribute);
318
- if ($srcValue && ($srcValue == $dstValue || $dstValue == "" || $manualSelected)) {
319
  $xmlHelper->appendTextNode($this->doc, $xmlNode, $srcValue, $this->nodeArticle);
320
  }
321
  }
@@ -326,7 +328,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
326
  */
327
  private function exportOptions($product)
328
  {
329
- $optionsNode = $this->doc->createElement("Options");
330
 
331
  $options = $product->getOptions();
332
  usort(
@@ -342,9 +344,9 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
342
 
343
  foreach ($options as $_option) {
344
  /** @var Mage_Catalog_Model_Product_Option $_option */
345
- $optionNode = $this->doc->createElement("Option");
346
 
347
- $optionNodeIdAttribute = $this->doc->createAttribute("Id");
348
  $optionNodeIdAttribute->value = $_option->getId();
349
  $optionNode->appendChild($optionNodeIdAttribute);
350
 
@@ -354,7 +356,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
354
  }
355
  $optionsNode->appendChild($optionNode);
356
 
357
- $optionsNodeTitle = $this->doc->createElement("Title");
358
  Mage::helper('eurotext_translationmanager/xml')
359
  ->appendTextChild($this->doc, $optionsNodeTitle, $_optionTitle);
360
  $optionNode->appendChild($optionsNodeTitle);
@@ -364,7 +366,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
364
  if (!$_values) {
365
  continue;
366
  }
367
- $valuesNode = $this->doc->createElement("Values");
368
 
369
  foreach ($_values as $_value) {
370
  $_valueTitle = $_value->getTitle();
@@ -373,13 +375,13 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
373
  }
374
  $_valueId = $_value->getId();
375
 
376
- $valueNode = $this->doc->createElement("Value");
377
 
378
- $valueNodeIdAttribute = $this->doc->createAttribute("Id");
379
  $valueNodeIdAttribute->value = $_valueId;
380
  $valueNode->appendChild($valueNodeIdAttribute);
381
 
382
- $valueNodeTitle = $this->doc->createElement("Title");
383
  Mage::helper('eurotext_translationmanager/xml')
384
  ->appendTextChild($this->doc, $valueNodeTitle, $_valueTitle);
385
  $valueNode->appendChild($valueNodeTitle);
@@ -413,8 +415,8 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
413
  }
414
  $valueSrc = $productSrc->getUrlKey();
415
  $valueDst = $productDst->getUrlKey();
416
- if ($valueSrc != "" && ($valueSrc == $valueDst || $valueDst == "" || $manualSelected)) {
417
- $item = $this->doc->createElement("UrlKey");
418
  Mage::helper('eurotext_translationmanager/xml')
419
  ->appendTextChild($this->doc, $item, $productSrc->getUrlKey());
420
  $this->nodeArticle->appendChild($item);
@@ -441,7 +443,7 @@ class Eurotext_TranslationManager_Model_Export_Project_Product
441
  foreach ($this->seoAttributes as $attribute => $xmlNode) {
442
  $srcValue = $productSrc->getDataUsingMethod($attribute);
443
  $dstValue = $productDst->getDataUsingMethod($attribute);
444
- if ($srcValue && ($srcValue == $dstValue || $dstValue == "" || $manualSelected)) {
445
  $item = $this->doc->createElement($xmlNode);
446
  Mage::helper('eurotext_translationmanager/xml')
447
  ->appendTextChild($this->doc, $item, $srcValue);
86
  $productCollectionDst->addIdFilter($project->getProducts());
87
  }
88
 
89
+ if ($page > $productCollectionSrc->getLastPageNumber() ||
90
+ (!count($project->getProducts()) && !$project->isExportingAllProducts())
91
  ) {
92
  $emulator->stopEnvironmentEmulation($emulation);
93
 
107
  'eurotext_translationmanager/catalog_product_attribute_backend_media_onlyStoreValues'
108
  );
109
 
110
+ $statusMessage = Mage::helper('eurotext_translationmanager')->__(
111
+ 'Batch %s / %s Products:',
112
+ $page,
113
+ $productCollectionSrc->getLastPageNumber()
114
+ );
115
 
116
  foreach ($productCollectionSrc as $productSrc) {
117
+ $this->nodeArticle = $this->doc->createElement('article');
118
  $statusMessage .= "\n<br />- " . $productSrc->getSku();
119
  /** @var Mage_Catalog_Model_Product $productDst */
120
  $productDst = $productCollectionDst->getItemById($productSrc->getId());
134
  if ($this->nodeArticle->hasChildNodes()) {
135
  $firstChildNode = $this->nodeArticle->childNodes->item(0);
136
 
137
+ $nodeArticleId = $this->doc->createElement('Id');
138
  $nodeArticleId->appendChild($this->doc->createTextNode($productSrc->getId()));
139
  $this->nodeArticle->insertBefore($nodeArticleId, $firstChildNode);
140
 
146
  }
147
  }
148
 
149
+ if ($this->articlesNode->hasChildNodes()) {
150
+ $subdir = 'articles';
151
  $xmlDir = Mage::helper('eurotext_translationmanager/filesystem')
152
  ->getXmlSubdirectoryAndMakeSureItExists($project, $subdir);
153
 
154
+ $this->doc->save($xmlDir . DS . 'a' . ((int)$page) . '.xml');
155
  }
156
  $emulator->stopEnvironmentEmulation($emulation);
157
 
158
  return [
159
+ 'offset' => $page + 1,
160
+ 'step' => ProjectExporter::STEP_COLLECT_PRODUCTS,
161
+ 'status_msg' => $statusMessage,
162
  ];
163
  }
164
 
224
  }
225
 
226
  $hasImages = false;
227
+ $imagesNode = $this->doc->createElement('Images');
228
 
229
  foreach ($imagesOrig as $imgValueId => $imgLabel) {
230
  if (!array_key_exists($imgValueId, $imagesDstLabel)) {
231
+ $imagesDstLabel[$imgValueId] = '';
232
  }
233
 
234
  $needsUpdate = $manualSelected;
235
+ if (trim($imagesDstLabel[$imgValueId]) === '') {
236
  $needsUpdate = true;
237
  }
238
 
239
+ if ($needsUpdate && trim($imgLabel)) {
240
  $hasImages = true;
241
+ $imageNode = $this->doc->createElement('Image');
242
  $imagesNode->appendChild($imageNode);
243
 
244
+ $imageNodeId = $this->doc->createAttribute('value_id');
245
  $imageNodeId->value = $imgValueId;
246
  $imageNode->appendChild($imageNodeId);
247
 
248
+ $imageNodePosition = $this->doc->createAttribute('position');
249
  $imageNodePosition->value = $imagesDstPosition[$imgValueId];
250
  $imageNode->appendChild($imageNodePosition);
251
 
252
+ $imageNodeDisabled = $this->doc->createAttribute('disabled');
253
  $imageNodeDisabled->value = $imagesDstDisabled[$imgValueId];
254
  $imageNode->appendChild($imageNodeDisabled);
255
 
256
  // URL:
257
  $imgUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) .
258
+ 'catalog/product' . $imagesOrigUrl[$imgValueId];
259
 
260
+ $imageNodeUrl = $this->doc->createElement('Url');
261
  Mage::helper('eurotext_translationmanager/xml')
262
  ->appendTextChild($this->doc, $imageNodeUrl, $imgUrl);
263
  $imageNode->appendChild($imageNodeUrl);
264
 
265
  // Label:
266
+ $labelNode = $this->doc->createElement('Label');
267
  Mage::helper('eurotext_translationmanager/xml')
268
  ->appendTextChild($this->doc, $labelNode, $imgLabel);
269
  $imageNode->appendChild($labelNode);
290
  foreach ($this->configHelper->getCustomProductAttributesForExport() as $customProductAttribute) {
291
  $srcValue = $productSrc->getDataUsingMethod($customProductAttribute);
292
  $dstValue = $productDst->getDataUsingMethod($customProductAttribute);
293
+ if ($srcValue && ($srcValue == $dstValue || $dstValue == '' || $manualSelected)) {
294
  Mage::helper('eurotext_translationmanager/xml')->appendTextNode(
295
  $this->doc,
296
  (string)$customProductAttribute,
300
  }
301
  }
302
 
303
+ if ($nodeCustomProductAttributes->hasChildNodes()) {
304
  $this->nodeArticle->appendChild($nodeCustomProductAttributes);
305
+ }
306
 
307
  }
308
 
317
  foreach ($this->attributesToExportAlways as $attribute => $xmlNode) {
318
  $srcValue = $productSrc->getDataUsingMethod($attribute);
319
  $dstValue = $productDst->getDataUsingMethod($attribute);
320
+ if ($srcValue && ($srcValue == $dstValue || $dstValue == '' || $manualSelected)) {
321
  $xmlHelper->appendTextNode($this->doc, $xmlNode, $srcValue, $this->nodeArticle);
322
  }
323
  }
328
  */
329
  private function exportOptions($product)
330
  {
331
+ $optionsNode = $this->doc->createElement('Options');
332
 
333
  $options = $product->getOptions();
334
  usort(
344
 
345
  foreach ($options as $_option) {
346
  /** @var Mage_Catalog_Model_Product_Option $_option */
347
+ $optionNode = $this->doc->createElement('Option');
348
 
349
+ $optionNodeIdAttribute = $this->doc->createAttribute('Id');
350
  $optionNodeIdAttribute->value = $_option->getId();
351
  $optionNode->appendChild($optionNodeIdAttribute);
352
 
356
  }
357
  $optionsNode->appendChild($optionNode);
358
 
359
+ $optionsNodeTitle = $this->doc->createElement('Title');
360
  Mage::helper('eurotext_translationmanager/xml')
361
  ->appendTextChild($this->doc, $optionsNodeTitle, $_optionTitle);
362
  $optionNode->appendChild($optionsNodeTitle);
366
  if (!$_values) {
367
  continue;
368
  }
369
+ $valuesNode = $this->doc->createElement('Values');
370
 
371
  foreach ($_values as $_value) {
372
  $_valueTitle = $_value->getTitle();
375
  }
376
  $_valueId = $_value->getId();
377
 
378
+ $valueNode = $this->doc->createElement('Value');
379
 
380
+ $valueNodeIdAttribute = $this->doc->createAttribute('Id');
381
  $valueNodeIdAttribute->value = $_valueId;
382
  $valueNode->appendChild($valueNodeIdAttribute);
383
 
384
+ $valueNodeTitle = $this->doc->createElement('Title');
385
  Mage::helper('eurotext_translationmanager/xml')
386
  ->appendTextChild($this->doc, $valueNodeTitle, $_valueTitle);
387
  $valueNode->appendChild($valueNodeTitle);
415
  }
416
  $valueSrc = $productSrc->getUrlKey();
417
  $valueDst = $productDst->getUrlKey();
418
+ if ($valueSrc != '' && ($valueSrc == $valueDst || $valueDst == '' || $manualSelected)) {
419
+ $item = $this->doc->createElement('UrlKey');
420
  Mage::helper('eurotext_translationmanager/xml')
421
  ->appendTextChild($this->doc, $item, $productSrc->getUrlKey());
422
  $this->nodeArticle->appendChild($item);
443
  foreach ($this->seoAttributes as $attribute => $xmlNode) {
444
  $srcValue = $productSrc->getDataUsingMethod($attribute);
445
  $dstValue = $productDst->getDataUsingMethod($attribute);
446
+ if ($srcValue && ($srcValue == $dstValue || $dstValue == '' || $manualSelected)) {
447
  $item = $this->doc->createElement($xmlNode);
448
  Mage::helper('eurotext_translationmanager/xml')
449
  ->appendTextChild($this->doc, $item, $srcValue);
app/code/community/Eurotext/TranslationManager/Model/Extractor.php CHANGED
@@ -53,7 +53,7 @@ class Eurotext_TranslationManager_Model_Extractor
53
  return 'Unknown error.';
54
  }
55
 
56
- function __destruct()
57
  {
58
  $this->zip->close();
59
  }
53
  return 'Unknown error.';
54
  }
55
 
56
+ public function __destruct()
57
  {
58
  $this->zip->close();
59
  }
app/code/community/Eurotext/TranslationManager/Model/Import/Project.php CHANGED
@@ -2,21 +2,11 @@
2
 
3
  class Eurotext_TranslationManager_Model_Import_Project
4
  {
5
- /**
6
- * @var Varien_Db_Adapter_Interface
7
- */
8
- private $writeConnection;
9
-
10
  /**
11
  * @var mixed[]
12
  */
13
  private $skippedEntities = [];
14
 
15
- public function __construct()
16
- {
17
- $this->writeConnection = Mage::getSingleton('core/resource')->getConnection('core_write');
18
- }
19
-
20
  public function import(
21
  Eurotext_TranslationManager_Model_Project $project
22
  ) {
@@ -43,19 +33,19 @@ class Eurotext_TranslationManager_Model_Import_Project
43
  $filename = $importFile->getFilename();
44
  $fullFilename = $tmpdir . DIRECTORY_SEPARATOR . $filename;
45
 
46
- if (stripos($filename, "cms-sites" . DS . "cms-") === 0) {
47
  $this->importstepActionImportCMS($fullFilename, $project);
48
- } elseif (stripos($filename, "cms-sites" . DS . "cmsblock-") === 0) {
49
  $this->importstepActionImportBlocks($fullFilename, $project);
50
- } elseif (stripos($filename, "articles" . DS) === 0) {
51
  $this->importstepActionImportArticle($fullFilename, $project);
52
- } elseif (stripos($filename, "categories" . DS) === 0) {
53
  $this->importstepActionImportCategory($fullFilename, $project);
54
- } elseif (stripos($filename, "framework" . DS) === 0) {
55
  $this->importstepActionImportTranslation($fullFilename);
56
- } elseif (stripos($filename, "attributes" . DS) === 0) {
57
  $this->importstepActionImportAttributes($fullFilename, $project);
58
- } elseif (stripos($filename, "emailtemplates" . DS) === 0) {
59
  $this->importstepActionImportTemplates($fullFilename, $project);
60
  }
61
 
@@ -69,17 +59,15 @@ class Eurotext_TranslationManager_Model_Import_Project
69
  private function getTempDir()
70
  {
71
  $dir = Mage::getBaseDir('tmp');
72
- $dir .= DS . "eurotext";
73
- if (!is_dir($dir)) {
74
- if (!mkdir($dir)) {
75
- Mage::helper('eurotext_translationmanager')->log(
76
- 'Temporary directory could not be created in ' . Mage::getBaseDir('var'),
77
- Zend_Log::CRIT
78
- );
79
- throw new Magento_Exception('Eurotext temporary directory could not be created.');
80
- }
81
  }
82
- $htaccessFilename = $dir . DS . ".htaccess";
83
  if (!is_file($htaccessFilename)) {
84
  file_put_contents($htaccessFilename, "# Eurotext Temp folder\r\nOrder Deny,Allow\r\nDeny From All");
85
  }
2
 
3
  class Eurotext_TranslationManager_Model_Import_Project
4
  {
 
 
 
 
 
5
  /**
6
  * @var mixed[]
7
  */
8
  private $skippedEntities = [];
9
 
 
 
 
 
 
10
  public function import(
11
  Eurotext_TranslationManager_Model_Project $project
12
  ) {
33
  $filename = $importFile->getFilename();
34
  $fullFilename = $tmpdir . DIRECTORY_SEPARATOR . $filename;
35
 
36
+ if (stripos($filename, 'cms-sites' . DS . 'cms-') === 0) {
37
  $this->importstepActionImportCMS($fullFilename, $project);
38
+ } elseif (stripos($filename, 'cms-sites' . DS . 'cmsblock-') === 0) {
39
  $this->importstepActionImportBlocks($fullFilename, $project);
40
+ } elseif (stripos($filename, 'articles' . DS) === 0) {
41
  $this->importstepActionImportArticle($fullFilename, $project);
42
+ } elseif (stripos($filename, 'categories' . DS) === 0) {
43
  $this->importstepActionImportCategory($fullFilename, $project);
44
+ } elseif (stripos($filename, 'framework' . DS) === 0) {
45
  $this->importstepActionImportTranslation($fullFilename);
46
+ } elseif (stripos($filename, 'attributes' . DS) === 0) {
47
  $this->importstepActionImportAttributes($fullFilename, $project);
48
+ } elseif (stripos($filename, 'emailtemplates' . DS) === 0) {
49
  $this->importstepActionImportTemplates($fullFilename, $project);
50
  }
51
 
59
  private function getTempDir()
60
  {
61
  $dir = Mage::getBaseDir('tmp');
62
+ $dir .= DS . 'eurotext';
63
+ if (!@mkdir($dir) && !is_dir($dir)) {
64
+ Mage::helper('eurotext_translationmanager')->log(
65
+ 'Temporary directory could not be created in ' . Mage::getBaseDir('var'),
66
+ Zend_Log::CRIT
67
+ );
68
+ throw new Magento_Exception('Eurotext temporary directory could not be created.');
 
 
69
  }
70
+ $htaccessFilename = $dir . DS . '.htaccess';
71
  if (!is_file($htaccessFilename)) {
72
  file_put_contents($htaccessFilename, "# Eurotext Temp folder\r\nOrder Deny,Allow\r\nDeny From All");
73
  }
app/code/community/Eurotext/TranslationManager/Model/Import/Project/Attributes.php CHANGED
@@ -14,7 +14,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Attributes
14
  $doc = new DOMDocument();
15
  $doc->load($filename);
16
 
17
- foreach ($doc->getElementsByTagName("attribute") as $attribute) {
18
  $this->importAttribute($project, $attribute);
19
  }
20
  }
@@ -27,15 +27,15 @@ class Eurotext_TranslationManager_Model_Import_Project_Attributes
27
  {
28
  /** @var Eurotext_TranslationManager_Model_Eav_Attribute_Label $eavLabel */
29
  $eavLabel = Mage::getResourceModel('eurotext_translationmanager/eav_attribute_label_collection')
30
- ->addFieldToFilter('attribute_id', $attribute->getAttribute("id"))
31
  ->addFieldToFilter('store_id', $project->getStoreviewDst())
32
  ->getFirstItem();
33
 
34
  $eavLabel->addData(
35
  [
36
- 'attribute_id' => intval($attribute->getAttribute("id")),
37
  'store_id' => $project->getStoreviewDst(),
38
- 'value' => $attribute->getElementsByTagName("AttributeName")[0]->textContent,
39
  ]
40
  );
41
  $eavLabel->save();
@@ -49,7 +49,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Attributes
49
  */
50
  private function importOptions(Eurotext_TranslationManager_Model_Project $project, DOMElement $attribute)
51
  {
52
- foreach ($attribute->getElementsByTagName("option") as $option) {
53
  $this->importOption($project, $option);
54
  }
55
  }
@@ -61,15 +61,15 @@ class Eurotext_TranslationManager_Model_Import_Project_Attributes
61
  private function importOption(Eurotext_TranslationManager_Model_Project $project, DOMElement $option)
62
  {
63
  $value = Mage::getResourceModel('eurotext_translationmanager/eav_attribute_option_value_collection')
64
- ->addFieldToFilter('option_id', $option->getAttribute("id"))
65
  ->addFieldToFilter('store_id', $project->getStoreviewDst())
66
  ->getFirstItem();
67
 
68
  $value->addData(
69
  [
70
- 'option_id' => intval($option->getAttribute("id")),
71
  'store_id' => $project->getStoreviewDst(),
72
- 'value' => $option->getElementsByTagName("OptionName")[0]->textContent,
73
  ]
74
  );
75
 
14
  $doc = new DOMDocument();
15
  $doc->load($filename);
16
 
17
+ foreach ($doc->getElementsByTagName('attribute') as $attribute) {
18
  $this->importAttribute($project, $attribute);
19
  }
20
  }
27
  {
28
  /** @var Eurotext_TranslationManager_Model_Eav_Attribute_Label $eavLabel */
29
  $eavLabel = Mage::getResourceModel('eurotext_translationmanager/eav_attribute_label_collection')
30
+ ->addFieldToFilter('attribute_id', $attribute->getAttribute('id'))
31
  ->addFieldToFilter('store_id', $project->getStoreviewDst())
32
  ->getFirstItem();
33
 
34
  $eavLabel->addData(
35
  [
36
+ 'attribute_id' => (int)$attribute->getAttribute('id'),
37
  'store_id' => $project->getStoreviewDst(),
38
+ 'value' => $attribute->getElementsByTagName('AttributeName')[0]->textContent,
39
  ]
40
  );
41
  $eavLabel->save();
49
  */
50
  private function importOptions(Eurotext_TranslationManager_Model_Project $project, DOMElement $attribute)
51
  {
52
+ foreach ($attribute->getElementsByTagName('option') as $option) {
53
  $this->importOption($project, $option);
54
  }
55
  }
61
  private function importOption(Eurotext_TranslationManager_Model_Project $project, DOMElement $option)
62
  {
63
  $value = Mage::getResourceModel('eurotext_translationmanager/eav_attribute_option_value_collection')
64
+ ->addFieldToFilter('option_id', $option->getAttribute('id'))
65
  ->addFieldToFilter('store_id', $project->getStoreviewDst())
66
  ->getFirstItem();
67
 
68
  $value->addData(
69
  [
70
+ 'option_id' => (int)$option->getAttribute('id'),
71
  'store_id' => $project->getStoreviewDst(),
72
+ 'value' => $option->getElementsByTagName('OptionName')[0]->textContent,
73
  ]
74
  );
75
 
app/code/community/Eurotext/TranslationManager/Model/Import/Project/Categories.php CHANGED
@@ -35,7 +35,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Categories
35
  {
36
  $doc = new DOMDocument();
37
  $doc->load($filename);
38
- $categories = $doc->getElementsByTagName("category");
39
  foreach ($categories as $categoryNode) {
40
  $fieldNodes = $categoryNode->childNodes;
41
  $id = 0;
@@ -45,9 +45,9 @@ class Eurotext_TranslationManager_Model_Import_Project_Categories
45
  $nodeName = trim($fieldNode->nodeName);
46
  $nodeContent = trim($fieldNode->textContent);
47
 
48
- if ($nodeName != "") {
49
- if ($nodeName == "Id") {
50
- $id = intval($nodeContent);
51
  }
52
  if ('custom_attributes' == $nodeName) {
53
  $fields[$nodeName] = $fieldNode;
@@ -81,7 +81,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Categories
81
  if (!$hasUrlKey) {
82
  // Check if urlkey is already set:
83
  $urlKey = Mage::getResourceModel('catalog/category')
84
- ->getAttributeRawValue($id, "url_key", $project->getStoreviewDst());
85
 
86
  if (!$urlKey) {
87
  // setting null will force magento to generate the urlkey using the product-name
35
  {
36
  $doc = new DOMDocument();
37
  $doc->load($filename);
38
+ $categories = $doc->getElementsByTagName('category');
39
  foreach ($categories as $categoryNode) {
40
  $fieldNodes = $categoryNode->childNodes;
41
  $id = 0;
45
  $nodeName = trim($fieldNode->nodeName);
46
  $nodeContent = trim($fieldNode->textContent);
47
 
48
+ if ($nodeName != '') {
49
+ if ($nodeName == 'Id') {
50
+ $id = (int)$nodeContent;
51
  }
52
  if ('custom_attributes' == $nodeName) {
53
  $fields[$nodeName] = $fieldNode;
81
  if (!$hasUrlKey) {
82
  // Check if urlkey is already set:
83
  $urlKey = Mage::getResourceModel('catalog/category')
84
+ ->getAttributeRawValue($id, 'url_key', $project->getStoreviewDst());
85
 
86
  if (!$urlKey) {
87
  // setting null will force magento to generate the urlkey using the product-name
app/code/community/Eurotext/TranslationManager/Model/Import/Project/CmsBlocks.php CHANGED
@@ -21,7 +21,7 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsBlocks
21
  {
22
  $doc = new DOMDocument();
23
  $doc->load($filename);
24
- $cmsSites = $doc->getElementsByTagName("cms-site");
25
  foreach ($cmsSites as $cmsSite) {
26
  try {
27
  $this->importBlock($cmsSite, $project);
@@ -91,11 +91,11 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsBlocks
91
  $nodeName = trim($fieldNode->nodeName);
92
  $nodeContent = trim($fieldNode->textContent);
93
 
94
- if ($nodeName != "") {
95
- if ($nodeName == "Id") {
96
- $id = intval($nodeContent);
97
- } elseif ($nodeName == "StoreviewDst") {
98
- $StoreviewDst = intval($nodeContent);
99
  } else {
100
  $fields[$nodeName] = $nodeContent;
101
  }
@@ -103,7 +103,6 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsBlocks
103
  }
104
 
105
  if ($id > 0) {
106
- $blockDst = null;
107
  /** @var $blockSrc Mage_Cms_Model_Block */
108
  $blockSrc = Mage::getModel('cms/block')->load($id);
109
 
21
  {
22
  $doc = new DOMDocument();
23
  $doc->load($filename);
24
+ $cmsSites = $doc->getElementsByTagName('cms-site');
25
  foreach ($cmsSites as $cmsSite) {
26
  try {
27
  $this->importBlock($cmsSite, $project);
91
  $nodeName = trim($fieldNode->nodeName);
92
  $nodeContent = trim($fieldNode->textContent);
93
 
94
+ if ($nodeName != '') {
95
+ if ($nodeName == 'Id') {
96
+ $id = (int)$nodeContent;
97
+ } elseif ($nodeName == 'StoreviewDst') {
98
+ $StoreviewDst = (int)$nodeContent;
99
  } else {
100
  $fields[$nodeName] = $nodeContent;
101
  }
103
  }
104
 
105
  if ($id > 0) {
 
106
  /** @var $blockSrc Mage_Cms_Model_Block */
107
  $blockSrc = Mage::getModel('cms/block')->load($id);
108
 
app/code/community/Eurotext/TranslationManager/Model/Import/Project/CmsPages.php CHANGED
@@ -13,7 +13,7 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsPages
13
  {
14
  $doc = new DOMDocument();
15
  $doc->load($fullFilename);
16
- $cmsSites = $doc->getElementsByTagName("cms-site");
17
  foreach ($cmsSites as $cmsSite) {
18
  try {
19
  $this->importPage($cmsSite, $project, $fullFilename);
@@ -43,9 +43,10 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsPages
43
  }
44
 
45
  /**
46
- * @param DOMDocument $cmsSite
47
  * @param Eurotext_TranslationManager_Model_Project $project
48
- * @param $fullFilename
 
49
  * @throws Exception
50
  */
51
  private function importPage(DOMElement $cmsSite, Eurotext_TranslationManager_Model_Project $project, $fullFilename)
@@ -63,9 +64,9 @@ class Eurotext_TranslationManager_Model_Import_Project_CmsPages
63
  $nodeName = trim($fieldNode->nodeName);
64
  $nodeContent = trim($fieldNode->textContent);
65
 
66
- if ($nodeName != "") {
67
- if ($nodeName == "Id") {
68
- $id = intval($nodeContent);
69
  } else {
70
  $fields[$nodeName] = $nodeContent;
71
  }
13
  {
14
  $doc = new DOMDocument();
15
  $doc->load($fullFilename);
16
+ $cmsSites = $doc->getElementsByTagName('cms-site');
17
  foreach ($cmsSites as $cmsSite) {
18
  try {
19
  $this->importPage($cmsSite, $project, $fullFilename);
43
  }
44
 
45
  /**
46
+ * @param DOMDocument|DOMElement $cmsSite
47
  * @param Eurotext_TranslationManager_Model_Project $project
48
+ * @param string $fullFilename
49
+ * @throws Eurotext_TranslationManager_Model_Import_Project_Exception_MissingEntity
50
  * @throws Exception
51
  */
52
  private function importPage(DOMElement $cmsSite, Eurotext_TranslationManager_Model_Project $project, $fullFilename)
64
  $nodeName = trim($fieldNode->nodeName);
65
  $nodeContent = trim($fieldNode->textContent);
66
 
67
+ if ($nodeName != '') {
68
+ if ($nodeName == 'Id') {
69
+ $id = (int)$nodeContent;
70
  } else {
71
  $fields[$nodeName] = $nodeContent;
72
  }
app/code/community/Eurotext/TranslationManager/Model/Import/Project/EmailTemplates.php CHANGED
@@ -119,8 +119,8 @@ $text
119
  HTML;
120
  $file = Mage::getBaseDir('app') . '/locale/' . $project->getStoreviewDstLocale() . '/template' . $path;
121
  $dir = dirname($file);
122
- if (!is_dir($dir)) {
123
- mkdir($dir, 0777, true);
124
  }
125
  file_put_contents($file, $html);
126
  }
119
  HTML;
120
  $file = Mage::getBaseDir('app') . '/locale/' . $project->getStoreviewDstLocale() . '/template' . $path;
121
  $dir = dirname($file);
122
+ if (!@mkdir($dir, 0777, true) && !is_dir($dir)) {
123
+ throw new Exception(sprintf('Directory %s could not be created.', $dir));
124
  }
125
  file_put_contents($file, $html);
126
  }
app/code/community/Eurotext/TranslationManager/Model/Import/Project/LocaleCsvFiles.php CHANGED
@@ -30,8 +30,8 @@ class Eurotext_TranslationManager_Model_Import_Project_LocaleCsvFiles
30
  private function createCsvDirectory($path)
31
  {
32
  $csvDirectory = dirname($path);
33
- if (!is_dir($csvDirectory)) {
34
- mkdir($csvDirectory, 0777, true);
35
  }
36
  }
37
 
@@ -57,7 +57,7 @@ class Eurotext_TranslationManager_Model_Import_Project_LocaleCsvFiles
57
  private function readNewTranslationsFromXml($doc, $path, $translations)
58
  {
59
  /** @var $newTranslations DOMNode */
60
- $newTranslations = $doc->getElementsByTagName("translation")[0];
61
 
62
  foreach ($newTranslations->childNodes as $line) {
63
  $originalString = null;
@@ -135,9 +135,8 @@ class Eurotext_TranslationManager_Model_Import_Project_LocaleCsvFiles
135
  /** @var DOMElement $node */
136
  $node = $doc->getElementsByTagName('translation')[0];
137
  $relativeDestinationFile = $node->getAttribute('dst_filename');
138
- $destinationFile = Mage::getBaseDir('app') . $relativeDestinationFile;
139
 
140
- return $destinationFile;
141
  }
142
 
143
  /**
30
  private function createCsvDirectory($path)
31
  {
32
  $csvDirectory = dirname($path);
33
+ if (!@mkdir($csvDirectory, 0777, true) && !is_dir($csvDirectory)) {
34
+ throw new Exception(sprintf('Directory %s could not be created.', $csvDirectory));
35
  }
36
  }
37
 
57
  private function readNewTranslationsFromXml($doc, $path, $translations)
58
  {
59
  /** @var $newTranslations DOMNode */
60
+ $newTranslations = $doc->getElementsByTagName('translation')[0];
61
 
62
  foreach ($newTranslations->childNodes as $line) {
63
  $originalString = null;
135
  /** @var DOMElement $node */
136
  $node = $doc->getElementsByTagName('translation')[0];
137
  $relativeDestinationFile = $node->getAttribute('dst_filename');
 
138
 
139
+ return Mage::getBaseDir('app') . $relativeDestinationFile;
140
  }
141
 
142
  /**
app/code/community/Eurotext/TranslationManager/Model/Import/Project/Product.php CHANGED
@@ -20,7 +20,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
20
  /**
21
  * @var string[]
22
  */
23
- private $ignoreFields = ["#text", "Url"];
24
 
25
  /**
26
  * @var mixed[]
@@ -81,7 +81,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
81
  $this->helper->log('=== Importing Products ===');
82
 
83
  /** @var $article DOMElement */
84
- foreach ($this->domDocument->getElementsByTagName("article") as $article) {
85
  try {
86
  $product = $this->productLoader->load(
87
  $this->getProductIdFromXml($article),
@@ -140,9 +140,9 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
140
  $nodeName = trim($fieldNode->nodeName);
141
  $nodeContent = trim($fieldNode->textContent);
142
 
143
- if ($nodeName != "") {
144
- if ($nodeName == "Id") {
145
- $id = intval($nodeContent);
146
  } else {
147
  if ('custom_attributes' == $nodeName) {
148
  $fields[$nodeName] = $fieldNode;
@@ -166,11 +166,11 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
166
  $product->setDataUsingMethod('url_key', $value);
167
  continue;
168
  }
169
- if ($key == "Images") {
170
  $this->processProductImages($article, $product);
171
  continue;
172
  }
173
- if ($key == "Options") {
174
  $this->processOptionsForProduct($article);
175
  continue;
176
  }
@@ -194,20 +194,19 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
194
  */
195
  private function processProductImages(DOMElement $article, Mage_Catalog_Model_Product $product)
196
  {
 
197
 
198
- $imageNodes = $article->getElementsByTagName("Image");
199
-
200
- if($imageNodes->length){
201
  $product->getMediaGalleryImages();
202
  }
203
 
204
  foreach ($imageNodes as $imageNode) {
205
  /** @var $imageNode DomElement */
206
- $imgValueId = intval($imageNode->getAttributeNode("value_id")->value);
207
- $imgPosition = intval($imageNode->getAttributeNode("position")->value);
208
- $imgDisabled = intval($imageNode->getAttributeNode("disabled")->value);
209
 
210
- $labelNodes = $imageNode->getElementsByTagName("Label");
211
  $imgLabel = '';
212
  foreach ($labelNodes as $labelNode) {
213
  $imgLabel = trim($labelNode->textContent);
@@ -223,20 +222,20 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
223
  */
224
  private function processOptionsForProduct($article)
225
  {
226
- $optionNodes = $article->getElementsByTagName("Option");
227
  foreach ($optionNodes as $optionNode) {
228
  /** @var $optionNode DOMElement */
229
- $optionId = intval($optionNode->getAttributeNode("Id")->value);
230
- $title = trim($this->getXMLChildNodeText($optionNode, "Title", ""));
231
  if ($title) {
232
  Mage::getResourceModel('eurotext_translationmanager/catalog_product_option_title')
233
  ->updateTitleForStore($optionId, $title, $this->getStoreId());
234
  }
235
 
236
- $OptionValueNodes = $article->getElementsByTagName("Value");
237
  foreach ($OptionValueNodes as $OptionValueNode) {
238
- $optionValueId = intval($OptionValueNode->getAttributeNode("Id")->value);
239
- $optionValueTitle = trim($this->getXMLChildNodeText($OptionValueNode, "Title", ""));
240
 
241
  if ($optionValueTitle) {
242
  Mage::getResourceModel('eurotext_translationmanager/catalog_product_option_type_title')
@@ -253,7 +252,7 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
253
  *
254
  * @return string
255
  */
256
- private function getXMLChildNodeText(DOMElement $element, $childnodeName, $defaultValue = "")
257
  {
258
  $childNode = $this->getXMLChildNode($element, $childnodeName);
259
  if ($childNode == null) {
@@ -274,10 +273,8 @@ class Eurotext_TranslationManager_Model_Import_Project_Product
274
  {
275
  $childNodes = $element->childNodes;
276
  foreach ($childNodes as $childNode) {
277
- if ($childNode->nodeType == XML_ELEMENT_NODE) {
278
- if ($childNode->tagName == $childnodeName) {
279
- return $childNode;
280
- }
281
  }
282
  }
283
 
20
  /**
21
  * @var string[]
22
  */
23
+ private $ignoreFields = ['#text', 'Url'];
24
 
25
  /**
26
  * @var mixed[]
81
  $this->helper->log('=== Importing Products ===');
82
 
83
  /** @var $article DOMElement */
84
+ foreach ($this->domDocument->getElementsByTagName('article') as $article) {
85
  try {
86
  $product = $this->productLoader->load(
87
  $this->getProductIdFromXml($article),
140
  $nodeName = trim($fieldNode->nodeName);
141
  $nodeContent = trim($fieldNode->textContent);
142
 
143
+ if ($nodeName != '') {
144
+ if ($nodeName == 'Id') {
145
+ $id = (int)$nodeContent;
146
  } else {
147
  if ('custom_attributes' == $nodeName) {
148
  $fields[$nodeName] = $fieldNode;
166
  $product->setDataUsingMethod('url_key', $value);
167
  continue;
168
  }
169
+ if ($key == 'Images') {
170
  $this->processProductImages($article, $product);
171
  continue;
172
  }
173
+ if ($key == 'Options') {
174
  $this->processOptionsForProduct($article);
175
  continue;
176
  }
194
  */
195
  private function processProductImages(DOMElement $article, Mage_Catalog_Model_Product $product)
196
  {
197
+ $imageNodes = $article->getElementsByTagName('Image');
198
 
199
+ if ($imageNodes->length) {
 
 
200
  $product->getMediaGalleryImages();
201
  }
202
 
203
  foreach ($imageNodes as $imageNode) {
204
  /** @var $imageNode DomElement */
205
+ $imgValueId = (int)$imageNode->getAttributeNode('value_id')->value;
206
+ $imgPosition = (int)$imageNode->getAttributeNode('position')->value;
207
+ $imgDisabled = (int)$imageNode->getAttributeNode('disabled')->value;
208
 
209
+ $labelNodes = $imageNode->getElementsByTagName('Label');
210
  $imgLabel = '';
211
  foreach ($labelNodes as $labelNode) {
212
  $imgLabel = trim($labelNode->textContent);
222
  */
223
  private function processOptionsForProduct($article)
224
  {
225
+ $optionNodes = $article->getElementsByTagName('Option');
226
  foreach ($optionNodes as $optionNode) {
227
  /** @var $optionNode DOMElement */
228
+ $optionId = (int)$optionNode->getAttributeNode('Id')->value;
229
+ $title = trim($this->getXMLChildNodeText($optionNode, 'Title', ''));
230
  if ($title) {
231
  Mage::getResourceModel('eurotext_translationmanager/catalog_product_option_title')
232
  ->updateTitleForStore($optionId, $title, $this->getStoreId());
233
  }
234
 
235
+ $OptionValueNodes = $article->getElementsByTagName('Value');
236
  foreach ($OptionValueNodes as $OptionValueNode) {
237
+ $optionValueId = (int)$OptionValueNode->getAttributeNode('Id')->value;
238
+ $optionValueTitle = trim($this->getXMLChildNodeText($OptionValueNode, 'Title', ''));
239
 
240
  if ($optionValueTitle) {
241
  Mage::getResourceModel('eurotext_translationmanager/catalog_product_option_type_title')
252
  *
253
  * @return string
254
  */
255
+ private function getXMLChildNodeText(DOMElement $element, $childnodeName, $defaultValue = '')
256
  {
257
  $childNode = $this->getXMLChildNode($element, $childnodeName);
258
  if ($childNode == null) {
273
  {
274
  $childNodes = $element->childNodes;
275
  foreach ($childNodes as $childNode) {
276
+ if ($childNode->nodeType == XML_ELEMENT_NODE && $childNode->tagName == $childnodeName) {
277
+ return $childNode;
 
 
278
  }
279
  }
280
 
app/code/community/Eurotext/TranslationManager/Model/Import/Queue.php CHANGED
@@ -16,7 +16,8 @@ class Eurotext_TranslationManager_Model_Import_Queue
16
  }
17
 
18
  /**
19
- * @param string $controlFile
 
20
  */
21
  public function addControlXmlToQueue(Eurotext_TranslationManager_Model_Project $project, $controlFile)
22
  {
16
  }
17
 
18
  /**
19
+ * @param Eurotext_TranslationManager_Model_Project $project
20
+ * @param string $controlFile
21
  */
22
  public function addControlXmlToQueue(Eurotext_TranslationManager_Model_Project $project, $controlFile)
23
  {
app/code/community/Eurotext/TranslationManager/Model/Import/Validator.php CHANGED
@@ -32,7 +32,7 @@ class Eurotext_TranslationManager_Model_Import_Validator
32
  if (!ctype_digit($projectIdFromXml)) {
33
  Mage::throwException(
34
  Mage::helper('eurotext_translationmanager')->__(
35
- "Could not read project-id from Description-Field in control.xml"
36
  )
37
  );
38
  }
@@ -63,7 +63,7 @@ class Eurotext_TranslationManager_Model_Import_Validator
63
  {
64
  $doc = new DOMDocument();
65
  $doc->load($controlFile);
66
- $nodes = $doc->getElementsByTagName("Description");
67
  $projectIdFromXml = null;
68
  foreach ($nodes as $node) {
69
  $description = $node->textContent;
32
  if (!ctype_digit($projectIdFromXml)) {
33
  Mage::throwException(
34
  Mage::helper('eurotext_translationmanager')->__(
35
+ 'Could not read project-id from Description-Field in control.xml'
36
  )
37
  );
38
  }
63
  {
64
  $doc = new DOMDocument();
65
  $doc->load($controlFile);
66
+ $nodes = $doc->getElementsByTagName('Description');
67
  $projectIdFromXml = null;
68
  foreach ($nodes as $node) {
69
  $description = $node->textContent;
app/code/community/Eurotext/TranslationManager/Model/Observer.php CHANGED
@@ -10,7 +10,7 @@ class Eurotext_TranslationManager_Model_Observer
10
  /**
11
  * @var string
12
  */
13
- private $subject = "Magento translationMANAGER: Registrierung";
14
 
15
  /**
16
  * @var string[]
@@ -139,10 +139,10 @@ class Eurotext_TranslationManager_Model_Observer
139
  */
140
  private function composeEmail($changes, $newValues, $prevValues)
141
  {
142
- $this->addLineHtml("Hallo,");
143
- $this->addLineHtml("Ein Kunde hat sich via Magento-Modul neu registriert");
144
  if ($this->alreadyRegistered) {
145
- $this->subject = "Update - Ein Magento translationMANAGER-Kunde hat seine Registrierungsdaten geändert";
146
 
147
  if (!empty($changes)) {
148
  $this->addChangesToEmailBody($changes, $newValues, $prevValues);
@@ -180,14 +180,14 @@ class Eurotext_TranslationManager_Model_Observer
180
  */
181
  private function addChangesToEmailBody($changes, $newValues, $prevValues)
182
  {
183
- $this->addLineHtml("Ein Kunde hat im Magento-Modul seine Kontaktdaten geändert:");
184
 
185
  $customerId = $this->configHelper->getCustomerId();
186
 
187
  if ($customerId) {
188
- $this->addLineHtml("Kundennummer: " . $customerId);
189
  } else {
190
- $this->addLineHtml("Bisher hat der Kunde keine gültige Kundennummer eingetragen.");
191
  }
192
 
193
  $this->addHorizontalRuler();
@@ -243,7 +243,7 @@ class Eurotext_TranslationManager_Model_Observer
243
  private function updateConfig()
244
  {
245
  $this->configHelper->setEmailSent();
246
- $this->configHelper->setEmailSentDate(date("d.m.Y H:i:s (T)"));
247
  }
248
 
249
  /**
10
  /**
11
  * @var string
12
  */
13
+ private $subject = 'Magento translationMANAGER: Registrierung';
14
 
15
  /**
16
  * @var string[]
139
  */
140
  private function composeEmail($changes, $newValues, $prevValues)
141
  {
142
+ $this->addLineHtml('Hallo,');
143
+ $this->addLineHtml('Ein Kunde hat sich via Magento-Modul neu registriert');
144
  if ($this->alreadyRegistered) {
145
+ $this->subject = 'Update - Ein Magento translationMANAGER-Kunde hat seine Registrierungsdaten geändert';
146
 
147
  if (!empty($changes)) {
148
  $this->addChangesToEmailBody($changes, $newValues, $prevValues);
180
  */
181
  private function addChangesToEmailBody($changes, $newValues, $prevValues)
182
  {
183
+ $this->addLineHtml('Ein Kunde hat im Magento-Modul seine Kontaktdaten geändert:');
184
 
185
  $customerId = $this->configHelper->getCustomerId();
186
 
187
  if ($customerId) {
188
+ $this->addLineHtml('Kundennummer: ' . $customerId);
189
  } else {
190
+ $this->addLineHtml('Bisher hat der Kunde keine gültige Kundennummer eingetragen.');
191
  }
192
 
193
  $this->addHorizontalRuler();
243
  private function updateConfig()
244
  {
245
  $this->configHelper->setEmailSent();
246
+ $this->configHelper->setEmailSentDate(date('d.m.Y H:i:s (T)'));
247
  }
248
 
249
  /**
app/code/community/Eurotext/TranslationManager/Model/ProductLoader.php CHANGED
@@ -2,6 +2,10 @@
2
 
3
  class Eurotext_TranslationManager_Model_ProductLoader
4
  {
 
 
 
 
5
  /**
6
  * @param int $productId
7
  * @param int $storeId
@@ -17,7 +21,7 @@ class Eurotext_TranslationManager_Model_ProductLoader
17
  Mage::helper('eurotext_translationmanager')->__("Wrong Product ID '%s'", $productId)
18
  );
19
  }
20
- Mage::log("Wrong Product (ID: <no int>)");
21
  Mage::throwException(
22
  Mage::helper('eurotext_translationmanager')->__("Wrong Product ID '<no int>'", $productId)
23
  );
@@ -34,7 +38,20 @@ class Eurotext_TranslationManager_Model_ProductLoader
34
  $productId
35
  );
36
  }
37
- $product->setUrlKey(false);
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
  return $product;
40
  }
2
 
3
  class Eurotext_TranslationManager_Model_ProductLoader
4
  {
5
+ private $requiredAttributes = [
6
+ 'entity_id', 'attribute_set_id', 'store_id', 'media_gallery'
7
+ ];
8
+
9
  /**
10
  * @param int $productId
11
  * @param int $storeId
21
  Mage::helper('eurotext_translationmanager')->__("Wrong Product ID '%s'", $productId)
22
  );
23
  }
24
+ Mage::log('Wrong Product (ID: <no int>)');
25
  Mage::throwException(
26
  Mage::helper('eurotext_translationmanager')->__("Wrong Product ID '<no int>'", $productId)
27
  );
38
  $productId
39
  );
40
  }
41
+
42
+ $requiredAttributes = $this->requiredAttributes;
43
+ $data = $product->getData();
44
+ array_walk(
45
+ $data,
46
+ function (&$value, $key) use ($requiredAttributes) {
47
+ if (in_array($key, $requiredAttributes, true)) {
48
+ return;
49
+ }
50
+ $value = false;
51
+ }
52
+ );
53
+
54
+ $product->setData($data);
55
 
56
  return $product;
57
  }
app/code/community/Eurotext/TranslationManager/Model/Project.php CHANGED
@@ -22,7 +22,6 @@
22
  * @method int getFilterStock()
23
  * @method int getFilterProductTyp()
24
  * @method int getCreatedAt()
25
- * @method setId(int $id)
26
  * @method setDeleted(bool $deleted)
27
  * @method setCreateId(int $created)
28
  * @method setUpatedAt(int $timestamp)
@@ -262,10 +261,7 @@ class Eurotext_TranslationManager_Model_Project extends Mage_Core_Model_Abstract
262
  $this->setStoreviewDstLocale(Mage::getStoreConfig('general/locale/code', $this->getStoreviewDst()));
263
  }
264
 
265
- /** @var Eurotext_TranslationManager_Model_Project $project */
266
- $project = parent::_afterLoad();
267
-
268
- return $project;
269
  }
270
 
271
  /**
22
  * @method int getFilterStock()
23
  * @method int getFilterProductTyp()
24
  * @method int getCreatedAt()
 
25
  * @method setDeleted(bool $deleted)
26
  * @method setCreateId(int $created)
27
  * @method setUpatedAt(int $timestamp)
261
  $this->setStoreviewDstLocale(Mage::getStoreConfig('general/locale/code', $this->getStoreviewDst()));
262
  }
263
 
264
+ return parent::_afterLoad();
 
 
 
265
  }
266
 
267
  /**
app/code/community/Eurotext/TranslationManager/Model/Resource/Csv/Collection.php CHANGED
@@ -50,10 +50,8 @@ class Eurotext_TranslationManager_Model_Resource_Csv_Collection
50
 
51
  $this->setFilesFilter('#^[a-zA-Z0-9_]+\.csv$#');
52
  $this->setDisallowedFilesFilter(false);
53
- /** @var Eurotext_TranslationManager_Model_Resource_Csv_Collection $collection */
54
- $collection = parent::loadData($printQuery, $logQuery);
55
 
56
- return $collection;
57
  }
58
 
59
  /**
@@ -66,6 +64,7 @@ class Eurotext_TranslationManager_Model_Resource_Csv_Collection
66
 
67
  /**
68
  * @param string $language
 
69
  * @return $this
70
  */
71
  public function setTargetPathByLanguageAndStore($language, $store)
@@ -92,7 +91,7 @@ class Eurotext_TranslationManager_Model_Resource_Csv_Collection
92
  */
93
  public function setPageSize($size)
94
  {
95
- /** @var $thisCollection $this */
96
  $thisCollection = parent::setPageSize($size + 1);
97
 
98
  return $thisCollection;
50
 
51
  $this->setFilesFilter('#^[a-zA-Z0-9_]+\.csv$#');
52
  $this->setDisallowedFilesFilter(false);
 
 
53
 
54
+ return parent::loadData($printQuery, $logQuery);
55
  }
56
 
57
  /**
64
 
65
  /**
66
  * @param string $language
67
+ * @param string $store
68
  * @return $this
69
  */
70
  public function setTargetPathByLanguageAndStore($language, $store)
91
  */
92
  public function setPageSize($size)
93
  {
94
+ /** @var $thisCollection Eurotext_TranslationManager_Model_Resource_Csv_Collection */
95
  $thisCollection = parent::setPageSize($size + 1);
96
 
97
  return $thisCollection;
app/code/community/Eurotext/TranslationManager/Model/Xml/Import/Cms/BlockReader.php CHANGED
@@ -7,11 +7,11 @@ class Eurotext_TranslationManager_Model_Xml_Import_Cms_BlockReader implements It
7
  */
8
  private $domDocument;
9
 
10
- private $intNodes = array(
11
  'StoreviewSrc',
12
  'StoreviewDst',
13
  'Id',
14
- );
15
 
16
  public function __construct($xmlFile)
17
  {
@@ -30,7 +30,7 @@ class Eurotext_TranslationManager_Model_Xml_Import_Cms_BlockReader implements It
30
  {
31
 
32
  $xmlBlocks = $this->domDocument->getElementsByTagName('cms-site');
33
- $blocks = array();
34
  /** @var $xmlBlock DOMElement */
35
  foreach ($xmlBlocks as $xmlBlock) {
36
  $block = Mage::getModel('eurotext_translationmanager/xml_import_cms_block');
@@ -43,10 +43,9 @@ class Eurotext_TranslationManager_Model_Xml_Import_Cms_BlockReader implements It
43
  $nodeName = $node->nodeName;
44
  $nodeValue = (string)$node->textContent;
45
 
 
46
  if (in_array($nodeName, $this->intNodes)) {
47
  $block->$nodeName = (int)$nodeValue;
48
- } else {
49
- $block->$nodeName = $nodeValue;
50
  }
51
  }
52
 
7
  */
8
  private $domDocument;
9
 
10
+ private $intNodes = [
11
  'StoreviewSrc',
12
  'StoreviewDst',
13
  'Id',
14
+ ];
15
 
16
  public function __construct($xmlFile)
17
  {
30
  {
31
 
32
  $xmlBlocks = $this->domDocument->getElementsByTagName('cms-site');
33
+ $blocks = [];
34
  /** @var $xmlBlock DOMElement */
35
  foreach ($xmlBlocks as $xmlBlock) {
36
  $block = Mage::getModel('eurotext_translationmanager/xml_import_cms_block');
43
  $nodeName = $node->nodeName;
44
  $nodeValue = (string)$node->textContent;
45
 
46
+ $block->$nodeName = $nodeValue;
47
  if (in_array($nodeName, $this->intNodes)) {
48
  $block->$nodeName = (int)$nodeValue;
 
 
49
  }
50
  }
51
 
app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/.DS_Store CHANGED
Binary file
app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/Project/ExportController.php CHANGED
@@ -37,20 +37,20 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ExportController ex
37
  $block = $this->getLayout()->getBlock('et.tm.response.ajax');
38
 
39
  $request = $this->getRequest();
40
- $step = intval($request->getParam("step"));
41
- $offset = intval($request->getParam("offset"));
42
- $project_id = intval($request->getParam("project_id"));
43
 
44
  $project = $this->getProject($project_id);
45
 
46
- $block->setStatusMsg($this->__("Please wait …"));
47
- $block->setStatusCode("ok");
48
  $block->setStep($step);
49
  $block->setFinished(false);
50
  try {
51
  Mage::getModel('eurotext_translationmanager/export_project')->export($step, $block, $project, $offset);
52
  } catch (Exception $e) {
53
- $block->setStatusCode("error");
54
  $block->setStatusMsg($e->getMessage());
55
  }
56
  $response->setBody($block->toJson());
37
  $block = $this->getLayout()->getBlock('et.tm.response.ajax');
38
 
39
  $request = $this->getRequest();
40
+ $step = (int)$request->getParam('step');
41
+ $offset = (int)$request->getParam('offset');
42
+ $project_id = (int)$request->getParam('project_id');
43
 
44
  $project = $this->getProject($project_id);
45
 
46
+ $block->setStatusMsg($this->__('Please wait …'));
47
+ $block->setStatusCode('ok');
48
  $block->setStep($step);
49
  $block->setFinished(false);
50
  try {
51
  Mage::getModel('eurotext_translationmanager/export_project')->export($step, $block, $project, $offset);
52
  } catch (Exception $e) {
53
+ $block->setStatusCode('error');
54
  $block->setStatusMsg($e->getMessage());
55
  }
56
  $response->setBody($block->toJson());
app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/Project/ImportController.php CHANGED
@@ -39,7 +39,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ImportController ex
39
 
40
  return;
41
  } catch (Exception $e) {
42
- $message = $this->getHelper()->__("Error Message: %s", $e->getMessage());
43
  $this->setWarningAndRedirect($message);
44
 
45
  return;
@@ -106,7 +106,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ImportController ex
106
  {
107
  $this->getResponse()->setHeader('Content-type', 'application/json', true);
108
 
109
- $controlFile = $this->getTempDirectory() . DIRECTORY_SEPARATOR . "control.xml";
110
  $projectId = $this->getProjectIdFromSession();
111
  try {
112
  Mage::getModel('eurotext_translationmanager/import_validator')->validate($projectId, $controlFile);
@@ -203,9 +203,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ImportController ex
203
  */
204
  private function getTempDirectory()
205
  {
206
- $dir = Mage::getBaseDir('tmp') . '/eurotext';
207
-
208
- return $dir;
209
  }
210
 
211
  /**
@@ -217,7 +215,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ImportController ex
217
  return;
218
  }
219
 
220
- if (!mkdir($dir)) {
221
  $baseDir = Mage::getBaseDir('var');
222
  $this->getHelper()->log('Temporary directory could not be created in ' . $baseDir, Zend_Log::CRIT);
223
  throw new Magento_Exception('Eurotext temporary directory could not be created.');
@@ -237,7 +235,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_Project_ImportController ex
237
  */
238
  private function createHtaccessFile($dir)
239
  {
240
- $htaccessFilename = $dir . DS . ".htaccess";
241
  if (!is_file($htaccessFilename)) {
242
  file_put_contents($htaccessFilename, "# Eurotext Temp folder\r\nOrder Deny,Allow\r\nDeny From All");
243
  }
39
 
40
  return;
41
  } catch (Exception $e) {
42
+ $message = $this->getHelper()->__('Error Message: %s', $e->getMessage());
43
  $this->setWarningAndRedirect($message);
44
 
45
  return;
106
  {
107
  $this->getResponse()->setHeader('Content-type', 'application/json', true);
108
 
109
+ $controlFile = $this->getTempDirectory() . DIRECTORY_SEPARATOR . 'control.xml';
110
  $projectId = $this->getProjectIdFromSession();
111
  try {
112
  Mage::getModel('eurotext_translationmanager/import_validator')->validate($projectId, $controlFile);
203
  */
204
  private function getTempDirectory()
205
  {
206
+ return Mage::getBaseDir('tmp') . '/eurotext';
 
 
207
  }
208
 
209
  /**
215
  return;
216
  }
217
 
218
+ if (!@mkdir($dir) && !is_dir($dir)) {
219
  $baseDir = Mage::getBaseDir('var');
220
  $this->getHelper()->log('Temporary directory could not be created in ' . $baseDir, Zend_Log::CRIT);
221
  throw new Magento_Exception('Eurotext temporary directory could not be created.');
235
  */
236
  private function createHtaccessFile($dir)
237
  {
238
+ $htaccessFilename = $dir . DS . '.htaccess';
239
  if (!is_file($htaccessFilename)) {
240
  file_put_contents($htaccessFilename, "# Eurotext Temp folder\r\nOrder Deny,Allow\r\nDeny From All");
241
  }
app/code/community/Eurotext/TranslationManager/controllers/Adminhtml/Eurotext/ProjectController.php CHANGED
@@ -74,7 +74,9 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
74
  $model = Mage::getModel('eurotext_translationmanager/project');
75
  $model->load($id);
76
  if (!$model->getId()) {
77
- Mage::throwException($this->getHelper()->__('Unable to find a project with id "%s" to delete.', $id));
 
 
78
  }
79
  $model->delete();
80
 
@@ -114,7 +116,12 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
114
  /** @var $project Eurotext_TranslationManager_Model_Project */
115
  $project = $this->loadAndRegisterProject($this->getRequest()->getParam('project_id'));
116
  if (!$project->isEditable()) {
117
- $this->getSession()->addNotice($this->getHelper()->__('Project "%s" was exported. You can\'t edit it anymore.', $project->getProjectName()));
 
 
 
 
 
118
  }
119
  $this->loadLayout();
120
  $this->renderLayout();
@@ -266,6 +273,7 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
266
 
267
  /**
268
  * @param int[] $products
 
269
  */
270
  private function renderProductGridAndCategoryTree($products, $categories)
271
  {
@@ -376,38 +384,45 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
376
  {
377
  $project->addData($this->getRequest()->getParams());
378
  /** @noinspection PhpAssignmentInConditionInspection */
379
- if ($productIds = $this->getRequest()->getParam('product_ids', null)) {
 
380
  $productIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($productIds);
381
  $project->setProducts($productIds);
382
  }
383
- $this->addProductsBySku($project, $productIds);
384
  /** @noinspection PhpAssignmentInConditionInspection */
385
- if ($categoryIds = $this->getRequest()->getParam('category_ids', null)) {
 
386
  $categoryIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($categoryIds);
387
  $project->setCategories($categoryIds);
388
  }
389
  /** @noinspection PhpAssignmentInConditionInspection */
390
- if ($cmsBlockIds = $this->getRequest()->getParam('cmsBlock_ids', null)) {
 
391
  $cmsBlockIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($cmsBlockIds);
392
  $project->setBlocks($cmsBlockIds);
393
  }
394
  /** @noinspection PhpAssignmentInConditionInspection */
395
- if ($cmsPageIds = $this->getRequest()->getParam('cmsPage_ids', null)) {
 
396
  $cmsPageIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($cmsPageIds);
397
  $project->setPages($cmsPageIds);
398
  }
399
  /** @noinspection PhpAssignmentInConditionInspection */
400
- if ($transactionEmailFilesFilenames = $this->getRequest()->getParam('transactionEmailFile_ids', null)) {
 
401
  $transactionEmailFilesFilenames = array_filter(explode('&', $transactionEmailFilesFilenames));
402
  $project->setTransactionEmailFiles($transactionEmailFilesFilenames);
403
  }
404
  /** @noinspection PhpAssignmentInConditionInspection */
405
- if ($mailDatabaseIds = $this->getRequest()->getParam('transactionEmailDatabase_ids', null)) {
 
406
  $mailDatabaseIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($mailDatabaseIds);
407
  $project->setTransactionEmailDatabase($mailDatabaseIds);
408
  }
409
  /** @noinspection PhpAssignmentInConditionInspection */
410
- if ($translationFileFilenames = $this->getRequest()->getParam('translateFiles_ids', null)) {
 
411
  $translationFileFilenames = array_filter(explode('&', $translationFileFilenames));
412
  $project->setTranslationFiles($translationFileFilenames);
413
  }
@@ -440,9 +455,8 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
440
 
441
  /**
442
  * @param Eurotext_TranslationManager_Model_Project $project
443
- * @param int[] $productIds
444
  */
445
- private function addProductsBySku(Eurotext_TranslationManager_Model_Project $project, $productIds)
446
  {
447
  $skus = $this->getBulkProducts($this->getRequest()->getParam('bulk_sku'));
448
  if ($skus) {
@@ -459,4 +473,12 @@ class Eurotext_TranslationManager_Adminhtml_Eurotext_ProjectController extends M
459
  );
460
  }
461
  }
 
 
 
 
 
 
 
 
462
  }
74
  $model = Mage::getModel('eurotext_translationmanager/project');
75
  $model->load($id);
76
  if (!$model->getId()) {
77
+ Mage::throwException(
78
+ $this->getHelper()->__('Unable to find a project with id "%s" to delete.', $id)
79
+ );
80
  }
81
  $model->delete();
82
 
116
  /** @var $project Eurotext_TranslationManager_Model_Project */
117
  $project = $this->loadAndRegisterProject($this->getRequest()->getParam('project_id'));
118
  if (!$project->isEditable()) {
119
+ $this->getSession()->addNotice(
120
+ $this->getHelper()->__(
121
+ 'Project "%s" was exported. You can\'t edit it anymore.',
122
+ $project->getProjectName()
123
+ )
124
+ );
125
  }
126
  $this->loadLayout();
127
  $this->renderLayout();
273
 
274
  /**
275
  * @param int[] $products
276
+ * @param int[] $categories
277
  */
278
  private function renderProductGridAndCategoryTree($products, $categories)
279
  {
384
  {
385
  $project->addData($this->getRequest()->getParams());
386
  /** @noinspection PhpAssignmentInConditionInspection */
387
+ if ($this->hasRequestParam('product_ids')) {
388
+ $productIds = $this->getRequest()->getParam('product_ids', null);
389
  $productIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($productIds);
390
  $project->setProducts($productIds);
391
  }
392
+ $this->addProductsBySku($project);
393
  /** @noinspection PhpAssignmentInConditionInspection */
394
+ if ($this->hasRequestParam('category_ids')) {
395
+ $categoryIds = $this->getRequest()->getParam('category_ids', null);
396
  $categoryIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($categoryIds);
397
  $project->setCategories($categoryIds);
398
  }
399
  /** @noinspection PhpAssignmentInConditionInspection */
400
+ if ($this->hasRequestParam('cmsBlock_ids')) {
401
+ $cmsBlockIds = $this->getRequest()->getParam('cmsBlock_ids', null);
402
  $cmsBlockIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($cmsBlockIds);
403
  $project->setBlocks($cmsBlockIds);
404
  }
405
  /** @noinspection PhpAssignmentInConditionInspection */
406
+ if ($this->hasRequestParam('cmsPage_ids')) {
407
+ $cmsPageIds = $this->getRequest()->getParam('cmsPage_ids', null);
408
  $cmsPageIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($cmsPageIds);
409
  $project->setPages($cmsPageIds);
410
  }
411
  /** @noinspection PhpAssignmentInConditionInspection */
412
+ if ($this->hasRequestParam('transactionEmailFile_ids')) {
413
+ $transactionEmailFilesFilenames = $this->getRequest()->getParam('transactionEmailFile_ids', null);
414
  $transactionEmailFilesFilenames = array_filter(explode('&', $transactionEmailFilesFilenames));
415
  $project->setTransactionEmailFiles($transactionEmailFilesFilenames);
416
  }
417
  /** @noinspection PhpAssignmentInConditionInspection */
418
+ if ($this->hasRequestParam('transactionEmailDatabase_ids')) {
419
+ $mailDatabaseIds = $this->getRequest()->getParam('transactionEmailDatabase_ids', null);
420
  $mailDatabaseIds = Mage::helper('adminhtml/js')->decodeGridSerializedInput($mailDatabaseIds);
421
  $project->setTransactionEmailDatabase($mailDatabaseIds);
422
  }
423
  /** @noinspection PhpAssignmentInConditionInspection */
424
+ if ($this->hasRequestParam('translateFiles_ids')) {
425
+ $translationFileFilenames = $this->getRequest()->getParam('translateFiles_ids', null);
426
  $translationFileFilenames = array_filter(explode('&', $translationFileFilenames));
427
  $project->setTranslationFiles($translationFileFilenames);
428
  }
455
 
456
  /**
457
  * @param Eurotext_TranslationManager_Model_Project $project
 
458
  */
459
+ private function addProductsBySku(Eurotext_TranslationManager_Model_Project $project)
460
  {
461
  $skus = $this->getBulkProducts($this->getRequest()->getParam('bulk_sku'));
462
  if ($skus) {
473
  );
474
  }
475
  }
476
+
477
+
478
+ private function hasRequestParam($name)
479
+ {
480
+ $params = $this->getRequest()->getParams();
481
+
482
+ return array_key_exists($name, $params);
483
+ }
484
  }
app/code/community/Eurotext/TranslationManager/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Eurotext_TranslationManager>
5
- <version>3.2.13</version>
6
  </Eurotext_TranslationManager>
7
  </modules>
8
  <global>
2
  <config>
3
  <modules>
4
  <Eurotext_TranslationManager>
5
+ <version>3.2.16</version>
6
  </Eurotext_TranslationManager>
7
  </modules>
8
  <global>
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/install-3.0.0.php CHANGED
@@ -162,7 +162,7 @@ $project = $con->newTable($this->getTable('eurotext_translationmanager/project')
162
 
163
  $con->createTable($project);
164
 
165
- $projectCategories = $con->newTable($this->getTable("eurotext_translationmanager/project_categories"))
166
  ->addColumn(
167
  'project_category_id',
168
  Varien_Db_Ddl_Table::TYPE_INTEGER,
162
 
163
  $con->createTable($project);
164
 
165
+ $projectCategories = $con->newTable($this->getTable('eurotext_translationmanager/project_categories'))
166
  ->addColumn(
167
  'project_category_id',
168
  Varien_Db_Ddl_Table::TYPE_INTEGER,
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-install-1.0.0.0.php CHANGED
@@ -6,52 +6,52 @@ $installer = $this;
6
  $installer->startSetup();
7
 
8
  try {
9
- $sql = "";
10
- $sql .= "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_config") . "` (";
11
- $sql .= " `config_key` varchar(255) NOT NULL,";
12
- $sql .= " `config_value` text NOT NULL,";
13
- $sql .= " PRIMARY KEY (`config_key`)";
14
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
15
  $installer->run($sql);
16
  } catch (Exception $e) {
17
  //void if table exists
18
  }
19
 
20
  try {
21
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_csv") . "` (";
22
- $sql .= " `line_hash` varchar(60) NOT NULL,";
23
- $sql .= " `project_id` bigint(20) NOT NULL,";
24
- $sql .= " `filename` varchar(255) NOT NULL,";
25
- $sql .= " `locale_dst` varchar(50) NOT NULL,";
26
  $sql .= " `translate_flag` smallint(6) NOT NULL DEFAULT '0',";
27
- $sql .= " `time_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,";
28
  $sql .= " `deleteflag` smallint(6) NOT NULL DEFAULT '0',";
29
- $sql .= " PRIMARY KEY (`line_hash`),";
30
- $sql .= " KEY `idx_filename` (`filename`),";
31
- $sql .= " KEY `idx_project_id` (`project_id`),";
32
- $sql .= " KEY `idx_locale_dst` (`locale_dst`)";
33
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
34
  $installer->run($sql);
35
  } catch (Exception $e) {
36
  //void if table exists
37
  }
38
 
39
  try {
40
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_csv_data") . "` (";
41
- $sql .= " `line_hash` varchar(60) NOT NULL,";
42
- $sql .= " `project_id` bigint(20) NOT NULL,";
43
- $sql .= " `filename` varchar(255) NOT NULL,";
44
  $sql .= " `csvline` int(11) NOT NULL DEFAULT '-1',";
45
- $sql .= " `locale_dst` varchar(50) NOT NULL,";
46
- $sql .= " `text_src` varchar(5000) NOT NULL,";
47
  $sql .= " `text_src_hash` varchar(100) NOT NULL DEFAULT '',";
48
- $sql .= " `text_dst` varchar(5000) NOT NULL,";
49
- $sql .= " PRIMARY KEY (`line_hash`),";
50
- $sql .= " KEY `project_id` (`project_id`),";
51
- $sql .= " KEY `filename` (`filename`),";
52
- $sql .= " KEY `text_src_hash` (`text_src_hash`),";
53
- $sql .= " KEY `locale_dst` (`locale_dst`)";
54
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
55
  $installer->run($sql);
56
  } catch
57
  (Exception $e) {
@@ -59,49 +59,49 @@ try {
59
  }
60
 
61
  try {
62
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_emailtemplates") . "` (";
63
- $sql .= " `file_hash` varchar(150) NOT NULL,";
64
- $sql .= " `filename` varchar(1500) NOT NULL,";
65
  $sql .= " `translate_flag` smallint(6) NOT NULL DEFAULT '0',";
66
  $sql .= " `project_id` bigint(20) NOT NULL DEFAULT '-1',";
67
  $sql .= " `deleteflag` smallint(6) NOT NULL DEFAULT '0',";
68
- $sql .= " `locale_dst` varchar(50) NOT NULL,";
69
- $sql .= " `time_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,";
70
- $sql .= " PRIMARY KEY (`file_hash`)";
71
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
72
  $installer->run($sql);
73
  } catch (Exception $e) {
74
  //void if table exists
75
  }
76
 
77
  try {
78
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_import") . "` (";
79
- $sql .= " `project_id` bigint(20) NOT NULL,";
80
- $sql .= " `filename` varchar(255) NOT NULL,";
81
- $sql .= " `storeview_dst` int(11) NOT NULL,";
82
  $sql .= " `num` int(11) NOT NULL DEFAULT '-1',";
83
  $sql .= " `is_imported` smallint(6) NOT NULL DEFAULT '0',";
84
- $sql .= " UNIQUE KEY `pk` (`project_id`,`filename`)";
85
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
86
  $installer->run($sql);
87
  } catch (Exception $e) {
88
  //void if table exists
89
  }
90
 
91
  try {
92
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_languages") . "` (";
93
- $sql .= " `locale_magento` varchar(20) CHARACTER SET utf8 NOT NULL,";
94
- $sql .= " `locale_eurotext` varchar(100) CHARACTER SET utf8 NOT NULL,";
95
- $sql .= " `lang_name` varchar(200) CHARACTER SET utf8 NOT NULL,";
96
- $sql .= " PRIMARY KEY (`locale_eurotext`)";
97
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
98
  $installer->run($sql);
99
  } catch (Exception $e) {
100
  //void if table exists
101
  }
102
 
103
  try {
104
- $sql = "INSERT IGNORE INTO `" . $installer->getTable("eurotext_languages") . "` (`locale_magento`, `locale_eurotext`, `lang_name`) VALUES";
105
  $sql .= " ('af_ZA', 'afr', 'Afrikaans'),";
106
  $sql .= " ('sq_AL', 'alb', 'Albanian'),";
107
  $sql .= " ('ar_DZ', 'ar-dz', 'Arabic (Algeria)'),";
@@ -181,10 +181,10 @@ try {
181
  }
182
 
183
  try {
184
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_project") . "` (";
185
  $sql .= " `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',";
186
  $sql .= " `deleted` smallint(6) NOT NULL DEFAULT '0',";
187
- $sql .= " `create_id` varchar(100) DEFAULT NULL,";
188
  $sql .= " `project_name` text NOT NULL COMMENT 'Project Name',";
189
  $sql .= " `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last Update',";
190
  $sql .= " `storeview_src` int(11) NOT NULL DEFAULT '-1' COMMENT 'Source Storeview',";
@@ -199,7 +199,7 @@ try {
199
  $sql .= " `export_attributes` smallint(6) NOT NULL DEFAULT '0',";
200
  $sql .= " `templatemode` smallint(6) NOT NULL COMMENT '0',";
201
  $sql .= " `export_urlkeys` smallint(6) NOT NULL DEFAULT '0',";
202
- $sql .= " PRIMARY KEY (`id`)";
203
  $sql .= ") ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='eurotext_project';";
204
  $installer->run($sql);
205
  } catch (Exception $e) {
@@ -207,36 +207,36 @@ try {
207
  }
208
 
209
  try {
210
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_project_categories") . "` (";
211
- $sql .= " `category_id` bigint(20) NOT NULL,";
212
- $sql .= " `project_id` bigint(20) NOT NULL,";
213
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
214
- $sql .= " PRIMARY KEY (`category_id`,`project_id`)";
215
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
216
  $installer->run($sql);
217
  } catch (Exception $e) {
218
  //void if table exists
219
  }
220
 
221
  try {
222
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_project_cmspages") . "` (";
223
- $sql .= " `page_id` bigint(20) NOT NULL,";
224
- $sql .= " `project_id` bigint(20) NOT NULL,";
225
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
226
- $sql .= " PRIMARY KEY (`page_id`,`project_id`)";
227
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
228
  $installer->run($sql);
229
  } catch (Exception $e) {
230
  //void if table exists
231
  }
232
 
233
  try {
234
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_project_products") . "` (";
235
- $sql .= " `product_id` bigint(20) NOT NULL,";
236
- $sql .= " `project_id` bigint(20) NOT NULL,";
237
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
238
- $sql .= " PRIMARY KEY (`product_id`,`project_id`)";
239
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
240
  $installer->run($sql);
241
  } catch (Exception $e) {
242
  //void if table exists
6
  $installer->startSetup();
7
 
8
  try {
9
+ $sql = '';
10
+ $sql .= 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_config') . '` (';
11
+ $sql .= ' `config_key` varchar(255) NOT NULL,';
12
+ $sql .= ' `config_value` text NOT NULL,';
13
+ $sql .= ' PRIMARY KEY (`config_key`)';
14
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
15
  $installer->run($sql);
16
  } catch (Exception $e) {
17
  //void if table exists
18
  }
19
 
20
  try {
21
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_csv') . '` (';
22
+ $sql .= ' `line_hash` varchar(60) NOT NULL,';
23
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
24
+ $sql .= ' `filename` varchar(255) NOT NULL,';
25
+ $sql .= ' `locale_dst` varchar(50) NOT NULL,';
26
  $sql .= " `translate_flag` smallint(6) NOT NULL DEFAULT '0',";
27
+ $sql .= ' `time_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,';
28
  $sql .= " `deleteflag` smallint(6) NOT NULL DEFAULT '0',";
29
+ $sql .= ' PRIMARY KEY (`line_hash`),';
30
+ $sql .= ' KEY `idx_filename` (`filename`),';
31
+ $sql .= ' KEY `idx_project_id` (`project_id`),';
32
+ $sql .= ' KEY `idx_locale_dst` (`locale_dst`)';
33
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
34
  $installer->run($sql);
35
  } catch (Exception $e) {
36
  //void if table exists
37
  }
38
 
39
  try {
40
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_csv_data') . '` (';
41
+ $sql .= ' `line_hash` varchar(60) NOT NULL,';
42
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
43
+ $sql .= ' `filename` varchar(255) NOT NULL,';
44
  $sql .= " `csvline` int(11) NOT NULL DEFAULT '-1',";
45
+ $sql .= ' `locale_dst` varchar(50) NOT NULL,';
46
+ $sql .= ' `text_src` varchar(5000) NOT NULL,';
47
  $sql .= " `text_src_hash` varchar(100) NOT NULL DEFAULT '',";
48
+ $sql .= ' `text_dst` varchar(5000) NOT NULL,';
49
+ $sql .= ' PRIMARY KEY (`line_hash`),';
50
+ $sql .= ' KEY `project_id` (`project_id`),';
51
+ $sql .= ' KEY `filename` (`filename`),';
52
+ $sql .= ' KEY `text_src_hash` (`text_src_hash`),';
53
+ $sql .= ' KEY `locale_dst` (`locale_dst`)';
54
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
55
  $installer->run($sql);
56
  } catch
57
  (Exception $e) {
59
  }
60
 
61
  try {
62
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_emailtemplates') . '` (';
63
+ $sql .= ' `file_hash` varchar(150) NOT NULL,';
64
+ $sql .= ' `filename` varchar(1500) NOT NULL,';
65
  $sql .= " `translate_flag` smallint(6) NOT NULL DEFAULT '0',";
66
  $sql .= " `project_id` bigint(20) NOT NULL DEFAULT '-1',";
67
  $sql .= " `deleteflag` smallint(6) NOT NULL DEFAULT '0',";
68
+ $sql .= ' `locale_dst` varchar(50) NOT NULL,';
69
+ $sql .= ' `time_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,';
70
+ $sql .= ' PRIMARY KEY (`file_hash`)';
71
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
72
  $installer->run($sql);
73
  } catch (Exception $e) {
74
  //void if table exists
75
  }
76
 
77
  try {
78
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_import') . '` (';
79
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
80
+ $sql .= ' `filename` varchar(255) NOT NULL,';
81
+ $sql .= ' `storeview_dst` int(11) NOT NULL,';
82
  $sql .= " `num` int(11) NOT NULL DEFAULT '-1',";
83
  $sql .= " `is_imported` smallint(6) NOT NULL DEFAULT '0',";
84
+ $sql .= ' UNIQUE KEY `pk` (`project_id`,`filename`)';
85
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
86
  $installer->run($sql);
87
  } catch (Exception $e) {
88
  //void if table exists
89
  }
90
 
91
  try {
92
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_languages') . '` (';
93
+ $sql .= ' `locale_magento` varchar(20) CHARACTER SET utf8 NOT NULL,';
94
+ $sql .= ' `locale_eurotext` varchar(100) CHARACTER SET utf8 NOT NULL,';
95
+ $sql .= ' `lang_name` varchar(200) CHARACTER SET utf8 NOT NULL,';
96
+ $sql .= ' PRIMARY KEY (`locale_eurotext`)';
97
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
98
  $installer->run($sql);
99
  } catch (Exception $e) {
100
  //void if table exists
101
  }
102
 
103
  try {
104
+ $sql = 'INSERT IGNORE INTO `' . $installer->getTable('eurotext_languages') . '` (`locale_magento`, `locale_eurotext`, `lang_name`) VALUES';
105
  $sql .= " ('af_ZA', 'afr', 'Afrikaans'),";
106
  $sql .= " ('sq_AL', 'alb', 'Albanian'),";
107
  $sql .= " ('ar_DZ', 'ar-dz', 'Arabic (Algeria)'),";
181
  }
182
 
183
  try {
184
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_project') . '` (';
185
  $sql .= " `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',";
186
  $sql .= " `deleted` smallint(6) NOT NULL DEFAULT '0',";
187
+ $sql .= ' `create_id` varchar(100) DEFAULT NULL,';
188
  $sql .= " `project_name` text NOT NULL COMMENT 'Project Name',";
189
  $sql .= " `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last Update',";
190
  $sql .= " `storeview_src` int(11) NOT NULL DEFAULT '-1' COMMENT 'Source Storeview',";
199
  $sql .= " `export_attributes` smallint(6) NOT NULL DEFAULT '0',";
200
  $sql .= " `templatemode` smallint(6) NOT NULL COMMENT '0',";
201
  $sql .= " `export_urlkeys` smallint(6) NOT NULL DEFAULT '0',";
202
+ $sql .= ' PRIMARY KEY (`id`)';
203
  $sql .= ") ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='eurotext_project';";
204
  $installer->run($sql);
205
  } catch (Exception $e) {
207
  }
208
 
209
  try {
210
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_project_categories') . '` (';
211
+ $sql .= ' `category_id` bigint(20) NOT NULL,';
212
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
213
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
214
+ $sql .= ' PRIMARY KEY (`category_id`,`project_id`)';
215
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
216
  $installer->run($sql);
217
  } catch (Exception $e) {
218
  //void if table exists
219
  }
220
 
221
  try {
222
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_project_cmspages') . '` (';
223
+ $sql .= ' `page_id` bigint(20) NOT NULL,';
224
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
225
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
226
+ $sql .= ' PRIMARY KEY (`page_id`,`project_id`)';
227
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
228
  $installer->run($sql);
229
  } catch (Exception $e) {
230
  //void if table exists
231
  }
232
 
233
  try {
234
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_project_products') . '` (';
235
+ $sql .= ' `product_id` bigint(20) NOT NULL,';
236
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
237
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
238
+ $sql .= ' PRIMARY KEY (`product_id`,`project_id`)';
239
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
240
  $installer->run($sql);
241
  } catch (Exception $e) {
242
  //void if table exists
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-upgrade-1.0.0.5-1.0.0.6.php CHANGED
@@ -4,12 +4,12 @@ $installer = $this;
4
  $installer->startSetup();
5
 
6
  try {
7
- $sql = "CREATE TABLE IF NOT EXISTS `" . $installer->getTable("eurotext_project_cmsblocks") . "` (";
8
- $sql .= " `block_id` bigint(20) NOT NULL,";
9
- $sql .= " `project_id` bigint(20) NOT NULL,";
10
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
11
- $sql .= " PRIMARY KEY (`block_id`,`project_id`)";
12
- $sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
13
 
14
  $installer->run($sql);
15
  } catch (Exception $e) {
@@ -17,13 +17,13 @@ try {
17
  }
18
 
19
  try {
20
- $installer->run("ALTER TABLE `" . $installer->getTable("eurotext_project") . "` ADD `filter_status` INT NOT NULL DEFAULT '1' AFTER `export_urlkeys`");
21
  } catch (Exception $e) {
22
  // Column already exists
23
  }
24
 
25
  try {
26
- $installer->run("ALTER TABLE `" . $installer->getTable("eurotext_project") . "` ADD `filter_stock` INT NOT NULL DEFAULT '1' AFTER `filter_status`");
27
  } catch (Exception $e) {
28
  // Column already exists
29
  }
4
  $installer->startSetup();
5
 
6
  try {
7
+ $sql = 'CREATE TABLE IF NOT EXISTS `' . $installer->getTable('eurotext_project_cmsblocks') . '` (';
8
+ $sql .= ' `block_id` bigint(20) NOT NULL,';
9
+ $sql .= ' `project_id` bigint(20) NOT NULL,';
10
  $sql .= " `time_added` bigint(20) NOT NULL DEFAULT '0',";
11
+ $sql .= ' PRIMARY KEY (`block_id`,`project_id`)';
12
+ $sql .= ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;';
13
 
14
  $installer->run($sql);
15
  } catch (Exception $e) {
17
  }
18
 
19
  try {
20
+ $installer->run('ALTER TABLE `' . $installer->getTable('eurotext_project') . "` ADD `filter_status` INT NOT NULL DEFAULT '1' AFTER `export_urlkeys`");
21
  } catch (Exception $e) {
22
  // Column already exists
23
  }
24
 
25
  try {
26
+ $installer->run('ALTER TABLE `' . $installer->getTable('eurotext_project') . "` ADD `filter_stock` INT NOT NULL DEFAULT '1' AFTER `filter_status`");
27
  } catch (Exception $e) {
28
  // Column already exists
29
  }
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/mysql4-upgrade-1.0.0.7-1.0.0.8.php CHANGED
@@ -4,7 +4,7 @@ $installer = $this;
4
  $installer->startSetup();
5
 
6
  try {
7
- $sql = "ALTER TABLE `" . $installer->getTable("eurotext_project") . "` ADD `filter_product_type` VARCHAR( 150 ) NOT NULL DEFAULT '' AFTER `filter_stock`;";
8
  $installer->run($sql);
9
  } catch (Exception $ex) {
10
  // Column already exists
4
  $installer->startSetup();
5
 
6
  try {
7
+ $sql = 'ALTER TABLE `' . $installer->getTable('eurotext_project') . "` ADD `filter_product_type` VARCHAR( 150 ) NOT NULL DEFAULT '' AFTER `filter_stock`;";
8
  $installer->run($sql);
9
  } catch (Exception $ex) {
10
  // Column already exists
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.1.2.1-1.2.0.0.php CHANGED
@@ -11,23 +11,23 @@ $this->getConnection()->addIndex(
11
  $tableName,
12
  $this->getConnection()->getIndexName(
13
  $tableName,
14
- array('project_id', 'filename'),
15
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
16
  ),
17
- array('project_id', 'filename'),
18
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
19
  );
20
 
21
  $this->getConnection()->addColumn(
22
  $tableName,
23
  'import_id',
24
- array(
25
  'primary' => true,
26
  'comment' => 'Primary key',
27
  'unsigned' => true,
28
  'identity' => true,
29
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
30
- )
31
  );
32
 
33
  $tableName = $this->getTable('eurotext_translationmanager/project_categories');
@@ -36,23 +36,23 @@ $this->getConnection()->addIndex(
36
  $tableName,
37
  $this->getConnection()->getIndexName(
38
  $tableName,
39
- array('project_id', 'category_id'),
40
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
41
  ),
42
- array('project_id', 'category_id'),
43
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
44
  );
45
 
46
  $this->getConnection()->addColumn(
47
  $tableName,
48
  'project_category_id',
49
- array(
50
  'primary' => true,
51
  'comment' => 'Primary key',
52
  'unsigned' => true,
53
  'identity' => true,
54
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
55
- )
56
  );
57
 
58
  $this->endSetup();
11
  $tableName,
12
  $this->getConnection()->getIndexName(
13
  $tableName,
14
+ ['project_id', 'filename'],
15
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
16
  ),
17
+ ['project_id', 'filename'],
18
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
19
  );
20
 
21
  $this->getConnection()->addColumn(
22
  $tableName,
23
  'import_id',
24
+ [
25
  'primary' => true,
26
  'comment' => 'Primary key',
27
  'unsigned' => true,
28
  'identity' => true,
29
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
30
+ ]
31
  );
32
 
33
  $tableName = $this->getTable('eurotext_translationmanager/project_categories');
36
  $tableName,
37
  $this->getConnection()->getIndexName(
38
  $tableName,
39
+ ['project_id', 'category_id'],
40
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
41
  ),
42
+ ['project_id', 'category_id'],
43
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
44
  );
45
 
46
  $this->getConnection()->addColumn(
47
  $tableName,
48
  'project_category_id',
49
+ [
50
  'primary' => true,
51
  'comment' => 'Primary key',
52
  'unsigned' => true,
53
  'identity' => true,
54
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
55
+ ]
56
  );
57
 
58
  $this->endSetup();
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.0-1.2.0.1.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  $this->startSetup();
6
 
7
- $tablesToPutFkOn = array(
8
  'eurotext_translationmanager/csv',
9
  'eurotext_translationmanager/csv_data',
10
  'eurotext_translationmanager/emailtemplates',
@@ -13,14 +13,14 @@ $tablesToPutFkOn = array(
13
  'eurotext_translationmanager/project_cmsblocks',
14
  'eurotext_translationmanager/project_cmspages',
15
  'eurotext_translationmanager/project_products',
16
- );
17
 
18
  $projectTableName = $this->getTable('eurotext_translationmanager/project');
19
  $this->getConnection()->changeColumn(
20
  $projectTableName,
21
  'id',
22
  'id',
23
- array('type' => Varien_Db_Ddl_Table::TYPE_BIGINT, 'auto_increment' => true, 'unsigned' => false)
24
  );
25
  foreach ($tablesToPutFkOn as $table) {
26
  $tableName = $this->getTable($table);
4
 
5
  $this->startSetup();
6
 
7
+ $tablesToPutFkOn = [
8
  'eurotext_translationmanager/csv',
9
  'eurotext_translationmanager/csv_data',
10
  'eurotext_translationmanager/emailtemplates',
13
  'eurotext_translationmanager/project_cmsblocks',
14
  'eurotext_translationmanager/project_cmspages',
15
  'eurotext_translationmanager/project_products',
16
+ ];
17
 
18
  $projectTableName = $this->getTable('eurotext_translationmanager/project');
19
  $this->getConnection()->changeColumn(
20
  $projectTableName,
21
  'id',
22
  'id',
23
+ ['type' => Varien_Db_Ddl_Table::TYPE_BIGINT, 'auto_increment' => true, 'unsigned' => false]
24
  );
25
  foreach ($tablesToPutFkOn as $table) {
26
  $tableName = $this->getTable($table);
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.1-1.2.0.2.php CHANGED
@@ -4,11 +4,11 @@
4
 
5
  $this->startSetup();
6
 
7
- $tables = array(
8
- 'eurotext_translationmanager/project_cmsblocks' => array('project_cmsblock_id', 'block_id'),
9
- 'eurotext_translationmanager/project_cmspages' => array('project_cmspage_id', 'page_id'),
10
- 'eurotext_translationmanager/project_products' => array('project_product_id', 'product_id'),
11
- );
12
 
13
  foreach ($tables as $table => $columnNames) {
14
  $tableName = $this->getTable($table);
@@ -17,23 +17,23 @@ foreach ($tables as $table => $columnNames) {
17
  $tableName,
18
  $this->getConnection()->getIndexName(
19
  $tableName,
20
- array('project_id', $columnNames[1]),
21
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
22
  ),
23
- array('project_id', $columnNames[1]),
24
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
25
  );
26
 
27
  $this->getConnection()->addColumn(
28
  $tableName,
29
  $columnNames[0],
30
- array(
31
  'primary' => true,
32
  'comment' => 'Primary key',
33
  'unsigned' => true,
34
  'identity' => true,
35
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
36
- )
37
  );
38
  }
39
 
4
 
5
  $this->startSetup();
6
 
7
+ $tables = [
8
+ 'eurotext_translationmanager/project_cmsblocks' => ['project_cmsblock_id', 'block_id'],
9
+ 'eurotext_translationmanager/project_cmspages' => ['project_cmspage_id', 'page_id'],
10
+ 'eurotext_translationmanager/project_products' => ['project_product_id', 'product_id'],
11
+ ];
12
 
13
  foreach ($tables as $table => $columnNames) {
14
  $tableName = $this->getTable($table);
17
  $tableName,
18
  $this->getConnection()->getIndexName(
19
  $tableName,
20
+ ['project_id', $columnNames[1]],
21
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
22
  ),
23
+ ['project_id', $columnNames[1]],
24
  Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
25
  );
26
 
27
  $this->getConnection()->addColumn(
28
  $tableName,
29
  $columnNames[0],
30
+ [
31
  'primary' => true,
32
  'comment' => 'Primary key',
33
  'unsigned' => true,
34
  'identity' => true,
35
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
36
+ ]
37
  );
38
  }
39
 
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.0.2-1.2.0.3.php CHANGED
@@ -4,44 +4,44 @@
4
 
5
  $this->startSetup();
6
 
7
- $foreignKeys = array(
8
- array(
9
  'eurotext_translationmanager/project_cmsblocks',
10
  'block_id',
11
  'cms/block',
12
  'block_id',
13
- ),
14
- array(
15
  'eurotext_translationmanager/project_cmspages',
16
  'page_id',
17
  'cms/page',
18
  'page_id',
19
- ),
20
- array(
21
  'eurotext_translationmanager/project_products',
22
  'product_id',
23
  'catalog/product',
24
  'entity_id',
25
- ),
26
- array(
27
  'eurotext_translationmanager/project_categories',
28
  'category_id',
29
  'catalog/category',
30
  'entity_id',
31
- ),
32
- );
33
 
34
  foreach ($foreignKeys as $keyData) {
35
  $this->getConnection()->changeColumn(
36
  $this->getTable($keyData[0]),
37
  $keyData[1],
38
  $keyData[1],
39
- array(
40
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
41
  'unsigned' => true,
42
  'nullable' => false,
43
  'comment' => 'Entity ID',
44
- )
45
  );
46
 
47
 
4
 
5
  $this->startSetup();
6
 
7
+ $foreignKeys = [
8
+ [
9
  'eurotext_translationmanager/project_cmsblocks',
10
  'block_id',
11
  'cms/block',
12
  'block_id',
13
+ ],
14
+ [
15
  'eurotext_translationmanager/project_cmspages',
16
  'page_id',
17
  'cms/page',
18
  'page_id',
19
+ ],
20
+ [
21
  'eurotext_translationmanager/project_products',
22
  'product_id',
23
  'catalog/product',
24
  'entity_id',
25
+ ],
26
+ [
27
  'eurotext_translationmanager/project_categories',
28
  'category_id',
29
  'catalog/category',
30
  'entity_id',
31
+ ],
32
+ ];
33
 
34
  foreach ($foreignKeys as $keyData) {
35
  $this->getConnection()->changeColumn(
36
  $this->getTable($keyData[0]),
37
  $keyData[1],
38
  $keyData[1],
39
+ [
40
  'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
41
  'unsigned' => true,
42
  'nullable' => false,
43
  'comment' => 'Entity ID',
44
+ ]
45
  );
46
 
47
 
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.1-1.2.2.php CHANGED
@@ -6,12 +6,12 @@ $this->startSetup();
6
  $this->getConnection()->addColumn(
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'created_at',
9
- array(
10
  'default' => '0000-00-00 00:00:00',
11
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
12
  'comment' => 'Created At',
13
  'nullable' => false,
14
- )
15
  );
16
 
17
- $this->endSetup();
6
  $this->getConnection()->addColumn(
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'created_at',
9
+ [
10
  'default' => '0000-00-00 00:00:00',
11
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
12
  'comment' => 'Created At',
13
  'nullable' => false,
14
+ ]
15
  );
16
 
17
+ $this->endSetup();
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-1.2.2-2.0.0.php CHANGED
@@ -7,12 +7,12 @@ $this->getConnection()->changeColumn(
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'last_update',
9
  'updated_at',
10
- array(
11
  'default' => Varien_Db_Ddl_Table::TIMESTAMP_INIT_UPDATE,
12
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
13
  'comment' => 'Last Update',
14
  'nullable' => false,
15
- )
16
  );
17
 
18
  $this->endSetup();
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'last_update',
9
  'updated_at',
10
+ [
11
  'default' => Varien_Db_Ddl_Table::TIMESTAMP_INIT_UPDATE,
12
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
13
  'comment' => 'Last Update',
14
  'nullable' => false,
15
+ ]
16
  );
17
 
18
  $this->endSetup();
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-2.0.0-2.0.1.php CHANGED
@@ -7,12 +7,12 @@ $this->getConnection()->changeColumn(
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'updated_at',
9
  'updated_at',
10
- array(
11
  'default' => Varien_Db_Ddl_Table::TIMESTAMP_INIT_UPDATE,
12
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
13
  'comment' => 'Last Update',
14
  'nullable' => false,
15
- )
16
  );
17
 
18
  $this->endSetup();
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'updated_at',
9
  'updated_at',
10
+ [
11
  'default' => Varien_Db_Ddl_Table::TIMESTAMP_INIT_UPDATE,
12
  'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
13
  'comment' => 'Last Update',
14
  'nullable' => false,
15
+ ]
16
  );
17
 
18
  $this->endSetup();
app/code/community/Eurotext/TranslationManager/sql/eurotext_translationmanager_setup/upgrade-2.0.1-2.0.2.php CHANGED
@@ -7,14 +7,14 @@ $this->getConnection()->changeColumn(
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'id',
9
  'id',
10
- array(
11
  'type' => Varien_Db_Ddl_Table::TYPE_BIGINT,
12
  'comment' => 'Project ID',
13
  'primary' => true,
14
  'auto_increment' => true,
15
  'nullable' => false,
16
  'unsigned' => false,
17
- )
18
  );
19
 
20
  $this->endSetup();
7
  $this->getTable('eurotext_translationmanager/project'),
8
  'id',
9
  'id',
10
+ [
11
  'type' => Varien_Db_Ddl_Table::TYPE_BIGINT,
12
  'comment' => 'Project ID',
13
  'primary' => true,
14
  'auto_increment' => true,
15
  'nullable' => false,
16
  'unsigned' => false,
17
+ ]
18
  );
19
 
20
  $this->endSetup();
app/code/community/Eurotext/Uploader/Block/Abstract.php CHANGED
@@ -92,7 +92,7 @@ abstract class Eurotext_Uploader_Block_Abstract extends Mage_Adminhtml_Block_Wid
92
  * @param array $additionalButtons
93
  * @return $this
94
  */
95
- protected function _addElementIdsMapping($additionalButtons = [])
96
  {
97
  $this->_idsMapping = array_merge($this->_idsMapping, $additionalButtons);
98
 
@@ -175,7 +175,7 @@ abstract class Eurotext_Uploader_Block_Abstract extends Mage_Adminhtml_Block_Wid
175
  */
176
  public function getMiscConfig()
177
  {
178
- if (is_null($this->_miscConfig)) {
179
  $this->_miscConfig = Mage::getModel('eurotext_uploader/config_misc');
180
  }
181
 
@@ -189,7 +189,7 @@ abstract class Eurotext_Uploader_Block_Abstract extends Mage_Adminhtml_Block_Wid
189
  */
190
  public function getUploaderConfig()
191
  {
192
- if (is_null($this->_uploaderConfig)) {
193
  $this->_uploaderConfig = Mage::getModel('eurotext_uploader/config_uploader');
194
  }
195
 
@@ -203,7 +203,7 @@ abstract class Eurotext_Uploader_Block_Abstract extends Mage_Adminhtml_Block_Wid
203
  */
204
  public function getButtonConfig()
205
  {
206
- if (is_null($this->_browseButtonConfig)) {
207
  $this->_browseButtonConfig = Mage::getModel('eurotext_uploader/config_browsebutton');
208
  }
209
 
92
  * @param array $additionalButtons
93
  * @return $this
94
  */
95
+ protected function _addElementIdsMapping(array $additionalButtons = [])
96
  {
97
  $this->_idsMapping = array_merge($this->_idsMapping, $additionalButtons);
98
 
175
  */
176
  public function getMiscConfig()
177
  {
178
+ if (null === $this->_miscConfig) {
179
  $this->_miscConfig = Mage::getModel('eurotext_uploader/config_misc');
180
  }
181
 
189
  */
190
  public function getUploaderConfig()
191
  {
192
+ if (null === $this->_uploaderConfig) {
193
  $this->_uploaderConfig = Mage::getModel('eurotext_uploader/config_uploader');
194
  }
195
 
203
  */
204
  public function getButtonConfig()
205
  {
206
+ if (null === $this->_browseButtonConfig) {
207
  $this->_browseButtonConfig = Mage::getModel('eurotext_uploader/config_browsebutton');
208
  }
209
 
app/code/community/Eurotext/Uploader/Helper/File.php CHANGED
@@ -702,7 +702,6 @@ class Eurotext_Uploader_Helper_File extends Mage_Core_Helper_Abstract
702
  {
703
  $iniSize = $this->getDataMaxSize();
704
  $size = substr($iniSize, 0, strlen($iniSize) - 1);
705
- $parsedSize = 0;
706
  switch (strtolower(substr($iniSize, strlen($iniSize) - 1))) {
707
  case 't':
708
  $parsedSize = $size * (1024 * 1024 * 1024 * 1024);
702
  {
703
  $iniSize = $this->getDataMaxSize();
704
  $size = substr($iniSize, 0, strlen($iniSize) - 1);
 
705
  switch (strtolower(substr($iniSize, strlen($iniSize) - 1))) {
706
  case 't':
707
  $parsedSize = $size * (1024 * 1024 * 1024 * 1024);
app/code/community/Eurotext/Uploader/Model/Config/Abstract.php CHANGED
@@ -26,9 +26,7 @@ abstract class Eurotext_Uploader_Model_Config_Abstract extends Varien_Object
26
  $key = lcfirst($this->_camelize(substr($method, 3)));
27
  switch (substr($method, 0, 3)) {
28
  case 'get' :
29
- $data = $this->getData($key, isset($args[0]) ? $args[0] : null);
30
-
31
- return $data;
32
 
33
  case 'set' :
34
  $result = $this->setData($key, isset($args[0]) ? $args[0] : null);
@@ -44,7 +42,7 @@ abstract class Eurotext_Uploader_Model_Config_Abstract extends Varien_Object
44
  return isset($this->_data[$key]);
45
  }
46
  throw new Varien_Exception(
47
- "Invalid method " . get_class($this) . "::" . $method . "(" . print_r($args, 1) . ")"
48
  );
49
  }
50
  }
26
  $key = lcfirst($this->_camelize(substr($method, 3)));
27
  switch (substr($method, 0, 3)) {
28
  case 'get' :
29
+ return $this->getData($key, isset($args[0]) ? $args[0] : null);
 
 
30
 
31
  case 'set' :
32
  $result = $this->setData($key, isset($args[0]) ? $args[0] : null);
42
  return isset($this->_data[$key]);
43
  }
44
  throw new Varien_Exception(
45
+ 'Invalid method ' . get_class($this) . '::' . $method . '(' . print_r($args, 1) . ')'
46
  );
47
  }
48
  }
app/design/adminhtml/base/default/template/eurotext/translationmanager/export/overview.phtml CHANGED
@@ -8,9 +8,9 @@
8
 
9
  <ul class="eurotext_export_status">
10
  <li class="ok">
11
- <?php echo $this->__("Starting profile execution, please wait …"); ?>
12
  </li>
13
  <li class="error">
14
- <?php echo $this->__("Warning: Please do not close the window during exporting data"); ?>
15
  </li>
16
  </ul>
8
 
9
  <ul class="eurotext_export_status">
10
  <li class="ok">
11
+ <?php echo $this->__('Starting profile execution, please wait …'); ?>
12
  </li>
13
  <li class="error">
14
+ <?php echo $this->__('Warning: Please do not close the window during exporting data'); ?>
15
  </li>
16
  </ul>
app/design/adminhtml/base/default/template/eurotext/translationmanager/help.phtml CHANGED
@@ -9,60 +9,94 @@
9
  </tr>
10
  </table>
11
 
12
- <div style="font-weight:bold;font-size:12pt; margin-top:25px;"><?php echo $this->__("translationMANAGER Quick Start Guide"); ?></div>
13
- <div><?php echo $this->__("Here you will find a list of settings required for operating the Eurotext interface"); ?></div>
 
 
 
 
14
 
15
  <div style="margin-top:15px;margin-left:20px;">
16
- <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__("Registration"); ?></div>
17
- <div><?php echo $this->__("Make sure to complete the registration process and enter your access information before submitting your first translation project. Fill out all fields of the registration form and click <b><i>Save and send</i> </b>. Eurotext will send your connection credentials."); ?></div>
 
 
18
  </div>
19
 
20
  <div style="margin-top:15px;margin-left:20px;">
21
- <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__("Settings"); ?></div>
22
  <div><?php echo $this->__('You will receive your connection credentials from your customer service representative at Eurotext AG as soon as you have completed your registration. Please enter your user name, password and customer number in "Settings".<br/><span style="font-style:italic;">&lt;sp'); ?></div>
23
  </div>
24
 
25
  <div style="margin-top:15px;margin-left:20px;">
26
- <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__("Projects"); ?></div>
27
- <div><?php echo $this->__("Create a new project for each translation order."); ?></div>
28
  <ul style="margin-left:20px;">
29
- <li style="list-style-type:disc;"><?php echo $this->__("Each project must have a name assigned (we recommend something unique and distinguishable)."); ?></li>
30
- <li style="list-style-type:disc;"><?php echo $this->__("Specify a <b>Source StoreView</b> and <b>Target StoreView</b> for the requested translation."); ?></li>
 
 
 
 
31
  </ul>
32
 
33
- <div style="margin-top:10px;"><?php echo $this->__("Select the products, categories, CMS Pages or Email Templates you need translated"); ?>:</div>
 
 
34
  <ul style="margin-left:20px;">
35
- <li style="list-style-type:disc;"><?php echo $this->__("Products, categories, CMS Pages, or Email Templates can be selected individually (<b>Select […]</b>), or alternatively:"); ?></li>
36
- <li style="list-style-type:disc;"><?php echo $this->__("<b>Select all [...] without existing translation:</b> The plugin will automatically select all products, categories, CMS pages and email templates for which no translated text exists in the target language."); ?>
 
 
 
 
37
  <br/><?php echo $this->__("<i><span style='color:red;'>Important:</span> All previous assignments will be deleted!</i>"); ?>
38
  </li>
39
  </ul>
40
 
41
- <div style="margin-top:10px;"><?php echo $this->__("Clicking <b>Select language files</b> will allow you to manually select specific shop system texts in the selection window for translation."); ?></div>
 
 
42
 
43
- <div style="margin-top:10px;"><?php echo $this->__("Clicking <b>Select all entries in language files without existing translations</b> will automatically select all files and check for missing translations. All entries without an existing translation will be exported."); ?></div>
 
 
44
  <div><?php echo $this->__("<i><span style='color:red;'>Important:</span> We recommend using this setting only for the initial translation of a new online shop, as it will trigger a translation of ALL language files for the selected target language!</i>"); ?></div>
45
 
46
- <div style="margin-top:10px;"><?php echo $this->__("Select the check box <b>Export SEO content?</b> if you would like to have the SEO content (e.g. keywords, search terms, meta tags, etc.) translated."); ?></div>
 
 
47
 
48
- <div style="margin-top:10px;"><?php echo $this->__("Select the check box <b>Export attributes and attribute options?</b> if you would like to have the product attributes and associated values translated."); ?></div>
 
 
49
 
50
- <div style="margin-top:10px;"><?php echo $this->__("Select the check box <b>Export URL keys?</b> if you would like to have URLs of products and categories translated."); ?></div>
 
 
51
 
52
- <div style="margin-top:20px;"><?php echo $this->__("Clicking the button <b>Request free quotation now</b> will transmit your texts for translation to the translation portal, and you will receive a detailed quote for your translation project within the next 24 hours (weekdays)."); ?>
 
 
53
 
54
- <div style="margin-top:10px;"><?php echo $this->__("Your Eurotext customer service representative will send your translations in a ZIP file. This zip file can be uploaded and imported to the relevant project."); ?></div>
 
 
55
 
56
- <div style="margin-top:10px;"><?php echo $this->__("<b>Please note:</b> For safety reasons, we recommend testing the import on a staging system first. Make sure to back up all your data before importing."); ?></div>
 
 
57
 
58
- <div style="margin-top:10px;"><?php echo $this->__("Please read the translationMANAGER documentation for more information."); ?></div>
 
 
59
 
60
  <div>&nbsp;</div>
61
  <div style="border:1px solid black;padding:20px;display:inline-block;">
62
  <table width="900" border="0">
63
  <tr>
64
  <td width="445" class="edittext"><p align="left">
65
- <strong><?php echo $this->__("Contact"); ?> Eurotext AG </strong></td>
66
  </tr>
67
  <tr>
68
  <td height="135" class="edittext">
@@ -72,8 +106,8 @@
72
  Sch&uuml;rerstra&szlig;e 3<br>
73
  97080 W&uuml;rzburg<br>
74
  Deutschland<br><br>
75
- <?php echo $this->__("Phone"); ?>: +49 (0)931 35 40 50<br>
76
- <?php echo $this->__("Telefax"); ?>: +49 (0)931 35 40 580<br>
77
  E-Mail: <a href="mailto:>info@eurotext.de">info@eurotext.de</a><br>
78
  Web: <a href="http://www.eurotext.de" target="_blank">www.eurotext.de</a>
79
  </p>
9
  </tr>
10
  </table>
11
 
12
+ <div style="font-weight:bold;font-size:12pt; margin-top:25px;"><?php echo $this->__(
13
+ 'translationMANAGER Quick Start Guide'
14
+ ); ?></div>
15
+ <div><?php echo $this->__(
16
+ 'Here you will find a list of settings required for operating the Eurotext interface'
17
+ ); ?></div>
18
 
19
  <div style="margin-top:15px;margin-left:20px;">
20
+ <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__('Registration'); ?></div>
21
+ <div><?php echo $this->__(
22
+ 'Make sure to complete the registration process and enter your access information before submitting your first translation project. Fill out all fields of the registration form and click <b><i>Save and send</i> </b>. Eurotext will send your connection credentials.'
23
+ ); ?></div>
24
  </div>
25
 
26
  <div style="margin-top:15px;margin-left:20px;">
27
+ <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__('Settings'); ?></div>
28
  <div><?php echo $this->__('You will receive your connection credentials from your customer service representative at Eurotext AG as soon as you have completed your registration. Please enter your user name, password and customer number in "Settings".<br/><span style="font-style:italic;">&lt;sp'); ?></div>
29
  </div>
30
 
31
  <div style="margin-top:15px;margin-left:20px;">
32
+ <div style="font-weight:bold;font-size:11pt;"><?php echo $this->__('Projects'); ?></div>
33
+ <div><?php echo $this->__('Create a new project for each translation order.'); ?></div>
34
  <ul style="margin-left:20px;">
35
+ <li style="list-style-type:disc;"><?php echo $this->__(
36
+ 'Each project must have a name assigned (we recommend something unique and distinguishable).'
37
+ ); ?></li>
38
+ <li style="list-style-type:disc;"><?php echo $this->__(
39
+ 'Specify a <b>Source StoreView</b> and <b>Target StoreView</b> for the requested translation.'
40
+ ); ?></li>
41
  </ul>
42
 
43
+ <div style="margin-top:10px;"><?php echo $this->__(
44
+ 'Select the products, categories, CMS Pages or Email Templates you need translated'
45
+ ); ?>:</div>
46
  <ul style="margin-left:20px;">
47
+ <li style="list-style-type:disc;"><?php echo $this->__(
48
+ 'Products, categories, CMS Pages, or Email Templates can be selected individually (<b>Select […]</b>), or alternatively:'
49
+ ); ?></li>
50
+ <li style="list-style-type:disc;"><?php echo $this->__(
51
+ '<b>Select all [...] without existing translation:</b> The plugin will automatically select all products, categories, CMS pages and email templates for which no translated text exists in the target language.'
52
+ ); ?>
53
  <br/><?php echo $this->__("<i><span style='color:red;'>Important:</span> All previous assignments will be deleted!</i>"); ?>
54
  </li>
55
  </ul>
56
 
57
+ <div style="margin-top:10px;"><?php echo $this->__(
58
+ 'Clicking <b>Select language files</b> will allow you to manually select specific shop system texts in the selection window for translation.'
59
+ ); ?></div>
60
 
61
+ <div style="margin-top:10px;"><?php echo $this->__(
62
+ 'Clicking <b>Select all entries in language files without existing translations</b> will automatically select all files and check for missing translations. All entries without an existing translation will be exported.'
63
+ ); ?></div>
64
  <div><?php echo $this->__("<i><span style='color:red;'>Important:</span> We recommend using this setting only for the initial translation of a new online shop, as it will trigger a translation of ALL language files for the selected target language!</i>"); ?></div>
65
 
66
+ <div style="margin-top:10px;"><?php echo $this->__(
67
+ 'Select the check box <b>Export SEO content?</b> if you would like to have the SEO content (e.g. keywords, search terms, meta tags, etc.) translated.'
68
+ ); ?></div>
69
 
70
+ <div style="margin-top:10px;"><?php echo $this->__(
71
+ 'Select the check box <b>Export attributes and attribute options?</b> if you would like to have the product attributes and associated values translated.'
72
+ ); ?></div>
73
 
74
+ <div style="margin-top:10px;"><?php echo $this->__(
75
+ 'Select the check box <b>Export URL keys?</b> if you would like to have URLs of products and categories translated.'
76
+ ); ?></div>
77
 
78
+ <div style="margin-top:20px;"><?php echo $this->__(
79
+ 'Clicking the button <b>Request free quotation now</b> will transmit your texts for translation to the translation portal, and you will receive a detailed quote for your translation project within the next 24 hours (weekdays).'
80
+ ); ?>
81
 
82
+ <div style="margin-top:10px;"><?php echo $this->__(
83
+ 'Your Eurotext customer service representative will send your translations in a ZIP file. This zip file can be uploaded and imported to the relevant project.'
84
+ ); ?></div>
85
 
86
+ <div style="margin-top:10px;"><?php echo $this->__(
87
+ '<b>Please note:</b> For safety reasons, we recommend testing the import on a staging system first. Make sure to back up all your data before importing.'
88
+ ); ?></div>
89
 
90
+ <div style="margin-top:10px;"><?php echo $this->__(
91
+ 'Please read the translationMANAGER documentation for more information.'
92
+ ); ?></div>
93
 
94
  <div>&nbsp;</div>
95
  <div style="border:1px solid black;padding:20px;display:inline-block;">
96
  <table width="900" border="0">
97
  <tr>
98
  <td width="445" class="edittext"><p align="left">
99
+ <strong><?php echo $this->__('Contact'); ?> Eurotext AG </strong></td>
100
  </tr>
101
  <tr>
102
  <td height="135" class="edittext">
106
  Sch&uuml;rerstra&szlig;e 3<br>
107
  97080 W&uuml;rzburg<br>
108
  Deutschland<br><br>
109
+ <?php echo $this->__('Phone'); ?>: +49 (0)931 35 40 50<br>
110
+ <?php echo $this->__('Telefax'); ?>: +49 (0)931 35 40 580<br>
111
  E-Mail: <a href="mailto:>info@eurotext.de">info@eurotext.de</a><br>
112
  Web: <a href="http://www.eurotext.de" target="_blank">www.eurotext.de</a>
113
  </p>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>eurotext_translationMANAGER</name>
4
- <version>3.2.14</version>
5
  <stability>stable</stability>
6
  <license uri="https://eurotext-ecommerce.com/agb/">Nutzungsbedingungen f&#xFC;r Softwareanwendungen der Eurotext AG</license>
7
  <channel>community</channel>
@@ -22,130 +22,11 @@ We STRONGLY recommend installing and testing the update in a test environment be
22
  Further information can be found at http://eurotext.screenstepslive.com/s/translationmanager&#xD;
23
  &#xD;
24
  # General terms &amp; conditions for Eurotext AG software applications&#xD;
25
- http://eurotext.de/en/contact/terms-and-conditions/&#xD;
26
- &#xD;
27
- ---------------------------&#xD;
28
- ## Version 3.2.14 - 2017-03-09&#xD;
29
- ### IMPROVED&#xD;
30
- - Fixed broken connect package&#xD;
31
- &#xD;
32
- ## Version 3.2.13 - 2017-02-09&#xD;
33
- ### IMPROVED&#xD;
34
- - Updated translation&#xD;
35
- &#xD;
36
- ## Version 3.2.12 - 2017-01-17&#xD;
37
- ### NEW&#xD;
38
- - Complete refactoring of the source code&#xD;
39
- - Completely revamped user interface&#xD;
40
- - Magento Grid introduced to the selection dialogs&#xD;
41
- - New category tree navigation for product selection&#xD;
42
- - You can now view the selections even after exporting&#xD;
43
- - Select multiple products in a text field by comma-separated SKU lists&#xD;
44
- - New: email templates from the database can now be translated as well&#xD;
45
- - Enhanced compatibility with third-party plugins and processes&#xD;
46
- - Improved performance and stability when exporting and importing&#xD;
47
- - The debug mode has been revised and updated with options to retain export packages on the server when they cannot be sent to Eurotext&#xD;
48
- - Improved checks and enhanced compatibility when creating zip files&#xD;
49
- - New: If an export fails, the untransferred ZIP file is copied to var/export/&#xD;
50
- - Enhanced checks of various system components (rights, directories, modules) to guarantee the stability of the plugin.&#xD;
51
- - Improved behavior when importing translations into source-language content that has already been deleted, including lists of non-imported content in import dialog and logging.&#xD;
52
- - Completely revised documentation (http://eurotext.screenstepslive.com/s/translationmanager/m/translationmanager-magento19)&#xD;
53
- &#xD;
54
- ### FIXED&#xD;
55
- - Image labels were not being exported&#xD;
56
- - Fixed a rights administration bug which occurred after updating to Magento 1.14 EE/1.9 CE&#xD;
57
- - Language files were being exported from the wrong source language&#xD;
58
- - The language file of custom themes (translate.csv) was not being exported&#xD;
59
- - General improvements to the export format&#xD;
60
- - General improvements to user registration&#xD;
61
- - General improvements to ZIP file creation&#xD;
62
- - Improved security for database write access&#xD;
63
- - Improved logging in standard mode and debug mode&#xD;
64
- &#xD;
65
- ### REMOVED&#xD;
66
- - Removed the feature to automatically export untranslated content&#xD;
67
- &#xD;
68
- ## Version 1.1.2.2&#xD;
69
- ### NEW&#xD;
70
- - Translate your custom category attributes: export your custom attributes&#xD;
71
- &#xD;
72
- ## Version 1.1.2.1&#xD;
73
- ### FIXED&#xD;
74
- - Duplicate URL key error during import fixed&#xD;
75
- &#xD;
76
- ## Version 1.1.2.0&#xD;
77
- ### NEW&#xD;
78
- - Revamped DEBUG mode. Can now be activated in the back end (System -&gt; Configuration -&gt; Developer -&gt; Log)&#xD;
79
- - Log file created in /var/log/eurotext.log, critical errors saved in eurotext_fatal.log even when DEBUG mode is deactivated&#xD;
80
- - Base directory changed from /eurotext to /var/eurotext&#xD;
81
- - Added logging for FTP check in DEBUG mode&#xD;
82
- ### FIXED&#xD;
83
- - Various improvements to the usability of Magento directories&#xD;
84
- &#xD;
85
- ## Version 1.1.1.0&#xD;
86
- ### FIXED&#xD;
87
- - Now only the selected language files will be exported&#xD;
88
- - Small bug fixes&#xD;
89
- &#xD;
90
- ## Version 1.1.0.0&#xD;
91
- ### NEW&#xD;
92
- - Translate your custom product attributes: export your custom attributes&#xD;
93
- - Backup: in the event of transfer errors to the Eurotext server, data packages are saved to /var/export.&#xD;
94
- ### FIXED&#xD;
95
- - Bug fixes and security updates&#xD;
96
- - Improved software performance and stability&#xD;
97
- &#xD;
98
- ## Version 1.0.0.9&#xD;
99
- ### FIXED&#xD;
100
- - The Stock Availability will now be displayed for 'virtual' products/main products according to the setup in the back end&#xD;
101
- &#xD;
102
- ## Version 1.0.0.8&#xD;
103
- ### NEW&#xD;
104
- - You can now filter the product selection by product type&#xD;
105
- &#xD;
106
- ## Version 1.0.0.7&#xD;
107
- ### FIXED&#xD;
108
- - JavaScript error fixed&#xD;
109
- - The update script now works in a more tolerant manner&#xD;
110
- &#xD;
111
- ## Version 1.0.0.6&#xD;
112
- ### NEW&#xD;
113
- - Two additional filters (status and stock availability) are now available in the product selection&#xD;
114
- - Static blocks can now be exported and imported. The static blocks are displayed with the CMS page selection&#xD;
115
- &#xD;
116
- ## Version 1.0.0.5&#xD;
117
- ### NEW&#xD;
118
- - More project information is now displayed in the comment field of the control.xml&#xD;
119
- - The last action in a project can now be 'undone'&#xD;
120
- ### FIXED&#xD;
121
- - The correct plugin version is now shown in the control.xml&#xD;
122
- &#xD;
123
- ## Version 1.0.0.4&#xD;
124
- ### FIXED&#xD;
125
- - The module now exports attributes even if there is no name available for the source storeview. It simply exports the admin default text.&#xD;
126
- &#xD;
127
- ## Version 1.0.0.3&#xD;
128
- ### FIXED&#xD;
129
- - The URL key will only be set in the target storeview (based on the product/category name) if there was previously no value there (i.e. "Use default values" was enabled). Previously, the URL key was set if the value was empty or equal to the default value&#xD;
130
- The "Use default values" setting is no longer lost in fields that are not present in the translation files.&#xD;
131
- &#xD;
132
- ## Version 1.0.0.2&#xD;
133
- ### FIXED&#xD;
134
- - Imports would fail if product images, for which translations had been generated, were deleted in the Magento back end between import and export&#xD;
135
- - Product images missing from the import are now simply skipped&#xD;
136
- &#xD;
137
- ## Version 1.0.0.1&#xD;
138
- ### NEW&#xD;
139
- - The product selection has been expanded to include an option to filter by categories, allowing for quick translations of entire categories&#xD;
140
- ### FIXED&#xD;
141
- - URL fields not included in an export were being reset to their default values during import, instead of being generated based on the (translated) names&#xD;
142
- &#xD;
143
- ## Version 1.0.0.0&#xD;
144
- - Release Version 1.0.0.0</notes>
145
  <authors><author><name>Eurotext AG</name><user>eurotext</user><email>info@eurotext.de</email></author></authors>
146
- <date>2017-03-09</date>
147
- <time>16:55:02</time>
148
- <contents><target name="magecommunity"><dir name="Eurotext"><dir name="TranslationManager"><dir name="Block"><dir name="Adminhtml"><dir name="Eurotext"><dir name="Export"><file name="Overview.php" hash="fefd3dc416377f0796233d4ae4a5629b"/></dir><dir name="Grid"><file name="OverwriteCheckboxRenderer.php" hash="602066f890b3ac64a6916161b1c658c3"/><dir name="Renderer"><file name="Checkbox.php" hash="c1f85f5830ff53322dab7a5c1d508072"/><file name="StoreviewWithLocale.php" hash="9b9ca817cd22834274d47f1609feec1e"/></dir></dir><dir name="Import"><file name="Overview.php" hash="f57e709deabcea28c7c9b91130adfb40"/></dir><dir name="Project"><dir name="Edit"><file name="Form.php" hash="5fd8a6e124a3ad3f70a67f166eec0473"/><dir name="Tab"><file name="Categories.php" hash="cff581961884ee839a4dff23c512cb61"/><file name="CmsBlock.php" hash="f0207afed8f58cf715d3ef5b91432b1a"/><file name="CmsPage.php" hash="e1cbffb562cbd97eeba4addc1eef131e"/><dir name="Emails"><file name="Note.php" hash="f0491208842f17d8cb73ec849542f31f"/></dir><dir name="Grid"><file name="Massaction.php" hash="ff9d8bd50174022256b619ee10a9b257"/></dir><dir name="Main"><file name="Single.php" hash="44eb8988afe846e83ff944233fc16764"/><file name="Uploader.php" hash="2a7b906a104315c60189133a40a619c3"/></dir><file name="Main.php" hash="0b7ef2ae66647807f12dd5b5409c7a1c"/><dir name="Products"><file name="CategoryTree.php" hash="8f30da7c0c9d4c55958b83d46c61c220"/><file name="CategoryTreeAjax.php" hash="2bded6c1ae27c34407592bd68fecf944"/><file name="Script.php" hash="d352799ffe1174b0e962f419abd726bb"/></dir><file name="Products.php" hash="042edeadf4ded7a825fe8d6437c32dc9"/><file name="TransactionEmailFiles.php" hash="2dc4c29f6aa7397b888a7c3cb896681d"/><file name="TransactionEmailsDatabase.php" hash="bdf80aae0f475f119317531c7f8c7b7e"/><file name="TranslateFiles.php" hash="6e0c8a2fa3968aa7bdaa439ff5e4d774"/></dir><file name="Tabs.php" hash="7d2b96b63e1099e7221c8d78cf798e3e"/></dir><file name="Edit.php" hash="2501621acc283552519d8b4fe852acf2"/><file name="Grid.php" hash="2f5e6308b7189f0471c55813e00a3a6a"/></dir><file name="Project.php" hash="ff6bb0a8ac38ad3cf2f0c29d549b840c"/></dir><dir name="Grid"><dir name="Renderer"><file name="StoreviewWithLocale.php" hash="a651d215586f38e58fe8c0a7da3aaa8d"/></dir></dir></dir><file name="Help.php" hash="ca61b416958f9a5304a94a9ce69df7da"/><dir name="Response"><file name="Ajax.php" hash="59613d25a1ffc960cc7a3ae29d24e6ec"/></dir><file name="Status.php" hash="194ab3a64321820d47dd67ea554da443"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><dir name="Registration"><file name="Status.php" hash="4f8317f73c695e5af3ee0dfeeb4196ee"/></dir><file name="Text.php" hash="f5fb0b1cf7e3d794a398ede74cf17133"/></dir></dir></dir></dir></dir><dir name="Exception"><file name="FtpException.php" hash="60c1ff48c554f9532eb8d332317d215d"/></dir><dir name="Helper"><file name="Category.php" hash="70cd77b9e06caf7ea3a4486815d64836"/><file name="Config.php" hash="35dbc25466bf03a3046317d6f0891447"/><file name="Data.php" hash="7c7506faca62fa0b9e3e7f3d6c769496"/><file name="Eurotext.php" hash="19ac23de2dd3fdd3ce0e135ffe54fab8"/><file name="Filesystem.php" hash="d37c92b4938501ee81d6b32ec7d91714"/><file name="Project.php" hash="01c2204aafbec11cd07520d430da5b91"/><file name="String.php" hash="dffd96b1157655c01e092d60a0435e99"/><file name="Xml.php" hash="5523724d86ee6f78a79266f8b565e4be"/></dir><dir name="Model"><dir name="Catalog"><dir name="Product"><dir name="Attribute"><dir name="Backend"><dir name="Media"><file name="OnlyStoreValues.php" hash="ed8ea13152310f8e3ae0df3dfe4fc38c"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Exception.php" hash="d8ac30e2db57fd25bf1c848425741acd"/></dir><dir name="Eav"><dir name="Attribute"><file name="Label.php" hash="3cc63ed47cdcc3cda59f4d9d93518150"/><dir name="Option"><file name="Value.php" hash="69ec30b12d3724365473b5510da664cd"/></dir></dir></dir><file name="EurotextLanguages.php" hash="b6155eff058695a9560026d9a7be1437"/><dir name="Export"><dir name="Project"><file name="Attribute.php" hash="42d57aa5042088ad80c5be9729acf641"/><file name="Category.php" hash="79a75d998ba28b11206c5405d833e1a1"/><file name="CmsBlock.php" hash="bde0f2b4c333c009d82547948681d0f6"/><file name="CmsPage.php" hash="c9681ac67b4411bc931e03c59211aa11"/><file name="CreateControlFile.php" hash="96922fda3795907275f4e90b4ccddf8e"/><file name="EmailDatabaseTemplates.php" hash="1cef5afc1a58cfd5fa4854920d6888a6"/><file name="EmailFileTemplates.php" hash="ab03745086ef685d030468680764d6f0"/><file name="Exporter.php" hash="451fb2d540fcf210c4de0014961c0eb9"/><file name="FtpUpload.php" hash="597867b37fe1f9404d36eadb722771b0"/><file name="LocaleCsvFiles.php" hash="a2639285003c163a75d073a41719cc9c"/><file name="Product.php" hash="9ed99268cad5a133c356a161a0f924a6"/></dir><file name="Project.php" hash="6fdabca975ad27260f785020aca43507"/></dir><file name="Extractor.php" hash="295dc4980b02098229e142d9a3d82943"/><file name="Factory.php" hash="433a4237864b60ba71ff3af1f85feff6"/><dir name="Import"><dir name="Project"><file name="Attributes.php" hash="b07af08e4caa8b206a383d611e072703"/><file name="Categories.php" hash="c899d9a8c585ac6beb13cb72efc7260a"/><file name="CmsBlocks.php" hash="8b57bb27f9f285bf396b694477c44014"/><file name="CmsPages.php" hash="3248407e6068180c426fb95a1e66ad4c"/><file name="CollectSkipped.php" hash="3efd27b15b46b2befdcd01f8e03b17e7"/><file name="EmailTemplates.php" hash="e9ec9c1b931833e3c7406b16a49d7d33"/><dir name="Exception"><file name="MissingEntity.php" hash="55c8d26331cf9e7090c6fec482cf3b3e"/></dir><file name="Importer.php" hash="2ecac21104fab2e7929932d12cc5b799"/><file name="LocaleCsvFiles.php" hash="02e8c48751d9a1eb5f1ffcd4ee6df08c"/><file name="Product.php" hash="1d20211d1b1c4f69871c57c275af95a5"/></dir><file name="Project.php" hash="c5c42ae3e5ed21317737b3866cb27d06"/><file name="Queue.php" hash="53ea466669ff85174b1070c72916721e"/><file name="Validator.php" hash="36974520d15dcbf3a91a10d07eb77716"/></dir><file name="Observer.php" hash="80b098635238d9660d07982d9567546c"/><file name="ProductLoader.php" hash="e0aa3b1e40815a819c72bc25378077a9"/><dir name="Project"><file name="Category.php" hash="8dd0af28d2889d8eb5ea4aa5fb7b2b5b"/><file name="Cmsblock.php" hash="2b0c4601a0021d5f7d06f98e2b7ab0e2"/><file name="Cmspage.php" hash="3a5642ff3770b3ad09424880b20949c9"/><file name="Csv.php" hash="4fd06e795a31a53ef4fc5106c0ffa28c"/><file name="EmailtemplateDatabase.php" hash="c6978dfc5846d3f470e0b8536178f344"/><file name="EmailtemplateFile.php" hash="c0ba504eaf050ad39acd6e90f47854f3"/><file name="Import.php" hash="a8ef441cd37ee562d8b38755359cd694"/><file name="Product.php" hash="8b5e14407f1449d3df0204274d03320a"/><dir name="Source"><file name="Status.php" hash="6890bab36d251ee47ca2836fbeb41603"/></dir></dir><file name="Project.php" hash="11b850459010c099e7d2ac43756d99cb"/><dir name="Renderer"><dir name="Filesystem"><file name="RelativeToAppDirectory.php" hash="725289dc9ed79898eab27b2ccb5c6d91"/><file name="RelativeToLocaleTemplateDirectory.php" hash="14f6a546f84a48d822179bb353b46351"/></dir><file name="Filesystem.php" hash="5c56c1e04db25584ac6a1ad48c0d4a9d"/></dir><dir name="Resource"><dir name="Catalog"><dir name="Product"><dir name="Attribute"><dir name="Backend"><dir name="Media"><file name="OnlyStoreValues.php" hash="ae4d43376d24cbae4ed19632794f51ba"/></dir></dir></dir><dir name="Option"><file name="Title.php" hash="ee3eabb5995eb327e2de31b248e285be"/><dir name="Type"><file name="Title.php" hash="c49656683099b75ccd6642c61d7a22bc"/></dir></dir></dir></dir><dir name="Csv"><file name="Collection.php" hash="90163f2d6454efd100d48d720a33d4ef"/></dir><dir name="Eav"><dir name="Attribute"><dir name="Label"><file name="Collection.php" hash="6eff56981825b462b78897a1dd0f7248"/></dir><file name="Label.php" hash="65ba1673abc5ed1731d0e911b9b5e4b7"/><dir name="Option"><dir name="Value"><file name="Collection.php" hash="23ebc81f087b31723b175ae46e7eb4e2"/></dir><file name="Value.php" hash="3352674505656df6d51774444ab59fa5"/></dir></dir></dir><dir name="Emailtemplate"><dir name="Filesystem"><file name="Collection.php" hash="a8f0dc8367a2ee12846d89b272037db1"/></dir></dir><dir name="Filesystem"><file name="Collection.php" hash="8b84ee3193ad45484c251336d64cf71c"/></dir><dir name="Project"><dir name="Category"><file name="Collection.php" hash="134968856c66296fe418151a7dfdc8a5"/></dir><file name="Category.php" hash="55d87ff56d171e1daf4f42a2b8808d1b"/><dir name="Cmsblock"><file name="Collection.php" hash="d126952fba4c57de3277ac83bbafe61b"/></dir><file name="Cmsblock.php" hash="05e85b8142a95424ddd45884999a6c6c"/><dir name="Cmspage"><file name="Collection.php" hash="7fd97c6a893d2e365e1035e934f5be5d"/></dir><file name="Cmspage.php" hash="58e59ec888b52973b01b98e0fc19f50f"/><file name="Collection.php" hash="0b068f00639795627c7e2576ca3feaa4"/><dir name="Csv"><file name="Collection.php" hash="0d10dfdedae29b70f1fc2e3b19f160e4"/></dir><file name="Csv.php" hash="f283f1bd37fecb222bedf46d9cde3f18"/><dir name="EmailtemplateDatabase"><file name="Collection.php" hash="e63d7568db40281040ef984326100658"/></dir><file name="EmailtemplateDatabase.php" hash="eb787be577d4341d5324d159f9a66afd"/><dir name="EmailtemplateFile"><file name="Collection.php" hash="8d83aa3abce2e076d387ac3ba3a12cb3"/></dir><file name="EmailtemplateFile.php" hash="43d1baa459bf00fead85fa9e22979502"/><dir name="Import"><file name="Collection.php" hash="7ac0c91738130e32b97e4dc3f7ae6e68"/></dir><file name="Import.php" hash="9d71d42dfc91c16fa83a26ae76b79339"/><dir name="Product"><file name="Collection.php" hash="cafc0c7dbda6f9733a7dbf158a03c88b"/></dir><file name="Product.php" hash="8fbd6ffee43f8094c90d52f97e425d50"/></dir><file name="Project.php" hash="d964e9890f77119ceb343692d98a27d7"/><file name="Setup.php" hash="992b5dbedd9dc6d669ff7a7949c790ab"/></dir><dir name="Source"><file name="StoreViewWithLocale.php" hash="a97b6ef2d0521da72fcad45c7ab8b1df"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Salutation.php" hash="1de509321f9050e3f4c30c004e9b0310"/></dir></dir></dir><dir name="Updater"><file name="MediaGalleryValue.php" hash="8c38ccb08dab63701882e4dbf79f0bc7"/></dir><dir name="Xml"><dir name="Import"><dir name="Cms"><file name="Block.php" hash="ee5853195c38dcc699a663bbe70a510e"/><file name="BlockReader.php" hash="ec3d5fe50d778602c4417b6f645fb048"/></dir></dir></dir><file name=".DS_Store" hash="7c3522d12f27b1bc414fac586a4b971f"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Eurotext"><file name="HelpController.php" hash="cf5a275aef3ed8d5b57cecf7e336fc9d"/><dir name="Project"><file name="ExportController.php" hash="52f796f6aeed83dc90e4a5d2281f17a9"/><file name="ImportController.php" hash="413b7c3ba87a65b7f54fd40f1eea627a"/></dir><file name="ProjectController.php" hash="c0fa1e9b0d924d438c9d6f51a141c33d"/><file name="StatusController.php" hash="fa4bad31a7259d73eb4e8d63f8a8baad"/><file name=".DS_Store" hash="be9480710cd7aa8bcc8ca162bbe60791"/></dir><file name=".DS_Store" hash="af0a7d68dfc1505f5fd04c55baff3727"/></dir><file name=".DS_Store" hash="9d6e9b7cea3d170ee9c8cfccccc4ee80"/></dir><dir name="data"><dir name="eurotext_translationmanager_setup"><file name="data-install-3.0.0.php" hash="fa9de480b2d6d32ec1530c51914607d7"/><file name="data-upgrade-1.2.0.4-1.2.1.php" hash="40c403ee7e379d83e3f76ce1d6809b4e"/><file name="data-upgrade-1.2.1-1.2.2.php" hash="d6a7a1c4e525f552cc463393398737e1"/><file name="data-upgrade-3.1.1-3.1.2.php" hash="ea833f0234b35f910623f0434d78e8e9"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="af3f9f6b2b6ed681f4ebe8651ae4ad33"/><file name="config.xml" hash="2447d712b30ddd1950fcf99e4f611bb1"/><file name="jstranslator.xml" hash="96c99f45202c522b98b01e792308954b"/><file name="system.xml" hash="30c104492c31a647fe7d05af8a7ec52a"/></dir><dir name="sql"><dir name="eurotext_translationmanager_setup"><file name="install-3.0.0.php" hash="c249a9897d9259b70e6c2a816fb4e6be"/><file name="mysql4-install-1.0.0.0.php" hash="e18c0008fdf86231a2b9fc5fdaf772f6"/><file name="mysql4-upgrade-1.0.0.5-1.0.0.6.php" hash="ea4e8bfeb96b41454a6270fc679a97fc"/><file name="mysql4-upgrade-1.0.0.7-1.0.0.8.php" hash="b610342ad985cd23f823cb05048c172d"/><file name="upgrade-1.1.2.1-1.2.0.0.php" hash="cad08b1c61ec678d3848bc708d9abb93"/><file name="upgrade-1.2.0.0-1.2.0.1.php" hash="84fd2540a1f49e6389ff020c8e5af26a"/><file name="upgrade-1.2.0.1-1.2.0.2.php" hash="e4f0ac1f302b04d51b8e055a015f266e"/><file name="upgrade-1.2.0.2-1.2.0.3.php" hash="dab9799a3641756c414be9c24da50ed2"/><file name="upgrade-1.2.1-1.2.2.php" hash="eede73761bed1bfdb89fd401be2bb73f"/><file name="upgrade-1.2.2-2.0.0.php" hash="776bc7ea41553eca877799bcc1a6c0f5"/><file name="upgrade-2.0.0-2.0.1.php" hash="0e82e6faa5ad98c0c7ab54f7fa9dbd3d"/><file name="upgrade-2.0.1-2.0.2.php" hash="4dbb0a871107c8d73dbcef9d1283291f"/><file name="upgrade-2.0.10-3.0.0.php" hash="3c247bf1573b192c431fecf1a97ea41e"/><file name="upgrade-2.0.3-2.0.4.php" hash="808861b1ef6079517feb94ae9afb7bc4"/><file name="upgrade-2.0.4-2.0.5.php" hash="29082ded381bd975bf8e9de9ee1aab74"/><file name="upgrade-2.0.5-2.0.6.php" hash="be2d23c6c0b877db0ac3bfa75a15b3c2"/><file name="upgrade-2.0.6-2.0.7.php" hash="4a789cf110e0e98270e635a7df85706e"/><file name="upgrade-2.0.7-2.0.8.php" hash="64a538428c0ebadcbb942a218814411a"/><file name="upgrade-2.0.8-2.0.9.php" hash="f2fd21608a2b91aeed69a28a1fb22b7a"/><file name="upgrade-2.0.9-2.0.10.php" hash="99d8c357714dfad0c44878a19ced4bab"/><file name="upgrade-3.0.0-3.0.1.php" hash="8a1ba3c8d8ca015c9e47d075ecea63dc"/><file name="upgrade-3.0.1-3.0.2.php" hash="9a6333481ccf99cbc851ae904067d91a"/><file name="upgrade-3.0.2-3.1.1.php" hash="656613ebca52ae1581d41cc2cdf58d83"/><file name="upgrade-3.1.5-3.1.6.php" hash="529cb0c4c7f7f5f3b15e53dcc025c0f7"/><file name="upgrade-3.1.6-3.1.7.php" hash="a3e58f601ca6fbf534bb14d031c19d39"/><file name="upgrade-3.1.7-3.1.8.php" hash="937e0052ee352a2f0fd1f548d65e61ef"/></dir></dir><file name=".DS_Store" hash="a747456783fab7a1190bb4bb3c45424a"/></dir><dir name="Uploader"><dir name="Block"><file name="Abstract.php" hash="38144e4e5c93520084c8cd6d81a47213"/><file name="Single.php" hash="98267d16076c3d556fb60d36c4e98252"/></dir><dir name="Helper"><file name="Data.php" hash="c142374acaef347046b43812adf919bf"/><file name="File.php" hash="1d25808dcc375cd85b35a77b111e744b"/></dir><dir name="Model"><dir name="Config"><file name="Abstract.php" hash="5b76430dd931628c2aaac0f698536186"/><file name="Browsebutton.php" hash="bce1ef6db09e535473c085dd6b5f580c"/><file name="Misc.php" hash="e0a89ff017cd74531448f9f295bb327b"/><file name="Uploader.php" hash="41152324c956fbe9cc9473044c139201"/></dir></dir><dir name="etc"><file name="config.xml" hash="a76f635b80aa9f9ad87fba966d560e11"/><file name="jstranslator.xml" hash="5de25b97a70ec60134a47c3c6bc9212a"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><dir name="eurotext"><file name="translationmanager.xml" hash="fe0cacbe5fedd5ac0abccb3009879d1a"/></dir></dir><dir name="template"><dir name="eurotext"><dir name="translationmanager"><dir name="export"><file name="overview.phtml" hash="9327bb36242c985b60db163953563c67"/></dir><file name="help.phtml" hash="1d8d1d32744bc6db2d26b2b0fa2394fe"/><dir name="import"><file name="overview.phtml" hash="6c90bdd842e3b03c8697c337b388e798"/></dir><dir name="project"><dir name="email"><file name="note.phtml" hash="f39644edf9dc77c92206961f46dc08b8"/></dir><dir name="products"><file name="bulk_sku.phtml" hash="d150c3b522378c2810947b8f877eccef"/><file name="category_tree.phtml" hash="02d25a4b18772ac2541f7be067ed1c0f"/><file name="script.phtml" hash="44956e903e1f2751da6d6464214b047f"/></dir></dir></dir><dir name="uploader"><dir name="media"><file name="uploader.phtml" hash="8f37a11c24df77615aaaba3e81cebbaa"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Eurotext_TranslationManager.csv" hash="dd91805d1358e4eb64969d321e558f7b"/><file name="Eurotext_Uploader.csv" hash="52a262b495f24074825b07a15080e264"/></dir><dir name="de_DE"><file name="Eurotext_TranslationManager.csv" hash="259290a914e033ac623e8018ad3051fa"/><file name="Eurotext_Uploader.csv" hash="0009959270fc7f3d5256250c97f5b4c8"/></dir></target><target name="mageetc"><dir name="modules"><file name="Eurotext_TranslationManager.xml" hash="0eb43d3e4d41bebb069074d1d9eed7df"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="eurotext"><dir name="translationmanager"><dir name="css"><file name="help.css" hash="38e92dee1ed607b981203e315eb26c86"/><file name="project.css" hash="4a959f8858e91c2b1b49e3ca927b9447"/><file name="status.css" hash="893a736b4a043eb5b801d7a639d92d03"/></dir><dir name="images"><file name="btt_suche.png" hash="9b74d62b9840cafb6990352c52a39458"/><file name="cat-minus.png" hash="d092af81ca37c821e13f27cc9bc44378"/><file name="cat-none.png" hash="88805f6b1ed90aa66db3cc6f89c83db0"/><file name="cat-plus.png" hash="16d73e360bebbeb16c4115ceea771b56"/><file name="eurotext_logo.png" hash="87120ee2d376e3195e2e7cd8b9661ba7"/><file name="eurotext_table_head.png" hash="36583e9470155c585304e305133e13ec"/><file name="logo_dixeno.png" hash="dd23f387d0eee8a9494724a470d8742e"/><file name="logo_eurotext.png" hash="7a8627f728f203823fbee1575d223131"/><file name="pager_arrow_left.gif" hash="6e44f608dac8eb8be1d1ebee5a3285aa"/><file name="pager_arrow_left_off.gif" hash="30f5e56195ab3546b36f4016db5254be"/><file name="pager_arrow_right.gif" hash="cc79526156b7e0c8abce61fad3d53f77"/><file name="pager_arrow_right_off.gif" hash="f01b7dad9acf0180b5c62edbd7ea9939"/></dir><dir name="js"><file name="eurotext_project.js" hash="9812165e4e8193a227503583d8423331"/><file name="export.js" hash="78b560ca40a66a6180a4ad8bb7dad933"/><file name="system_config.js" hash="d773e2a2896b917ca4f793da3fb4f9d3"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="eurotext"><dir name="uploader"><file name="flow.min.js" hash="a82a557db407b53d5909fa4e1833a596"/><file name="fusty-flow-factory.js" hash="b3f49be0f28be74e8b8bb76496c52bc3"/><file name="fusty-flow.js" hash="302f440908837093fd4e9b6e76ec01e0"/><file name="instance.js" hash="3a4f8bbbb500a1224eba194f93afe437"/></dir></dir></dir></target></contents>
149
  <compatible/>
150
  <dependencies><required><php><min>5.5.0</min><max>8.0.0</max></php></required></dependencies>
151
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>eurotext_translationMANAGER</name>
4
+ <version>3.2.16</version>
5
  <stability>stable</stability>
6
  <license uri="https://eurotext-ecommerce.com/agb/">Nutzungsbedingungen f&#xFC;r Softwareanwendungen der Eurotext AG</license>
7
  <channel>community</channel>
22
  Further information can be found at http://eurotext.screenstepslive.com/s/translationmanager&#xD;
23
  &#xD;
24
  # General terms &amp; conditions for Eurotext AG software applications&#xD;
25
+ http://eurotext.de/en/contact/terms-and-conditions/</notes>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  <authors><author><name>Eurotext AG</name><user>eurotext</user><email>info@eurotext.de</email></author></authors>
27
+ <date>2017-04-11</date>
28
+ <time>23:32:50</time>
29
+ <contents><target name="magecommunity"><dir name="Eurotext"><dir name="TranslationManager"><dir name="Block"><dir name="Adminhtml"><dir name="Eurotext"><dir name="Export"><file name="Overview.php" hash="fefd3dc416377f0796233d4ae4a5629b"/></dir><dir name="Grid"><file name="OverwriteCheckboxRenderer.php" hash="602066f890b3ac64a6916161b1c658c3"/><dir name="Renderer"><file name="Checkbox.php" hash="c1f85f5830ff53322dab7a5c1d508072"/><file name="StoreviewWithLocale.php" hash="9b9ca817cd22834274d47f1609feec1e"/></dir></dir><dir name="Import"><file name="Overview.php" hash="f57e709deabcea28c7c9b91130adfb40"/></dir><dir name="Project"><dir name="Edit"><file name="Form.php" hash="5fd8a6e124a3ad3f70a67f166eec0473"/><dir name="Tab"><file name="Categories.php" hash="cff581961884ee839a4dff23c512cb61"/><file name="CmsBlock.php" hash="f0207afed8f58cf715d3ef5b91432b1a"/><file name="CmsPage.php" hash="e1cbffb562cbd97eeba4addc1eef131e"/><dir name="Emails"><file name="Note.php" hash="f0491208842f17d8cb73ec849542f31f"/></dir><dir name="Grid"><file name="Massaction.php" hash="472f252d52b62f9b0da475336b40bc1c"/></dir><dir name="Main"><file name="Single.php" hash="44eb8988afe846e83ff944233fc16764"/><file name="Uploader.php" hash="2a7b906a104315c60189133a40a619c3"/></dir><file name="Main.php" hash="f71cc6cacda7a56a717b9dede32e0645"/><dir name="Products"><file name="CategoryTree.php" hash="8f30da7c0c9d4c55958b83d46c61c220"/><file name="CategoryTreeAjax.php" hash="e351352e4a67510f0a5b61486cc7e76e"/><file name="Script.php" hash="d352799ffe1174b0e962f419abd726bb"/></dir><file name="Products.php" hash="1e10b7c263ea723e1deb9a9a18408956"/><file name="TransactionEmailFiles.php" hash="2dc4c29f6aa7397b888a7c3cb896681d"/><file name="TransactionEmailsDatabase.php" hash="bdf80aae0f475f119317531c7f8c7b7e"/><file name="TranslateFiles.php" hash="6e0c8a2fa3968aa7bdaa439ff5e4d774"/></dir><file name="Tabs.php" hash="7d2b96b63e1099e7221c8d78cf798e3e"/></dir><file name="Edit.php" hash="2501621acc283552519d8b4fe852acf2"/><file name="Grid.php" hash="2f5e6308b7189f0471c55813e00a3a6a"/></dir><file name="Project.php" hash="ff6bb0a8ac38ad3cf2f0c29d549b840c"/></dir><dir name="Grid"><dir name="Renderer"><file name="StoreviewWithLocale.php" hash="a651d215586f38e58fe8c0a7da3aaa8d"/></dir></dir></dir><file name="Help.php" hash="ca61b416958f9a5304a94a9ce69df7da"/><dir name="Response"><file name="Ajax.php" hash="59613d25a1ffc960cc7a3ae29d24e6ec"/></dir><file name="Status.php" hash="80d6933a456971a3a77bd1f21fb5607c"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><dir name="Registration"><file name="Status.php" hash="4f8317f73c695e5af3ee0dfeeb4196ee"/></dir><file name="Text.php" hash="f5fb0b1cf7e3d794a398ede74cf17133"/></dir></dir></dir></dir></dir><dir name="Exception"><file name="FtpException.php" hash="60c1ff48c554f9532eb8d332317d215d"/></dir><dir name="Helper"><file name="Category.php" hash="70cd77b9e06caf7ea3a4486815d64836"/><file name="Config.php" hash="35dbc25466bf03a3046317d6f0891447"/><file name="Data.php" hash="b72b345dd1db925138f00d23b2fdaeee"/><file name="Eurotext.php" hash="4ad797703c20d66b9c758b3aa27e1d82"/><file name="Filesystem.php" hash="ae921fc9b3284907eecf99929511c713"/><file name="Project.php" hash="01c2204aafbec11cd07520d430da5b91"/><file name="String.php" hash="dffd96b1157655c01e092d60a0435e99"/><file name="Xml.php" hash="5523724d86ee6f78a79266f8b565e4be"/></dir><dir name="Model"><dir name="Catalog"><dir name="Product"><dir name="Attribute"><dir name="Backend"><dir name="Media"><file name="OnlyStoreValues.php" hash="ed8ea13152310f8e3ae0df3dfe4fc38c"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Exception.php" hash="d8ac30e2db57fd25bf1c848425741acd"/></dir><dir name="Eav"><dir name="Attribute"><file name="Label.php" hash="3cc63ed47cdcc3cda59f4d9d93518150"/><dir name="Option"><file name="Value.php" hash="69ec30b12d3724365473b5510da664cd"/></dir></dir></dir><file name="EurotextLanguages.php" hash="da62fbf9448208ae22a26da9b55bc880"/><dir name="Export"><dir name="Project"><file name="Attribute.php" hash="2f72f55b0d514ff6e205e0703c3a2182"/><file name="Category.php" hash="8f93bbad5882db2f5f8a06b6e20acee1"/><file name="CmsBlock.php" hash="ea19d50c3fd644b4a833083131c0c3c1"/><file name="CmsPage.php" hash="d532806b17c7f2e5d878f761c69bbc94"/><file name="CreateControlFile.php" hash="c9730640dea5f23dda030e24956d0aa2"/><file name="EmailDatabaseTemplates.php" hash="4431408f51baeefd8da0701efbbffdc4"/><file name="EmailFileTemplates.php" hash="cbd4f3410d52c036d71839f1c3426b16"/><file name="Exporter.php" hash="451fb2d540fcf210c4de0014961c0eb9"/><file name="FtpUpload.php" hash="126b70a963466c38e11184957471e841"/><file name="LocaleCsvFiles.php" hash="37d43b46715f151ba79c09a03fa079f2"/><file name="Product.php" hash="ea2e49c3f46d074dcb9e556158428766"/></dir><file name="Project.php" hash="f333f0da464ca6221f60d99c28476b93"/></dir><file name="Extractor.php" hash="1ba85afc3fdf1078c15a4298b5d0585a"/><file name="Factory.php" hash="433a4237864b60ba71ff3af1f85feff6"/><dir name="Import"><dir name="Project"><file name="Attributes.php" hash="344b90e86067b7fd9999e79f5efa4d58"/><file name="Categories.php" hash="5ba5ca281466221348b849f4799efdd5"/><file name="CmsBlocks.php" hash="d73f4b9c5d4514f17e12d9a81a607dfb"/><file name="CmsPages.php" hash="d4bfbd1be962a7640b155de0b58f8b59"/><file name="CollectSkipped.php" hash="3efd27b15b46b2befdcd01f8e03b17e7"/><file name="EmailTemplates.php" hash="5c8ecad5f60e5577492aea60b8c60120"/><dir name="Exception"><file name="MissingEntity.php" hash="55c8d26331cf9e7090c6fec482cf3b3e"/></dir><file name="Importer.php" hash="2ecac21104fab2e7929932d12cc5b799"/><file name="LocaleCsvFiles.php" hash="065ce0d9b42a39a993ab026c141e409d"/><file name="Product.php" hash="6e392b533680af8b8b5881c8c8f0c61e"/></dir><file name="Project.php" hash="faf305f7407fa07d2a44080b77dfbcd0"/><file name="Queue.php" hash="c998e994059b84a9ed2624c3e3704d59"/><file name="Validator.php" hash="795fa7dd6ad2e826be6daabe5c59c0c7"/></dir><file name="Observer.php" hash="604a1768e35b5d900a72905e6be8135a"/><file name="ProductLoader.php" hash="44b7a3dcf73c9e60118b9d71282ed975"/><dir name="Project"><file name="Category.php" hash="8dd0af28d2889d8eb5ea4aa5fb7b2b5b"/><file name="Cmsblock.php" hash="2b0c4601a0021d5f7d06f98e2b7ab0e2"/><file name="Cmspage.php" hash="3a5642ff3770b3ad09424880b20949c9"/><file name="Csv.php" hash="4fd06e795a31a53ef4fc5106c0ffa28c"/><file name="EmailtemplateDatabase.php" hash="c6978dfc5846d3f470e0b8536178f344"/><file name="EmailtemplateFile.php" hash="c0ba504eaf050ad39acd6e90f47854f3"/><file name="Import.php" hash="a8ef441cd37ee562d8b38755359cd694"/><file name="Product.php" hash="8b5e14407f1449d3df0204274d03320a"/><dir name="Source"><file name="Status.php" hash="6890bab36d251ee47ca2836fbeb41603"/></dir></dir><file name="Project.php" hash="997be271e349bdaa355ed2dd617698b2"/><dir name="Renderer"><dir name="Filesystem"><file name="RelativeToAppDirectory.php" hash="725289dc9ed79898eab27b2ccb5c6d91"/><file name="RelativeToLocaleTemplateDirectory.php" hash="14f6a546f84a48d822179bb353b46351"/></dir><file name="Filesystem.php" hash="5c56c1e04db25584ac6a1ad48c0d4a9d"/></dir><dir name="Resource"><dir name="Catalog"><dir name="Product"><dir name="Attribute"><dir name="Backend"><dir name="Media"><file name="OnlyStoreValues.php" hash="ae4d43376d24cbae4ed19632794f51ba"/></dir></dir></dir><dir name="Option"><file name="Title.php" hash="ee3eabb5995eb327e2de31b248e285be"/><dir name="Type"><file name="Title.php" hash="c49656683099b75ccd6642c61d7a22bc"/></dir></dir></dir></dir><dir name="Csv"><file name="Collection.php" hash="ede1c332dddf9a6ea7bb4b311854cf61"/></dir><dir name="Eav"><dir name="Attribute"><dir name="Label"><file name="Collection.php" hash="6eff56981825b462b78897a1dd0f7248"/></dir><file name="Label.php" hash="65ba1673abc5ed1731d0e911b9b5e4b7"/><dir name="Option"><dir name="Value"><file name="Collection.php" hash="23ebc81f087b31723b175ae46e7eb4e2"/></dir><file name="Value.php" hash="3352674505656df6d51774444ab59fa5"/></dir></dir></dir><dir name="Emailtemplate"><dir name="Filesystem"><file name="Collection.php" hash="a8f0dc8367a2ee12846d89b272037db1"/></dir></dir><dir name="Filesystem"><file name="Collection.php" hash="8b84ee3193ad45484c251336d64cf71c"/></dir><dir name="Project"><dir name="Category"><file name="Collection.php" hash="134968856c66296fe418151a7dfdc8a5"/></dir><file name="Category.php" hash="55d87ff56d171e1daf4f42a2b8808d1b"/><dir name="Cmsblock"><file name="Collection.php" hash="d126952fba4c57de3277ac83bbafe61b"/></dir><file name="Cmsblock.php" hash="05e85b8142a95424ddd45884999a6c6c"/><dir name="Cmspage"><file name="Collection.php" hash="7fd97c6a893d2e365e1035e934f5be5d"/></dir><file name="Cmspage.php" hash="58e59ec888b52973b01b98e0fc19f50f"/><file name="Collection.php" hash="0b068f00639795627c7e2576ca3feaa4"/><dir name="Csv"><file name="Collection.php" hash="0d10dfdedae29b70f1fc2e3b19f160e4"/></dir><file name="Csv.php" hash="f283f1bd37fecb222bedf46d9cde3f18"/><dir name="EmailtemplateDatabase"><file name="Collection.php" hash="e63d7568db40281040ef984326100658"/></dir><file name="EmailtemplateDatabase.php" hash="eb787be577d4341d5324d159f9a66afd"/><dir name="EmailtemplateFile"><file name="Collection.php" hash="8d83aa3abce2e076d387ac3ba3a12cb3"/></dir><file name="EmailtemplateFile.php" hash="43d1baa459bf00fead85fa9e22979502"/><dir name="Import"><file name="Collection.php" hash="7ac0c91738130e32b97e4dc3f7ae6e68"/></dir><file name="Import.php" hash="9d71d42dfc91c16fa83a26ae76b79339"/><dir name="Product"><file name="Collection.php" hash="cafc0c7dbda6f9733a7dbf158a03c88b"/></dir><file name="Product.php" hash="8fbd6ffee43f8094c90d52f97e425d50"/></dir><file name="Project.php" hash="d964e9890f77119ceb343692d98a27d7"/><file name="Setup.php" hash="992b5dbedd9dc6d669ff7a7949c790ab"/></dir><dir name="Source"><file name="StoreViewWithLocale.php" hash="a97b6ef2d0521da72fcad45c7ab8b1df"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Salutation.php" hash="1de509321f9050e3f4c30c004e9b0310"/></dir></dir></dir><dir name="Updater"><file name="MediaGalleryValue.php" hash="8c38ccb08dab63701882e4dbf79f0bc7"/></dir><dir name="Xml"><dir name="Import"><dir name="Cms"><file name="Block.php" hash="ee5853195c38dcc699a663bbe70a510e"/><file name="BlockReader.php" hash="014777bc903da0127027952e32ae425a"/></dir></dir></dir><file name=".DS_Store" hash="7c3522d12f27b1bc414fac586a4b971f"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Eurotext"><file name="HelpController.php" hash="cf5a275aef3ed8d5b57cecf7e336fc9d"/><dir name="Project"><file name="ExportController.php" hash="63a5912395a6192b84da0b228671a983"/><file name="ImportController.php" hash="4a5237e5957113734a8f0a0b2721b082"/></dir><file name="ProjectController.php" hash="c931338c46fb24ee18f1daf159885bb9"/><file name="StatusController.php" hash="fa4bad31a7259d73eb4e8d63f8a8baad"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><file name=".DS_Store" hash="af0a7d68dfc1505f5fd04c55baff3727"/></dir><file name=".DS_Store" hash="9d6e9b7cea3d170ee9c8cfccccc4ee80"/></dir><dir name="data"><dir name="eurotext_translationmanager_setup"><file name="data-install-3.0.0.php" hash="fa9de480b2d6d32ec1530c51914607d7"/><file name="data-upgrade-1.2.0.4-1.2.1.php" hash="40c403ee7e379d83e3f76ce1d6809b4e"/><file name="data-upgrade-1.2.1-1.2.2.php" hash="d6a7a1c4e525f552cc463393398737e1"/><file name="data-upgrade-3.1.1-3.1.2.php" hash="ea833f0234b35f910623f0434d78e8e9"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="af3f9f6b2b6ed681f4ebe8651ae4ad33"/><file name="config.xml" hash="9fb08fed2c0f439fa4efd65b9eaa55f5"/><file name="jstranslator.xml" hash="96c99f45202c522b98b01e792308954b"/><file name="system.xml" hash="30c104492c31a647fe7d05af8a7ec52a"/></dir><dir name="sql"><dir name="eurotext_translationmanager_setup"><file name="install-3.0.0.php" hash="a83ab8f94563a9cbe221edbfc0ceb500"/><file name="mysql4-install-1.0.0.0.php" hash="cd7bed4f7a7afce245992512c6a1933b"/><file name="mysql4-upgrade-1.0.0.5-1.0.0.6.php" hash="548230adb75f3d7799855fc2eb2f9c4c"/><file name="mysql4-upgrade-1.0.0.7-1.0.0.8.php" hash="4de6534c12eb4a82a948485c9d6b8e86"/><file name="upgrade-1.1.2.1-1.2.0.0.php" hash="ea022950a6af9bbba834537b1b5bedb3"/><file name="upgrade-1.2.0.0-1.2.0.1.php" hash="40e90210f3194928c38b8d47accafb96"/><file name="upgrade-1.2.0.1-1.2.0.2.php" hash="a67c4bcf3cbc13baca9bf827ac733c7a"/><file name="upgrade-1.2.0.2-1.2.0.3.php" hash="1e0a0185fd8d3a464c25cf093e939ea3"/><file name="upgrade-1.2.1-1.2.2.php" hash="dc9228eb14fc43830ed6e606b088b3eb"/><file name="upgrade-1.2.2-2.0.0.php" hash="d398a69e69e749d134a565673eadedb9"/><file name="upgrade-2.0.0-2.0.1.php" hash="abe68877c883a4184d11b753fa00cbf9"/><file name="upgrade-2.0.1-2.0.2.php" hash="31a83ad241332f4f42cccd639ac8d8a1"/><file name="upgrade-2.0.10-3.0.0.php" hash="3c247bf1573b192c431fecf1a97ea41e"/><file name="upgrade-2.0.3-2.0.4.php" hash="808861b1ef6079517feb94ae9afb7bc4"/><file name="upgrade-2.0.4-2.0.5.php" hash="29082ded381bd975bf8e9de9ee1aab74"/><file name="upgrade-2.0.5-2.0.6.php" hash="be2d23c6c0b877db0ac3bfa75a15b3c2"/><file name="upgrade-2.0.6-2.0.7.php" hash="4a789cf110e0e98270e635a7df85706e"/><file name="upgrade-2.0.7-2.0.8.php" hash="64a538428c0ebadcbb942a218814411a"/><file name="upgrade-2.0.8-2.0.9.php" hash="f2fd21608a2b91aeed69a28a1fb22b7a"/><file name="upgrade-2.0.9-2.0.10.php" hash="99d8c357714dfad0c44878a19ced4bab"/><file name="upgrade-3.0.0-3.0.1.php" hash="8a1ba3c8d8ca015c9e47d075ecea63dc"/><file name="upgrade-3.0.1-3.0.2.php" hash="9a6333481ccf99cbc851ae904067d91a"/><file name="upgrade-3.0.2-3.1.1.php" hash="656613ebca52ae1581d41cc2cdf58d83"/><file name="upgrade-3.1.5-3.1.6.php" hash="529cb0c4c7f7f5f3b15e53dcc025c0f7"/><file name="upgrade-3.1.6-3.1.7.php" hash="a3e58f601ca6fbf534bb14d031c19d39"/><file name="upgrade-3.1.7-3.1.8.php" hash="937e0052ee352a2f0fd1f548d65e61ef"/></dir></dir><file name=".DS_Store" hash="a747456783fab7a1190bb4bb3c45424a"/></dir><dir name="Uploader"><dir name="Block"><file name="Abstract.php" hash="8cf19faab951ce77597d5c08f7f1d72d"/><file name="Single.php" hash="98267d16076c3d556fb60d36c4e98252"/></dir><dir name="Helper"><file name="Data.php" hash="c142374acaef347046b43812adf919bf"/><file name="File.php" hash="72ce04aec06d51501c7813b35f3888ed"/></dir><dir name="Model"><dir name="Config"><file name="Abstract.php" hash="ac2ee98d14729d0ac3d7fd01fb72c579"/><file name="Browsebutton.php" hash="bce1ef6db09e535473c085dd6b5f580c"/><file name="Misc.php" hash="e0a89ff017cd74531448f9f295bb327b"/><file name="Uploader.php" hash="41152324c956fbe9cc9473044c139201"/></dir></dir><dir name="etc"><file name="config.xml" hash="a76f635b80aa9f9ad87fba966d560e11"/><file name="jstranslator.xml" hash="5de25b97a70ec60134a47c3c6bc9212a"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><dir name="eurotext"><file name="translationmanager.xml" hash="fe0cacbe5fedd5ac0abccb3009879d1a"/></dir></dir><dir name="template"><dir name="eurotext"><dir name="translationmanager"><dir name="export"><file name="overview.phtml" hash="5005c03af44e03864fb45a82a0954657"/></dir><file name="help.phtml" hash="6af23ed7ce809aec6f871273461649e4"/><dir name="import"><file name="overview.phtml" hash="6c90bdd842e3b03c8697c337b388e798"/></dir><dir name="project"><dir name="email"><file name="note.phtml" hash="f39644edf9dc77c92206961f46dc08b8"/></dir><dir name="products"><file name="bulk_sku.phtml" hash="d150c3b522378c2810947b8f877eccef"/><file name="category_tree.phtml" hash="02d25a4b18772ac2541f7be067ed1c0f"/><file name="script.phtml" hash="44956e903e1f2751da6d6464214b047f"/></dir></dir></dir><dir name="uploader"><dir name="media"><file name="uploader.phtml" hash="8f37a11c24df77615aaaba3e81cebbaa"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Eurotext_TranslationManager.csv" hash="dd91805d1358e4eb64969d321e558f7b"/><file name="Eurotext_Uploader.csv" hash="52a262b495f24074825b07a15080e264"/></dir><dir name="de_DE"><file name="Eurotext_TranslationManager.csv" hash="259290a914e033ac623e8018ad3051fa"/><file name="Eurotext_Uploader.csv" hash="0009959270fc7f3d5256250c97f5b4c8"/></dir></target><target name="mageetc"><dir name="modules"><file name="Eurotext_TranslationManager.xml" hash="0eb43d3e4d41bebb069074d1d9eed7df"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="eurotext"><dir name="translationmanager"><dir name="css"><file name="help.css" hash="38e92dee1ed607b981203e315eb26c86"/><file name="project.css" hash="4a959f8858e91c2b1b49e3ca927b9447"/><file name="status.css" hash="893a736b4a043eb5b801d7a639d92d03"/></dir><dir name="images"><file name="btt_suche.png" hash="9b74d62b9840cafb6990352c52a39458"/><file name="cat-minus.png" hash="d092af81ca37c821e13f27cc9bc44378"/><file name="cat-none.png" hash="88805f6b1ed90aa66db3cc6f89c83db0"/><file name="cat-plus.png" hash="16d73e360bebbeb16c4115ceea771b56"/><file name="eurotext_logo.png" hash="87120ee2d376e3195e2e7cd8b9661ba7"/><file name="eurotext_table_head.png" hash="36583e9470155c585304e305133e13ec"/><file name="logo_dixeno.png" hash="dd23f387d0eee8a9494724a470d8742e"/><file name="logo_eurotext.png" hash="7a8627f728f203823fbee1575d223131"/><file name="pager_arrow_left.gif" hash="6e44f608dac8eb8be1d1ebee5a3285aa"/><file name="pager_arrow_left_off.gif" hash="30f5e56195ab3546b36f4016db5254be"/><file name="pager_arrow_right.gif" hash="cc79526156b7e0c8abce61fad3d53f77"/><file name="pager_arrow_right_off.gif" hash="f01b7dad9acf0180b5c62edbd7ea9939"/></dir><dir name="js"><file name="eurotext_project.js" hash="9812165e4e8193a227503583d8423331"/><file name="export.js" hash="78b560ca40a66a6180a4ad8bb7dad933"/><file name="system_config.js" hash="d773e2a2896b917ca4f793da3fb4f9d3"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="eurotext"><dir name="uploader"><file name="flow.min.js" hash="a82a557db407b53d5909fa4e1833a596"/><file name="fusty-flow-factory.js" hash="b3f49be0f28be74e8b8bb76496c52bc3"/><file name="fusty-flow.js" hash="302f440908837093fd4e9b6e76ec01e0"/><file name="instance.js" hash="3a4f8bbbb500a1224eba194f93afe437"/></dir></dir></dir></target></contents>
30
  <compatible/>
31
  <dependencies><required><php><min>5.5.0</min><max>8.0.0</max></php></required></dependencies>
32
  </package>