=== modified file 'misc/form.js' --- misc/form.js 2008-12-06 09:01:58 +0000 +++ misc/form.js 2009-01-21 13:48:50 +0000 @@ -10,3 +10,19 @@ Drupal.behaviors.multiselectSelector = { }); } }; + + +Drupal.behaviors.filterGuildelines = { + attach: function (context) { + // Automatically displays the guidelines of the selected input format. + $('.filter-guidelines:not(.filterGuidelines-processed)', context) + .addClass('filterGuidelines-processed') + .parents('.filter-wrapper').find('select.filter-list') + .bind('change', function() { + $(this).parents('.filter-wrapper') + .find('.filter-guidelines-item').hide() + .siblings('#filter-guidelines-' + this.value).show(); + }) + .change(); + } +}; === modified file 'modules/filter/filter.module' --- modules/filter/filter.module 2008-12-30 17:00:08 +0000 +++ modules/filter/filter.module 2009-01-21 13:58:00 +0000 @@ -60,6 +60,9 @@ function filter_theme() { 'filter_tips_more_info' => array( 'arguments' => array(), ), + 'filter_guidelines' => array( + 'arguments' => array('format' => NULL), + ), ); } @@ -481,45 +484,45 @@ function check_markup($text, $format = F function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents = array('format')) { $value = filter_resolve_format($value); $formats = filter_formats(); - - $extra = theme('filter_tips_more_info'); - - if (count($formats) > 1) { - $form = array( - '#type' => 'fieldset', - '#title' => t('Input format'), - '#collapsible' => TRUE, - '#collapsed' => TRUE, - '#weight' => $weight, - '#element_validate' => array('filter_form_validate'), - ); - // Multiple formats available: display radio buttons with tips. + + $form = array( + '#type' => 'fieldset', + '#weight' => $weight, + '#attributes' => array('class' => 'filter-wrapper'), + ); + + if ($formats_count = count($formats)) { foreach ($formats as $format) { - // Generate the parents as the autogenerator does, so we will have a - // unique id for each radio button. - $parents_for_id = array_merge($parents, array($format->format)); - $form[$format->format] = array( - '#type' => 'radio', - '#title' => $format->name, + $options[$format->format] = $format->name; + $guidelines[$format->format] = array('#markup' => theme('filter_guidelines', $format)); + } + $element_id = form_clean_id('edit-' . implode('-', $parents)); + if ($formats_count > 1) { + drupal_add_js('misc/form.js'); + $form['format'] = array( + '#type' => 'select', + '#title' => t('Formatting'), + '#options' => $options, '#default_value' => $value, - '#return_value' => $format->format, '#parents' => $parents, - '#description' => theme('filter_tips', _filter_tips($format->format, FALSE)), - '#id' => form_clean_id('edit-' . implode('-', $parents_for_id)), + '#id' => $element_id, + '#attributes' => array('class' => 'filter-list'), ); } + else { + $form['format'] = array( + '#type' => 'value', + '#value' => $value, + '#parents' => $parents, + '#id' => $element_id, + ); + $form['format_label'] = array( + '#markup' => 'Formatting: ' . "\n", + ); + } + $form['format_help'] = array('#markup' => '
'. theme('filter_tips_more_info', TRUE) .'
'); + $form['format_guidelines'] = array_merge($guidelines, array('#prefix' => '
', '#suffix' => '
')); } - else { - // Only one format available: use a hidden form item and only show tips. - $format = array_shift($formats); - $form[$format->format] = array('#type' => 'value', '#value' => $format->format, '#parents' => $parents); - $tips = _filter_tips(variable_get('filter_default_format', 1), FALSE); - $form['format']['guidelines'] = array( - '#title' => t('Formatting guidelines'), - '#markup' => theme('filter_tips', $tips, FALSE), - ); - } - $form[] = array('#markup' => $extra); return $form; } @@ -585,8 +588,23 @@ function _filter_tips($format, $long = F * * @ingroup themeable */ -function theme_filter_tips_more_info() { - return '

' . l(t('More information about formatting options'), 'filter/tips') . '

'; +function theme_filter_tips_more_info($icon = FALSE) { + if ($icon) { + $description = t('More information about formatting options'); + return l(theme('image', 'misc/help.png', $description, $description), 'filter/tips', array('html' => TRUE)); + } + else { + return '

'. l(t('More information about formatting options'), 'filter/tips') .'

'; + } +} + +/** + * Format guidelines for an input format. + * + * @ingroup themeable + */ +function theme_filter_guidelines($format) { + return '
'. theme('filter_tips', _filter_tips($format->format, FALSE)) .'
'; } /** === modified file 'modules/node/node.css' --- modules/node/node.css 2008-12-06 09:01:58 +0000 +++ modules/node/node.css 2009-01-21 13:48:50 +0000 @@ -42,3 +42,6 @@ td.revision-current { .terms-inline { display: inline; } +.filter-label { + font-weight: bold; +}