Jump to content
Latest News: (loading..)
torinwalker

New UPS XML Shipping Module available

Recommended Posts

Installed UPS XML and runs absolutely great in English. This install does not have a Spanish install.

 

Is there a way to have this Mod work when someone changes the language to Spanish? I tried copying files around from

the English install to the Spanish folders but when I am in Spanish, and click the checkout button, I get a returned error of;

 

Warning: shipping(includes/languages/espanol/modules/shipping/upsxml.php) [function.shipping]: failed to open stream: No such file or directory in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/classes/shipping.php on line 36

 

Below this error it also displays;

 

 

Warning: constant() [function.constant]: Couldn't find constant UPSXML_US_01 in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/modules/shipping/upsxml.php on line 1015

Warning: constant() [function.constant]: Couldn't find constant UPSXML_US_02 in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/modules/shipping/upsxml.php on line 1015

Warning: constant() [function.constant]: Couldn't find constant UPSXML_US_07 in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/modules/shipping/upsxml.php on line 1015............etc, etc all the way to error UPSXML_EU_86

 

If someone could help out trying to get this to work in the Spanish language, it would be greatly appreciated....

Everything works great except this one checkout in Spanish

Edited by beanzy

Share this post


Link to post
Share on other sites

Is there a way to have this Mod work when someone changes the language to Spanish? I tried copying files around from

the English install to the Spanish folders but when I am in Spanish, and click the checkout button, I get a returned error of;

Well, I would say the error tells you exactly what you should do:

Warning: shipping(includes/languages/espanol/modules/shipping/upsxml.php) [function.shipping]: failed to open stream: No such file or directory in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/classes/shipping.php on line 36

To spell it out:

Copy the file includes/languages/english/modules/shipping/upsxml.php to includes/languages/espanol/modules/shipping/upsxml.php.

 

Additionally, you could translate a couple of things in Spanish in that file. Some things come directly from the UPS servers and cannot be translated though.

Below this error it also displays;

 

 

Warning: constant() [function.constant]: Couldn't find constant UPSXML_US_01 in /home/content/f/a/b/fabiolaniswong/html/catalog/includes/modules/shipping/upsxml.php on line 1015

All caused by the missing language file.

 

There is a contribution thread for this by the way. It is mentioned in the documentation but there might be a subtle change in the topic name because of the forum software upgrade a couple of months ago.

Share this post


Link to post
Share on other sites

I've thoroughly checked my work but cannot figure out why I'm getting two problems:

 

1. On the front end, after adding items to cart and logging in as a customer, I get the following error:

Warning: constant() [function.constant]: Couldn't find constant UPSXML_Array in /home/[storename]/public_html/includes/modules/shipping/upsxml.php on line 983

 

2. In admin, after editing Modules > Shipping > United Parcel Service, I get the following error:

Warning: constant() [function.constant]: Couldn't find constant UPSXML_Array in /home/[storename]/public_html/includes/modules/shipping/upsxml.php on line 1017

 

Can anyone point me in the right direction?

Share this post


Link to post
Share on other sites

I've thoroughly checked my work but cannot figure out why I'm getting two problems:

 

1. On the front end, after adding items to cart and logging in as a customer, I get the following error:

Warning: constant() [function.constant]: Couldn't find constant UPSXML_Array in /home/[storename]/public_html/includes/modules/shipping/upsxml.php on line 983

 

2. In admin, after editing Modules > Shipping > United Parcel Service, I get the following error:

Warning: constant() [function.constant]: Couldn't find constant UPSXML_Array in /home/[storename]/public_html/includes/modules/shipping/upsxml.php on line 1017

 

Can anyone point me in the right direction?

 

It appears to be fixed. I originally didn't upload the dimensional_support folder and files.

Share this post


Link to post
Share on other sites

Well, I would say the error tells you exactly what you should do:

 

To spell it out:

Copy the file includes/languages/english/modules/shipping/upsxml.php to includes/languages/espanol/modules/shipping/upsxml.php.

 

Additionally, you could translate a couple of things in Spanish in that file. Some things come directly from the UPS servers and cannot be translated though.

 

All caused by the missing language file.

 

There is a contribution thread for this by the way. It is mentioned in the documentation but there might be a subtle change in the topic name because of the forum software upgrade a couple of months ago.

 

 

 

Actually Jan, I did exactly that before posting. But ya know something, I tried it again and now it is working.

I do appreciate the reminder and all should very much appreciate your help here in the forums. Without people like you,

the non-programmers like myself would all be bald from pulling out their hair.

 

Cheers Jan!! (Bows graciously):)

Share this post


Link to post
Share on other sites

Hi there!

 

Thank you for the module. Could of points.

 

What is the difference between test and production if all it does currently is get rates?

 

It would be nice if there was a way a customer could indicated if they were residential or business. Otherwise is may just be better to use residential all the time since it may cost extra if you have it set to business and it turns out to be a residence.

 

I think the module is missing a version number display when you are in the admin section, I cant locate the filed to enter in the order of the shipping module and on the main file description it may be good to post a link to this thread.

 

I have the item option checked (ship separately and the fedex contribution recognizes it as 4 packages and yours des not. What did I do wrong or is it missing this option? I did not want to install the dimensions feature. If it quotes the customer a little higher that is fine, we will just keep the difference if it is not much.

 

Thank you!

Edited by kieran_mullen

Share this post


Link to post
Share on other sites

I've been searching for a way to do 2 things;

 

1) make the UPSXML shipping module option(s) not show up for orders weighing over 150 pounds.

2) make the flat rate shipping option show for orders that are over 150 pounds in it's place

 

Any help is really appreciated.

Edited by WebbyIT

Share this post


Link to post
Share on other sites

1) make the UPSXML shipping module option(s) not show up for orders weighing over 150 pounds.

2) make the flat rate shipping option show for orders that are over 150 pounds in it's place

Does this answer your question?

http://www.clubosc.com/one-shipping-module-to-control-two-shipping-methods.html

Share this post


Link to post
Share on other sites

Does this answer your question?

http://www.clubosc.com/one-shipping-module-to-control-two-shipping-methods.html

Thanks, I looked at that site from a previous post you made while I was searching for ways to handle it but did not see this page. It looks like it should solve my problems. I really appreciate your help and quick response.

Edited by WebbyIT

Share this post


Link to post
Share on other sites

Thanks, I looked at that site from a previous post you made while I was searching for ways to handle it but did not see this page. It looks like it should solve my problems. I really appreciate your help and quick response.

I should have looked closer before responding. The code/module on the page sets a rate table and then assigns a title/courier to display based on the price points all in one module. I want to use the UPSXML module as is (for updating purposes in the future by whoever) for all combined order weights up to 150, and then the flat rate module for all orders weighing over 150 pounds. I need to change the code that assigns which shipping module to show for which circumstances (over 150 or under 150).

 

I think I need to make the changes in the catalog/checkout_shipping.php code where it loads the enabled modules or in the shipping.php class file (or both) but can't figure out what to do. After writing this I just realized that this may not be the appropriate place to post this question. If it isn't please let me know. Thanks again for your help on this.

Share this post


Link to post
Share on other sites

The code/module on the page sets a rate table and then assigns a title/courier to display based on the price points all in one module. I want to use the UPSXML module as is (for updating purposes in the future by whoever) for all combined order weights up to 150, and then the flat rate module for all orders weighing over 150 pounds. I need to change the code that assigns which shipping module to show for which circumstances (over 150 or under 150).

I think that link is not to the code I thought it was. I recall having seen something simple there.

 

As you can see in all shipping modules there is a variable that is called $this->enabled that looks for the admin settings and then if it is enabled for the particular zone the shipping address is in.

 

After first declaring $shipping_weight a global you can add another check: if shipping weight is over 150 pounds or is equal to 150 pounds UPSXML is not enabled ($this->enabled = false).

 

Vice versa with the other module.

 

You can do it in the class shipping also. That is true. You can find sample code for that in Separate Pricing Per Customer that first loads all modules and then removes ones that a certain customer group should not be able to use.

Share this post


Link to post
Share on other sites

I think that link is not to the code I thought it was. I recall having seen something simple there.

 

As you can see in all shipping modules there is a variable that is called $this->enabled that looks for the admin settings and then if it is enabled for the particular zone the shipping address is in.

 

After first declaring $shipping_weight a global you can add another check: if shipping weight is over 150 pounds or is equal to 150 pounds UPSXML is not enabled ($this->enabled = false).

 

Vice versa with the other module.

 

You can do it in the class shipping also. That is true. You can find sample code for that in Separate Pricing Per Customer that first loads all modules and then removes ones that a certain customer group should not be able to use.

if ($total_weight > SHIPPING_MAX_WEIGHT) { 
         $this->enabled = false;
       }

 

Not sure why $shipping_weight wouldn't work but I used $total_weight and it worked. You really helped me out of a bind. My problem is that my customer doesn't want to use dimensional and so this module was cutting up individual products that weighed over 150 pounds into multiple packages which can't be done without using a cutting torch. lol

Thanks again.

Share this post


Link to post
Share on other sites

if ($total_weight > SHIPPING_MAX_WEIGHT) { 
         $this->enabled = false;
       }

 

Not sure why $shipping_weight wouldn't work but I used $total_weight and it worked. You really helped me out of a bind. My problem is that my customer doesn't want to use dimensional and so this module was cutting up individual products that weighed over 150 pounds into multiple packages which can't be done without using a cutting torch. lol

