# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: lyle@phosphor-20090814191032-ipunc1mniklcmx3p
# target_branch: sftp://lyle.mantooth@bazaar.ubercart.org/bzr/drupal6\
#   /ubercart
# testament_sha1: 0cd141ebf4098cd04caf04d5658150f6cdf48d2c
# timestamp: 2009-08-14 15:11:20 -0400
# source_branch: bzr://bazaar.ubercart.org/bzr/drupal6/ubercart
# base_revision_id: lyle@phosphor-20090814190341-ctkrh7rsib97vxct
# 
# Begin patch
=== modified file 'payment/uc_2checkout/uc_2checkout.module'
--- payment/uc_2checkout/uc_2checkout.module	2009-07-30 13:16:59 +0000
+++ payment/uc_2checkout/uc_2checkout.module	2009-08-14 19:10:32 +0000
@@ -194,7 +194,10 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => '2checkout-form',
+    'type' => 'order_total',
+    'subject' => array(
+      'order' => $order,
+    ),
   );
   $options = array(
     'sign' => FALSE,
@@ -225,6 +228,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-21 14:29:21 +0000
+++ payment/uc_authorizenet/uc_authorizenet.module	2009-07-24 17:06:02 +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-08-12 16:06:51 +0000
+++ payment/uc_google_checkout/uc_google_checkout.module	2009-08-14 19:10:32 +0000
@@ -501,7 +501,7 @@
           if ($settings['fixed_charge']) {
             $context = array(
               'revision' => 'formatted-original',
-              'location' => 'google-checkout-cart-request',
+              'type' => 'amount',
             );
             $options = array(
               'sign' => FALSE,
@@ -939,7 +939,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']);
@@ -974,7 +974,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-07-12 01:09:29 +0000
+++ payment/uc_payment/uc_payment.ca.inc	2009-07-24 17:06:02 +0000
@@ -180,7 +180,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-08-10 17:14:40 +0000
+++ payment/uc_payment_pack/uc_payment_pack.module	2009-08-14 19:10: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-07-29 14:58:34 +0000
+++ shipping/uc_flatrate/uc_flatrate.admin.inc	2009-08-14 19:10:32 +0000
@@ -13,8 +13,8 @@
   $output = '';
 
   $context = array(
-    'location' => 'shipping-flatrate-method-admin',
-    'subject' => array(),
+    'revision' => 'themed',
+    'type' => 'amount',
   );
 
   $rows = array();
@@ -22,8 +22,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-14 21:04:36 +0000
+++ shipping/uc_flatrate/uc_flatrate.module	2009-07-24 17:06:02 +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 : '',
@@ -211,18 +209,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,
@@ -241,7 +235,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-08-11 21:07:20 +0000
+++ shipping/uc_quote/uc_quote.module	2009-08-14 19:10:32 +0000
@@ -899,8 +899,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-07-01 15:58:50 +0000
+++ shipping/uc_shipping/uc_shipping.admin.inc	2009-07-24 17:06:02 +0000
@@ -597,14 +597,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-05-14 21:04:36 +0000
+++ shipping/uc_shipping/uc_shipping.module	2009-07-24 17:06:02 +0000
@@ -252,11 +252,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-05-14 21:04:36 +0000
+++ shipping/uc_ups/uc_ups.admin.inc	2009-07-24 17:06:02 +0000
@@ -212,11 +212,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-08-11 20:23:57 +0000
+++ shipping/uc_ups/uc_ups.module	2009-08-14 19:10:32 +0000
@@ -839,8 +839,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-07-01 15:58:50 +0000
+++ shipping/uc_usps/uc_usps.module	2009-07-24 17:06:02 +0000
@@ -402,8 +402,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-08-12 20:25:48 +0000
+++ shipping/uc_weightquote/uc_weightquote.module	2009-08-14 19:10:32 +0000
@@ -209,9 +209,7 @@
   $mid = $method[1];
   $context = array(
     'revision' => 'altered',
-    'location' => 'shipping-weightquote-method-json',
-    'subject' => array(),
-    'extras' => array(),
+    'type' => 'amount',
   );
 
   if ($method = db_fetch_object(db_query("SELECT * FROM {uc_weightquote_methods} WHERE mid = %d", $mid))) {

=== modified file 'uc_attribute/uc_attribute.admin.inc'
--- uc_attribute/uc_attribute.admin.inc	2009-07-23 15:04:52 +0000
+++ uc_attribute/uc_attribute.admin.inc	2009-07-24 17:06:02 +0000
@@ -216,8 +216,9 @@
   );
 
   $context = array(
-    'location' => 'attribute-options-form',
-    'extras' => array(
+    'revision' => 'themed',
+    'type' => 'attribute_option',
+    'subject' => array(
       'attribute' => $attribute,
     ),
   );
@@ -249,13 +250,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);
   }
 
@@ -516,17 +515,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(

=== modified file 'uc_attribute/uc_attribute.module'
--- uc_attribute/uc_attribute.module	2009-07-29 06:22:14 +0000
+++ uc_attribute/uc_attribute.module	2009-08-14 19:10:32 +0000
@@ -675,20 +675,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,
@@ -698,6 +697,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-14 21:04:36 +0000
+++ uc_cart/uc_cart.admin.inc	2009-07-24 17:06:02 +0000
@@ -60,7 +60,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-21 14:29:21 +0000
+++ uc_cart/uc_cart.module	2009-07-24 17:06:02 +0000
@@ -701,14 +701,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>'
@@ -750,7 +751,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>'
@@ -926,7 +927,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'cart-subtotal',
+    'type' => 'amount',
   );
   $i = 0;
   foreach ($items as $item) {
@@ -1122,7 +1123,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-29 06:22:14 +0000
+++ uc_cart/uc_cart.pages.inc	2009-08-14 19:10:32 +0000
@@ -63,7 +63,7 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'minimum-subtotal',
+    'type' => 'amount',
   );
 
   if (($min = uc_price(variable_get('uc_minimum_subtotal', 0), $context)) > 0) {
@@ -79,7 +79,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');
@@ -217,7 +217,7 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'cart-checkout-item',
+    'type' => 'cart_item',
   );
   $contents = uc_cart_get_contents();
   foreach ($contents as $key => $item) {
@@ -226,9 +226,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-23 15:04:52 +0000
+++ uc_cart/uc_cart_checkout_pane.inc	2009-07-24 17:06:02 +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) . uc_product_get_description($item);
@@ -40,9 +40,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
@@ -577,23 +576,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;
@@ -601,8 +600,9 @@
     $description = check_plain($item->title) . uc_product_get_description($item);
 
     // 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'),
@@ -614,7 +614,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-29 18:17:56 +0000
+++ uc_catalog/uc_catalog.module	2009-08-14 19:10:32 +0000
@@ -702,7 +702,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-07-01 15:58:50 +0000
+++ uc_order/templates/admin.itpl.php	2009-07-24 17:06:02 +0000
@@ -18,7 +18,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-07-01 15:58:50 +0000
+++ uc_order/templates/customer.itpl.php	2009-07-24 17:06:02 +0000
@@ -157,7 +157,7 @@
 
                     <?php
                     $context = array(
-                      'location' => 'order-invoice-line-item',
+                      'revision' => 'themed',
                       'subject' => array(
                         'order' => $order,
                       ),
@@ -214,7 +214,6 @@
                                 'qty' => $product->qty,
                               );
                               $context['subject']['order_product'] = $product;
-                              $context['location'] = 'order-invoice-product';
                               ?>
                           <tr>
                             <td valign="top" nowrap="nowrap">
@@ -223,7 +222,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-08-12 15:20:40 +0000
+++ uc_order/uc_order.admin.inc	2009-08-14 19:10:32 +0000
@@ -480,10 +480,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);
@@ -506,7 +503,6 @@
       }
     }
 
