chrometweaks.org

How do you use an HTML code on iPage?

Click Here To View All Answers...


Got a question... How do you use an HTML code on iPage? Hoping for any answer. Another quick question... Hi all.

I'm doing some customisation work on an installation of oscommerce, where I need to add an extra field to each product; a short description (as well as the existing (long) description)..

I've edited the database to include an extra column in the products_description table, and edited the public area so that data from that column is displayed..

However, i'm having great trouble changing the admin area so that the new field can have data put into it, and edited later. I need to edit categories.php, in the very least. but I can't even figure out how to insert an extra <input type="text" in there, and even the code which updates the database seems pretty full-on.

Can someone give me an outline of the logical structure of the page, and what dependencies I need to be aware of?.

Thanks.

R..

Comments (46)

Good question... I dunno what is the answer. I'll do some Googling and get back to you if I got an anything. You should email the people at iPage as they probably could help you..

Comment #1

Ah. I have to congratulate you on the length you went to with that reply....

However,.

No.

I'm not using the latest version of oscommerce, the top line of categories.php says the following.

$Id: categories.php,v 1.138 2002/11/18 21:38:22 dgw_ Exp $.

And although there are some similarities between what you have posted below and what i'm seeing in the file, there are some drastic differences, too.....

For example, line 515 (close to 530) looks like this.

For ($i = 0, $n = sizeof($languages); $i < $n; $i++) {.

If ($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_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_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);.

}.

Sooo I suspect i'm going to have to start again, using either different shopping cart software, or a newer version of oscommerce... OR try battle through the rats nest that is categories.php. damn..

Comment #2

I FELT LIKE DOING A GOOD DEED TONIGHT. AND CHANGING THE FILE MYSELF IS MUCH FASTER THAN WRITING A MANUAL:.

<?php.

/*.

$Id: categories.php,v 1.138 2002/11/18 21:38:22 dgw_ Exp $.

OsCommerce, Open Source E-Commerce Solutions.

Http://www.oscommerce.com.

Copyright © 2002 osCommerce.

Released under the GNU General Public License.

*/.

Require('includes/application_top.php');.

Require(DIR_WS_CLASSES'currencies.php');.

$currencies = new currencies();.

If ($HTTP_GET_VARS['action']) {.

Switch ($HTTP_GET_VARS['action']) {.

Case 'setflag':.

If ( ($HTTP_GET_VARS['flag'] == '0') || ($HTTP_GET_VARS['flag'] == '1') ) {.

If ($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']));.

Break;.

Case 'insert_category':.

Case 'update_category':.

$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' => $sort_order);.

If ($HTTP_GET_VARS['action'] == 'insert_category') {.

$insert_sql_data = array('parent_id' => $current_category_id,.

'date_added' => 'now()');.

$sql_data_array = tep_array_merge($sql_data_array, $insert_sql_data);.

Tep_db_perform(TABLE_CATEGORIES, $sql_data_array);.

$categories_id = tep_db_insert_id();.

} elseif ($HTTP_GET_VARS['action'] == 'update_category') {.

$update_sql_data = array('last_modified' => 'now()');.

$sql_data_array = tep_array_merge($sql_data_array, $update_sql_data);.

Tep_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', 'categories_id = \''$categories_id'\'');.

}.

$languages = tep_get_languages();.

For ($i = 0, $n = sizeof($languages); $i < $n; $i++) {.

$categories_name_array = $HTTP_POST_VARS['categories_name'];.

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

$sql_data_array = array('categories_name' => tep_db_prepare_input($categories_name_array[$language_id]));.

If ($HTTP_GET_VARS['action'] == 'insert_category') {.

$insert_sql_data = array('categories_id' => $categories_id,.

'language_id' => $languages[$i]['id']);.

$sql_data_array = tep_array_merge($sql_data_array, $insert_sql_data);.

Tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array);.

} elseif ($HTTP_GET_VARS['action'] == 'update_category') {.

Tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array, 'update', 'categories_id = \''$categories_id'\' and language_id = \''$languages[$i]['id']'\'');.

}.

}.

$categories_image = tep_get_uploaded_file('categories_image');.

$image_directory = tep_get_local_path(DIR_FS_CATALOG_IMAGES);.

If (is_uploaded_file($categories_image['tmp_name'])) {.

Tep_db_query("update "TABLE_CATEGORIES" set categories_image = '"$categories_image['name']"' where categories_id = '"tep_db_input($categories_id)"'");.

Tep_copy_uploaded_file($categories_image, $image_directory);.

}.

If (USE_CACHE == 'true') {.

Tep_reset_cache_block('categories');.

Tep_reset_cache_block('also_purchased');.

}.

Tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath'&cID='$categories_id));.