osC does the cutting in less than a microsecond :)

 

Did you declare $shipping_weight a global in function upsxml() in upsxml.php? $total_weight might be something from the class order (or cart?), where order was declared a global. If they are the same it doesn't matter anyway.

Share this post


Link to post
Share on other sites

osC does the cutting in less than a microsecond :)

 

Did you declare $shipping_weight a global in function upsxml() in upsxml.php? $total_weight might be something from the class order (or cart?), where order was declared a global. If they are the same it doesn't matter anyway.

 

I declared them both (individually) but it only worked when I coded everything for $total_weight. I didn't have time to look where it came from but it's on my list as I am curious also. I just remembered seeing it somewhere and thought I'd try it since the code looked right but I couldn't get it to work.

Share this post


Link to post
Share on other sites

I have had UPS XML installed and working fine for a little while. And I installed Header Tags SEO. And since Ive done that the dimensions in the category area of the admin side of the site doesn't save or show. I want to say it may be saving and not showing but it could be calculating shipping off of the default package in tools. I receive no errors of any sort. If I update anything else like tags, amounts, weight... I can see them and they stay changed. But the dimensions do not. My problem I'm guessing is in the admin/categories.php area so I'll copy as much of it as I can, I'm not really much of a programmer so I'm sure if the problem is there its something I easily don't know to change, any help would be greatly appreciated

 

(will have to shorten the code post)

<?php
/*
 $Id: categories.php 1755 2007-12-21 14:02:36Z hpdl $
 adapted for UPSXML dimensions support, including split products support (line 614-626) 2009/07/19

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2007 osCommerce

 Released under the GNU General Public License
*/

 require('includes/application_top.php');

 require(DIR_WS_CLASSES . 'currencies.php');
 $currencies = new currencies();

 $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
// Ultimate SEO URLs v2.2d
// If the action will affect the cache entries
  if ( preg_match("/(insert|update|setflag)/i", $action) ) include_once('includes/reset_seo_cache.php');

 if (tep_not_null($action)) {
   switch ($action) {
     case 'setflag':
       if ( ($HTTP_GET_VARS['flag'] == '0') || ($HTTP_GET_VARS['flag'] == '1') ) {
         if (isset($HTTP_GET_VARS['pID'])) {
           tep_set_product_status($HTTP_GET_VARS['pID'], $HTTP_GET_VARS['flag']);
         }

         if (USE_CACHE == 'true') {
           tep_reset_cache_block('categories');
           tep_reset_cache_block('also_purchased');
         }
       }

       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $HTTP_GET_VARS['cPath'] . '&pID=' . $HTTP_GET_VARS['pID']));
       break;
     case 'insert_category':
     case 'update_category':
       if (isset($HTTP_POST_VARS['categories_id'])) $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);
       $sort_order = tep_db_prepare_input($HTTP_POST_VARS['sort_order']);

       $sql_data_array = array('sort_order' => (int)$sort_order);

       if ($action == 'insert_category') {
         $insert_sql_data = array('parent_id' => $current_category_id,
                                  'date_added' => 'now()');

         $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

         tep_db_perform(TABLE_CATEGORIES, $sql_data_array);

         $categories_id = tep_db_insert_id();
       } elseif ($action == 'update_category') {
         $update_sql_data = array('last_modified' => 'now()');

         $sql_data_array = array_merge($sql_data_array, $update_sql_data);

         tep_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', "categories_id = '" . (int)$categories_id . "'");
       }

       $languages = tep_get_languages();
       for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
         $categories_name_array = $HTTP_POST_VARS['categories_name'];

         /*** Begin Header Tags SEO ***/
         $categories_htc_title_array = $HTTP_POST_VARS['categories_htc_title_tag'];
         $categories_htc_desc_array = $HTTP_POST_VARS['categories_htc_desc_tag'];
         $categories_htc_keywords_array = $HTTP_POST_VARS['categories_htc_keywords_tag'];
         $categories_htc_description_array = $HTTP_POST_VARS['categories_htc_description'];

         $language_id = $languages[$i]['id'];

         $sql_data_array = array('categories_name' => tep_db_prepare_input($categories_name_array[$language_id]),
          'categories_htc_title_tag' => (tep_not_null($categories_htc_title_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_title_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_array[$language_id]))),
          'categories_htc_desc_tag' => (tep_not_null($categories_htc_desc_array[$language_id]) ? tep_db_prepare_input($categories_htc_desc_array[$language_id]) :  tep_db_prepare_input($categories_name_array[$language_id])),
          'categories_htc_keywords_tag' => (tep_not_null($categories_htc_keywords_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_keywords_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_array[$language_id]))),
          'categories_htc_description' => tep_db_prepare_input($categories_htc_description_array[$language_id]));
         /*** End Header Tags SEO ***/

         if ($action == 'insert_category') {
           $insert_sql_data = array('categories_id' => $categories_id,
                                    'language_id' => $languages[$i]['id']);

           $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

           tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array);
         } elseif ($action == 'update_category') {
           tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array, 'update', "categories_id = '" . (int)$categories_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
         }
       }

       $categories_image = new upload('categories_image');
       $categories_image->set_destination(DIR_FS_CATALOG_IMAGES);

       if ($categories_image->parse() && $categories_image->save()) {
         tep_db_query("update " . TABLE_CATEGORIES . " set categories_image = '" . tep_db_input($categories_image->filename) . "' where categories_id = '" . (int)$categories_id . "'");
       }

       if (USE_CACHE == 'true') {
         tep_reset_cache_block('categories');
         tep_reset_cache_block('also_purchased');
       }
/*** Begin Header Tags SEO ***/
       if (HEADER_TAGS_ENABLE_CACHE != 'None') {
         require_once(DIR_WS_FUNCTIONS . 'header_tags.php');
         ResetCache_HeaderTags('index.php', 'c_' . $categories_id);
       }
       /*** End Header Tags SEO ***/
       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories_id));
       break;
     case 'delete_category_confirm':
       if (isset($HTTP_POST_VARS['categories_id'])) {
         $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

         $categories = tep_get_category_tree($categories_id, '', '0', '', true);
         $products = array();
         $products_delete = array();

         for ($i=0, $n=sizeof($categories); $i<$n; $i++) {
           $product_ids_query = tep_db_query("select products_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$categories[$i]['id'] . "'");

           while ($product_ids = tep_db_fetch_array($product_ids_query)) {
             $products[$product_ids['products_id']]['categories'][] = $categories[$i]['id'];
           }
         }

         reset($products);
         while (list($key, $value) = each($products)) {
           $category_ids = '';

           for ($i=0, $n=sizeof($value['categories']); $i<$n; $i++) {
             $category_ids .= "'" . (int)$value['categories'][$i] . "', ";
           }
           $category_ids = substr($category_ids, 0, -2);

           $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$key . "' and categories_id not in (" . $category_ids . ")");
           $check = tep_db_fetch_array($check_query);
           if ($check['total'] < '1') {
             $products_delete[$key] = $key;
           }
         }

// removing categories can be a lengthy process
         tep_set_time_limit(0);
         for ($i=0, $n=sizeof($categories); $i<$n; $i++) {
           tep_remove_category($categories[$i]['id']);
         }

         reset($products_delete);
         while (list($key) = each($products_delete)) {
           tep_remove_product($key);
         }
       }

       if (USE_CACHE == 'true') {
         tep_reset_cache_block('categories');
         tep_reset_cache_block('also_purchased');
       }
/*** Begin Header Tags SEO ***/
       if (HEADER_TAGS_ENABLE_CACHE != 'None') {
         require_once(DIR_WS_FUNCTIONS . 'header_tags.php');
         ResetCache_HeaderTags('index.php', 'c_' . $categories_id);
       }
       /*** End Header Tags SEO ***/
       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath));
       break;
     case 'delete_product_confirm':
       if (isset($HTTP_POST_VARS['products_id']) && isset($HTTP_POST_VARS['product_categories']) && is_array($HTTP_POST_VARS['product_categories'])) {
         $product_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
         $product_categories = $HTTP_POST_VARS['product_categories'];

         for ($i=0, $n=sizeof($product_categories); $i<$n; $i++) {
           tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "' and categories_id = '" . (int)$product_categories[$i] . "'");
         }

         $product_categories_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "'");
         $product_categories = tep_db_fetch_array($product_categories_query);

         if ($product_categories['total'] == '0') {
           tep_remove_product($product_id);
         }
       }

       if (USE_CACHE == 'true') {
         tep_reset_cache_block('categories');
         tep_reset_cache_block('also_purchased');
       }
