'. check_plain($arg1->delivery_phone);
return $output;
case 'edit-form':
$form['ship_to'] = array(
'#type' => 'fieldset',
'#title' => t("Modify 'Ship to' information"),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
if (uc_address_field_enabled('first_name')) {
$form['ship_to']['delivery_first_name'] = uc_textfield(uc_get_field_name('first_name'), $arg1->delivery_first_name, FALSE);
}
if (uc_address_field_enabled('last_name')) {
$form['ship_to']['delivery_last_name'] = uc_textfield(uc_get_field_name('last_name'), $arg1->delivery_last_name, FALSE);
}
if (uc_address_field_enabled('phone')) {
$form['ship_to']['delivery_phone'] = uc_textfield(uc_get_field_name('phone'), $arg1->delivery_phone, FALSE, NULL, 32, 16);
}
if (uc_address_field_enabled('company')) {
$form['ship_to']['delivery_company'] = uc_textfield(uc_get_field_name('company'), $arg1->delivery_company, FALSE, NULL, 64);
}
if (uc_address_field_enabled('street1')) {
$form['ship_to']['delivery_street1'] = uc_textfield(uc_get_field_name('street1'), $arg1->delivery_street1, FALSE, NULL, 64);
}
if (uc_address_field_enabled('street2')) {
$form['ship_to']['delivery_street2'] = uc_textfield(uc_get_field_name('street2'), $arg1->delivery_street2, FALSE, NULL, 64);
}
if (uc_address_field_enabled('city')) {
$form['ship_to']['delivery_city'] = uc_textfield(uc_get_field_name('city'), $arg1->delivery_city, FALSE);
}
if (uc_address_field_enabled('country')) {
$form['ship_to']['delivery_country'] = uc_country_select(uc_get_field_name('country'), $arg1->delivery_country);
}
if (uc_address_field_enabled('zone')) {
if (isset($_POST['delivery_country'])) {
$country_id = intval($_POST['delivery_country']);
}
else {
$country_id = $arg1->delivery_country;
}
$form['ship_to']['delivery_zone'] = uc_zone_select(uc_get_field_name('zone'), $arg1->delivery_zone, NULL, $country_id);
}
if (uc_address_field_enabled('postal_code')) {
$form['ship_to']['delivery_postal_code'] = uc_textfield(uc_get_field_name('postal_code'), $arg1->delivery_postal_code, FALSE, NULL, 10, 10);
}
return $form;
case 'edit-title':
$output .= ' ';
$output .= ' ';
return $output;
case 'edit-theme':
$output = '
';
foreach (element_children($arg1['ship_to']) as $field) {
$title = $arg1['ship_to'][$field]['#title'];
$arg1['ship_to'][$field]['#title'] = NULL;
$output .= ''. $title .': | '
. drupal_render($arg1['ship_to'][$field]) .' |
';
}
$output .= '
';
return $output;
case 'edit-process':
foreach ($arg1 as $key => $value) {
if (substr($key, 0, 9) == 'delivery_') {
if (uc_address_field_enabled(substr($key, 9))) {
$changes[$key] = $value;
}
}
}
return $changes;
}
}
/**
* Handle the "Bill to" order pane.
*/
function uc_order_pane_bill_to($op, $arg1) {
switch ($op) {
case 'view':
case 'customer':
$output = uc_order_address($arg1, 'billing') .'
'. check_plain($arg1->billing_phone);
return $output;
case 'edit-form':
$form['bill_to'] = array(
'#type' => 'fieldset',
'#title' => t("Modify 'Bill to' information"),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
if (uc_address_field_enabled('first_name')) {
$form['bill_to']['billing_first_name'] = uc_textfield(uc_get_field_name('first_name'), $arg1->billing_first_name, FALSE);
}
if (uc_address_field_enabled('last_name')) {
$form['bill_to']['billing_last_name'] = uc_textfield(uc_get_field_name('last_name'), $arg1->billing_last_name, FALSE);
}
if (uc_address_field_enabled('phone')) {
$form['bill_to']['billing_phone'] = uc_textfield(uc_get_field_name('phone'), $arg1->billing_phone, FALSE, NULL, 32, 16);
}
if (uc_address_field_enabled('company')) {
$form['bill_to']['billing_company'] = uc_textfield(uc_get_field_name('company'), $arg1->billing_company, FALSE, NULL, 64);
}
if (uc_address_field_enabled('street1')) {
$form['bill_to']['billing_street1'] = uc_textfield(uc_get_field_name('street1'), $arg1->billing_street1, FALSE, NULL, 64);
}
if (uc_address_field_enabled('street2')) {
$form['bill_to']['billing_street2'] = uc_textfield(uc_get_field_name('street2'), $arg1->billing_street2, FALSE, NULL, 64);
}
if (uc_address_field_enabled('city')) {
$form['bill_to']['billing_city'] = uc_textfield(uc_get_field_name('city'), $arg1->billing_city, FALSE);
}
if (uc_address_field_enabled('country')) {
$form['bill_to']['billing_country'] = uc_country_select(uc_get_field_name('country'), $arg1->billing_country);
}
if (uc_address_field_enabled('zone')) {
if (isset($_POST['billing_country'])) {
$country_id = intval($_POST['billing_country']);
}
else {
$country_id = $arg1->billing_country;
}
$form['bill_to']['billing_zone'] = uc_zone_select(uc_get_field_name('zone'), $arg1->billing_zone, NULL, $country_id);
}
if (uc_address_field_enabled('postal_code')) {
$form['bill_to']['billing_postal_code'] = uc_textfield(uc_get_field_name('postal_code'), $arg1->billing_postal_code, FALSE, NULL, 10, 10);
}
return $form;
case 'edit-title':
$output .= ' ';
$output .= ' ';
return $output;
case 'edit-theme':
$output = '';
foreach (element_children($arg1['bill_to']) as $field) {
$title = $arg1['bill_to'][$field]['#title'];
$arg1['bill_to'][$field]['#title'] = NULL;
$output .= ''. $title .': | '
. drupal_render($arg1['bill_to'][$field]) .' |
';
}
$output .= '
';
return $output;
case 'edit-process':
foreach ($arg1 as $key => $value) {
if (substr($key, 0, 8) == 'billing_') {
if (uc_address_field_enabled(substr($key, 8))) {
$changes[$key] = $value;
}
}
}
return $changes;
}
}
/**
* Handle the "Customer Info" order pane.
*/
function uc_order_pane_customer($op, $arg1) {
switch ($op) {
case 'view':
$output = t('Customer number: !user_link', array('!user_link' => $arg1->uid ? l($arg1->uid, 'user/'. $arg1->uid) : '0'))
.'
'. t('Primary e-mail:') .'
'
. check_plain($arg1->primary_email);
return $output;
case 'edit-form':
$form['customer'] = array(
'#type' => 'fieldset',
'#title' => t("Modify 'Customer info'"),
'#collapsible' => TRUE,
'#collapsed' => FALSE
);
$form['customer']['uid'] = array(
'#type' => 'hidden',
'#default_value' => $arg1->uid,
);
$form['customer']['text']['uid_text'] = array(
'#type' => 'textfield',
'#title' => t('Customer number'),
'#default_value' => $arg1->uid,
'#maxlength' => 10,
'#size' => 10,
'#disabled' => TRUE,
);
$form['customer']['primary_email'] = array(
'#type' => 'hidden',
'#default_value' => $arg1->primary_email,
);
$form['customer']['text']['primary_email_text'] = array(
'#type' => 'textfield',
'#title' => t('Primary e-mail'),
'#default_value' => $arg1->primary_email,
'#maxlength' => 64,
'#size' => 32,
'#disabled' => TRUE,
);
return $form;
case 'edit-title':
$output .= ' ';
$output .= ' ';
return $output;
case 'edit-theme':
$output = '';
foreach (element_children($arg1['customer']['text']) as $field) {
$title = $arg1['customer']['text'][$field]['#title'];
$arg1['customer']['text'][$field]['#title'] = NULL;
$output .= ''. $title .': | '
. drupal_render($arg1['customer']['text'][$field]) .' |
';
}
$output .= '
'. drupal_render($arg1['customer']['primary_email'])
. drupal_render($arg1['customer']['uid']);
return $output;
case 'edit-process':
$changes['uid'] = $arg1['uid'];
$changes['primary_email'] = $arg1['primary_email'];
return $changes;
}
}
/**
* Handle the "Products" order pane.
*/
function uc_order_pane_products($op, $arg1) {
switch ($op) {
case 'view':
return drupal_render(tapir_get_table('op_products_view_table', $arg1));
case 'customer':
return drupal_render(tapir_get_table('op_products_customer_table', $arg1));
case 'edit-theme':
drupal_add_js('uc_order_load_product_edit_div('. $arg1['order_id']['#value'] .');', 'inline');
$output = ''
.''. t('Loading product information... (If nothing happens, make sure you have Javascript enabled.)') .'
';
return $output;
case 'edit-title':
$settings = array(
'div' => '#products-selector',
'class' => 'product-select-box',
'vid' => variable_get('uc_catalog_vid', 0),
'filter' => implode(',', uc_product_types()),
'search' => 'true',
'nids' => 'true',
'close' => 'true',
'nodesg' => 'product',
'nodepl' => 'products',
'select' => 'add_product_form();',
);
$output = '';
$output .= '';
$output .= ' ';
return $output;
}
}
/**
* Handle the "Line Items" order pane.
*/
function uc_order_pane_line_items($op, $arg1) {
switch ($op) {
case 'view':
case 'customer':
$line_items = $arg1->line_items;
$items = _line_item_list();
foreach ($items as $item) {
if (isset($item['display_only']) && $item['display_only'] == TRUE) {
$result = $item['callback']('display', $arg1);
if (is_array($result)) {
foreach ($result as $line) {
$line_items[] = array(
'title' => $line['title'],
'amount' => $line['amount'],
'weight' => $item['weight']
);
}
}
}
}
usort($line_items, 'uc_weight_sort');
$context = array(
'revision' => 'themed',
'type' => 'line_item',
'subject' => array(
'order' => $arg1,
),
);
$output = '';
foreach ($line_items as $item) {
$context['subject']['line_item'] = $item;
$output .= ''. check_plain($item['title']) .': | '
.''
. uc_price($item['amount'], $context) .' |
';
}
$output .= '
';
return $output;
case 'show-title':
return FALSE;
case 'edit-form':
$options = array();
$items = _line_item_list();
$line_items = $arg1->line_items;
foreach ($items as $item) {
if ($item['add_list'] === TRUE) {
$options[$item['id']] = check_plain($item['title']);
}
if (isset($item['display_only']) && $item['display_only'] == TRUE) {
$result = $item['callback']('display', $arg1);
if (is_array($result)) {
foreach ($result as $line) {
$line_items[] = array(
'line_item_id' => $line['id'],
'title' => $line['title'],
'amount' => $line['amount'],
'weight' => $item['weight'],
);
}
}
}
}
usort($line_items, 'uc_weight_sort');
$form['add_line_item'] = array(
'#type' => 'fieldset',
'#title' => t('Add line item'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$form['add_line_item']['li_type_select'] = array(
'#type' => 'select',
'#title' => t('Select a type'),
'#options' => $options,
);
$form['add_line_item']['submit'] = array(
'#type' => 'submit',
'#value' => t('Add line'),
'#attributes' => array('class' => 'save-button'),
'#disabled' => TRUE,
);
$form['li_delete_id'] = array(
'#type' => 'hidden',
);
$form['line_items'] = array(
'#type' => 'fieldset',
'#title' => t("Modify 'line items'"),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#tree' => TRUE,
);
$context = array(
'revision' => 'themed',
'type' => 'line_item',
'subject' => array(
'order' => $arg1,
),
);
foreach ($line_items as $item) {
$form['line_items'][$item['line_item_id']]['li_id'] = array(
'#type' => 'hidden',
'#value' => $item['line_item_id'],
);
if (_line_item_data($item['type'], 'stored') == TRUE) {
$form['line_items'][$item['line_item_id']]['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#default_value' => $item['title'],
'#size' => 40,
'#maxlength' => 128,
'#prefix' => '',
);
$form['line_items'][$item['line_item_id']]['amount'] = array(
'#type' => 'textfield',
'#title' => t('Amount'),
'#default_value' => uc_store_format_price_field_value($item['amount']),
'#size' => 6,
'#maxlength' => 13,
'#field_prefix' => variable_get('uc_sign_after_amount', FALSE) ? '' : variable_get('uc_currency_sign', '$'),
'#field_suffix' => variable_get('uc_sign_after_amount', FALSE) ? variable_get('uc_currency_sign', '$') : '',
);
}
else {
$context['subject']['line_item'] = $item;
$form['line_items'][$item['line_item_id']]['title'] = array(
'#value' => check_plain($item['title']),
);
$form['line_items'][$item['line_item_id']]['amount'] = array(
'#value' => uc_price($item['amount'], $context),
);
}
}
return $form;
case 'edit-theme':
$arg1['add_line_item']['li_type_select']['#title'] = '';
$output = '';
$output .= ''. t('Add a line item')
.': | '. drupal_render($arg1['add_line_item']['li_type_select'])
.' | '. drupal_render($arg1['add_line_item']['submit'])
.' | ';
$output .= ' | '. drupal_render($arg1['li_delete_id'])
.'';
foreach (element_children($arg1['line_items']) as $field) {
$arg1['line_items'][$field]['title']['#title'] = '';
$arg1['line_items'][$field]['amount']['#title'] = '';
$output .= ''
. drupal_render($arg1['line_items'][$field]['li_id'])
. drupal_render($arg1['line_items'][$field]['title'])
.': | '
. drupal_render($arg1['line_items'][$field]['amount'])
.' | ';
}
$output .= ' |
';
return $output;
case 'edit-process':
if (is_array($arg1['line_items'])) {
foreach ($arg1['line_items'] as $line) {
if (is_numeric($line['li_id']) && intval($line['li_id']) > 0) {
uc_order_update_line_item($line['li_id'], $line['title'], $line['amount']);
}
}
}
if (intval($arg1['li_delete_id']) > 0) {
uc_order_delete_line_item($arg1['li_delete_id']);
drupal_set_message(t('Line item removed.'));
}
return;
case 'edit-ops':
return array(t('Add line'));
case t('Add line'):
drupal_goto('admin/store/orders/'. $arg1['order_id']
.'/add_line_item/'. $arg1['li_type_select']);
}
}
/**
* Handle the "Order Comments" order pane.
*/
function uc_order_pane_order_comments($op, $arg1) {
switch ($op) {
case 'view':
$comments = uc_order_comments_load($arg1->order_id);
return drupal_render(tapir_get_table('op_order_comments_view_table', $comments));
case 'customer':
$comments = uc_order_comments_load($arg1->order_id);
$header = array(t('Date'), t('Status'), array('data' => t('Message'), 'width' => '100%'));
$rows[] = array(
format_date($arg1->created, 'custom', variable_get('uc_date_format_default', 'm/d/Y')),
array('data' => '-', 'align' => 'center'),
t('Order created.')
);
if (count($comments) > 0) {
foreach ($comments as $comment) {
$rows[] = array(
'data' => array(
array('data' => format_date($comment->created, 'custom', variable_get('uc_date_format_default', 'm/d/Y')), 'align' => 'center'),
array('data' => $comment->title, 'align' => 'center', 'nowrap' => 'nowrap'),
check_plain($comment->message),
),
'valign' => 'top'
);
}
}
$output = theme('table', $header, $rows);
return $output;
}
}
/**
* Handle the "Admin Comments" order pane.
*/
function uc_order_pane_admin_comments($op, $arg1) {
switch ($op) {
case 'view':
$comments = uc_order_comments_load($arg1->order_id, TRUE);
return drupal_render(tapir_get_table('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($arg1['order_id']['#value'], TRUE);
if (is_array($comments) && count($comments) > 0) {
foreach ($comments as $comment) {
$items[] = '['. uc_get_initials($comment->uid) .'] '. filter_xss_admin($comment->message);
}
}
else {
$items = array(t('No admin comments have been entered for this order.'));
}
$output = theme('item_list', $items) . drupal_render($arg1['admin_comment_field']);
return $output;
case 'edit-process':
if (!is_null($arg1['admin_comment']) && strlen(trim($arg1['admin_comment'])) > 0) {
global $user;
uc_order_comment_save($arg1['order_id'], $user->uid, $arg1['admin_comment']);
}
return;
}
}
/**
* Handle the "Update" order pane.
*/
function uc_order_pane_update($op, $arg1) {
switch ($op) {
case 'view':
return drupal_get_form('uc_order_view_update_form', $arg1);
}
}
/**
* Form to save order comments and update the order status.
*
* @ingroup forms
* @see
* theme_uc_order_view_update_controls()
* uc_order_view_update_form_submit()
*/
function uc_order_view_update_form($form_state, $order) {
$form['order_comment_field'] = array(
'#type' => 'fieldset',
'#title' => t('Add an order comment'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['order_comment_field']['order_comment'] = array(
'#type' => 'textarea',
'#description' => t('Order comments are used primarily to communicate with the customer.'),
);
$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.'),
);
$form['current_status'] = array(
'#type' => 'hidden',
'#value' => $order->order_status,
);
$form['order_id'] = array(
'#type' => 'hidden',
'#value' => $order->order_id,
);
$form['controls'] = array(
'#theme' => 'uc_order_view_update_controls',
'#weight' => 10,
);
foreach (uc_order_status_list('general') as $status) {
$options[$status['id']] = $status['title'];
}
foreach (uc_order_status_list('specific') as $status) {
$options[$status['id']] = $status['title'];
}
$form['controls']['status'] = array(
'#type' => 'select',
'#title' => t('Order status'),
'#default_value' => $order->order_status,
'#options' => $options,
'#attributes' => array('style' => 'display: inline;'),
'#weight' => -10,
);
$form['controls']['notify'] = array(
'#type' => 'checkbox',
'#title' => t('Send e-mail notification on update.'),
'#weight' => 0,
);
$form['controls']['submit'] = array(
'#type' => 'submit',
'#value' => t('Update'),
'#weight' => 10,
);
return $form;
}
/**
* @ingroup themeable
* @see uc_order_view_update_form()
*/
function theme_uc_order_view_update_controls($form) {
return ''. drupal_render($form) .'
';
}
/**
* @see uc_order_view_update_form()
*/
function uc_order_view_update_form_submit($form, &$form_state) {
global $user;
if ($form_state['values']['status'] != $form_state['values']['current_status']) {
if (uc_order_update_status($form_state['values']['order_id'], $form_state['values']['status'])) {
if (is_null($form_state['values']['order_comment']) || strlen($form_state['values']['order_comment']) == 0) {
uc_order_comment_save($form_state['values']['order_id'], $user->uid, '-', 'order', $form_state['values']['status'], $form_state['values']['notify']);
}
}
}
if (!is_null($form_state['values']['order_comment']) && strlen(trim($form_state['values']['order_comment'])) > 0) {
uc_order_comment_save($form_state['values']['order_id'], $user->uid, $form_state['values']['order_comment'], 'order', $form_state['values']['status'], $form_state['values']['notify']);
}
if (!is_null($form_state['values']['admin_comment']) && strlen(trim($form_state['values']['admin_comment'])) > 0) {
uc_order_comment_save($form_state['values']['order_id'], $user->uid, $form_state['values']['admin_comment']);
}
// Let conditional actions send email if requested.
if ($form_state['values']['notify']) {
$order = uc_order_load($form_state['values']['order_id']);
ca_pull_trigger('uc_order_status_email_update', $order);
}
drupal_set_message(t('Order updated.'));
}
/**
* Build the order view products table.
*/
function op_products_view_table($order) {
$table = array(
'#type' => 'tapir_table',
'#attributes' => array('class' => 'order-pane-table'),
);
$table['#columns']['qty'] = array(
'cell' => array(
'data' => t('Qty'),
'class' => 'text-right',
),
'weight' => 0,
);
$table['#columns']['product'] = array(
'cell' => array(
'data' => t('Product'),
'class' => 'header-wide',
),
'weight' => 1,
);
$table['#columns']['model'] = array(
'cell' => array(
'data' => t('SKU'),
'class' => 'text-center',
'nowrap' => 'nowrap',
),
'weight' => 2,
);
if (user_access('administer products')) {
$table['#columns']['cost'] = array(
'cell' => array(
'data' => t('Cost'),
'class' => 'text-right',
),
'weight' => 3,
);
}
$table['#columns']['price'] = array(
'cell' => array(
'data' => t('Price'),
'class' => 'text-right',
),
'weight' => 4,
);
$table['#columns']['total'] = array(
'cell' => array(
'data' => t('Total'),
'class' => 'text-right',
),
'weight' => 5,
);
$context = array(
'revision' => 'themed',
'type' => 'order_product',
'subject' => array(
'order' => $order,
),
);
if (is_array($order->products)) {
foreach ($order->products as $product) {
$data = array();
$data['qty'] = array(
'#value' => $product->qty .'×',
'#cell_attributes' => array('align' => 'right'),
);
$data['product'] = array(
'#value' => check_plain($product->title) . uc_product_get_description($product),
);
$data['model'] = array(
'#value' => check_plain($product->model),
'#cell_attributes' => array('align' => 'center', 'nowrap' => 'nowrap'),
);
$context['subject']['product'] = $product;
$context['subject']['node'] = node_load($product->nid);
if (user_access('administer products')) {
$context['field'] = 'cost';
$data['cost'] = array(
'#value' => uc_price($product->cost, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
}
$context['field'] = 'price';
$price_info = array(
'price' => $product->price,
'qty' => $product->qty,
);
$data['price'] = array(
'#value' => uc_price($product->price, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
$data['total'] = array(
'#value' => uc_price($price_info, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
$data['#attributes'] = array('valign' => 'top');
$table['#rows'][] = $data;
}
}
else {
$table['#rows'][]['product'] = array(
'#value' => t('This order contains no products.'),
'#cell_attributes' => array('colspan' => 'full'),
);
}
return $table;
}
/**
* Build the order customer's view products table.
*/
function op_products_customer_table($order) {
$table = array(
'#type' => 'tapir_table',
'#attributes' => array('class' => 'order-pane-table'),
);
$table['#columns']['qty'] = array(
'cell' => array(
'data' => t('Qty'),
'class' => 'text-right',
),
'weight' => 0,
);
$table['#columns']['product'] = array(
'cell' => array(
'data' => t('Product'),
'class' => 'header-wide',
),
'weight' => 1,
);
$table['#columns']['model'] = array(
'cell' => array(
'data' => t('SKU'),
'class' => 'text-center',
'nowrap' => 'nowrap',
),
'weight' => 2,
);
if (user_access('administer products')) {
$table['#columns']['cost'] = array(
'cell' => array(
'data' => t('Cost'),
'class' => 'text-right',
),
'weight' => 3,
);
}
$table['#columns']['price'] = array(
'cell' => array(
'data' => t('Price'),
'class' => 'text-right',
),
'weight' => 4,
);
$table['#columns']['total'] = array(
'cell' => array(
'data' => t('Total'),
'class' => 'text-right',
),
'weight' => 5,
);
$context = array(
'revision' => 'themed',
'type' => 'order_product',
'subject' => array(
'order' => $order,
),
);
if (is_array($order->products)) {
foreach ($order->products as $product) {
$data = array();
$data['qty'] = array(
'#value' => $product->qty .'×',
'#cell_attributes' => array('align' => 'right'),
);
$data['product'] = array(
'#value' => check_plain($product->title) . uc_product_get_description($product),
);
$data['model'] = array(
'#value' => check_plain($product->model),
'#cell_attributes' => array('align' => 'center', 'nowrap' => 'nowrap'),
);
$context['subject']['product'] = $product;
$context['subject']['node'] = node_load($product->nid);
if (user_access('administer products')) {
$context['field'] = 'cost';
$data['cost'] = array(
'#value' => uc_price($product->cost, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
}
$context['field'] = 'price';
$price_info = array(
'price' => $product->price,
'qty' => $product->qty,
);
$data['price'] = array(
'#value' => uc_price($product->price, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
$data['total'] = array(
'#value' => uc_price($price_info, $context),
'#cell_attributes' => array('align' => 'right', 'nowrap' => 'nowrap'),
);
$data['#attributes'] = array('valign' => 'top');
$table['#rows'][] = $data;
}
}
else {
$table['#rows'][]['product'] = array(
'#value' => t('This order contains no products.'),
'#cell_attributes' => array('colspan' => 'full'),
);
}
return $table;
}
/**
* Build the order comments table.
*/
function op_order_comments_view_table($comments) {
$table = array(
'#type' => 'tapir_table',
'#attributes' => array('class' => 'order-pane-table'),
);
$table['#columns']['date'] = array(
'cell' => array('data' => t('Date'), 'class' => 'text-center'),
'weight' => 0,
);
$table['#columns']['user'] = array(
'cell' => t('User'),
'weight' => 1,
);
$table['#columns']['notified'] = array(
'cell' => t('Notified'),
'weight' => 2,
);
$table['#columns']['status'] = array(
'cell' => array('data' => t('Status'), 'class' => 'text-center'),
'weight' => 3,
);
$table['#columns']['comment'] = array(
'cell' => array('data' => t('Comment'), 'width' => '80%'),
'weight' => 4,
);
if (is_array($comments)) {
foreach ($comments as $comment) {
$data = array();
$data['date'] = array(
'#value' => format_date($comment->created, 'custom', variable_get('uc_date_format_default', 'm/d/Y') .'<\b\r />g:i:s A'),
'#cell_attributes' => array('align' => 'center', 'nowrap' => 'true'),
);
$data['user'] = array(
'#value' => uc_get_initials($comment->uid),
'#cell_attributes' => array('align' => 'center'),
);
$data['notified'] = array(
'#value' => (($comment->notified == 1)
? ''
: ''),
'#cell_attributes' => array('align' => 'center'),
);
$data['status'] = array(
'#value' => $comment->title,
'#cell_attributes' => array('align' => 'center'),
);
$data['comment'] = array(
'#value' => check_plain($comment->message),
);
$table['#rows'][] = $data;
}
}
else {
$data['comment'] = array(
'#value' => t('This order has no comments associated with it.'),
'#cell_attributes' => array('colspan' => 'full'),
);
$table['#rows'][] = $data;
}
return $table;
}
/**
* Build the order admin comments table.
*/
function op_admin_comments_view_table($comments) {
$table = array(
'#type' => 'tapir_table',
'#attributes' => array('class' => 'order-pane-table'),
);
$table['#columns']['date'] = array(
'cell' => array('data' => t('Date'), 'class' => 'text-center'),
'weight' => 0,
);
$table['#columns']['user'] = array(
'cell' => array('data' => t('User'), 'class' => 'text-center'),
'weight' => 1,
);
$table['#columns']['comment'] = array(
'cell' => array('data' => t('Comment'), 'width' => '80%'),
'weight' => 2,
);
if (is_array($comments)) {
foreach ($comments as $comment) {
$data = array();
$data['date'] = array(
'#value' => format_date($comment->created, 'custom', variable_get('uc_date_format_default', 'm/d/Y') .'<\b\r />g:i:s A'),
'#cell_attributes' => array('align' => 'center', 'nowrap' => 'true', 'valign' => 'top'),
);
$data['user'] = array(
'#value' => uc_get_initials($comment->uid),
'#cell_attributes' => array('align' => 'center', 'valign' => 'top'),
);
$data['comment'] = array(
'#value' => filter_xss_admin($comment->message),
'#cell_attributes' => array('valign' => 'top'),
);
$table['#rows'][] = $data;
}
}
else {
$data['comment'] = array(
'#value' => t('This order has no admin comments associated with it.'),
'#cell_attributes' => array('colspan' => 'full'),
);
$table['#rows'][] = $data;
}
return $table;
}
/**
* Build a list of order panes defined in the enabled modules.
*/
function _order_pane_list($view = 'view') {
static $panes;
if (count($panes) > 0) {
return $panes;
}
$panes = module_invoke_all('order_pane', NULL);
foreach ($panes as $i => $value) {
$panes[$i]['enabled'] = variable_get('uc_order_pane_'. $panes[$i]['id'] .'_enabled', (!isset($panes[$i]['enabled']) ? TRUE : $panes[$i]['enabled']));
$panes[$i]['weight'] = variable_get('uc_order_pane_'. $panes[$i]['id'] .'_weight_'. $view, (!isset($panes[$i]['weight']) ? 0 : $panes[$i]['weight']));
}
usort($panes, 'uc_weight_sort');
return $panes;
}
/**
* Return data from an order pane by pane ID and the array key.
*/
function _order_pane_data($pane_id, $key) {
$panes = _order_pane_list();
foreach ($panes as $pane) {
if ($pane['id'] == $pane_id) {
return $pane[$key];
}
}
}
/**
* Call an order pane function with the argument passed by reference.
*/
function _call_order_pane_byref($func, $op, &$form) {
return $func($op, $form);
}