Break;.

Case 'delete_category_confirm':.

If ($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 = '"$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 .= '\''$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 = '"$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');.

}.

Tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath));.

Break;.

Case 'delete_product_confirm':.

If ( ($HTTP_POST_VARS['products_id']) && (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 = '"tep_db_input($product_id)"' and categories_id = '"tep_db_input($product_categories[$i])"'");.

}.

$product_categories_query = tep_db_query("select count(*) as total from "TABLE_PRODUCTS_TO_CATEGORIES" where products_id = '"tep_db_input($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');.

}.

Tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath));.

Break;.

Case 'move_category_confirm':.

If ( ($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']);.

Tep_db_query("update "TABLE_CATEGORIES" set parent_id = '"tep_db_input($new_parent_id)"', last_modified = now() where categories_id = '"tep_db_input($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 = '"tep_db_input($products_id)"' and categories_id = '"tep_db_input($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 = '"tep_db_input($new_parent_id)"' where products_id = '"tep_db_input($products_id)"' and categories_id = '"$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 ( ($HTTP_POST_VARS['edit_x']) || ($HTTP_POST_VARS['edit_y']) ) {.

$HTTP_GET_VARS['action'] = 'new_product';.

} else {.

$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' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),.

'products_model' => tep_db_prepare_input($HTTP_POST_VARS['products_model']),.

'products_image' => (($HTTP_POST_VARS['products_image'] == 'none') ? '' : tep_db_prepare_input($HTTP_POST_VARS['products_image'])),.

'products_price' => tep_db_prepare_input($HTTP_POST_VARS['products_price']),.

'products_date_available' => $products_date_available,.

'products_weight' => tep_db_prepare_input($HTTP_POST_VARS['products_weight']),.

'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' => tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));.

If ($HTTP_GET_VARS['action'] == 'insert_product') {.

$insert_sql_data = array('products_date_added' => 'now()');.

$sql_data_array = tep_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 ('"$products_id"', '"$current_category_id"')");.

} elseif ($HTTP_GET_VARS['action'] == 'update_product') {.

$update_sql_data = array('products_last_modified' => 'now()');.

$sql_data_array = tep_array_merge($sql_data_array, $update_sql_data);.

Tep_db_perform(TABLE_PRODUCTS, $sql_data_array, 'update', 'products_id = \''tep_db_input($products_id)'\'');.

}.

$languages = tep_get_languages();.

For ($i = 0, $n = sizeof($languages); $i < $n; $i++) {.

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

$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_short_description' => tep_db_prepare_input($HTTP_POST_VARS['products_short_description'][$language_id]),.

'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]));.

If ($HTTP_GET_VARS['action'] == 'insert_product') {.

$insert_sql_data = array('products_id' => $products_id,.

'language_id' => $language_id);.

$sql_data_array = tep_array_merge($sql_data_array, $insert_sql_data);.

Tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array);.

} elseif ($HTTP_GET_VARS['action'] == 'update_product') {.

Tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array, 'update', 'products_id = \''tep_db_input($products_id)'\' and language_id = \''$language_id'\'');.

}.

}.

If (USE_CACHE == 'true') {.

Tep_reset_cache_block('categories');.

Tep_reset_cache_block('also_purchased');.

}.

Tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath'&pID='$products_id));.

}.

Break;.

Case 'copy_to_confirm':.