/*** Begin Header Tags SEO ***/
       if (HEADER_TAGS_ENABLE_CACHE != 'None') {
         require_once(DIR_WS_FUNCTIONS . 'header_tags.php');
         ResetCache_HeaderTags('product_info.php', 'p_' . $product_id);
       }
       /*** End Header Tags SEO ***/
       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath));
       break;
     case 'move_category_confirm':
       if (isset($HTTP_POST_VARS['categories_id']) && ($HTTP_POST_VARS['categories_id'] != $HTTP_POST_VARS['move_to_category_id'])) {
         $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);
         $new_parent_id = tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

         $path = explode('_', tep_get_generated_category_path_ids($new_parent_id));

         if (in_array($categories_id, $path)) {
           $messageStack->add_session(ERROR_CANNOT_MOVE_CATEGORY_TO_PARENT, 'error');

           tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories_id));
         } else {
           tep_db_query("update " . TABLE_CATEGORIES . " set parent_id = '" . (int)$new_parent_id . "', last_modified = now() where categories_id = '" . (int)$categories_id . "'");

           if (USE_CACHE == 'true') {
             tep_reset_cache_block('categories');
             tep_reset_cache_block('also_purchased');
           }

           tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $new_parent_id . '&cID=' . $categories_id));
         }
       }

       break;
     case 'move_product_confirm':
       $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
       $new_parent_id = tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

       $duplicate_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$new_parent_id . "'");
       $duplicate_check = tep_db_fetch_array($duplicate_check_query);
       if ($duplicate_check['total'] < 1) tep_db_query("update " . TABLE_PRODUCTS_TO_CATEGORIES . " set categories_id = '" . (int)$new_parent_id . "' where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$current_category_id . "'");

       if (USE_CACHE == 'true') {
         tep_reset_cache_block('categories');
         tep_reset_cache_block('also_purchased');
       }

       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $new_parent_id . '&pID=' . $products_id));
       break;
     case 'insert_product':
     case 'update_product':
       if (isset($HTTP_POST_VARS['edit_x']) || isset($HTTP_POST_VARS['edit_y'])) {
         $action = 'new_product';
       } else {
         if (isset($HTTP_GET_VARS['pID'])) $products_id = tep_db_prepare_input($HTTP_GET_VARS['pID']);
         $products_date_available = tep_db_prepare_input($HTTP_POST_VARS['products_date_available']);

         $products_date_available = (date('Y-m-d') < $products_date_available) ? $products_date_available : 'null';

         $sql_data_array = array('products_quantity' => (int)tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),
                                 'products_model' => tep_db_prepare_input($HTTP_POST_VARS['products_model']),
                                 'products_price' => tep_db_prepare_input($HTTP_POST_VARS['products_price']),
                                 'products_date_available' => $products_date_available,
                                 'products_weight' => (float)tep_db_prepare_input($HTTP_POST_VARS['products_weight']),
                                 'products_height' => tep_db_prepare_input($HTTP_POST_VARS['products_height']),
                                 'products_length' => tep_db_prepare_input($HTTP_POST_VARS['products_length']),
                                 'products_width' => tep_db_prepare_input($HTTP_POST_VARS['products_width']),
                                 'products_ready_to_ship' => tep_db_prepare_input($HTTP_POST_VARS['products_ready_to_ship']),
                                 'products_status' => tep_db_prepare_input($HTTP_POST_VARS['products_status']),
                                 'products_tax_class_id' => tep_db_prepare_input($HTTP_POST_VARS['products_tax_class_id']),
                                 'manufacturers_id' => (int)tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));

         if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none')) {
           $sql_data_array['products_image'] = tep_db_prepare_input($HTTP_POST_VARS['products_image']);
         }

         if ($action == 'insert_product') {
           $insert_sql_data = array('products_date_added' => 'now()');

           $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

           tep_db_perform(TABLE_PRODUCTS, $sql_data_array);
           $products_id = tep_db_insert_id();

           tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$current_category_id . "')");
         } elseif ($action == 'update_product') {
           $update_sql_data = array('products_last_modified' => 'now()');

           $sql_data_array = array_merge($sql_data_array, $update_sql_data);

           tep_db_perform(TABLE_PRODUCTS, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "'");
         }

         $languages = tep_get_languages();
         for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
           $language_id = $languages[$i]['id'];

           /*** Begin Header Tags SEO ***/
           $sql_data_array = array('products_name' => tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]),
                                   'products_description' => tep_db_prepare_input($HTTP_POST_VARS['products_description'][$language_id]),
                                   'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]),
                                   'products_head_title_tag' => ((tep_not_null($HTTP_POST_VARS['products_head_title_tag'][$language_id])) ? tep_db_prepare_input(strip_tags($HTTP_POST_VARS['products_head_title_tag'][$language_id])) : tep_db_prepare_input(strip_tags($HTTP_POST_VARS['products_name'][$language_id]))),
                                   'products_head_desc_tag' => ((tep_not_null($HTTP_POST_VARS['products_head_desc_tag'][$language_id])) ? tep_db_prepare_input($HTTP_POST_VARS['products_head_desc_tag'][$language_id]) : tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id])),
                                   'products_head_keywords_tag' => ((tep_not_null($HTTP_POST_VARS['products_head_keywords_tag'][$language_id])) ? tep_db_prepare_input(strip_tags($HTTP_POST_VARS['products_head_keywords_tag'][$language_id])) : tep_db_prepare_input(strip_tags($HTTP_POST_VARS['products_name'][$language_id]))));
          /*** End Header Tags SEO ***/

           if ($action == 'insert_product') {
             $insert_sql_data = array('products_id' => $products_id,
                                      'language_id' => $language_id);

             $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

             tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array);
           } elseif ($action == 'update_product') {
             tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "' and language_id = '" . (int)$language_id . "'");
           }
         }

         if (USE_CACHE == 'true') {
           tep_reset_cache_block('categories');
           tep_reset_cache_block('also_purchased');
         }
/*** Begin Header Tags SEO ***/
         if (HEADER_TAGS_ENABLE_CACHE != 'None') {
           require_once(DIR_WS_FUNCTIONS . 'header_tags.php');
           ResetCache_HeaderTags('product_info.php', 'p_' . $products_id);
         }
         /*** End Header Tags SEO ***/
         tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products_id));
       }
       break;
     case 'copy_to_confirm':
       if (isset($HTTP_POST_VARS['products_id']) && isset($HTTP_POST_VARS['categories_id'])) {
         $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
         $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

         if ($HTTP_POST_VARS['copy_as'] == 'link') {
           if ($categories_id != $current_category_id) {
             $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$categories_id . "'");
             $check = tep_db_fetch_array($check_query);
             if ($check['total'] < '1') {
               tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$categories_id . "')");
             }
           } else {
             $messageStack->add_session(ERROR_CANNOT_LINK_TO_SAME_CATEGORY, 'error');
           }
         } elseif ($HTTP_POST_VARS['copy_as'] == 'duplicate') {
           $product_query = tep_db_query("select products_quantity, products_model, products_image, products_price, products_date_available, products_weight, products_length, products_width, products_height, products_ready_to_ship, products_tax_class_id, manufacturers_id from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
           $product = tep_db_fetch_array($product_query);

           tep_db_query("insert into " . TABLE_PRODUCTS . " (products_quantity, products_model,products_image, products_price, products_date_added, products_date_available, products_weight, products_length, products_width, products_height, products_ready_to_ship, products_status, products_tax_class_id, manufacturers_id) values ('" . tep_db_input($product['products_quantity']) . "', '" . tep_db_input($product['products_model']) . "', '" . tep_db_input($product['products_image']) . "', '" . tep_db_input($product['products_price']) . "',  now(), " . (empty($product['products_date_available']) ? "null" : "'" . tep_db_input($product['products_date_available']) . "'") . ", '" . tep_db_input($product['products_weight']) . "', '" . tep_db_input($product['products_length']) . "', '" . tep_db_input($product['products_width']) . "','" . tep_db_input($product['products_height']) . "', '" . tep_db_input($product['products_ready_to_ship']) . "', '0', '" . (int)$product['products_tax_class_id'] . "', '" . (int)$product['manufacturers_id'] . "')");
           $dup_products_id = tep_db_insert_id();

           /*** Begin Header Tags SEO ***/
           $description_query = tep_db_query("select language_id, products_name, products_description, products_head_title_tag, products_head_desc_tag, products_head_keywords_tag, products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'");
           while ($description = tep_db_fetch_array($description_query)) {
             tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_head_title_tag, products_head_desc_tag, products_head_keywords_tag, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_head_title_tag']) . "', '" . tep_db_input($description['products_head_desc_tag']) . "', '" . tep_db_input($description['products_head_keywords_tag']) . "', '" . tep_db_input($description['products_url']) . "', '0')");
           }
          /*** End Header Tags SEO ***/

           tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$dup_products_id . "', '" . (int)$categories_id . "')");
           $products_id = $dup_products_id;
         }

         if (USE_CACHE == 'true') {
           tep_reset_cache_block('categories');
           tep_reset_cache_block('also_purchased');
         }
       }

       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $categories_id . '&pID=' . $products_id));
       break;
     case 'new_product_preview':
// copy image only if modified
       $products_image = new upload('products_image');
       $products_image->set_destination(DIR_FS_CATALOG_IMAGES);
       if ($products_image->parse() && $products_image->save()) {
         $products_image_name = $products_image->filename;
       } else {
         $products_image_name = (isset($HTTP_POST_VARS['products_previous_image']) ? $HTTP_POST_VARS['products_previous_image'] : '');
       }
       break;
   }
 }

