function workbench_scheduler_admin_edit_revision_schedule in Workbench Scheduler 7
Same name and namespace in other branches
- 7.2 workbench_scheduler.admin.inc \workbench_scheduler_admin_edit_revision_schedule()
Form to edit the schedule for an existing node revision.
1 string reference to 'workbench_scheduler_admin_edit_revision_schedule'
- workbench_scheduler_menu in ./
workbench_scheduler.module - Implements hook_menu().
File
- ./
workbench_scheduler.admin.inc, line 479 - Provides admin functions for Workbench Scheduler.
Code
function workbench_scheduler_admin_edit_revision_schedule($form, &$form_state, $node, $vid) {
$form['nid'] = array(
'#type' => 'hidden',
'#value' => $node->nid,
);
$form['vid'] = array(
'#type' => 'hidden',
'#value' => $vid,
);
$type_schedules = workbench_scheduler_load_type_schedules($node->type);
$schedule_options = array();
$schedule_options[] = array(
'label' => t('No Schedule'),
'start_state' => '',
'end_state' => '',
);
$moderation_states = workbench_scheduler_state_labels();
// Add each type schedule to the options array.
foreach ($type_schedules as $schedule) {
if (user_access('set any workbench schedule') || user_access('set workbench schedule for ' . $schedule->name)) {
$schedule_options[$schedule->sid] = array(
'label' => $schedule->label,
'start_state' => isset($moderation_states[$schedule->start_state]) ? $moderation_states[$schedule->start_state] : '',
'end_state' => isset($moderation_states[$schedule->end_state]) ? $moderation_states[$schedule->end_state] : '',
);
}
}
$form['workbench_scheduler_sid'] = array(
'#type' => 'tableselect',
'#title' => t('Select Schedule'),
'#description' => t('Select the schedule to use for this node.'),
'#options' => $schedule_options,
'#multiple' => FALSE,
'#header' => array(
'label' => t('Name'),
'start_state' => t('Start State'),
'end_state' => t('End State'),
),
);
// Dates.
$form['workbench_scheduler_start_date'] = array(
'#type' => 'date_popup',
'#date_format' => 'Y-m-d H:i',
'#title' => t('Start date'),
'#description' => t('Select the date to switch this node to the scheduled "start state".'),
);
$form['workbench_scheduler_end_date'] = array(
'#type' => 'date_popup',
'#date_format' => 'Y-m-d H:i',
'#title' => t('End date'),
'#description' => t('Select the date to switch this node to the scheduled "end state".'),
);
// Node only allow most recent revision schedule?
$type_settings = variable_get('workbench_scheduler_' . $node->type, array());
// Check if only process latest revision.
if (in_array('workbench_scheduler_limit_current_revision', $type_settings)) {
// Getting the latest revision.
$rev_list = node_revision_list($node);
$latest_vid = max(array_keys($rev_list));
// Is this vid not the most recent?
if ($latest_vid != $vid) {
$form['note'] = array(
'#type' => 'item',
'#title' => t('Note'),
'#markup' => t('THIS SCHEDULE WILL NOT BE RUN. This node type is set to run the schedule for only the most !link', array(
'!link' => l(t('recent revision'), 'node/' . $node->nid . '/manage_schedules/' . $latest_vid . '/edit'),
)),
);
}
}
// Add existing node schedule as defaults.
$node_schedule = workbench_scheduler_load_node_schedule($node->nid, $vid);
if ($node_schedule) {
$form['workbench_scheduler_sid']['#default_value'] = $node_schedule->sid;
if ($node_schedule->start_date) {
$start_date = format_date($node_schedule->start_date, 'custom', 'Y-m-d H:i:s');
$form['workbench_scheduler_start_date']['#default_value'] = $start_date;
}
if ($node_schedule->end_date) {
$end_date = format_date($node_schedule->end_date, 'custom', 'Y-m-d H:i:s');
$form['workbench_scheduler_end_date']['#default_value'] = $end_date;
}
}
$form['actions'] = array(
'#type' => 'actions',
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Update'),
'#validate' => array(
'workbench_scheduler_node_form_validate',
),
);
return $form;
}