If ( (tep_not_null($HTTP_POST_VARS['products_id'])) && (tep_not_null($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 ($HTTP_POST_VARS['categories_id'] != $current_category_id) {.

$check_query = tep_db_query("select count(*) as total from "TABLE_PRODUCTS_TO_CATEGORIES" where products_id = '"tep_db_input($products_id)"' and categories_id = '"tep_db_input($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 ('"tep_db_input($products_id)"', '"tep_db_input($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_tax_class_id, manufacturers_id from "TABLE_PRODUCTS" where products_id = '"tep_db_input($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_status, products_tax_class_id, manufacturers_id) values ('"$product['products_quantity']"', '"$product['products_model']"', '"$product['products_image']"', '"$product['products_price']"', now(), '"$product['products_date_available']"', '"$product['products_weight']"', '0', '"$product['products_tax_class_id']"', '"$product['manufacturers_id']"')");.

$dup_products_id = tep_db_insert_id();.

$description_query = tep_db_query("select language_id, products_name, products_description, products_url from "TABLE_PRODUCTS_DESCRIPTION" where products_id = '"tep_db_input($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_short_description, products_url, products_viewed) values ('"$dup_products_id"', '"$description['language_id']"', '"addslashes($description['products_name'])"', '"addslashes($description['products_description'])"', '"addslashes($description['products_short_description'])"', '"$description['products_url']"', '0')");.

}.

Tep_db_query("insert into "TABLE_PRODUCTS_TO_CATEGORIES" (products_id, categories_id) values ('"$dup_products_id"', '"tep_db_input($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;.

}.

}.

// 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>.

</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"><table border="0" width="100%" cellspacing="0" cellpadding="2">.

<?php.

If ($HTTP_GET_VARS['action'] == 'new_product') {.

If ( ($HTTP_GET_VARS['pID']) && (!$HTTP_POST_VARS) ) {.

$product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_short_description, 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 = '"$HTTP_GET_VARS['pID']"' and p.products_id = pd.products_id and pd.language_id = '"$languages_id"'");.

$product = tep_db_fetch_array($product_query);.

$pInfo = new objectInfo($product);.

} elseif ($HTTP_POST_VARS) {.

$pInfo = new 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'];.

} else {.

$pInfo = new objectInfo(array());.

}.

$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();.

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>.

<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><?php echo tep_draw_form('new_product', FILENAME_CATEGORIES, 'cPath='$cPath'&pID='$HTTP_GET_VARS['pID']'&action=new_product_preview', 'post', 'enctype="multipart/form-data"'); ?>.

<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')'&nbsp;'tep_draw_radio_field('products_status', '1', $in_status)'&nbsp;'TEXT_PRODUCT_AVAILABLE'&nbsp;'tep_draw_radio_field('products_status', '0', $out_status)'&nbsp;'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')'&nbsp;'; ?><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')'&nbsp;'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'])'&nbsp;'tep_draw_input_field('products_name['$languages[$i]['id']']', (($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>.

<?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']); ?>&nbsp;</td>.

<td class="main"><?php echo tep_draw_textarea_field('products_description['$languages[$i]['id']']', 'soft', '70', '15', (($products_description[$languages[$i]['id']]) ? stripslashes($products_description[$languages[$i]['id']]) : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></td>.

</tr>.

</table></td>.

</tr>.

<?php.

}.

?>.

<?php.

For ($i = 0, $n = sizeof($languages); $i < $n; $i++) {.

?>.

<tr>.

<td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_SHORT_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']); ?>&nbsp;</td>.

<td class="main"><?php echo tep_draw_textarea_field('products_short_description['$languages[$i]['id']']', 'soft', '70', '15', (($products_short_description[$languages[$i]['id']]) ? stripslashes($products_short_description[$languages[$i]['id']]) : tep_get_products_short_description($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 class="main"><?php echo TEXT_PRODUCTS_QUANTITY; ?></td>.

<td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15')'&nbsp;'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')'&nbsp;'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')'&nbsp;'tep_draw_file_field('products_image')'<br>'tep_draw_separator('pixel_trans.gif', '24', '15')'&nbsp;'$pInfo->products_imagetep_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'])'&nbsp;'tep_draw_input_field('products_url['$languages[$i]['id']']', (($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_PRICE; ?></td>.

<td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15')'&nbsp;'tep_draw_input_field('products_price', $pInfo->products_price); ?></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_TAX_CLASS; ?></td>.

<td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15')'&nbsp;'tep_draw_pull_down_menu('products_tax_class_id', $tax_class_array, $pInfo->products_tax_class_id); ?></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_WEIGHT; ?></td>.

<td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15')'&nbsp;'tep_draw_input_field('products_weight', $pInfo->products_weight); ?></td>.

</tr>.

</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', (($pInfo->products_date_added) ? $pInfo->products_date_added : date('Y-m-d')))tep_image_submit('button_preview.gif', IMAGE_PREVIEW)'&nbsp;&nbsp;<a href="'tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath'&pID='$HTTP_GET_VARS['pID'])'">'tep_image_button('button_cancel.gif', IMAGE_CANCEL)'</a>'; ?></td>.

</form></tr>.

<?php.

} elseif ($HTTP_GET_VARS['action'] == 'new_product_preview') {.

If ($HTTP_POST_VARS) {.

$pInfo = new objectInfo($HTTP_POST_VARS);.

$products_name = $HTTP_POST_VARS['products_name'];.

$products_description = $HTTP_POST_VARS['products_description'];.

$products_short_description = $HTTP_POST_VARS['products_short_description'];.

$products_url = $HTTP_POST_VARS['products_url'];.

// copy image only if modified.

$products_image = tep_get_uploaded_file('products_image');.

$image_directory = tep_get_local_path(DIR_FS_CATALOG_IMAGES);.

If (is_uploaded_file($products_image['tmp_name'])) {.

Tep_copy_uploaded_file($products_image, $image_directory);.

$products_image_name = $products_image['name'];.

} else {.

$products_image_name = $HTTP_POST_VARS['products_previous_image'];.

}.

} else {.

$product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_short_description, 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 = '"$HTTP_GET_VARS['pID']"'");.

$product = tep_db_fetch_array($product_query);.

$pInfo = new objectInfo($product);.

$products_image_name = $pInfo->products_image;.

}.

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

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

$languages = tep_get_languages();.

For ($i = 0, $n = sizeof($languages); $i < $n; $i++) {.

If ($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_short_description = tep_get_products_short_description($pInfo->products_id, $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_short_description = tep_db_prepare_input($products_short_description[$languages[$i]['id']]);.

$pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);.

}.

?>.

<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'])'&nbsp;'$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 ($HTTP_GET_VARS['read'] == 'only') {.

If ($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']])));.

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"')'&nbsp;&nbsp;';.

If ($HTTP_GET_VARS['pID']) {.

Echo tep_image_submit('button_update.gif', IMAGE_UPDATE);.

} else {.

Echo tep_image_submit('button_insert.gif', IMAGE_INSERT);.

}.

Echo '&nbsp;&nbsp;<a href="'tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath'&pID='$HTTP_GET_VARS['pID'])'">'tep_image_button('button_cancel.gif', IMAGE_CANCEL)'</a>';.

?></td>.

</form></tr>.

<?php.

}.

} else {.

?>.

<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><?php echo tep_draw_form('search', FILENAME_CATEGORIES, '', 'get'); ?>.

<td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH' 'tep_draw_input_field('search', $HTTP_GET_VARS['search']); ?></td>.

</form></tr>.

<tr><?php echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get'); ?>.

<td class="smallText" align="right"><?php echo HEADING_TITLE_GOTO' 'tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"'); ?></td>.

</form></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; ?>&nbsp;</td>.

</tr>.

<?php.

$categories_count = 0;.

$rows = 0;.

If ($HTTP_GET_VARS['search']) {.

$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 from "TABLE_CATEGORIES" c, "TABLE_CATEGORIES_DESCRIPTION" cd where c.categories_id = cd.categories_id and cd.language_id = '"$languages_id"' and cd.categories_name like '%"$HTTP_GET_VARS['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 from "TABLE_CATEGORIES" c, "TABLE_CATEGORIES_DESCRIPTION" cd where c.parent_id = '"$current_category_id"' and c.categories_id = cd.categories_id and cd.language_id = '"$languages_id"' order by c.sort_order, cd.categories_name");.

}.

While ($categories = tep_db_fetch_array($categories_query)) {.

$categories_count++;.

$rows++;.

// Get parent_id for subcategories if search.

If ($HTTP_GET_VARS['search']) $cPath= $categories['parent_id'];.

If ( ((!$HTTP_GET_VARS['cID']) && (!$HTTP_GET_VARS['pID']) || (@$HTTP_GET_VARS['cID'] == $categories['categories_id'])) && (!$cInfo) && (substr($HTTP_GET_VARS['action'], 0, 4) != '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 = tep_array_merge($categories, $category_childs, $category_products);.

$cInfo = new objectInfo($cInfo_array);.

}.

If ( (is_object($cInfo)) && ($categories['categories_id'] == $cInfo->categories_id) ) {.

Echo ' <tr class="dataTableRowSelected" onmouseover="this.style.cursor=\'hand\'" onclick="document.location.href=\''tep_href_link(FILENAME_CATEGORIES, tep_get_path($categories['categories_id']))'\'">'"\n";.

} else {.

Echo ' <tr class="dataTableRow" onmouseover="this.className=\'dataTableRowOver\';this.style.cursor=\'hand\'" onmouseout="this.className=\'dataTableRow\'" 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>&nbsp;<b>'$categories['categories_name']'</b>'; ?></td>.

<td class="dataTableContent" align="center">&nbsp;</td>.

<td class="dataTableContent" align="right"><?php if ( (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>'; } ?>&nbsp;</td>.

</tr>.

<?php.

}.

$products_count = 0;.

If ($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 = '"$languages_id"' and p.products_id = p2c.products_id and pd.products_name like '%"$HTTP_GET_VARS['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 = '"$languages_id"' and p.products_id = p2c.products_id and p2c.categories_id = '"$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 ($HTTP_GET_VARS['search']) $cPath=$products['categories_id'];.

If ( ((!$HTTP_GET_VARS['pID']) && (!$HTTP_GET_VARS['cID']) || (@$HTTP_GET_VARS['pID'] == $products['products_id'])) && (!$pInfo) && (!$cInfo) && (substr($HTTP_GET_VARS['action'], 0, 4) != '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 = '"$products['products_id']"'");.

$reviews = tep_db_fetch_array($reviews_query);.

$pInfo_array = tep_array_merge($products, $reviews);.

$pInfo = new objectInfo($pInfo_array);.

}.

If ( (is_object($pInfo)) && ($products['products_id'] == $pInfo->products_id) ) {.

Echo ' <tr class="dataTableRowSelected" onmouseover="this.style.cursor=\'hand\'" 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="this.className=\'dataTableRowOver\';this.style.cursor=\'hand\'" onmouseout="this.className=\'dataTableRow\'" 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>&nbsp;'$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)'&nbsp;&nbsp;<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>&nbsp;&nbsp;'tep_image(DIR_WS_IMAGES'icon_status_red.gif', IMAGE_ICON_STATUS_RED, 10, 10);.

}.

?></td>.

<td class="dataTableContent" align="right"><?php if ( (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>'; } ?>&nbsp;</td>.

</tr>.

<?php.

}.

If ($cPath_array) {.

$cPath_back = '';.

For($i = 0, $n = sizeof($cPath_array) - 1; $i < $n; $i++) {.

If ($cPath_back == '') {.

$cPath_back .= $cPath_array[$i];.

} else {.

$cPath_back .= '_'$cPath_array[$i];.

}.

}.

}.

$cPath_back = ($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'&nbsp;'$categories_count'<br>'TEXT_PRODUCTS'&nbsp;'$products_count; ?></td>.

<td align="right" class="smallText"><?php if ($cPath) echo '<a href="'tep_href_link(FILENAME_CATEGORIES, $cPath_back'&cID='$current_category_id)'">'tep_image_button('button_back.gif', IMAGE_BACK)'</a>&nbsp;'; if (!$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>&nbsp;<a href="'tep_href_link(FILENAME_CATEGORIES, 'cPath='$cPath'&action=new_product')'">'tep_image_button('button_new_product.gif', IMAGE_NEW_PRODUCT)'</a>'; ?>&nbsp;</td>..

Comment #3

That is insane. all we're trying to accomplish is to add, edit and delete records from a table or two..

After days trying to get it to work, I can safely say that some of the code in oscommerce is the most convoluted,.

UNCOMMENTED.

Piece of garbage I have ever seen in my entire career..

I have started my project again, having wasted hundreds of dollars worth of time on this, and will never be using oscommerce again. shouldn't open-source projects have comments in the code??!!..

Comment #4

LOL.

I guess you tried to hard guntersammet..

I saw the comments there it says....

//Print form.

//Fill array with post vars.

//Update database.

But I do think it would be nice if this was seperated into categories.php and products.php..

Dave.....

Comment #5

I DO appreciate gunter's efforts, I really do. my frustration was directed at the system in general...

Comment #6

You're free to express your opinion. There might be some lack of comments in the code but I think it's variable names are most of the time comment enough if you know PHP and HTML..

Good luck with finding a better commented open source shopping cart with the similar functionality and such a good community (and that's very important)..

G...

Comment #7

Hi all.

I'm doing some customisation work on an installation of oscommerce, where I need to add an extra field to each product; a short description (as well as the existing (long) description)..

I've edited the database to include an extra column in the products_description table, and edited the public area so that data from that column is displayed..

However, i'm having great trouble changing the admin area so that the new field can have data put into it, and edited later. I need to edit categories.php, in the very least. but I can't even figure out how to insert an extra <input type="text" in there, and even the code which updates the database seems pretty full-on.

Can someone give me an outline of the logical structure of the page, and what dependencies I need to be aware of?.

Thanks.

R..

Comment #8

Have a look at the text area field for products description. This tag is in a loop to display it for all installed languages..

I assume you are on ms2. In the following categories.php file:.

$Id: categories.php,v 1.146 2003/07/11 14:40:27 hpdl Exp $.

You have to look for the following code (around line 530):.

<?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']); ?>&nbsp;</td>.

<td class="main"><?php 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.

}.

?>.

JUST COPY IT UNDERNEATH.

<?php.

For ($i=0, $n=sizeof($languages); $i<$n; $i++) {.

?>.

<tr>.

<td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_SHORT_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']); ?>&nbsp;</td>.

<td class="main"><?php echo tep_draw_textarea_field('products_short_description['$languages[$i]['id']']', 'soft', '70', '15', (isset($products_short_description[$languages[$i]['id']]) ? $products_short_description[$languages[$i]['id']] : tep_get_products_short_description($pInfo->products_id, $languages[$i]['id']))); ?></td>.

</tr>.

</table></td>.

</tr>.

<?php.

}.

?>.

I changed the code and named it products_short_description.

Also it asked for a function to get the products description. You need to find it (most likely in includes/functions/global.php and copy it. Modify it to pull the short description instead..

Then go again to categories.php and look for (line 205):.

Case 'insert_product':.

Case 'update_product':.

....

A few lines down you have.

$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]));.

MODIFY TO.

$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_short_description' => tep_db_prepare_input($HTTP_POST_VARS['products_short_description'][$language_id]),.

'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]));.

A FEW LINES DOWN:.

Case 'copy_to_confirm':.

LOOK FOR:.

$description_query = tep_db_query("select language_id, products_name, products_description, 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_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_url'])"', '0')");.

}.

ADD the short description:.

$description_query = tep_db_query("select language_id, products_name, products_description, products_short_description, 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_short_description, 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_short_description'])"', '"tep_db_input($description['products_url'])"', '0')");.

}.

LINE 357.

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_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)) {.

$product_query = tep_db_query("select pd.products_name, pd.products_description, 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"'");.

$product = tep_db_fetch_array($product_query);.

CHANGE TO:.

If ($action == 'new_product') {.

$parameters = array('products_name' => '',.

'products_description' => '',.

'products_short_description' => '',.

'products_url' => '',.

'products_id' => '',.

'products_quantity' => '',.

'products_model' => '',.

'products_image' => '',.

'products_price' => '',.

'products_weight' => '',.

'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)) {.

$product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_short_description, 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"'");.

$product = tep_db_fetch_array($product_query);.

LINE 596.

} 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_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_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);.

$pInfo = new objectInfo($product);.

$products_image_name = $pInfo->products_image;.

}.

CHANGE TO:.

} 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_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_short_description, 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);.

$pInfo = new objectInfo($product);.

$products_image_name = $pInfo->products_image;.

}.

LINE 711:.

Echo tep_draw_hidden_field('products_description['$languages[$i]['id']']', htmlspecialchars(stripslashes($products_description[$languages[$i]['id']])));.

CHANGE TO:.

Echo tep_draw_hidden_field('products_description['$languages[$i]['id']']', htmlspecialchars(stripslashes($products_description[$languages[$i]['id']])));.

Echo tep_draw_hidden_field('products_short_description['$languages[$i]['id']']', htmlspecialchars(stripslashes($products_short_description[$languages[$i]['id']])));.

That should be it..

HTH.

Gunter..

Comment #9


This question was taken from a support group/message board and re-posted here so others can learn from it.