// check if the catalog image directory exists
 if (is_dir(DIR_FS_CATALOG_IMAGES)) {
   if (!is_writeable(DIR_FS_CATALOG_IMAGES)) $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE, 'error');
 } else {
   $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_DOES_NOT_EXIST, 'error');
 }
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<script language="javascript" src="includes/general.js"></script>
<?php
/*** Begin Header Tags SEO ***/
switch (HEADER_TAGS_ENABLE_HTML_EDITOR)
{
  case 'CKEditor':
    echo '<script type="text/javascript" src="./ckeditor/ckeditor.js"></script>';
  break;

  case 'FCKEditor':
  break;

  case 'TinyMCE':
    if (HEADER_TAGS_ENABLE_HTML_EDITOR != 'No Editor' && (HEADER_TAGS_ENABLE_EDITOR_META_DESC == 'true' || HEADER_TAGS_ENABLE_EDITOR_CATEGORIES == 'true' || HEADER_TAGS_ENABLE_EDITOR_PRODUCTS == 'true'))
    {
      if ($action == 'new_product' || $action == 'new_category' || $action == 'edit_category') { // No need to put JS on all pages.
        $languages = tep_get_languages(); // Get all languages
      // Build list of textareas to convert
        $str = '';
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          if (HEADER_TAGS_ENABLE_EDITOR_META_DESC  == 'true') $str .= "products_head_desc_tag[".$languages[$i]['id']."],";
          if (HEADER_TAGS_ENABLE_EDITOR_CATEGORIES == 'true') $str .= "categories_htc_description[".$languages[$i]['id']."],";
          if (HEADER_TAGS_ENABLE_EDITOR_PRODUCTS == 'true') $str .= "products_description[".$languages[$i]['id']."],";
        }  //end for each language
        $mce_str = rtrim ($str,","); // Removed the last comma from the string.
      // You can add more textareas to convert in the $str, be careful that they are all separated by a comma.
        echo '<script language="javascript" type="text/javascript" src="includes/javascript/tiny_mce/tiny_mce.js"></script>';
        include "includes/javascript/tiny_mce/general.php";
      }
    }
  break;

  default: break;
}
/*** End Header Tags SEO ***/
?>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">
<div id="spiffycalendar" class="text"></div>
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="2" cellpadding="2">
 <tr>
   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
   </table></td>
<!-- body_text //-->
   <td width="100%" valign="top">
<?php
 if ($action == 'new_product') {
   $parameters = array('products_name' => '',
                      'products_description' => '',
                      'products_url' => '',
                      'products_id' => '',
                      'products_quantity' => '',
                      'products_model' => '',
                      'products_image' => '',
                      'products_price' => '',
                      'products_weight' => '',
                      'products_length' => '',
                      'products_width' => '',
                      'products_height' => '',
                      'products_ready_to_ship' => '',
                      'products_date_added' => '',
                      'products_last_modified' => '',
                      'products_date_available' => '',
                      'products_status' => '',
                          'products_tax_class_id' => '',
                      'manufacturers_id' => '');

   $pInfo = new objectInfo($parameters);

   if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {
   /*** Begin Header Tags SEO ***/
     $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_head_title_tag, pd.products_head_desc_tag, pd.products_head_keywords_tag, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_tax_class_id, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");
   /*** End Header Tags SEO ***/
     $product = tep_db_fetch_array($product_query);

     $pInfo->objectInfo($product);
   } elseif (tep_not_null($HTTP_POST_VARS)) {
     $pInfo->objectInfo($HTTP_POST_VARS);
     $products_name = $HTTP_POST_VARS['products_name'];
     $products_description = $HTTP_POST_VARS['products_description'];
     $products_url = $HTTP_POST_VARS['products_url'];
   }

   $manufacturers_array = array(array('id' => '', 'text' => TEXT_NONE));
   $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");
   while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
     $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'],
                                    'text' => $manufacturers['manufacturers_name']);
   }

   $tax_class_array = array(array('id' => '0', 'text' => TEXT_NONE));
   $tax_class_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title");
   while ($tax_class = tep_db_fetch_array($tax_class_query)) {
     $tax_class_array[] = array('id' => $tax_class['tax_class_id'],
                                'text' => $tax_class['tax_class_title']);
   }

   $languages = tep_get_languages();

   if (!isset($pInfo->products_status)) $pInfo->products_status = '1';
   switch ($pInfo->products_status) {
     case '0': $in_status = false; $out_status = true; break;
     case '1':
     default: $in_status = true; $out_status = false;
   }
?>
<link rel="stylesheet" type="text/css" href="includes/javascript/spiffyCal/spiffyCal_v2_1.css">
<script language="JavaScript" src="includes/javascript/spiffyCal/spiffyCal_v2_1.js"></script>
<script language="javascript"><!--
 var dateAvailable = new ctlSpiffyCalendarBox("dateAvailable", "new_product", "products_date_available","btnDate1","<?php echo $pInfo->products_date_available; ?>",scBTNMODE_CUSTOMBLUE);
//--></script>
<script language="javascript"><!--
var tax_rates = new Array();
<?php
   for ($i=0, $n=sizeof($tax_class_array); $i<$n; $i++) {
     if ($tax_class_array[$i]['id'] > 0) {
       echo 'tax_rates["' . $tax_class_array[$i]['id'] . '"] = ' . tep_get_tax_rate_value($tax_class_array[$i]['id']) . ';' . "\n";
     }
   }
?>

function doRound(x, places) {
 return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
}

function getTaxRate() {
 var selected_value = document.forms["new_product"].products_tax_class_id.selectedIndex;
 var parameterVal = document.forms["new_product"].products_tax_class_id[selected_value].value;

 if ( (parameterVal > 0) && (tax_rates[parameterVal] > 0) ) {
   return tax_rates[parameterVal];
 } else {
   return 0;
 }
}

function updateGross() {
 var taxRate = getTaxRate();
 var grossValue = document.forms["new_product"].products_price.value;

 if (taxRate > 0) {
   grossValue = grossValue * ((taxRate / 100) + 1);
 }

 document.forms["new_product"].products_price_gross.value = doRound(grossValue, 4);
}

function updateNet() {
 var taxRate = getTaxRate();
 var netValue = document.forms["new_product"].products_price_gross.value;

 if (taxRate > 0) {
   netValue = netValue / ((taxRate / 100) + 1);
 }

 document.forms["new_product"].products_price.value = doRound(netValue, 4);
}
//--></script>
   <?php echo tep_draw_form('new_product', FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '') . '&action=new_product_preview', 'post', 'enctype="multipart/form-data"'); ?>
   <table border="0" width="100%" cellspacing="0" cellpadding="2">
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo sprintf(TEXT_NEW_PRODUCT, tep_output_generated_category_path($current_category_id)); ?></td>
           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_STATUS; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_radio_field('products_status', '1', $in_status) . ' ' . TEXT_PRODUCT_AVAILABLE . ' ' . tep_draw_radio_field('products_status', '0', $out_status) . ' ' . TEXT_PRODUCT_NOT_AVAILABLE; ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_DATE_AVAILABLE; ?><br><small>(YYYY-MM-DD)</small></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' '; ?><script language="javascript">dateAvailable.writeControl(); dateAvailable.dateFormat="yyyy-MM-dd";</script></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_MANUFACTURER; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, $pInfo->manufacturers_id); ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
<?php
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
         <tr>
           <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_NAME; ?></td>
           <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('products_name[' . $languages[$i]['id'] . ']', (isset($products_name[$languages[$i]['id']]) ? stripslashes($products_name[$languages[$i]['id']]) : tep_get_products_name($pInfo->products_id, $languages[$i]['id']))); ?></td>
         </tr>
<?php
   }
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr bgcolor="#ebebff">
           <td class="main"><?php echo TEXT_PRODUCTS_TAX_CLASS; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('products_tax_class_id', $tax_class_array, $pInfo->products_tax_class_id, 'onchange="updateGross()"'); ?></td>
         </tr>
         <tr bgcolor="#ebebff">
           <td class="main"><?php echo TEXT_PRODUCTS_PRICE_NET; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_price', $pInfo->products_price, 'onKeyUp="updateGross()"'); ?></td>
         </tr>
         <tr bgcolor="#ebebff">
           <td class="main"><?php echo TEXT_PRODUCTS_PRICE_GROSS; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_price_gross', $pInfo->products_price, 'OnKeyUp="updateNet()"'); ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
<script language="javascript"><!--
updateGross();
//--></script>

<?php /*** Begin Header Tags SEO ***/ ?>
<?php
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
         <tr>
           <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_DESCRIPTION; ?></td>
           <td><table border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td class="main" valign="top"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']); ?> </td>
               <td class="main">
               <?php
                 if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_PRODUCTS == 'false')
                   echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_description[$languages[$i]['id']]) ? $products_description[$languages[$i]['id']] : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                 else
                 {
                   if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') {
                     echo tep_draw_fckeditor('products_description[' . $languages[$i]['id'] . ']', '600', '300', (isset($products_description[$languages[$i]['id']]) ? $products_description[$languages[$i]['id']] : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                   } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') {
                     echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '110', '15', (isset($products_description[$languages[$i]['id']]) ? $products_description[$languages[$i]['id']] : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])), 'id = "products_description[' . $languages[$i]['id'] . ']" class="ckeditor"');
                   } else {
                     echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_description[$languages[$i]['id']]) ? $products_description[$languages[$i]['id']] : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                   }
                 }
               ?>
               </td>

             </tr>
           </table></td>
         </tr>
<?php
   }
?>
         <tr>
           <td colspan="2" class="main"><hr><?php echo TEXT_PRODUCT_METTA_INFO; ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
<?php
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>

         <tr>
           <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_PAGE_TITLE; ?></td>
           <td><table border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td class="main" valign="top"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']); ?> </td>
               <td class="main"><?php echo tep_draw_textarea_field('products_head_title_tag[' . $languages[$i]['id'] . ']', 'soft', '70', '5', (isset($products_head_title_tag[$languages[$i]['id']]) ? stripslashes($products_head_title_tag[$languages[$i]['id']]) : tep_get_products_head_title_tag($pInfo->products_id, $languages[$i]['id']))); ?></td>
             </tr>
           </table></td>
         </tr>
