Textmaster_Textmaster - Version 1.0.6

Version Notes

Add New features:
- Translation memory
- Markup in content
- New quality level : Enterprise.

We have improve some fonctonnalities.

Download this release

Release Info

Developer Textmaster
Extension Textmaster_Textmaster
Version 1.0.6
Comparing to
See all releases


Code changes from version 1.0.5 to 1.0.6

app/code/community/Textmaster/Textmaster/Block/Adminhtml/Project/Onglets/Step2.php CHANGED
@@ -74,11 +74,7 @@
74
  'disabled' => false,
75
  'readonly' => false
76
  ));
77
-
78
-
79
-
80
-
81
-
82
  $products_id = Mage::getSingleton('core/session')->getSelectedProducts();
83
  $text = '';
84
  $products = array();
@@ -159,7 +155,8 @@
159
  <script>
160
  var attribute_word_count = '.Mage::helper('core')->jsonEncode($aAfterJs).';
161
  var nouveau_message_loader = "'.Mage::helper ( 'textmaster' )->__ ( 'Nouveau message variable' ).'";
162
- var must_display_loader = '.($this->getProject()&&$this->getProject()->hasDocumentsNotCount()?"true":'false').';
 
163
  var pourcent_avance = '.$r.';
164
  var textmasterurl_count = "'.($this->getProject()?Mage::getSingleton('adminhtml/url')->getUrl('*/*/createprojectready',array('id'=>$this->getProject()->getId())):'').'";
165
  var currency_symbol = "'.$curr->getSymbol().'";
@@ -229,13 +226,14 @@
229
  'name' => 'language_level',
230
  'required' => true,
231
  'values' => array(
232
- Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_REGULAR => ucfirst(Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_REGULAR),
233
- Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_PREMIUM => ucfirst(Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_PREMIUM),
 
234
  ),
235
  'after_element_html' => '<br/><small>'.
236
  Mage::helper('textmaster')->__('Regular (%s/word): native-speaking translator for word-for-word translations of short texts.',$currency->format($tarifs['types']['translation']['regular'])).'<br/>'.
237
  Mage::helper('textmaster')->__('Premium (%s/word): experienced translator; suitable for business use.',$currency->format($tarifs['types']['translation']['premium'])) .'<br/>'.
238
- Mage::helper('textmaster')->__('Enterprise (%s/word): professional translator specialized in a specific field; suitable for technical or complex content.',$currency->format(0.13)) .'<br/>'.
239
  '</small>',
240
  ));
241
 
@@ -271,7 +269,19 @@
271
  'after_element_html' => '<br/><small>'.Mage::helper('textmaster')->__('We provide you with an expert in the selected category.').'</small>',
272
 
273
  ) );
274
-
 
 
 
 
 
 
 
 
 
 
 
 
275
 
276
  $fieldset = $form->addFieldset ( 'project_name', array (
277
  'legend' => Mage::helper ( 'textmaster' )->__ ( 'Instructions du projet' )
74
  'disabled' => false,
75
  'readonly' => false
76
  ));
77
+
 
 
 
 
78
  $products_id = Mage::getSingleton('core/session')->getSelectedProducts();
79
  $text = '';
80
  $products = array();
155
  <script>
156
  var attribute_word_count = '.Mage::helper('core')->jsonEncode($aAfterJs).';
157
  var nouveau_message_loader = "'.Mage::helper ( 'textmaster' )->__ ( 'Nouveau message variable' ).'";
158
+ var message_loader_tm = "'.Mage::helper ( 'textmaster' )->__ ( 'message_loader_tm' ).'";
159
+ var must_display_loader = '.($this->getProject() && ($this->getProject()->hasDocumentsNotCount() || ($this->getProject()->getTranslationMemory() && ($this->getProject()->getTranslationMemoryStatus() == Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_IN_PROGRESS || $this->getProject()->getTranslationMemoryStatus() == Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_COMPLETED))) ?"true":'false').';
160
  var pourcent_avance = '.$r.';
161
  var textmasterurl_count = "'.($this->getProject()?Mage::getSingleton('adminhtml/url')->getUrl('*/*/createprojectready',array('id'=>$this->getProject()->getId())):'').'";
162
  var currency_symbol = "'.$curr->getSymbol().'";
226
  'name' => 'language_level',
227
  'required' => true,
228
  'values' => array(
229
+ Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_REGULAR => ucfirst(Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_REGULAR),
230
+ Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_PREMIUM => ucfirst(Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_PREMIUM),
231
+ Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_ENTERPRISE => ucfirst(Textmaster_Textmaster_Model_Project::PROJECT_LANGUAGE_LEVEL_ENTERPRISE),
232
  ),
233
  'after_element_html' => '<br/><small>'.
234
  Mage::helper('textmaster')->__('Regular (%s/word): native-speaking translator for word-for-word translations of short texts.',$currency->format($tarifs['types']['translation']['regular'])).'<br/>'.
235
  Mage::helper('textmaster')->__('Premium (%s/word): experienced translator; suitable for business use.',$currency->format($tarifs['types']['translation']['premium'])) .'<br/>'.
236
+ Mage::helper('textmaster')->__('Enterprise (%s/word): professional translator specialized in a specific field; suitable for technical or complex content.',$currency->format($tarifs['types']['translation']['enterprise'])) .'<br/>'.
237
  '</small>',
238
  ));
239
 
269
  'after_element_html' => '<br/><small>'.Mage::helper('textmaster')->__('We provide you with an expert in the selected category.').'</small>',
270
 
271
  ) );
272
+ $fieldset->addField('translation_memory', 'select', array (
273
+ 'label' => Mage::helper('textmaster')->__('Translation memory (+%s/word)', $currency->format($tarifs['types']['translation']['translation_memory'], array(), false)),
274
+ 'name' => 'translation_memory',
275
+ 'disabled' => 'disabled',
276
+ 'required' => true,
277
+ 'values' => array(
278
+ Mage::helper ( 'textmaster' )->__ ( 'No' ),
279
+ Mage::helper ( 'textmaster' )->__ ( 'Yes' )
280
+ ),
281
+ 'after_element_html' => '<br/><small>'.Mage::helper('textmaster')->__('We will find some words in our database').'</small>',
282
+
283
+ ) );
284
+
285
 
286
  $fieldset = $form->addFieldset ( 'project_name', array (
287
  'legend' => Mage::helper ( 'textmaster' )->__ ( 'Instructions du projet' )
app/code/community/Textmaster/Textmaster/Block/Adminhtml/Project/Onglets/Step3.php CHANGED
@@ -146,8 +146,6 @@ class Textmaster_Textmaster_Block_Adminhtml_Project_Onglets_Step3 extends Mage_A
146
  }
147
  $this->getForm()->getElement('price')->setAfterElementHtml($html);
148
 
149
-
150
-
151
  $post['price'] = '';
152
 
153
  $html = $this->getProject()->getLanguageLevelTexte($post['language_level']).'<br/>';
@@ -160,6 +158,9 @@ class Textmaster_Textmaster_Block_Adminhtml_Project_Onglets_Step3 extends Mage_A
160
  if($post['expertise']) {
161
  $html .= Mage::helper( 'textmaster' )->__( 'Expertise (+%s / mot)',$currency->format($tarifs['types']['translation']['expertise'],array(),false) ).'<br/>';
162
  }
 
 
 
163
  $html .= Mage::helper( 'textmaster' )->__('%s/word',$currency->format($price_per_word,array(),false));
164
 
165
  $this->getForm()->getElement('options')->setAfterElementHtml($html);
146
  }
147
  $this->getForm()->getElement('price')->setAfterElementHtml($html);
148
 
 
 
149
  $post['price'] = '';
150
 
151
  $html = $this->getProject()->getLanguageLevelTexte($post['language_level']).'<br/>';
158
  if($post['expertise']) {
159
  $html .= Mage::helper( 'textmaster' )->__( 'Expertise (+%s / mot)',$currency->format($tarifs['types']['translation']['expertise'],array(),false) ).'<br/>';
160
  }
161
+ if($post['translation_memory']) {
162
+ $html .= Mage::helper( 'textmaster' )->__( 'Translation memory (+%s / mot)', $currency->format($tarifs['types']['translation']['translation_memory'],array(),false) ).'<br/>';
163
+ }
164
  $html .= Mage::helper( 'textmaster' )->__('%s/word',$currency->format($price_per_word,array(),false));
165
 
166
  $this->getForm()->getElement('options')->setAfterElementHtml($html);
app/code/community/Textmaster/Textmaster/Helper/Data.php CHANGED
@@ -43,9 +43,12 @@ class Textmaster_Textmaster_Helper_Data extends Mage_Core_Helper_Abstract
43
 
44
  private $_api = false;
45
 
 
 
46
  public function countWord ($txt)
47
  {
48
  $txt = utf8_decode($txt);
 
49
  $aMots = str_word_count($txt, 1,
50
  utf8_decode(
51
  'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ'));
@@ -111,10 +114,14 @@ class Textmaster_Textmaster_Helper_Data extends Mage_Core_Helper_Abstract
111
  }
112
 
113
  public function getCallbackCompletedUrl ()
114
- {return Mage::getUrl('textmaster/callback/documentcomplete');
115
-
116
  }
117
 
 
 
 
 
118
 
119
  public function getCallbackUrlInProgress ()
