# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: lyle@phosphor-20090711204414-hzzzrlgyvwjjcvqc
# target_branch: bzr+ssh://lyle.mantooth@bazaar.ubercart.org/bzr\
#   /drupal6/ubercart
# testament_sha1: 3cb3ec814f32470a53984f970b9fef8aa4857be6
# timestamp: 2009-07-11 16:44:23 -0400
# source_branch: bzr://bazaar.ubercart.org/bzr/drupal6/ubercart
# base_revision_id: lyle@phosphor-20090710172852-53dsq5irbv4lfb2f
# 
# Begin patch
=== modified file 'payment/uc_2checkout/uc_2checkout.module'
--- payment/uc_2checkout/uc_2checkout.module	2009-05-09 17:44:11 +0000
+++ payment/uc_2checkout/uc_2checkout.module	2009-07-11 19:04:32 +0000
@@ -181,7 +181,10 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => '2checkout-form',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $options = array(
     'sign' => FALSE,
@@ -212,6 +215,7 @@
   );
 
   $i = 0;
+  $context['type'] = 'order_product';
   foreach ($order->products as $product) {
     $i++;
     $data['c_prod_'. $i] = $product->model .','. $product->qty;

=== modified file 'payment/uc_authorizenet/uc_authorizenet.module'
--- payment/uc_authorizenet/uc_authorizenet.module	2009-07-08 02:49:18 +0000
+++ payment/uc_authorizenet/uc_authorizenet.module	2009-07-11 19:04:32 +0000
@@ -343,7 +343,7 @@
       $types = uc_credit_transaction_types();
       $context = array(
         'revision' => 'formatted-original',
-        'location' => 'cim-profile-charge',
+        'type' => 'amount',
       );
       $comment[] = t('<b>@type:</b> @amount', array('@type' => $types[$data['txn_type']], '@amount' => uc_price($amount, $context)));
 
@@ -436,7 +436,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'authorize.net-charge',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,
@@ -610,7 +610,7 @@
   // Build an admin order comment.
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'authorize.net-charge-comment',
+    'type' => 'amount',
   );
   $comment = t('<b>@type</b><br /><b>@status:</b> @message<br />Amount: @amount<br />AVS response: @avs',
     array('@type' => _uc_authorizenet_txn_type($response[11]), '@status' => $result['success'] ? t('ACCEPTED') : t('REJECTED'), '@message' => $response[3], '@amount' => uc_price($response[9], $context), '@avs' => _uc_authorizenet_avs($response[5])));

=== modified file 'payment/uc_credit/test_gateway.module'
--- payment/uc_credit/test_gateway.module	2009-04-18 01:03:01 +0000
+++ payment/uc_credit/test_gateway.module	2009-07-11 19:04:32 +0000
@@ -47,7 +47,7 @@
   if ($success) {
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'test-gateway-charge-comment',
+      'type' => 'amount',
     );
     $message = t('Credit card charged: !amount', array('!amount' => uc_price($amount, $context)));
     uc_order_comment_save($order_id, $user->uid, $message, 'admin');

=== modified file 'payment/uc_credit/uc_credit.admin.inc'
--- payment/uc_credit/uc_credit.admin.inc	2009-04-28 16:54:42 +0000
+++ payment/uc_credit/uc_credit.admin.inc	2009-07-11 19:04:32 +0000
@@ -19,7 +19,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'credit-card-terminal',
+    'type' => 'order_total',
     'subject' => array(
       'order' => $order,
     ),
@@ -47,7 +47,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'credit-card-form',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,

=== modified file 'payment/uc_cybersource/uc_cybersource.module'
--- payment/uc_cybersource/uc_cybersource.module	2009-06-29 19:07:54 +0000
+++ payment/uc_cybersource/uc_cybersource.module	2009-07-11 19:04:32 +0000
@@ -220,7 +220,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'cybersource-charge',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,
@@ -382,7 +382,7 @@
     // Create the order and payment ledger comments.
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'cybersource-post-charge',
+      'type' => 'amount',
     );
     $o_comment = t('<b>Credit card !type:</b> !amount<br /><b>Decision: @decision</b><br /><b>Reason:</b> !reason', array('!type' => variable_get('uc_cybersource_transaction_type', 'sale'), '!amount' => uc_price($nvp['orderAmount'], $context), '@decision' => $nvp['decision'], '!reason' => _parse_cs_reason_code($nvp['reasonCode'])));
     $p_comment = t('!id<br />!decision, Reason: !reason', array('!id' => $nvp['orderPage_serialNumber'], '!decision' => $nvp['decision'], '!reason' => $nvp['reasonCode']));
@@ -609,7 +609,7 @@
     // Create the order and payment ledger comments.
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'cybersource-soap-charge',
+      'type' => 'amount',
     );
     $o_comment = t('<b>@type:</b> @amount<br /><b>Decision: @decision</b><br /><b>Reason:</b> !reason', array('@type' => $types[$data['txn_type']], '@amount' => uc_price($amount, $context), '@decision' => $reply->decision, '!reason' => _parse_cs_reason_code($reply->reasonCode)));
     $p_comment = t('<b>@type:</b><br />@id<br />@decision, Reason: !reason', array('@type' => $types[$data['txn_type']], '@id' => $reply->requestID, '@decision' => $reply->decision, '!reason' => $reply->reasonCode));
@@ -694,7 +694,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'cybersource-tax-test',
+    'type' => 'line_item',
   );
 
   // Build an item list for the taxes.
@@ -913,7 +913,7 @@
       if ($total != floatval($reply->taxReply->totalTaxAmount)) {
         $context = array(
           'revision' => 'formatted-original',
-          'location' => 'cybersource-calculate-tax',
+          'type' => 'amount',
         );
         watchdog('uc_cybersource', 'Tax calculation produced uneven results. Expected a total of @total, received the following: @dump', array('@total' => uc_price($reply->taxReply->totalTaxAmount, $context), '@dump' => '<pre>'. print_r($result, TRUE) .'</pre>'), WATCHDOG_ERROR);
 

=== modified file 'payment/uc_google_checkout/uc_google_checkout.admin.inc'
--- payment/uc_google_checkout/uc_google_checkout.admin.inc	2009-06-15 19:18:41 +0000
+++ payment/uc_google_checkout/uc_google_checkout.admin.inc	2009-07-11 19:04:32 +0000
@@ -314,7 +314,10 @@
   $balance = uc_payment_balance($order);
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'google-checkout-terminal',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $output .= '<p>'. t('Use this terminal to process credit card payments:') .'</p>'
             .'<table style="width: auto;"><tbody style="border-top: 0px;"><tr>'
@@ -367,7 +370,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'google-checkout-terminal-form',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,

=== modified file 'payment/uc_google_checkout/uc_google_checkout.module'
--- payment/uc_google_checkout/uc_google_checkout.module	2009-06-22 18:24:47 +0000
+++ payment/uc_google_checkout/uc_google_checkout.module	2009-07-11 19:04:32 +0000
@@ -499,7 +499,7 @@
           if ($settings['fixed_charge']) {
             $context = array(
               'revision' => 'formatted-original',
-              'location' => 'google-checkout-cart-request',
+              'type' => 'amount',
             );
             $options = array(
               'sign' => FALSE,
@@ -937,7 +937,7 @@
                      '', t('Payment received by Google Checkout'));
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'google-checkout-charge-comment',
+      'type' => 'amount',
     );
     uc_order_comment_save($order_id, 0, t('Payment of %amount received by Google Checkout.', array('%amount' => uc_price($charge->{'latest-charge-amount'}, $context))), 'admin', 'chargeable');
     uc_google_checkout_notification_acknowledgement($charge['serial-number']);
@@ -972,7 +972,7 @@
                      0, '', t('Refund received by Google Checkout'));
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'google-checkout-refund-comment',
+      'type' => 'amount',
     );
     uc_order_comment_save($order_id, 0, t('Refund of %amount received by Google Checkout.', array('%amount' => uc_price($refund->{'latest-refund-amount'}, $context))),
                           'admin', 'processing');