<?php
   }
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
          <tr>
           <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_HEADER_DESCRIPTION; ?></td>
           <td><table border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td class="main" valign="top"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']); ?> </td>
               <td class="main">
               <?php
                 if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_META_DESC == 'false')
                   echo tep_draw_textarea_field('products_head_desc_tag[' . $languages[$i]['id'] . ']', 'soft', '70', '5', (isset($products_head_desc_tag[$languages[$i]['id']]) ? stripslashes($products_head_desc_tag[$languages[$i]['id']]) : tep_get_products_head_desc_tag($pInfo->products_id, $languages[$i]['id'])));
                 else
                 {
                   if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') {
                     echo tep_draw_fckeditor('products_head_desc_tag[' . $languages[$i]['id'] . ']', '600', '300', (isset($products_head_desc_tag[$languages[$i]['id']]) ? $products_head_desc_tag[$languages[$i]['id']] : tep_get_products_head_desc_tag($pInfo->products_id, $languages[$i]['id'])));
                   } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') {
                     echo tep_draw_textarea_field('products_head_desc_tag[' . $languages[$i]['id'] . ']', 'soft', '110', '15', (isset($products_head_desc_tag[$languages[$i]['id']]) ? $products_head_desc_tag[$languages[$i]['id']] : tep_get_products_head_desc_tag($pInfo->products_id, $languages[$i]['id'])), 'id = "products_head_desc_tag[' . $languages[$i]['id'] . ']" class="ckeditor"');
                   } else {
                     echo tep_draw_textarea_field('products_head_desc_tag[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_head_desc_tag[$languages[$i]['id']]) ? $products_head_desc_tag[$languages[$i]['id']] : tep_get_products_head_desc_tag($pInfo->products_id, $languages[$i]['id'])));
                   }
                 }
                ?>
                </td>
             </tr>
           </table></td>
         </tr>
<?php
   }
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
          <tr>
           <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_KEYWORDS; ?></td>
           <td><table border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td class="main" valign="top"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']); ?> </td>
               <td class="main"><?php echo tep_draw_textarea_field('products_head_keywords_tag[' . $languages[$i]['id'] . ']', 'soft', '70', '5', (isset($products_head_keywords_tag[$languages[$i]['id']]) ? stripslashes($products_head_keywords_tag[$languages[$i]['id']]) : tep_get_products_head_keywords_tag($pInfo->products_id, $languages[$i]['id']))); ?></td>
             </tr>
           </table></td>
         </tr>
<?php
   }
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td colspan="2" class="main"><hr></td>
         </tr>
<?php /*** End Header Tags SEO ***/ ?>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_QUANTITY; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_quantity', $pInfo->products_quantity); ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_MODEL; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_model', $pInfo->products_model); ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_IMAGE; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_file_field('products_image') . '<br>' . tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . $pInfo->products_image . tep_draw_hidden_field('products_previous_image', $pInfo->products_image); ?></td>
         </tr>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
<?php
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
         <tr>
           <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_URL . '<br><small>' . TEXT_PRODUCTS_URL_WITHOUT_HTTP . '</small>'; ?></td>
           <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('products_url[' . $languages[$i]['id'] . ']', (isset($products_url[$languages[$i]['id']]) ? stripslashes($products_url[$languages[$i]['id']]) : tep_get_products_url($pInfo->products_id, $languages[$i]['id']))); ?></td>
         </tr>
<?php
   }
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_WEIGHT; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_weight', $pInfo->products_weight); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_LENGTH; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_length', $pInfo->products_length); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_WIDTH; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_width', $pInfo->products_width); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_HEIGHT; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_height', $pInfo->products_height); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_READY_TO_SHIP; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_checkbox_field('products_ready_to_ship', '1', (($product['products_ready_to_ship'] == '1') ? true : false)); ?></td>
         </tr>
<?php
  if (isset($pInfo->products_id) && tep_not_null($pInfo->products_id)) {
?>
         <tr>
           <td class="main"><?php echo TEXT_PRODUCTS_SPLIT_PRODUCT; ?></td>
<?php $check_split_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_SPLIT . " where products_id = '" . $pInfo->products_id . "'");
     $check_split = tep_db_fetch_array($check_split_query);
?>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '22', '15') . ' ' . ($check_split['total'] < 1 ? 'no' : $check_split['total']); ?>  <?php echo '<a href="javascript:void(0)" onmouseover="window.status=\'' . TEXT_MOUSE_OVER_SPLIT_PRODUCTS . '\';return true;" onmouseout="window.status=\'\'; return true;" onclick="window.open(\'' . tep_href_link(FILENAME_SPLIT_PRODUCT, 'pid=' . $pInfo->products_id, 'NONSSL') . '\',\'' . NAME_WINDOW_SPLIT_PRODUCTS_POPUP . '\',\'menubar=yes,resizable=yes,scrollbars=yes,status=no,location=no,width=650,height=350\');return false">' . tep_image_button('button_edit.gif', IMAGE_UPDATE, 'style="vertical-align: middle;"'); ?></a></td>
         </tr>
<?php
 } // end if (isset($pInfo->products_id)) ...
?>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td class="main" align="right"><?php echo tep_draw_hidden_field('products_date_added', (tep_not_null($pInfo->products_date_added) ? $pInfo->products_date_added : date('Y-m-d'))) . tep_image_submit('button_preview.gif', IMAGE_PREVIEW) . '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '')) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>
     </tr>
   </table></form>
<?php /*** Begin Header Tags SEO ***/ ?>
<?php
 } elseif ($action == 'new_product_preview') {
   if (tep_not_null($HTTP_POST_VARS)) {
     $pInfo = new objectInfo($HTTP_POST_VARS);
     $products_name = $HTTP_POST_VARS['products_name'];
     $products_description = $HTTP_POST_VARS['products_description'];
     $products_head_title_tag = $HTTP_POST_VARS['products_head_title_tag'];
     $products_head_desc_tag = $HTTP_POST_VARS['products_head_desc_tag'];
     $products_head_keywords_tag = $HTTP_POST_VARS['products_head_keywords_tag'];
     $products_url = $HTTP_POST_VARS['products_url'];
   } else {
     $product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_head_title_tag, pd.products_head_desc_tag, pd.products_head_keywords_tag, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id  from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = pd.products_id and p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "'");
     $product = tep_db_fetch_array($product_query);
/*** End Header Tags SEO ***/

     $pInfo = new objectInfo($product);
     $products_image_name = $pInfo->products_image;
   }

   $form_action = (isset($HTTP_GET_VARS['pID'])) ? 'update_product' : 'insert_product';

   echo tep_draw_form($form_action, FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '') . '&action=' . $form_action, 'post', 'enctype="multipart/form-data"');

   /*** Begin Header Tags SEO ***/
   $languages = tep_get_languages();
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
     if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
       $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
       $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
       $pInfo->products_head_title_tag = tep_db_prepare_input($products_head_title_tag[$languages[$i]['id']]);
       $pInfo->products_head_desc_tag = tep_db_prepare_input($products_head_desc_tag[$languages[$i]['id']]);
       $pInfo->products_head_keywords_tag = tep_db_prepare_input($products_head_keywords_tag[$languages[$i]['id']]);
       $pInfo->products_url = tep_get_products_url($pInfo->products_id, $languages[$i]['id']);
     } else {
       $pInfo->products_name = tep_db_prepare_input($products_name[$languages[$i]['id']]);
       $pInfo->products_description = tep_db_prepare_input($products_description[$languages[$i]['id']]);
       $pInfo->products_head_title_tag = tep_db_prepare_input($products_head_title_tag[$languages[$i]['id']]);
       $pInfo->products_head_desc_tag = tep_db_prepare_input($products_head_desc_tag[$languages[$i]['id']]);
       $pInfo->products_head_keywords_tag = tep_db_prepare_input($products_head_keywords_tag[$languages[$i]['id']]);
       $pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);
     }
   /*** End Header Tags SEO ***/
     }

Share this post


Link to post
Share on other sites

Here is the rest of it-

 

 

 

?>
   <table border="0" width="100%" cellspacing="0" cellpadding="2">
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . $pInfo->products_name; ?></td>
           <td class="pageHeading" align="right"><?php echo $currencies->format($pInfo->products_price); ?></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><?php echo tep_image(DIR_WS_CATALOG_IMAGES . $products_image_name, $pInfo->products_name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'align="right" hspace="5" vspace="5"') . $pInfo->products_description; ?></td>
     </tr>
<?php
     if ($pInfo->products_url) {
?>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><?php echo sprintf(TEXT_PRODUCT_MORE_INFORMATION, $pInfo->products_url); ?></td>
     </tr>
<?php
     }
?>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
<?php
     if ($pInfo->products_date_available > date('Y-m-d')) {
?>
     <tr>
       <td align="center" class="smallText"><?php echo sprintf(TEXT_PRODUCT_DATE_AVAILABLE, tep_date_long($pInfo->products_date_available)); ?></td>
     </tr>
<?php
     } else {
?>
     <tr>
       <td align="center" class="smallText"><?php echo sprintf(TEXT_PRODUCT_DATE_ADDED, tep_date_long($pInfo->products_date_added)); ?></td>
     </tr>
<?php
     }
