$view = new stdClass();
$view->name = 'tracker/tracker';
$view->description = 'Shows all new activity on system.';
- $view->title = 'recent posts';
+ $view->title = 'recent posts for %1';
+ $view->menu_title = 'recent posts for %i';
$view->use_pager = '1';
$view->nodes_per_page = '25';
$view->nodes_per_block = '10';
array (
'type' => 'uid',
'argdefault' => '2',
+ 'title' => 'recent posts for all users',
),
);
$view->filter = array (
'callback' => 'views_view_page',
'access' => user_access('access content'),
'type' => MENU_CALLBACK);
- $result = db_query("SELECT name, title FROM {view_view} WHERE url = 3");
+ $result = db_query("SELECT name, title, menu_title FROM {view_view} WHERE url = 3");
while ($view = db_fetch_object($result)) {
+ $title = ($view->menu_title ? $view->menu_title : $view->title);
$items[] = array('path' => "views/$view->name",
- 'title' => $view->title,
+ 'title' => $title,
'callback' => 'views_view_page',
'callback arguments' => array($view->name),
'access' => user_access('access content'),
'#options' => _views_urls(),
'#description' => t('Choose whether or not to provide a URL and a Menu entry for this view..'),
);
+$form['url-info']['menu_title'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Menu Title'),
+ '#default_value' => $view->menu_title,
+ '#size' => 60,
+ '#maxlength' => 255,
+ '#description' => t('If URL with Menu Entry, this title will be used for the menu; if black Title will be used instead.'),
+);
$form['url-info']['use_pager'] = array(
'#type' => 'checkbox',
'#title' => t('Use Pager'),
);
$form['argument'][$i]['argdefault'] = array(
'#type' => 'select',
-// '#title' => t("Argument $i Default"),
'#default_value' => $argument['argdefault'],
'#options' => _views_get_arguments_default(),
);
+ $form['argument'][$i]['title'] = array(
+ '#type' => 'textfield',
+ '#default_value' => $argument['title'],
+ '#size' => 10,
+ '#maxlength' => 255,
+ );
$form['argument'][$i]['delete'] = array(
'#type' => 'button',
'#name' => "edit[argument][$i][op]",
'#options' => _views_get_arguments_default(),
// '#description' => t('What action to take if the argument is not given in URL.'),
);
+ $form['add']['argument']['title'] = array(
+ '#type' => 'textfield',
+ '#default_value' => $argument['title'],
+ '#size' => 10,
+ '#maxlength' => 255,
+ );
$form['add']['argbutton'] = array(
'#type' => 'button',
'#value' => t("Add Argument"),
$rows[] = array(
form_render($form['argument'][$i]['type']),
form_render($form['argument'][$i]['argdefault']),
+ form_render($form['argument'][$i]['title']),
form_render($form['argument'][$i]['delete']),
form_render($form['argument'][$i]['up']),
form_render($form['argument'][$i]['down']),
if (!$rows)
$rows[] = array(array('data' => "This view currently has no arguments defined.", 'colspan' => 3));
- $group .= theme('table', array('Argument Type', 'Default', array(data =>'Ops', colspan=>'6')), $rows);
+ $group .= theme('table', array(t('Argument Type'), t('Default'), t('Title'), array(data =>'Ops', colspan=>'6')), $rows);
$rows = array(
array(
form_render($form['add']['argument']['type']),
form_render($form['add']['argument']['argdefault']),
+ form_render($form['add']['argument']['title']),
form_render($form['add']['argbutton']),
)
);
$group .= "<br/>";
- $group .= theme('table', array(t('Add Argument'), array('data' => t('Default'), 'colspan' => 3)), $rows);
+ $group .= theme('table', array(t('Add Argument'), t('Default'), array('data' => t('Title'), 'colspan' => 3)), $rows);
$group .= "<p>Arguments are parsed directly from the URL. They are not necessary to any given view, but allow flexibility.</p>";
$output .= theme('fieldset', array('#title' => t('Arguments'), '#children' => $group));
$group = "";
if ($view->url == 1)
return drupal_not_found();
- // Done before theming so theme can change it if it wants.
- drupal_set_title($view->title);
-
$output = views_view('page', $view, $args);
// print theme('page', $output);
return $output;
_views_view_build_filters($query, $view);
// Process arguments.
+ $view->args = $args; // we'll need these later.
+
foreach ($view->argument as $i => $argument) {
if ($args[$i] != NULL && $args[$i] != '') {
_views_view_build_arg($query, $args[$i], $argument['type']);
}
+function _views_get_title($view) {
+ $count = count($view->args);
+ if ($count >= count($view->argument)) {
+ $title = $view->title;
+ }
+ else {
+ $title = $view->argument[$count]['title'];
+ }
+ $arginfo = _views_get_arguments();
+ foreach ($view->argument as $i => $arg) {
+ if (function_exists($arginfo['handler'][$arg['type']])) {
+ // call the handler
+ $rep = $arginfo['handler'][$arg['type']]('title', $view->args[$i], $arg['type']);
+ $title = str_replace("%" . ($i + 1), $rep, $title);
+ }
+ }
+ return $title;
+}
+
function _views_view_build_arg(&$query, $arg, $argtype) {
$arginfo = _views_get_arguments();
if (!function_exists($arginfo['handler'][$argtype]))
// Database functions
function _views_view_fields() {
- return array('vid', 'name', 'description', 'title', 'header', 'header_format', 'use_pager', 'nodes_per_page', 'nodes_per_block', 'block_display_header', 'type', 'block', 'url', 'changed', 'sql', 'countsql');
+ return array('vid', 'name', 'description', 'title', 'header', 'header_format', 'use_pager', 'nodes_per_page', 'menu_title', 'nodes_per_block', 'block_display_header', 'type', 'block', 'url', 'changed', 'sql', 'countsql');
}
function _views_delete_view($view) {
}
foreach ($view->argument as $i => $arg) {
- db_query("INSERT INTO {view_argument} (vid, type, argdefault, position) VALUES ($view->vid, '$arg[type]', '$arg[argdefault]', $i)");
+ db_query("INSERT INTO {view_argument} (vid, type, argdefault, title, position) VALUES ($view->vid, '$arg[type]', '$arg[argdefault]', '$arg[title]', $i)");
}
foreach ($view->field as $i => $arg) {
function theme_views_view($view, $type, $nodes) {
+ if ($type == 'page')
+ // Done before theming so theme can change it if it wants.
+ drupal_set_title(_views_get_title($view));
+
if ($view->header)
$output = "<div class='view-header' id='view-header-$view->name'>" . check_markup($view->header, $view->header_format, false) . "</div>\n";
break;
case 'link':
return l($query->type, "views/$arg/$query->type");
+ case 'title':
+ return $query;
}
}
case 'link':
$name = ($query->name ? $query->name : variable_get('anonymous', 'Anonymous'));
return l($name, "views/$arg/" . intval($query->uid));
+ case 'title':
+ $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query));
+ return $user->name;
}
}
case 'link':
$name = ($query->name ? $query->name : t("Uncategorized"));
return l($name, "views/$arg/" . intval($query->tid));
+ case 'title':
+ $term = db_fetch_object(db_query("SELECT name FROM {term_data} WHERE tid = '%d'", $query));
+ return $term->name;
}
}
function views_handler_arg_year($op, &$query, $argtype, $arg = '') {
break;
case 'link':
return l($query->year, "views/$arg/$query->year");
+ case 'title':
+ return $query;
}
}
function views_handler_arg_month($op, &$query, $argtype, $arg = '') {
break;
case 'link':
return l(format_date($query->created, 'custom', 'F'), "views/$arg/$query->name");
+ case 'title':
+ return format_date(strtotime("2005${query}01"), 'custom', 'F');
}
}
function views_handler_arg_week($op, &$query, $argtype, $arg = '') {
break;
case 'link':
return l("Week $query->name", "views/$arg/$query->name");
+ case 'title':
+ return $query;
}
}
function views_handler_arg_monthyear($op, &$query, $argtype, $arg = '') {
break;
case 'link':
return l(format_date($query->created, 'custom', 'F, Y'), "views/$arg/$query->name");
+ case 'title':
+ return format_date(strtotime("${query}01"), 'custom', 'F, Y');
}
}
function views_handler_arg_fulldate($op, &$query, $argtype, $arg = '') {
break;
case 'link':
return l(format_date($query->created, 'custom', 'F j, Y'), "views/$arg/$query->name");
+ case 'title':
+ return format_date(strtotime($query), 'custom', 'F j, Y');
}
}