=== modified file 'payment/uc_payment/uc_payment.admin.inc'
--- payment/uc_payment/uc_payment.admin.inc	2009-05-06 18:27:07 +0000
+++ payment/uc_payment/uc_payment.admin.inc	2009-07-11 19:04:32 +0000
@@ -299,9 +299,8 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'order-payments-admin',
-    'subject' => array(),
-    'extras' => array(
+    'type' => 'order_total',
+    'subject' => array(
       'order' => $order,
     ),
   );
@@ -310,6 +309,7 @@
 
   if ($payments !== FALSE) {
     foreach ($payments as $payment) {
+      $context['type'] = 'payment';
       $context['subject']['payment'] = $payment;
       $form['payments'][$payment->receipt_id]['#attributes'] = array('valign' => 'top');
       $form['payments'][$payment->receipt_id]['received'] = array(
@@ -326,6 +326,7 @@
       );
       $total -= $payment->amount;
       unset($context['subject']['payment']);
+      $context['type'] = 'amount';
       $context['subject']['total'] = $total;
       $form['payments'][$payment->receipt_id]['balance'] = array(
         '#value' => uc_price($total, $context, array('cache' => FALSE)),
@@ -426,7 +427,7 @@
 
   $context = array(
     'revision' => 'formatted',
-    'location' => 'payment-delete',
+    'type' => 'payment',
     'subject' => array(
       'payment' => $payment,
     ),

=== modified file 'payment/uc_payment/uc_payment.ca.inc'
--- payment/uc_payment/uc_payment.ca.inc	2009-04-18 01:05:58 +0000
+++ payment/uc_payment/uc_payment.ca.inc	2009-07-11 19:04:32 +0000
@@ -178,7 +178,7 @@
 function uc_payment_condition_order_balance_form($form_state, $settings = array()) {
   $context = array(
     'revision' => 'formatted',
-    'location' => 'zero-balance',
+    'type' => 'amount',
   );
   $zero = array('!zero' => uc_price(0, $context));
   $options = array(

=== modified file 'payment/uc_payment/uc_payment.module'
--- payment/uc_payment/uc_payment.module	2009-04-18 01:18:43 +0000
+++ payment/uc_payment/uc_payment.module	2009-07-11 19:04:32 +0000
@@ -144,7 +144,7 @@
 
       $context = array(
         'revision' => 'formatted',
-        'location' => 'payment-balance-token',
+        'type' => 'amount',
       );
       $values['order-payment-balance'] = uc_price(uc_payment_balance($order), $context);
       break;
@@ -332,7 +332,8 @@
     $grand_total = 0;
 
     $context = array(
-      'location' => 'checkout-order-total-preview',
+      'revision' => 'themed',
+      'type' => 'line_item',
     );
 
     foreach ($totals as $line) {
@@ -348,6 +349,7 @@
       }
     }
 
+    $context['type'] = 'amount';
     $context['subject'] = array(
       'grand_total' => $grand_total,
     );
@@ -583,7 +585,7 @@
     global $user;
     $context = array(
       'revision' => 'formatted',
-      'location' => 'payment-log',
+      'type' => 'amount',
     );
     $log_message = t('@method payment for @amount entered by @user.', array('@method' => $method_name, '@amount' => uc_price($amount, $context), '@user' => uc_get_initials($user->uid)));
     uc_order_log_changes($order_id, array($log_message));
@@ -608,7 +610,7 @@
     $payment = uc_payment_load($receipt_id);
     $context = array(
       'revision' => 'formatted',
-      'location' => 'payment-delete-log',
+      'type' => 'payment',
       'subject' => array(
         'payment' => $payment,
       ),

=== modified file 'payment/uc_payment/uc_payment_checkout_pane.inc'
--- payment/uc_payment/uc_payment_checkout_pane.inc	2009-04-24 15:49:55 +0000
+++ payment/uc_payment/uc_payment_checkout_pane.inc	2009-07-11 19:04:32 +0000
@@ -102,7 +102,8 @@
       usort($line_items, 'uc_weight_sort');
 
       $context = array(
-        'location' => 'checkout-review-line-item',
+        'revision' => 'themed',
+        'type' => 'line_item',
       );
       foreach ($line_items as $line_item) {
         $context['subject'] = array('line_item' => $line_item);

=== modified file 'payment/uc_payment/uc_payment_order_pane.inc'
--- payment/uc_payment/uc_payment_order_pane.inc	2009-04-18 01:03:01 +0000
+++ payment/uc_payment/uc_payment_order_pane.inc	2009-07-11 19:04:32 +0000
@@ -20,10 +20,7 @@
       if (variable_get('uc_payment_tracking', TRUE)) {
         $context = array(
           'revision' => 'formatted-original',
-          'location' => 'payment-balance',
-          'subject' => array(
-            'order' => $arg1,
-          ),
+          'type' => 'amount',
         );
         $output = t('Balance: @balance', array('@balance' => uc_price(uc_payment_balance($arg1), $context)));
         $output .= ' ('. l(t('View'), 'admin/store/orders/'. $arg1->order_id .'/payments') .')<br />';

=== modified file 'payment/uc_payment_pack/uc_payment_pack.admin.inc'
--- payment/uc_payment_pack/uc_payment_pack.admin.inc	2009-04-18 01:03:01 +0000
+++ payment/uc_payment_pack/uc_payment_pack.admin.inc	2009-07-11 19:04:32 +0000
@@ -14,7 +14,7 @@
   $balance = uc_payment_balance($order);
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'receive-check-form',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,

=== modified file 'payment/uc_payment_pack/uc_payment_pack.module'
--- payment/uc_payment_pack/uc_payment_pack.module	2009-07-10 17:28:52 +0000
+++ payment/uc_payment_pack/uc_payment_pack.module	2009-07-11 19:04:32 +0000
@@ -137,7 +137,7 @@
       if (($max = variable_get('uc_cod_max_order', 0)) > 0 && is_numeric($max)) {
         $context = array(
           'revision' => 'formatted-original',
-          'location' => 'cod-cart-details',
+          'type' => 'amount',
         );
         $details .= '<p>'. t('Orders totalling more than !number are <b>not eligible</b> for COD.', array('!number' => uc_price($max, $context))) .'</p>';
       }

=== modified file 'payment/uc_paypal/uc_paypal.module'
--- payment/uc_paypal/uc_paypal.module	2009-07-03 19:35:36 +0000
+++ payment/uc_paypal/uc_paypal.module	2009-07-11 19:04:32 +0000
@@ -281,7 +281,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'paypal-wpp-charge',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,
@@ -601,7 +601,10 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'paypal-ec-checkout',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $options = array(
     'sign' => FALSE,
@@ -690,7 +693,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'paypal-ec-form-submit',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,
@@ -758,7 +761,10 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'paypal-ec-submit-form-submit',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $options = array(
     'sign' => FALSE,
@@ -837,7 +843,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'paypal-wps-form',
+    'type' => 'amount',
   );
   $options = array(
     'sign' => FALSE,
@@ -898,11 +904,18 @@
     $data['paymentaction'] = 'authorization';
   }
 
+  $context['subject'] = array(
+    'order' => $order,
+  );
   if (variable_get('uc_paypal_wps_submit_method', 'single') == 'itemized') {
     // List individual items
+    $context['type'] = 'order_product';
+
     $i = 0;
     foreach ($order->products as $item) {
       $i++;
+      $context['subject']['product'] = $item;
+      $context['subject']['node'] = node_load($item->nid);
       $data['amount_'. $i] = uc_price($item->price, $context, $options);
       $data['item_name_'. $i] = $item->title;
       $data['item_number_'. $i] = $item->model;
@@ -921,6 +934,8 @@
   }
   else {
     // List the whole cart as a single item to account for fees/discounts
+    $context['type'] = 'order_total';
+
     $data['amount_1'] = uc_price($order->order_total - $shipping - $tax, $context, $options);
     $data['item_name_1'] = t('Order @order_id at !store', array('@order_id' => $order->order_id, '!store' => variable_get('uc_store_name', url('<front>', array('absolute' => TRUE)))));
     $data['on0_1'] = t('Product count');

=== modified file 'payment/uc_paypal/uc_paypal.pages.inc'
--- payment/uc_paypal/uc_paypal.pages.inc	2009-04-18 01:03:01 +0000
+++ payment/uc_paypal/uc_paypal.pages.inc	2009-07-11 19:04:32 +0000
@@ -80,7 +80,7 @@
 
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'paypal-ipn',
+      'type' => 'amount',
     );
     $options = array(
       'sign' => FALSE,

=== modified file 'shipping/uc_flatrate/uc_flatrate.admin.inc'
--- shipping/uc_flatrate/uc_flatrate.admin.inc	2009-05-06 18:27:07 +0000
+++ shipping/uc_flatrate/uc_flatrate.admin.inc	2009-07-11 19:04:32 +0000
@@ -14,8 +14,8 @@
   $output = '';
 
   $context = array(
-    'location' => 'shipping-flatrate-method-admin',
-    'subject' => array(),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
 
   $rows = array();
@@ -23,8 +23,6 @@
   $weight = variable_get('uc_quote_method_weight', array());
   $result = db_query("SELECT mid, title, label, base_rate, product_rate FROM {uc_flatrate_methods}");
   while ($method = db_fetch_object($result)) {
-    $context['subject']['flatrate_method'] = $method;
-
     $row = array();
     $row[] = check_plain($method->title);
     $row[] = check_plain($method->label);

=== modified file 'shipping/uc_flatrate/uc_flatrate.module'
--- shipping/uc_flatrate/uc_flatrate.module	2009-05-06 18:27:07 +0000
+++ shipping/uc_flatrate/uc_flatrate.module	2009-07-11 19:04:32 +0000
@@ -57,11 +57,9 @@
     $result = db_query("SELECT mid, title, product_rate FROM {uc_flatrate_methods}");
     $context = array(
       'revision' => 'formatted',
-      'location' => 'shipping-flatrate-method-node-form',
-      'subject' => array(),
+      'type' => 'amount',
     );
     while ($method = db_fetch_object($result)) {
-      $context['subject']['flatrate_method'] = $method;
       if (!isset($form['shipping']['flatrate'])) {
         $form['shipping']['flatrate'] = array(
           '#type' => 'fieldset',
@@ -77,7 +75,7 @@
         '#type' => 'textfield',
         '#title' => $method->title,
         '#default_value' => $form['#node']->flatrate[$method->mid],
-          '#description' => t('Default rate: %price', array('%price' => uc_price($method->product_rate, $context))),
+        '#description' => t('Default rate: %price', array('%price' => uc_price($method->product_rate, $context))),
         '#size' => 16,
         '#field_prefix' => $sign_flag ? '' : $currency_sign,
         '#field_suffix' => $sign_flag ? $currency_sign : '',
@@ -209,18 +207,14 @@
   $mid = $method[1];
   $context = array(
     'revision' => 'altered',
-    'location' => 'shipping-flatrate-method-json',
-    'subject' => array(),
-    'extras' => array(),
+    'type' => 'amount',
   );
 
   if ($method = db_fetch_object(db_query("SELECT * FROM {uc_flatrate_methods} WHERE mid = %d", $mid))) {
-    $context['extras']['flatrate_method'] = $method;
     // Start at the base rate.
     $rate = $method->base_rate;
 
     foreach ($products as $product) {
-      $context['subject']['order_product'] = $product;
       if (empty($product->flatrate) || is_null($product->flatrate[$mid])) {
         $price_info = array(
           'price' => $method->product_rate,
@@ -239,7 +233,6 @@
       }
     }
 
-    unset($context['subject']['order_product']);
     $altered = uc_price($rate, $context);
     $context['revision'] = 'formatted';
     $formatted = uc_price($rate, $context);

=== modified file 'shipping/uc_quote/uc_quote.module'
--- shipping/uc_quote/uc_quote.module	2009-07-02 18:50:17 +0000
+++ shipping/uc_quote/uc_quote.module	2009-07-11 19:04:32 +0000
@@ -867,8 +867,9 @@
 
     case 'review':
       $context = array(
-        'location' => 'shipping-quote-checkout-pane-review',
-        'subject' => array(),
+        'revision' => 'themed',
+        'type' => 'line_item',
+        'subject' => array('order' => $arg1),
       );
       $result = db_query("SELECT * FROM {uc_order_line_items} WHERE order_id = %d AND type = '%s'", $arg1->order_id, 'shipping');
       if ($line_item = db_fetch_object($result)) {

=== modified file 'shipping/uc_shipping/uc_shipping.admin.inc'
--- shipping/uc_shipping/uc_shipping.admin.inc	2009-06-04 13:49:23 +0000
+++ shipping/uc_shipping/uc_shipping.admin.inc	2009-07-11 19:04:32 +0000
@@ -588,14 +588,8 @@
     $rows[] = array(t('Services:'), $shipment->accessorials);
   }
   $context = array(
-    'location' => 'shipping-order-view',
-    'class' => array(
-      'cost',
-    ),
-    'subject' => array(
-      'shipment' => $shipment,
-      'field' => 'cost',
-    ),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
   $rows[] = array(t('Cost:'), uc_price($shipment->cost, $context, array('label' => FALSE)));
   $output .= theme('table', array(), $rows, array('style' => 'width:auto'));

=== modified file 'shipping/uc_shipping/uc_shipping.module'
--- shipping/uc_shipping/uc_shipping.module	2009-04-28 16:54:42 +0000
+++ shipping/uc_shipping/uc_shipping.module	2009-07-11 19:04:32 +0000
@@ -237,11 +237,8 @@
     $rows[] = array(t('Dimensions:'), t('!l x !w x !h', array('!l' => uc_length_format($package->length), '!w' => uc_length_format($package->width), '!h' => uc_length_format($package->height))));
   }
   $context = array(
-    'location' => 'shipping-package-view',
-    'subject' => array(
-      'package' => $package,
-      'field' => 'value',
-    ),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
   $rows[] = array(t('Insured value:'), uc_price($package->value, $context));
   if ($package->tracking_number) {

=== modified file 'shipping/uc_ups/uc_ups.admin.inc'
--- shipping/uc_ups/uc_ups.admin.inc	2009-04-24 15:49:55 +0000
+++ shipping/uc_ups/uc_ups.admin.inc	2009-07-11 19:04:32 +0000
@@ -207,11 +207,8 @@
   $method = uc_ups_shipping_method();
   $output .= '<b>'. $method['ups']['quote']['accessorials'][$_SESSION['ups']['service']] .'</b><br />';
   $context = array(
-    'location' => 'shipping-ups-confirm',
-    'subject' => array(
-      'ups_info' => $_SESSION['ups'],
-      'field' => 'amount',
-    ),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
   $output .= '<i>'. check_plain($_SESSION['ups']['rate']['type']) .'</i>: '. uc_price($_SESSION['ups']['rate']['amount'], $context) .' ('. check_plain($_SESSION['ups']['rate']['currency']) .')<br />';
   $ship_date = $_SESSION['ups']['ship_date'];

=== modified file 'shipping/uc_ups/uc_ups.module'
--- shipping/uc_ups/uc_ups.module	2009-05-06 18:27:07 +0000
+++ shipping/uc_ups/uc_ups.module	2009-07-11 19:04:32 +0000
@@ -835,8 +835,8 @@
   }
   uasort($quotes, 'uc_quote_price_sort');
   $context = array(
-    'location' => 'shipping-quote',
-    'subject' => array(),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
   foreach ($quotes as $key => $quote) {
     if (isset($quote['rate'])) {

=== modified file 'shipping/uc_usps/uc_usps.module'
--- shipping/uc_usps/uc_usps.module	2009-06-22 15:13:26 +0000
+++ shipping/uc_usps/uc_usps.module	2009-07-11 19:04:32 +0000
@@ -400,8 +400,8 @@
     }
   }
   $context = array(
-    'location' => 'shipping-usps-quote',
-    'subject' => array(),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
   foreach ($services as $key => $quote) {
     if (isset($quote['rate'])) {

=== modified file 'shipping/uc_weightquote/uc_weightquote.module'
--- shipping/uc_weightquote/uc_weightquote.module	2009-05-06 18:27:07 +0000
+++ shipping/uc_weightquote/uc_weightquote.module	2009-07-11 19:04:32 +0000
@@ -177,17 +177,12 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'shipping-weightquote-quote',
-    'subject' => array(),
-    'extras' => array(
-      'method' => $method,
-    ),
+    'type' => 'amount',
   );
 
   $rate = 0;
   foreach ($products as $product) {
     $node = node_load($product->nid);
-    $context['subject']['order_product'] = $product;
     $price_info = array(
       'price' => $node->weightquote,
       'qty' => $product->qty,
@@ -196,7 +191,6 @@
   }
   $rate += variable_get('uc_weightquote_base_rate', 0);
 
-  unset($context['subject']['order_product']);
   $altered = uc_price($rate, $context);
   $context['revision'] = 'formatted';
   $formatted = uc_price($rate, $context);

=== modified file 'uc_attribute/uc_attribute.admin.inc'
--- uc_attribute/uc_attribute.admin.inc	2009-07-08 03:05:39 +0000
+++ uc_attribute/uc_attribute.admin.inc	2009-07-11 19:04:32 +0000
@@ -199,8 +199,9 @@
   );
 
   $context = array(
-    'location' => 'attribute-options-form',
-    'extras' => array(
+    'revision' => 'themed',
+    'type' => 'attribute_option',
+    'subject' => array(
       'attribute' => $attribute,
     ),
   );
@@ -231,13 +232,11 @@
       ),
     );
 
-    $context['subject'] = array(
-      'option' => $option,
-      'field' => 'cost',
-    );
+    $context['subject']['option'] = $data;
+    $context['field'] = 'cost';
     $form['options'][$key]['cost']['#value'] = uc_price($data->cost, $context);
 
-    $context['subject']['field'] = 'price';
+    $context['field'] = 'price';
     $form['options'][$key]['price']['#value'] = uc_price($data->price, $context);
   }
 
@@ -485,17 +484,16 @@
     $form['#tree'] = TRUE;
 
     $context = array(
-      'location' => 'attribute-form-default-option',
+      'revision' => 'themed',
+      'type' => 'attribute_option',
     );
     if (count($attributes) > 0) {
       foreach ($attributes as $attribute) {
         $option = $attribute->options[$attribute->default_option];
         $context['subject'] = array(
+          'attribute' => $attribute,
           'option' => $option,
         );
-        $context['extras'] = array(
-          'attribute' => $attribute,
-        );
 
         $form['attributes'][$attribute->aid] = array(
           'remove' => array(
@@ -873,7 +871,7 @@
 
 /**
  * Returns a themed set of attribute options for use in order displays.
- * 
+ *
  * @param $product Product
  * @return Themed set of attribute options.
  */
@@ -882,7 +880,7 @@
   foreach ((array)$product->data['attributes'] as $attribute => $option) {
     $option_rows[] = t('@attribute: @option', array('@attribute' => $attribute, '@option' => implode(', ', (array)$option)));
   }
-  
+
   return theme('item_list', $option_rows, NULL, 'ul', array('class' => 'product-description'));
 }
 

=== modified file 'uc_attribute/uc_attribute.module'
--- uc_attribute/uc_attribute.module	2009-07-08 03:05:39 +0000
+++ uc_attribute/uc_attribute.module	2009-07-11 19:04:32 +0000
@@ -622,20 +622,19 @@
 
   $context = array(
     'revision' => 'formatted',
-    'location' => 'product-attribute-form-element',
-    'subject' => array(),
-    'extras' => array(),
   );
 
   // Loop through each product attribute and generate its form element.
   foreach ($attributes as $attribute) {
-    $context['extras']['attribute'] = $attribute;
+    $context['subject']['attribute'] = $attribute;
     // Build the attribute's options array.
     $options = array();
     foreach ($attribute->options as $option) {
       $context['subject']['option'] = $option;
       switch (variable_get('uc_attribute_option_price_format', 'adjustment')) {
         case 'total':
+          $context['type'] = 'product';
+          $context['subject']['node'] = $product;
           $price_info = array(
             'price' => $product->sell_price + $option->price,
             'qty' => $qty,
@@ -645,6 +644,7 @@
             break;
           }
         case 'adjustment':
+          $context['type'] = 'attribute_option';
           $price_info = array(
             'price' => $option->price,
             'qty' => $qty,

=== modified file 'uc_cart/uc_cart.admin.inc'
--- uc_cart/uc_cart.admin.inc	2009-05-09 17:41:42 +0000
+++ uc_cart/uc_cart.admin.inc	2009-07-11 19:04:32 +0000
@@ -53,7 +53,7 @@
 
   $context = array(
     'revision' => 'formatted',
-    'location' => 'minimum-subtotal-summary'
+    'type' => 'amount',
   );
   $form['general']['uc_minimum_subtotal'] = array(
     '#type' => 'textfield',

=== modified file 'uc_cart/uc_cart.module'
--- uc_cart/uc_cart.module	2009-07-02 14:10:43 +0000
+++ uc_cart/uc_cart.module	2009-07-11 19:29:58 +0000
@@ -670,14 +670,15 @@
     $row_class = 'odd';
 
     $context = array(
-      'location' => 'cart-block-item',
+      'revision' => 'themed',
+      'field' => 'price',
     );
 
     // Loop through each item.
     foreach ($items as $item) {
       $context['subject'] = array(
         'cart_item' => $item,
-        'field' => 'price',
+        'node' => node_load($item->nid),
       );
       // Add the basic row with quantity, title, and price.
       $output .= '<tr class="'. $row_class .'"><td class="cart-block-item-qty">'. $item['qty'] .'</td>'
@@ -719,7 +720,7 @@
 function theme_uc_cart_block_summary($item_count, $item_text, $total, $summary_links) {
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'cart-block-total',
+    'type' => 'amount',
   );
   // Build the basic table with the number of items in the cart and total.
   $output = '<table class="cart-block-summary"><tbody><tr>'
@@ -880,7 +881,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'cart-subtotal',
+    'type' => 'amount',
   );
   $i = 0;
   foreach ($items as $item) {
@@ -1060,7 +1061,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'cart-table-subtotal',
+    'type' => 'amount',
   );
   $table[] = array(
     'total' => array(

=== modified file 'uc_cart/uc_cart.pages.inc'
--- uc_cart/uc_cart.pages.inc	2009-07-08 03:44:40 +0000
+++ uc_cart/uc_cart.pages.inc	2009-07-11 19:04:32 +0000
@@ -59,7 +59,7 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'minimum-subtotal',
+    'type' => 'amount',
   );
 
   if (($min = uc_price(variable_get('uc_minimum_subtotal', 0), $context)) > 0) {
@@ -75,7 +75,7 @@
     if ($subtotal < $min) {
       $context = array(
         'revision' => 'formatted-original',
-        'location' => 'minimum-subtotal-message',
+        'type' => 'amount',
       );
       drupal_set_message(variable_get('uc_minimum_subtotal_text', t('The minimum order subtotal for checkout is !min.', array('!min' => uc_price($min, $context)))), 'error');
       drupal_goto('cart');
@@ -203,7 +203,7 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'cart-checkout-item',
+    'type' => 'cart_item',
   );
   $contents = uc_cart_get_contents();
   foreach ($contents as $key => $item) {
@@ -212,9 +212,8 @@
       'qty' => $item->qty,
     );
     $context['subject'] = array(
+      'cart' => $contents,
       'cart_item' => $item,
-    );
-    $context['extras'] = array(
       'node' => node_load($item->nid),
     );
 

=== modified file 'uc_cart/uc_cart_checkout_pane.inc'
--- uc_cart/uc_cart_checkout_pane.inc	2009-07-01 18:12:26 +0000
+++ uc_cart/uc_cart_checkout_pane.inc	2009-07-11 19:04:32 +0000
@@ -28,9 +28,9 @@
       $items = uc_cart_get_contents();
       $output = '<table>';
       $context = array(
-        'location' => 'cart-review-item',
+        'revision' => 'themed',
+        'type' => 'cart_item',
         'subject' => array(),
-        'extras' => array(),
       );
       foreach ($items as $item) {
         $desc = check_plain($item->title);
@@ -43,9 +43,8 @@
           'qty' => $item->qty,
         );
         $context['subject'] = array(
+          'cart' => $items,
           'cart_item' => $item,
-        );
-        $context['extras'] = array(
           'node' => node_load($item->nid),
         );
         $output .= '<tr valign="top"><td>'. $item->qty .'&times;</td><td width="100%">'. $desc
@@ -573,23 +572,23 @@
     array('data' => t('Price'), 'class' => 'price'),
   );
 
-  $context = array(
-    'location' => 'cart-checkout-item',
-  );
+  $context = array();
 
   // Set up table rows.
-  foreach (uc_cart_get_contents() as $item) {
+  $contents = uc_cart_get_contents();
+  foreach ($contents as $item) {
     $price_info = array(
       'price' => $item->price,
       'qty' => $item->qty,
     );
+
+    $context['revision'] = 'altered';
+    $context['type'] = 'cart_item';
     $context['subject'] = array(
+      'cart' => $contents,
       'cart_item' => $item,
-    );
-    $context['extras'] = array(
       'node' => node_load($item->nid),
     );
-    $context['revision'] = 'altered';
 
     $total = uc_price($price_info, $context);
     $subtotal += $total;
@@ -600,8 +599,9 @@
     }
 
     // Remove node from context to prevent the price from being altered.
+    $context['revision'] = 'themed-original';
+    $context['type'] = 'amount';
     unset($context['subject']);
-    $context['revision'] = 'themed-original';
     $rows[] = array(
       array('data' => t('@qty&times;', array('@qty' => $item->qty)), 'class' => 'qty'),
       array('data' => $description, 'class' => 'products'),
@@ -613,7 +613,7 @@
   if ($show_subtotal) {
     $context = array(
       'revision' => 'themed-original',
-      'location' => 'cart-checkout-subtotal',
+      'type' => 'amount',
     );
     $rows[] = array(
       'data' => array(array('data' => '<span id="subtotal-title">' . t('Subtotal:') . '</span> ' . uc_price($subtotal, $context), 'colspan' => 4, 'class' => 'subtotal')),

=== modified file 'uc_catalog/uc_catalog.module'
--- uc_catalog/uc_catalog.module	2009-07-01 19:46:54 +0000
+++ uc_catalog/uc_catalog.module	2009-07-11 19:04:32 +0000
@@ -684,7 +684,8 @@
   $product_table = '<div class="category-grid-products"><table>';
   $count = 0;
   $context = array(
-    'location' => 'catalog-grid-product',
+    'revision' => 'themed',
+    'type' => 'product',
   );
   foreach ($products as $nid) {
     $product = node_load($nid);

=== modified file 'uc_order/templates/admin.itpl.php'
--- uc_order/templates/admin.itpl.php	2009-06-17 19:43:20 +0000
+++ uc_order/templates/admin.itpl.php	2009-07-11 19:04:32 +0000
@@ -17,7 +17,8 @@
 <?php echo t('Products:'); ?><br />
 <?php
 $context = array(
-  'location' => 'order-invoice-admin',
+  'revision' => 'themed',
+  'type' => 'order_product',
 );
 foreach ($products as $product) {
   $price_info = array(

=== modified file 'uc_order/templates/customer.itpl.php'
--- uc_order/templates/customer.itpl.php	2009-06-17 19:43:20 +0000
+++ uc_order/templates/customer.itpl.php	2009-07-11 19:04:32 +0000
@@ -156,7 +156,7 @@
 
                     <?php
                     $context = array(
-                      'location' => 'order-invoice-line-item',
+                      'revision' => 'themed',
                       'subject' => array(
                         'order' => $order,
                       ),
@@ -213,7 +213,6 @@
                                 'qty' => $product->qty,
                               );
                               $context['subject']['order_product'] = $product;
-                              $context['location'] = 'order-invoice-product';
                               ?>
                           <tr>
                             <td valign="top" nowrap="nowrap">
@@ -222,7 +221,6 @@
                             <td width="98%">
                               <b><?php echo $product->title .' - '. uc_price($price_info, $context); ?></b>
                               <?php if ($product->qty > 1) {
-                                $context['location'] = 'order-invoice-product-each';
                                 $price_info['qty'] = 1;
                                 echo t('(!price each)', array('!price' => uc_price($price_info, $context)));
                               } ?>

=== modified file 'uc_order/uc_order.admin.inc'
--- uc_order/uc_order.admin.inc	2009-07-03 18:09:33 +0000
+++ uc_order/uc_order.admin.inc	2009-07-11 19:04:32 +0000
@@ -450,10 +450,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'orders-admin',
-    'subject' => array(
-      'field' => 'order_total',
-    ),
+    'type' => 'amount',
   );
 
   $result = pager_query($sql, variable_get('uc_order_number_displayed', 30), 0, NULL, $args);
@@ -476,7 +473,6 @@
       }
     }
 
-    $context['subject']['order'] = $order;
     $rows[] = array(
       'data' => array(
         array('data' => uc_order_actions($order, TRUE), 'nowrap' => 'nowrap'),
@@ -954,7 +950,7 @@
   $result = pager_query("SELECT o.order_id, o.created, os.title, SUM(op.qty) AS products, o.order_total AS total FROM {uc_orders} AS o LEFT JOIN {uc_order_statuses} AS os ON o.order_status = os.order_status_id LEFT JOIN {uc_order_products} AS op ON o.order_id = op.order_id WHERE o.uid = %d AND o.order_status IN ". uc_order_status_list('general', TRUE) ." GROUP BY o.order_id, o.created, os.title, o.order_total". tablesort_sql($header), 20, 0, "SELECT COUNT(*) FROM {uc_orders} WHERE uid = %d AND order_status NOT IN ". uc_order_status_list('specific', TRUE), $user->uid);
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'order-history',
+    'type' => 'amount',
   );
   // Build a table based on the customer's orders.
   while ($order = db_fetch_object($result)) {
@@ -1195,13 +1191,11 @@
         'qty' => 1,
       );
       $context = array(
-        'location' => 'order-product-add',
         'revision' => 'altered',
+        'type' => 'order_product',
         'subject' => array(
-          'cart_item' => $product,
-          'field' => 'price',
-        ),
-        'extras' => array(
+          'order' => $order,
+          'product' => $product,
           'node' => clone $product,
         ),
       );

=== modified file 'uc_order/uc_order.line_item.inc'
--- uc_order/uc_order.line_item.inc	2009-05-06 18:27:07 +0000
+++ uc_order/uc_order.line_item.inc	2009-07-11 20:44:14 +0000
@@ -26,7 +26,7 @@
     case 'cart-preview':
       $context = array(
         'revision' => 'altered',
-        'location' => 'cart-preview-subtotal-item',
+        'type' => 'cart_item',
       );
       $subtotal = 0;
       foreach ($arg1 as $item) {
@@ -36,8 +36,6 @@
         );
         $context['subject'] = array(
           'cart_item' => $item,
-        );
-        $context['extras'] = array(
           'node' => node_load($item->nid),
         );
         $total = uc_price($price_info, $context);

=== modified file 'uc_order/uc_order.module'
--- uc_order/uc_order.module	2009-07-08 02:45:06 +0000
+++ uc_order/uc_order.module	2009-07-11 19:04:32 +0000
@@ -371,13 +371,11 @@
           if ($value['type'] == 'subtotal') {
             $context = array(
               'revision' => 'formatted',
-              'location' => 'order-subtotal-token',
+              'type' => 'line_item',
               'subject' => array(
+                'order' => $order,
                 'line_item' => $order->line_items[$key],
               ),
-              'extras' => array(
-                'order' => $order,
-              ),
             );
             $subtotal = uc_price($order->line_items[$key]['amount'], $context);
           }
@@ -389,11 +387,8 @@
       $values['order-subtotal'] = $subtotal;
       $context = array(
         'revision' => 'formatted-original',
-        'location' => 'order-total-token',
+        'type' => 'order_total',
         'subject' => array(
-          'field' => 'order_total',
-        ),
-        'extras' => array(
           'order' => $order,
         ),
       );

=== modified file 'uc_order/uc_order.order_pane.inc'
--- uc_order/uc_order.order_pane.inc	2009-07-08 03:05:39 +0000
+++ uc_order/uc_order.order_pane.inc	2009-07-11 19:04:32 +0000
@@ -268,10 +268,10 @@
 function uc_order_pane_products($op, $arg1) {
   switch ($op) {
     case 'view':
-      return drupal_render(tapir_get_table('op_products_view_table', $arg1->products));
+      return drupal_render(tapir_get_table('op_products_view_table', $arg1));
 
     case 'customer':
-      return drupal_render(tapir_get_table('op_products_customer_table', $arg1->products));
+      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');
@@ -332,9 +332,9 @@
       usort($line_items, 'uc_weight_sort');
 
       $context = array(
-        'location' => 'order-line-items',
-        'subject' => array(),
-        'extras' => array(
+        'revision' => 'themed',
+        'type' => 'line_item',
+        'subject' => array(
           'order' => $arg1,
         ),
       );
@@ -404,9 +404,9 @@
       );
 
       $context = array(
-        'location' => 'order-edit-line-items',
-        'subject' => array(),
-        'extras' => array(
+        'revision' => 'themed',
+        'type' => 'line_item',
+        'subject' => array(
           'order' => $arg1,
         ),
       );
@@ -689,7 +689,7 @@
 /**
  * Build the order view products table.
  */
-function op_products_view_table($products) {
+function op_products_view_table($order) {
   $table = array(
     '#type' => 'tapir_table',
     '#attributes' => array('class' => 'order-pane-table'),
@@ -742,11 +742,15 @@
   );
 
   $context = array(
-    'location' => 'order-view-products',
+    'revision' => 'themed',
+    'type' => 'order_product',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
 
-  if (is_array($products)) {
-    foreach ($products as $product) {
+  if (is_array($order->products)) {
+    foreach ($order->products as $product) {
       $data = array();
       $data['qty'] = array(
         '#value' => $product->qty .'&times;',
@@ -767,18 +771,18 @@
         '#cell_attributes' => array('align' => 'center', 'nowrap' => 'nowrap'),
       );
 
-      $context['subject'] = array(
-        'order_product' => $product,
-        'field' => 'cost',
-      );
+      $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['subject']['field'] = 'price';
+      $context['field'] = 'price';
       $price_info = array(
         'price' => $product->price,
         'qty' => $product->qty,
@@ -858,11 +862,15 @@
   );
 
   $context = array(
-    'location' => 'order-customer-products',
+    'revision' => 'themed',
+    'type' => 'order_product',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
 
-  if (is_array($products)) {
-    foreach ($products as $product) {
+  if (is_array($order->products)) {
+    foreach ($order->products as $product) {
       $data = array();
       $data['qty'] = array(
         '#value' => $product->qty .'&times;',
@@ -876,18 +884,17 @@
         '#cell_attributes' => array('align' => 'center', 'nowrap' => 'nowrap'),
       );
 
-      $context['subject'] = array(
-        'order_product' => $product,
-        'field' => 'cost',
-      );
+      $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['subject']['field'] = 'price';
+      $context['field'] = 'price';
       $price_info = array(
         'price' => $product->price,
         'qty' => $product->qty,

=== modified file 'uc_product/uc_product.module'
--- uc_product/uc_product.module	2009-07-10 17:14:55 +0000
+++ uc_product/uc_product.module	2009-07-11 19:04:32 +0000
@@ -699,7 +699,8 @@
   ));
 
   $context = array(
-    'location' => 'product-view',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array(
       'product',
     ),
@@ -716,7 +717,7 @@
   }
 
   $context['class'][1] = 'display';
-  $context['subject']['field'] = 'sell_price';
+  $context['field'] = 'sell_price';
   $node->content['display_price'] = array('#value' => theme('uc_product_price', $node->sell_price, $context),
     '#access' => $enabled['display_price'],
     '#weight' => $weight['display_price'],
@@ -731,14 +732,14 @@
     $node->content['body']['#weight'] = 1;
 
     $context['class'][1] = 'list';
-    $context['subject']['field'] = 'list_price';
+    $context['field'] = 'list_price';
     $node->content['list_price'] = array('#value' => theme('uc_product_price', $node->list_price, $context),
       '#access' => $enabled['list_price'],
       '#weight' => $weight['list_price'],
     );
 
     $context['class'][1] = 'cost';
-    $context['subject']['field'] = 'cost';
+    $context['field'] = 'cost';
     $node->content['cost'] = array('#value' => theme('uc_product_price', $node->cost, $context),
       '#access' => $enabled['cost'] && user_access('administer products'),
       '#weight' => $weight['cost'],
@@ -750,7 +751,7 @@
   }
 
   $context['class'][1] = 'sell';
-  $context['subject']['field'] = 'sell_price';
+  $context['field'] = 'sell_price';
   $node->content['sell_price'] = array('#value' => theme('uc_product_price', $node->sell_price, $context, array('label' => !$teaser)),
     '#access' => $enabled['sell_price'],
     '#weight' => $weight['sell_price'],
@@ -1107,11 +1108,9 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'cart-item',
+    'type' => 'cart_item',
     'subject' => array(
       'cart_item' => $item,
-    ),
-    'extras' => array(
       'node' => $node,
     ),
   );
@@ -1249,7 +1248,8 @@
   );
 
   $context = array(
-    'location' => 'product-tapir-table',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array('product'),
   );
   $options = array('label' => FALSE);
@@ -1276,12 +1276,12 @@
     $context['subject'] = array('node' => $node);
     if ($enabled['list_price']) {
       $context['class'][1] = 'list';
-      $context['subject']['field'] = 'list_price';
+      $context['field'] = 'list_price';
       $data['list_price'] = array('#value' => uc_price($node->list_price, $context, $options), '#cell_attributes' => array('nowrap' => 'nowrap'));
     }
     if ($enabled['sell_price']) {
       $context['class'][1] = 'sell';
-      $context['subject']['field'] = 'sell_price';
+      $context['field'] = 'sell_price';
       $data['price'] = array('#value' => uc_price($node->sell_price, $context, $options), '#cell_attributes' => array('nowrap' => 'nowrap'));
     }
 

=== modified file 'uc_product/views/uc_product_handler_field_price.inc'
--- uc_product/views/uc_product_handler_field_price.inc	2009-06-22 14:28:18 +0000
+++ uc_product/views/uc_product_handler_field_price.inc	2009-07-11 19:04:32 +0000
@@ -12,14 +12,15 @@
 class uc_product_handler_field_price extends views_handler_field {
   function render($values) {
     $context = array(
-      'location' => 'views-price-handler',
+      'revision' => 'themed',
+      'type' => 'product',
       'class' => array(
         'product',
         $this->field,
       ),
+      'field' => $this->real_field,
       'subject' => array(
         'node' => $values,
-        'field' => $this->real_field,
       ),
     );
     $options = array('label' => FALSE);

=== modified file 'uc_product_kit/uc_product_kit.module'
--- uc_product_kit/uc_product_kit.module	2009-05-29 14:42:03 +0000
+++ uc_product_kit/uc_product_kit.module	2009-07-11 19:04:32 +0000
@@ -462,7 +462,7 @@
   $form['base']['items'] = array('#tree' => TRUE, '#weight' => 1);
   $context = array(
     'revision' => 'formatted',
-    'location' => 'product-kit-form-item-discount',
+    'type' => 'product',
   );
   if (isset($node->products)) {
     foreach ($node->products as $i => $product) {
@@ -481,9 +481,10 @@
         '#title' => t('List position'),
         '#default_value' => isset($product->ordering) ? $product->ordering : 0,
       );
+
+      $context['field'] = 'sell_price';
       $context['subject'] = array(
         'node' => $product,
-        'field' => 'sell_price',
       );
       $form['base']['items'][$i]['discount'] = array('#type' => 'textfield',
         '#title' => t('Discount'),
@@ -510,7 +511,7 @@
     }
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'product-kit-form-total',
+      'type' => 'amount',
     );
     $form['base']['kit_total'] = array(
       '#type' => 'textfield',
@@ -572,7 +573,8 @@
   ));
 
   $context = array(
-    'location' => 'product-kit-view',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array(
       'product-kit',
     ),
@@ -588,7 +590,7 @@
     );
   }
   $context['class'][1] = 'display';
-  $context['subject']['field'] = 'sell_price';
+  $context['field'] = 'sell_price';
   $node->content['display_price'] = array('#value' => uc_price($node->sell_price, $context),
     '#access' => $enabled['display_price'],
     '#weight' => $weight['display_price'],
@@ -601,14 +603,14 @@
     $node->content['body']['#weight'] = 1;
 
     $context['class'][1] = 'list';
-    $context['subject']['field'] = 'list_price';
+    $context['field'] = 'list_price';
     $node->content['list_price'] = array('#value' => uc_price($node->list_price, $context),
       '#access' => $enabled['list_price'],
       '#weight' => $weight['list_price'],
     );
 
     $context['class'][1] = 'cost';
-    $context['subject']['field'] = 'cost';
+    $context['field'] = 'cost';
     $node->content['cost'] = array('#value' => uc_price($node->cost, $context),
       '#access' => $enabled['cost'] && user_access('administer products'),
       '#weight' => $weight['cost'],
@@ -619,7 +621,7 @@
   }
 
   $context['class'][1] = 'sell';
-  $context['subject']['field'] = 'sell_price';
+  $context['field'] = 'sell_price';
   $node->content['sell_price'] = array('#value' => uc_price($node->sell_price, $context, array('label' => !$teaser)),
     '#access' => $enabled['sell_price'],
     '#weight' => $weight['sell_price'],
@@ -907,14 +909,12 @@
 
     $context = array(
       'revision' => 'altered',
-      'location' => 'cart-item',
+      'type' => 'cart_item',
+      'field' => 'price',
       'subject' => array(
         'cart_item' => $item,
-        'field' => 'price',
-      ),
-      'extras' => array(
+        'node' => $kit->products[$item->nid],
         'kit' => $kit,
-        'node' => $kit->products[$item->nid],
       ),
     );
     $price_info = array(

=== modified file 'uc_reports/uc_reports.admin.inc'
--- uc_reports/uc_reports.admin.inc	2009-06-24 15:37:14 +0000
+++ uc_reports/uc_reports.admin.inc	2009-07-11 19:04:32 +0000
@@ -73,7 +73,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'customer-report',
+    'type' => 'amount',
   );
 
   $customers = pager_query($sql . tablesort_sql($header), $page_size, 0, $sql_count);
@@ -180,7 +180,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'products-report',
+    'type' => 'amount',
   );
 
   $products = pager_query("SELECT $sql_vars FROM $sql_tables WHERE $sql_conditions GROUP BY n.nid, n.title" . tablesort_sql($header), $page_size, 0, $sql_count);
@@ -216,7 +216,6 @@
     $csv_rows[] = $csv_row;
 
     if (module_exists('uc_attribute')) {
-      $context['location'] = 'product-attribute-report';
       // Get the SKUs from this product.
       $models = _uc_reports_product_get_skus($product['nid']);
       // Add the product breakdown rows
@@ -415,7 +414,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'sales-report-summary',
+    'type' => 'amount',
   );
 
   $rows[] = array(
@@ -549,7 +548,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'sales-year-report',
+    'type' => 'amount',
   );
 
   // For each month of the year...
@@ -699,7 +698,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'sales-custom-report',
+    'type' => 'amount',
   );
 
   // Loop through the subreports and build the report table.

=== modified file 'uc_store/includes/uc_price.inc'
--- uc_store/includes/uc_price.inc	2009-05-08 19:14:30 +0000
+++ uc_store/includes/uc_price.inc	2009-07-01 15:50:51 +0000
@@ -85,7 +85,8 @@
   );
 
   $context += array(
-    'revision' => 'themed'
+    'revision' => 'themed',
+    'type' => 'amount',
   );
 
   // Clamp to allowed revisions.

=== modified file 'uc_store/uc_store.admin.inc'
--- uc_store/uc_store.admin.inc	2009-07-08 03:41:15 +0000
+++ uc_store/uc_store.admin.inc	2009-07-11 19:04:32 +0000
@@ -695,7 +695,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'currency-format-form',
+    'type' => 'amount',
   );
   $form['currency']['example'] = array(
     '#type' => 'textfield',
@@ -902,7 +902,10 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'customer-orders',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $totals = array('orders' => 0, 'items' => 0, 'total' => 0);
   while ($order = db_fetch_object($result)) {
@@ -932,7 +935,6 @@
     $totals['items'] += $item_count['COUNT(*)'];
     $totals['total'] += $order->order_total;
 
-    $context['subject'] = array('order' => $order);
     $rows[] = array(
       'data' => array(
         array('data' => $icons),
@@ -955,7 +957,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'customer-orders-total',
+    'type' => 'amount',
   );
   $output = '<p>'. l(t('Create an order for this customer.'),
                      'admin/store/orders/create/'. $uid) .'</p>';

=== modified file 'uc_store/uc_store.module'
--- uc_store/uc_store.module	2009-07-03 18:06:53 +0000
+++ uc_store/uc_store.module	2009-07-11 19:04:32 +0000
@@ -778,7 +778,6 @@
     case 'currency_format':
       $context = array(
         'revision' => 'formatted-original',
-        'location' => 'js-util-currency-format',
       );
       $amount = is_numeric($_POST['amount']) ? $_POST['amount'] : 0;
       $output = uc_price($amount, $context);

=== modified file 'uc_tax_report/uc_tax_report.module'
--- uc_tax_report/uc_tax_report.module	2009-04-24 15:49:55 +0000
+++ uc_tax_report/uc_tax_report.module	2009-07-11 19:04:32 +0000
@@ -122,7 +122,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'tax-report',
+    'type' => 'amount',
   );
   foreach($totals as $line) {
     $row = array(

=== modified file 'uc_taxes/uc_taxes.module'
--- uc_taxes/uc_taxes.module	2009-06-17 15:27:58 +0000
+++ uc_taxes/uc_taxes.module	2009-07-11 19:04:32 +0000
@@ -147,9 +147,8 @@
       //$arg1->line_items = uc_order_load_line_items($arg1, TRUE);
       $context = array(
         'revision' => 'formatted',
-        'location' => 'tax-changes-log',
-        'subject' => array(),
-        'extras' => array(
+        'type' => 'line_item',
+        'subject' => array(
           'order' => $arg1,
         ),
       );

# Begin bundle
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
zmIS1arrK73WcpMpNG7RyrhHGrKTTm+tZTVWaqWTfonru88rpph+jCbpXUqydqqt1Hm213U+6FEp
veU3jHrZKSc+106Xc7brtnD2q3XeP5J+SzlOMz83X7Tc8qz6TypHC6yNVWdEjVy9PGjZh9oO9tu+
580rw15X6SbJTSUbvGWuzKwEmzpdspm15vGs6JySWmprdwsus7fX17V2cumGq7TSiyWiW23xXi04
UctlLPSiTDDR07fXlttmmm1IzbS1VUk8vT2yqkt7YbpODRusmw3XevWcyvxPetdKK9a8quT00dOO
NXR09u0mh6ZSQiI9+vTlSkmjRJlN3ZKzDDZN0qkyysuok3YPHirDRyook4ZYcrMKKNnSTZddhmrV
yXTdN2iTlumy1ZcLN3Krph0o36So2UcrOWFXTDRQ6WbumybhNs6dJREIYZXSaMsRFzlEKCYoKDh7
7wgeMob9O1EH202am01RtJYSCMjC4KXue/lgYjP0OLk0cUke3JiUoi4W2/RAGcT8fBy9dMuMd5bL
MTCYaTNMZuBZuLIo5Tp2qpAexImAomK2heTgxh0JZ0HfTHdQ3X0Y+IJCK8R1Hn6GtYeDLjvw5wh6
Ke8mFpR90ijhxEREUL8JvSSm6zVxH4dXIlxOc8JN9SIOm6lXi2lVr0544pJmbRVNsws/JeBDphlj
WOlUZQ/HThfJJu0bt3DuvrEkpbrN8svTpWS/bOaREQSW8dNE0njRd6WdW9u9sTxSVLVisoVb3cYd
vE1JtGEt27tow21bNWVYmumq1blWyabLdECrKUKzaWlo1u9NUwLL1bduWqr+kIIxoiUo23dS24mr
7xi6U6XUe7ni9nCr4y25UdOllEmHKta+4y9Ull1xR6Ty3TO9Y4N1dnxNJ0kSeJsuHmk8adVdJV9a
Tj+trNnKy8o13JtWU8MNUnt06SbLMnf68KvHHiKVicuetnKhu4Xb12e02qtHKjt2vosq9t2WfOXK
rplqef3+rrX9y6iklGJ8W8+V6o8aJsJ2YcumVFG6yrc9qWemFmVG8NLeKNlWyzCLtHt17lKaxVoy
+MqJKtlFUQNlXibwqq1PGC7LtVQ55s1iN126qjLVqqyqk7SXauWrplRlJscsKtmrZJVNRNUs3SKs
LKsJtlEmGzLouuzlpOUmMEUDrdYKGRSN3RzTog+IDfyHvQPN1YeTmbHSV4jxVNvoAkZ1TTBKKuWo
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
mG/C9NjbmGgd4/A//F3JFOFCQ0WFCdQ=