-    $context['subject']['order'] = $order;
     $rows[] = array(
       'data' => array(
         array('data' => uc_order_actions($order, TRUE), 'nowrap' => 'nowrap'),
@@ -1027,7 +1023,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)) {
@@ -1289,13 +1285,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-14 21:04:36 +0000
+++ uc_order/uc_order.line_item.inc	2009-07-24 17:06:02 +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-08-12 15:20:40 +0000
+++ uc_order/uc_order.module	2009-08-14 19:10:32 +0000
@@ -374,13 +374,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);
           }
@@ -392,11 +390,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-08-04 02:33:46 +0000
+++ uc_order/uc_order.order_pane.inc	2009-08-14 19:10: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,
         ),
       );
@@ -704,7 +704,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'),
@@ -757,11 +757,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;',
@@ -775,18 +779,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,
@@ -869,11 +873,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;',
@@ -887,18 +895,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-08-14 15:02:31 +0000
+++ uc_product/uc_product.module	2009-08-14 19:10:32 +0000
@@ -711,7 +711,8 @@
   ));
 
   $context = array(
-    'location' => 'product-view',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array(
       'product',
     ),
@@ -728,7 +729,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'],
@@ -743,14 +744,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'],
@@ -762,7 +763,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'],
@@ -1150,11 +1151,9 @@
 
   $context = array(
     'revision' => 'altered',
-    'location' => 'cart-item',
+    'type' => 'cart_item',
     'subject' => array(
       'cart_item' => $item,
-    ),
-    'extras' => array(
       'node' => $node,
     ),
   );
@@ -1296,7 +1295,8 @@
   );
 
   $context = array(
-    'location' => 'product-tapir-table',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array('product'),
   );
   $options = array('label' => FALSE);
