? Localization server | drupal.org.html
? activity-token-trigger-integration.patch
? l10n_packager-drush.patch
? l10n_packager_drush.patch.txt
? metafile-builder.patch
? more-code-cleanup.patch
? newui_0.patch
? newui_0_1.patch
? newui_0_2.patch
? packager-timer.patch
? translate-cleanup.patch
Index: l10n_packager/l10n_packager.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/l10n_server/l10n_packager/Attic/l10n_packager.admin.inc,v
retrieving revision 1.1.2.4.2.1
diff -u -p -r1.1.2.4.2.1 l10n_packager.admin.inc
--- l10n_packager/l10n_packager.admin.inc	3 Feb 2010 09:22:28 -0000	1.1.2.4.2.1
+++ l10n_packager/l10n_packager.admin.inc	8 Feb 2010 17:39:49 -0000
@@ -24,6 +24,12 @@ function l10n_packager_settings_form() {
     // Create directory by default if possible.
     '#after_build' => array('l10n_packager_admin_check_directory'),
   );
+  $form['l10n_packager_update_url'] = array(
+    '#title' => t('Root URL for translation downloads'),
+    '#type' => 'textfield',
+    '#default_value' => variable_get('l10n_packager_update_url', file_create_url(l10n_packager_directory())),
+    '#description' => t('Root URL for the client to build file URLs and fetch updates. The public facing URL for the package directory defined above. Leave blank for not providing any.'),
+  );
   $form['l10n_packager_filepath'] = array(
     '#title' => t('Path structure for generated packages'),
     '#type' => 'textfield',
@@ -55,7 +61,12 @@ function l10n_packager_settings_form() {
     '#description' => t('Time interval for the translations to be automatically repackaged.'),
   );
 
-  return system_settings_form($form);
+  $form = system_settings_form($form);
+
+  // Rebuild metafile after submisson.
+  $form['#submit'][] = 'l10n_packager_export_metafile';
+  
+  return $form;
 }
 
 /**
Index: l10n_packager/l10n_packager.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/l10n_server/l10n_packager/Attic/l10n_packager.module,v
retrieving revision 1.1.2.4.2.2
diff -u -p -r1.1.2.4.2.2 l10n_packager.module
--- l10n_packager/l10n_packager.module	8 Feb 2010 16:51:49 -0000	1.1.2.4.2.2
+++ l10n_packager/l10n_packager.module	8 Feb 2010 17:39:49 -0000
@@ -27,6 +27,11 @@ define('L10N_PACKAGER_ERROR', 2);
 define('L10N_PACKAGER_FILEPATH', '%core/%project/%project-%release.%language.po');
 
 /**
+ * Packager API version.
+ */
+define('L10N_PACKAGER_API_VERSION', '1.1');
+
+/**
  * Implementation of hook_menu().
  */
 function l10n_packager_menu() {
@@ -110,30 +115,56 @@ function l10n_packager_form_alter(&$form
     'locale_languages_custom_form',
   );
   if (in_array($form_id, $languages_forms)) {
-    $form['#submit'][] = 'l10n_packager_export_language_list';
+    $form['#submit'][] = 'l10n_packager_export_metafile';
   }
 }
 
 /**
- * Export languages in a simple XML format for remote use.
+ * Export meta information in a simple XML format for remote use.
  */
-function l10n_packager_export_language_list() {
-  $languages = language_list('language', TRUE);
-  $xml = simplexml_load_string("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<languages></languages>");
+function l10n_packager_export_metafile() {
+  
+  // Start off with a root element of l10nserver.
+  $xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<l10n_server></l10n_server>");
 
-  foreach ($languages as $language) {
-    $item = $xml->addChild("language");
+  // Add version of this XML format.
+  $xml->addChild('version', L10N_PACKAGER_API_VERSION);
+  
+  // Add server meta information.
+  $server_url = url('', array('absolute' => TRUE));
+  $xml->addChild('name', variable_get('site_name', 'Drupal'));
+  $xml->addChild('link', $server_url);
+  if ($url = variable_get('l10n_packager_update_url', 0)) {
+    $xml->addChild('update_url', $url .'/'. variable_get('l10n_packager_filepath', L10N_PACKAGER_FILEPATH));
+  }
+  
+  // We also inform the client whether this server accepts remote string
+  // submissions so the client can auto-configure itself.
+  if (module_exists('l10n_remote')) {
+    $xml->addChild('l10n_remote', $server_url);
+  }
+  
+  // Add language list.
+  $languages = $xml->addChild('languages');
+  foreach (language_list('language', TRUE) as $language) {
+    $item = $languages->addChild('language');
     foreach (array('name', 'native', 'language') as $key) {
-      $item->addChild($key, $language->$key);
+      // Rename 'language' to 'code' to avoid tags with same names
+      // used on different levels for different reasons.
+      $item->addChild($key == 'language' ? 'code' : $key, $language->$key);
     }
   }
+  
+  // Export to static file.
   $xml_path = l10n_packager_directory();
   file_check_directory($xml_path, FILE_CREATE_DIRECTORY);
-  if ($xml->asXML($xml_path .'/languages.xml')) {
-    drupal_set_message(t('Languages XML exported.'));
+  $t_args = array('%file' => $xml_path .'/l10n_server.xml');
+  
+  if ($xml->asXML($xml_path .'/l10n_server.xml')) {
+    drupal_set_message(t('Server information XML exported to %file.', $t_args));
   }
   else {
-    drupal_set_message(t('Error when try export languages XML'), 'error');
+    drupal_set_message(t('Error when trying to export server info XML to %file.', $t_args), 'error');
   }
 }
 
