summaryrefslogtreecommitdiff
path: root/modules/node/node.admin.inc
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2008-09-15 00:02:10 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2008-09-15 00:02:10 +0000
commit00756c87bc984bb3eccab79a58b8da33be99a801 (patch)
tree05389fbacdd6aa48c504bd22ee23643c4d3c83e0 /modules/node/node.admin.inc
parent63632564ad287c89fb3eda9de37e8552901ca43e (diff)
downloadbrdo-00756c87bc984bb3eccab79a58b8da33be99a801.tar.gz
brdo-00756c87bc984bb3eccab79a58b8da33be99a801.tar.bz2
#213151 by Pancho, skiquel, and deviantintegral: Make admin/content/node sortable.
Diffstat (limited to 'modules/node/node.admin.inc')
-rw-r--r--modules/node/node.admin.inc64
1 files changed, 43 insertions, 21 deletions
diff --git a/modules/node/node.admin.inc b/modules/node/node.admin.inc
index 6100a9193..c69c7894b 100644
--- a/modules/node/node.admin.inc
+++ b/modules/node/node.admin.inc
@@ -445,7 +445,7 @@ function node_admin_content($form_state) {
$form = node_filter_form();
$form['#theme'] = 'node_filter_form';
- $form['admin'] = node_admin_nodes();
+ $form['admin'] = node_admin_nodes();
return $form;
}
@@ -454,15 +454,35 @@ function node_admin_content($form_state) {
* Form builder: Builds the node administration overview.
*/
function node_admin_nodes() {
+ // Enable language column if translation module is enabled
+ // or if we have any node with language.
+ $multilanguage = (module_exists('translation') || db_result(db_query("SELECT COUNT(*) FROM {node} WHERE language != ''")));
+
+ // Build the sortable table header.
+ $header = array();
+ $header[] = theme('table_select_header_cell');
+ $header[] = array('data' => t('Title'), 'field' => 'n.title');
+ $header[] = array('data' => t('Type'), 'field' => 'n.type');
+ $header[] = array('data' => t('Author'), 'field' => 'u.name');
+ $header[] = array('data' => t('Status'), 'field' => 'n.status');
+ $header[] = array('data' => t('Updated'), 'field' => 'n.changed', 'sort' => 'desc');
+ if ($multilanguage) {
+ $header[] = array('data' => t('Language'), 'field' => 'n.language');
+ }
+ $header[] = array('data' => t('Operations'));
+
+ $form['header'] = array(
+ '#type' => 'value',
+ '#value' => $header,
+ );
+ // Build the query and load the nodes we want to display.
$filter = node_build_filter_query();
-
- $result = pager_query(db_rewrite_sql('SELECT n.*, u.name FROM {node} n ' . $filter['join'] . ' INNER JOIN {users} u ON n.uid = u.uid ' . $filter['where'] . ' ORDER BY n.changed DESC'), 50, 0, NULL, $filter['args']);
-
- // Enable language column if locale is enabled or if we have any node with language
- $count = db_result(db_query("SELECT COUNT(*) FROM {node} n WHERE language != ''"));
- $multilanguage = (module_exists('locale') || $count);
-
+
+ $sort = tablesort_sql($header, '', 'n.changed DESC');
+ $result = pager_query(db_rewrite_sql('SELECT n.*, u.name FROM {node} n '. $filter['join'] .' INNER JOIN {users} u ON n.uid = u.uid '. $filter['where'] . $sort), 50, 0, NULL, $filter['args']);
+
+ // Build the 'Update options' form.
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
@@ -494,12 +514,16 @@ function node_admin_nodes() {
$form['name'][$node->nid] = array('#markup' => check_plain(node_get_types('name', $node)));
$form['username'][$node->nid] = array('#markup' => theme('username', $node));
$form['status'][$node->nid] = array('#markup' => ($node->status ? t('published') : t('not published')));
+ $form['changed'][$node->nid] = array('#markup' => format_date($node->changed, 'small'));
if ($multilanguage) {
$form['language'][$node->nid] = array('#markup' => empty($node->language) ? t('Language neutral') : t($languages[$node->language]->name));
}
$form['operations'][$node->nid] = array('#markup' => l(t('edit'), 'node/' . $node->nid . '/edit', array('query' => $destination)));
}
- $form['nodes'] = array('#type' => 'checkboxes', '#options' => $nodes);
+ $form['nodes'] = array(
+ '#type' => 'checkboxes',
+ '#options' => $nodes,
+ );
$form['pager'] = array('#markup' => theme('pager', NULL, 50, 0));
$form['#theme'] = 'node_admin_nodes';
return $form;
@@ -554,19 +578,14 @@ function node_admin_nodes_submit($form, &$form_state) {
* @ingroup themeable
*/
function theme_node_admin_nodes($form) {
- // If there are rows in this form, then $form['title'] contains a list of
- // the title form elements.
- $has_posts = isset($form['title']) && is_array($form['title']);
- $select_header = $has_posts ? theme('table_select_header_cell') : '';
- $header = array($select_header, t('Title'), t('Type'), t('Author'), t('Status'));
- if (isset($form['language'])) {
- $header[] = t('Language');
- }
- $header[] = t('Operations');
$output = '';
-
$output .= drupal_render($form['options']);
+
+ $header = $form['header']['#value'];
+
+ $has_posts = isset($form['title']) && is_array($form['title']);
if ($has_posts) {
+ $rows = array();
foreach (element_children($form['title']) as $key) {
$row = array();
$row[] = drupal_render($form['nodes'][$key]);
@@ -574,19 +593,22 @@ function theme_node_admin_nodes($form) {
$row[] = drupal_render($form['name'][$key]);
$row[] = drupal_render($form['username'][$key]);
$row[] = drupal_render($form['status'][$key]);
+ $row[] = drupal_render($form['changed'][$key]);
if (isset($form['language'])) {
$row[] = drupal_render($form['language'][$key]);
}
$row[] = drupal_render($form['operations'][$key]);
$rows[] = $row;
}
-
}
else {
- $rows[] = array(array('data' => t('No posts available.'), 'colspan' => '6'));
+ $rows[] = array(
+ array('data' => t('No posts available.'), 'colspan' => count($header)),
+ );
}
$output .= theme('table', $header, $rows);
+
if ($form['pager']['#markup']) {
$output .= drupal_render($form['pager']);
}