'block', 'description' => 'Edit block translations', 'form' => 'block_translation_table_block_form', 'file' => 'modules/block.translation_table.inc', ); return $items; } /** * Menu callback; Admin form for block translation. */ function block_translation_table_block_form(&$form_state) { $languages_selected = isset($_SESSION['translation_table']['languages_selected']) ? $_SESSION['translation_table']['languages_selected'] : locale_language_list('name', FALSE); $form['filter'] = block_translation_table_block_filter($languages_selected); $form['filtered_form'] = block_translation_table_block_filtered_form($languages_selected); $form['#submit'][] = 'block_translation_table_block_form_submit'; $form['#submit'][] = 'translation_table_submit_translations'; return $form; } /** * block filter. */ function block_translation_table_block_filter($languages_selected) { $form['languages_selected'] = array( '#type' => 'select', '#title' => t('Languages'), '#description' => t('Select the languages to display.'), '#options' => locale_language_list('name', TRUE), '#default_value' => array_keys($languages_selected), '#multiple' => TRUE, ); $form['filter'] = array( '#type' => 'submit', '#value' => t('Filter'), ); $form['#theme'] = 'translation_table_filter'; return $form; } /** * Form for block translation. * Note: If the block string is not in the locales_source table, then it won't be * displayed. * * @param $languages * languages to translate to */ function block_translation_table_block_filtered_form($languages) { $header = _translation_table_get_header($languages); $sql = "SELECT ls.lid, ls.source, ls.location FROM {locales_source} ls WHERE ls.textgroup = 'blocks'"; $sql .= tablesort_sql($header); $form['strings']['#tree'] = TRUE; $form['#cache'] = TRUE; $form['header'] = array( '#type' => 'value', '#value' => $header, ); $result = pager_query($sql, 50, 0); while ($source = db_fetch_object($result)) { if (strlen(trim($source->source)) > 0) { $form['strings'][$source->lid] = _translation_table_row($source, $languages); } } $form['languages'] = array( '#type' => 'value', '#value' => $languages, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Save'), ); $form['pager'] = array('#value' => theme('pager', NULL, 50, 0)); $form['#theme'] = 'translation_table'; return $form; } /** * Submit handler for the block translation form. */ function block_translation_table_block_form_submit($form, &$form_state) { switch ($form_state['clicked_button']['#id']) { case 'edit-filter': case 'edit-submit': $_SESSION['translation_table']['languages_selected'] = array_intersect_key(locale_language_list('name', TRUE), $form_state['values']['languages_selected']); break; } }