120
  {
43
 
44
  private $_api = false;
45
 
46
+ #project_tm_completed callback lancer launch project
47
+
48
  public function countWord ($txt)
49
  {
50
  $txt = utf8_decode($txt);
51
+ $txt = strip_tags($txt);
52
  $aMots = str_word_count($txt, 1,
53
  utf8_decode(
54
  'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ'));
114
  }
115
 
116
  public function getCallbackCompletedUrl ()
117
+ {
118
+ return Mage::getUrl('textmaster/callback/documentcomplete');
119
  }
120
 
121
+ public function getCallbackUrlTmComplete()
122
+ {
123
+ return Mage::getUrl('textmaster/callback/projecttmcomplete');
124
+ }
125
 
126
  public function getCallbackUrlInProgress ()
127
  {
app/code/community/Textmaster/Textmaster/Model/Api.php CHANGED
@@ -201,7 +201,6 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
201
  Mage::log(
202
  'Log API ' . $method . ' ' . $name . ' : ' .
203
  ($finlog - $debutlog), null, 'textmaster.log');
204
-
205
  $info = curl_getinfo($curl);
206
 
207
  // Mage::log(Mage::helper('core')->jsonEncode($data),null,'textmaster.log');
@@ -666,7 +665,8 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
666
  /* put service levels into array */
667
  $this->_service_levels = array(
668
  'regular' => Mage::helper('textmaster')->__('Regular'),
669
- 'premium' => Mage::helper('textmaster')->__('Premium')
 
670
  );
671
  return $this->_service_levels;
672
  }
@@ -890,18 +890,25 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
890
  // default
891
  // values
892
  $options = array(
893
- 'language_level' => $parameters['language_level'],
894
- 'quality' => $parameters['quality'],
895
- // 'expertise' => $parameters['expertise'],
896
- 'specific_attachment' => isset(
897
- $parameters['specific_attachment']) ? $parameters['specific_attachment'] : 'false',
898
- 'priority' => $parameters['priority']
899
  );
900
 
901
- unset($parameters['language_level'], $parameters['quality'],
902
- $parameters['expertise']);
 
 
 
 
 
 
903
 
904
  $parameters['options'] = $options;
 
905
 
906
  if (isset($parameters['textmasters'])) {
907
  if (is_array($parameters['textmasters']) &&
@@ -910,6 +917,15 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
910
  if (! is_array($parameters['textmasters']))
911
  unset($parameters['textmasters']);
912
  }
 
 
 
 
 
 
 
 
 
913
 
914
  $data = array(
915
  'project' => $parameters,
@@ -928,15 +944,23 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
928
  unset($parameters[$field]);
929
  }
930
  $options = array(
931
- 'language_level' => $parameters['language_level'],
932
- 'quality' => isset($parameters['quality']) ? $parameters['quality'] : '0',
 
 
 
 
933
  // 'expertise' => isset($parameters['expertise']) ? $parameters['expertise'] : '0',
934
- 'specific_attachment' => isset(
935
- $parameters['specific_attachment']) ? $parameters['specific_attachment'] : '0',
936
- 'priority' => isset($parameters['priority']) ? $parameters['priority'] : '0'
937
  );
938
- unset($parameters['language_level'], $parameters['quality'],
939
- $parameters['expertise']);
 
 
 
 
 
 
 
940
  $parameters['options'] = $options;
941
  if (isset($parameters['textmasters']) && ((is_array(
942
  $parameters['textmasters']) &&
@@ -944,10 +968,15 @@ class Textmaster_Textmaster_Model_Api extends Mage_Core_Model_Abstract
944
  ! is_array($parameters['textmasters']))) {
945
  unset($parameters['textmasters']);
946
  }
 
947
  $parameters['callback'] = array(
948
  'project_in_progress' => array(
949
  'url' => Mage::helper('textmaster')->getCallbackUrlInProgress(),
950
  "format" => "json"
 
 
 
 
951
  )
952
  );
953
 
201
  Mage::log(
202
  'Log API ' . $method . ' ' . $name . ' : ' .
203
  ($finlog - $debutlog), null, 'textmaster.log');
 
204
  $info = curl_getinfo($curl);
205
 
206
  // Mage::log(Mage::helper('core')->jsonEncode($data),null,'textmaster.log');
665
  /* put service levels into array */
666
  $this->_service_levels = array(
667
  'regular' => Mage::helper('textmaster')->__('Regular'),
668
+ 'premium' => Mage::helper('textmaster')->__('Premium'),
669
+ 'enterprise' => Mage::helper('textmaster')->__('Enterprise')
670
  );
671
  return $this->_service_levels;
672
  }
890
  // default
891
  // values
892
  $options = array(
893
+ 'language_level' => $parameters['language_level'],
894
+ 'quality' => isset($parameters['quality']) ? $parameters['quality'] : '0',
895
+ 'translation_memory' => isset($parameters['translation_memory']) ? $parameters['translation_memory'] : '0',
896
+ 'specific_attachment' => isset($parameters['specific_attachment']) ? $parameters['specific_attachment'] : '0',
897
+ 'priority' => isset($parameters['priority']) ? $parameters['priority'] : '0',
898
+ 'uniq_author' => isset($parameters['same_author_must_do_entire_project']) ? $parameters['same_author_must_do_entire_project'] : '0'
899
  );
900
 
901
+ unset($parameters['language_level'],
902
+ $parameters['quality'],
903
+ $parameters['expertise'],
904
+ $parameters['translation_memory'],
905
+ $parameters['specific_attachment'],
906
+ $parameters['priority'],
907
+ $parameters['same_author_must_do_entire_project']
908
+ );
909
 
910
  $parameters['options'] = $options;
911
+
912
 
913
  if (isset($parameters['textmasters'])) {
914
  if (is_array($parameters['textmasters']) &&
917
  if (! is_array($parameters['textmasters']))
918
  unset($parameters['textmasters']);
919
  }
920
+
921
+ $parameters['callback'] = array(
922
+ 'project_tm_completed' => array(
923
+ 'url' => Mage::helper('textmaster')->getCallbackUrlTmComplete(),
924
+ 'format' => 'json'
925
+ )
926
+ );
927
+
928
+ Mage::log($parameters);
929
 
930
  $data = array(
931
  'project' => $parameters,
944
  unset($parameters[$field]);
945
  }
946
  $options = array(
947
+ 'language_level' => $parameters['language_level'],
948
+ 'quality' => isset($parameters['quality']) ? $parameters['quality'] : '0',
949
+ 'translation_memory' => isset($parameters['translation_memory']) ? $parameters['translation_memory'] : '0',
950
+ 'specific_attachment' => isset($parameters['specific_attachment']) ? $parameters['specific_attachment'] : '0',
951
+ 'priority' => isset($parameters['priority']) ? $parameters['priority'] : '0',
952
+ 'uniq_author' => isset($parameters['same_author_must_do_entire_project']) ? $parameters['same_author_must_do_entire_project'] : '0',
953
  // 'expertise' => isset($parameters['expertise']) ? $parameters['expertise'] : '0',
 
 
 
954
  );
955
+ unset($parameters['language_level'],
956
+ $parameters['quality'],
957
+ $parameters['expertise'],
958
+ $parameters['translation_memory'],
959
+ $parameters['specific_attachment'],
960
+ $parameters['priority'],
961
+ $parameters['same_author_must_do_entire_project']
962
+ );
963
+
964
  $parameters['options'] = $options;
965
  if (isset($parameters['textmasters']) && ((is_array(
966
  $parameters['textmasters']) &&
968
  ! is_array($parameters['textmasters']))) {
969
  unset($parameters['textmasters']);
970
  }
971
+
972
  $parameters['callback'] = array(
973
  'project_in_progress' => array(
974
  'url' => Mage::helper('textmaster')->getCallbackUrlInProgress(),
975
  "format" => "json"
976
+ ),
977
+ 'project_tm_completed' => array(
978
+ 'url' => Mage::helper('textmaster')->getCallbackUrlTmComplete(),
979
+ 'format' => 'json'
980
  )
981
  );
982
 
app/code/community/Textmaster/Textmaster/Model/Document.php CHANGED
@@ -166,15 +166,20 @@
166
  $attributes = Mage::getModel ( 'textmaster/project_attribute' )->getCollection ()->addFieldToFilter ( 'textmaster_project_id', $this->getTextmasterProjectId () );
167
  $product = Mage::getModel ( 'catalog/product' )->setStoreId( $this->getProject()->getStoreIdOrigin() )->load ( $this->getProductId () );
168
  $data ['original_content'] = array ();
 
169
  $text = '';
170
  foreach ( $attributes as $attr ) {
171
  $attribute = Mage::getModel ( 'catalog/resource_eav_attribute' )->load ( $attr->getTextmasterAttributeId () );
172
  $text_attr = $product->getData ( $attribute->getName () );
173
  $text .= $text_attr . ' ';
174
- if (! empty ( $text_attr ))
175
  $data ['original_content'] [$attribute->getName ()] = array (
176
  'original_phrase' => $text_attr
177
  );
 
 
 
 
178
  }
179
 
180
  $data ['word_count'] = Mage::helper ( 'textmaster' )->countWord ( $text );
@@ -194,6 +199,7 @@
194
  unset ( $data ['created_at'] );
195
  unset ( $data ['document_api_id'] );
196
  unset ( $data ['original_content'] ['image'] );
 
197
  return $data;
198
  }
199
 
166
  $attributes = Mage::getModel ( 'textmaster/project_attribute' )->getCollection ()->addFieldToFilter ( 'textmaster_project_id', $this->getTextmasterProjectId () );
167
  $product = Mage::getModel ( 'catalog/product' )->setStoreId( $this->getProject()->getStoreIdOrigin() )->load ( $this->getProductId () );
168
  $data ['original_content'] = array ();
169
+ $data['markup_in_content'] = false;
170
  $text = '';
171
  foreach ( $attributes as $attr ) {
172
  $attribute = Mage::getModel ( 'catalog/resource_eav_attribute' )->load ( $attr->getTextmasterAttributeId () );
173
  $text_attr = $product->getData ( $attribute->getName () );
174
  $text .= $text_attr . ' ';
175
+ if (! empty ( $text_attr )){
176
  $data ['original_content'] [$attribute->getName ()] = array (
177
  'original_phrase' => $text_attr
178
  );
179
+ if(strip_tags($text_attr) != $text_attr){
180
+ $data['markup_in_content'] = true;
181
+ }
182
+ }
183
  }
184
 
185
  $data ['word_count'] = Mage::helper ( 'textmaster' )->countWord ( $text );
199
  unset ( $data ['created_at'] );
200
  unset ( $data ['document_api_id'] );
201
  unset ( $data ['original_content'] ['image'] );
202
+
203
  return $data;
204
  }
205
 
app/code/community/Textmaster/Textmaster/Model/Mysql4/Project/Collection.php CHANGED
@@ -77,12 +77,12 @@
77
  $this->_renderOrders()
78
  ->_renderLimit();
79
 
80
-
81
-
82
-
83
-
84
-
85
- $this->data_api = $this->_api->getProjects (false,array('where'=>$this->_filters_api),array($this->_end ,$this->_start),isset($this->_order)?array($this->_order,$this->_sens):array('updated_at','desc'));
86
 
87
  if(isset($this->data_api['projects'])){
88
  $this->_totalRecords = $this->data_api['count'];
77
  $this->_renderOrders()
78
  ->_renderLimit();
79
 
80
+ $this->data_api = $this->_api->getProjects(
81
+ false,
82
+ array('where' => $this->_filters_api),
83
+ isset($this->_end) && isset($this->_start) ? array($this->_end, $this->_start) : array(0, 20),
84
+ isset($this->_order) ? array($this->_order, $this->_sens) : array('updated_at','desc')
85
+ );
86
 
87
  if(isset($this->data_api['projects'])){
88
  $this->_totalRecords = $this->data_api['count'];
app/code/community/Textmaster/Textmaster/Model/Project.php CHANGED
@@ -26,20 +26,24 @@
26
  class Textmaster_Textmaster_Model_Project extends Mage_Core_Model_Abstract {
27
 
28
 
29
- const PROJECT_CTYPE_COPYWRITING = "copywriting";
30
- const PROJECT_CTYPE_TRANSLATION = "translation";
31
- const PROJECT_CTYPE_PROOFREADING = "proofreading";
32
-
33
- const PROJECT_LANGUAGE_LEVEL_REGULAR = "regular";
34
- const PROJECT_LANGUAGE_LEVEL_PREMIUM = "premium";
35
-
36
- const PROJECT_STATUS_IN_LAUNCH_PROCESSING = "in_launch_processing";
37
- const PROJECT_STATUS_IN_CREATION = "in_creation";
38
- const PROJECT_STATUS_IN_PROGRESS = "in_progress";
39
- const PROJECT_STATUS_IN_REVIEW = "in_review";
40
- const PROJECT_STATUS_CANCEL = "canceled";
41
- const PROJECT_STATUS_COMPLETED = "completed";
42
- const PROJECT_STATUS_PAUSED = "paused";
 
 
 
 
43
 
44
  private $_store_name_origin = false;
45
  private $_store_name_translation = false;
@@ -112,7 +116,7 @@
112
  return $this->_store_name_translation;*/
113
  }
114
 
115
- public function load($id, $field = null,$api = true) {
116
  $this->_load_api = $api;
117
 
118
  $return = parent::load ( $id, $field = null );
@@ -131,19 +135,18 @@
131
  if($api && $this->getProjectApiid() && !$this->project_loaded) {
132
  $data_api = Mage::helper('textmaster')->getApi()->getProject($this->getProjectApiid());
133
  //Mage::log ( $data_api,null,'textmaster.log' );
134
- if(!isset($data_api['error'])){
135
- $this->project_loaded = true;
136
-
137
- if(isset($data_api['options']['language_level']))
138
- $this->setLanguageLevel($data_api['options']['language_level']);
139
- else
140
- $this->setLanguageLevel('regular');
141
- if(isset($data_api['reference']))
142
- $this->setReference( $data_api['reference'] );
143
-
144
- $this->setCategory($data_api['category']);
145
- $this->setCtype($data_api['ctype']);
146
- $this->setTemplate($data_api['work_template']['name']);
147
  $this->setSameAuthorMustDoEntireProject($data_api['same_author_must_do_entire_project']);
148
  $this->setVocabularyType($data_api['vocabulary_type']);
149
  $this->setGrammaticalPerson($data_api['grammatical_person']);
@@ -181,6 +184,9 @@
181
  else {
182
  $this->setExpertise(0);
183
  }
 
 
 
184
  //TODO
185
  $this->setIsmytextmaster(0);
186
  $this->setTextmasters($data_api['textmasters']);
@@ -191,39 +197,43 @@
191
  }
192
  return $return;
193
  }
194
-
195
- protected function _beforeSave(){
196
- if(!$this->_before_save_api){
197
- return parent::_beforeSave();
198
- }
199
- if (! $this->_api_loaded) {
200
- $this->_api = Mage::helper('textmaster')->getApi();
201
- }
202
- $data = $this->getData();
203
- /*if(isset($data['textmasters']) && isset($data['textmasters'][0]) && !strpos($data['textmasters'][0],',')!==false){
204
- $data['textmasters'] = explode(',',$data['textmasters'][0]);
205
-
206
- }*/
207
- if(isset($data['textmasters']) && is_array($data['textmasters']))
208
- $this->setTextmasters(serialize($data['textmasters']));
209
-
210
- //Creation
211
- if(!$this->getId()){
212
-
213
- //unset($params['_documents']);
214
- foreach($data as $k=>$v){
215
- if(gettype($v)!='object')
216
- $params[$k]=$v;
217
- }
218
- $this->setTextmasterUser(Mage::getStoreConfig('textmaster/textmaster/api_key'));
219
- // $params['language_from'] = substr(Mage::getStoreConfig('general/locale/code',$params['store_id_origin']),0,2);
220
- $params['language_from'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_origin']);
221
-
222
- if($params['ctype']!='translation')
223
- $params['store_id_translation'] = $params['store_id_origin'];
224
- // $params['language_to'] = substr(Mage::getStoreConfig('general/locale/code',$params['store_id_translation']),0,2);
225
- $params['language_to'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_translation']);
226
-
 
 
 
 
227
  /*if(!is_array($params['textmasters']) && !empty($params['textmasters']))
228
  $params['textmasters'] = explode(',',$params['textmasters']);*/
229
  $result = $this->_api->addProject($params);
@@ -236,7 +246,7 @@
236
 
237
 
238
  } else {
239
- if($this->getStatus()==self::PROJECT_STATUS_IN_CREATION){
240
  //$data = $this->getData();
241
 
242
  //unset($params['_documents']);
@@ -246,6 +256,10 @@
246
  }
247
  $params['language_from'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_origin']);
248
  $params['language_to'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_translation']);
 
 
 
 
249
 
250
  $result = $this->_api->updateProject($this->getProjectApiid(),$params);
251
  if(!isset($result['error'])){
@@ -258,6 +272,33 @@
258
 
259
  return parent::_beforeSave();
260
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
 
262
  public function getStatusTexte(){
263
  //Mage::
@@ -294,7 +335,7 @@
294
 
295
  public function getPrice(){
296
  $currency = Mage::getModel('directory/currency')->load($this->getCurrency());
297
- return $currency->format($this->getData('price'),array(),false);
298
  }
299
 
300
  public function getVocabularyTypeTexte(){
26
  class Textmaster_Textmaster_Model_Project extends Mage_Core_Model_Abstract {
27
 
28
 
29
+ const PROJECT_CTYPE_COPYWRITING = "copywriting";
30
+ const PROJECT_CTYPE_TRANSLATION = "translation";
31
+ const PROJECT_CTYPE_PROOFREADING = "proofreading";
32
+
33
+ const PROJECT_LANGUAGE_LEVEL_REGULAR = "regular";
34
+ const PROJECT_LANGUAGE_LEVEL_PREMIUM = "premium";
35
+ const PROJECT_LANGUAGE_LEVEL_ENTERPRISE = "enterprise";
36
+
37
+ const PROJECT_STATUS_IN_LAUNCH_PROCESSING = "in_launch_processing";
38
+ const PROJECT_STATUS_IN_CREATION = "in_creation";
39
+ const PROJECT_STATUS_IN_PROGRESS = "in_progress";
40
+ const PROJECT_STATUS_IN_REVIEW = "in_review";
41
+ const PROJECT_STATUS_CANCEL = "canceled";
42
+ const PROJECT_STATUS_COMPLETED = "completed";
43
+ const PROJECT_STATUS_PAUSED = "paused";
44
+
45
+ const PROJECT_TM_STATUS_IN_PROGRESS = "in_progress";
46
+ const PROJECT_TM_STATUS_COMPLETED = "completed";
47
 
48
  private $_store_name_origin = false;
49
  private $_store_name_translation = false;
116
  return $this->_store_name_translation;*/
117
  }
118
 
119
+ public function load($id, $field = null, $api = true) {
120
  $this->_load_api = $api;
121
 
122
  $return = parent::load ( $id, $field = null );
135
  if($api && $this->getProjectApiid() && !$this->project_loaded) {
136
  $data_api = Mage::helper('textmaster')->getApi()->getProject($this->getProjectApiid());
137
  //Mage::log ( $data_api,null,'textmaster.log' );
138
+ if(!isset($data_api['error'])){
139
+ $this->project_loaded = true;
140
+ if(isset($data_api['options']['language_level']))
141
+ $this->setLanguageLevel($data_api['options']['language_level']);
142
+ else
143
+ $this->setLanguageLevel('regular');
144
+ if(isset($data_api['reference']))
145
+ $this->setReference( $data_api['reference'] );
146
+
147
+ $this->setCategory($data_api['category']);
148
+ $this->setCtype($data_api['ctype']);
149
+ $this->setTemplate($data_api['work_template']['name']);
 
150
  $this->setSameAuthorMustDoEntireProject($data_api['same_author_must_do_entire_project']);
151
  $this->setVocabularyType($data_api['vocabulary_type']);
152
  $this->setGrammaticalPerson($data_api['grammatical_person']);
184
  else {
185
  $this->setExpertise(0);
186
  }
187
+ if(isset($data_api['options']['translation_memory']))
188
+ $this->setTranslationMemory($data_api['options']['translation_memory']);
189
+
190
  //TODO
191
  $this->setIsmytextmaster(0);
192
  $this->setTextmasters($data_api['textmasters']);
197
  }
198
  return $return;
199
  }
200
+
201
+ protected function _beforeSave(){
202
+ if(!$this->_before_save_api){
203
+ return parent::_beforeSave();
204
+ }
205
+ if (! $this->_api_loaded) {
206
+ $this->_api = Mage::helper('textmaster')->getApi();
207
+ }
208
+ $data = $this->getData();
209
+ /*if(isset($data['textmasters']) && isset($data['textmasters'][0]) && !strpos($data['textmasters'][0],',')!==false){
210
+ $data['textmasters'] = explode(',',$data['textmasters'][0]);
211
+
212
+ }*/
213
+ if(isset($data['textmasters']) && is_array($data['textmasters']))
214
+ $this->setTextmasters(serialize($data['textmasters']));
215
+
216
+ //Create
217
+ if(!$this->getId()){
218
+
219
+ //unset($params['_documents']);
220
+ foreach($data as $k=>$v){
221
+ if(gettype($v)!='object')
222
+ $params[$k]=$v;
223
+ }
224
+ $this->setTextmasterUser(Mage::getStoreConfig('textmaster/textmaster/api_key'));
225
+ // $params['language_from'] = substr(Mage::getStoreConfig('general/locale/code',$params['store_id_origin']),0,2);
226
+ $params['language_from'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_origin']);
227
+
228
+ if($params['ctype']!='translation')
229
+ $params['store_id_translation'] = $params['store_id_origin'];
230
+ // $params['language_to'] = substr(Mage::getStoreConfig('general/locale/code',$params['store_id_translation']),0,2);
231
+ $params['language_to'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_translation']);
232
+
233
+ //Unset translation_memory from params data when create project
234
+ if(isset($params['translation_memory']))
235
+ unset($params['translation_memory']);
236
+
237
  /*if(!is_array($params['textmasters']) && !empty($params['textmasters']))
238
  $params['textmasters'] = explode(',',$params['textmasters']);*/
239
  $result = $this->_api->addProject($params);
246
 
247
 
248
  } else {
249
+ if($this->getStatus()==self::PROJECT_STATUS_IN_CREATION && !$this->getHasChangeMemoryStatus()){
250
  //$data = $this->getData();
251
 
252
  //unset($params['_documents']);
256
  }
257
  $params['language_from'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_origin']);
258
  $params['language_to'] = Mage::helper('textmaster')->getFormatedLangCode($params['store_id_translation']);
259
+
260
+ //Unset translation_memory from params data when create project
261
+ if(isset($params['translation_memory']))
262
+ unset($params['translation_memory']);
263
 
264
  $result = $this->_api->updateProject($this->getProjectApiid(),$params);
265
  if(!isset($result['error'])){
272
 
273
  return parent::_beforeSave();
274
  }
275
+
276
+ public function startTranslationMemory(){
277
+ if(
278
+ $this->getStatus() == self::PROJECT_STATUS_IN_CREATION
279
+ && $this->getTranslationMemory()
280
+ && $this->getTranslationMemoryStatus() == ''
281
+ ){
282
+ if(!$this->_api_loaded) {
283
+ $this->_api = Mage::helper('textmaster')->getApi();
284
+ }
285
+ $this->setTranslationMemoryStatus(self::PROJECT_TM_STATUS_IN_PROGRESS);
286
+ $this->setHasChangeMemoryStatus(true);
287
+ $params['translation_memory'] = $this->getTranslationMemory();
288
+ $params['language_level'] = $this->getLanguageLevel();
289
+ $params['quality'] = $this->getQuantity();
290
+ $params['specific_attachment'] = $this->getSpecificAttachment();
291
+ $params['priority'] = $this->getPriority();
292
+ $params['same_author_must_do_entire_project'] = $this->getSameAuthorMustDoEntireProject();
293
+ $result = $this->_api->updateProject($this->getProjectApiid(), $params);
294
+ if(!isset($result['error'])){
295
+ $this->setStatus($result['status']);
296
+ $this->save();
297
+ } else {
298
+ throw new Exception($result['error']);
299
+ }
300
+ }
301
+ }
302
 
303
  public function getStatusTexte(){
304
  //Mage::
335
 
336
  public function getPrice(){
337
  $currency = Mage::getModel('directory/currency')->load($this->getCurrency());
338
+ return $currency->format($this->getData('price')/1000,array(),false);
339
  }
340
 
341
  public function getVocabularyTypeTexte(){
app/code/community/Textmaster/Textmaster/controllers/Adminhtml/AjaxController.php CHANGED
@@ -25,6 +25,11 @@
25
  */
26
  class Textmaster_Textmaster_Adminhtml_AjaxController extends Mage_Adminhtml_Controller_action
27
  {
 
 
 
 
 
28
  public function loginAction(){
29
 
30
  $_api = Mage::helper('textmaster')->getApi();
@@ -136,4 +141,4 @@ class Textmaster_Textmaster_Adminhtml_AjaxController extends Mage_Adminhtml_Cont
136
  $this->loadLayout();
137
  $this->renderLayout();
138
  }
139
- }
25
  */
26
  class Textmaster_Textmaster_Adminhtml_AjaxController extends Mage_Adminhtml_Controller_action
27
  {
28
+ protected function _isAllowed()
29
+ {
30
+ return true;
31
+ }
32
+
33
  public function loginAction(){
34
 
35
  $_api = Mage::helper('textmaster')->getApi();
141
  $this->loadLayout();
142
  $this->renderLayout();
143
  }
144
+ }
app/code/community/Textmaster/Textmaster/controllers/Adminhtml/ApiController.php CHANGED
@@ -25,9 +25,14 @@
25
  */
26
  class Textmaster_Textmaster_Adminhtml_ApiController extends Mage_Core_Controller_Front_Action
27
  {
28
- public function documentaddAction(){
 
 
 
 
 
29
  $projectId = $this->getRequest()->getParam('id');
30
  $project = Mage::getModel('textmaster/project')->load($projectId);
31
  $project->sendDocument();
32
  }
33
- }
25
  */
26
  class Textmaster_Textmaster_Adminhtml_ApiController extends Mage_Core_Controller_Front_Action
27
  {
28
+ protected function _isAllowed()
29
+ {
30
+ return true;
31
+ }
32
+
33
+ public function documentaddAction(){
34
  $projectId = $this->getRequest()->getParam('id');
35
  $project = Mage::getModel('textmaster/project')->load($projectId);
36
  $project->sendDocument();
37
  }
38
+ }
app/code/community/Textmaster/Textmaster/controllers/Adminhtml/ProjectController.php CHANGED
@@ -25,12 +25,17 @@
25
  */
26
  class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_Controller_Action
27
  {
 
 
 
 
 
28
  protected function _initAction() {
29
  $this->loadLayout()
30
  ->_setActiveMenu('textmaster/project');
31
  return $this;
32
  }
33
-
34
  public function indexAction()
35
  {
36
  $api_key = Mage::getStoreConfig('textmaster/textmaster/api_key');;
@@ -112,7 +117,7 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
112
  $project_id = Mage::getSingleton('core/session')->getProjectId();
113
  $post = Mage::app()->getRequest()->getPost();
114
  if($post && count($post)){
115
- $project = Mage::getModel('textmaster/project')->load($project_id,null,false);
116
  $r = $project->launch();
117
  if(!isset($r['error'])) {
118
  $this->_redirect('*/*/');
@@ -125,8 +130,8 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
125
  Mage::getSingleton('adminhtml/session')->unsTextmasterUserInfos();
126
 
127
 
128
- $project = Mage::getModel('textmaster/project')->load($project_id);
129
- if($project->hasDocumentsNotCount()){
130
  $this->_redirect('*/*/edit', array("step" => 2));
131
  }
132
  $ongletBlock->setIntroHtml(Mage::helper('textmaster')->__('Verify your project setting before placing your order. If you do not have enough credits on TextMaster, click on the link below to add credits to your account on TextMaster.com'));
@@ -397,11 +402,9 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
397
 
398
  $projectId = $this->getRequest()->getParam('id');
399
  $project = Mage::getModel('textmaster/project');
400
- $project->load($projectId,null,false);
401
  $docs_all = $project->getDocuments();
402
  $docs_notcount = $project->getDocumentsNotCount();
403
-
404
-
405
 
406
  if($project->hasDocumentsNotCount()) {
407
  $ndoc = count($docs_all);
@@ -423,6 +426,13 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
423
  echo $r;
424
  exit;
425
  }
 
 
 
 
 
 
 
426
  //echo '100';
427
  echo $this->getUrl('*/*/edit',array('step'=>3));
428
  exit;
@@ -454,7 +464,7 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
454
  $word_count = Mage::helper('textmaster')->countWord($text);
455
  //$pricing = Mage::helper('textmaster')->getApi()->getPricings($word_count);
456
  //$project_id = Mage::getSingleton('core/session')->getProjectId();
457
-
458
  $update = false;
459
  if($project_id && is_numeric($project_id)){
460
  $project->load($project_id);
@@ -468,7 +478,7 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
468
  $project->setStoreIdTranslation($post['store_id_translation']);
469
  else
470
  $project->setStoreIdTranslation($post['store_id_origin']);
471
-
472
  $project->setLanguageLevel($post['language_level']);
473
  if(isset($post['specific_attachment']))
474
  $project->setSpecificAttachment($post['specific_attachment']);
@@ -482,6 +492,7 @@ class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_C
482
  if(isset($post['mytextmaster'])) {
483
  $project->setTextmasters($post['mytextmaster']);
484
  }
 
485
 
486
  $update = true;
487
 
25
  */
26
  class Textmaster_Textmaster_Adminhtml_ProjectController extends Mage_Adminhtml_Controller_Action
27
  {
28
+ protected function _isAllowed()
29
+ {
30
+ return Mage::getSingleton('admin/session')->isAllowed('textmaster/projet');
31
+ }
32
+
33
  protected function _initAction() {
34
  $this->loadLayout()
35
  ->_setActiveMenu('textmaster/project');
36
  return $this;
37
  }
38
+
39
  public function indexAction()
40
  {
41
  $api_key = Mage::getStoreConfig('textmaster/textmaster/api_key');;
117
  $project_id = Mage::getSingleton('core/session')->getProjectId();
118
  $post = Mage::app()->getRequest()->getPost();
119
  if($post && count($post)){
120
+ $project = Mage::getModel('textmaster/project')->load($project_id, null, false);
121
  $r = $project->launch();
122
  if(!isset($r['error'])) {
123
  $this->_redirect('*/*/');
130
  Mage::getSingleton('adminhtml/session')->unsTextmasterUserInfos();
131
 
132
 
133
+ $project = Mage::getModel('textmaster/project')->load($project_id, null, true);
134
+ if($project->hasDocumentsNotCount() || ($project->getTranslationMemory() && $project->getTranslationMemoryStatus() == Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_IN_PROGRESS)){
135
  $this->_redirect('*/*/edit', array("step" => 2));
136
  }
137
  $ongletBlock->setIntroHtml(Mage::helper('textmaster')->__('Verify your project setting before placing your order. If you do not have enough credits on TextMaster, click on the link below to add credits to your account on TextMaster.com'));
402
 
403
  $projectId = $this->getRequest()->getParam('id');
404
  $project = Mage::getModel('textmaster/project');
405
+ $project->load($projectId, null, true);
406
  $docs_all = $project->getDocuments();
407
  $docs_notcount = $project->getDocumentsNotCount();
 
 
408
 
409
  if($project->hasDocumentsNotCount()) {
410
  $ndoc = count($docs_all);
426
  echo $r;
427
  exit;
428
  }
429
+
430
+ $project->startTranslationMemory(); // start TM if needed
431
+ if($project->getTranslationMemoryStatus() == Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_IN_PROGRESS){
432
+ echo Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_IN_PROGRESS;
433
+ exit;
434
+ }
435
+
436
  //echo '100';
437
  echo $this->getUrl('*/*/edit',array('step'=>3));
438
  exit;
464
  $word_count = Mage::helper('textmaster')->countWord($text);
465
  //$pricing = Mage::helper('textmaster')->getApi()->getPricings($word_count);
466
  //$project_id = Mage::getSingleton('core/session')->getProjectId();
467
+
468
  $update = false;
469
  if($project_id && is_numeric($project_id)){
470
  $project->load($project_id);
478
  $project->setStoreIdTranslation($post['store_id_translation']);
479
  else
480
  $project->setStoreIdTranslation($post['store_id_origin']);
481
+
482
  $project->setLanguageLevel($post['language_level']);
483
  if(isset($post['specific_attachment']))
484
  $project->setSpecificAttachment($post['specific_attachment']);
492
  if(isset($post['mytextmaster'])) {
493
  $project->setTextmasters($post['mytextmaster']);
494
  }
495
+ $project->setTranslationMemory($post['translation_memory']);
496
 
497
  $update = true;
498
 
app/code/community/Textmaster/Textmaster/controllers/CallbackController.php CHANGED
@@ -30,6 +30,7 @@
30
  $this->loadLayout();
31
  $this->renderLayout();
32
  }
 
33
  public function documentcountAction()
34
  {
35
  $params = $this->getRequest()->getParams();
@@ -64,6 +65,7 @@
64
  $this->loadLayout();
65
  $this->renderLayout();
66
  }
 
67
  public function documentcompleteAction()
68
  {
69
  $params = $this->getRequest()->getParams();
@@ -85,6 +87,28 @@
85
  $this->loadLayout();
86
  $this->renderLayout();
87
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  public function inprogressAction(){
89
  $postData = json_decode(file_get_contents('php://input'));
90
  Mage::log('CALLBACK IN PROGRESS',null,'textmaster.log');
30
  $this->loadLayout();
31
  $this->renderLayout();
32
  }
33
+
34
  public function documentcountAction()
35
  {
36
  $params = $this->getRequest()->getParams();
65
  $this->loadLayout();
66
  $this->renderLayout();
67
  }
68
+
69
  public function documentcompleteAction()
70
  {
71
  $params = $this->getRequest()->getParams();
87
  $this->loadLayout();
88
  $this->renderLayout();
89
  }
90
+
91
+ public function projecttmcompleteAction()
92
+ {
93
+ $params = $this->getRequest()->getParams();
94
+ $postData = $this->getRequest()->getPost();
95
+
96
+ $postData = json_decode(file_get_contents('php://input'));
97
+ // recupere les données poster en JSON
98
+ Mage::log('Callback projecttmcompleted '.(isset($postData->id) ? $postData->id : 'id inconnu'), null, 'textmaster.log');
99
+
100
+ if(is_object($postData) && isset($postData->id)) {
101
+ $project = Mage::getModel('textmaster/project')->getCollection()->addFieldToFilter('project_apiid', $postData->id)->getFirstItem();
102
+ if($project->getId()) {
103
+ $project->setTranslationMemoryStatus(Textmaster_Textmaster_Model_Project::PROJECT_TM_STATUS_COMPLETED);
104
+ $project->setHasChangeMemoryStatus(true);
105
+ $project->save();
106
+ }
107
+ }
108
+ $this->loadLayout();
109
+ $this->renderLayout();
110
+ }
111
+
112
  public function inprogressAction(){
113
  $postData = json_decode(file_get_contents('php://input'));
114
  Mage::log('CALLBACK IN PROGRESS',null,'textmaster.log');
app/code/community/Textmaster/Textmaster/etc/config.xml CHANGED
@@ -29,7 +29,7 @@
29
 
30
  <modules>
31
  <Textmaster_Textmaster>
32
- <version>1.0.2</version>
33
  </Textmaster_Textmaster>
34
  </modules>
35
  <global>
@@ -143,7 +143,7 @@
143
  <config>
144
  <children>
145
  <textmaster translate="title">
146
- <title>textmaster section</title>
147
  <sort_order>100</sort_order>
148
  </textmaster>
149
  </children>
29
 
30
  <modules>
31
  <Textmaster_Textmaster>
32
+ <version>1.0.3</version>
33
  </Textmaster_Textmaster>
34
  </modules>
35
  <global>
143
  <config>
144
  <children>
145
  <textmaster translate="title">
146
+ <title>Textmaster section</title>
147
  <sort_order>100</sort_order>
148
  </textmaster>
149
  </children>
app/code/community/Textmaster/Textmaster/etc/jstranslator.xml CHANGED
@@ -38,8 +38,7 @@
38
  <textmaster_word translate="message" module="textmaster">
39
  <message>word</message>
40
  </textmaster_word>
41
- <textmaster_word translate="message" module="textmaster">
42
- <message>word</message>
43
- </textmaster_word>
44
-
45
  </jstranslator>
38
  <textmaster_word translate="message" module="textmaster">
39
  <message>word</message>
40
  </textmaster_word>
41
+ <textmaster_translation_memory translate="message" module="textmaster">
42
+ <message>Translation memory</message>
43
+ </textmaster_translation_memory>
 
44
  </jstranslator>
app/code/community/Textmaster/Textmaster/sql/textmaster_setup/mysql4-upgrade-1.0.2-1.0.3.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @var $installer Mage_Core_Model_Resource_Setup
4
+ */
5
+
6
+ $installer = $this;
7
+ $installer->startSetup();
8
+
9
+ $installer->getConnection()
10
+ ->addColumn($installer->getTable('textmaster/project'), 'translation_memory', array(
11
+ 'type' => Varien_Db_Ddl_Table::TYPE_BOOLEAN,
12
+ 'nullable' => false,
13
+ 'default' => false,
14
+ 'comment' => 'Translation memory'
15
+ ));
16
+
17
+ $installer->getConnection()
18
+ ->addColumn($installer->getTable('textmaster/project'), 'translation_memory_status', array(
19
+ 'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
20
+ 'nullable' => true,
21
+ 'default' => null,
22
+ 'comment' => 'Translation memory status'
23
+ ));
24
+
25
+ $installer->endSetup();
app/locale/en_US/Textmaster_Textmaster.csv CHANGED
@@ -193,3 +193,4 @@ Connexion,Log in
193
  Login,Login
194
  Searching...,Searching...
195
  Logout,Logout
 
193
  Login,Login
194
  Searching...,Searching...
195
  Logout,Logout
196
+ "message_loader_tm","The translation memory is in progress. This will take a few minutes if you have many product descriptions. You can use Magento in the meantime and then come back to your project to finish it."
app/locale/fr_FR/Textmaster_Textmaster.csv CHANGED
@@ -38,13 +38,13 @@ Service level,Niveau de qualité
38
  Regular (%s/word): native-speaking translator for word-for-word translations of short texts.,"Regular (0.04 € / mot) : traducteur natif, traduction litérale adaptée pour des textes très courts."
39
  Premium (%s/word): experienced translator; suitable for business use.,"Premium (0.07 € / mot) : traducteur expérimenté, adapté pour un usage professionnel."
40
  Enterprise (%s/word): professional translator specialized in a specific field; suitable for technical or complex content.,"Enterprise (0.13 € / mot) : traducteur professionnel spécialisé, adapté pour des contenus techniques et complexes."
41
- Quality Control (+%s/word),Contrôle qualité (+0.04 / mot)
42
  No,Non
43
  Yes,Oui
44
  The translator's work will be proofread and corrected by TextMaster,Le travail de l'auteur sera relu et corrigé par TextMaster.
45
- Priority Order (+%s/word),Commande prioritaire (+ 0.04 € / mot)
46
  Your project will be assigned a higher priority status.,Votre projet sera mis en avant et placé en haut de liste.
47
- Expertise (+%s/word),Expertise (+0.05 / mot)
48
  We provide you with an expert in the selected category.,Nous vous trouvons un expert dans le domaine de votre choix.
49
  Instructions du projet,Instructions du projet
50
  Briefing,Briefing
@@ -198,4 +198,6 @@ Connexion,Connexion
198
  Login,Identifiant
199
  Searching...,Searching...
200
  Logout,Déconnexion
201
-
 
 
38
  Regular (%s/word): native-speaking translator for word-for-word translations of short texts.,"Regular (0.04 € / mot) : traducteur natif, traduction litérale adaptée pour des textes très courts."
39
  Premium (%s/word): experienced translator; suitable for business use.,"Premium (0.07 € / mot) : traducteur expérimenté, adapté pour un usage professionnel."
40
  Enterprise (%s/word): professional translator specialized in a specific field; suitable for technical or complex content.,"Enterprise (0.13 € / mot) : traducteur professionnel spécialisé, adapté pour des contenus techniques et complexes."
41
+ Quality Control (+%s/word),Contrôle qualité (+%s / mot)
42
  No,Non
43
  Yes,Oui
44
  The translator's work will be proofread and corrected by TextMaster,Le travail de l'auteur sera relu et corrigé par TextMaster.
45
+ Priority Order (+%s/word),Commande prioritaire (+%s / mot)
46
  Your project will be assigned a higher priority status.,Votre projet sera mis en avant et placé en haut de liste.
47
+ Expertise (+%s/word),Expertise (+%s / mot)
48
  We provide you with an expert in the selected category.,Nous vous trouvons un expert dans le domaine de votre choix.
49
  Instructions du projet,Instructions du projet
50
  Briefing,Briefing
198
  Login,Identifiant
199
  Searching...,Searching...
200
  Logout,Déconnexion
201
+ "message_loader_tm","La mémoire de traduction est en cours, cela prendre quelques minutes s'il contient beaucoup de fiches produits. Vous pouvez continuer votre navigation dans Magento et revenir ensuite finaliser votre projet."
202
+ "Translation memory (+%s/word)","Mémoire de traduction (+%s / mot)"
203
+ "Translation memory","Mémoire de traduction"
package.xml CHANGED
@@ -1,18 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Textmaster_Textmaster</name>
4
- <version>1.0.5</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Get your product descriptions translated or corrected by professionals directly through Magento.</summary>
10
  <description>TextMaster makes it easy to translate (or proofread) your entire product catalog by professionals in over 15 languages. Open your doors to new markets in just a few clicks by using our intuitive extension to make your store multilingual.</description>
11
- <notes>Update login action</notes>
 
 
 
 
 
12
  <authors><author><name>Textmaster</name><user>Textmaster</user><email>elizaveta@textmaster.com</email></author></authors>
13
- <date>2015-10-24</date>
14
- <time>12:15:55</time>
15
- <contents><target name="magecommunity"><dir name="Textmaster"><dir name="Textmaster"><dir name="Block"><dir name="Adminhtml"><file name="Credit.php" hash="d6a923cfaf5279e4adf27986c87362b0"/><dir name="Document"><dir name="Renderer"><file name="Status.php" hash="f42270298a953c47ed05008dc17ffbe3"/></dir><file name="Supportmessage.php" hash="3de2c98e34072d8036fbb3baf51fc680"/><file name="View.php" hash="431c6abb59610f98030067f2c331619d"/></dir><dir name="Project"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Checkbox.php" hash="8f57ab35ad7704ef05012d219ca0323d"/><file name="Massaction.php" hash="62dadad96a7548df68e3f3c627e94589"/></dir></dir></dir><file name="Grid.php" hash="3a8293430513271d1ee3f44b0c3120f8"/><dir name="Onglets"><file name="Form.php" hash="e686e8cfdac33fa21c86e26fe93a6a07"/><file name="Step1.php" hash="348a7a7bc9004758a517f0939d4ce3bf"/><file name="Step2.php" hash="862d4a6587edf940f8f1ee59603bf5e1"/><dir name="Step3"><file name="Author.php" hash="7ec92925a374885bfff851d8abf24787"/><dir name="Form"><file name="Author.php" hash="b965e02d28139d9c7f6e58fbb15e8e1b"/></dir></dir><file name="Step3.php" hash="29d7141fdc9af7c7590474581fb65d43"/><file name="Summary.php" hash="ed4dd8dcb8f1acdcc366b405f840570c"/></dir><file name="Onglets.php" hash="309dd49d8d65bf1c71247ce0647ffe20"/><dir name="Renderer"><file name="Nbdocument.php" hash="244d668e3f8a01c21208fdd2a71d0080"/><file name="Price.php" hash="a21b198258a81bb9b411f638e6b5f5e7"/><file name="Progression.php" hash="2e7c43d38b5640b463963a30239225c9"/><file name="Status.php" hash="782007cbd27b4ccc4200e87e34789ee2"/><file name="Store.php" hash="d92ccafcec2ad102b85bcb6bd3131779"/><file name="Wordcount.php" hash="d4714582d744a718e20d5c1444393c8a"/></dir><dir name="View"><file name="Documents.php" hash="48ab17be73308883855cf5ec0d51ce2b"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Checkbox.php" hash="89c7d2afed7e6b031237b8d57194aae8"/><file name="Massaction.php" hash="e39a40293de5764fc41c49fa54964026"/></dir></dir></dir></dir><file name="View.php" hash="5843127fdc9d5277e3c35105724ff788"/></dir><file name="Project.php" hash="1919358b2d024822775ec1dbc9f92d2b"/><dir name="Renderer"><file name="Sourcelanguage.php" hash="61ade1d391fc882d3483b68612f1b784"/><file name="Targetlanguage.php" hash="2defedb3f9b57a2c34e05a30533074e1"/><file name="UpdatedAt.php" hash="2543e1ecaf1431966321031d09147c11"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Briefing.php" hash="f1ae93b9d2c02ca12aa93694e070232e"/><file name="Creation.php" hash="fad41de891ad9edadc2a6ffde2fcbd64"/><file name="Islog.php" hash="9b9527584ab9a2255b293680c7084bb3"/><file name="Login.php" hash="a96e12a94a720081903bddcec52716c1"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="154967a256490b96786c01fac89a89f5"/></dir><dir name="Model"><file name="Api.php" hash="5c9e4e30872c964b5aa4f081f1b7be9a"/><file name="Document.php" hash="ba6204c001d2d8c13d6040c9dde893c6"/><dir name="Mysql4"><dir name="Document"><file name="Collection.php" hash="6253cce06c8b2d65305770e4cc0faf34"/></dir><file name="Document.php" hash="b7c143dec4b9c9d131a25fe85e76c686"/><dir name="Project"><dir name="Attribute"><file name="Collection.php" hash="2873221c4cceef621c2920696ca9f937"/></dir><file name="Attribute.php" hash="f997d919bbc5bd47ad840d522ce1de15"/><file name="Collection.php" hash="44c097d5d7edf4509a373b1abedd6245"/></dir><file name="Project.php" hash="c78db4c76e2ce2f6ebf1cf8a48c723ef"/></dir><file name="Observer.php" hash="2f5778ed0c4fb579ccfd1e3f5c5bcff0"/><dir name="Project"><file name="Attribute.php" hash="e824699895626069cae908b5a7894c4d"/></dir><file name="Project.php" hash="bd34988e7e880d9766771f695aa71353"/><dir name="Source"><dir name="Api"><file name="Audience.php" hash="d9bcdf66964436b1efbc96af0a2e2e40"/><file name="Author.php" hash="758fd2e35aa096eacd2995088da64267"/><file name="Category.php" hash="358defa5cf859af62c68f675809b47eb"/><file name="Grammatical.php" hash="dcb73d6ac8cd93f73b6af08ec3ffb057"/><file name="Lang.php" hash="2f7c65d8c9d2247364bab2b3a26cd638"/><file name="Type.php" hash="9cff2f1385ac6e5bafb8c986152c4c08"/><file name="Vocabulary.php" hash="494ed3154a1c8dbe492da5a32f2dbad7"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AjaxController.php" hash="04dc105d3f7914eb9862ce888d9f4d4f"/><file name="ApiController.php" hash="1231743abbc6d20f56a909ed73753e7e"/><file name="ProjectController.php" hash="e19d8eba952ef869df8bfc34668be923"/></dir><file name="CallbackController.php" hash="a4013078eb1e813bef1c426b8d373411"/><file name="IndexController.php" hash="7588d1f1a9918834837e0215569ab560"/></dir><dir name="etc"><file name="config.xml" hash="cd39ee2192a214c27cbe51f6f795f20b"/><file name="jstranslator.xml" hash="46ddfe751dc4e1f34bc95dbc09263eee"/><file name="system.xml" hash="981d732eac4d47ed82e12795fea71d16"/></dir><dir name="sql"><dir name="textmaster_setup"><file name="mysql4-install-0.0.1.php" hash="162032e7872f14cc0049c73b79fdb7e7"/><file name="mysql4-upgrade-0.0.1-0.0.2.php" hash="d0e9ddeb6f62e36747e1f7df4fe99db1"/><file name="mysql4-upgrade-0.0.2-0.0.3.php" hash="8e3cad04b99df0c2a1e3369bd7c432ee"/><file name="mysql4-upgrade-0.0.3-0.0.4.php" hash="1d5f415b61fd5ef6b4c352cd9f2ba75e"/><file name="mysql4-upgrade-0.0.4-0.0.5.php" hash="791ca3e154ba7249478339b98c40eb94"/><file name="mysql4-upgrade-0.0.5-0.0.6.php" hash="865aac8301b8afe668590ec81b08877e"/><file name="mysql4-upgrade-0.0.6-0.0.7.php" hash="22238b586ef7acbfc8e72b60ad19eff2"/><file name="mysql4-upgrade-0.0.7-0.0.8.php" hash="57c692e4a1357794af92e884b7316047"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="textmaster"><file name="credit.phtml" hash="c89b6836429a831be59d7718c1b6600f"/><dir name="document"><file name="support_messages.phtml" hash="718d4b88147a88dd3a4a79ee937cfb0b"/><file name="view.phtml" hash="3c4164c1c0a8b651f8b799fafd869a00"/></dir><dir name="form"><file name="container.phtml" hash="a178289bb54908698de0423a04f925f3"/></dir><dir name="grid"><file name="container.phtml" hash="3a46640e22f5458ba1bb43abcd50fb31"/></dir><file name="login.phtml" hash="6d32209da30745ee73f9d89e18662792"/><dir name="onglet"><file name="popinauthors.phtml" hash="88755e5187349b78cace1b922a00d310"/></dir><file name="onglet.phtml" hash="f19b8e5eb8e0f67fee9eb451db6597d0"/><file name="page.phtml" hash="5dfa6347708268bf5108186a1145e530"/><dir name="product"><file name="edit.phtml" hash="df650e19786fc14bf570c10eeaad2762"/></dir><file name="view.phtml" hash="422ad35864499f679027e3dbfdee6bde"/></dir></dir><dir name="layout"><file name="textmaster.xml" hash="b5464624e62899af321bc13c2720631b"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="textmaster"><file name="popin.css" hash="b9624ff6924adf24302b2a9ce73704fb"/><file name="styles.css" hash="61e33a529634ed22fd2e0f56d3647caf"/></dir></dir><dir name="images"><dir name="textmaster"><file name="ad.png" hash="4d3bfa60fb52ee8f9ce3c0f3934a0e08"/><file name="ae.png" hash="f3838d0ca01d7a76de74249ff2b514c7"/><file name="af.png" hash="a44bb210f25bafca92627b1187b0996d"/><file name="ag.png" hash="7b00bd7c2754618d57b78c407d6b542a"/><file name="al.png" hash="3f8b9ccd82877835192c5235e84ea543"/><file name="am.png" hash="f1f48cdf20af82bd4e708f40a844c08e"/><file name="ao.png" hash="13dd9ec64e95578da89ac092ea6bc49d"/><file name="ar.png" hash="e2a2372c9190c58e450d563c857cf932"/><file name="at.png" hash="0ed42d4df345bbe1a9eacc40a1ba9891"/><file name="au.png" hash="95609fc7efb05fab769b08c567dcafe3"/><file name="az.png" hash="82ee424e37625aa0bc6f0f2e2798ff33"/><file name="ba.png" hash="098a79c08cd07a7940affe818d8108d2"/><file name="bb.png" hash="237f1706a74e31a1f0f40080285af716"/><file name="bd.png" hash="5dd17c6db835d0e611b582a9aab36a69"/><file name="be.png" hash="140b16e73953d41b172e5a13106d96d7"/><file name="bf.png" hash="8bf9167bd4d4c8ab177590a03f18cb3a"/><file name="bg.png" hash="5f21946772326567c3bc2eb62693862d"/><file name="bh.png" hash="40acbad63f1ebb842cac8225198caa80"/><file name="bi.png" hash="ef7a1794da922df0876811e673795b40"/><file name="bj.png" hash="e776d8d30d79c46196bf63cf3698a005"/><file name="bn.png" hash="6f8378e8492e6d65297a878000d86cdd"/><file name="bo.png" hash="42addc49c770236532fb3425c39e855e"/><file name="br.png" hash="5820e89cdd217f41a8160611c2772450"/><file name="bs.png" hash="f10c1553ab9d8d3f50fa50789a0ec14d"/><file name="bt.png" hash="edced8a66c05b17cb3a66f4edab81537"/><file name="bw.png" hash="87ad8d31999e9f3dcf4af9b4002bd198"/><file name="by.png" hash="74271a2d533cf0f010f684527506a1b7"/><file name="bz.png" hash="3e6e3a59ea76dd361dd44c59e878cce1"/><file name="ca.png" hash="bde2e7c28a15fef7c21023d0d42e0af6"/><file name="cd.png" hash="43c7041408a403b5a5bff6ee5c486dcb"/><file name="cf.png" hash="8b0f9b4821681f89adc2a05cc9cb93f8"/><file name="cg.png" hash="69fc1655e73b91d5de5e526eb77a25dd"/><file name="ch.png" hash="4bd0882fe41076facbed622f45f5fe12"/><file name="ci.png" hash="33d6b8f53b17b291c82ba89268cc33c3"/><file name="cl.png" hash="97ac63f223ad9b8c9c89ede5a463fe16"/><file name="cm.png" hash="3a02cc8fd12eb3d46785b043eb1b4843"/><file name="cn.png" hash="7d8619cadee5b9bc776bee8c7c0d9bff"/><file name="co.png" hash="01799343910800de170f5bd2842f8610"/><file name="cr.png" hash="a261c45d21511884d98938746a88cda9"/><file name="cu.png" hash="6374430cbe6044d27a1e873982cb0e76"/><file name="cv.png" hash="ad5a8d21169eaa192fed00d022f3e970"/><file name="cy.png" hash="394575dc8ccea26e40ceb8059ed32140"/><file name="cz.png" hash="a25b0e8335083286931938e0b9203176"/><file name="de.png" hash="d5af4cc2395e7221e0fc625f892b44fb"/><file name="dj.png" hash="ad81ed92212c8118daf1227547fa672f"/><file name="dk.png" hash="d4a4b2d8804d713a687690e8d5d86b0d"/><file name="dm.png" hash="3d0dcb98ba84de45ba9f95f829530e75"/><file name="do.png" hash="579619d7a624dd7ee8d01ac1f2128a1e"/><file name="dz.png" hash="d798915a98660a226bb0418c6cf3ef4f"/><file name="ec.png" hash="84126d2520a0d9f993d3237725a7f907"/><file name="ee.png" hash="9d6bb07ed60ff800bb61f5bb0aaad99a"/><file name="eg.png" hash="984c617fe29427198dcbf7d41170e94b"/><file name="eh.png" hash="703d4e948c1f575016157e657d16b4f1"/><file name="en.png" hash="ffdfe557dee5d9f7ff9744708762bf67"/><file name="er.png" hash="847e75043e54c4aa95c219dd05605880"/><file name="es.png" hash="38970876b2bfb01c903419f91f026878"/><file name="et.png" hash="a7838af033c27a4d5d81e5e964dd45f5"/><file name="fi.png" hash="d64cea1ef1a5994aadcc6380bc3f33d6"/><file name="fj.png" hash="5f0f59be9e403329fa7059ab48609118"/><file name="flags-mini.zip" hash="7221658c2d26144a361403723d278205"/><file name="fm.png" hash="437654b1e67bbf1f90e971222fab6974"/><file name="fr.png" hash="6a705fd57e522b3644597d03606d3e17"/><file name="ga.png" hash="619b7bd8cbd79d04949f86b8fef80bc6"/><file name="gd.png" hash="722b7d1192b950ee6d93a02d2a5e4ba7"/><file name="ge.png" hash="930de4a6c9eab9cae548938903500d28"/><file name="gh.png" hash="ad81a6bdafb414b363d08180caf6a8e3"/><file name="gm.png" hash="f16737716084f29a9d9ba01501fb8732"/><file name="gn.png" hash="b36b8a91e876b1d9b11d020c81a2b806"/><file name="gq.png" hash="20bb217c3333a4a0a361581d84ca5326"/><file name="gr.png" hash="2841baa87ea947e5e3bc80278627d5da"/><file name="gt.png" hash="ef388b528291fd6f7742d3b4b0cd3800"/><file name="gw.png" hash="27e732fe984241041a09315ac235a923"/><file name="gy.png" hash="c2083c5428dec76473780cc97f7449a1"/><file name="hn.png" hash="b630fa10ad4fa8762215dc9e716c5466"/><file name="hr.png" hash="e8c7e75fa9eed2ae2b2ba34dd73e56e6"/><file name="ht.png" hash="d125e54a88ac04211b61d49a7fc0cc70"/><file name="hu.png" hash="96db67ede070c6a86a778660d80e7e26"/><file name="id.png" hash="63199df1f7136f80ca81d95190899db7"/><file name="ie.png" hash="d0088733cda1245823726ecf8018ab69"/><file name="il.png" hash="15b6e79abb6f553938b24d949fea1ffd"/><file name="in.png" hash="11addda3b86a7f8fc55abfd80a38f7a5"/><file name="iq.png" hash="35ee00f1ec3e5815ec3890ff397f2ba0"/><file name="ir.png" hash="a0db2ed68e2e29cc366e019e4c676262"/><file name="is.png" hash="1a39e1dec42eb5c8e5cc98bcb6e71c37"/><file name="it.png" hash="502d044737b407caa56138bc8235e55a"/><file name="jm.png" hash="fb67cd9833b430b1081b68d8bea97a4e"/><file name="jo.png" hash="ded495d673605aca3ddb9bd5cc6e2ca3"/><file name="jp.png" hash="64a5be7e6bdc94ba6866bab79b44eabc"/><file name="ke.png" hash="6f58b731e1f6dd7b13cb659e8ff04154"/><file name="kg.png" hash="229cf7889548451a8d467b85d06c212a"/><file name="kh.png" hash="1cd4d9aeaed32e129f54408cb2cda3d7"/><file name="ki.png" hash="b0596385cffbe421730b16f4a2e0d290"/><file name="km.png" hash="657977b976bcbf8c03bcac268814d020"/><file name="kn.png" hash="f89b4a2d2fd0b44e22b4281a7740e4c7"/><file name="kp.png" hash="fd794d0813a3da085113804070ec89e1"/><file name="kr.png" hash="cf0e98be60de5bf10f6dcff1ea224720"/><file name="ks.png" hash="9cb1c058d614957a6c3f04bb8384d672"/><file name="kw.png" hash="2f9130a5d176b54f632f7bb08860f28e"/><file name="kz.png" hash="288a3b09f8dd0b6b251c2a9759ff61e1"/><file name="la.png" hash="07f807a8c739bead3997a11ed6c741b1"/><file name="lb.png" hash="23b9b946942bc2c3ac2242e5675d810f"/><file name="lc.png" hash="2e7aba2fb74c757f79f500dea57fc69c"/><file name="li.png" hash="e826167750c88d94c5eb43c043ba3907"/><file name="lk.png" hash="4463604a10b4b7a3679bd45c76b56dd1"/><file name="lr.png" hash="2cb94086e7fcc2042435c7b69f1e6438"/><file name="ls.png" hash="86bc8c806555483bfa59cfc36d485f66"/><file name="lt.png" hash="35dfa78cf04b6571cc82e7a356641f1b"/><file name="lu.png" hash="329ad84226aacd1e22695cb72c2822cd"/><file name="lv.png" hash="ba99fb872543c7d4853b50f788e2fda0"/><file name="ly.png" hash="1d232daa96e0f7ca7e1ecdec5e6d8371"/><file name="ma.png" hash="006f06311e103a2efb9618f485685300"/><file name="mc.png" hash="6abe8119c30e760986c705c361211fc6"/><file name="md.png" hash="b5904d63976ccfe9985238b76e8b49e0"/><file name="me.png" hash="b7bf90515ff08512425929ff2734f5a5"/><file name="mg.png" hash="896adcfd3afa8f292e25ecaf5e57956e"/><file name="mh.png" hash="50165a2514b035e3482d6d2f4876d8ec"/><file name="mk.png" hash="1016d35de15d82434e06bffda64d421b"/><file name="ml.png" hash="9b3b0773ec50db0f0d775c9776e74c04"/><file name="mm.png" hash="cdafdf2162e5cb1c8b8e312b9f4cfec8"/><file name="mn.png" hash="faa28969f96cae1085cc6c8d9234dbe4"/><file name="mr.png" hash="d83fb1097bcb99133d9d224d06207d71"/><file name="mt.png" hash="ac23976d3a0d2873b7fb72c8503018bf"/><file name="mu.png" hash="bda1ed19036d5716a1aea8ddd23f5b24"/><file name="mv.png" hash="a5e4d4f9d846ba2df572f7855e5d153c"/><file name="mw.png" hash="73ce56eeac955942ab87f6714c2b2f1c"/><file name="mx.png" hash="515daf584560866ba82458a2841b2c5c"/><file name="my.png" hash="ec302b316857c5a655e9d0838a7299bf"/><file name="mz.png" hash="b1a305321450ff8cfacb7b51ef54702e"/><file name="na.png" hash="6b1782b56d5607651fd8467a3282becf"/><file name="ne.png" hash="fd7a4ac6a5b0bfcd11e19b59e4eb9491"/><file name="ng.png" hash="fbdc831cab445407014a8be0cd9d1f9b"/><file name="ni.png" hash="87be5b122aaafed59e42a1c94472f4ca"/><file name="nl.png" hash="b7d65809e5c02d8d36c01a08adc32ee4"/><file name="no.png" hash="87f804f26166303a42d85ceba925ff82"/><file name="np.png" hash="6e43bb94985c756a15b7ad47e1be25a9"/><file name="nr.png" hash="01771f576a6a73750637796ca4f9b1d1"/><file name="nz.png" hash="a37276b951a51d5b4cbf5169b3fbe899"/><file name="om.png" hash="2c13864af6fa36541fc66a6e8f3af91e"/><file name="pa.png" hash="b79104676e49981ca9937015349c63e0"/><file name="pe.png" hash="80a714541ee3a84286f79f31abef7232"/><file name="pg.png" hash="0fd60c1657cf591650ea7672ce1189af"/><file name="ph.png" hash="47942dfa29448f707cc8aea171d120bf"/><file name="pk.png" hash="047cccacc9290dd94a3d5febc0499cf8"/><file name="pl.png" hash="7b8a0298dac0a7f273d5e6b741f8038f"/><file name="pt.png" hash="3141bfbda3235bc2f950243981753a23"/><file name="pw.png" hash="6eaebbe7b69c3bf9c3c50f4c3cc9100f"/><file name="py.png" hash="948dc594390295dc43a22bb228ff8296"/><file name="qa.png" hash="237556d7031c9d09e86e8b806310eef3"/><file name="ro.png" hash="5508a42870fb98d3dc1281133e36908e"/><file name="rs.png" hash="e81f589284efdc070501b676cbf2440a"/><file name="ru.png" hash="46378f0d5a6e8339db251971fa05acc8"/><file name="rw.png" hash="4afb87332945b130e463fc5b7706caf8"/><file name="sa.png" hash="2cf7460d937ea6ac4aa80c84722ff127"/><file name="sb.png" hash="ec4690d32d683027cab5475fbc6817eb"/><file name="sc.png" hash="6b232689798b91d278928c5f8db684b6"/><file name="sd.png" hash="3ec6b86188d06cc95af59a4401fa51c1"/><file name="se.png" hash="34ca8036ec0d98e5b8f0972e7c3b690c"/><file name="sg.png" hash="0df385a93794a40b8927d9b6fe8c8ab4"/><file name="si.png" hash="7c0304b3da174716cb637e559ba30462"/><file name="sk.png" hash="f1192c4beac2189817b990302d6023c0"/><file name="sl.png" hash="dded38a2eedec2575e7200753a8d2c0c"/><file name="sm.png" hash="fce953adb78a308692ae504f8bc68a03"/><file name="sn.png" hash="dee77d596acc5a7045db7c0eca9996e6"/><file name="so.png" hash="a88729fc16aa813315a7edc1374e34e5"/><file name="sr.png" hash="6cd104e7e702c0f17a80be2da797b2c2"/><file name="st.png" hash="ac34029ffd9ab8b0f14669295f838a92"/><file name="sv.png" hash="87de653ebd702dc2c1908bdad6b5e07d"/><file name="sy.png" hash="2c0f028a239914970be87e691bcd3907"/><file name="sz.png" hash="06cf5b39e7ade92fa9d29619f69fa0e6"/><file name="td.png" hash="323ae3550138d0054343f3d75367bfb1"/><file name="tg.png" hash="bf0360afe91efa96d766bc9de7b4726d"/><file name="th.png" hash="7c7f53c225be44fc2897dd007549245b"/><file name="tj.png" hash="472b4679950b9562d3618b9c9ef518d5"/><file name="tl.png" hash="7197fb1849ba9c8c7f9b1e240e37b85b"/><file name="tm.png" hash="177489fdf6e6380131c2f989a1467b24"/><file name="tn.png" hash="162105faa75e6ceb9f0e5b982343a07c"/><file name="to.png" hash="a96505c14820af79abb3567056abca39"/><file name="tr.png" hash="8307e3e68476fe75f0a396b8e96761d3"/><file name="tt.png" hash="304a6848ef200b4d3cde0b1d5cc5523e"/><file name="tv.png" hash="ed5ffe4560b8b651b0d321bc6f6875c7"/><file name="tw.png" hash="56d7df67199ebcce42d70cea202b8a36"/><file name="tz.png" hash="1675509852611fabc2d11966274f5617"/><file name="ua.png" hash="dc3eb73822683ea9980711d34cc01d68"/><file name="ug.png" hash="e7ef297a425c8ac105b5e52c2e338794"/><file name="us.png" hash="1fac8f33d3c11a92fc7913f27df16339"/><file name="uy.png" hash="e00ba3948043a99ab07db91db8dd94f3"/><file name="uz.png" hash="2cb5bc704b35ef438b92824dd1cb7c83"/><file name="va.png" hash="4e3061c712414e91d312ca5a587ea24c"/><file name="vc.png" hash="0ee195323c3613d5e5d635a445c922df"/><file name="ve.png" hash="019c86c82fe6a1ad59ec5d800db3a66f"/><file name="vn.png" hash="d33f6ad2504d1559b10e0f6f084cbe59"/><file name="vu.png" hash="fe3acbd24eb0e11f45cdc3cd6b2a22ea"/><file name="ws.png" hash="bd859467d80a0740bb5ab950def621f2"/><file name="ye.png" hash="47036485a58d485f9cbbc8c661daf8d3"/><file name="za.png" hash="6d0a8ef2e6bdd3325e86b2fe9ec74cf9"/><file name="zm.png" hash="cc14e520271994baccd073ffb852d144"/><file name="zw.png" hash="16b7534269b89084bbdab36c8da5da2e"/></dir></dir><dir name="js"><dir name="textmaster"><file name="script.js" hash="344ac483a49d65f09e401c2b3a53c02f"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Textmaster_Textmaster.xml" hash="c7189ff759aac7e98638198ba1b59e96"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Textmaster_Textmaster.csv" hash="446e4803276a66339989c219bc7cc548"/></dir><dir name="en_US"><file name="Textmaster_Textmaster.csv" hash="e3962976f058602ecce62c811511aa07"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.2</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Textmaster_Textmaster</name>
4
+ <version>1.0.6</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Get your product descriptions translated or corrected by professionals directly through Magento.</summary>
10
  <description>TextMaster makes it easy to translate (or proofread) your entire product catalog by professionals in over 15 languages. Open your doors to new markets in just a few clicks by using our intuitive extension to make your store multilingual.</description>
11
+ <notes>Add New features:&#xD;
12
+ - Translation memory&#xD;
13
+ - Markup in content&#xD;
14
+ - New quality level : Enterprise.&#xD;
15
+ &#xD;
16
+ We have improve some fonctonnalities.</notes>
17
  <authors><author><name>Textmaster</name><user>Textmaster</user><email>elizaveta@textmaster.com</email></author></authors>
18
+ <date>2016-01-19</date>
19
+ <time>11:18:24</time>
20
+ <contents><target name="magecommunity"><dir name="Textmaster"><dir name="Textmaster"><dir name="Block"><dir name="Adminhtml"><file name="Credit.php" hash="d6a923cfaf5279e4adf27986c87362b0"/><dir name="Document"><dir name="Renderer"><file name="Status.php" hash="f42270298a953c47ed05008dc17ffbe3"/></dir><file name="Supportmessage.php" hash="3de2c98e34072d8036fbb3baf51fc680"/><file name="View.php" hash="431c6abb59610f98030067f2c331619d"/></dir><dir name="Project"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Checkbox.php" hash="8f57ab35ad7704ef05012d219ca0323d"/><file name="Massaction.php" hash="62dadad96a7548df68e3f3c627e94589"/></dir></dir></dir><file name="Grid.php" hash="3a8293430513271d1ee3f44b0c3120f8"/><dir name="Onglets"><file name="Form.php" hash="e686e8cfdac33fa21c86e26fe93a6a07"/><file name="Step1.php" hash="348a7a7bc9004758a517f0939d4ce3bf"/><file name="Step2.php" hash="c8ab6ccf8f1ed0c0879fec0b7df63e04"/><dir name="Step3"><file name="Author.php" hash="7ec92925a374885bfff851d8abf24787"/><dir name="Form"><file name="Author.php" hash="b965e02d28139d9c7f6e58fbb15e8e1b"/></dir></dir><file name="Step3.php" hash="31642f7625c597bb25fd50c59becc232"/><file name="Summary.php" hash="ed4dd8dcb8f1acdcc366b405f840570c"/></dir><file name="Onglets.php" hash="309dd49d8d65bf1c71247ce0647ffe20"/><dir name="Renderer"><file name="Nbdocument.php" hash="244d668e3f8a01c21208fdd2a71d0080"/><file name="Price.php" hash="a21b198258a81bb9b411f638e6b5f5e7"/><file name="Progression.php" hash="2e7c43d38b5640b463963a30239225c9"/><file name="Status.php" hash="782007cbd27b4ccc4200e87e34789ee2"/><file name="Store.php" hash="d92ccafcec2ad102b85bcb6bd3131779"/><file name="Wordcount.php" hash="d4714582d744a718e20d5c1444393c8a"/></dir><dir name="View"><file name="Documents.php" hash="48ab17be73308883855cf5ec0d51ce2b"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Checkbox.php" hash="89c7d2afed7e6b031237b8d57194aae8"/><file name="Massaction.php" hash="e39a40293de5764fc41c49fa54964026"/></dir></dir></dir></dir><file name="View.php" hash="5843127fdc9d5277e3c35105724ff788"/></dir><file name="Project.php" hash="1919358b2d024822775ec1dbc9f92d2b"/><dir name="Renderer"><file name="Sourcelanguage.php" hash="61ade1d391fc882d3483b68612f1b784"/><file name="Targetlanguage.php" hash="2defedb3f9b57a2c34e05a30533074e1"/><file name="UpdatedAt.php" hash="2543e1ecaf1431966321031d09147c11"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Briefing.php" hash="f1ae93b9d2c02ca12aa93694e070232e"/><file name="Creation.php" hash="fad41de891ad9edadc2a6ffde2fcbd64"/><file name="Islog.php" hash="9b9527584ab9a2255b293680c7084bb3"/><file name="Login.php" hash="a96e12a94a720081903bddcec52716c1"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="12ac6a75a5c9da49a051488d4e58b7d5"/></dir><dir name="Model"><file name="Api.php" hash="13a8e23e027c4181c2d600f5bd18213e"/><file name="Document.php" hash="7ed359834dbcf4666e53e7fd5df52ee3"/><dir name="Mysql4"><dir name="Document"><file name="Collection.php" hash="6253cce06c8b2d65305770e4cc0faf34"/></dir><file name="Document.php" hash="b7c143dec4b9c9d131a25fe85e76c686"/><dir name="Project"><dir name="Attribute"><file name="Collection.php" hash="2873221c4cceef621c2920696ca9f937"/></dir><file name="Attribute.php" hash="f997d919bbc5bd47ad840d522ce1de15"/><file name="Collection.php" hash="e804775c9841041a40d03d9ecf9fea8b"/></dir><file name="Project.php" hash="c78db4c76e2ce2f6ebf1cf8a48c723ef"/></dir><file name="Observer.php" hash="2f5778ed0c4fb579ccfd1e3f5c5bcff0"/><dir name="Project"><file name="Attribute.php" hash="e824699895626069cae908b5a7894c4d"/></dir><file name="Project.php" hash="e3fa3e877fa2679a4e5b22ccb32c3898"/><dir name="Source"><dir name="Api"><file name="Audience.php" hash="d9bcdf66964436b1efbc96af0a2e2e40"/><file name="Author.php" hash="758fd2e35aa096eacd2995088da64267"/><file name="Category.php" hash="358defa5cf859af62c68f675809b47eb"/><file name="Grammatical.php" hash="dcb73d6ac8cd93f73b6af08ec3ffb057"/><file name="Lang.php" hash="2f7c65d8c9d2247364bab2b3a26cd638"/><file name="Type.php" hash="9cff2f1385ac6e5bafb8c986152c4c08"/><file name="Vocabulary.php" hash="494ed3154a1c8dbe492da5a32f2dbad7"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AjaxController.php" hash="fe256be5486b56d6ead24d14622cd1ff"/><file name="ApiController.php" hash="11850ecf653095c4c152b3220a6f6dba"/><file name="ProjectController.php" hash="6e7e7e9a3e78db40009e69e3db448bcd"/></dir><file name="CallbackController.php" hash="1cb0d55bb494fa3a354dda2df4124dc2"/><file name="IndexController.php" hash="7588d1f1a9918834837e0215569ab560"/></dir><dir name="etc"><file name="config.xml" hash="435c461862ff7af9240e3d1901f7a3d9"/><file name="jstranslator.xml" hash="dd37ca2fe616ce454a4709e9df300ea9"/><file name="system.xml" hash="981d732eac4d47ed82e12795fea71d16"/></dir><dir name="sql"><dir name="textmaster_setup"><file name="mysql4-install-0.0.1.php" hash="162032e7872f14cc0049c73b79fdb7e7"/><file name="mysql4-upgrade-0.0.1-0.0.2.php" hash="d0e9ddeb6f62e36747e1f7df4fe99db1"/><file name="mysql4-upgrade-0.0.2-0.0.3.php" hash="8e3cad04b99df0c2a1e3369bd7c432ee"/><file name="mysql4-upgrade-0.0.3-0.0.4.php" hash="1d5f415b61fd5ef6b4c352cd9f2ba75e"/><file name="mysql4-upgrade-0.0.4-0.0.5.php" hash="791ca3e154ba7249478339b98c40eb94"/><file name="mysql4-upgrade-0.0.5-0.0.6.php" hash="865aac8301b8afe668590ec81b08877e"/><file name="mysql4-upgrade-0.0.6-0.0.7.php" hash="22238b586ef7acbfc8e72b60ad19eff2"/><file name="mysql4-upgrade-0.0.7-0.0.8.php" hash="57c692e4a1357794af92e884b7316047"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="e3e41fe7b951b71cc636ad6cc9ce4d2b"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="textmaster"><file name="credit.phtml" hash="c89b6836429a831be59d7718c1b6600f"/><dir name="document"><file name="support_messages.phtml" hash="718d4b88147a88dd3a4a79ee937cfb0b"/><file name="view.phtml" hash="3c4164c1c0a8b651f8b799fafd869a00"/></dir><dir name="form"><file name="container.phtml" hash="a178289bb54908698de0423a04f925f3"/></dir><dir name="grid"><file name="container.phtml" hash="3a46640e22f5458ba1bb43abcd50fb31"/></dir><file name="login.phtml" hash="6d32209da30745ee73f9d89e18662792"/><dir name="onglet"><file name="popinauthors.phtml" hash="88755e5187349b78cace1b922a00d310"/></dir><file name="onglet.phtml" hash="f19b8e5eb8e0f67fee9eb451db6597d0"/><file name="page.phtml" hash="5dfa6347708268bf5108186a1145e530"/><dir name="product"><file name="edit.phtml" hash="df650e19786fc14bf570c10eeaad2762"/></dir><file name="view.phtml" hash="422ad35864499f679027e3dbfdee6bde"/></dir></dir><dir name="layout"><file name="textmaster.xml" hash="b5464624e62899af321bc13c2720631b"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="textmaster"><file name="popin.css" hash="b9624ff6924adf24302b2a9ce73704fb"/><file name="styles.css" hash="61e33a529634ed22fd2e0f56d3647caf"/></dir></dir><dir name="images"><dir name="textmaster"><file name="ad.png" hash="4d3bfa60fb52ee8f9ce3c0f3934a0e08"/><file name="ae.png" hash="f3838d0ca01d7a76de74249ff2b514c7"/><file name="af.png" hash="a44bb210f25bafca92627b1187b0996d"/><file name="ag.png" hash="7b00bd7c2754618d57b78c407d6b542a"/><file name="al.png" hash="3f8b9ccd82877835192c5235e84ea543"/><file name="am.png" hash="f1f48cdf20af82bd4e708f40a844c08e"/><file name="ao.png" hash="13dd9ec64e95578da89ac092ea6bc49d"/><file name="ar.png" hash="e2a2372c9190c58e450d563c857cf932"/><file name="at.png" hash="0ed42d4df345bbe1a9eacc40a1ba9891"/><file name="au.png" hash="95609fc7efb05fab769b08c567dcafe3"/><file name="az.png" hash="82ee424e37625aa0bc6f0f2e2798ff33"/><file name="ba.png" hash="098a79c08cd07a7940affe818d8108d2"/><file name="bb.png" hash="237f1706a74e31a1f0f40080285af716"/><file name="bd.png" hash="5dd17c6db835d0e611b582a9aab36a69"/><file name="be.png" hash="140b16e73953d41b172e5a13106d96d7"/><file name="bf.png" hash="8bf9167bd4d4c8ab177590a03f18cb3a"/><file name="bg.png" hash="5f21946772326567c3bc2eb62693862d"/><file name="bh.png" hash="40acbad63f1ebb842cac8225198caa80"/><file name="bi.png" hash="ef7a1794da922df0876811e673795b40"/><file name="bj.png" hash="e776d8d30d79c46196bf63cf3698a005"/><file name="bn.png" hash="6f8378e8492e6d65297a878000d86cdd"/><file name="bo.png" hash="42addc49c770236532fb3425c39e855e"/><file name="br.png" hash="5820e89cdd217f41a8160611c2772450"/><file name="bs.png" hash="f10c1553ab9d8d3f50fa50789a0ec14d"/><file name="bt.png" hash="edced8a66c05b17cb3a66f4edab81537"/><file name="bw.png" hash="87ad8d31999e9f3dcf4af9b4002bd198"/><file name="by.png" hash="74271a2d533cf0f010f684527506a1b7"/><file name="bz.png" hash="3e6e3a59ea76dd361dd44c59e878cce1"/><file name="ca.png" hash="bde2e7c28a15fef7c21023d0d42e0af6"/><file name="cd.png" hash="43c7041408a403b5a5bff6ee5c486dcb"/><file name="cf.png" hash="8b0f9b4821681f89adc2a05cc9cb93f8"/><file name="cg.png" hash="69fc1655e73b91d5de5e526eb77a25dd"/><file name="ch.png" hash="4bd0882fe41076facbed622f45f5fe12"/><file name="ci.png" hash="33d6b8f53b17b291c82ba89268cc33c3"/><file name="cl.png" hash="97ac63f223ad9b8c9c89ede5a463fe16"/><file name="cm.png" hash="3a02cc8fd12eb3d46785b043eb1b4843"/><file name="cn.png" hash="7d8619cadee5b9bc776bee8c7c0d9bff"/><file name="co.png" hash="01799343910800de170f5bd2842f8610"/><file name="cr.png" hash="a261c45d21511884d98938746a88cda9"/><file name="cu.png" hash="6374430cbe6044d27a1e873982cb0e76"/><file name="cv.png" hash="ad5a8d21169eaa192fed00d022f3e970"/><file name="cy.png" hash="394575dc8ccea26e40ceb8059ed32140"/><file name="cz.png" hash="a25b0e8335083286931938e0b9203176"/><file name="de.png" hash="d5af4cc2395e7221e0fc625f892b44fb"/><file name="dj.png" hash="ad81ed92212c8118daf1227547fa672f"/><file name="dk.png" hash="d4a4b2d8804d713a687690e8d5d86b0d"/><file name="dm.png" hash="3d0dcb98ba84de45ba9f95f829530e75"/><file name="do.png" hash="579619d7a624dd7ee8d01ac1f2128a1e"/><file name="dz.png" hash="d798915a98660a226bb0418c6cf3ef4f"/><file name="ec.png" hash="84126d2520a0d9f993d3237725a7f907"/><file name="ee.png" hash="9d6bb07ed60ff800bb61f5bb0aaad99a"/><file name="eg.png" hash="984c617fe29427198dcbf7d41170e94b"/><file name="eh.png" hash="703d4e948c1f575016157e657d16b4f1"/><file name="en.png" hash="ffdfe557dee5d9f7ff9744708762bf67"/><file name="er.png" hash="847e75043e54c4aa95c219dd05605880"/><file name="es.png" hash="38970876b2bfb01c903419f91f026878"/><file name="et.png" hash="a7838af033c27a4d5d81e5e964dd45f5"/><file name="fi.png" hash="d64cea1ef1a5994aadcc6380bc3f33d6"/><file name="fj.png" hash="5f0f59be9e403329fa7059ab48609118"/><file name="flags-mini.zip" hash="7221658c2d26144a361403723d278205"/><file name="fm.png" hash="437654b1e67bbf1f90e971222fab6974"/><file name="fr.png" hash="6a705fd57e522b3644597d03606d3e17"/><file name="ga.png" hash="619b7bd8cbd79d04949f86b8fef80bc6"/><file name="gd.png" hash="722b7d1192b950ee6d93a02d2a5e4ba7"/><file name="ge.png" hash="930de4a6c9eab9cae548938903500d28"/><file name="gh.png" hash="ad81a6bdafb414b363d08180caf6a8e3"/><file name="gm.png" hash="f16737716084f29a9d9ba01501fb8732"/><file name="gn.png" hash="b36b8a91e876b1d9b11d020c81a2b806"/><file name="gq.png" hash="20bb217c3333a4a0a361581d84ca5326"/><file name="gr.png" hash="2841baa87ea947e5e3bc80278627d5da"/><file name="gt.png" hash="ef388b528291fd6f7742d3b4b0cd3800"/><file name="gw.png" hash="27e732fe984241041a09315ac235a923"/><file name="gy.png" hash="c2083c5428dec76473780cc97f7449a1"/><file name="hn.png" hash="b630fa10ad4fa8762215dc9e716c5466"/><file name="hr.png" hash="e8c7e75fa9eed2ae2b2ba34dd73e56e6"/><file name="ht.png" hash="d125e54a88ac04211b61d49a7fc0cc70"/><file name="hu.png" hash="96db67ede070c6a86a778660d80e7e26"/><file name="id.png" hash="63199df1f7136f80ca81d95190899db7"/><file name="ie.png" hash="d0088733cda1245823726ecf8018ab69"/><file name="il.png" hash="15b6e79abb6f553938b24d949fea1ffd"/><file name="in.png" hash="11addda3b86a7f8fc55abfd80a38f7a5"/><file name="iq.png" hash="35ee00f1ec3e5815ec3890ff397f2ba0"/><file name="ir.png" hash="a0db2ed68e2e29cc366e019e4c676262"/><file name="is.png" hash="1a39e1dec42eb5c8e5cc98bcb6e71c37"/><file name="it.png" hash="502d044737b407caa56138bc8235e55a"/><file name="jm.png" hash="fb67cd9833b430b1081b68d8bea97a4e"/><file name="jo.png" hash="ded495d673605aca3ddb9bd5cc6e2ca3"/><file name="jp.png" hash="64a5be7e6bdc94ba6866bab79b44eabc"/><file name="ke.png" hash="6f58b731e1f6dd7b13cb659e8ff04154"/><file name="kg.png" hash="229cf7889548451a8d467b85d06c212a"/><file name="kh.png" hash="1cd4d9aeaed32e129f54408cb2cda3d7"/><file name="ki.png" hash="b0596385cffbe421730b16f4a2e0d290"/><file name="km.png" hash="657977b976bcbf8c03bcac268814d020"/><file name="kn.png" hash="f89b4a2d2fd0b44e22b4281a7740e4c7"/><file name="kp.png" hash="fd794d0813a3da085113804070ec89e1"/><file name="kr.png" hash="cf0e98be60de5bf10f6dcff1ea224720"/><file name="ks.png" hash="9cb1c058d614957a6c3f04bb8384d672"/><file name="kw.png" hash="2f9130a5d176b54f632f7bb08860f28e"/><file name="kz.png" hash="288a3b09f8dd0b6b251c2a9759ff61e1"/><file name="la.png" hash="07f807a8c739bead3997a11ed6c741b1"/><file name="lb.png" hash="23b9b946942bc2c3ac2242e5675d810f"/><file name="lc.png" hash="2e7aba2fb74c757f79f500dea57fc69c"/><file name="li.png" hash="e826167750c88d94c5eb43c043ba3907"/><file name="lk.png" hash="4463604a10b4b7a3679bd45c76b56dd1"/><file name="lr.png" hash="2cb94086e7fcc2042435c7b69f1e6438"/><file name="ls.png" hash="86bc8c806555483bfa59cfc36d485f66"/><file name="lt.png" hash="35dfa78cf04b6571cc82e7a356641f1b"/><file name="lu.png" hash="329ad84226aacd1e22695cb72c2822cd"/><file name="lv.png" hash="ba99fb872543c7d4853b50f788e2fda0"/><file name="ly.png" hash="1d232daa96e0f7ca7e1ecdec5e6d8371"/><file name="ma.png" hash="006f06311e103a2efb9618f485685300"/><file name="mc.png" hash="6abe8119c30e760986c705c361211fc6"/><file name="md.png" hash="b5904d63976ccfe9985238b76e8b49e0"/><file name="me.png" hash="b7bf90515ff08512425929ff2734f5a5"/><file name="mg.png" hash="896adcfd3afa8f292e25ecaf5e57956e"/><file name="mh.png" hash="50165a2514b035e3482d6d2f4876d8ec"/><file name="mk.png" hash="1016d35de15d82434e06bffda64d421b"/><file name="ml.png" hash="9b3b0773ec50db0f0d775c9776e74c04"/><file name="mm.png" hash="cdafdf2162e5cb1c8b8e312b9f4cfec8"/><file name="mn.png" hash="faa28969f96cae1085cc6c8d9234dbe4"/><file name="mr.png" hash="d83fb1097bcb99133d9d224d06207d71"/><file name="mt.png" hash="ac23976d3a0d2873b7fb72c8503018bf"/><file name="mu.png" hash="bda1ed19036d5716a1aea8ddd23f5b24"/><file name="mv.png" hash="a5e4d4f9d846ba2df572f7855e5d153c"/><file name="mw.png" hash="73ce56eeac955942ab87f6714c2b2f1c"/><file name="mx.png" hash="515daf584560866ba82458a2841b2c5c"/><file name="my.png" hash="ec302b316857c5a655e9d0838a7299bf"/><file name="mz.png" hash="b1a305321450ff8cfacb7b51ef54702e"/><file name="na.png" hash="6b1782b56d5607651fd8467a3282becf"/><file name="ne.png" hash="fd7a4ac6a5b0bfcd11e19b59e4eb9491"/><file name="ng.png" hash="fbdc831cab445407014a8be0cd9d1f9b"/><file name="ni.png" hash="87be5b122aaafed59e42a1c94472f4ca"/><file name="nl.png" hash="b7d65809e5c02d8d36c01a08adc32ee4"/><file name="no.png" hash="87f804f26166303a42d85ceba925ff82"/><file name="np.png" hash="6e43bb94985c756a15b7ad47e1be25a9"/><file name="nr.png" hash="01771f576a6a73750637796ca4f9b1d1"/><file name="nz.png" hash="a37276b951a51d5b4cbf5169b3fbe899"/><file name="om.png" hash="2c13864af6fa36541fc66a6e8f3af91e"/><file name="pa.png" hash="b79104676e49981ca9937015349c63e0"/><file name="pe.png" hash="80a714541ee3a84286f79f31abef7232"/><file name="pg.png" hash="0fd60c1657cf591650ea7672ce1189af"/><file name="ph.png" hash="47942dfa29448f707cc8aea171d120bf"/><file name="pk.png" hash="047cccacc9290dd94a3d5febc0499cf8"/><file name="pl.png" hash="7b8a0298dac0a7f273d5e6b741f8038f"/><file name="pt.png" hash="3141bfbda3235bc2f950243981753a23"/><file name="pw.png" hash="6eaebbe7b69c3bf9c3c50f4c3cc9100f"/><file name="py.png" hash="948dc594390295dc43a22bb228ff8296"/><file name="qa.png" hash="237556d7031c9d09e86e8b806310eef3"/><file name="ro.png" hash="5508a42870fb98d3dc1281133e36908e"/><file name="rs.png" hash="e81f589284efdc070501b676cbf2440a"/><file name="ru.png" hash="46378f0d5a6e8339db251971fa05acc8"/><file name="rw.png" hash="4afb87332945b130e463fc5b7706caf8"/><file name="sa.png" hash="2cf7460d937ea6ac4aa80c84722ff127"/><file name="sb.png" hash="ec4690d32d683027cab5475fbc6817eb"/><file name="sc.png" hash="6b232689798b91d278928c5f8db684b6"/><file name="sd.png" hash="3ec6b86188d06cc95af59a4401fa51c1"/><file name="se.png" hash="34ca8036ec0d98e5b8f0972e7c3b690c"/><file name="sg.png" hash="0df385a93794a40b8927d9b6fe8c8ab4"/><file name="si.png" hash="7c0304b3da174716cb637e559ba30462"/><file name="sk.png" hash="f1192c4beac2189817b990302d6023c0"/><file name="sl.png" hash="dded38a2eedec2575e7200753a8d2c0c"/><file name="sm.png" hash="fce953adb78a308692ae504f8bc68a03"/><file name="sn.png" hash="dee77d596acc5a7045db7c0eca9996e6"/><file name="so.png" hash="a88729fc16aa813315a7edc1374e34e5"/><file name="sr.png" hash="6cd104e7e702c0f17a80be2da797b2c2"/><file name="st.png" hash="ac34029ffd9ab8b0f14669295f838a92"/><file name="sv.png" hash="87de653ebd702dc2c1908bdad6b5e07d"/><file name="sy.png" hash="2c0f028a239914970be87e691bcd3907"/><file name="sz.png" hash="06cf5b39e7ade92fa9d29619f69fa0e6"/><file name="td.png" hash="323ae3550138d0054343f3d75367bfb1"/><file name="tg.png" hash="bf0360afe91efa96d766bc9de7b4726d"/><file name="th.png" hash="7c7f53c225be44fc2897dd007549245b"/><file name="tj.png" hash="472b4679950b9562d3618b9c9ef518d5"/><file name="tl.png" hash="7197fb1849ba9c8c7f9b1e240e37b85b"/><file name="tm.png" hash="177489fdf6e6380131c2f989a1467b24"/><file name="tn.png" hash="162105faa75e6ceb9f0e5b982343a07c"/><file name="to.png" hash="a96505c14820af79abb3567056abca39"/><file name="tr.png" hash="8307e3e68476fe75f0a396b8e96761d3"/><file name="tt.png" hash="304a6848ef200b4d3cde0b1d5cc5523e"/><file name="tv.png" hash="ed5ffe4560b8b651b0d321bc6f6875c7"/><file name="tw.png" hash="56d7df67199ebcce42d70cea202b8a36"/><file name="tz.png" hash="1675509852611fabc2d11966274f5617"/><file name="ua.png" hash="dc3eb73822683ea9980711d34cc01d68"/><file name="ug.png" hash="e7ef297a425c8ac105b5e52c2e338794"/><file name="us.png" hash="1fac8f33d3c11a92fc7913f27df16339"/><file name="uy.png" hash="e00ba3948043a99ab07db91db8dd94f3"/><file name="uz.png" hash="2cb5bc704b35ef438b92824dd1cb7c83"/><file name="va.png" hash="4e3061c712414e91d312ca5a587ea24c"/><file name="vc.png" hash="0ee195323c3613d5e5d635a445c922df"/><file name="ve.png" hash="019c86c82fe6a1ad59ec5d800db3a66f"/><file name="vn.png" hash="d33f6ad2504d1559b10e0f6f084cbe59"/><file name="vu.png" hash="fe3acbd24eb0e11f45cdc3cd6b2a22ea"/><file name="ws.png" hash="bd859467d80a0740bb5ab950def621f2"/><file name="ye.png" hash="47036485a58d485f9cbbc8c661daf8d3"/><file name="za.png" hash="6d0a8ef2e6bdd3325e86b2fe9ec74cf9"/><file name="zm.png" hash="cc14e520271994baccd073ffb852d144"/><file name="zw.png" hash="16b7534269b89084bbdab36c8da5da2e"/></dir></dir><dir name="js"><dir name="textmaster"><file name="script-tmp.js" hash=""/><file name="script.js" hash="5ecaba47717eff63112b70d7c2eaf70a"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Textmaster_Textmaster.xml" hash="c7189ff759aac7e98638198ba1b59e96"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Textmaster_Textmaster.csv" hash="caa6a4fb0d6ff4be3f66558d1267ef3b"/></dir><dir name="en_US"><file name="Textmaster_Textmaster.csv" hash="1e19327734c2f59fa89882147cc66958"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.3.2</min><max>6.0.0</max></php></required></dependencies>
23
  </package>
skin/adminhtml/default/default/js/textmaster/script.js CHANGED
@@ -110,10 +110,14 @@ jQueryOnLoad = function($){
110
  service_levels = $('#language_level option');
111
  expertises = $('#expertise option');
112
  priorities = $('#priority option');
 
 
113
  label_expertises = new Array();
114
  label_priorities = new Array();
115
  label_qualities = new Array();
116
  label_service_levels = new Array();
 
 
117
  $.each(service_levels,function(index,value){
118
  label_service_levels[index] = $(value).text();
119
  });
@@ -126,6 +130,9 @@ jQueryOnLoad = function($){
126
  $.each(priorities,function(index,value){
127
  label_priorities[index] = $(value).text();
128
  });
 
 
 
129
 
130
  updateDisplay = function(){
131
  ctype = $('#ctype').val();
@@ -134,6 +141,7 @@ jQueryOnLoad = function($){
134
  quality = $('#quality').val();
135
  expertise = $('#expertise').val();
136
  service_level = $('#language_level').val();
 
137
 
138
  $('#textmaster_projet').html($('#ctype option[value='+ctype+']').html());
139
 
@@ -141,14 +149,20 @@ jQueryOnLoad = function($){
141
  if(typeof service_level =='undefined'){
142
  service_level = 'regular';
143
  }
144
- if(ctype=='translation' && service_level=='premium'){
145
  $('#quality').removeAttr('disabled');
146
- } else {
147
- $('#quality').val(0);
148
- $('#quality').attr('disabled','disabled');
149
- quality = $('#quality').val();
150
- }
151
- $.each(service_levels,function(i,v){
 
 
 
 
 
 
152
  $(v).text(label_service_levels[i]);
153
  });
154
 
@@ -173,6 +187,11 @@ jQueryOnLoad = function($){
173
  html_option += Translator.translate('Expertise')+'<br/>';
174
  base_price += expertise_price;
175
  }
 
 
 
 
 
176
  /*if(specific_attachment=='1'){
177
  html_option += 'Specific attachment<br/>';
178
  base_price += parseFloat(textmaster_pricing['types'][ctype]['specific_attachment']);
@@ -220,6 +239,12 @@ jQueryOnLoad = function($){
220
  $(v).text(label_expertises[i]+' +'+formatCurrency(price,priceFormat)+''+currency_symbol+'');
221
  }
222
  });
 
 
 
 
 
 
223
  /*dataAuthor = {
224
  ctype : ctype,
225
  word_count : word_count,
@@ -254,7 +279,7 @@ jQueryOnLoad = function($){
254
 
255
  //updateDisplay();
256
 
257
- $('input[id^=attribute_],#ctype,#specific_attachment,#priority,#quality,#expertise,#language_level,#store_id_translation').change(function(){
258
  updateDisplay();
259
  });
260
  store_id = $('#store_id_origin').val();
@@ -399,8 +424,14 @@ function documentSend (url){
399
  method: 'get',
400
  onSuccess: function(oXHR) {
401
  if(oXHR.responseText.substr(0,4) != 'http'){
402
- html = oXHR.responseText+'%'+'<span class="progress-cadre"><span class="progress" style="width:'+oXHR.responseText+'%"></span></span>';
403
- html += '<span class="message">'+nouveau_message_loader+'</span>';
 
 
 
 
 
 
404
  $('loading_mask_loader_message').update(html);
405
  if(!stop_ajax)
406
  documentSend(url);
@@ -415,7 +446,6 @@ function documentSend (url){
415
  );
416
  }
417
 
418
-
419
  function showAuthors(url,title) {
420
  winCompare = new Window({url:url,title:title,width:680,minimizable:false,maximizable:false,showEffectOptions:{duration:0.4},hideEffectOptions:{duration:0.4}});
421
  winCompare.setZIndex(100);
110
  service_levels = $('#language_level option');
111
  expertises = $('#expertise option');
112
  priorities = $('#priority option');
113
+ translation_memories = $('#translation_memory option');
114
+
115
  label_expertises = new Array();
116
  label_priorities = new Array();
117
  label_qualities = new Array();
118
  label_service_levels = new Array();
119
+ label_translation_memories = new Array();
120
+
121
  $.each(service_levels,function(index,value){
122
  label_service_levels[index] = $(value).text();
123
  });
130
  $.each(priorities,function(index,value){
131
  label_priorities[index] = $(value).text();
132
  });
133
+ $.each(translation_memories,function(index,value){
134
+ label_translation_memories[index] = $(value).text();
135
+ });
136
 
137
  updateDisplay = function(){
138
  ctype = $('#ctype').val();
141
  quality = $('#quality').val();
142
  expertise = $('#expertise').val();
143
  service_level = $('#language_level').val();
144
+ translation_memory = $('#translation_memory').val();
145
 
146
  $('#textmaster_projet').html($('#ctype option[value='+ctype+']').html());
147
 
149
  if(typeof service_level =='undefined'){
150
  service_level = 'regular';
151
  }
152
+ if(ctype=='translation' && (service_level=='premium' || service_level=='enterprise')){
153
  $('#quality').removeAttr('disabled');
154
+ } else {
155
+ $('#quality').val(0);
156
+ $('#quality').attr('disabled','disabled');
157
+ quality = $('#quality').val();
158
+ }
159
+ if(ctype=='translation' && service_level=='enterprise'){
160
+ $('#translation_memory').removeAttr('disabled');
161
+ }else {
162
+ $('#translation_memory').val(0);
163
+ $('#translation_memory').attr('disabled','disabled');
164
+ }
165
+ $.each(service_levels,function(i,v){
166
  $(v).text(label_service_levels[i]);
167
  });
168
 
187
  html_option += Translator.translate('Expertise')+'<br/>';
188
  base_price += expertise_price;
189
  }
190
+ translation_memory_price = parseFloat(textmaster_pricing['types'][ctype]['translation_memory']);
191
+ if(translation_memory=='1'){
192
+ html_option += Translator.translate('Translation memory')+'<br/>';
193
+ base_price += translation_memory_price;
194
+ }
195
  /*if(specific_attachment=='1'){
196
  html_option += 'Specific attachment<br/>';
197
  base_price += parseFloat(textmaster_pricing['types'][ctype]['specific_attachment']);
239
  $(v).text(label_expertises[i]+' +'+formatCurrency(price,priceFormat)+''+currency_symbol+'');
240
  }
241
  });
242
+ $.each(translation_memories,function(i,v){
243
+ if($(v).attr('value')!='0'){
244
+ price = translation_memory_price*word_count;
245
+ $(v).text(label_translation_memories[i]+' +'+formatCurrency(price,priceFormat)+''+currency_symbol+'');
246
+ }
247
+ });
248
  /*dataAuthor = {
249
  ctype : ctype,
250
  word_count : word_count,
279
 
280
  //updateDisplay();
281
 
282
+ $('input[id^=attribute_],#ctype,#specific_attachment,#priority,#quality,#expertise,#language_level,#store_id_translation,#translation_memory').change(function(){
283
  updateDisplay();
284
  });
285
  store_id = $('#store_id_origin').val();
424
  method: 'get',
425
  onSuccess: function(oXHR) {
426
  if(oXHR.responseText.substr(0,4) != 'http'){
427
+ console.log(oXHR.responseText);
428
+ if(oXHR.responseText == 'in_progress'){
429
+ html = '100% <span class="progress-cadre"><span class="progress" style="width:100%"></span></span>';
430
+ html += '<span class="message">'+message_loader_tm+'</span>';
431
+ }else{
432
+ html = oXHR.responseText+'%'+'<span class="progress-cadre"><span class="progress" style="width:'+oXHR.responseText+'%"></span></span>';
433
+ html += '<span class="message">'+nouveau_message_loader+'</span>';
434
+ }
435
  $('loading_mask_loader_message').update(html);
436
  if(!stop_ajax)
437
  documentSend(url);
446
  );
447
  }
448
 
 
449
  function showAuthors(url,title) {
450
  winCompare = new Window({url:url,title:title,width:680,minimizable:false,maximizable:false,showEffectOptions:{duration:0.4},hideEffectOptions:{duration:0.4}});
451
  winCompare.setZIndex(100);