menu.translation_table.inc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * @file
  4. * Translation table for the menu module.
  5. */
  6. /**
  7. * Implementation of hook_translation_table_data().
  8. */
  9. function menu_translation_table_data() {
  10. $items['menu'] = array(
  11. 'title' => 'Menu',
  12. 'description' => 'Edit menu translations',
  13. 'form' => 'menu_translation_table_menu_form',
  14. 'file' => 'modules/menu.translation_table.inc',
  15. );
  16. return $items;
  17. }
  18. /**
  19. * Menu callback; Admin form for menu translation.
  20. */
  21. function menu_translation_table_menu_form($form, &$form_state) {
  22. $languages_selected = isset($_SESSION['translation_table']['languages_selected']) ? $_SESSION['translation_table']['languages_selected'] : locale_language_list('name', FALSE);
  23. $form['filter'] = menu_translation_table_menu_filter($languages_selected);
  24. $form['filtered_form'] = menu_translation_table_menu_filtered_form($languages_selected);
  25. $form['#submit'][] = 'menu_translation_table_menu_form_submit';
  26. $form['#submit'][] = 'translation_table_submit_translations';
  27. return $form;
  28. }
  29. /**
  30. * Menu filter.
  31. */
  32. function menu_translation_table_menu_filter($languages_selected) {
  33. $form['languages_selected'] = array(
  34. '#type' => 'select',
  35. '#title' => t('Languages'),
  36. '#description' => t('Select the languages to display.'),
  37. '#options' => locale_language_list('name', TRUE),
  38. '#default_value' => array_keys($languages_selected),
  39. '#multiple' => TRUE,
  40. );
  41. $form['filter'] = array(
  42. '#type' => 'submit',
  43. '#value' => t('Filter'),
  44. );
  45. $form['#theme'] = 'translation_table_filter';
  46. return $form;
  47. }
  48. /**
  49. * Form for menu translation.
  50. * Note: If the menu string is not in the locales_source table, then it won't be
  51. * displayed.
  52. *
  53. * @param $languages
  54. * languages to translate to
  55. */
  56. function menu_translation_table_menu_filtered_form($languages) {
  57. $header = _translation_table_get_header($languages);
  58. $query = db_select('locales_source', 'ls');
  59. $query->fields('ls', array('lid', 'source', 'location'))
  60. ->extend('PagerDefault')
  61. ->extend('TableSort')
  62. ->condition('ls.textgroup', 'menu')
  63. ->orderByHeader($header)
  64. ->limit(50);
  65. $result = $query->execute();
  66. $form['strings']['#tree'] = TRUE;
  67. $form['#cache'] = FALSE;
  68. $form['header'] = array(
  69. '#type' => 'value',
  70. '#value' => $header,
  71. );
  72. while ($source = $result->fetch()) {
  73. if (strlen(trim($source->source)) > 0) {
  74. $form['strings'][$source->lid] = _translation_table_row($source, $languages);
  75. }
  76. }
  77. $form['languages'] = array(
  78. '#type' => 'value',
  79. '#value' => $languages,
  80. );
  81. $form['submit'] = array(
  82. '#type' => 'submit',
  83. '#value' => t('Save'),
  84. );
  85. $form['pager'] = array('#markup' => theme('pager'));
  86. $form['#theme'] = 'translation_table';
  87. return $form;
  88. }
  89. /**
  90. * Submit handler for the menu translation form.
  91. */
  92. function menu_translation_table_menu_form_submit($form, &$form_state) {
  93. switch ($form_state['triggering_element']['#id']) {
  94. case 'edit-filter--2':
  95. case 'edit-filter':
  96. case 'edit-submit':
  97. $_SESSION['translation_table']['languages_selected'] = array_intersect_key(locale_language_list('name', TRUE), $form_state['values']['languages_selected']);
  98. break;
  99. }
  100. }