@@ -1323,12 +1323,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-07-23 18:26:46 +0000
+++ uc_product_kit/uc_product_kit.module	2009-07-24 17:06:02 +0000
@@ -472,7 +472,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) {
@@ -491,9 +491,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'),
@@ -520,7 +521,7 @@
     }
     $context = array(
       'revision' => 'formatted-original',
-      'location' => 'product-kit-form-total',
+      'type' => 'amount',
     );
     $form['base']['kit_total'] = array(
       '#type' => 'textfield',
@@ -582,7 +583,8 @@
   ));
 
   $context = array(
-    'location' => 'product-kit-view',
+    'revision' => 'themed',
+    'type' => 'product',
     'class' => array(
       'product-kit',
     ),
@@ -598,7 +600,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'],
@@ -611,14 +613,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'],
@@ -629,7 +631,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'],
@@ -948,14 +950,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-07-21 14:29:21 +0000
+++ uc_reports/uc_reports.admin.inc	2009-07-24 17:06:02 +0000
@@ -76,7 +76,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'customer-report',
+    'type' => 'amount',
   );
 
   $customers = pager_query($sql . tablesort_sql($header), $page_size, 0, $sql_count);
@@ -183,7 +183,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);
@@ -219,7 +219,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
@@ -422,7 +421,7 @@
 
   $context = array(
     'revision' => 'themed-original',
-    'location' => 'sales-report-summary',
+    'type' => 'amount',
   );
 
   $rows[] = array(
@@ -558,7 +557,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'sales-year-report',
+    'type' => 'amount',
   );
 
   // For each month of the year...
@@ -718,7 +717,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-07-21 14:29:21 +0000
+++ uc_store/includes/uc_price.inc	2009-07-24 17:06:02 +0000
@@ -91,7 +91,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-21 14:29:21 +0000
+++ uc_store/uc_store.admin.inc	2009-07-24 17:06:02 +0000
@@ -737,7 +737,7 @@
 
   $context = array(
     'revision' => 'formatted-original',
-    'location' => 'currency-format-form',
+    'type' => 'amount',
   );
   $form['currency']['example'] = array(
     '#type' => 'textfield',
@@ -929,7 +929,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)) {
@@ -959,7 +962,6 @@
     $totals['items'] += $item_count['COUNT(*)'];
     $totals['total'] += $order->order_total;
 
-    $context['subject'] = array('order' => $order);
     $rows[] = array(
       'data' => array(
         array('data' => $icons),
@@ -982,7 +984,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-08-12 15:20:40 +0000
+++ uc_store/uc_store.module	2009-08-14 19:10:32 +0000
@@ -811,7 +811,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-05-14 21:04:36 +0000
+++ uc_tax_report/uc_tax_report.module	2009-07-24 17:06:02 +0000
@@ -123,7 +123,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-08-14 19:03:41 +0000
+++ uc_taxes/uc_taxes.module	2009-08-14 19:10:32 +0000
@@ -155,9 +155,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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