?>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
<?php
   }

   if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
     if (isset($HTTP_GET_VARS['origin'])) {
       $pos_params = strpos($HTTP_GET_VARS['origin'], '?', 0);
       if ($pos_params != false) {
         $back_url = substr($HTTP_GET_VARS['origin'], 0, $pos_params);
         $back_url_params = substr($HTTP_GET_VARS['origin'], $pos_params + 1);
       } else {
         $back_url = $HTTP_GET_VARS['origin'];
         $back_url_params = '';
       }
     } else {
       $back_url = FILENAME_CATEGORIES;
       $back_url_params = 'cPath=' . $cPath . '&pID=' . $pInfo->products_id;
     }
?>
     <tr>
       <td align="right"><?php echo '<a href="' . tep_href_link($back_url, $back_url_params, 'NONSSL') . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>
     </tr>
<?php
   } else {
?>
     <tr>
       <td align="right" class="smallText">
<?php
/* Re-Post all POST'ed variables */
     reset($HTTP_POST_VARS);
     while (list($key, $value) = each($HTTP_POST_VARS)) {
       if (!is_array($HTTP_POST_VARS[$key])) {
         echo tep_draw_hidden_field($key, htmlspecialchars(stripslashes($value)));
       }
     }
     $languages = tep_get_languages();
     for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
       echo tep_draw_hidden_field('products_name[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_name[$languages[$i]['id']])));
       echo tep_draw_hidden_field('products_description[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_description[$languages[$i]['id']])));
/*** Begin Header Tags SEO ***/
       echo tep_draw_hidden_field('products_head_title_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_title_tag[$languages[$i]['id']])));
       echo tep_draw_hidden_field('products_head_desc_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_desc_tag[$languages[$i]['id']])));
       echo tep_draw_hidden_field('products_head_keywords_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_keywords_tag[$languages[$i]['id']])));
     /*** End Header Tags SEO ***/
       echo tep_draw_hidden_field('products_url[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_url[$languages[$i]['id']])));
     }
     echo tep_draw_hidden_field('products_image', stripslashes($products_image_name));

     echo tep_image_submit('button_back.gif', IMAGE_BACK, 'name="edit"') . '  ';

     if (isset($HTTP_GET_VARS['pID'])) {
       echo tep_image_submit('button_update.gif', IMAGE_UPDATE);
     } else {
       echo tep_image_submit('button_insert.gif', IMAGE_INSERT);
     }
     echo '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '')) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>';
?></td>
     </tr>
   </table></form>
<?php


?>
   <table border="0" width="100%" cellspacing="0" cellpadding="2">
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
           <td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr>
               <td class="smallText" align="right">
<?php
   echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get');
   echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
   echo tep_hide_session_id() . '</form>';
?>
               </td>
             </tr>
             <tr>
               <td class="smallText" align="right">
<?php
   echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
   echo HEADING_TITLE_GOTO . ' ' . tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
   echo tep_hide_session_id() . '</form>';
?>
               </td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr class="dataTableHeadingRow">
               <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CATEGORIES_PRODUCTS; ?></td>
               <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_STATUS; ?></td>
               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>
             </tr>
<?php
   $categories_count = 0;
   $rows = 0;
   if (isset($HTTP_GET_VARS['search'])) {
     $search = tep_db_prepare_input($HTTP_GET_VARS['search']);

     /*** Begin Header Tags SEO ***/
     $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified, cd.categories_htc_title_tag, cd.categories_htc_desc_tag, cd.categories_htc_keywords_tag, cd.categories_htc_description from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and cd.categories_name like '%" . tep_db_input($search) . "%' order by c.sort_order, cd.categories_name");
   } else {
     $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified, cd.categories_htc_title_tag, cd.categories_htc_desc_tag, cd.categories_htc_keywords_tag, cd.categories_htc_description from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by c.sort_order, cd.categories_name");
   /*** End Header Tags SEO ***/
   }
   while ($categories = tep_db_fetch_array($categories_query)) {
     $categories_count++;
     $rows++;

// Get parent_id for subcategories if search
     if (isset($HTTP_GET_VARS['search'])) $cPath= $categories['parent_id'];

     if ((!isset($HTTP_GET_VARS['cID']) && !isset($HTTP_GET_VARS['pID']) || (isset($HTTP_GET_VARS['cID']) && ($HTTP_GET_VARS['cID'] == $categories['categories_id']))) && !isset($cInfo) && (substr($action, 0, 3) != 'new')) {
       $category_childs = array('childs_count' => tep_childs_in_category_count($categories['categories_id']));
       $category_products = array('products_count' => tep_products_in_category_count($categories['categories_id']));

       $cInfo_array = array_merge($categories, $category_childs, $category_products);
       $cInfo = new objectInfo($cInfo_array);
     }

     if (isset($cInfo) && is_object($cInfo) && ($categories['categories_id'] == $cInfo->categories_id) ) {
       echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_CATEGORIES, tep_get_path($categories['categories_id'])) . '\'">' . "\n";
     } else {
       echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '\'">' . "\n";
     }
?>
               <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, tep_get_path($categories['categories_id'])) . '">' . tep_image(DIR_WS_ICONS . 'folder.gif', ICON_FOLDER) . '</a> <b>' . $categories['categories_name'] . '</b>'; ?></td>
               <td class="dataTableContent" align="center"> </td>
               <td class="dataTableContent" align="right"><?php if (isset($cInfo) && is_object($cInfo) && ($categories['categories_id'] == $cInfo->categories_id) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }

   $products_count = 0;
   if (isset($HTTP_GET_VARS['search'])) {
     $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . tep_db_input($search) . "%' order by pd.products_name");
   } else {
     $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by pd.products_name");
   }
   while ($products = tep_db_fetch_array($products_query)) {
     $products_count++;
     $rows++;

// Get categories_id for product if search
     if (isset($HTTP_GET_VARS['search'])) $cPath = $products['categories_id'];

     if ( (!isset($HTTP_GET_VARS['pID']) && !isset($HTTP_GET_VARS['cID']) || (isset($HTTP_GET_VARS['pID']) && ($HTTP_GET_VARS['pID'] == $products['products_id']))) && !isset($pInfo) && !isset($cInfo) && (substr($action, 0, 3) != 'new')) {
// find out the rating average from customer reviews
       $reviews_query = tep_db_query("select (avg(reviews_rating) / 5 * 100) as average_rating from " . TABLE_REVIEWS . " where products_id = '" . (int)$products['products_id'] . "'");
       $reviews = tep_db_fetch_array($reviews_query);
       $pInfo_array = array_merge($products, $reviews);
       $pInfo = new objectInfo($pInfo_array);
     }

     if (isset($pInfo) && is_object($pInfo) && ($products['products_id'] == $pInfo->products_id) ) {
       echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '\'">' . "\n";
     } else {
       echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '\'">' . "\n";
     }
?>
               <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a> ' . $products['products_name']; ?></td>
               <td class="dataTableContent" align="center">
<?php
     if ($products['products_status'] == '1') {
       echo tep_image(DIR_WS_IMAGES . 'icon_status_green.gif', IMAGE_ICON_STATUS_GREEN, 10, 10) . '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'action=setflag&flag=0&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image(DIR_WS_IMAGES . 'icon_status_red_light.gif', IMAGE_ICON_STATUS_RED_LIGHT, 10, 10) . '</a>';
     } else {
       echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'action=setflag&flag=1&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image(DIR_WS_IMAGES . 'icon_status_green_light.gif', IMAGE_ICON_STATUS_GREEN_LIGHT, 10, 10) . '</a>  ' . tep_image(DIR_WS_IMAGES . 'icon_status_red.gif', IMAGE_ICON_STATUS_RED, 10, 10);
     }
?></td>
               <td class="dataTableContent" align="right"><?php if (isset($pInfo) && is_object($pInfo) && ($products['products_id'] == $pInfo->products_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }

   $cPath_back = '';
   if (sizeof($cPath_array) > 0) {
     for ($i=0, $n=sizeof($cPath_array)-1; $i<$n; $i++) {
       if (empty($cPath_back)) {
         $cPath_back .= $cPath_array[$i];
       } else {
         $cPath_back .= '_' . $cPath_array[$i];
       }
     }
   }

   $cPath_back = (tep_not_null($cPath_back)) ? 'cPath=' . $cPath_back . '&' : '';
?>
             <tr>
               <td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td class="smallText"><?php echo TEXT_CATEGORIES . ' ' . $categories_count . '<br>' . TEXT_PRODUCTS . ' ' . $products_count; ?></td>
                   <td align="right" class="smallText"><?php if (sizeof($cPath_array) > 0) echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, $cPath_back . 'cID=' . $current_category_id) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a> '; if (!isset($HTTP_GET_VARS['search'])) echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&action=new_category') . '">' . tep_image_button('button_new_category.gif', IMAGE_NEW_CATEGORY) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&action=new_product') . '">' . tep_image_button('button_new_product.gif', IMAGE_NEW_PRODUCT) . '</a>'; ?> </td>
                 </tr>
               </table></td>
             </tr>
           </table></td>
<?php
   $heading = array();
   $contents = array();
   switch ($action) {
     case 'new_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('newcategory', FILENAME_CATEGORIES, 'action=insert_category&cPath=' . $cPath, 'post', 'enctype="multipart/form-data"'));
       $contents[] = array('text' => TEXT_NEW_CATEGORY_INTRO);

       $category_inputs_string = '';
       $languages = tep_get_languages();
       for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $category_inputs_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
/*** Begin Header Tags SEO ***/
         $category_htc_title_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_title_tag[' . $languages[$i]['id'] . ']');
         $category_htc_desc_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_desc_tag[' . $languages[$i]['id'] . ']');
         $category_htc_keywords_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_keywords_tag[' . $languages[$i]['id'] . ']');
         if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_META_DESC == 'false')
           $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '');
         else
         {
           if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') {
             $headertags_editor_str = tep_draw_fckeditor('categories_htc_description[' . $languages[$i]['id'] . ']', 600, 300, '');
           } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') {
             $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '', 'id = "categories_htc_description[' . $languages[$i]['id'] . ']" class="ckeditor"');
           } else {
             $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '');
           }
         }

         $category_htc_description_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . $headertags_editor_str;
         /*** End Header Tags SEO ***/
       }

       $contents[] = array('text' => '<br>' . TEXT_CATEGORIES_NAME . $category_inputs_string);
       $contents[] = array('text' => '<br>' . TEXT_CATEGORIES_IMAGE . '<br>' . tep_draw_file_field('categories_image'));
       $contents[] = array('text' => '<br>' . TEXT_SORT_ORDER . '<br>' . tep_draw_input_field('sort_order', '', 'size="2"'));
