function uc_order_pane_callback in Ubercart 7.3
Builds and processes an order pane defined by hook_uc_order_pane().
Parameters
$op: The operation the pane is performing. Possible values are "view", "customer", "edit-form", "edit-theme" or "edit-process".
$order: The order being viewed or edited.
$form: The order's edit form. NULL for non-edit ops.
&$form_state: The form state array of the edit form. NULL for non-edit ops.
Return value
Varies according to the value of $op:
- view: A render array showing admin-visible order data.
- customer: A render array showing customer-visible order data.
- edit-form: $form with the pane grafted in.
- edit-theme: The rendered portion of the $form that the pane added.
- edit-process: An array of values to be modified on the order object, keyed by the object's property, or NULL to signify no change on the order object.
File
- uc_order/
uc_order.api.php, line 348 - Hooks provided by the Order module.
Code
function uc_order_pane_callback($op, $order, &$form = NULL, &$form_state = NULL) {
global $user;
switch ($op) {
case 'view':
$comments = uc_order_comments_load($order->order_id, TRUE);
return tapir_get_table('uc_op_admin_comments_view_table', $comments);
case 'edit-form':
$form['admin_comment_field'] = array(
'#type' => 'fieldset',
'#title' => t('Add an admin comment'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['admin_comment_field']['admin_comment'] = array(
'#type' => 'textarea',
'#description' => t('Admin comments are only seen by store administrators.'),
);
return $form;
case 'edit-theme':
$comments = uc_order_comments_load($form['order_id']['#value'], TRUE);
if (is_array($comments) && count($comments) > 0) {
foreach ($comments as $comment) {
$items[] = '[' . theme('uc_uid', array(
'uid' => $comment->uid,
)) . '] ' . filter_xss_admin($comment->message);
}
}
else {
$items = array(
t('No admin comments have been entered for this order.'),
);
}
$output = theme('item_list', array(
'items' => $items,
)) . drupal_render($form['admin_comment_field']);
return $output;
case 'edit-process':
if (!empty($order['admin_comment'])) {
uc_order_comment_save($order['order_id'], $user->uid, $order['admin_comment']);
}
return;
}
}