quicktabs.translation_table.inc.d6 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. /**
  3. * @file
  4. * Translation table for the quicktabs module.
  5. */
  6. /**
  7. * Implementation of hook_translation_table_data().
  8. */
  9. function quicktabs_translation_table_data() {
  10. $items['quicktabs'] = array(
  11. 'title' => 'Quick Tabs',
  12. 'description' => 'Edit quick tabs translations',
  13. 'form' => 'quicktabs_translation_table_quicktabs_form',
  14. 'file' => 'modules/quicktabs.translation_table.inc',
  15. );
  16. return $items;
  17. }
  18. /**
  19. * Menu callback; Admin form for quicktabs translation.
  20. */
  21. function quicktabs_translation_table_quicktabs_form(&$form_state) {
  22. $languages_selected = isset($_SESSION['translation_table']['languages_selected']) ? $_SESSION['translation_table']['languages_selected'] : locale_language_list('name', FALSE);
  23. $qtid = isset($_SESSION['translation_table']['qtid']) ? $_SESSION['translation_table']['qtid'] : 0;
  24. $form['filter'] = quicktabs_translation_table_quicktabs_filter($languages_selected, $qtid);
  25. $form['filtered_form'] = quicktabs_translation_table_quicktabs_filtered_form($languages_selected, $qtid);
  26. $form['#submit'][] = 'quicktabs_translation_table_quicktabs_form_submit';
  27. $form['#submit'][] = 'translation_table_submit_translations';
  28. return $form;
  29. }
  30. /**
  31. * Quicktabs filter.
  32. */
  33. function quicktabs_translation_table_quicktabs_filter($languages_selected, $qtid) {
  34. $form['languages_selected'] = array(
  35. '#type' => 'select',
  36. '#title' => t('Languages'),
  37. '#description' => t('Select the languages to display.'),
  38. '#options' => locale_language_list('name', TRUE),
  39. '#default_value' => array_keys($languages_selected),
  40. '#multiple' => TRUE,
  41. );
  42. $options[0] = t('- Display all quicktabs -');
  43. $result = db_query('SELECT qtid, title FROM {quicktabs} ORDER BY title');
  44. while ($row = db_fetch_object($result)) {
  45. $options[$row->qtid] = check_plain($row->title);
  46. }
  47. $form['qtid'] = array(
  48. '#type' => 'select',
  49. '#title' => t('Quicktab'),
  50. '#description' => t('Select a quicktab.'),
  51. '#options' => $options,
  52. '#default_value' => $qtid,
  53. );
  54. $form['filter'] = array(
  55. '#type' => 'submit',
  56. '#value' => t('Filter'),
  57. );
  58. $form['#theme'] = 'translation_table_filter';
  59. return $form;
  60. }
  61. /**
  62. * Form for quicktabs translation.
  63. *
  64. * @param $languages
  65. * languages to translate to
  66. */
  67. function quicktabs_translation_table_quicktabs_filtered_form($languages, $qtid) {
  68. $header = _translation_table_get_header($languages);
  69. switch ($qtid) {
  70. case 0:
  71. $sql = "SELECT ls.lid, ls.source, ls.location FROM {locales_source} ls WHERE ls.textgroup = 'quicktabs'";
  72. $sql .= tablesort_sql($header);
  73. $result = pager_query($sql, 50, 0);
  74. break;
  75. default:
  76. $sql = "SELECT ls.lid, ls.source, ls.location FROM {locales_source} ls WHERE ls.textgroup = 'quicktabs' AND ls.location LIKE 'tab:%s--%'";
  77. $sql .= tablesort_sql($header);
  78. $result = pager_query($sql, 50, 0, NULL, $qtid);
  79. break;
  80. }
  81. $form['strings']['#tree'] = TRUE;
  82. $form['#cache'] = TRUE;
  83. $form['header'] = array(
  84. '#type' => 'value',
  85. '#value' => $header,
  86. );
  87. while ($source = db_fetch_object($result)) {
  88. if (strlen(trim($source->source)) > 0) {
  89. $form['strings'][$source->lid] = _translation_table_row($source, $languages);
  90. }
  91. }
  92. $form['languages'] = array(
  93. '#type' => 'value',
  94. '#value' => $languages,
  95. );
  96. $form['submit'] = array(
  97. '#type' => 'submit',
  98. '#value' => t('Save'),
  99. );
  100. $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
  101. $form['#theme'] = 'translation_table';
  102. return $form;
  103. }
  104. /**
  105. * Submit handler for the quicktabs translation form.
  106. */
  107. function quicktabs_translation_table_quicktabs_form_submit($form, &$form_state) {
  108. switch ($form_state['clicked_button']['#id']) {
  109. case 'edit-filter':
  110. case 'edit-submit':
  111. $_SESSION['translation_table']['qtid'] = $form_state['values']['qtid'];
  112. $_SESSION['translation_table']['languages_selected'] = array_intersect_key(locale_language_list('name', TRUE), $form_state['values']['languages_selected']);
  113. break;
  114. }
  115. }