/*** Begin Header Tags SEO ***/
       $contents[] = array('text' => '<br>' . 'Header Tags Category Title' . $category_htc_title_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Category Description' . $category_htc_desc_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Category Keywords' . $category_htc_keywords_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Categories Description' . $category_htc_description_string);
       /*** End Header Tags SEO ***/

       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'edit_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_EDIT_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, 'action=update_category&cPath=' . $cPath, 'post', 'enctype="multipart/form-data"') . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
       $contents[] = array('text' => TEXT_EDIT_INTRO);

       $category_inputs_string = '';
       $languages = tep_get_languages();
       for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $category_inputs_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
/*** Begin Header Tags SEO ***/
         $category_htc_title_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_title_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_title($cInfo->categories_id, $languages[$i]['id']));
         $category_htc_desc_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_desc_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_desc($cInfo->categories_id, $languages[$i]['id']));
         $category_htc_keywords_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_htc_keywords_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_keywords($cInfo->categories_id, $languages[$i]['id']));
         if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_META_DESC == 'false')
           $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']));
         else
         {
           if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') {
             $headertags_editor_str = tep_draw_fckeditor('categories_htc_description[' . $languages[$i]['id'] . ']', 600, 300, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']));
           } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') {
             $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']), 'id = "categories_htc_description[' . $languages[$i]['id'] . ']" class="ckeditor"');
           } else {
             $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']));
           }
         }

         $category_htc_description_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . $headertags_editor_str;
         /*** End Header Tags SEO ***/
       }

       $contents[] = array('text' => '<br>' . TEXT_EDIT_CATEGORIES_NAME . $category_inputs_string);
       $contents[] = array('text' => '<br>' . tep_image(DIR_WS_CATALOG_IMAGES . $cInfo->categories_image, $cInfo->categories_name) . '<br>' . DIR_WS_CATALOG_IMAGES . '<br><b>' . $cInfo->categories_image . '</b>');
       $contents[] = array('text' => '<br>' . TEXT_EDIT_CATEGORIES_IMAGE . '<br>' . tep_draw_file_field('categories_image'));
       $contents[] = array('text' => '<br>' . TEXT_EDIT_SORT_ORDER . '<br>' . tep_draw_input_field('sort_order', $cInfo->sort_order, 'size="2"'));
/*** Begin Header Tags SEO ***/
       $contents[] = array('text' => '<br>' . 'Header Tags Category Title' . $category_htc_title_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Category Description' . $category_htc_desc_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Category Keywords' . $category_htc_keywords_string);
       $contents[] = array('text' => '<br>' . 'Header Tags Categories Description' . $category_htc_description_string);
       /*** End Header Tags SEO ***/

       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'delete_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, 'action=delete_category_confirm&cPath=' . $cPath) . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
       $contents[] = array('text' => TEXT_DELETE_CATEGORY_INTRO);
       $contents[] = array('text' => '<br><b>' . $cInfo->categories_name . '</b>');
       if ($cInfo->childs_count > 0) $contents[] = array('text' => '<br>' . sprintf(TEXT_DELETE_WARNING_CHILDS, $cInfo->childs_count));
       if ($cInfo->products_count > 0) $contents[] = array('text' => '<br>' . sprintf(TEXT_DELETE_WARNING_PRODUCTS, $cInfo->products_count));
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'move_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_MOVE_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, 'action=move_category_confirm&cPath=' . $cPath) . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
       $contents[] = array('text' => sprintf(TEXT_MOVE_CATEGORIES_INTRO, $cInfo->categories_name));
       $contents[] = array('text' => '<br>' . sprintf(TEXT_MOVE, $cInfo->categories_name) . '<br>' . tep_draw_pull_down_menu('move_to_category_id', tep_get_category_tree(), $current_category_id));
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'delete_product':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_PRODUCT . '</b>');

       $contents = array('form' => tep_draw_form('products', FILENAME_CATEGORIES, 'action=delete_product_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
       $contents[] = array('text' => TEXT_DELETE_PRODUCT_INTRO);
       $contents[] = array('text' => '<br><b>' . $pInfo->products_name . '</b>');

       $product_categories_string = '';
       $product_categories = tep_generate_category_path($pInfo->products_id, 'product');
       for ($i = 0, $n = sizeof($product_categories); $i < $n; $i++) {
         $category_path = '';
         for ($j = 0, $k = sizeof($product_categories[$i]); $j < $k; $j++) {
           $category_path .= $product_categories[$i][$j]['text'] . ' > ';
         }
         $category_path = substr($category_path, 0, -16);
         $product_categories_string .= tep_draw_checkbox_field('product_categories[]', $product_categories[$i][sizeof($product_categories[$i])-1]['id'], true) . ' ' . $category_path . '<br>';
       }
       $product_categories_string = substr($product_categories_string, 0, -4);

       $contents[] = array('text' => '<br>' . $product_categories_string);
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'move_product':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_MOVE_PRODUCT . '</b>');

       $contents = array('form' => tep_draw_form('products', FILENAME_CATEGORIES, 'action=move_product_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
       $contents[] = array('text' => sprintf(TEXT_MOVE_PRODUCTS_INTRO, $pInfo->products_name));
       $contents[] = array('text' => '<br>' . TEXT_INFO_CURRENT_CATEGORIES . '<br><b>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</b>');
       $contents[] = array('text' => '<br>' . sprintf(TEXT_MOVE, $pInfo->products_name) . '<br>' . tep_draw_pull_down_menu('move_to_category_id', tep_get_category_tree(), $current_category_id));
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'copy_to':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_COPY_TO . '</b>');

       $contents = array('form' => tep_draw_form('copy_to', FILENAME_CATEGORIES, 'action=copy_to_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
       $contents[] = array('text' => TEXT_INFO_COPY_TO_INTRO);
       $contents[] = array('text' => '<br>' . TEXT_INFO_CURRENT_CATEGORIES . '<br><b>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</b>');
       $contents[] = array('text' => '<br>' . TEXT_CATEGORIES . '<br>' . tep_draw_pull_down_menu('categories_id', tep_get_category_tree(), $current_category_id));
       $contents[] = array('text' => '<br>' . TEXT_HOW_TO_COPY . '<br>' . tep_draw_radio_field('copy_as', 'link', true) . ' ' . TEXT_COPY_AS_LINK . '<br>' . tep_draw_radio_field('copy_as', 'duplicate') . ' ' . TEXT_COPY_AS_DUPLICATE);
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_copy.gif', IMAGE_COPY) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     default:
       if ($rows > 0) {
         if (isset($cInfo) && is_object($cInfo)) { // category info box contents
           $category_path_string = '';
           $category_path = tep_generate_category_path($cInfo->categories_id);
           for ($i=(sizeof($category_path[0])-1); $i>0; $i--) {
             $category_path_string .= $category_path[0][$i]['id'] . '_';
           }
           $category_path_string = substr($category_path_string, 0, -1);

           $heading[] = array('text' => '<b>' . $cInfo->categories_name . '</b>');

           $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
           $contents[] = array('text' => '<br>' . TEXT_DATE_ADDED . ' ' . tep_date_short($cInfo->date_added));
           if (tep_not_null($cInfo->last_modified)) $contents[] = array('text' => TEXT_LAST_MODIFIED . ' ' . tep_date_short($cInfo->last_modified));
           $contents[] = array('text' => '<br>' . tep_info_image($cInfo->categories_image, $cInfo->categories_name, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT) . '<br>' . $cInfo->categories_image);
           $contents[] = array('text' => '<br>' . TEXT_SUBCATEGORIES . ' ' . $cInfo->childs_count . '<br>' . TEXT_PRODUCTS . ' ' . $cInfo->products_count);
         } elseif (isset($pInfo) && is_object($pInfo)) { // product info box contents
           $heading[] = array('text' => '<b>' . tep_get_products_name($pInfo->products_id, $languages_id) . '</b>');

           $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=new_product') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=delete_product') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=move_product') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=copy_to') . '">' . tep_image_button('button_copy_to.gif', IMAGE_COPY_TO) . '</a>');
           $contents[] = array('text' => '<br>' . TEXT_DATE_ADDED . ' ' . tep_date_short($pInfo->products_date_added));
           if (tep_not_null($pInfo->products_last_modified)) $contents[] = array('text' => TEXT_LAST_MODIFIED . ' ' . tep_date_short($pInfo->products_last_modified));
           if (date('Y-m-d') < $pInfo->products_date_available) $contents[] = array('text' => TEXT_DATE_AVAILABLE . ' ' . tep_date_short($pInfo->products_date_available));
           $contents[] = array('text' => '<br>' . tep_info_image($pInfo->products_image, $pInfo->products_name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '<br>' . $pInfo->products_image);
           $contents[] = array('text' => '<br>' . TEXT_PRODUCTS_PRICE_INFO . ' ' . $currencies->format($pInfo->products_price) . '<br>' . TEXT_PRODUCTS_QUANTITY_INFO . ' ' . $pInfo->products_quantity);
           $contents[] = array('text' => '<br>' . TEXT_PRODUCTS_AVERAGE_RATING . ' ' . number_format($pInfo->average_rating, 2) . '%');
         }
       } else { // create category/product info
         $heading[] = array('text' => '<b>' . EMPTY_CATEGORY . '</b>');

         $contents[] = array('text' => TEXT_NO_CHILD_CATEGORIES_OR_PRODUCTS);
       }
       break;
   }

   if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
     echo '            <td width="25%" valign="top">' . "\n";

     $box = new box;
     echo $box->infoBox($heading, $contents);

     echo '            </td>' . "\n";
   }
