=== modified file 'includes/common.inc'
--- includes/common.inc 2009-03-30 05:13:45 +0000
+++ includes/common.inc 2009-04-11 13:12:51 +0000
@@ -3368,6 +3368,27 @@
}
}
+ // Add additional CSS and JavaScript files associated with this element.
+ foreach (array('css', 'js') as $kind) {
+ if (!empty($elements['#attached_' . $kind]) && is_array($elements['#attached_' . $kind])) {
+ foreach ($elements['#attached_' . $kind] as $data => $options) {
+ // If the value is not an array, it's a filename and passed as first
+ // (and only) argument.
+ if (!is_array($options)) {
+ $data = $options;
+ $options = NULL;
+ }
+ // If the key is a number, the key was not used for supplying $data,
+ // so $data is taken from the array.
+ if (is_numeric($data)) {
+ $data = $options['data'];
+ unset($options['data']);
+ }
+ call_user_func('drupal_add_' . $kind, $data, $options);
+ }
+ }
+ }
+
// Get the children of the element, sorted by weight.
$children = element_children($elements, TRUE);
@@ -3750,6 +3771,9 @@
'text_format_wrapper' => array(
'arguments' => array('element' => NULL),
),
+ 'vertical_tabs' => array(
+ 'arguments' => array('element' => NULL),
+ ),
);
}
=== modified file 'includes/form.inc'
--- includes/form.inc 2009-03-30 03:15:40 +0000
+++ includes/form.inc 2009-04-11 13:02:10 +0000
@@ -227,6 +227,7 @@
'method' => 'post',
'rerender' => TRUE,
'programmed' => FALSE,
+ 'groups' => array(),
);
}
@@ -286,6 +287,10 @@
// then process the form for rendering.
$form_state['input'] = array();
+ // Also clear out all group associations as these might be different
+ // when rerendering the form.
+ $form_state['groups'] = array();
+
// Do not call drupal_process_form(), since it would prevent the rebuilt form
// to submit.
$form = form_builder($form_id, $form, $form_state);
@@ -939,7 +944,8 @@
/**
* Walk through the structured form array, adding any required
* properties to each element and mapping the incoming $_POST
- * data to the proper elements.
+ * data to the proper elements. Also, execute any #process handlers
+ * attached to a specific element.
*
* @param $form_id
* A unique string identifying the form for validation, submission,
@@ -972,9 +978,22 @@
}
}
+ if (!isset($form['#id'])) {
+ $form['#id'] = form_clean_id('edit-' . implode('-', $form['#parents']));
+ }
if (isset($form['#input']) && $form['#input']) {
_form_builder_handle_input_element($form_id, $form, $form_state, $complete_form);
}
+ // Allow for elements to expand to multiple elements, e.g., radios,
+ // checkboxes and files.
+ if (isset($form['#process']) && !$form['#processed']) {
+ foreach ($form['#process'] as $process) {
+ if (drupal_function_exists($process)) {
+ $form = $process($form, $form_state, $complete_form);
+ }
+ }
+ $form['#processed'] = TRUE;
+ }
$form['#defaults_loaded'] = TRUE;
// We start off assuming all form elements are in the correct order.
@@ -1062,8 +1081,7 @@
/**
* Populate the #value and #name properties of input elements so they
- * can be processed and rendered. Also, execute any #process handlers
- * attached to a specific element.
+ * can be processed and rendered.
*/
function _form_builder_handle_input_element($form_id, &$form, &$form_state, $complete_form) {
if (!isset($form['#name'])) {
@@ -1080,9 +1098,6 @@
}
array_unshift($form['#parents'], $name);
}
- if (!isset($form['#id'])) {
- $form['#id'] = form_clean_id('edit-' . implode('-', $form['#parents']));
- }
if (!empty($form['#disabled'])) {
$form['#attributes']['disabled'] = 'disabled';
@@ -1151,16 +1166,6 @@
}
}
}
- // Allow for elements to expand to multiple elements, e.g., radios,
- // checkboxes and files.
- if (isset($form['#process']) && !$form['#processed']) {
- foreach ($form['#process'] as $process) {
- if (drupal_function_exists($process)) {
- $form = $process($form, isset($edit) ? $edit : NULL, $form_state, $complete_form);
- }
- }
- $form['#processed'] = TRUE;
- }
form_set_value($form, $form['#value'], $form_state);
}
@@ -1597,6 +1602,7 @@
$element['#attributes']['class'] .= ' collapsed';
}
}
+ $element['#attributes']['id'] = $element['#id'];
return '
\n";
}
@@ -2143,7 +2149,6 @@
* An associative array containing the properties and children of the
* tableselect element.
* Properties used: header, options, empty, js_select.
- *
* @return
* A themed HTML string representing the table.
*
@@ -2186,7 +2191,6 @@
* @param $element
* An associative array containing the properties and children of the
* tableselect element.
- *
* @return
* The processed element.
*/
@@ -2248,6 +2252,131 @@
}
/**
+ * Adds fieldsets to the specified group or adds group members to this
+ * fieldset.
+ *
+ * @param $element
+ * An associative array containing the properties and children of the
+ * fieldset.
+ * @param $form_state
+ * The $form_state array for the form this fieldset belongs to.
+ * @return
+ * The processed element.
+ */
+function form_process_fieldset(&$element, &$form_state) {
+ $parents = implode('][', $element['#parents']);
+
+ // Add this fieldset to a group if one is set and if it's not being
+ // added to itself.
+ if (isset($element['#group']) && $element['#group'] != $parents) {
+ if (isset($form_state['groups'][$element['#group']]) && !empty($form_state['groups'][$element['#group']]['#group_exists'])) {
+ // Trick drupal_render() into believing this has already been output.
+ // The group widget will rerender this later. It's only set to
+ // #printed if the group already exists. That way, we can be sure
+ // that the fieldset /will/ be rendered later.
+ $element['#printed'] = TRUE;
+ }
+
+ // Store a reference to this fieldset for the vertical tabs processing function.
+ $form_state['groups'][$element['#group']][] = &$element;
+ }
+
+ // Each fieldset can be a group itself and gets a reference to all
+ // elements in its group.
+ $form_state['groups'][$parents]['#group_exists'] = TRUE;
+ foreach (element_children($form_state['groups'][$parents]) as $key) {
+ $form_state['groups'][$parents][$key]['#printed'] = TRUE;
+ }
+ $element['#group_members'] = &$form_state['groups'][$parents];
+
+ // Contains form element summary functionalities.
+ drupal_add_js('misc/form.js', array('weight' => JS_LIBRARY + 1));
+
+ return $element;
+}
+
+/**
+ * Adds members of this group as actual elements for rendering.
+ *
+ * @param $element
+ * An associative array containing the properties and children of the
+ * fieldset.
+ * @return
+ * The modified element with all group members.
+ */
+function form_pre_render_fieldset($element) {
+ if (!empty($element['#group_members'])) {
+ // Add the group members to this fieldset for rendering purposes only.
+ foreach (element_children($element['#group_members']) as $key) {
+ // This was set in form_process_fieldset so that fieldsets which are
+ // added to groups are not rendered at their original location.
+ // drupal_render_children() will set this back to TRUE.
+ unset($element['#group_members'][$key]['#printed']);
+ $element[] = &$element['#group_members'][$key];
+ }
+
+ // Resort the element's children after the group members have been added.
+ $element['#sorted'] = FALSE;
+ }
+
+ return $element;
+}
+
+/**
+ * Creates a group formatted as vertical tabs.
+ *
+ * @param $element
+ * An associative array containing the properties and children of the
+ * fieldset.
+ * @param $form_state
+ * The $form_state array for the form this vertical tab widget belongs to.
+ * @return
+ * The processed element.
+ */
+function form_process_vertical_tabs($element, &$form_state) {
+ // To save us from modifying the existing element and changing its #type,
+ // a new form element is created as a child. The default #process hooks
+ // are called automatically by the form renderer and we don't have to do
+ // that manually.
+ $element['group'] = array(
+ '#type' => 'fieldset',
+ '#theme_wrapper' => '',
+ '#parents' => $element['#parents'],
+ );
+
+ // The JavaScript stores the currently selected tab in this hidden
+ // field so that the active tab can be restored the next time the
+ // form is rendered, e.g. on preview pages or when form validation
+ // fails.
+ $name = implode('__', $element['#parents']);
+ if (isset($form_state['values'][$name . '__active_tab'])) {
+ $element['#default_tab'] = $form_state['values'][$name . '__active_tab'];
+ }
+ $element[$name . '__active_tab'] = array(
+ '#type' => 'hidden',
+ '#default_value' => $element['#default_tab'],
+ '#attributes' => array('class' => 'vertical-tabs-active-tab'),
+ );
+
+ return $element;
+}
+
+/**
+ * Makes the element's children fieldsets be vertical tabs.
+ *
+ * @param $element
+ * An associative array containing the properties and children of the
+ * fieldset.
+ */
+function theme_vertical_tabs(&$element) {
+ // Add required JavaScript and Stylesheet.
+ drupal_add_js('misc/vertical-tabs.js', array('weight' => JS_DEFAULT - 1));
+ drupal_add_css('misc/vertical-tabs.css');
+
+ return '
' . $element['#children'] . '
';
+}
+
+/**
* Theme a form submit button.
*
* @ingroup themeable
=== modified file 'misc/collapse.js'
--- misc/collapse.js 2009-03-13 23:15:08 +0000
+++ misc/collapse.js 2009-04-11 12:43:11 +0000
@@ -60,6 +60,14 @@
fieldset.removeClass('collapsed');
}
+ var summary = $('');
+ fieldset.
+ bind('summaryUpdated', function() {
+ var text = $.trim(fieldset.getSummary());
+ summary.html(text ? ' (' + text + ')' : '');
+ })
+ .trigger('summaryUpdated');
+
// Turn the legend into a clickable link and wrap the contents of the fieldset
// in a div for easier animation
var text = this.innerHTML;
@@ -72,6 +80,7 @@
}
return false;
}))
+ .append(summary)
.after($('')
.append(fieldset.children(':not(legend):not(.action)')))
.addClass('collapse-processed');
=== modified file 'misc/form.js'
--- misc/form.js 2009-03-30 03:15:40 +0000
+++ misc/form.js 2009-04-11 12:43:11 +0000
@@ -1,6 +1,51 @@
// $Id: form.js,v 1.6 2009/03/30 03:15:40 webchick Exp $
(function($) {
+/**
+ * Retrieves the summary for the first element.
+ */
+$.fn.getSummary = function() {
+ var callback = this.data('summaryCallback');
+ return (this[0] && callback) ? $.trim(callback(this[0])) : '';
+};
+
+/**
+ * Sets the summary for all matched elements.
+ *
+ * @param callback
+ * Either a function that will be called each time the summary is
+ * retrieved or a string (which is returned each time).
+ */
+$.fn.setSummary = function(callback) {
+ var that = this;
+ if (typeof callback != 'function') {
+ var val = callback;
+ callback = function() { return val; };
+ }
+
+ return this
+ .data('summaryCallback', callback)
+ .unbind('formUpdated.summary')
+ .bind('formUpdated.summary', function() {
+ that.trigger('summaryUpdated');
+ })
+ .trigger('summaryUpdated');
+};
+
+/**
+ * Sends a 'formUpdated' event each time a form element is modified.
+ */
+Drupal.behaviors.formUpdated = {
+ attach: function(context) {
+ var events = 'change.formUpdated click.formUpdated blur.formUpdated keyup.formUpdated';
+ $(context)
+ .find(':select').andSelf().filter(':select')
+ .unbind(events).bind(events, function() {
+ $(this).trigger('formUpdated');
+ });
+ }
+};
+
Drupal.behaviors.multiselectSelector = {
attach: function(context, settings) {
// Automatically selects the right radio button in a multiselect control.
=== added file 'misc/vertical-tabs-rtl.css'
--- misc/vertical-tabs-rtl.css 1970-01-01 00:00:00 +0000
+++ misc/vertical-tabs-rtl.css 2009-04-11 12:43:11 +0000
@@ -0,0 +1,15 @@
+/* $Id */
+
+.vertical-tabs {
+ margin-left: 0;
+ margin-right: 15em;
+}
+.vertical-tabs-list {
+ margin-right: -15em;
+ right: 0;
+ float: right;
+}
+.vertical-tabs-list li.selected {
+ border-left-width: 0;
+ border-right-width: 1px;
+}
=== added file 'misc/vertical-tabs.css'
--- misc/vertical-tabs.css 1970-01-01 00:00:00 +0000
+++ misc/vertical-tabs.css 2009-04-11 12:43:11 +0000
@@ -0,0 +1,71 @@
+/* $Id */
+
+.vertical-tabs {
+ margin: 1em 0 1em 15em;
+ border: 1px solid #ccc;
+}
+.vertical-tabs-list {
+ width: 15em;
+ list-style: none;
+ list-style-image: none; /* IE6 */
+ border-top: 1px solid #ccc;
+ padding: 0;
+ position: relative; /* IE6 */
+ margin: -1px -100% -1px 0;
+ left: -15em;
+ float: left;
+}
+.vertical-tabs .vertical-tabs-panes fieldset.vertical-tabs-pane {
+ margin: 0 !important;
+ padding: 0 1em;
+ border: 0;
+}
+.vertical-tabs .vertical-tabs-panes fieldset.vertical-tabs-pane legend {
+ display: none;
+}
+
+/* Layout of each tab */
+.vertical-tabs-list li {
+ background: #eee;
+ border: 1px solid #ccc;
+ border-top: 0;
+ padding: 0;
+ margin: 0;
+ height: 1%;
+}
+.vertical-tabs-list li a {
+ display: block;
+ text-decoration: none;
+ padding: 0.5em 0.6em;
+ line-height: 1.3em;
+ height: 1%;
+}
+.vertical-tabs-list li a:focus {
+ position:relative;
+ z-index: 5;
+}
+.vertical-tabs-list li a:hover {
+ text-decoration: none;
+}
+.vertical-tabs-list li strong {
+ font-weight:normal;
+}
+.vertical-tabs-list li.selected {
+ background: #fff;
+ border-right-width: 0;
+ position: relative;
+}
+.vertical-tabs-list li.selected a:focus {
+ outline: 0;
+}
+.vertical-tabs-list li.selected strong {
+ font-weight: bold;
+ color: #000;
+}
+.vertical-tabs-list .summary {
+ display: block;
+}
+.vertical-tabs ul.vertical-tabs-list .summary {
+ line-height: normal;
+ margin-bottom: 0;
+}
=== added file 'misc/vertical-tabs.js'
--- misc/vertical-tabs.js 1970-01-01 00:00:00 +0000
+++ misc/vertical-tabs.js 2009-04-11 12:43:11 +0000
@@ -0,0 +1,118 @@
+// $Id$
+
+(function($) {
+
+/**
+ * Vertical Tabs.
+ *
+ * This script transforms a set of fieldsets into a stack of vertical
+ * tabs. Another tab pane can be selected by clicking on the respective
+ * tab.
+ *
+ * Each tab may have a summary which can be updated by another
+ * script. For that to work, each fieldset has an associated
+ * 'verticalTabCallback' (with jQuery.data() attached to the fieldset),
+ * which is called every time the user performs an update to a form
+ * element inside the tab pane.
+ */
+Drupal.behaviors.verticalTabs = {
+ attach: function(context) {
+ $('.vertical-tabs-panes:not(.vertical-tabs-processed)', context).each(function() {
+ var focusID = $(':hidden.vertical-tabs-active-tab', this).val();
+ var focus;
+ // Create the tab column.
+ var list = $('
');
+ $(this).wrap('').before(list);
+
+ // Transform each fieldset into a tab.
+ $('> fieldset', this).each(function(i) {
+ var tab = new Drupal.verticalTab({ title: $('> legend', this).text(), fieldset: $(this) });
+ list.append(tab.item);
+ $(this)
+ .removeClass('collapsible collapsed')
+ .addClass('vertical-tabs-pane')
+ .data('verticalTab', tab);
+ if (this.id == focusID) focus = $(this);
+ });
+
+ $('> li:first', list).addClass('first');
+ $('> li:last', list).addClass('last');
+
+ if (!focus) focus = $('> .vertical-tabs-pane:first', this);
+ focus.data('verticalTab').focus();
+ }).addClass('vertical-tabs-processed');
+ }
+};
+
+/**
+ * Vertical Tab
+ *
+ * @param settings
+ * An object with the following keys:
+ * - title: The name of the tab.
+ * - fieldset: The jQuery object of the fieldset that is the tab pane.
+ */
+Drupal.verticalTab = function(settings) {
+ var that = this;
+ $.extend(this, settings, Drupal.theme('verticalTab', settings));
+
+ this.link.click(function() {
+ that.focus();
+ return false;
+ });
+
+ this.fieldset
+ .bind('summaryUpdated', function() {
+ that.updateSummary();
+ })
+ .trigger('summaryUpdated');
+};
+
+Drupal.verticalTab.prototype = {
+ // Displays the tab's content pane.
+ focus: function() {
+ this.fieldset
+ .siblings('fieldset.vertical-tabs-pane')
+ .each(function() {
+ var tab = $(this).data('verticalTab');
+ tab.fieldset.hide();
+ tab.item.removeClass('selected');
+ })
+ .end()
+ .show()
+ .siblings(':hidden.vertical-tabs-active-tab')
+ .val(this.fieldset.attr('id'));
+ this.item.addClass('selected');
+ },
+
+ // Updates the tab's summary.
+ updateSummary: function() {
+ this.summary.html(this.fieldset.getSummary());
+ }
+};
+
+/**
+ * Theme function for a vertical tab.
+ *
+ * @param settings
+ * An object with the following keys:
+ * - title: The name of the tab.
+ * @return
+ * This function has to return an object with at least these keys:
+ * - item: The root tab jQuery element
+ * - link: The anchor tag that acts as the clickable area of the tab
+ * (jQuery version)
+ * - summary: The jQuery element that contains the tab summary
+ */
+Drupal.theme.prototype.verticalTab = function(settings) {
+ var tab = {};
+ tab.item = $('')
+ .append(tab.link = $('')
+ .append(tab.title = $('').text(settings.title))
+ .append(tab.summary = $('')
+ )
+ );
+ return tab;
+};
+
+})(jQuery);
=== modified file 'modules/book/book.css'
--- modules/book/book.css 2008-12-19 15:42:26 +0000
+++ modules/book/book.css 2009-04-11 12:43:11 +0000
@@ -35,6 +35,9 @@
margin-top: 0;
margin-bottom: 0;
}
+html.js #edit-book-pick-book {
+ display: none;
+}
#edit-book-bid-wrapper .description {
clear: both;
}
=== added file 'modules/book/book.js'
--- modules/book/book.js 1970-01-01 00:00:00 +0000
+++ modules/book/book.js 2009-04-11 12:43:11 +0000
@@ -0,0 +1,20 @@
+// $Id$
+
+(function($) {
+
+Drupal.behaviors.bookFieldsetSummaries = {
+ attach: function(context) {
+ $('fieldset#edit-book', context).setSummary(function (context) {
+ var val = $('#edit-book-bid').val();
+
+ if (val === '0')
+ return Drupal.t('Not in book');
+ else if (val === 'new')
+ return Drupal.t('New book');
+ else
+ return Drupal.checkPlain($('#edit-book-bid :selected').text());
+ });
+ }
+};
+
+})(jQuery);
=== modified file 'modules/book/book.module'
--- modules/book/book.module 2009-03-30 05:40:44 +0000
+++ modules/book/book.module 2009-04-11 12:43:11 +0000
@@ -415,7 +415,6 @@
function _book_add_form_elements(&$form, $node) {
// Need this for AJAX.
$form['#cache'] = TRUE;
- drupal_add_js("if (Drupal.jsEnabled) { jQuery(function() { jQuery('#edit-book-pick-book').css('display', 'none'); }); }", 'inline');
$form['book'] = array(
'#type' => 'fieldset',
@@ -423,6 +422,8 @@
'#weight' => 10,
'#collapsible' => TRUE,
'#collapsed' => TRUE,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'book') .'/book.js'),
'#tree' => TRUE,
'#attributes' => array('class' => 'book-outline-form'),
);
=== added file 'modules/comment/comment-node-form.js'
--- modules/comment/comment-node-form.js 1970-01-01 00:00:00 +0000
+++ modules/comment/comment-node-form.js 2009-04-11 12:43:11 +0000
@@ -0,0 +1,13 @@
+// $Id$
+
+(function($) {
+
+Drupal.behaviors.commentFieldsetSummaries = {
+ attach: function(context) {
+ $('fieldset#edit-comment-settings', context).setSummary(function (context) {
+ return Drupal.checkPlain($('input:checked', context).parent().text());
+ });
+ }
+};
+
+})(jQuery);
=== modified file 'modules/comment/comment.module'
--- modules/comment/comment.module 2009-04-04 12:35:16 +0000
+++ modules/comment/comment.module 2009-04-11 12:43:11 +0000
@@ -580,6 +580,8 @@
'#title' => t('Comment settings'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'comment') . '/comment-node-form.js'),
'#weight' => 30,
);
$comment_count = isset($node->nid) ? db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() : 0;
=== added file 'modules/menu/menu.js'
--- modules/menu/menu.js 1970-01-01 00:00:00 +0000
+++ modules/menu/menu.js 2009-04-11 12:43:11 +0000
@@ -0,0 +1,13 @@
+// $Id$
+
+(function($) {
+
+Drupal.behaviors.menuFieldsetSummaries = {
+ attach: function(context) {
+ $('fieldset#edit-menu', context).setSummary(function (context) {
+ return Drupal.checkPlain($('#edit-menu-link-title', context).val()) || Drupal.t('Not in menu');
+ });
+ }
+};
+
+})(jQuery);
=== modified file 'modules/menu/menu.module'
--- modules/menu/menu.module 2009-04-02 03:40:05 +0000
+++ modules/menu/menu.module 2009-04-11 13:01:56 +0000
@@ -395,6 +395,8 @@
'#access' => user_access('administer menu'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'menu') . '/menu.js'),
'#tree' => TRUE,
'#weight' => -2,
'#attributes' => array('class' => 'menu-item-form'),
=== added file 'modules/node/node.js'
--- modules/node/node.js 1970-01-01 00:00:00 +0000
+++ modules/node/node.js 2009-04-11 12:43:11 +0000
@@ -0,0 +1,35 @@
+// $Id$
+
+(function($) {
+
+Drupal.behaviors.nodeFieldsetSummaries = {
+ attach: function(context) {
+ $('fieldset#edit-revision-information', context).setSummary(function (context) {
+ return $('#edit-revision', context).is(':checked') ?
+ Drupal.t('New revision') :
+ Drupal.t("No revision");
+ });
+
+ $('fieldset#edit-author', context).setSummary(function (context) {
+ var name = $('#edit-name').val(), date = $('#edit-date').val();
+ return date ?
+ Drupal.t('By @name on @date', { '@name': name, '@date': date }) :
+ Drupal.t('By @name', { '@name': name });
+ });
+
+ $('fieldset#edit-options', context).setSummary(function (context) {
+ var vals = [];
+
+ $('input:checked', context).parent().each(function() {
+ vals.push(Drupal.checkPlain($.trim($(this).text())));
+ });
+
+ if (!$('#edit-status', context).is(':checked')) {
+ vals.unshift(Drupal.t('Not published'));
+ }
+ return vals.join(', ');
+ });
+ }
+};
+
+})(jQuery);
=== modified file 'modules/node/node.pages.inc'
--- modules/node/node.pages.inc 2009-03-26 13:31:24 +0000
+++ modules/node/node.pages.inc 2009-04-11 12:43:11 +0000
@@ -152,6 +152,10 @@
$form['#node'] = $node;
+ $form['additional_settings'] = array(
+ '#type' => 'vertical_tabs',
+ );
+
// Add a log field if the "Create new revision" option is checked, or if the
// current user has the ability to check that option.
if (!empty($node->revision) || user_access('administer nodes')) {
@@ -161,6 +165,8 @@
'#collapsible' => TRUE,
// Collapsed by default when "Create new revision" is unchecked
'#collapsed' => !$node->revision,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'node') . '/node.js'),
'#weight' => 20,
);
$form['revision_information']['revision'] = array(
@@ -172,7 +178,7 @@
$form['revision_information']['log'] = array(
'#type' => 'textarea',
'#title' => t('Revision log message'),
- '#rows' => 2,
+ '#rows' => 4,
'#description' => t('Provide an explanation of the changes you are making. This will help other authors understand your motivations.'),
);
}
@@ -184,6 +190,8 @@
'#title' => t('Authoring information'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'node') . '/node.js'),
'#weight' => 90,
);
$form['author']['name'] = array(
@@ -213,6 +221,8 @@
'#title' => t('Publishing options'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
+ '#group' => 'additional_settings',
+ '#attached_js' => array(drupal_get_path('module', 'node') . '/node.js'),
'#weight' => 95,
);
$form['options']['status'] = array(
@@ -283,7 +293,7 @@
$form = array(
'#after_build' => array('node_teaser_js', 'node_teaser_include_verify'));
- $form['#prefix'] = '