From 0bb339fc9962f0ef30bb0ed3646b2f588bd1e27c Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Sat, 5 Nov 2016 16:50:18 +0100 Subject: [PATCH] updated ubercart, faq --- .../payment/uc_2checkout/uc_2checkout.info | 6 +- .../payment/uc_2checkout/uc_2checkout.install | 15 +- .../payment/uc_2checkout/uc_2checkout.module | 81 +++++---- .../uc_2checkout/uc_2checkout.pages.inc | 52 +++++- .../uc_authorizenet/uc_authorizenet.info | 6 +- .../payment/uc_credit/tests/test_gateway.info | 6 +- .../payment/uc_credit/tests/uc_credit.test | 2 +- .../ubercart/payment/uc_credit/uc_credit.info | 6 +- .../uc_cybersource/uc_cybersource.info | 6 +- .../uc_google_checkout.info | 6 +- .../payment/uc_payment/tests/uc_payment.test | 2 +- .../payment/uc_payment/uc_payment-rtl.css | 42 +++++ .../payment/uc_payment/uc_payment.admin.inc | 8 +- .../payment/uc_payment/uc_payment.css | 22 +-- .../payment/uc_payment/uc_payment.info | 6 +- .../payment/uc_payment/uc_payment.install | 9 +- .../uc_payment_pack/uc_payment_pack.info | 6 +- .../ubercart/payment/uc_paypal/uc_paypal.info | 6 +- .../payment/uc_paypal/uc_paypal.module | 2 +- .../shipping/uc_flatrate/uc_flatrate.info | 6 +- .../shipping/uc_quote/tests/uc_quote.test | 2 +- .../shipping/uc_quote/uc_quote-rtl.css | 14 ++ .../ubercart/shipping/uc_quote/uc_quote.css | 4 +- .../ubercart/shipping/uc_quote/uc_quote.info | 6 +- .../shipping/uc_quote/uc_quote.module | 9 - .../shipping/uc_quote/uc_quote.variable.inc | 40 +++++ .../uc_shipping/uc_shipping.admin.inc | 2 +- .../shipping/uc_shipping/uc_shipping.info | 6 +- .../ubercart/shipping/uc_ups/uc_ups.info | 6 +- .../shipping/uc_usps/uc_usps.admin.inc | 2 +- .../ubercart/shipping/uc_usps/uc_usps.info | 6 +- .../uc_weightquote/uc_weightquote.info | 6 +- .../ubercart/uc_ajax_admin/uc_ajax_admin.info | 6 +- .../uc_attribute/tests/uc_attribute.test | 14 +- .../tests/uc_attribute_checkout.test | 2 +- .../uc_attribute/uc_attribute.admin.inc | 11 +- .../ubercart/uc_attribute/uc_attribute.info | 6 +- .../ubercart/uc_attribute/uc_attribute.module | 10 +- .../uc_attribute/uc_attribute.theme.inc | 3 + .../ubercart/uc_cart/tests/uc_cart.test | 2 +- .../uc_cart/tests/uc_cart_entity_test.info | 6 +- .../ubercart/uc_cart/uc_cart-rtl.css | 76 +++++++++ .../ecommerce/ubercart/uc_cart/uc_cart.css | 34 ++-- .../ecommerce/ubercart/uc_cart/uc_cart.info | 6 +- .../ecommerce/ubercart/uc_cart/uc_cart.js | 5 +- .../ubercart/uc_cart/uc_cart.theme.inc | 3 + .../ubercart/uc_cart/uc_cart_block-rtl.css | 55 ++++++ .../ubercart/uc_cart/uc_cart_block.css | 25 +-- .../uc_cart/uc_cart_checkout_pane.inc | 2 +- .../uc_cart_links/tests/uc_cart_links.test | 5 +- .../uc_cart_links/uc_cart_links.admin.inc | 27 +++ .../ubercart/uc_cart_links/uc_cart_links.info | 6 +- .../uc_cart_links/uc_cart_links.pages.inc | 4 + .../ubercart/uc_catalog/tests/uc_catalog.test | 4 +- .../ubercart/uc_catalog/uc_catalog.css | 1 + .../ubercart/uc_catalog/uc_catalog.info | 6 +- .../ubercart/uc_file/tests/uc_file.test | 116 +++++++++++++ .../ubercart/uc_file/uc_file.admin.inc | 6 +- .../ecommerce/ubercart/uc_file/uc_file.css | 1 + .../ecommerce/ubercart/uc_file/uc_file.info | 9 +- .../ecommerce/ubercart/uc_file/uc_file.module | 30 ++-- .../ubercart/uc_file/uc_file.theme.inc | 3 + .../uc_googleanalytics.info | 6 +- .../ubercart/uc_order/uc_order-rtl.css | 98 +++++++++++ .../ubercart/uc_order/uc_order.admin.inc | 2 +- .../ecommerce/ubercart/uc_order/uc_order.css | 50 +++--- .../ecommerce/ubercart/uc_order/uc_order.info | 6 +- .../ubercart/uc_order/uc_order.module | 13 +- .../ubercart/uc_order/uc_order.rules.inc | 156 +++++++++++++++--- .../ubercart/uc_product/tests/uc_product.test | 6 +- .../ubercart/uc_product/uc_product-rtl.css | 30 ++++ .../ubercart/uc_product/uc_product.admin.inc | 2 +- .../ubercart/uc_product/uc_product.css | 19 ++- .../ubercart/uc_product/uc_product.info | 6 +- .../ubercart/uc_product/uc_product.module | 21 ++- .../ubercart/uc_product/uc_product.theme.inc | 3 + .../uc_product_kit/tests/uc_product_kit.test | 2 +- .../uc_product_kit/uc_product_kit-rtl.css | 19 +++ .../uc_product_kit/uc_product_kit.css | 7 +- .../uc_product_kit/uc_product_kit.info | 6 +- .../uc_product_kit/uc_product_kit.module | 1 - .../ubercart/uc_reports/uc_reports.css | 1 + .../ubercart/uc_reports/uc_reports.info | 6 +- .../ubercart/uc_role_views-419700.patch | 147 ----------------- .../ubercart/uc_roles/tests/uc_roles.test | 49 +++++- .../ecommerce/ubercart/uc_roles/uc_roles.info | 9 +- .../ubercart/uc_roles/uc_roles.info.orig | 16 -- .../ubercart/uc_roles/uc_roles.module | 11 +- .../ubercart/uc_roles/uc_roles.views.inc | 110 ------------ .../uc_roles/views/uc_roles.views.inc | 64 +++++++ .../views/uc_roles_handler_field_rid.inc | 52 ++++++ .../ubercart/uc_stock/tests/uc_stock.test | 2 +- .../ecommerce/ubercart/uc_stock/uc_stock.info | 6 +- .../uc_store/countries/cyprus_196_1.cif | 2 +- .../{india_356_2.cif => india_356_3.cif} | 35 +++- .../uc_store/countries/iran_364_3.cif | 1 - .../ubercart/uc_store/tests/uc_address.test | 2 +- .../ubercart/uc_store/tests/uc_ajax.test | 2 +- .../ubercart/uc_store/tests/uc_store.test | 2 +- .../ubercart/uc_store/uc_store-rtl.css | 29 ++++ .../ubercart/uc_store/uc_store.countries.inc | 8 +- .../ecommerce/ubercart/uc_store/uc_store.css | 28 +--- .../ecommerce/ubercart/uc_store/uc_store.info | 6 +- .../ubercart/uc_store/uc_store.module | 4 +- .../ubercart/uc_tax_report/uc_tax_report.info | 6 +- .../ubercart/uc_taxes/tests/uc_taxes.test | 2 +- .../ecommerce/ubercart/uc_taxes/uc_taxes.info | 6 +- .../modules/contrib/users/faq/faq.admin.inc | 27 +++ sites/all/modules/contrib/users/faq/faq.info | 6 +- .../all/modules/contrib/users/faq/faq.module | 49 ++++-- 110 files changed, 1382 insertions(+), 641 deletions(-) create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.variable.inc create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_file/tests/uc_file.test create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product-rtl.css create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit-rtl.css delete mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_role_views-419700.patch delete mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info.orig delete mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.views.inc create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles.views.inc create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles_handler_field_rid.inc rename sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/{india_356_2.cif => india_356_3.cif} (80%) create mode 100644 sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store-rtl.css diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.info index c9b520f2..ac858f2b 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.info @@ -4,9 +4,9 @@ dependencies[] = uc_payment package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.install b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.install index ab5dd2bb..0eecf9f4 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.install +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.install @@ -9,9 +9,18 @@ * Implements hook_uninstall(). */ function uc_2checkout_uninstall() { - db_delete('variable') - ->condition('name', 'uc_2checkout_%', 'LIKE') - ->execute(); + + // Remove all module variables from the database. + variable_del('uc_2checkout_check'); + variable_del('uc_2checkout_checkout_type'); + variable_del('uc_2checkout_currency_code'); + variable_del('uc_2checkout_demo'); + variable_del('uc_2checkout_language'); + variable_del('uc_2checkout_notification_url'); + variable_del('uc_2checkout_method_title'); + variable_del('uc_2checkout_secret_word'); + variable_del('uc_2checkout_server_url'); + variable_del('uc_2checkout_sid'); } /** diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.module b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.module index 694a9643..a5f63160 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.module @@ -31,6 +31,11 @@ function uc_2checkout_menu() { 'type' => MENU_CALLBACK, 'file' => 'uc_2checkout.pages.inc', ); + $items['cart/2checkout/notification'] = array( + 'page callback' => 'uc_2checkout_process_notification', + 'access callback' => TRUE, + 'file' => 'uc_2checkout.pages.inc', + ); return $items; } @@ -143,6 +148,15 @@ function uc_payment_method_2checkout($op, &$order, $form = NULL, &$form_state = ), '#default_value' => variable_get('uc_2checkout_language', 'en'), ); + $form['uc_2checkout_currency_code'] = array( + '#type' => 'select', + '#title' => t('Currency for the sale'), + '#options' => array( + '' => t('Auto detected by 2CO'), + 'USD', 'EUR', 'ARS', 'AUD', 'BRL', 'GBP', 'CAD', 'DKK', 'HKD', 'INR', 'ILS', 'JPY', 'LTL', 'MYR', 'MXN', 'NZD', 'NOK', 'PHP', 'RON', 'RUB', 'SGD', 'ZAR', 'SEK', 'CHF', 'TRY', 'AED' + ), + '#default_value' => variable_get('uc_2checkout_currency_code', ''), + ); $form['uc_2checkout_check'] = array( '#type' => 'checkbox', '#title' => t('Allow customers to choose to pay by credit card or online check.'), @@ -154,14 +168,20 @@ function uc_payment_method_2checkout($op, &$order, $form = NULL, &$form_state = '#default_value' => variable_get('uc_2checkout_method_title', t('Credit card on a secure server:')), ); $form['uc_2checkout_checkout_type'] = array( - '#type' => 'select', - '#title' => t('2Checkout.com checkout type'), - '#description' => t('Single page checkout only works for stores selling intangible products using credit card payments.'), + '#type' => 'radios', + '#title' => t('Checkout type'), '#options' => array( - 'multi' => t('Multi-page checkout'), - 'single' => t('Single page checkout'), + 'dynamic' => t('Dynamic checkout (user is redirected to 2CO)'), + 'direct' => t('Direct checkout (payment page opens in iframe popup)'), ), - '#default_value' => variable_get('uc_2checkout_checkout_type', 'multi'), + '#default_value' => variable_get('uc_2checkout_checkout_type', 'dynamic'), + ); + $form['uc_2checkout_notification_url'] = array( + '#type' => 'textfield', + '#title' => t('Instant notification settings URL'), + '#description' => t('Pass this URL to the instant notification settings parameter in your 2Checkout account. This way, any refunds or failed fraud reviews will automatically cancel the Ubercart order.', array('@help_url' => 'https://www.2checkout.com/static/va/documentation/INS/index.html')), + '#default_value' => url('cart/2checkout/notification', array('absolute' => TRUE)), + '#attributes' => array('readonly' => 'readonly'), ); return $form; } @@ -178,14 +198,7 @@ function uc_2checkout_form($form, &$form_state, $order) { $data = array( 'sid' => variable_get('uc_2checkout_sid', ''), - 'total' => uc_currency_format($order->order_total, FALSE, FALSE, '.'), - 'cart_order_id' => $order->order_id, - 'demo' => variable_get('uc_2checkout_demo', TRUE) ? 'Y' : 'N', - 'fixed' => 'Y', - 'lang' => variable_get('uc_2checkout_language', 'en'), - 'x_receipt_link_url' => url('cart/2checkout/complete/' . uc_cart_get_id(), array('absolute' => TRUE)), - 'merchant_order_id' => $order->order_id, - 'pay_method' => isset($_SESSION['pay_method']) ? $_SESSION['pay_method'] : 'CC', + 'mode' => '2CO', 'card_holder_name' => drupal_substr($order->billing_first_name . ' ' . $order->billing_last_name, 0, 128), 'street_address' => drupal_substr($order->billing_street1, 0, 64), 'street_address2' => drupal_substr($order->billing_street2, 0, 64), @@ -195,19 +208,34 @@ function uc_2checkout_form($form, &$form_state, $order) { 'country' => $country[0]['country_iso_code_3'], 'email' => drupal_substr($order->primary_email, 0, 64), 'phone' => drupal_substr($order->billing_phone, 0, 16), - 'id_type' => 1, + 'purchase_step' => 'payment-method', + + 'demo' => variable_get('uc_2checkout_demo', TRUE) ? 'Y' : 'N', + 'lang' => variable_get('uc_2checkout_language', 'en'), + 'merchant_order_id' => $order->order_id, + 'pay_method' => 'CC', + 'x_receipt_link_url' => url('cart/2checkout/complete/' . uc_cart_get_id(), array('absolute' => TRUE)), + + 'total' => uc_currency_format($order->order_total, FALSE, FALSE, '.'), + 'cart_order_id' => $order->order_id, ); + if ($currency_code = variable_get('uc_2checkout_currency_code', '')) { + $data['currency_code'] = $currency_code; + } + $i = 0; foreach ($order->products as $product) { $i++; - $data['c_prod_' . $i] = $product->model . ',' . $product->qty; - $data['c_name_' . $i] = $product->title; - $data['c_description_' . $i] = ''; - $data['c_price_' . $i] = uc_currency_format($product->price, FALSE, FALSE, '.'); + $data['li_' . $i . '_name'] = $product->title; + $data['li_' . $i . '_price'] = uc_currency_format($product->price, FALSE, FALSE, '.'); } - $form['#action'] = _uc_2checkout_post_url(variable_get('uc_2checkout_checkout_type', 'multi')); + if (variable_get('uc_2checkout_checkout_type', 'dynamic') == 'direct') { + $form['#suffix'] = ''; + } + + $form['#action'] = variable_get('uc_2checkout_server_url', 'https://www.2checkout.com/checkout/purchase'); foreach ($data as $name => $value) { $form[$name] = array('#type' => 'hidden', '#value' => $value); @@ -221,16 +249,3 @@ function uc_2checkout_form($form, &$form_state, $order) { return $form; } - -/** - * Helper function to obtain 2Checkout URL for a transaction. - */ -function _uc_2checkout_post_url($type) { - switch ($type) { - case 'single': - return 'https://www.2checkout.com/checkout/spurchase'; - case 'multi': - default: - return 'https://www.2checkout.com/2co/buyer/purchase'; - } -} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.pages.inc b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.pages.inc index e07c24f2..c4eeb242 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.pages.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_2checkout/uc_2checkout.pages.inc @@ -2,21 +2,20 @@ /** * @file - * 2checkout menu items. + * 2Checkout menu items. */ /** - * Finalizes 2checkout transaction. + * Finalizes 2Checkout transaction. */ function uc_2checkout_complete($cart_id = 0) { - watchdog('2Checkout', 'Receiving new order notification for order !order_id.', array('!order_id' => check_plain($_REQUEST['merchant_order_id']))); + watchdog('uc_2checkout', 'Receiving new order notification for order !order_id.', array('!order_id' => check_plain($_REQUEST['merchant_order_id']))); $order = uc_order_load($_REQUEST['merchant_order_id']); - if ($order === FALSE || uc_order_status_data($order->order_status, 'state') != 'in_checkout') { + if ($order === FALSE) { return t('An error has occurred during payment. Please contact us to ensure your order has submitted.'); } - $key = $_REQUEST['key']; $order_number = variable_get('uc_2checkout_demo', TRUE) ? 1 : $_REQUEST['order_number']; $valid = md5(variable_get('uc_2checkout_secret_word', 'tango') . $_REQUEST['sid'] . $order_number . $_REQUEST['total']); @@ -26,7 +25,7 @@ function uc_2checkout_complete($cart_id = 0) { } if ($_REQUEST['demo'] == 'Y' xor variable_get('uc_2checkout_demo', TRUE)) { - watchdog('uc_2checkout', 'The 2checkout payment for order @order_id demo flag was set to %flag, but the module is set to %mode mode.', array( + watchdog('uc_2checkout', 'The 2Checkout payment for order @order_id demo flag was set to %flag, but the module is set to %mode mode.', array( '@order_url' => url('admin/store/orders/' . $order->order_id), '@order_id' => $order->order_id, '%flag' => $_REQUEST['demo'] == 'Y' ? 'Y' : 'N', @@ -63,7 +62,7 @@ function uc_2checkout_complete($cart_id = 0) { if ($_REQUEST['credit_card_processed'] == 'Y' && is_numeric($_REQUEST['total'])) { $comment = t('Paid by !type, 2Checkout.com order #!order.', array('!type' => $_REQUEST['pay_method'] == 'CC' ? t('credit card') : t('echeck'), '!order' => check_plain($_REQUEST['order_number']))); - uc_payment_enter($order->order_id, '2checkout', $_REQUEST['total'], 0, NULL, $comment); + uc_payment_enter($order->order_id, '2Checkout', $_REQUEST['total'], 0, NULL, $comment); } else { drupal_set_message(t('Your order will be processed as soon as your payment clears at 2Checkout.com.')); @@ -86,3 +85,42 @@ function uc_2checkout_complete($cart_id = 0) { return $build; } + +/** + * React on status changes from 2CO. + */ +function uc_2checkout_process_notification() { + $values = $_POST; + watchdog('uc_2checkout', 'Received 2Checkout notification with following data: !data', array('!data' => print_r($values, TRUE))); + + if (!empty($values['message_type']) && !empty($values['md5_hash']) && !empty($values['message_id'])) { + // Validate the hash. + $secret_word = variable_get('uc_2checkout_secret_word', 'tango'); + $sid = variable_get('uc_2checkout_sid', ''); + $twocheckout_order_id = $values['sale_id']; + $twocheckout_invoice_id = $values['invoice_id']; + $hash = strtoupper(md5($twocheckout_order_id . $sid . $twocheckout_invoice_id . $secret_word)); + + if ($hash != $values['md5_hash']) { + watchdog('uc_2checkout', '2CO notification #@num had a wrong hash.', array('@num' => $values['message_id'])); + die('Hash Incorrect'); + } + + $order_id = $values['vendor_order_id']; + if ($values['message_type'] == 'FRAUD_STATUS_CHANGED') { + switch ($values['fraud_status']) { + case 'fail': + uc_order_update_status($order_id, uc_order_state_default('canceled')); + uc_order_comment_save($order_id, 0, t('Order have not passed 2Checkout fraud review.')); + die('fraud'); + break; + } + } + elseif ($values['message_type'] == 'REFUND_ISSUED') { + uc_order_update_status($order_id, uc_order_state_default('canceled')); + uc_order_comment_save($order_id, 0, t('Order have been refunded through 2Checkout.')); + die('refund'); + } + } + die('ok'); +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_authorizenet/uc_authorizenet.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_authorizenet/uc_authorizenet.info index 16fefd51..896b599d 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_authorizenet/uc_authorizenet.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_authorizenet/uc_authorizenet.info @@ -5,9 +5,9 @@ dependencies[] = uc_credit package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/test_gateway.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/test_gateway.info index 45cadfdb..7b1b29c7 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/test_gateway.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/test_gateway.info @@ -5,9 +5,9 @@ dependencies[] = uc_credit package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/uc_credit.test b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/uc_credit.test index 561bda87..bd9a14a8 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/uc_credit.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/tests/uc_credit.test @@ -62,7 +62,7 @@ class UbercartCreditCardTestCase extends UbercartTestHelper { /** * Implements DrupalWebTestCase::setUp(). */ - public function setUp(array $modules = array()) { + protected function setUp($modules = array(), $permissions = array()) { $modules += array('uc_payment', 'uc_credit', 'test_gateway'); $permissions = array('administer credit cards', 'process credit cards'); parent::setUp($modules, $permissions); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/uc_credit.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/uc_credit.info index 5137eedd..479ccd64 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/uc_credit.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_credit/uc_credit.info @@ -8,9 +8,9 @@ core = 7.x ; Test cases files[] = tests/uc_credit.test -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_cybersource/uc_cybersource.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_cybersource/uc_cybersource.info index e1524c5a..c696e486 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_cybersource/uc_cybersource.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_cybersource/uc_cybersource.info @@ -7,9 +7,9 @@ core = 7.x ; Class definitions files[] = uc_cybersource.soap.inc -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_google_checkout/uc_google_checkout.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_google_checkout/uc_google_checkout.info index 5d765cd0..0d2618f8 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_google_checkout/uc_google_checkout.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_google_checkout/uc_google_checkout.info @@ -6,9 +6,9 @@ dependencies[] = uc_quote package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/tests/uc_payment.test b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/tests/uc_payment.test index ec30fb29..dce32746 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/tests/uc_payment.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/tests/uc_payment.test @@ -18,7 +18,7 @@ class UbercartPaymentPaneTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - public function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_payment', 'uc_payment_pack')); $this->drupalLogin($this->adminUser); $this->drupalPost('node/' . $this->product->nid, array(), t('Add to cart')); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment-rtl.css new file mode 100644 index 00000000..305efc8a --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment-rtl.css @@ -0,0 +1,42 @@ +/** + * @file + * Styles for uc_payment module. + */ + +.payment-details-cod .form-item { + float: right; + padding-right: inherit; + padding-left: 5px; +} + +.payment-details-credit label { + clear: right; + float: right; +} + +.payment-details-credit input, +.payment-details-credit select { + float: right; +} + +.payment-details-credit .field-suffix { + float: right; +} + +img.uc-2checkout-logo { + left: auto; + right: 2.2em; +} + +#line-items-div { + float: left; + margin: 0 1em 1em 0; +} + +#uc-payment-by-order-form .form-type-item { + float: right; +} + +#uc-payment-by-order-form table { + clear: right; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.admin.inc index 7be06f3c..c918fd4d 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.admin.inc @@ -107,7 +107,13 @@ function theme_uc_payment_method_table($variables) { function uc_payment_method_settings_form($form, &$form_state, $method_id) { $callback = _uc_payment_method_data($method_id, 'callback'); $null = NULL; - $form = $callback('settings', $null, array(), $form_state); + if (function_exists($callback)) { + $form = $callback('settings', $null, array(), $form_state); + } + else { + drupal_not_found(); + drupal_exit(); + } return system_settings_form($form); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.css b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.css index 4a541662..24275964 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.css @@ -21,8 +21,8 @@ .payment-details-cod .form-item { display: block; - float: left; - padding-right: 5px; + float: left; /* LTR */ + padding-right: 5px; /* LTR */ } .payment-details-credit .form-item { @@ -30,8 +30,8 @@ } .payment-details-credit label { - clear: left; - float: left; + clear: left; /* LTR */ + float: left; /* LTR */ margin: 2px 0; padding-top: 5px; width: 10em; @@ -39,7 +39,7 @@ .payment-details-credit input, .payment-details-credit select { - float: left; + float: left; /* LTR */ margin: 2px; } @@ -51,20 +51,20 @@ } .payment-details-credit .field-suffix { - float: left; + float: left; /* LTR */ margin: 2px; padding-top: 5px; } img.uc-2checkout-logo { position: relative; - left: 2.2em; + left: 2.2em; /* LTR */ } #line-items-div { border: 1px solid #bbb; - float: right; - margin: 0 0 1em 1em; + float: right; /* LTR */ + margin: 0 0 1em 1em; /* LTR */ } #line-items-div table { @@ -81,10 +81,10 @@ img.uc-2checkout-logo { } #uc-payment-by-order-form .form-type-item { - float: left; + float: left; /* LTR */ width: 10em; } #uc-payment-by-order-form table { - clear: left; + clear: left; /* LTR */ } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.info index f00b4486..fe5359dd 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.info @@ -10,9 +10,9 @@ files[] = tests/uc_payment.test configure = admin/store/settings/payment -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.install b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.install index 19b2ba83..bd523a1f 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.install +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment/uc_payment.install @@ -86,14 +86,19 @@ function uc_payment_schema() { function uc_payment_install() { $t = get_t(); - db_insert('uc_order_statuses') - ->fields(array( + db_merge('uc_order_statuses') + ->key(array('order_status_id' => 'payment_received')) + ->insertFields(array( 'order_status_id' => 'payment_received', 'title' => $t('Payment received'), 'state' => 'payment_received', 'weight' => 10, 'locked' => 1, )) + ->updateFields(array( + 'state' => 'payment_received', + 'locked' => 1, + )) ->execute(); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment_pack/uc_payment_pack.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment_pack/uc_payment_pack.info index d2bc6638..2ee0532c 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment_pack/uc_payment_pack.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_payment_pack/uc_payment_pack.info @@ -5,9 +5,9 @@ dependencies[] = uc_payment package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.info b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.info index 285cdaef..91363c50 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.info @@ -4,9 +4,9 @@ dependencies[] = uc_payment package = Ubercart - payment core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.module b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.module index 20c29524..c10796ad 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/payment/uc_paypal/uc_paypal.module @@ -530,7 +530,7 @@ function uc_payment_method_paypal_ec($op, &$order) { $form['api'] = array( '#type' => 'fieldset', '#title' => t('API credentials'), - '#description' => t('!link for information on obtaining credentials. You need to acquire an API Signature. If you have already requested API credentials, you can review your settings under the API Access section of your PayPal profile.', array('!link' => l(t('Click here'), 'https://www.paypal.com/IntegrationCenter/ic_certificate.html'))), + '#description' => t('!link for information on obtaining credentials. You need to acquire an API Signature. If you have already requested API credentials, you can review your settings under the API Access section of your PayPal profile.', array('!link' => l(t('Click here'), 'https://developer.paypal.com/docs/classic/api/apiCredentials/'))), '#collapsible' => TRUE, '#collapsed' => variable_get('uc_paypal_api_username', '') != '', ); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_flatrate/uc_flatrate.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_flatrate/uc_flatrate.info index 31316e13..57fd80e4 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_flatrate/uc_flatrate.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_flatrate/uc_flatrate.info @@ -6,9 +6,9 @@ core = 7.x configure = admin/store/settings/quotes/methods -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/tests/uc_quote.test b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/tests/uc_quote.test index 04b70594..f7796683 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/tests/uc_quote.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/tests/uc_quote.test @@ -21,7 +21,7 @@ class UbercartQuoteTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { $modules = array('rules_admin', 'uc_payment', 'uc_payment_pack', 'uc_quote', 'uc_flatrate'); $permissions = array('administer rules', 'bypass rules access'); parent::setUp($modules, $permissions); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote-rtl.css new file mode 100644 index 00000000..b085ea79 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote-rtl.css @@ -0,0 +1,14 @@ +/** + * @file + * Styles for shipping quote cart and checkout panes. + */ + +#uc-cart-pane-quotes .form-submit { + margin-left: auto; + margin-right: 16em; +} + +.quote-notes { + margin-left: auto; + margin-right: 25px; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.css b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.css index 80b8024b..b5c6322e 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.css @@ -17,7 +17,7 @@ } #uc-cart-pane-quotes .form-submit { - margin-left: 16em; + margin-left: 16em; /* LTR */ } #quote { @@ -36,7 +36,7 @@ } .quote-notes { - margin-left: 25px; + margin-left: 25px; /* LTR */ } /** diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.info index 0828c175..1e2e8733 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.info @@ -9,9 +9,9 @@ configure = admin/store/settings/quotes ; Test cases files[] = tests/uc_quote.test -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.module b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.module index 11eb1790..a930b4b1 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.module @@ -58,15 +58,6 @@ function uc_quote_menu() { return $items; } -/** - * Implements hook_init(). - */ -function uc_quote_init() { - global $conf; - $conf['i18n_variables'][] = 'uc_quote_err_msg'; - $conf['i18n_variables'][] = 'uc_quote_pane_description'; -} - /** * Implements hook_theme(). */ diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.variable.inc b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.variable.inc new file mode 100644 index 00000000..95a50dfc --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_quote/uc_quote.variable.inc @@ -0,0 +1,40 @@ + t('Ubercart shipping quote settings'), + 'access' => 'administer store', + 'path' => array('admin/store/settings/quotes'), + ); + return $groups; +} + +/** + * Implements hook_variable_info(). + */ +function uc_quote_variable_info($options) { + $variables['uc_quote_err_msg'] = array( + 'type' => 'text', + 'title' => t('Shipping quote error message', array(), $options), + 'description' => t('The error message shown to a user when a problem is encountered while generating a shipping quote.', array(), $options), + 'group' => 'uc_quote', + 'default' => t("There were problems getting a shipping quote. Please verify the delivery and product information and try again.\nIf this does not resolve the issue, please call in to complete your order.", array(), $options), + ); + $variables['uc_quote_pane_description'] = array( + 'type' => 'text', + 'title' => t('Shipping quote pane description', array(), $options), + 'description' => t('Message to indicate to users that a shipping quote can be updated automatically on address change, or manually by pressing a button.', array(), $options), + 'group' => 'uc_quote', + 'default' => t('Shipping quotes are generated automatically when you enter your address and may be updated manually with the button below.', array(), $options), + ); + return $variables; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.admin.inc index 93073be9..f97ac415 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.admin.inc @@ -1096,7 +1096,7 @@ function theme_uc_shipping_shipment_print($variables) { file_exists($package->label_image->uri)) { // TODO: Find a way to store these magic numbers specifically for UPS. list($width, $height) = array(672, 392); - $output .= '
' . "\n";; + $output .= '
' . "\n"; $output .= theme('image', array( 'path' => $package->label_image->uri, 'attributes' => array('width' => $width, 'height' => $height), diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.info index 715f077c..862578f9 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_shipping/uc_shipping.info @@ -8,9 +8,9 @@ core = 7.x files[] = views/uc_shipping_handler_field_shipment_id.inc files[] = views/uc_shipping_handler_field_package_weight.inc -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_ups/uc_ups.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_ups/uc_ups.info index 251d752f..fbf7c10c 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_ups/uc_ups.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_ups/uc_ups.info @@ -6,9 +6,9 @@ core = 7.x configure = admin/store/settings/quotes/settings/ups -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.admin.inc index 29b626df..2d2b57e2 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.admin.inc @@ -54,7 +54,7 @@ function uc_usps_admin_settings($form, &$form_state) { '#type' => 'checkbox', '#title' => t('Display USPS "online" rates'), '#default_value' => variable_get('uc_usps_online_rates', FALSE), - '#description' => t('Show your customer standard USPS rates (default) or discounted "online" rates. Online rates apply only if you, the merchant, pay for and print out postage from the USPS Click-N-Ship web site.'), + '#description' => t('Show your customer standard USPS rates (default) or discounted "online" rates. Online rates apply only if you, the merchant, pay for and print out postage from the USPS Click-N-Ship web site.'), ); $form['domestic']['uc_usps_env_services'] = array( diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.info index e88e39f5..9123873a 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_usps/uc_usps.info @@ -6,9 +6,9 @@ core = 7.x configure = admin/store/settings/quotes/settings/usps -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_weightquote/uc_weightquote.info b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_weightquote/uc_weightquote.info index 5beeb214..a16ce8e6 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_weightquote/uc_weightquote.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/shipping/uc_weightquote/uc_weightquote.info @@ -6,9 +6,9 @@ core = 7.x configure = admin/store/settings/quotes/methods -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_ajax_admin/uc_ajax_admin.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_ajax_admin/uc_ajax_admin.info index bf89b2ee..9399e9a4 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_ajax_admin/uc_ajax_admin.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_ajax_admin/uc_ajax_admin.info @@ -4,9 +4,9 @@ dependencies[] = uc_cart package = Ubercart - extra core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute.test index 6dfb2492..6a096b96 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute.test @@ -21,7 +21,7 @@ class UbercartAttributeTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_attribute'), array('administer attributes', 'administer product attributes', 'administer product options')); $this->drupalLogin($this->adminUser); } @@ -316,8 +316,14 @@ class UbercartAttributeTestCase extends UbercartTestHelper { $edit = (array) self::createAttribute(array(), FALSE); $this->drupalPost('admin/store/products/attributes/add', $edit, t('Submit')); - $this->assertText('Options for ' . $edit['name']); - $this->assertText('No options for this attribute have been added yet.'); + if ($edit['display'] !=0) { + // We redirect to add options page ONLY for non-textfield attributes. + $this->assertText('Options for ' . $edit['name']); + $this->assertText('No options for this attribute have been added yet.'); + } + else { + // For textfield attributes we redirect to attribute list. + } $this->drupalGet('admin/store/products/attributes'); $this->assertRaw('' . $edit['name'] . '', t('Verify name field.')); @@ -325,7 +331,7 @@ class UbercartAttributeTestCase extends UbercartTestHelper { $this->assertRaw('' . ($edit['required'] ? t('Yes') : t('No')) . '', t('Verify required field.')); $this->assertRaw('' . $edit['ordering'] . '', t('Verify ordering field.')); $types = _uc_attribute_display_types(); - $this->assertRaw('' . $types[$edit['display']] . '', t('Verify ordering field.')); + $this->assertRaw('' . $types[$edit['display']] . '', t('Verify display field.')); $aid = db_query("SELECT aid FROM {uc_attributes} WHERE name = :name", array(':name' => $edit['name']))->fetchField(); $this->assertTrue($aid, t('Attribute was created.')); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute_checkout.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute_checkout.test index 1651b9d7..6efdcb3a 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute_checkout.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/tests/uc_attribute_checkout.test @@ -18,7 +18,7 @@ class UbercartAttributeCheckoutTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_attribute', 'uc_cart'), array('administer attributes', 'administer product attributes', 'administer product options')); $this->drupalLogin($this->adminUser); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.admin.inc index 7359e0a9..f5b8ce69 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.admin.inc @@ -95,6 +95,7 @@ function uc_attribute_form($form, &$form_state, $attribute = NULL) { '#title' => t('Label'), '#description' => t("Enter a label that customers will see instead of the attribute name. Use <none> if you don't want a title to appear at all."), '#default_value' => $label, + '#maxlength' => 255, ); $form['description'] = array( '#type' => 'textfield', @@ -146,7 +147,14 @@ function uc_attribute_form_submit($form, &$form_state) { } else { drupal_write_record('uc_attributes', $form_state['values']); - $form_state['redirect'] = 'admin/store/products/attributes/' . $form_state['values']['aid'] . '/options'; + if ($form_state['values']['display'] == 0) { + // No options needed/allowed for Textfield display type. + $form_state['redirect'] = 'admin/store/products/attributes'; + } + else { + // All other display types we redirect to add options. + $form_state['redirect'] = 'admin/store/products/attributes/' . $form_state['values']['aid'] . '/options'; + } } } @@ -584,6 +592,7 @@ function uc_object_attributes_form($form, &$form_state, $object, $type, $view = '#title_display' => 'invisible', '#default_value' => empty($attribute->label) ? $attribute->name : $attribute->label, '#size' => 20, + '#maxlength' => 255, ), 'option' => array( '#markup' => $option ? (check_plain($option->name) . ' (' . theme('uc_price', array('price' => $option->price)) . ')' ) : t('n/a'), diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.info index 108d59ee..f69b2ad6 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.info @@ -8,9 +8,9 @@ core = 7.x files[] = tests/uc_attribute.test files[] = tests/uc_attribute_checkout.test -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.module index 94e83113..fd63d644 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.module @@ -1280,6 +1280,12 @@ function _uc_attribute_alter_form($id, &$product, $use_ajax) { $attributes = $product->attributes; $priced_attributes = uc_attribute_priced_attributes($nid); + // At this point, $product->data is the node author's userdata + // as a string, as populated by user_node_load(). We don't need that. + if (empty($product->data) || !is_array($product->data)) { + $product->data = array(); + } + // If the form is being built for the first time, populate attributes with their default values. if (!isset($product->data['attributes'])) { $values = array(); @@ -1302,10 +1308,6 @@ function _uc_attribute_alter_form($id, &$product, $use_ajax) { } } - if (empty($product->data) || !is_array($product->data)) { - $product->data = array(); - } - // Initialize the form element. $form_attributes = array( '#theme' => 'uc_attribute_add_to_cart', diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.theme.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.theme.inc index 2ceeaf1c..1e54e0e1 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.theme.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_attribute/uc_attribute.theme.inc @@ -13,6 +13,9 @@ * - option: The option name. * - price: The price total or adjustment, if any. * + * @return string + * The HTML output. + * * @see _uc_attribute_alter_form() * @ingroup themeable */ diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart.test index c6e3458f..3460baf5 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart.test @@ -21,7 +21,7 @@ class UbercartCartCheckoutTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { $modules = array('uc_payment', 'uc_payment_pack', 'uc_roles'); $permissions = array('administer permissions'); parent::setUp($modules, $permissions); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart_entity_test.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart_entity_test.info index cc5d65de..160c26f9 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart_entity_test.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/tests/uc_cart_entity_test.info @@ -3,9 +3,9 @@ core = 7.x dependencies[] = uc_cart hidden = TRUE -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart-rtl.css new file mode 100644 index 00000000..eca701ec --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart-rtl.css @@ -0,0 +1,76 @@ +/** + * @file + * RTL Styles for uc_cart module. + */ + +.order-review-table .title-col { + padding-left: inherit; + padding-right: 3em; + text-align: left; +} + +.order-review-table .data-col { + padding-right: inherit; + padding-left: 3em; +} + +.order-review-table .review-button-row td { + text-align: left; +} + +.next-button { + text-align: left; +} + +#uc-cart-view-form img { + padding-right: inherit; + padding-left: .8em; + float: right; +} + +.address-book-icon { + margin-left: inherit; + margin-right: 2px; +} + +/** + * CSS rules for the cart form at /cart. + */ + +#uc-cart-view-form .form-actions { + text-align: left; +} + +#uc-cart-view-form .form-actions a { + float: right; +} + +#uc-cart-view-form #edit-continue-shopping { + float: right; + margin-left: inherit; + margin-right: .5em; +} + +.uc-cart-checkout-button { + float: left; + clear: left; +} + +/** + * CSS rules for the cart review table. + */ + +td.price { + text-align: left; +} + +td.subtotal { + text-align: left; +} + +/** + * CSS rules for the bottom of the checkout form at /cart/checkout. + */ +.uc-cart-checkout-form .form-actions { + text-align: left; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.css index f9fd6232..ba540cd2 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.css @@ -27,13 +27,13 @@ .order-review-table .title-col { font-weight: bold; - padding-left: 3em; - text-align: right; + padding-left: 3em; /* LTR */ + text-align: right; /* LTR */ white-space: nowrap; } .order-review-table .data-col { - padding-right: 3em; + padding-right: 3em; /* LTR */ } .order-review-table .row-border-top { @@ -51,7 +51,7 @@ .order-review-table .review-button-row td { padding-top: 1em; - text-align: right; + text-align: right; /* LTR */ } .order-review-table .review-button-row div, @@ -63,7 +63,7 @@ .next-button { margin-top: 1em; - text-align: right; + text-align: right; /* LTR */ } #uc-cart-view-form table { @@ -75,13 +75,13 @@ } #uc-cart-view-form img { - padding-right: .8em; - float: left; + padding-right: .8em; /* LTR */ + float: left; /* LTR */ } .address-book-icon { position: relative; - margin-left: 2px; + margin-left: 2px; /* LTR */ top: 2px; } @@ -103,17 +103,17 @@ #uc-cart-view-form .form-actions { margin-top: 0; - text-align: right; + text-align: right; /* LTR */ } #uc-cart-view-form .form-actions a { - float: left; + float: left; /* LTR */ margin: .5em; } #uc-cart-view-form #edit-continue-shopping { - float: left; - margin-left: .5em; + float: left; /* LTR */ + margin-left: .5em; /* LTR */ } #uc-cart-view-form .form-actions input { @@ -121,8 +121,8 @@ } .uc-cart-checkout-button { - float: right; - clear: right; + float: right; /* LTR */ + clear: right; /* LTR */ } .uc-cart-checkout-button-separator { @@ -138,7 +138,7 @@ td.qty { } td.price { - text-align: right; + text-align: right; /* LTR */ white-space: nowrap; } @@ -147,7 +147,7 @@ td.products { } td.subtotal { - text-align: right; + text-align: right; /* LTR */ } #subtotal-title { @@ -170,5 +170,5 @@ td.subtotal { * CSS rules for the bottom of the checkout form at /cart/checkout. */ .uc-cart-checkout-form .form-actions { - text-align: right; + text-align: right; /* LTR */ } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.info index 92215b67..5f43ae61 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.info @@ -16,9 +16,9 @@ files[] = uc_cart.controller.inc configure = admin/store/settings/cart -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.js b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.js index f52e5353..e1bdb06a 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.js +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.js @@ -7,8 +7,9 @@ Drupal.behaviors.ucCart = { attach: function(context, settings) { // Add a throbber to the submit order button on the review order form. jQuery('form#uc-cart-checkout-review-form input#edit-submit:not(.ucSubmitOrderThrobber-processed)', context).addClass('ucSubmitOrderThrobber-processed').click(function() { - jQuery(this).clone().insertAfter(this).attr('disabled', true).after('    ').end().hide(); - jQuery('#uc-cart-checkout-review-form #edit-back').attr('disabled', true); + jQuery(this).clone().insertAfter(this).after('    ')[0].disabled = true; + jQuery(this).hide(); + jQuery('#uc-cart-checkout-review-form #edit-back')[0].disabled = true; }); } } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.theme.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.theme.inc index ad2166e8..18c01e3d 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.theme.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart.theme.inc @@ -18,6 +18,9 @@ * - collapsed: TRUE or FALSE indicating whether or not the cart block is * collapsed. * + * @return string + * The HTML output. + * * @ingroup themeable */ function theme_uc_cart_block_title($variables) { diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block-rtl.css new file mode 100644 index 00000000..528fe7ff --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block-rtl.css @@ -0,0 +1,55 @@ +/** + * @file + * Styles for the uc_cart module cart block. + */ + +.cart-block-icon-full, +.cart-block-icon-empty { + float: right; + margin: 2px 0 0 6px; +} + +/** + * Styles for the cart block title and toggle. + */ +.cart-block-title-bar { + padding-right: inherit; + padding-left: 20px; +} + +.cart-block-arrow { + right: auto; + left: 0; +} + +/** + * Styles for the cart block contents and summary. + */ + +.cart-block-item-price { + text-align: left; +} + +.cart-block-item-desc ul.product-description { + padding: 0 1em 0.25em 0; +} + +.cart-block-summary-total { + text-align: left; +} + +.cart-block-summary-links td { + text-align: left; +} + +.cart-block-summary-links ul.links li { + border-right: 0 none; + border-left: solid 1px; + padding: 0 .75em 0 1em; +} + +.cart-block-summary-links ul.links li.last { + border-left: none; + padding-left: 0; + padding-right: inherit; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block.css index f64a87d1..92b72e6f 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_block.css @@ -2,11 +2,12 @@ * @file * Styles for the uc_cart module cart block. */ + .cart-block-icon-full, .cart-block-icon-empty { - float: left; + float: left; /* LTR */ height: 16px; - margin: 2px 6px 0 0; + margin: 2px 6px 0 0; /* LTR */ width: 16px; } @@ -23,7 +24,7 @@ */ .cart-block-title-bar { display: inline; - padding-right: 20px; + padding-right: 20px; /* LTR */ position: relative; } @@ -35,7 +36,7 @@ background: transparent url(images/bullet-arrow-up.gif) no-repeat center center; height: 5px; position: absolute; - right: 0; + right: 0; /* LTR */ top: 9px; width: 10px; } @@ -89,13 +90,13 @@ } .cart-block-item-price { - text-align: right; + text-align: right; /* LTR */ white-space: nowrap; } .cart-block-item-desc ul.product-description { margin: 0; - padding: 0 0 0.25em 1em; + padding: 0 0 0.25em 1em; /* LTR */ } .cart-block-item-desc .product-description li { @@ -128,7 +129,7 @@ } .cart-block-summary-total { - text-align: right; + text-align: right; /* LTR */ white-space: nowrap; width: auto; } @@ -139,16 +140,16 @@ } .cart-block-summary-links td { - text-align: right; + text-align: right; /* LTR */ } .cart-block-summary-links ul.links li { - border-right: solid 1px; + border-right: solid 1px; /* LTR */ display: inline; - padding: 0 1em 0 .75em; + padding: 0 1em 0 .75em; /* LTR */ } .cart-block-summary-links ul.links li.last { - border-right: none; - padding-right: 0; + border-right: none; /* LTR */ + padding-right: 0; /* LTR */ } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_checkout_pane.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_checkout_pane.inc index eb3aaf0d..d24b7bd0 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_checkout_pane.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart/uc_cart_checkout_pane.inc @@ -555,5 +555,5 @@ function theme_uc_checkout_pane_cart_review($variables) { ); } - return theme('table', array('rows' => $rows, 'attributes' => array('class' => array('cart-review'))));; + return theme('table', array('rows' => $rows, 'attributes' => array('class' => array('cart-review')))); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/tests/uc_cart_links.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/tests/uc_cart_links.test index 412133c1..56b12c70 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/tests/uc_cart_links.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/tests/uc_cart_links.test @@ -21,7 +21,7 @@ class UbercartCartLinksTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_cart_links', 'uc_attribute'), array('administer cart links', 'view cart links report', 'access administration pages')); } @@ -109,8 +109,9 @@ class UbercartCartLinksTestCase extends UbercartTestHelper { 0, t('Cart Link #@link found on page.', array('@link' => $key)) ); + // Note we strip the leading / from the link for the testbot ... $this->assertLinkByHref( - t('@link', array('@link' => $test_link)), + t('@link', array('@link' => substr($test_link, 1))), 0, t('Cart Link @link found on page.', array('@link' => $test_link)) ); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.admin.inc index 254d7c6f..e094d17b 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.admin.inc @@ -8,6 +8,7 @@ /** * Defines a form to configure the Cart Links settings. * + * @see uc_cart_links_settings_form_validate() * @ingroup forms */ function uc_cart_links_settings_form($form, &$form_state) { @@ -50,6 +51,32 @@ function uc_cart_links_settings_form($form, &$form_state) { return system_settings_form($form); } +/** + * Validation handler for uc_cart_links_settings form. + * + * @see uc_cart_links_settings_form() + */ +function uc_cart_links_settings_form_validate($form, &$form_state) { + $messages = (string) $form_state['values']['uc_cart_links_messages']; + if (!empty($messages)) { + $data = explode("\n", $messages); + foreach ($data as $message) { + // Ignore blank lines. + if (preg_match('/^\s*$/', $message)) { + continue; + } + // Check for properly formattted messages. + // Each line must be one or more numeric characters for the key followed + // by "|" followed by one or more characters for the value. Both the key + // and the value may have leading and/or trailing whitespace. + else if (!preg_match('/^\s*[1-9][0-9]*\s*\|\s*\S+.*$/', $message)) { + form_set_error('uc_cart_links_messages', t('Invalid Cart Links message "%message". Messages must be a numeric key followed by "|" followed by a value.', array('%message' => $message))); + break; + } + } + } +} + /** * Displays the Cart Links report. * diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.info index 7ee0881f..24904caa 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.info @@ -9,9 +9,9 @@ files[] = tests/uc_cart_links.test configure = admin/store/settings/cart-links -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.pages.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.pages.inc index 6385e162..9d24d716 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.pages.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_cart_links/uc_cart_links.pages.inc @@ -167,6 +167,10 @@ function uc_cart_links_process($cart_actions) { if (empty($messages)) { $data = explode("\n", variable_get('uc_cart_links_messages', '')); foreach ($data as $message) { + // Skip blank lines. + if (preg_match('/^\s*$/', $message)) { + continue; + } list($mkey, $mdata) = explode('|', $message, 2); $messages[trim($mkey)] = trim($mdata); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/tests/uc_catalog.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/tests/uc_catalog.test index 9e9b8e1e..d4046137 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/tests/uc_catalog.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/tests/uc_catalog.test @@ -18,9 +18,9 @@ class UbercartCatalogTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - public function setUp() { + protected function setUp($modules = array(), $permissions = array()) { $modules = array('uc_catalog', 'field_ui'); - $permissions = array('administer catalog', 'administer content types'); + $permissions = array('administer catalog', 'administer content types', 'administer fields'); parent::setUp($modules, $permissions); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.css index 25e30f2d..2c000ed4 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.css @@ -2,6 +2,7 @@ * @file * Styles for uc_catalog module. */ + .catalog .trail { font-weight: bold; } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.info index 305e287b..b999e3eb 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_catalog/uc_catalog.info @@ -15,9 +15,9 @@ files[] = tests/uc_catalog.test configure = admin/store/settings/catalog -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/tests/uc_file.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/tests/uc_file.test new file mode 100644 index 00000000..1c66fbb8 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/tests/uc_file.test @@ -0,0 +1,116 @@ + 'File downloads', + 'description' => 'Ensures that the purchase of file downloads functions correctly.', + 'group' => 'Ubercart', + ); + } + + /** + * Overrides DrupalWebTestCase::setUp(). + */ + public function setUp($modules = array(), $permissions = array()) { + $modules = array('uc_payment', 'uc_payment_pack', 'uc_file'); + $permissions = array(); + parent::setUp($modules, $permissions); + + // Need admin permissions in order to change file download settings. + $this->drupalLogin($this->adminUser); + + // Set up directory for files to live in. + $this->configureDownloadDirectory(); + } + + function testFilePurchaseCheckout() { + // Add file download feature to the test product. + $filename = $this->uploadTestFile(); + $this->drupalLogin($this->adminUser); + $this->drupalPost('node/' . $this->product->nid . '/edit/features', array('feature' => 'file'), t('Add')); + $edit = array( + 'uc_file_model' => '', + 'uc_file_filename' => $filename, + ); + $this->drupalPost(NULL, $edit, t('Save feature')); + + // Check out with the test product. + $this->drupalPost('node/' . $this->product->nid, array(), t('Add to cart')); + $order = $this->checkout(); + uc_payment_enter($order->order_id, 'other', $order->order_total); + + // Test that the file was granted. + $this->drupalGet('user/' . $order->uid . '/purchased-files'); + $this->assertText($filename, 'File found in list of purchased files.'); + + // Test that the email is correct. + $mail = $this->findMail('/File Downloads for Order# ' . preg_quote($order->order_id) . '/'); + + // Delete the user. + user_delete($order->uid); + + // Run cron to ensure deleted users are handled correctly. + $this->drupalLogout(); + $this->cronRun(); + } + + /** + * Helper function to configure Credit Card payment method settings. + */ + protected function configureDownloadDirectory() { + // Create directory for downloads, make it readable and writeable. + // Putting this under sites/default/files because SimpleTest needs to be + // able to create the directory - this is NOT where you'd put the downloads + // directory on a live site. On a live site, it should be outside the web root. + drupal_mkdir('sites/default/files/file-downloads', 0755); + + $this->drupalPost( + 'admin/store/settings/products', + array( + 'uc_file_base_dir' => 'sites/default/files/file-downloads', + ), + t('Save configuration') + ); + + $this->assertFieldByName( + 'uc_file_base_dir', + 'sites/default/files/file-downloads', + 'Download file path has been set.' + ); + } + + + /** + * Helper function to upload test file for downloading. + */ + protected function uploadTestFile() { + $filename = 'README.txt'; + // Use the Ubercart README.txt because we know it will always be there + // and we know in advance how big it is. + copy(drupal_get_path('module', 'uc_file') . '/../' . $filename, + 'sites/default/files/file-downloads/README.txt' + ); + return $filename; + } + + /** + * {@inheritdoc} + */ + public function tearDown() { + // Cleanup file download directory after test. + drupal_unlink('sites/default/files/file-downloads/README.txt'); + drupal_rmdir('sites/default/files/file-downloads'); + parent::tearDown(); + } + +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.admin.inc index 00f17446..8693ee4c 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.admin.inc @@ -409,7 +409,7 @@ function uc_file_admin_files_form_action_submit($form, &$form_state) { drupal_set_message(t('The selected file(s) have been deleted.')); } else { - drupal_set_message(t('One or more files could not be deleted.')); + drupal_set_message(t('One or more files could not be deleted.'), 'warning'); } break; @@ -440,11 +440,11 @@ function uc_file_admin_files_form_action_submit($form, &$form_state) { drupal_set_message(t('The file %file has been uploaded to %dir', array('%file' => $file_object->filename, '%dir' => $dir))); } else { - drupal_set_message(t('An error occurred while copying the file to %dir', array('%dir' => $dir))); + drupal_set_message(t('An error occurred while copying the file to %dir', array('%dir' => $dir)), 'error'); } } else { - drupal_set_message(t('Can not move file to %dir', array('%dir' => $dir))); + drupal_set_message(t('Can not move file to %dir', array('%dir' => $dir)), 'error'); } break; diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.css index 594ea337..d8da71d7 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.css @@ -2,6 +2,7 @@ * @file * Styles for uc_file module. */ + .download-table-row { vertical-align: top; } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.info index 50959c07..133bffdf 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.info @@ -5,12 +5,15 @@ dependencies[] = uc_order package = Ubercart - core (optional) core = 7.x +; Test cases +files[] = tests/uc_file.test + stylesheets[all][] = uc_file.css scripts[] = uc_file.js -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.module index bd82a47d..890c3dc2 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.module @@ -453,7 +453,7 @@ function uc_file_uc_add_to_cart($nid, $qty, $data) { '%download_limit' => $file_user['download_limit'] ? $file_user['download_limit'] : t('unlimited'), '%address_limit' => $file_user['address_limit' ] ? $file_user['address_limit' ] : t('unlimited'), '%expiration' => $file_user['expiration' ] ? format_date($file_user['expiration'], 'small') : t('never'), - ))); + )), 'warning'); } else { return array(array( @@ -528,11 +528,14 @@ function uc_file_uc_store_status() { } /** - * Product feature delete function. + * Deletes all file data associated with a given product feature. + * + * @param $pfid + * An Ubercart product feature ID. */ -function uc_file_feature_delete($feature) { +function uc_file_feature_delete($pfid) { db_delete('uc_file_products') - ->condition('pfid', $feature['pfid']) + ->condition('pfid', $pfid) ->execute(); } @@ -545,12 +548,18 @@ function uc_file_feature_delete($feature) { */ function uc_file_feature_form($form, &$form_state, $node, $feature) { if (!is_dir(variable_get('uc_file_base_dir', NULL))) { - drupal_set_message(t('A file directory needs to be configured in product settings under the file download settings tab before a file can be selected.', array('@url' => url('admin/store/settings/products'))), 'error'); + drupal_set_message(t('A file directory needs to be configured in product settings under the file download settings tab before a file can be selected.', array('@url' => url('admin/store/settings/products'))), 'warning'); unset($form['buttons']); return $form; } + // Rescan the file directory to populate {uc_files} with the current list + // because files uploaded via any method other than the Upload button + // (e.g. by FTP) won'b be in {uc_files} yet. + + uc_file_refresh(); + if (!db_query_range('SELECT 1 FROM {uc_files}', 0, 1)->fetchField()) { $form['file']['file_message'] = array( '#markup' => t( @@ -563,9 +572,6 @@ function uc_file_feature_form($form, &$form_state, $node, $feature) { return $form; } - // Make sure we have an up-to-date list for the autocompletion. - uc_file_refresh(); - // Grab all the models on this product. $models = uc_product_get_models($node->nid); @@ -790,7 +796,7 @@ function uc_file_feature_form_submit($form, &$form_state) { $description .= t('Directory: !dir
', array('!dir' => $file_product['filename'])); } else { - $description .= t('File: !file
', array('!file' => basename($file_product['filename'])));; + $description .= t('File: !file
', array('!file' => basename($file_product['filename']))); } $description .= $file_product['shippable'] ? t('Shippable: Yes') : t('Shippable: No'); @@ -1238,12 +1244,12 @@ function uc_file_remove_by_id($fid, $recur) { $remove_fields = TRUE; } else { - drupal_set_message(t('The directory %dir could not be deleted.', array('%dir' => $filename))); + drupal_set_message(t('The directory %dir could not be deleted.', array('%dir' => $filename)), 'warning'); $result = FALSE; } } else { - drupal_set_message(t('The directory %dir could not be deleted because it is not empty.', array('%dir' => $filename))); + drupal_set_message(t('The directory %dir could not be deleted because it is not empty.', array('%dir' => $filename)), 'warning'); $result = FALSE; } } @@ -1254,7 +1260,7 @@ function uc_file_remove_by_id($fid, $recur) { drupal_set_message(t('The file %dir was deleted.', array('%dir' => $filename))); } else { - drupal_set_message(t('The file %dir could not be deleted.', array('%dir' => $filename))); + drupal_set_message(t('The file %dir could not be deleted.', array('%dir' => $filename)), 'error'); $result = FALSE; } } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.theme.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.theme.inc index 0da38ffe..e8f5f8a9 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.theme.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_file/uc_file.theme.inc @@ -12,6 +12,9 @@ * An associative array containing: * - form: A render element representing the form. * + * @return string + * The HTML output. + * * @ingroup themeable */ function theme_uc_file_hook_user_file_downloads($variables) { diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_googleanalytics/uc_googleanalytics.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_googleanalytics/uc_googleanalytics.info index cf678660..ab22849d 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_googleanalytics/uc_googleanalytics.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_googleanalytics/uc_googleanalytics.info @@ -7,9 +7,9 @@ dependencies[] = uc_store package = Ubercart - extra core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order-rtl.css new file mode 100644 index 00000000..122edec4 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order-rtl.css @@ -0,0 +1,98 @@ +/** + * @file + * Styles for uc_order module. + */ + +.view-uc-orders #edit-delivery-first-name-wrapper, +.view-uc-orders #edit-created-wrapper { + clear: right; +} + +.view-uc-orders #edit-created-min-wrapper, +.view-uc-orders #edit-created-max-wrapper { + float: right; +} + +.view-uc-orders .form-type-date-select .date-padding { + padding: 0 0 0 22px; +} + +.view-uc-orders tbody td.views-field-order-total { + text-align: left; +} + +.order-overview-form { + float: right; + padding: 0 0 0 2em; +} + +.uc-orders-table img { + float: right; + margin-right: auto; + margin-left: .5em; +} + +.order-admin-icons { + margin-left: auto; + margin-right: 2px; +} + +.order-pane-icons { + right: auto; + left: .5em; +} + +.pos-left { + float: right; +} + +.abs-left { + clear: right; +} + +.pos-right { + float: left; +} + +.abs-right { + clear: left; + float: left; +} + +.order-pane #edit-add-line-item, +.order-pane #edit-add-line-item .form-item { + float: right; + margin-right: auto; + margin-left: 1em; +} + +.order-pane-table td.cost, +.order-pane-table td.price, +.order-pane-table td.total { + text-align: left; +} + +.order-edit-table .oet-label { + text-align: left; +} + +.address-select-box { + padding-left: inherit; + padding-right: 1em; +} + +.line-item-table .li-title { + text-align: left; +} + +.line-item-table .li-amount { + text-align: left; +} + +.order-pane.abs-left .form-submit { + margin: 0.5em 0 0.5em 0.5em; +} + +#order-pane-print_button { + padding: 0.5em 2em 0.5em 0.5em; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.admin.inc index c82e6857..b217815d 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.admin.inc @@ -1274,7 +1274,7 @@ function uc_order_mail_invoice_form_submit($form, &$form_state) { * Displays a log of changes made to an order. */ function uc_order_log($order) { - $result = db_query("SELECT * FROM {uc_order_log} WHERE order_id = :id ORDER BY created, order_log_id", array(':id' => $order->order_id)); + $result = db_query("SELECT * FROM {uc_order_log} WHERE order_id = :id ORDER BY order_log_id DESC", array(':id' => $order->order_id)); $header = array(t('Time'), t('User'), t('Changes')); $rows = array(); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.css index 8d70e84e..f021a650 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.css @@ -19,16 +19,16 @@ .view-uc-orders #edit-delivery-first-name-wrapper, .view-uc-orders #edit-created-wrapper { - clear: left; + clear: left; /* LTR */ } .view-uc-orders #edit-created-min-wrapper, .view-uc-orders #edit-created-max-wrapper { - float: left; + float: left; /* LTR */ } .view-uc-orders .form-type-date-select .date-padding { - padding: 0 22px 0 0; + padding: 0 22px 0 0; /* LTR */ } .view-uc-orders .form-type-date-select { @@ -40,7 +40,7 @@ } .view-uc-orders tbody td.views-field-order-total { - text-align: right; + text-align: right; /* LTR */ } .view-uc-orders tbody td.views-field-created { @@ -48,8 +48,8 @@ } .order-overview-form { - float: left; - padding: 0 2em 0 0; + float: left; /* LTR */ + padding: 0 2em 0 0; /* LTR */ } .order-overview-form .form-item { @@ -76,12 +76,12 @@ } .uc-orders-table img { - float: left; - margin-right: .5em; + float: left; /* LTR */ + margin-right: .5em; /* LTR */ } .order-admin-icons { - margin-left: 2px; + margin-left: 2px; /* LTR */ } .order-admin-icons img { @@ -110,7 +110,7 @@ .order-pane-icons { position: absolute; - right: .5em; + right: .5em; /* LTR */ top: 5px; } @@ -124,11 +124,11 @@ } .pos-left { - float: left; + float: left; /* LTR */ } .abs-left { - clear: left; + clear: left; /* LTR */ } .order-pane.abs-left { @@ -137,12 +137,12 @@ } .pos-right { - float: right; + float: right; /* LTR */ } .abs-right { - clear: right; - float: right; + clear: right; /* LTR */ + float: right; /* LTR */ } .text-center { @@ -164,8 +164,8 @@ .order-pane #edit-add-line-item, .order-pane #edit-add-line-item .form-item { - float: left; - margin-right: 1em; + float: left; /* LTR */ + margin-right: 1em; /* LTR */ padding-top: 0; } @@ -196,7 +196,7 @@ .order-pane-table td.cost, .order-pane-table td.price, .order-pane-table td.total { - text-align: right; + text-align: right; /* LTR */ white-space: nowrap; } @@ -227,7 +227,7 @@ .order-edit-table .oet-label { font-weight: bold; - text-align: right; + text-align: right; /* LTR */ } .order-edit-table .form-item { @@ -239,7 +239,7 @@ border: solid 1px #999; margin-bottom: 1em; padding-bottom: 1em; - padding-left: 1em; + padding-left: 1em; /* LTR */ width: auto; } @@ -261,12 +261,12 @@ .line-item-table .li-title { font-weight: bold; - text-align: right; + text-align: right; /* LTR */ width: 100%; } .line-item-table .li-amount { - text-align: right; + text-align: right; /* LTR */ white-space: nowrap; } @@ -313,7 +313,7 @@ } .order-pane.abs-left .form-submit { - margin: 0.5em 0.5em 0.5em 0; + margin: 0.5em 0.5em 0.5em 0; /* LTR */ } .order-pane #customer-select form { @@ -322,6 +322,6 @@ #order-pane-print_button { border: 1px solid #bbb; - padding: 0.5em 0.5em 0.5em 2em; + padding: 0.5em 0.5em 0.5em 2em; /* LTR */ background: url("../uc_store/images/print.gif") no-repeat 0.5em 50%; -} \ No newline at end of file +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.info index 9cec4729..241d5372 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.info @@ -39,9 +39,9 @@ files[] = uc_order.info.inc configure = admin/store/settings/orders stylesheets[all][] = uc_order.css -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.module index af2cb424..5947cf8b 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.module @@ -883,11 +883,17 @@ function uc_order_uri($order) { * The operation being performed. One of 'view', 'update', 'create' or * 'delete'. * @param $order - * Optionally an order to check access for. + * (optional) An order to check access for. * @param $account - * The user to check for. Leave it to NULL to check for the current user. + * (optional) The account to check, or current user if not given. */ function uc_order_order_entity_access($op, $order = NULL, $account = NULL) { + global $user; + + if (!isset($account)) { + $account = $user; + } + if ($op == 'delete') { if (!empty($order)) { return uc_order_can_delete($order, $account); @@ -1052,6 +1058,9 @@ function uc_order_delete($order_id) { // Delete line items for the order. uc_order_delete_line_item($order_id, TRUE); + // Delete attached field values. + field_attach_delete('uc_order', $order); + // Log the action in the database. watchdog('uc_order', 'Order @order_id deleted by user @uid.', array('@order_id' => $order_id, '@uid' => $user->uid)); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.rules.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.rules.inc index f345aa05..f282c380 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.rules.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_order/uc_order.rules.inc @@ -255,6 +255,56 @@ function uc_order_rules_condition_info() { ), ); + $conditions['uc_order_condition_total'] = array( + 'label' => t("Check an order's total"), + 'group' => t('Order'), + 'base' => 'uc_order_condition_total', + 'parameter' => array( + 'order' => array( + 'type' => 'uc_order', + 'label' => t('Order'), + ), + 'op' => array( + 'type' => 'text', + 'label' => t('Operator'), + 'description' => t('The comparison operator.'), + 'default value' => '==', + 'options list' => 'uc_order_condition_value_operator_options', + 'restriction' => 'input', + ), + 'value' => array( + 'type' => 'decimal', + 'label' => t('Data value'), + 'description' => t('The value to compare the data with.'), + ), + ), + ); + + $conditions['uc_order_condition_subtotal'] = array( + 'label' => t("Check an order's subtotal"), + 'group' => t('Order'), + 'base' => 'uc_order_condition_subtotal', + 'parameter' => array( + 'order' => array( + 'type' => 'uc_order', + 'label' => t('Order'), + ), + 'op' => array( + 'type' => 'text', + 'label' => t('Operator'), + 'description' => t('The comparison operator.'), + 'default value' => '==', + 'options list' => 'uc_order_condition_value_operator_options', + 'restriction' => 'input', + ), + 'value' => array( + 'type' => 'decimal', + 'label' => t('Data value'), + 'description' => t('The value to compare the data with.'), + ), + ), + ); + return $conditions; } @@ -548,18 +598,7 @@ function uc_order_condition_count_products($order, $products, $count, $op) { } } } - switch ($op) { - case 'less': - return $total < $count; - case 'less_equal': - return $total <= $count; - case 'equal': - return $total == $count; - case 'greater_equal': - return $total >= $count; - case 'greater': - return $total > $count; - } + return uc_order_condition_value_operator_comparison($total, $op, $count); } /** @@ -608,18 +647,7 @@ function uc_order_condition_products_weight($order, $products, $weight_units, $w } } } - switch ($op) { - case 'less': - return $total < $weight_value; - case 'less_equal': - return $total <= $weight_value; - case 'equal': - return $total == $weight_value; - case 'greater_equal': - return $total >= $weight_value; - case 'greater': - return $total > $weight_value; - } + return uc_order_condition_value_operator_comparison($total, $op, $weight_value); } /** @@ -812,3 +840,83 @@ function uc_order_action_email_invoice_view_options() { 'checkout-mail' => t('Show all of the above plus the "thank you" message.'), ); } + +/** + * Value comparison. + * + * @param float $source + * The source value. + * @param string $op + * The comparison operator. + * @param float $target + * The target value. + * + * @return bool + * Whether the comparison meets the specified conditions. + * + * @see uc_order_condition_value_operator_options + */ +function uc_order_condition_value_operator_comparison($source, $op, $target) { + switch ($op) { + case 'less': + return $source < $target; + + case 'less_equal': + return $source <= $target; + + case 'equal': + return $source == $target; + + case 'greater_equal': + return $source >= $target; + + case 'greater': + return $source > $target; + } +} + +/** + * Compare order total. + * + * @param object $order + * The order to check. + * @param string $op + * The comparison operator. + * @param float $value + * The target value. + * + * @return bool + * Whether the order total meets the specified condition. + * + * @see uc_order_condition_value_operator_options + */ +function uc_order_condition_total($order, $op, $value) { + return uc_order_condition_value_operator_comparison($order->order_total, $op, $value); +} + +/** + * Compare order subtotal. + * + * @param object $order + * The order to check. + * @param string $op + * The comparison operator. + * @param float $value + * The target value. + * + * @return bool + * Whether the order subtotal meets the specified condition. + * + * @see uc_order_condition_value_operator_options + */ +function uc_order_condition_subtotal($order, $op, $value) { + if (is_array($order->line_items)) { + foreach ($order->line_items as $line_item) { + if ($line_item['type'] == 'subtotal') { + $subtotal = $line_item['amount']; + return uc_order_condition_value_operator_comparison($subtotal, $op, $value); + } + } + } + return FALSE; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/tests/uc_product.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/tests/uc_product.test index 030ba2de..ce692584 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/tests/uc_product.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/tests/uc_product.test @@ -18,7 +18,7 @@ class UbercartProductTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - public function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array(), array('administer content types')); $this->drupalLogin($this->adminUser); } @@ -169,10 +169,10 @@ class UbercartProductTestCase extends UbercartTestHelper { // Check invalid quantity messages. $this->drupalPost('node/' . $this->product->nid, array('qty' => 'x'), 'Add to cart'); - $this->assertText('The quantity must be a number.'); + $this->assertText('The quantity must be an integer.'); $this->drupalPost('node/' . $this->product->nid, array('qty' => '1a'), 'Add to cart'); - $this->assertText('The quantity must be a number.'); + $this->assertText('The quantity must be an integer.'); // Check cart add message. $this->drupalPost('node/' . $this->product->nid, array('qty' => '1'), 'Add to cart'); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product-rtl.css new file mode 100644 index 00000000..8249ba75 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product-rtl.css @@ -0,0 +1,30 @@ +/** + * @file + * Styles for uc_product module. + */ + +.product-image { + clear: left; + float: left; + margin-left: auto; + margin-right: 4px; + padding-left: inherit; + padding-right: 4px; +} + +.display-price { + clear: left; + float: left; + padding-left: inherit; + padding-right: 4px; +} + +.model { + margin-right: auto; + margin-left: 2em; +} + +.add-feature div { + padding-right: inherit; + padding-left: 1em; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.admin.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.admin.inc index aa793472..7dfa06fa 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.admin.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.admin.inc @@ -67,7 +67,7 @@ function uc_product_settings_form($form, &$form_state) { } else { // If we have widgets installed, add option to not use any of them - $options['none'] = "Don't use any image widgets."; + $options['none'] = t("Don't use any image widgets."); } $form['product']['uc_product_image_widget'] = array( diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.css index 054680a6..191b0e94 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.css @@ -2,29 +2,30 @@ * @file * Styles for uc_product module. */ + .product-image { - clear: right; - float: right; - margin-left: 4px; - padding-left: 4px; + clear: right; /* LTR */ + float: right; /* LTR */ + margin-left: 4px; /* LTR */ + padding-left: 4px; /* LTR */ padding-top: 4px; text-align: center; } .display-price { - clear: right; - float: right; + clear: right; /* LTR */ + float: right; /* LTR */ font-size: 1.3em; font-weight: bold; padding-bottom: 4px; - padding-left: 4px; + padding-left: 4px; /* LTR */ text-align: center; } .model { display: inline; font-weight: bold; - margin-right: 2em; + margin-right: 2em; /* LTR */ } .uc-product-features td { @@ -32,7 +33,7 @@ } .add-feature div { - padding-right: 1em; + padding-right: 1em; /* LTR */ } .add-feature div, diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.info index 9fabdfbc..8f6147bc 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.info @@ -20,9 +20,9 @@ files[] = views/uc_product_handler_filter_product.inc configure = admin/store/settings/products stylesheets[all][] = uc_product.css -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.module index 3010cf19..e0fd1a01 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.module @@ -597,8 +597,11 @@ function uc_product_load($nodes) { * @param $data * Optional data to add to the product before invoking the alter hooks. * - * @return + * @return object * An variant of the product, altered based on the provided data. + * + * @throws \Exception + * If the caller tries to create a variant of a variant. */ function _uc_product_get_variant($node, $data = FALSE) { if (!empty($node->variant)) { @@ -905,7 +908,7 @@ function uc_product_form_node_type_form_alter(&$form, &$form_state) { $options = array('' => t('None')); foreach ($instances as $field_name => $instance) { - if (strpos($instance['widget']['type'], 'image') !== FALSE) { + if (strpos($instance['widget']['type'], 'image') !== FALSE || ($instance['widget']['type'] == 'media_generic' && isset($instance['widget']['settings']['allowed_types']) && $instance['widget']['settings']['allowed_types'] == array('image' => 'image'))) { $options[$field_name] = $instance['label']; } } @@ -1005,7 +1008,6 @@ function uc_product_uc_product_types() { * @see uc_product_image_defaults() */ function uc_product_uc_store_status() { - module_load_include('inc', 'content', 'includes/content.crud'); // Check for filefields on products. if ($field = variable_get('uc_image_product', '')) { $instances = field_info_instances('node', 'product'); @@ -1223,6 +1225,12 @@ function uc_product_add_to_cart_form($form, &$form_state, $node) { ), ); + // Ajax forms may have no form state when triggered from a cached page, so + // ensure the variant is available for form alter functions to use. + if (!empty($form_state['rebuild']) && empty($form_state['storage']['variant'])) { + $form_state['storage']['variant'] = uc_product_load_variant($form_state['values']['nid'], module_invoke_all('uc_add_to_cart_data', $form_state['values'])); + } + $form['node'] = array( '#type' => 'value', '#value' => isset($form_state['storage']['variant']) ? $form_state['storage']['variant'] : $node, @@ -1428,7 +1436,10 @@ function uc_product_get_image_widget() { // Find widget preference, if any. $widget_name = variable_get('uc_product_image_widget', NULL); - if ($widget_name != NULL) { + if ($widget_name == 'none') { + // Don't use any image widgets. + } + elseif ($widget_name != NULL) { // Widget to use has been set in admin menu. $image_widget = $image_widgets[$widget_name]; } @@ -1669,7 +1680,7 @@ function uc_product_feature_delete($pfid) { // Call the delete function for this product feature if it exists. $func = uc_product_feature_data($feature['fid'], 'delete'); if (function_exists($func)) { - $func($feature); + $func($pfid); } db_delete('uc_product_features') ->condition('pfid', $pfid) diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.theme.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.theme.inc index 57751f90..813da407 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.theme.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product/uc_product.theme.inc @@ -12,6 +12,9 @@ * - model: Product model number, also known as SKU. * - attributes: (optional) Array of attributes to apply to enclosing DIV. * + * @return string + * The HTML output. + * * @ingroup themeable */ function theme_uc_product_model($variables) { diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/tests/uc_product_kit.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/tests/uc_product_kit.test index 9146c805..49c6536e 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/tests/uc_product_kit.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/tests/uc_product_kit.test @@ -18,7 +18,7 @@ class UbercartProductKitTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - public function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_product_kit'), array('create product_kit content', 'edit any product_kit content')); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit-rtl.css new file mode 100644 index 00000000..bec2f9c3 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit-rtl.css @@ -0,0 +1,19 @@ +/** + * @file + * Styles for uc_product_kit module. + */ + +#block-cart-contents .kit-component-cart-desc ul.product-description { + padding-left: inherit; + padding-right: 0; +} + +#block-cart-contents .product-description .kit-component-cart-desc ul:before { + margin-right: auto; + margin-left: 0.15em; +} + +.kit-component-cart-desc .item-list li { + padding-left: inherit; + padding-right: 0; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.css index 45b0902d..7a7d2bb7 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.css @@ -2,12 +2,13 @@ * @file * Styles for uc_product_kit module. */ + #block-cart-contents .kit-component-cart-desc ul.product-description { - padding-left: 0; + padding-left: 0; /* LTR */ } #block-cart-contents .product-description .kit-component-cart-desc ul:before { - margin-right: 0.15em; + margin-right: 0.15em; /* LTR */ } .kit-component-cart-desc .item-list li { @@ -15,7 +16,7 @@ display: inline; font-size: 1em; font-style: italic; - padding-left: 0; + padding-left: 0; /* LTR */ } .kit-component-cart-desc li:after { content: ", "; diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.info index 9439d05d..556d01c9 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.info @@ -10,9 +10,9 @@ files[] = tests/uc_product_kit.test files[] = views/uc_product_kit_handler_filter_product_kit.inc files[] = views/uc_product_kit_handler_filter_product_kit_item.inc -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.module index 4925c77c..76f9e21f 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_product_kit/uc_product_kit.module @@ -921,7 +921,6 @@ function uc_product_kit_uc_product_types() { */ function uc_product_kit_uc_store_status() { if (module_exists('filefield')) { - module_load_include('inc', 'content', 'includes/content.crud'); // Check for filefields on products. if ($field = variable_get('uc_image_product_kit', '')) { $instances = content_field_instance_read(array('field_name' => $field, 'type_name' => 'product_kit')); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.css index d85f04a1..dab650e8 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.css @@ -2,6 +2,7 @@ * @file * Styles for uc_reports module. */ + .sales-year { display: inline; } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.info index 73423a8c..39139c56 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_reports/uc_reports.info @@ -7,9 +7,9 @@ core = 7.x configure = admin/store/settings/store -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_role_views-419700.patch b/sites/all/modules/contrib/ecommerce/ubercart/uc_role_views-419700.patch deleted file mode 100644 index dd04c9db..00000000 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_role_views-419700.patch +++ /dev/null @@ -1,147 +0,0 @@ -diff --git a/uc_roles/uc_roles.views.inc b/uc_roles/uc_roles.views.inc -new file mode 100644 -index 0000000..558e461 ---- /dev/null -+++ b/uc_roles/uc_roles.views.inc -@@ -0,0 +1,110 @@ -+ array( -+ 'left_field' => 'uid', -+ 'field' => 'uid', -+ ), -+ ); -+ -+ -+ // Expose the role expiration date -+ $data['uc_roles_expirations']['expiration'] = array( -+ 'title' => t('Ubercart Role expiration date/time'), -+ 'help' => t('Date and time the role will expire. (See also Role expiration role.)'), -+ 'field' => array( -+ 'handler' => 'views_handler_field_date', -+ 'click sortable' => TRUE, -+ ), -+ 'sort' => array( -+ 'handler' => 'views_handler_sort_date', -+ ), -+ 'filter' => array( -+ 'handler' => 'views_handler_filter_date', -+ ), -+ ); -+ -+ -+ // Expose the role id from uc_roles_expirations -+ $data['uc_roles_expirations']['rid'] = array( -+ 'title' => t('Ubercart Role expiration role'), -+ 'help' => t('The Role that corresponds with the Role expiration date/time'), -+ // Information for displaying the rid -+ 'field' => array( -+ 'handler' => 'uc_roles_handler_field_rid', -+ 'click sortable' => TRUE, -+ ), -+ // Information for accepting a rid as an argument -+ 'argument' => array( -+ 'handler' => 'views_handler_argument_users_roles_rid', -+ 'name field' => 'title', // the field to display in the summary. -+ 'numeric' => TRUE, -+ 'validate type' => 'rid', -+ ), -+ // Information for accepting a uid as a filter -+ 'filter' => array( -+ 'handler' => 'views_handler_filter_user_roles', -+ ), -+ // Information for sorting on a uid. -+ 'sort' => array( -+ 'handler' => 'views_handler_sort', -+ ), -+ ); -+ -+ -+ return $data; -+} -+ -+class uc_roles_handler_field_rid extends views_handler_field { -+ -+ // Derived from views_handler_field_user_roles -+ // Purpose: get the *names* that correspond to the role_expire_rids. -+ function pre_render($values) { -+ $roles = array(); -+ $this->items = array(); -+ -+ // Get all the unique role ids into the keys of $roles. Initializing into -+ // array_keys helps prevent us from having a list where the same rid appears -+ // over and over and over. -+ foreach ($values as $result) { -+ $roles[$this->get_value($result, NULL, TRUE)] = FALSE; -+ } -+ -+ if ($roles) { -+ $result = db_query("SELECT r.rid, r.name FROM {role} r WHERE r.rid IN (:rids) ORDER BY r.name", -+ array(':rids' => array_keys($roles))); -+ foreach ($result as $role) { -+ $this->items[$role->rid]['role'] = check_plain($role->name); -+ $this->items[$role->rid]['rid'] = $role->rid; -+ } -+ } -+ } -+ -+ // Render the rid as the role name. -+ function render($values) { -+ -+ // Return the role name corresponding to the role ID. -+ // TODO: Should I be using this->get_value() here? -+ $rid = $values->uc_roles_expirations_rid; -+ if ($rid) { -+ $role = $this->items[$rid]['role']; -+ if (!empty($role)) { -+ return $role; -+ } -+ } -+ } -+} -+ -diff --git a/uc_roles/uc_roles.info b/uc_roles/uc_roles.info -index f7c899e..ccd2d43 100644 ---- a/uc_roles/uc_roles.info -+++ b/uc_roles/uc_roles.info -@@ -2,8 +2,12 @@ name = Roles - description = Assigns permanent or expirable roles based on product purchases. - dependencies[] = uc_product - dependencies[] = uc_order -+dependencies[] = views - package = Ubercart - core (optional) - core = 7.x - - ; Test cases - files[] = tests/uc_roles.test -+ -+; Views handlers -+files[] = uc_roles.views.inc -diff --git a/uc_roles/uc_roles.module b/uc_roles/uc_roles.module -index d7ee52c..65bdd74 100644 ---- a/uc_roles/uc_roles.module -+++ b/uc_roles/uc_roles.module -@@ -1278,3 +1278,9 @@ function _uc_roles_get_expiration($duration, $granularity, $start_time = NULL) { - - return strtotime($operator . $duration . ' ' . $granularity, $start_time); - } -+/** -+ * Implements hook_views_api(). -+ */ -+function uc_roles_views_api() { -+ return array('api' => '3.0'); -+} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/tests/uc_roles.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/tests/uc_roles.test index 632dd1e0..f79ad950 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/tests/uc_roles.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/tests/uc_roles.test @@ -21,9 +21,10 @@ class UbercartRolesTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { $modules = array('uc_payment', 'uc_payment_pack', 'uc_roles'); - $permissions = array(); + // Needed to see/modify roles on the /user/%/edit page + $permissions = array('administer permissions', 'administer users', 'view all role expirations'); parent::setUp($modules, $permissions); } @@ -59,4 +60,48 @@ class UbercartRolesTestCase extends UbercartTestHelper { $this->drupalLogout(); $this->cronRun(); } + + function testRoleAdminDelete() { + // Add role assignment to the test product. + $rid = $this->drupalCreateRole(array('access content')); + $this->drupalLogin($this->adminUser); + $this->drupalPost('node/' . $this->product->nid . '/edit/features', array('feature' => 'role'), t('Add')); + $edit = array( + 'uc_roles_role' => $rid, + 'end_override' => TRUE, + 'uc_roles_expire_relative_duration' => 1, + 'uc_roles_expire_relative_granularity' => 'day', + ); + $this->drupalPost(NULL, $edit, t('Save feature')); + + // Check out with the test product. + $this->drupalPost('node/' . $this->product->nid, array(), t('Add to cart')); + $order = $this->checkout(); + uc_payment_enter($order->order_id, 'other', $order->order_total); + + // Test that the role was granted. + $account = user_load($order->uid); + $this->assertTrue(isset($account->roles[$rid]), 'Existing user was granted role.'); + + // Test that the role appears on the user edit page. + $this->drupalGet('user/' . $order->uid . '/edit'); + $this->assertText('Ubercart roles', 'Ubercart roles fieldset found.'); + $this->assertNoText('There are no pending expirations for roles this user.', 'User has a role expiration.'); + + // Delete the role using the Drupal user edit page + // by unchecking the role and submitting the form. + $this->drupalPost( + 'user/' . $order->uid . '/edit', + array('roles[' . $rid . ']' => FALSE), + t('Save') + ); + + // Test that the role was removed. + $account = user_load($order->uid, TRUE); + $this->assertFalse(isset($account->roles[$rid]), 'Role was removed from user.'); + + // Test that the role expiration data was removed. + $this->assertText('There are no pending expirations for roles this user.', 'User has no role expirations.'); + + } } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info index 345804a8..aede25e2 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info @@ -2,7 +2,6 @@ name = Roles description = Assigns permanent or expirable roles based on product purchases. dependencies[] = uc_product dependencies[] = uc_order -dependencies[] = views package = Ubercart - core (optional) core = 7.x @@ -10,11 +9,11 @@ core = 7.x files[] = tests/uc_roles.test ; Views handlers -files[] = uc_roles.views.inc +files[] = views/uc_roles_handler_field_rid.inc -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info.orig b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info.orig deleted file mode 100644 index 46533d7e..00000000 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.info.orig +++ /dev/null @@ -1,16 +0,0 @@ -name = Roles -description = Assigns permanent or expirable roles based on product purchases. -dependencies[] = uc_product -dependencies[] = uc_order -package = Ubercart - core (optional) -core = 7.x - -; Test cases -files[] = tests/uc_roles.test - -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" -core = "7.x" -project = "ubercart" -datestamp = "1413965350" - diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.module index 65bdd742..b85a3e72 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.module @@ -335,8 +335,9 @@ function uc_roles_user_presave(&$edit, $account, $category) { // If a user's role is removed using Drupal, then so is any expiration data. if (isset($edit['roles']) && is_array($edit['roles']) && isset($account->roles)) { + $allowed_uc_roles = _uc_roles_get_choices(); foreach ($account->roles as $rid => $role) { - if (!in_array($rid, array_keys($edit['roles'])) && $rid != DRUPAL_AUTHENTICATED_RID) { + if (isset($allowed_uc_roles[$rid]) && !$edit['roles'][$rid]) { uc_roles_delete($account, $rid); } } @@ -953,7 +954,7 @@ function _uc_roles_get_choices($exclude = array()) { } /** - * Deletes all data associated with a given product feature. + * Deletes all role data associated with a given product feature. * * @param $pfid * An Ubercart product feature ID. @@ -1278,9 +1279,13 @@ function _uc_roles_get_expiration($duration, $granularity, $start_time = NULL) { return strtotime($operator . $duration . ' ' . $granularity, $start_time); } + /** * Implements hook_views_api(). */ function uc_roles_views_api() { - return array('api' => '3.0'); + return array( + 'api' => '2.0', + 'path' => drupal_get_path('module', 'uc_roles') . '/views', + ); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.views.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.views.inc deleted file mode 100644 index 558e4614..00000000 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/uc_roles.views.inc +++ /dev/null @@ -1,110 +0,0 @@ - array( - 'left_field' => 'uid', - 'field' => 'uid', - ), - ); - - - // Expose the role expiration date - $data['uc_roles_expirations']['expiration'] = array( - 'title' => t('Ubercart Role expiration date/time'), - 'help' => t('Date and time the role will expire. (See also Role expiration role.)'), - 'field' => array( - 'handler' => 'views_handler_field_date', - 'click sortable' => TRUE, - ), - 'sort' => array( - 'handler' => 'views_handler_sort_date', - ), - 'filter' => array( - 'handler' => 'views_handler_filter_date', - ), - ); - - - // Expose the role id from uc_roles_expirations - $data['uc_roles_expirations']['rid'] = array( - 'title' => t('Ubercart Role expiration role'), - 'help' => t('The Role that corresponds with the Role expiration date/time'), - // Information for displaying the rid - 'field' => array( - 'handler' => 'uc_roles_handler_field_rid', - 'click sortable' => TRUE, - ), - // Information for accepting a rid as an argument - 'argument' => array( - 'handler' => 'views_handler_argument_users_roles_rid', - 'name field' => 'title', // the field to display in the summary. - 'numeric' => TRUE, - 'validate type' => 'rid', - ), - // Information for accepting a uid as a filter - 'filter' => array( - 'handler' => 'views_handler_filter_user_roles', - ), - // Information for sorting on a uid. - 'sort' => array( - 'handler' => 'views_handler_sort', - ), - ); - - - return $data; -} - -class uc_roles_handler_field_rid extends views_handler_field { - - // Derived from views_handler_field_user_roles - // Purpose: get the *names* that correspond to the role_expire_rids. - function pre_render($values) { - $roles = array(); - $this->items = array(); - - // Get all the unique role ids into the keys of $roles. Initializing into - // array_keys helps prevent us from having a list where the same rid appears - // over and over and over. - foreach ($values as $result) { - $roles[$this->get_value($result, NULL, TRUE)] = FALSE; - } - - if ($roles) { - $result = db_query("SELECT r.rid, r.name FROM {role} r WHERE r.rid IN (:rids) ORDER BY r.name", - array(':rids' => array_keys($roles))); - foreach ($result as $role) { - $this->items[$role->rid]['role'] = check_plain($role->name); - $this->items[$role->rid]['rid'] = $role->rid; - } - } - } - - // Render the rid as the role name. - function render($values) { - - // Return the role name corresponding to the role ID. - // TODO: Should I be using this->get_value() here? - $rid = $values->uc_roles_expirations_rid; - if ($rid) { - $role = $this->items[$rid]['role']; - if (!empty($role)) { - return $role; - } - } - } -} - diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles.views.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles.views.inc new file mode 100644 index 00000000..ecebb9f5 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles.views.inc @@ -0,0 +1,64 @@ + array( + 'left_field' => 'uid', + 'field' => 'uid', + ), + ); + + // Expose the role expiration date. + $data['uc_roles_expirations']['expiration'] = array( + 'title' => t('Ubercart Role expiration date/time'), + 'help' => t('Date and time the role will expire. (See also Role expiration role.)'), + 'field' => array( + 'handler' => 'views_handler_field_date', + 'click sortable' => TRUE, + ), + 'sort' => array( + 'handler' => 'views_handler_sort_date', + ), + 'filter' => array( + 'handler' => 'views_handler_filter_date', + ), + ); + + // Expose the role id from uc_roles_expirations. + $data['uc_roles_expirations']['rid'] = array( + 'title' => t('Ubercart Role expiration role'), + 'help' => t('The Role that corresponds with the Role expiration date/time'), + // Information for displaying the rid + 'field' => array( + 'handler' => 'uc_roles_handler_field_rid', + 'click sortable' => TRUE, + ), + // Information for accepting a rid as an argument. + 'argument' => array( + 'handler' => 'views_handler_argument_users_roles_rid', + 'name field' => 'title', // The field to display in the summary. + 'numeric' => TRUE, + 'validate type' => 'rid', + ), + // Information for accepting a uid as a filter. + 'filter' => array( + 'handler' => 'views_handler_filter_user_roles', + ), + // Information for sorting on a uid. + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + + return $data; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles_handler_field_rid.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles_handler_field_rid.inc new file mode 100644 index 00000000..03436b46 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_roles/views/uc_roles_handler_field_rid.inc @@ -0,0 +1,52 @@ +items = array(); + + // Get all the unique role ids into the keys of $roles. Initializing into + // array_keys helps prevent us from having a list where the same rid appears + // over and over and over. + foreach ($values as $result) { + $roles[$this->get_value($result, NULL, TRUE)] = FALSE; + } + + if ($roles) { + $result = db_query("SELECT r.rid, r.name FROM {role} r WHERE r.rid IN (:rids) ORDER BY r.name", + array(':rids' => array_keys($roles))); + foreach ($result as $role) { + $this->items[$role->rid]['role'] = check_plain($role->name); + $this->items[$role->rid]['rid'] = $role->rid; + } + } + } + + /** + * Overrides views_handler_field::render(). + */ + function render($values) { + // Return the role name corresponding to the role ID. + // @todo: Should we be using this->get_value() here? + $rid = $values->uc_roles_expirations_rid; + if ($rid) { + $role = $this->items[$rid]['role']; + if (!empty($role)) { + return $role; + } + } + } + +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/tests/uc_stock.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/tests/uc_stock.test index f563a1a2..47fa7a10 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/tests/uc_stock.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/tests/uc_stock.test @@ -18,7 +18,7 @@ class UbercartStockTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - public function setUp() { + protected function setUp($modules = array(), $permissions = array()) { parent::setUp(array('uc_stock'), array('administer product stock')); $this->drupalLogin($this->adminUser); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/uc_stock.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/uc_stock.info index 0e4df11f..ba926e5f 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/uc_stock.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_stock/uc_stock.info @@ -12,9 +12,9 @@ files[] = views/uc_stock_handler_filter_below_threshold.inc configure = admin/store/settings/stock -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/cyprus_196_1.cif b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/cyprus_196_1.cif index e8adacfc..92084893 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/cyprus_196_1.cif +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/cyprus_196_1.cif @@ -27,5 +27,5 @@ function cyprus_install() { } $query->execute(); - uc_set_address_format(196, "!company\n!first_name !last_name\n!street1\n!street2\n!city, !zone_code !postal_code\n!country_name_if"); + uc_set_address_format(196, "!company\r\n!first_name !last_name\r\n!street1\r\n!street2\r\n!city, !zone_code !postal_code\r\n!country_name_if"); } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_2.cif b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_3.cif similarity index 80% rename from sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_2.cif rename to sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_3.cif index 94adba36..d28b72c3 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_2.cif +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/india_356_3.cif @@ -13,7 +13,7 @@ function india_install() { 'country_name' => 'India', 'country_iso_code_2' => 'IN', 'country_iso_code_3' => 'IND', - 'version' => 2, + 'version' => 3, )) ->execute(); @@ -44,14 +44,15 @@ function india_install() { array(356, 'ML', 'Meghalaya'), array(356, 'MZ', 'Mizoram'), array(356, 'NL', 'Nagaland'), - array(356, 'OR', 'Orissa'), + array(356, 'OR', 'Odisha'), array(356, 'PY', 'Puducherry'), array(356, 'PB', 'Punjab'), array(356, 'RJ', 'Rajasthan'), array(356, 'SK', 'Sikkim'), + array(356, 'TG', 'Telangana'), array(356, 'TN', 'Tamil Nadu'), array(356, 'TR', 'Tripura'), - array(356, 'UL', 'Uttarakhand'), + array(356, 'UT', 'Uttarakhand'), array(356, 'UP', 'Uttar Pradesh'), array(356, 'WB', 'West Bengal'), ); @@ -123,5 +124,33 @@ function india_update($version) { ->execute(); break; + + case 3: + // Add some missing zones + $zones = array( + array(356, 'TG', 'Telangana'), + ); + + $query = db_insert('uc_zones')->fields(array('zone_country_id', 'zone_code', 'zone_name')); + foreach ($zones as $zone) { + $query->values($zone); + } + $query->execute(); + + // Correct zone name + db_update('uc_zones') + ->fields(array('zone_name' => 'Odisha', 'zone_code' => 'OR')) + ->condition('zone_country_id', 356) + ->condition('zone_code', 'OR') + ->execute(); + + // Correct ISO-3166-2 code + db_update('uc_zones') + ->fields(array('zone_name' => 'Uttarakhand', 'zone_code' => 'UT')) + ->condition('zone_country_id', 356) + ->condition('zone_code', 'UL') + ->execute(); + + break; } } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/iran_364_3.cif b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/iran_364_3.cif index e4fad368..a148567f 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/iran_364_3.cif +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/countries/iran_364_3.cif @@ -1,5 +1,4 @@ adminUser. */ - function setUp($modules = array(), $permissions = array()) { + protected function setUp($modules = array(), $permissions = array()) { // Enable the core Ubercart modules and dependencies, along with any other modules passed as arguments. $modules = array_merge(array('uc_store', 'rules', 'uc_order', 'uc_product', 'uc_cart'), $modules); call_user_func_array(array('parent', 'setUp'), $modules); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store-rtl.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store-rtl.css new file mode 100644 index 00000000..ebed7aa4 --- /dev/null +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store-rtl.css @@ -0,0 +1,29 @@ +/** + * @file + * Styles for uc_store module. + */ + +.uc-inline-form .form-item { + float: right; + margin-right: auto; + margin-left: 1em; +} + +.uc-default-submit { + left: auto; + right: -9999px; +} + +/** + * CSS rules for address fields. + */ +.uc-store-address-field .form-item { + clear: right; +} + +.uc-store-address-field .form-item label { + float: right; + padding-right: inherit; + padding-left: 4px; + text-align: left; +} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.countries.inc b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.countries.inc index 802319e2..9fde51fe 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.countries.inc +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.countries.inc @@ -157,12 +157,12 @@ function uc_country_formats_form($form, &$form_state) { '#tree' => TRUE, ); foreach ($countries as $country) { - $form['countries'][$country->country_id] = array( + $form['countries']['country'][$country->country_id] = array( '#type' => 'fieldset', '#title' => check_plain(t($country->country_name)), '#group' => 'country', ); - $form['countries'][$country->country_id]['address_format'] = array( + $form['countries']['country'][$country->country_id]['address_format'] = array( '#type' => 'textarea', '#title' => t('@country address format', array('@country' => t($country->country_name))), '#default_value' => variable_get('uc_address_format_' . $country->country_id, ''), @@ -187,7 +187,7 @@ function uc_country_formats_form($form, &$form_state) { * @see uc_country_formats_form() */ function uc_country_formats_form_submit($form, &$form_state) { - foreach ($form_state['values']['countries'] as $country_id => $data) { + foreach ($form_state['values']['countries']['country'] as $country_id => $data) { variable_set('uc_address_format_' . $country_id, $data['address_format']); } drupal_set_message(t('Country settings saved.')); @@ -337,7 +337,7 @@ function uc_country_update($country_id, $version) { if ($func_base !== FALSE) { $func = $func_base . '_update'; if (function_exists($func)) { - for ($i = $country->version; $i <= $version; $i++) { + for ($i = $country->version + 1; $i <= $version; $i++) { $func($i); } } diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.css b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.css index a52bd040..14c4a1f2 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.css +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.css @@ -8,8 +8,8 @@ } .uc-inline-form .form-item { - float: left; - margin-right: 1em; + float: left; /* LTR */ + margin-right: 1em; /* LTR */ padding-top: 5px; } @@ -22,7 +22,7 @@ .uc-default-submit { height: 0; - left: -9999px; + left: -9999px; /* LTR */ position: absolute; top: -9999px; width: 0; @@ -45,14 +45,14 @@ * CSS rules for address fields. */ .uc-store-address-field .form-item { - clear: left; + clear: left; /* LTR */ margin-top: 2px; margin-bottom: 2px; padding: 2px; } .uc-store-address-field .form-item label { - float: left; + float: left; /* LTR */ padding-right: 4px; text-align: right; width: 15em; @@ -90,21 +90,3 @@ .path-admin-store-reports span.icon { background: transparent url('images/menu_reports.gif') no-repeat !important; } - -/** - * Vertical tabs missing legend workaround. To be removed when - * http://drupal.org/node/1015798 gets into Drupal core. - */ -.vertical-tabs fieldset fieldset legend { - display: inline-block; -} - -div.vertical-tabs .vertical-tabs-panes fieldset fieldset { - border: 1px solid #ccc; - margin: 1em 0; - padding: 2.5em 0 0; -} - -div.vertical-tabs .vertical-tabs-panes fieldset fieldset legend { - display: inline-block; -} diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.info index b1ddf9ac..89f9192b 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.info @@ -16,9 +16,9 @@ files[] = tests/uc_ajax.test configure = admin/store/settings/store stylesheets[all][] = uc_store.css -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.module b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.module index 309d838e..60ab42ff 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.module +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_store/uc_store.module @@ -212,7 +212,7 @@ function uc_store_menu() { * Access callback for top-level store administration menu item. */ function uc_store_admin_access() { - return user_access('administer_store') + return user_access('administer store') || user_access('view all orders') || user_access('view customers') || user_access('administer products') @@ -480,7 +480,7 @@ function uc_store_validate_number(&$element, &$form_state) { */ function uc_store_validate_uc_quantity(&$element, &$form_state) { if (!preg_match('/^\d+$/', $element['#value'])) { - form_error($element, t('The quantity must be a number.')); + form_error($element, t('The quantity must be an integer.')); } elseif (empty($element['#allow_zero']) && !$element['#value']) { form_error($element, t('The quantity cannot be zero.')); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_tax_report/uc_tax_report.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_tax_report/uc_tax_report.info index 1a07cac9..7d5dbd6a 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_tax_report/uc_tax_report.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_tax_report/uc_tax_report.info @@ -5,9 +5,9 @@ dependencies[] = uc_taxes package = Ubercart - core (optional) core = 7.x -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/tests/uc_taxes.test b/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/tests/uc_taxes.test index 62ca1dd3..4eb926cc 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/tests/uc_taxes.test +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/tests/uc_taxes.test @@ -21,7 +21,7 @@ class UbercartTaxesTestCase extends UbercartTestHelper { /** * Overrides DrupalWebTestCase::setUp(). */ - function setUp() { + protected function setUp($modules = array(), $permissions = array()) { $modules = array('uc_product_kit', 'uc_attribute', 'uc_cart', 'uc_payment', 'uc_payment_pack', 'uc_taxes'); $permissions = array('bypass node access', 'administer content types', 'administer rules', 'configure taxes'); parent::setUp($modules, $permissions); diff --git a/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/uc_taxes.info b/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/uc_taxes.info index dda10088..56360490 100644 --- a/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/uc_taxes.info +++ b/sites/all/modules/contrib/ecommerce/ubercart/uc_taxes/uc_taxes.info @@ -11,9 +11,9 @@ files[] = tests/uc_taxes.test configure = admin/store/settings/taxes -; Information added by Drupal.org packaging script on 2014-10-22 -version = "7.x-3.8" +; Information added by Drupal.org packaging script on 2016-07-16 +version = "7.x-3.10" core = "7.x" project = "ubercart" -datestamp = "1413965350" +datestamp = "1468644909" diff --git a/sites/all/modules/contrib/users/faq/faq.admin.inc b/sites/all/modules/contrib/users/faq/faq.admin.inc index 9409a8d9..837bb65a 100644 --- a/sites/all/modules/contrib/users/faq/faq.admin.inc +++ b/sites/all/modules/contrib/users/faq/faq.admin.inc @@ -57,9 +57,36 @@ function faq_general_settings_form($form) { '#default_value' => variable_get('faq_custom_breadcrumbs', TRUE), ); + $form['faq_path'] = array( + '#type' => 'textfield', + '#title' => t('FAQ Path'), + '#description' => t('This option sets the path to the faq page. DO NOT append with a \'/\''), + '#default_value' => variable_get('faq_path', 'faq-page'), + ); + return system_settings_form($form); } +/** + * Validate for general settings form. + */ +function faq_general_settings_form_validate($form, &$form_state) { + $path = $form_state['values']['faq_path']; + + // Check if there is no special characters and trailing slash. + $pattern = "/[\w-\/]+(? 'Frequently Asked Questions', 'page callback' => 'faq_page', 'access callback' => 'user_access', @@ -84,7 +85,7 @@ function faq_menu() { 'type' => MENU_SUGGESTED_ITEM, ); - $items['faq-page/list'] = array( + $items[$faq_path . '/list'] = array( 'title' => 'List', 'page callback' => 'faq_page', 'access callback' => 'user_access', @@ -93,7 +94,7 @@ function faq_menu() { 'type' => MENU_DEFAULT_LOCAL_TASK, ); - $items['faq-page/order'] = array( + $items[$faq_path . '/order'] = array( 'title' => 'Order', 'description' => 'Allows the user to configure the order of questions and answers on a FAQ page.', 'file' => 'faq.admin.inc', @@ -105,7 +106,7 @@ function faq_menu() { 'weight' => -8, ); - $items['faq-page/%'] = array( + $items[$faq_path . '/%'] = array( 'title' => 'Frequently Asked Questions', 'page callback' => 'faq_page', 'page arguments' => array(1), @@ -114,7 +115,7 @@ function faq_menu() { 'type' => MENU_CALLBACK, ); - $items['faq-page/%/list'] = array( + $items[$faq_path . '/%/list'] = array( 'title' => 'List', 'page callback' => 'faq_page', 'page arguments' => array(1), @@ -124,7 +125,7 @@ function faq_menu() { 'weight' => -10, ); - $items['faq-page/%/order'] = array( + $items[$faq_path . '/%/order'] = array( 'title' => 'Order', 'description' => 'Allows the user to configure the order of questions and answers on a FAQ page.', 'file' => 'faq.admin.inc', @@ -220,6 +221,14 @@ function faq_form($node, $form_state) { return $form; } +/** + * Implements hook_form_FORM_ID_alter(). + */ +function faq_form_faq_general_settings_form_alter(&$form, &$form_state) { + $form['#validate'][] = 'faq_general_settings_form_validate'; + $form['#submit'][] = 'faq_general_settings_form_submit'; +} + /** * Implements hook_insert(). * @@ -418,7 +427,7 @@ function faq_page($tid = 0, $faq_display = '', $category_display = '') { $output = $output_answers = ''; drupal_add_css(drupal_get_path('module', 'faq') . '/faq.css'); if (arg(0) == 'faq-page') { - drupal_set_title(variable_get('faq_title', 'Frequently Asked Questions')); + drupal_set_title(t(variable_get('faq_title', 'Frequently Asked Questions'))); } if (!module_exists("taxonomy")) { $tid = 0; @@ -536,7 +545,7 @@ function faq_page($tid = 0, $faq_display = '', $category_display = '') { // If we're viewing a specific category/term. if (!empty($tid)) { if ($term = taxonomy_term_load($tid)) { - $title = variable_get('faq_title', 'Frequently Asked Questions'); + $title = t(variable_get('faq_title', 'Frequently Asked Questions')); if (arg(0) == 'faq-page' && is_numeric(arg(1))) { drupal_set_title($title . ($title ? ' - ' : '') . faq_tt("taxonomy:term:$term->tid:name", $term->name)); } @@ -576,6 +585,10 @@ function faq_page($tid = 0, $faq_display = '', $category_display = '') { $tree = taxonomy_get_tree($vid, 0, NULL, TRUE); } + if (function_exists('i18n_taxonomy_localize_terms')) { + $tree = i18n_taxonomy_localize_terms($tree); + } + foreach ($tree as $term) { switch ($category_display) { case 'hide_qa': @@ -603,7 +616,7 @@ function faq_page($tid = 0, $faq_display = '', $category_display = '') { } } - $faq_description = variable_get('faq_description', ''); + $faq_description = t(variable_get('faq_description', '')); $format = variable_get('faq_description_format', 0); if ($format) { $faq_description = check_markup($faq_description, $format); @@ -678,7 +691,9 @@ function _display_faq_by_category($faq_display, $category_display, $term, $displ } if (module_exists('i18n_select')) { $query->condition('n.language', i18n_select_langcodes()); - $query->condition("{$td_alias}.language", i18n_select_langcodes()); + if (module_exists('i18n_taxonomy')) { + $query->condition("{$td_alias}.language", i18n_select_langcodes()); + } } // We only want the first column, which is nid, so that we can load all @@ -1348,6 +1363,10 @@ function faq_get_child_categories_faqs($term, $theme_function, $default_weight, $list = taxonomy_get_children($term->tid); + if (function_exists('i18n_taxonomy_localize_terms')) { + $list = i18n_taxonomy_localize_terms($list); + } + if (!is_array($list)) { return ''; } @@ -1389,7 +1408,9 @@ function faq_get_child_categories_faqs($term, $theme_function, $default_weight, } if (module_exists('i18n_select')) { $query->condition('n.language', i18n_select_langcodes()); - $query->condition("{$td_alias}.language", i18n_select_langcodes()); + if (module_exists('i18n_taxonomy')) { + $query->condition("{$td_alias}.language", i18n_select_langcodes()); + } } // We only want the first column, which is nid, so that we can load all @@ -1426,6 +1447,10 @@ function faq_view_child_category_headers($term) { $child_categories = array(); $list = taxonomy_get_children($term->tid); + if (function_exists('i18n_taxonomy_localize_terms')) { + $list = i18n_taxonomy_localize_terms($list); + } + foreach ($list as $tid => $child_term) { $term_node_count = faq_taxonomy_term_count_nodes($child_term->tid); if ($term_node_count) { @@ -1600,7 +1625,7 @@ function faq_set_breadcrumb($term = NULL) { $breadcrumb[] = l(faq_tt("taxonomy:term:$term->tid:name", $term->name), 'faq-page/' . $term->tid); } } - $breadcrumb[] = l(variable_get('faq_title', 'Frequently Asked Questions'), 'faq-page'); + $breadcrumb[] = l(t(variable_get('faq_title', 'Frequently Asked Questions')), 'faq-page'); $breadcrumb[] = l(t('Home'), NULL, array('attributes' => array('title' => variable_get('site_name', '')))); $breadcrumb = array_reverse($breadcrumb); return drupal_set_breadcrumb($breadcrumb);