?>
         </tr>
       </table></td>
     </tr>
   </table>
<?php
 }
?>
   </td>
<!-- body_text_eof //-->
 </tr>
</table>
<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Share this post


Link to post
Share on other sites

Here is the rest of it-

I think there are two parts where there is a mistake in the code.

First the fields for the dimensional aspects of a products are missing in a query you changed for SEO header tags around line 466 (line number in your file):

 


   $pInfo = new objectInfo($parameters);

   if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {
   /*** Begin Header Tags SEO ***/
// missing in this query:
// p.products_length, p.products_width, p.products_height, p.products_ready_to_ship,
     $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_head_title_tag, pd.products_head_desc_tag, pd.products_head_keywords_tag, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_length, p.products_width, p.products_height, p.products_ready_to_ship, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_tax_class_id, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");
   /*** End Header Tags SEO ***/

 

Then a crucial piece of code with three short lines completely disappeared from your file around line 959:

 


   </table></form>
<?php
// BOF three crucial lines are missing here
   }
 } else {
// EOF three crucial lines are missing here
?>
   <table border="0" width="100%" cellspacing="0" cellpadding="2">
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

 

That's not all though. In general a number of brackets [ { } ] seems to be either misplaced or missing. Try using a good text editor and comparing it with an original admin/categories.php from the UPSXML contribution where it goes wrong.

Edited by Jan Zonjee

Share this post


Link to post
Share on other sites

Thanks Jan I appreciate the technical eyes. I uninstalled UPSXML and reloaded the original files and turned it back on and then it worked fine with all my original figures still there, it may have just been coming up as blank/invisible but I'm not sure, it also removed the ability to changed the tags per product so its definitely something either Header Tags had me do or that I mistakenly moved, I'm going to go back through header tags for the admin side again slowly and monitor what happens with the category area of admin to see if I can narrow it down to being me or the contribution. (fyi: everything with Header Tags works but the ability to alter tags per product)

 

Again I appreciate the help greatly!

Edited by NK595

Share this post


Link to post
Share on other sites

Actually Jan after going through it again slowly, all looked well till I realized the dimensions didnt come up again, I re-read your post and plugged -

// p.products_length, p.products_width, p.products_height, p.products_ready_to_ship,

 

In side the query and they appeared, I want to say thanks again, I'm going to test it out make sure the shipping is accurate and/or actually is doing anything with the dimensions but it should be fine.

Share this post


Link to post
Share on other sites

Hello,

 

I have added this module to my osc site and when I get to the checkout confirmation page, no matter what the payment is, when you click on the confirm order, it loops back to the delivery page. I have checked all the code for the dimensional support and split products and everything seems to be in place. Any help would be appreciated.

 

The test site is here: Test site

 

Yes it is based on the oscMax version, but all in all they are almost the same.

 

Thanks

RJ


Empire Metal Art

Share this post


Link to post
Share on other sites

I have added this module to my osc site and when I get to the checkout confirmation page, no matter what the payment is, when you click on the confirm order, it loops back to the delivery page.

The fact that you get to the payment page is proof that UPSXML did it's job. I can't imagine this being related to UPSXML. Have you tried any of the default shipment packages like table rate to see if you get the same problem?

 

Perhaps you should print out the session variables on the bottom of the page to see if the shipping method etc. is correctly added (it obviously is on checkout_payment.php).

Share this post


Link to post
Share on other sites

I'm going to go back through header tags for the admin side again slowly and monitor what happens with the category area of admin to see if I can narrow it down to being me or the contribution.

Looks like apart from the three lines with mostly brackets that were missing you left one in that hosed your admin/categories.php higher up:

 


       $pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);
     }
   /*** End Header Tags SEO ***/
//     }   this bracket should not have been here
?>

Share this post


Link to post
Share on other sites

The fact that you get to the payment page is proof that UPSXML did it's job. I can't imagine this being related to UPSXML. Have you tried any of the default shipment packages like table rate to see if you get the same problem?

 

Perhaps you should print out the session variables on the bottom of the page to see if the shipping method etc. is correctly added (it obviously is on checkout_payment.php).

 

Well I removed all of the shipping modules except free shipping, when I go to checkout again, it still brings me back to the delivery page.

 

Going to have to go back to see what I changed in the files....


Empire Metal Art

Share this post


Link to post
Share on other sites

Jan,

 

Yes you were right it was going through it all the way and there was nothing wrong with the install of the dimensional support and the split products... The problem lied in having free shipping enabled in the shipping modules as well. Disable that and I can now check out through the whole thing with no problems

 

Jeff


Empire Metal Art

Share this post


Link to post
Share on other sites

Hello, I'm getting a snag on Step #3 which reads:

 

--------

STEP 3 *** If you have already installed USPS Methods or UPS Choice, you can skip this step

--------

 

In catalog/admin/modules.php

 

*****************************************

Find This code somewhere around line 48:

*****************************************

 

if (tep_not_null($action)) {

switch ($action) {

case 'save':

while (list($key, $value) = each($HTTP_POST_VARS['configuration'])) {

 

***********************************************

INSERT THE FOLLOWING CODE AFTER THE ABOVE LINE:

***********************************************

 

if (is_array($value) ) {

$value = implode( ", ", $value);

$value = ereg_replace (", --none--", "", $value);

}

 

****************************

SO IT SHOULD LOOK LIKE THIS:

****************************

 

if (tep_not_null($action)) {

switch ($action) {

case 'save':

while (list($key, $value) = each($HTTP_POST_VARS['configuration'])) {

if (is_array($value) ) {

$value = implode( ", ", $value);

$value = ereg_replace (", --none--", "", $value);

}

tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $value . "' where configuration_key = '" . $key . "'");

}

tep_redirect(tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $HTTP_GET_VARS['module']));

break;

case 'install':

 

 

NOTE1: if you fail to do this step you will get the following error message when editing UPS XML in the admin:

 

Warning: constant() [function.constant]: Couldn't find constant UPSXML_Array in /path/to/your/shop_root/includes/modules/shipping/upsxml.php on line 1010

 

NOTE2: if your settings do not save change the line

 

while (list($key, $value) = each($HTTP_POST_VARS['configuration'])) {

 

to:

 

foreach($_POST['configuration'] as $key => $value) {

 

I found the general location of where Step 3 is referencing, but it is not quite the same. My code reads:

 

  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

 if (tep_not_null($action)) {
   switch ($action) {
// {{ buySAFE Module
     case 'buysafe_save':
       if ( ( $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_SEAL_AUTHENTICATION_DATA'] == '' ||
              $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_SEAL_AUTHENTICATION_DATA'] == '-- none --' )
              &&
            ( $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_STORE_AUTHENTICATION_DATA'] == '' ||
              $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_STORE_AUTHENTICATION_DATA'] == '-- none --' ) )
       {
         $seal_data = tep_db_fetch_array(tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_BUYSAFE_BUYSAFE_SEAL_AUTHENTICATION_DATA'"));
         $store_data = tep_db_fetch_array(tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_BUYSAFE_BUYSAFE_STORE_AUTHENTICATION_DATA'"));
         $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_SEAL_AUTHENTICATION_DATA'] = $seal_data['configuration_value'];
         $HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_STORE_AUTHENTICATION_DATA'] = $store_data['configuration_value'];
       }

       if (strlen($HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_SEAL_AUTHENTICATION_DATA']) != 88)
       {
         $messageStack->add('Data entry error: Invalid seal authentication data. Please fix the input data and try again.', 'error');
         $action = 'buysafe_edit';
       }
       if (strlen($HTTP_POST_VARS['configuration']['MODULE_BUYSAFE_BUYSAFE_STORE_AUTHENTICATION_DATA']) != 36)
       {
         $messageStack->add('Data entry error: Invalid store authentication data. Please fix the input data and try again.', 'error');
         $action = 'buysafe_edit';
       }
       if ($HTTP_POST_VARS['test_authentication'] == '1')
       {
         $action = 'buysafe_edit';
       }
       if ($action == 'buysafe_edit') break;
// }}  

 

Any help would be appreciated.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×