[TEP-COMMIT] [CVS admin] update to the template structure implementation / standards updates

hpdl-OfajU3CKLf1/[email protected] 29 Aug 2004 22:19:10 -0000
Newsgroups gmane.comp.web.oscommerce.cvs
Message-ID <[email protected]>
<html>
<head>
<style><!--
  body {background-color:#ffffff;}
  .file {border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;}
  .pathname {font-family:monospace; float:right;}
  .fileheader {margin-bottom:.5em;}
  .diff {margin:0;}
  .tasklist {padding:4px;border:1px dashed #000000;margin-top:1em;}
  .tasklist ul {margin-top:0;margin-bottom:0;}
  tr.alt {background-color:#eeeeee}
  #added {background-color:#ddffdd;}
  #addedchars {background-color:#99ff99;font-weight:bolder;}
  tr.alt #added {background-color:#ccf7cc;}
  #removed {background-color:#ffdddd;}
  #removedchars {background-color:#ff9999;font-weight:bolder;}
  tr.alt #removed {background-color:#f7cccc;}
  #info {color:#888888;}
  #context {background-color:#eeeeee;}
  td {padding-left:.3em;padding-right:.3em;}
  tr.head {border-bottom-width:1px;border-bottom-style:solid;}
  tr.head td {padding:0;padding-top:.2em;}
  .task {background-color:#ffff00;}
  .comment {padding:4px;border:1px dashed #000000;background-color:#ffffdd}
  .error {color:red;}
  hr {border-width:0px;height:2px;background:black;}
--></style>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head"><td colspan="4">Commit in <b><tt>admin/admin</tt></b><span id="info"> on MAIN</span></td></tr>
<tr><td><tt><a href="#file1">products_attributes.php</a></tt></td><td align="right" id="added">+199</td><td align="right" id="removed">-806</td><td nowrap="nowrap" align="center"><a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php?rev=1.54&amp;content-type=text/vnd.viewcvs-markup">1.54</a> <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php.diff?r1=1.54&amp;r2=1.55">-&gt;</a> <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php?rev=1.55&amp;content-type=text/vnd.viewcvs-markup">1.55</a></td></tr>
<tr class="alt"><td><tt>templates/pages/<a href="#file2"><span id="added">products_attributes.php</span></a></tt></td><td align="right" id="added">+211</td><td></td><td nowrap="nowrap" align="right">added <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages/products_attributes.php?rev=1.1&amp;content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/<a href="#file3"><span id="added">products_attributes_listing.php</span></a></tt></td><td align="right" id="added">+165</td><td></td><td nowrap="nowrap" align="right">added <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages/products_attributes_listing.php?rev=1.1&amp;content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td></td><td align="right" id="added">+575</td><td align="right" id="removed">-806</td><td></td></tr>
</table>
<small id="info">2 added + 1 modified, total 3 files</small><br />
<pre class="comment">
update to the template structure implementation / standards updates
</pre>
<hr /><a name="file1" /><div class="file">
<span class="pathname"><a href="http://cvs.oscommerce.com/viewcvs.cgi/admin">admin</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin">admin</a><br /></span>
<div class="fileheader"><big><b>products_attributes.php</b></big> <small id="info"><a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php?rev=1.54&amp;content-type=text/vnd.viewcvs-markup">1.54</a> <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php.diff?r1=1.54&amp;r2=1.55">-&gt;</a> <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/products_attributes.php?rev=1.55&amp;content-type=text/vnd.viewcvs-markup">1.55</a></small></div>
<pre class="diff"><small id="info">diff -u -r1.54 -r1.55
--- products_attributes.php	2004/07/22 23:33:00	1.54
+++ products_attributes.php	2004/08/29 22:19:03	1.55
@@ -5,55 +5,12 @@
</small></pre><pre class="diff" id="context">   osCommerce, Open Source E-Commerce Solutions
   http://www.oscommerce.com
 
</pre><pre class="diff" id="removed">-  Copyright (c) 200<span id="removedchars">3</span> osCommerce
</pre><pre class="diff" id="added">+  Copyright (c) 200<span id="addedchars">4</span> osCommerce
</pre><pre class="diff" id="context"> 
   Released under the GNU General Public License
 */
 
</pre><pre class="diff" id="removed">-  require('includes/application_top.php');
-
-  $selected_box = 'catalog';
-
-  $languages = tep_get_languages();
-
-  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
-
-  if (tep_not_null($action)) {
-    $page_info = '';
-    if (isset($HTTP_GET_VARS['option_page'])) $page_info .= 'option_page=' . $HTTP_GET_VARS['option_page'] . '&amp;';
-    if (isset($HTTP_GET_VARS['value_page'])) $page_info .= 'value_page=' . $HTTP_GET_VARS['value_page'] . '&amp;';
-    if (isset($HTTP_GET_VARS['attribute_page'])) $page_info .= 'attribute_page=' . $HTTP_GET_VARS['attribute_page'] . '&amp;';
-    if (tep_not_null($page_info)) {
-      $page_info = substr($page_info, 0, -1);
-    }
-
-    switch ($action) {
-      case 'add_product_options':
-        $products_options_id = tep_db_prepare_input($HTTP_POST_VARS['products_options_id']);
-        $option_name_array = $HTTP_POST_VARS['option_name'];
-
-        for ($i=0, $n=sizeof($languages); $i&lt;$n; $i ++) {
-          $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]);
-
-          tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS . " (products_options_id, products_options_name, language_id) values ('" . (int)$products_options_id . "', '" . tep_db_input($option_name) . "', '" . (int)$languages[$i]['id'] . "')");
-        }
-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
-      case 'add_product_option_values':
-        $value_name_array = $HTTP_POST_VARS['value_name'];
-        $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']);
-        $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);
-
-        for ($i=0, $n=sizeof($languages); $i&lt;$n; $i ++) {
-          $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]);
-
-          tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name) values ('" . (int)$value_id . "', '" . (int)$languages[$i]['id'] . "', '" . tep_db_input($value_name) . "')");
-        }
-
-        tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_id, products_options_values_id) values ('" . (int)$option_id . "', '" . (int)$value_id . "')");
-
-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
</pre><pre class="diff" id="added">+/*
</pre><pre class="diff" id="context">       case 'add_product_attributes':
         $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
         $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']);
</pre><pre class="diff"><small id="info">@@ -77,811 +34,247 @@
</small></pre><pre class="diff" id="context"> 
         tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
         break;
</pre><pre class="diff" id="removed">-      case 'update_option_name':
-        $option_name_array = $HTTP_POST_VARS['option_name'];
-        $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);
</pre><pre class="diff" id="added">+*/
+  require('includes/application_top.php');
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        for ($i=0, $n=sizeof($languages); $i&lt;$n; $i ++) {
-          $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]);
</pre><pre class="diff" id="added">+  $selected_box = 'catalog';
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-          tep_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_name = '" . tep_db_input($option_name) . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
-        }
</pre><pre class="diff" id="added">+  $languages = tep_get_languages();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
-      case 'update_value':
-        $value_name_array = $HTTP_POST_VARS['value_name'];
-        $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']);
-        $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']);
</pre><pre class="diff" id="added">+  $action = (isset($_GET['action']) ? $_GET['action'] : '');
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        for ($i=0, $n=sizeof($languages); $i&lt;$n; $i ++) {
-          $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]);
</pre><pre class="diff" id="added">+  if (!isset($_GET['page']) || (isset($_GET['page']) &amp;&amp; !is_numeric($_GET['page']))) {
+    $_GET['page'] = 1;
+  }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-          tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES . " set products_options_values_name = '" . tep_db_input($value_name) . "' where products_options_values_id = '" . tep_db_input($value_id) . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
-        }
</pre><pre class="diff" id="added">+  $entriesAction = (isset($_GET['entriesAction']) ? $_GET['entriesAction'] : '');
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " set products_options_id = '" . (int)$option_id . "'  where products_options_values_id = '" . (int)$value_id . "'");
</pre><pre class="diff" id="added">+  if (!isset($_GET['entriesPage']) || (isset($_GET['entriesPage']) &amp;&amp; !is_numeric($_GET['entriesPage']))) {
+    $_GET['entriesPage'] = 1;
+  }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
-      case 'update_product_attribute':
-        $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);
-        $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']);
-        $values_id = tep_db_prepare_input($HTTP_POST_VARS['values_id']);
-        $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']);
-        $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']);
-        $attribute_id = tep_db_prepare_input($HTTP_POST_VARS['attribute_id']);
</pre><pre class="diff" id="added">+  if (!empty($action)) {
+    switch ($action) {
+      case 'saveGroup':
+        $languages = tep_get_languages();
+        $error = false;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set products_id = '" . (int)$products_id . "', options_id = '" . (int)$options_id . "', options_values_id = '" . (int)$values_id . "', options_values_price = '" . tep_db_input($value_price) . "', price_prefix = '" . tep_db_input($price_prefix) . "' where products_attributes_id = '" . (int)$attribute_id . "'");
</pre><pre class="diff" id="added">+        if (isset($_GET['paID']) &amp;&amp; is_numeric($_GET['paID'])) {
+          $group_id = $_GET['paID'];
+        } else {
+          $Qcheck = $osC_Database-&gt;query('select max(products_options_id) as products_options_id from :table_products_options');
+          $Qcheck-&gt;bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
+          $Qcheck-&gt;execute();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        if (DOWNLOAD_ENABLED == 'true') {
-          $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']);
-          $products_attributes_maxdays = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxdays']);
-          $products_attributes_maxcount = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxcount']);
</pre><pre class="diff" id="added">+          $group_id = $Qcheck-&gt;valueInt('products_options_id') + 1;
+        }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-          if (tep_not_null($products_attributes_filename)) {
-            tep_db_query("replace into " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " set products_attributes_id = '" . (int)$attribute_id . "', products_attributes_filename = '" . tep_db_input($products_attributes_filename) . "', products_attributes_maxdays = '" . tep_db_input($products_attributes_maxdays) . "', products_attributes_maxcount = '" . tep_db_input($products_attributes_maxcount) . "'");
</pre><pre class="diff" id="added">+        $osC_Database-&gt;startTransaction();
+
+        foreach ($languages as $l_entry) {
+          if (isset($_GET['paID']) &amp;&amp; is_numeric($_GET['paID'])) {
+            $Qgroup = $osC_Database-&gt;query('update :table_products_options set products_options_name = :products_options_name where products_options_id = :products_options_id and language_id = :language_id');
+          } else {
+            $Qgroup = $osC_Database-&gt;query('insert into :table_products_options (products_options_id, language_id, products_options_name) values (:products_options_id, :language_id, :products_options_name)');
+          }
+          $Qgroup-&gt;bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
+          $Qgroup-&gt;bindInt(':products_options_id', $group_id);
+          $Qgroup-&gt;bindValue(':products_options_name', $_POST['group_name'][$l_entry['id']]);
+          $Qgroup-&gt;bindInt(':language_id', $l_entry['id']);
+          $Qgroup-&gt;execute();
+
+          if ($osC_Database-&gt;isError()) {
+            $error = true;
+            break;
</pre><pre class="diff" id="context">           }
         }
 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
-      case 'delete_option':
-        $option_id = tep_db_prepare_input($HTTP_GET_VARS['option_id']);
</pre><pre class="diff" id="added">+        if ($error === false) {
+          $osC_Database-&gt;commitTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$option_id . "'");
</pre><pre class="diff" id="added">+          $messageStack-&gt;add_session(SUCCESS_DB_ROWS_UPDATED, 'success');
+        } else {
+          $osC_Database-&gt;rollbackTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
</pre><pre class="diff" id="added">+          $messageStack-&gt;add_session(ERROR_DB_ROWS_NOT_UPDATED, 'error');
+        }
+
+        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $group_id));
</pre><pre class="diff" id="context">         break;
</pre><pre class="diff" id="removed">-      case 'delete_value':
-        $value_id = tep_db_prepare_input($HTTP_GET_VARS['value_id']);
</pre><pre class="diff" id="added">+      case 'deleteConfirm':
+        if (isset($_GET['paID']) &amp;&amp; is_numeric($_GET['paID'])) {
+          $error = false;
+
+          $osC_Database-&gt;startTransaction();
+
+          $Qentries = $osC_Database-&gt;query('select products_options_values_id from :table_products_options_values_to_products_options where products_options_id = :products_options_id');
+          $Qentries-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+          $Qentries-&gt;bindInt(':products_options_id', $_GET['paID']);
+          $Qentries-&gt;execute();
+
+          while ($Qentries-&gt;next()) {
+            $Qdelete = $osC_Database-&gt;query('delete from :table_products_options_values where products_options_values_id = :products_options_values_id');
+            $Qdelete-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+            $Qdelete-&gt;bindInt(':products_options_values_id', $Qentries-&gt;valueInt('products_options_values_id'));
+            $Qdelete-&gt;execute();
+
+            if ($osC_Database-&gt;isError()) {
+              $error = true;
+              break;
+            }
+          }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$value_id . "'");
-        tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_values_id = '" . (int)$value_id . "'");
</pre><pre class="diff" id="added">+          if ($error === false) {
+            $Qdelete = $osC_Database-&gt;query('delete from :table_products_options_values_to_products_options where products_options_id = :products_options_id');
+            $Qdelete-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+            $Qdelete-&gt;bindInt(':products_options_id', $_GET['paID']);
+            $Qdelete-&gt;execute();
+
+            if ($osC_Database-&gt;isError()) {
+              $error = true;
+              break;
+            }
+          }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
-        break;
-      case 'delete_attribute':
-        $attribute_id = tep_db_prepare_input($HTTP_GET_VARS['attribute_id']);
</pre><pre class="diff" id="added">+          if ($error === false) {
+            $Qdelete = $osC_Database-&gt;query('delete from :table_products_options where products_options_id = :products_options_id');
+            $Qdelete-&gt;bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
+            $Qdelete-&gt;bindInt(':products_options_id', $_GET['paID']);
+            $Qdelete-&gt;execute();
+
+            if ($osC_Database-&gt;isError()) {
+              $error = true;
+              break;
+            }
+          }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_attributes_id = '" . (int)$attribute_id . "'");
</pre><pre class="diff" id="added">+          if ($error === false) {
+            $osC_Database-&gt;commitTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-// added for DOWNLOAD_ENABLED. Always try to remove attributes, even if downloads are no longer enabled
-        tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " where products_attributes_id = '" . (int)$attribute_id . "'");
</pre><pre class="diff" id="added">+            $messageStack-&gt;add_session(SUCCESS_DB_ROWS_UPDATED, 'success');
+          } else {
+            $osC_Database-&gt;rollbackTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info));
</pre><pre class="diff" id="added">+            $messageStack-&gt;add_session(ERROR_DB_ROWS_NOT_UPDATED, 'error');
+          }
+        }
+
+        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page']));
</pre><pre class="diff" id="context">         break;
     }
   }
</pre><pre class="diff" id="removed">-?&gt;
-&lt;!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
-&lt;html &lt;?php echo HTML_PARAMS; ?&gt;&gt;
-&lt;head&gt;
-&lt;meta http-equiv="Content-Type" content="text/html; charset=&lt;?php echo CHARSET; ?&gt;"&gt;
-&lt;title&gt;&lt;?php echo TITLE; ?&gt;&lt;/title&gt;
-&lt;link rel="stylesheet" type="text/css" href="includes/stylesheet.css"&gt;
-&lt;script language="javascript"&gt;&lt;!--
-function go_option() {
-  if (document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value != "none") {
-    location = "&lt;?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . ($HTTP_GET_VARS['option_page'] ? $HTTP_GET_VARS['option_page'] : 1)); ?&gt;&amp;option_order_by="+document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value;
-  }
-}
-//--&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF"&gt;
-&lt;!-- header //--&gt;
-&lt;?php require(DIR_WS_INCLUDES . 'header.php'); ?&gt;
-&lt;!-- header_eof //--&gt;
-
-&lt;!-- body //--&gt;
-&lt;table border="0" width="100%" cellspacing="2" cellpadding="2"&gt;
-  &lt;tr&gt;
-    &lt;td width="&lt;?php echo BOX_WIDTH; ?&gt;" valign="top"&gt;&lt;table border="0" width="&lt;?php echo BOX_WIDTH; ?&gt;" cellspacing="1" cellpadding="1" class="columnLeft"&gt;
-&lt;!-- left_navigation //--&gt;
-&lt;?php require(DIR_WS_INCLUDES . 'column_left.php'); ?&gt;
-&lt;!-- left_navigation_eof //--&gt;
-    &lt;/table&gt;&lt;/td&gt;
-&lt;!-- body_text //--&gt;
-    &lt;td width="100%" valign="top"&gt;&lt;table border="0" width="100%" cellspacing="0" cellpadding="0"&gt;
-&lt;!-- options and values//--&gt;
-      &lt;tr&gt;
-        &lt;td width="100%"&gt;&lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&gt;
-          &lt;tr&gt;
-            &lt;td valign="top" width="50%"&gt;&lt;table width="100%" border="0" cellspacing="0" cellpadding="2"&gt;
-&lt;!-- options //--&gt;
-&lt;?php
-  if ($action == 'delete_product_option') { // delete product option
-    $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$HTTP_GET_VARS['option_id'] . "' and language_id = '" . (int)$languages_id . "'");
-    $options_values = tep_db_fetch_array($options);
-?&gt;
-              &lt;tr&gt;
-                &lt;td class="pageHeading"&gt;&amp;nbsp;&lt;?php echo $options_values['products_options_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td&gt;&amp;nbsp;&lt;?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?&gt;&amp;nbsp;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td&gt;&lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    $products = tep_db_query("select p.products_id, pd.products_name, pov.products_options_values_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov, " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pov.language_id = '" . (int)$languages_id . "' and pd.language_id = '" . (int)$languages_id . "' and pa.products_id = p.products_id and pa.options_id='" . (int)$HTTP_GET_VARS['option_id'] . "' and pov.products_options_values_id = pa.options_values_id order by pd.products_name");
-    if (tep_db_num_rows($products)) {
-?&gt;
-                  &lt;tr class="dataTableHeadingRow"&gt;
-                    &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ID; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_PRODUCT; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_VALUE; ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-      $rows = 0;
-      while ($products_values = tep_db_fetch_array($products)) {
-        $rows++;
-?&gt;
-                  &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-                    &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_id']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_options_values_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-      }
-?&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3" class="main"&gt;&lt;br&gt;&lt;?php echo TEXT_WARNING_OF_DELETE; ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td align="right" colspan="3" class="main"&gt;&lt;br&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['value_page']) ? 'value_page=' . $HTTP_GET_VARS['value_page'] . '&amp;' : '') . (isset($HTTP_GET_VARS['attribute_page']) ? 'attribute_page=' . $HTTP_GET_VARS['attribute_page'] : ''), 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', ' cancel '); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    } else {
-?&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" colspan="3"&gt;&lt;br&gt;&lt;?php echo TEXT_OK_TO_DELETE; ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" align="right" colspan="3"&gt;&lt;br&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option&amp;option_id=' . $HTTP_GET_VARS['option_id'], 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_delete.gif', ' delete '); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['order_by']) ? 'order_by=' . $HTTP_GET_VARS['order_by'] . '&amp;' : '') . (isset($HTTP_GET_VARS['page']) ? 'page=' . $HTTP_GET_VARS['page'] : ''), 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', ' cancel '); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    }
-?&gt;
-                &lt;/table&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-  } else {
-    if (isset($HTTP_GET_VARS['option_order_by'])) {
-      $option_order_by = $HTTP_GET_VARS['option_order_by'];
-    } else {
-      $option_order_by = 'products_options_id';
-    }
-?&gt;
-              &lt;tr&gt;
-                &lt;td colspan="2" class="pageHeading"&gt;&amp;nbsp;&lt;?php echo HEADING_TITLE_OPT; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="right"&gt;&lt;br&gt;&lt;form name="option_order_by" action="&lt;?php echo FILENAME_PRODUCTS_ATTRIBUTES; ?&gt;"&gt;&lt;select name="selected" onChange="go_option()"&gt;&lt;option value="products_options_id"&lt;?php if ($option_order_by == 'products_options_id') { echo ' SELECTED'; } ?&gt;&gt;&lt;?php echo TEXT_OPTION_ID; ?&gt;&lt;/option&gt;&lt;option value="products_options_name"&lt;?php if ($option_order_by == 'products_options_name') { echo ' SELECTED'; } ?&gt;&gt;&lt;?php echo TEXT_OPTION_NAME; ?&gt;&lt;/option&gt;&lt;/select&gt;&lt;/form&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3" class="smallText"&gt;
-&lt;?php
-    $per_page = MAX_ROW_LISTS_OPTIONS;
-    $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by " . $option_order_by;
-    if (!isset($option_page)) {
-      $option_page = 1;
-    }
-    $prev_option_page = $option_page - 1;
-    $next_option_page = $option_page + 1;
-
-    $option_query = tep_db_query($options);
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    $option_page_start = ($per_page * $option_page) - $per_page;
-    $num_rows = tep_db_num_rows($option_query);
</pre><pre class="diff" id="added">+  if (!empty($entriesAction)) {
+    switch ($entriesAction) {
+      case 'saveGroupEntry':
+        $languages = tep_get_languages();
+        $error = false;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    if ($num_rows &lt;= $per_page) {
-      $num_pages = 1;
-    } else if (($num_rows % $per_page) == 0) {
-      $num_pages = ($num_rows / $per_page);
-    } else {
-      $num_pages = ($num_rows / $per_page) + 1;
-    }
-    $num_pages = (int) $num_pages;
-
-    $options = $options . " LIMIT $option_page_start, $per_page";
</pre><pre class="diff" id="added">+        if (isset($_GET['paeID']) &amp;&amp; is_numeric($_GET['paeID'])) {
+          $entry_id = $_GET['paeID'];
+        } else {
+          $Qcheck = $osC_Database-&gt;query('select max(products_options_values_id) as products_options_values_id from :table_products_options_values');
+          $Qcheck-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+          $Qcheck-&gt;execute();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    // Previous
-    if ($prev_option_page)  {
-      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $prev_option_page) . '"&gt; &amp;lt;&amp;lt; &lt;/a&gt; | ';
-    }
</pre><pre class="diff" id="added">+          $entry_id = $Qcheck-&gt;valueInt('products_options_values_id') + 1;
+        }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    for ($i = 1; $i &lt;= $num_pages; $i++) {
-      if ($i != $option_page) {
-        echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $i) . '"&gt;' . $i . '&lt;/a&gt; | ';
-      } else {
-        echo '&lt;b&gt;&lt;font color=red&gt;' . $i . '&lt;/font&gt;&lt;/b&gt; | ';
-      }
-    }
</pre><pre class="diff" id="added">+        $osC_Database-&gt;startTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    // Next
-    if ($option_page != $num_pages) {
-      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_page=' . $next_option_page) . '"&gt; &amp;gt;&amp;gt; &lt;/a&gt;';
-    }
-?&gt;
-                &lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr class="dataTableHeadingRow"&gt;
-                &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ID; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_NAME; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ACTION; ?&gt;&amp;nbsp;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    $next_id = 1;
-    $rows = 0;
-    $options = tep_db_query($options);
-    while ($options_values = tep_db_fetch_array($options)) {
-      $rows++;
-?&gt;
-              &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-&lt;?php
-      if (($action == 'update_option') &amp;&amp; ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) {
-        echo '&lt;form name="option" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_name', 'NONSSL') . '" method="post"&gt;';
-        $inputs = '';
-        for ($i = 0, $n = sizeof($languages); $i &lt; $n; $i ++) {
-          $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . $options_values['products_options_id'] . "' and language_id = '" . $languages[$i]['id'] . "'");
-          $option_name = tep_db_fetch_array($option_name);
-          $inputs .= $languages[$i]['code'] . ':&amp;nbsp;&lt;input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"&gt;&amp;nbsp;&lt;br&gt;';
</pre><pre class="diff" id="added">+        foreach ($languages as $l_entry) {
+          if (isset($_GET['paeID']) &amp;&amp; is_numeric($_GET['paeID'])) {
+            $Qentry = $osC_Database-&gt;query('update :table_products_options_values set products_options_values_name = :products_options_values_name where products_options_values_id = :products_options_values_id and language_id = :language_id');
+          } else {
+            $Qentry = $osC_Database-&gt;query('insert into :table_products_options_values (products_options_values_id, language_id, products_options_values_name) values (:products_options_values_id, :language_id, :products_options_values_name)');
+          }
+          $Qentry-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+          $Qentry-&gt;bindInt(':products_options_values_id', $entry_id);
+          $Qentry-&gt;bindValue(':products_options_values_name', $_POST['entry_name'][$l_entry['id']]);
+          $Qentry-&gt;bindInt(':language_id', $l_entry['id']);
+          $Qentry-&gt;execute();
+
+          if ($osC_Database-&gt;isError()) {
+            $error = true;
+            break;
+          }
</pre><pre class="diff" id="context">         }
</pre><pre class="diff" id="removed">-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $options_values['products_options_id']; ?&gt;&lt;input type="hidden" name="option_id" value="&lt;?php echo $options_values['products_options_id']; ?&gt;"&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&lt;?php echo $inputs; ?&gt;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '', 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-        echo '&lt;/form&gt;' . "\n";
-      } else {
-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $options_values["products_options_id"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $options_values["products_options_name"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option&amp;option_id=' . $options_values['products_options_id'] . '&amp;option_order_by=' . $option_order_by . '&amp;option_page=' . $option_page, 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_option&amp;option_id=' . $options_values['products_options_id'], 'NONSSL') , '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-      }
-?&gt;
-              &lt;/tr&gt;
-&lt;?php
-      $max_options_id_query = tep_db_query("select max(products_options_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS);
-      $max_options_id_values = tep_db_fetch_array($max_options_id_query);
-      $next_id = $max_options_id_values['next_id'];
-    }
-?&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    if ($action != 'update_option') {
-?&gt;
-              &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-&lt;?php
-      echo '&lt;form name="options" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_options&amp;option_page=' . $option_page, 'NONSSL') . '" method="post"&gt;&lt;input type="hidden" name="products_options_id" value="' . $next_id . '"&gt;';
-      $inputs = '';
-      for ($i = 0, $n = sizeof($languages); $i &lt; $n; $i ++) {
-        $inputs .= $languages[$i]['code'] . ':&amp;nbsp;&lt;input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20"&gt;&amp;nbsp;&lt;br&gt;';
-      }
-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $next_id; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&lt;?php echo $inputs; ?&gt;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-      echo '&lt;/form&gt;';
-?&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    }
-  }
-?&gt;
-            &lt;/table&gt;&lt;/td&gt;
-&lt;!-- options eof //--&gt;
-            &lt;td valign="top" width="50%"&gt;&lt;table width="100%" border="0" cellspacing="0" cellpadding="2"&gt;
-&lt;!-- value //--&gt;
-&lt;?php
-  if ($action == 'delete_option_value') { // delete product option value
-    $values = tep_db_query("select products_options_values_id, products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$HTTP_GET_VARS['value_id'] . "' and language_id = '" . (int)$languages_id . "'");
-    $values_values = tep_db_fetch_array($values);
-?&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3" class="pageHeading"&gt;&amp;nbsp;&lt;?php echo $values_values['products_options_values_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td&gt;&amp;nbsp;&lt;?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?&gt;&amp;nbsp;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td&gt;&lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    $products = tep_db_query("select p.products_id, pd.products_name, po.products_options_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS . " po, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and po.language_id = '" . (int)$languages_id . "' and pa.products_id = p.products_id and pa.options_values_id='" . (int)$HTTP_GET_VARS['value_id'] . "' and po.products_options_id = pa.options_id order by pd.products_name");
-    if (tep_db_num_rows($products)) {
-?&gt;
-                  &lt;tr class="dataTableHeadingRow"&gt;
-                    &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ID; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_PRODUCT; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_NAME; ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-      while ($products_values = tep_db_fetch_array($products)) {
-        $rows++;
-?&gt;
-                  &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-                    &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_id']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                    &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_values['products_options_name']; ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-      }
-?&gt;
-                  &lt;tr&gt;
-                    &lt;td colspan="3"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" colspan="3"&gt;&lt;br&gt;&lt;?php echo TEXT_WARNING_OF_DELETE; ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" align="right" colspan="3"&gt;&lt;br&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($HTTP_GET_VARS['value_page']) ? 'value_page=' . $HTTP_GET_VARS['value_page'] . '&amp;' : '') . (isset($HTTP_GET_VARS['attribute_page']) ? 'attribute_page=' . $attribute_page : ''), 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', ' cancel '); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    } else {
-?&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" colspan="3"&gt;&lt;br&gt;&lt;?php echo TEXT_OK_TO_DELETE; ?&gt;&lt;/td&gt;
-                  &lt;/tr&gt;
-                  &lt;tr&gt;
-                    &lt;td class="main" align="right" colspan="3"&gt;&lt;br&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_value&amp;value_id=' . $HTTP_GET_VARS['value_id'], 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_delete.gif', ' delete '); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&amp;option_page=' . $option_page . (isset($HTTP_GET_VARS['value_page']) ? '&amp;value_page=' . $value_page : '') . (isset($HTTP_GET_VARS['attribute_page']) ? '&amp;attribute_page=' . $attribute_page : ''), 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', ' cancel '); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;/tr&gt;
-&lt;?php
-    }
-?&gt;
-                &lt;/table&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-  } else {
-?&gt;
-              &lt;tr&gt;
-                &lt;td colspan="3" class="pageHeading"&gt;&amp;nbsp;&lt;?php echo HEADING_TITLE_VAL; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td&gt;&amp;nbsp;&lt;?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?&gt;&amp;nbsp;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="4" class="smallText"&gt;
-&lt;?php
-    $per_page = MAX_ROW_LISTS_OPTIONS;
-    $values = "select pov.products_options_values_id, pov.products_options_values_name, pov2po.products_options_id from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " pov2po on pov.products_options_values_id = pov2po.products_options_values_id where pov.language_id = '" . (int)$languages_id . "' order by pov.products_options_values_id";
-    if (!isset($value_page)) {
-      $value_page = 1;
-    }
-    $prev_value_page = $value_page - 1;
-    $next_value_page = $value_page + 1;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    $value_query = tep_db_query($values);
</pre><pre class="diff" id="added">+        if ($error === false) {
+          if (!isset($_GET['paeID'])) {
+            $Qlink = $osC_Database-&gt;query('insert into :table_products_options_values_to_products_options (products_options_id, products_options_values_id) values (:products_options_id, :products_options_values_id)');
+            $Qlink-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+            $Qlink-&gt;bindInt(':products_options_id', $_GET['paID']);
+            $Qlink-&gt;bindInt(':products_options_values_id', $entry_id);
+            $Qlink-&gt;execute();
+
+            if ($osC_Database-&gt;isError()) {
+              $error = true;
+            }
+          }
+        }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    $value_page_start = ($per_page * $value_page) - $per_page;
-    $num_rows = tep_db_num_rows($value_query);
</pre><pre class="diff" id="added">+        if ($error === false) {
+          $osC_Database-&gt;commitTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    if ($num_rows &lt;= $per_page) {
-      $num_pages = 1;
-    } else if (($num_rows % $per_page) == 0) {
-      $num_pages = ($num_rows / $per_page);
-    } else {
-      $num_pages = ($num_rows / $per_page) + 1;
-    }
-    $num_pages = (int) $num_pages;
</pre><pre class="diff" id="added">+          $messageStack-&gt;add_session(SUCCESS_DB_ROWS_UPDATED, 'success');
+        } else {
+          $osC_Database-&gt;rollbackTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    $values = $values . " LIMIT $value_page_start, $per_page";
</pre><pre class="diff" id="added">+          $messageStack-&gt;add_session(ERROR_DB_ROWS_NOT_UPDATED, 'error');
+        }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    // Previous
-    if ($prev_value_page)  {
-      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'option_order_by=' . $option_order_by . '&amp;value_page=' . $prev_value_page) . '"&gt; &amp;lt;&amp;lt; &lt;/a&gt; | ';
-    }
</pre><pre class="diff" id="added">+        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $entry_id));
+        break;
+      case 'deleteConfirm':
+        if (isset($_GET['paeID']) &amp;&amp; is_numeric($_GET['paeID'])) {
+          $error = false;
+
+          $osC_Database-&gt;startTransaction();
+
+          $Qentry = $osC_Database-&gt;query('delete from :table_products_options_values where products_options_values_id = :products_options_values_id');
+          $Qentry-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+          $Qentry-&gt;bindInt(':products_options_values_id', $_GET['paeID']);
+          $Qentry-&gt;execute();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    for ($i = 1; $i &lt;= $num_pages; $i++) {
-      if ($i != $value_page) {
-         echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($option_order_by) ? 'option_order_by=' . $option_order_by . '&amp;' : '') . 'value_page=' . $i) . '"&gt;' . $i . '&lt;/a&gt; | ';
-      } else {
-         echo '&lt;b&gt;&lt;font color=red&gt;' . $i . '&lt;/font&gt;&lt;/b&gt; | ';
-      }
-    }
</pre><pre class="diff" id="added">+          if ($osC_Database-&gt;isError()) {
+            $error = true;
+          }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-    // Next
-    if ($value_page != $num_pages) {
-      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, (isset($option_order_by) ? 'option_order_by=' . $option_order_by . '&amp;' : '') . 'value_page=' . $next_value_page) . '"&gt; &amp;gt;&amp;gt;&lt;/a&gt; ';
-    }
-?&gt;
-                &lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="4"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr class="dataTableHeadingRow"&gt;
-                &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ID; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_NAME; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_VALUE; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ACTION; ?&gt;&amp;nbsp;&lt;/td&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="4"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    $next_id = 1;
-    $rows = 0;
-    $values = tep_db_query($values);
-    while ($values_values = tep_db_fetch_array($values)) {
-      $options_name = tep_options_name($values_values['products_options_id']);
-      $values_name = $values_values['products_options_values_name'];
-      $rows++;
-?&gt;
-              &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-&lt;?php
-      if (($action == 'update_option_value') &amp;&amp; ($HTTP_GET_VARS['value_id'] == $values_values['products_options_values_id'])) {
-        echo '&lt;form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_value', 'NONSSL') . '" method="post"&gt;';
-        $inputs = '';
-        for ($i = 0, $n = sizeof($languages); $i &lt; $n; $i ++) {
-          $value_name = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$values_values['products_options_values_id'] . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
-          $value_name = tep_db_fetch_array($value_name);
-          $inputs .= $languages[$i]['code'] . ':&amp;nbsp;&lt;input type="text" name="value_name[' . $languages[$i]['id'] . ']" size="15" value="' . $value_name['products_options_values_name'] . '"&gt;&amp;nbsp;&lt;br&gt;';
-        }
-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $values_values['products_options_values_id']; ?&gt;&lt;input type="hidden" name="value_id" value="&lt;?php echo $values_values['products_options_values_id']; ?&gt;"&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo "\n"; ?&gt;&lt;select name="option_id"&gt;
-&lt;?php
-        $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by products_options_name");
-        while ($options_values = tep_db_fetch_array($options)) {
-          echo "\n" . '&lt;option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '"';
-          if ($values_values['products_options_id'] == $options_values['products_options_id']) {
-            echo ' selected';
</pre><pre class="diff" id="added">+          if ($error === false) {
+            $Qlink = $osC_Database-&gt;query('delete from :table_products_options_values_to_products_options where products_options_id = :products_options_id and products_options_values_id = :products_options_values_id');
+            $Qlink-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+            $Qlink-&gt;bindInt(':products_options_id', $_GET['paID']);
+            $Qlink-&gt;bindInt(':products_options_values_id', $_GET['paeID']);
+            $Qlink-&gt;execute();
+
+            if ($osC_Database-&gt;isError()) {
+              $error = true;
+            }
</pre><pre class="diff" id="context">           }
</pre><pre class="diff" id="removed">-          echo '&gt;' . $options_values['products_options_name'] . '&lt;/option&gt;';
-        }
-?&gt;
-                &lt;/select&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&lt;?php echo $inputs; ?&gt;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '', 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-        echo '&lt;/form&gt;';
-      } else {
-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $values_values["products_options_values_id"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $options_name; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $values_name; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option_value&amp;value_id=' . $values_values['products_options_values_id'] . (isset($HTTP_GET_VARS['value_page']) ? '&amp;value_page=' . $HTTP_GET_VARS['value_page'] : ''), 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option_value&amp;value_id=' . $values_values['products_options_values_id'], 'NONSSL') , '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-      }
-      $max_values_id_query = tep_db_query("select max(products_options_values_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS_VALUES);
-      $max_values_id_values = tep_db_fetch_array($max_values_id_query);
-      $next_id = $max_values_id_values['next_id'];
-    }
-?&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="4"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    if ($action != 'update_option_value') {
-?&gt;
-              &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-&lt;?php
-      echo '&lt;form name="values" action="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=add_product_option_values&amp;value_page=' . $value_page, 'NONSSL') . '" method="post"&gt;';
-?&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $next_id; ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;select name="option_id"&gt;
-&lt;?php
-      $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $languages_id . "' order by products_options_name");
-      while ($options_values = tep_db_fetch_array($options)) {
-        echo '&lt;option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '"&gt;' . $options_values['products_options_name'] . '&lt;/option&gt;';
-      }
-
-      $inputs = '';
-      for ($i = 0, $n = sizeof($languages); $i &lt; $n; $i ++) {
-        $inputs .= $languages[$i]['code'] . ':&amp;nbsp;&lt;input type="text" name="value_name[' . $languages[$i]['id'] . ']" size="15"&gt;&amp;nbsp;&lt;br&gt;';
-      }
-?&gt;
-                &lt;/select&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;td class="smallText"&gt;&lt;input type="hidden" name="value_id" value="&lt;?php echo $next_id; ?&gt;"&gt;&lt;?php echo $inputs; ?&gt;&lt;/td&gt;
-                &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-      echo '&lt;/form&gt;';
-?&gt;
-              &lt;/tr&gt;
-              &lt;tr&gt;
-                &lt;td colspan="4"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-              &lt;/tr&gt;
-&lt;?php
-    }
-  }
-?&gt;
-            &lt;/table&gt;&lt;/td&gt;
-          &lt;/tr&gt;
-        &lt;/table&gt;&lt;/td&gt;
-&lt;!-- option value eof //--&gt;
-      &lt;/tr&gt;
-&lt;!-- products_attributes //--&gt;
-      &lt;tr&gt;
-        &lt;td width="100%"&gt;&lt;table border="0" width="100%" cellspacing="0" cellpadding="0"&gt;
-          &lt;tr&gt;
-            &lt;td class="pageHeading"&gt;&amp;nbsp;&lt;?php echo HEADING_TITLE_ATRIB; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td&gt;&amp;nbsp;&lt;?php echo tep_image(DIR_WS_IMAGES . 'pixel_trans.gif', '', '1', '53'); ?&gt;&amp;nbsp;&lt;/td&gt;
-          &lt;/tr&gt;
-        &lt;/table&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-&lt;?php
-  if ($action == 'update_attribute') {
-    $form_action = 'update_product_attribute';
-  } else {
-    $form_action = 'add_product_attributes';
-  }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-  if (!isset($attribute_page)) {
-    $attribute_page = 1;
-  }
-  $prev_attribute_page = $attribute_page - 1;
-  $next_attribute_page = $attribute_page + 1;
-?&gt;
-        &lt;td&gt;&lt;form name="attributes" action="&lt;?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=' . $form_action . '&amp;option_page=' . $option_page . '&amp;value_page=' . $value_page . '&amp;attribute_page=' . $attribute_page); ?&gt;" method="post"&gt;&lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
-          &lt;tr&gt;
-            &lt;td colspan="7" class="smallText"&gt;
-&lt;?php
-  $per_page = MAX_ROW_LISTS_OPTIONS;
-  $attributes = "select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pa.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name";
-  $attribute_query = tep_db_query($attributes);
-
-  $attribute_page_start = ($per_page * $attribute_page) - $per_page;
-  $num_rows = tep_db_num_rows($attribute_query);
-
-  if ($num_rows &lt;= $per_page) {
-     $num_pages = 1;
-  } else if (($num_rows % $per_page) == 0) {
-     $num_pages = ($num_rows / $per_page);
-  } else {
-     $num_pages = ($num_rows / $per_page) + 1;
-  }
-  $num_pages = (int) $num_pages;
</pre><pre class="diff" id="added">+          if ($error === false) {
+            $osC_Database-&gt;commitTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-  $attributes = $attributes . " LIMIT $attribute_page_start, $per_page";
</pre><pre class="diff" id="added">+            $messageStack-&gt;add_session(SUCCESS_DB_ROWS_UPDATED, 'success');
+          } else {
+            $osC_Database-&gt;rollbackTransaction();
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-  // Previous
-  if ($prev_attribute_page) {
-    echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $prev_attribute_page) . '"&gt; &amp;lt;&amp;lt; &lt;/a&gt; | ';
-  }
</pre><pre class="diff" id="added">+            $messageStack-&gt;add_session(ERROR_DB_ROWS_NOT_UPDATED, 'error');
+          }
+        }
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-  for ($i = 1; $i &lt;= $num_pages; $i++) {
-    if ($i != $attribute_page) {
-      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $i) . '"&gt;' . $i . '&lt;/a&gt; | ';
-    } else {
-      echo '&lt;b&gt;&lt;font color="red"&gt;' . $i . '&lt;/font&gt;&lt;/b&gt; | ';
</pre><pre class="diff" id="added">+        tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage']));
+        break;
</pre><pre class="diff" id="context">     }
   }
 
</pre><pre class="diff" id="removed">-  // Next
-  if ($attribute_page != $num_pages) {
-    echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $next_attribute_page) . '"&gt; &amp;gt;&amp;gt; &lt;/a&gt;';
</pre><pre class="diff" id="added">+  switch ($action) {
+    case 'list': $page_contents = 'products_attributes_listing.php'; break;
+    default: $page_contents = 'products_attributes.php';
</pre><pre class="diff" id="context">   }
</pre><pre class="diff" id="added">+
+  require('templates/default.php');
+
+  require('includes/application_bottom.php');
</pre><pre class="diff" id="context"> ?&gt;
</pre><pre class="diff" id="removed">-            &lt;/td&gt;
-          &lt;/tr&gt;
-          &lt;tr&gt;
-            &lt;td colspan="7"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-          &lt;/tr&gt;
-          &lt;tr class="dataTableHeadingRow"&gt;
-            &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ID; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_PRODUCT; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_NAME; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_VALUE; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent" align="right"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_PRICE; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_OPT_PRICE_PREFIX; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="dataTableHeadingContent" align="center"&gt;&amp;nbsp;&lt;?php echo TABLE_HEADING_ACTION; ?&gt;&amp;nbsp;&lt;/td&gt;
-          &lt;/tr&gt;
-          &lt;tr&gt;
-            &lt;td colspan="7"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-          &lt;/tr&gt;
-&lt;?php
-  $next_id = 1;
-  $attributes = tep_db_query($attributes);
-  while ($attributes_values = tep_db_fetch_array($attributes)) {
-    $products_name_only = tep_get_products_name($attributes_values['products_id']);
-    $options_name = tep_options_name($attributes_values['options_id']);
-    $values_name = tep_values_name($attributes_values['options_values_id']);
-    $rows++;
-?&gt;
-          &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-&lt;?php
-    if (($action == 'update_attribute') &amp;&amp; ($HTTP_GET_VARS['attribute_id'] == $attributes_values['products_attributes_id'])) {
-?&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $attributes_values['products_attributes_id']; ?&gt;&lt;input type="hidden" name="attribute_id" value="&lt;?php echo $attributes_values['products_attributes_id']; ?&gt;"&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;select name="products_id"&gt;
-&lt;?php
-      $products = tep_db_query("select p.products_id, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pd.language_id = '" . $languages_id . "' order by pd.products_name");
-      while($products_values = tep_db_fetch_array($products)) {
-        if ($attributes_values['products_id'] == $products_values['products_id']) {
-          echo "\n" . '&lt;option name="' . $products_values['products_name'] . '" value="' . $products_values['products_id'] . '" SELECTED&gt;' . $products_values['products_name'] . '&lt;/option&gt;';
-        } else {
-          echo "\n" . '&lt;option name="' . $products_values['products_name'] . '" value="' . $products_values['products_id'] . '"&gt;' . $products_values['products_name'] . '&lt;/option&gt;';
-        }
-      }
-?&gt;
-            &lt;/select&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;select name="options_id"&gt;
-&lt;?php
-      $options = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $languages_id . "' order by products_options_name");
-      while($options_values = tep_db_fetch_array($options)) {
-        if ($attributes_values['options_id'] == $options_values['products_options_id']) {
-          echo "\n" . '&lt;option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '" SELECTED&gt;' . $options_values['products_options_name'] . '&lt;/option&gt;';
-        } else {
-          echo "\n" . '&lt;option name="' . $options_values['products_options_name'] . '" value="' . $options_values['products_options_id'] . '"&gt;' . $options_values['products_options_name'] . '&lt;/option&gt;';
-        }
-      }
-?&gt;
-            &lt;/select&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;select name="values_id"&gt;
-&lt;?php
-      $values = tep_db_query("select * from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where language_id ='" . $languages_id . "' order by products_options_values_name");
-      while($values_values = tep_db_fetch_array($values)) {
-        if ($attributes_values['options_values_id'] == $values_values['products_options_values_id']) {
-          echo "\n" . '&lt;option name="' . $values_values['products_options_values_name'] . '" value="' . $values_values['products_options_values_id'] . '" SELECTED&gt;' . $values_values['products_options_values_name'] . '&lt;/option&gt;';
-        } else {
-          echo "\n" . '&lt;option name="' . $values_values['products_options_values_name'] . '" value="' . $values_values['products_options_values_id'] . '"&gt;' . $values_values['products_options_values_name'] . '&lt;/option&gt;';
-        }
-      }
-?&gt;
-            &lt;/select&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="right" class="smallText"&gt;&amp;nbsp;&lt;input type="text" name="value_price" value="&lt;?php echo $attributes_values['options_values_price']; ?&gt;" size="6"&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;input type="text" name="price_prefix" value="&lt;?php echo $attributes_values['price_prefix']; ?&gt;" size="2"&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&amp;attribute_page=' . $attribute_page, 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-      if (DOWNLOAD_ENABLED == 'true') {
-        $download_query_raw ="select products_attributes_filename, products_attributes_maxdays, products_attributes_maxcount
-                              from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . "
-                              where products_attributes_id='" . $attributes_values['products_attributes_id'] . "'";
-        $download_query = tep_db_query($download_query_raw);
-        if (tep_db_num_rows($download_query) &gt; 0) {
-          $download = tep_db_fetch_array($download_query);
-          $products_attributes_filename = $download['products_attributes_filename'];
-          $products_attributes_maxdays  = $download['products_attributes_maxdays'];
-          $products_attributes_maxcount = $download['products_attributes_maxcount'];
-        }
-?&gt;
-          &lt;tr class="&lt;?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?&gt;"&gt;
-            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td colspan="5"&gt;
-              &lt;table&gt;
-                &lt;tr class="&lt;?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?&gt;"&gt;
-                  &lt;td class="dataTableHeadingContent"&gt;&lt;?php echo TABLE_HEADING_DOWNLOAD; ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_FILENAME; ?&gt;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_filename', $products_attributes_filename, 'size="15"'); ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_MAX_DAYS; ?&gt;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_maxdays', $products_attributes_maxdays, 'size="5"'); ?&gt;&amp;nbsp;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_MAX_COUNT; ?&gt;&lt;/td&gt;
-                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_maxcount', $products_attributes_maxcount, 'size="5"'); ?&gt;&amp;nbsp;&lt;/td&gt;
-                &lt;/tr&gt;
-              &lt;/table&gt;
-            &lt;/td&gt;
-            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
-          &lt;/tr&gt;
-&lt;?php
-      }
-?&gt;
-&lt;?php
-    } elseif (($action == 'delete_product_attribute') &amp;&amp; ($HTTP_GET_VARS['attribute_id'] == $attributes_values['products_attributes_id'])) {
-?&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $attributes_values["products_attributes_id"]; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $products_name_only; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $options_name; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $values_name; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="right" class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $attributes_values["options_values_price"]; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo $attributes_values["price_prefix"]; ?&gt;&lt;/b&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;b&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_attribute&amp;attribute_id=' . $HTTP_GET_VARS['attribute_id']) . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_confirm.gif', IMAGE_CONFIRM); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '&amp;option_page=' . $option_page . '&amp;value_page=' . $value_page . '&amp;attribute_page=' . $attribute_page, 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/td&gt;
-&lt;?php
-    } else {
-?&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $attributes_values["products_attributes_id"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $products_name_only; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $options_name; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $values_name; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="right" class="smallText"&gt;&amp;nbsp;&lt;?php echo $attributes_values["options_values_price"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo $attributes_values["price_prefix"]; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td align="center" class="smallText"&gt;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_attribute&amp;attribute_id=' . $attributes_values['products_attributes_id'] . '&amp;attribute_page=' . $attribute_page, 'NONSSL') . '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_attribute&amp;attribute_id=' . $attributes_values['products_attributes_id'] . '&amp;attribute_page=' . $attribute_page, 'NONSSL') , '"&gt;'; ?&gt;&lt;?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;
-&lt;?php
-    }
-    $max_attributes_id_query = tep_db_query("select max(products_attributes_id) + 1 as next_id from " . TABLE_PRODUCTS_ATTRIBUTES);
-    $max_attributes_id_values = tep_db_fetch_array($max_attributes_id_query);
-    $next_id = $max_attributes_id_values['next_id'];
-?&gt;
-          &lt;/tr&gt;
-&lt;?php
-  }
-  if ($action != 'update_attribute') {
-?&gt;
-          &lt;tr&gt;
-            &lt;td colspan="7"&gt;&lt;?php echo tep_black_line(); ?&gt;&lt;/td&gt;
-          &lt;/tr&gt;
-          &lt;tr class="&lt;?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?&gt;"&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;?php echo $next_id; ?&gt;&amp;nbsp;&lt;/td&gt;
-            &lt;td class="smallText"&gt;&amp;nbsp;&lt;select name="products_id"&gt;
-&lt;?php
</pre></pre>
<strong class="error">[truncated at 1000 lines; 70 more skipped]</strong>
</div>
<hr /><a name="file2" /><div class="file">
<span class="pathname" id="added"><a href="http://cvs.oscommerce.com/viewcvs.cgi/admin">admin</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin">admin</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates">templates</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages">pages</a><br /></span>
<div class="fileheader" id="added"><big><b>products_attributes.php</b></big> <small id="info">added at <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages/products_attributes.php?rev=1.1&amp;content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N products_attributes.php
--- /dev/null	Mon Aug 30 00:19:04 2004
+++ /tmp/cvsAAAITaO5U	Mon Aug 30 00:19:04 2004
@@ -0,0 +1,211 @@
</small></pre><pre class="diff" id="added">+&lt;?php
+/*
+  $Id$
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2004 osCommerce
+
+  Released under the GNU General Public License
+*/
+
+/*
+      if (DOWNLOAD_ENABLED == 'true') {
+        $download_query_raw ="select products_attributes_filename, products_attributes_maxdays, products_attributes_maxcount
+                              from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . "
+                              where products_attributes_id='" . $attributes_values['products_attributes_id'] . "'";
+        $download_query = tep_db_query($download_query_raw);
+        if (tep_db_num_rows($download_query) &gt; 0) {
+          $download = tep_db_fetch_array($download_query);
+          $products_attributes_filename = $download['products_attributes_filename'];
+          $products_attributes_maxdays  = $download['products_attributes_maxdays'];
+          $products_attributes_maxcount = $download['products_attributes_maxcount'];
+        }
+?&gt;
+          &lt;tr class="&lt;?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?&gt;"&gt;
+            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
+            &lt;td colspan="5"&gt;
+              &lt;table&gt;
+                &lt;tr class="&lt;?php echo (!($rows % 2)? 'attributes-even' : 'attributes-odd');?&gt;"&gt;
+                  &lt;td class="dataTableHeadingContent"&gt;&lt;?php echo TABLE_HEADING_DOWNLOAD; ?&gt;&amp;nbsp;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_FILENAME; ?&gt;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_filename', $products_attributes_filename, 'size="15"'); ?&gt;&amp;nbsp;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_MAX_DAYS; ?&gt;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_maxdays', $products_attributes_maxdays, 'size="5"'); ?&gt;&amp;nbsp;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo TABLE_TEXT_MAX_COUNT; ?&gt;&lt;/td&gt;
+                  &lt;td class="smallText"&gt;&lt;?php echo tep_draw_input_field('products_attributes_maxcount', $products_attributes_maxcount, 'size="5"'); ?&gt;&amp;nbsp;&lt;/td&gt;
+                &lt;/tr&gt;
+              &lt;/table&gt;
+            &lt;/td&gt;
+            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
+          &lt;/tr&gt;
+&lt;?php
+      }
+*/
+
+  $languages = tep_get_languages();
+?&gt;
+
+&lt;h1&gt;&lt;?php echo HEADING_TITLE;?&gt;&lt;/h1&gt;
+
+&lt;div id="infoBox_paDefault" &lt;?php if (!empty($action)) { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;table border="0" width="100%" cellspacing="0" cellpadding="2" class="dataTable"&gt;
+    &lt;thead&gt;
+      &lt;tr&gt;
+        &lt;th&gt;&lt;?php echo TABLE_HEADING_ATTRIBUTE_GROUPS; ?&gt;&lt;/th&gt;
+        &lt;th&gt;&lt;?php echo TABLE_HEADING_TOTAL_ENTRIES; ?&gt;&lt;/th&gt;
+        &lt;th&gt;&lt;?php echo TABLE_HEADING_ACTION; ?&gt;&lt;/th&gt;
+      &lt;/tr&gt;
+    &lt;/thead&gt;
+    &lt;tbody&gt;
+&lt;?php
+  $Qgroups = $osC_Database-&gt;query('select products_options_id, products_options_name from :table_products_options where language_id = :language_id order by products_options_name');
+  $Qgroups-&gt;bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
+  $Qgroups-&gt;bindInt(':language_id', $osC_Session-&gt;value('languages_id'));
+  $Qgroups-&gt;setBatchLimit($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS);
+  $Qgroups-&gt;execute();
+
+  while ($Qgroups-&gt;next()) {
+    $Qentries = $osC_Database-&gt;query('select count(*) as total_entries from :table_products_options_values_to_products_options where products_options_id = :products_options_id');
+    $Qentries-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+    $Qentries-&gt;bindInt(':products_options_id', $Qgroups-&gt;valueInt('products_options_id'));
+    $Qentries-&gt;execute();
+
+    if (!isset($paInfo) &amp;&amp; (!isset($_GET['paID']) || (isset($_GET['paID']) &amp;&amp; ($_GET['paID'] == $Qgroups-&gt;valueInt('products_options_id'))))) {
+      $Qproducts = $osC_Database-&gt;query('select count(*) as total_products from :table_products_attributes where options_id = :options_id');
+      $Qproducts-&gt;bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
+      $Qproducts-&gt;bindInt(':options_id', $Qgroups-&gt;valueInt('products_options_id'));
+      $Qproducts-&gt;execute();
+
+      $paInfo = new objectInfo(array_merge($Qgroups-&gt;toArray(), $Qentries-&gt;toArray(), $Qproducts-&gt;toArray()));
+    }
+
+    if (isset($paInfo) &amp;&amp; ($Qgroups-&gt;valueInt('products_options_id') == $paInfo-&gt;products_options_id)) {
+      echo '      &lt;tr class="selected"&gt;' . "\n";
+    } else {
+      echo '      &lt;tr onMouseOver="rowOverEffect(this);" onMouseOut="rowOutEffect(this);" onClick="document.location.href=\'' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $Qgroups-&gt;valueInt('products_options_id')) . '\';"&gt;' . "\n";
+    }
+?&gt;
+        &lt;td&gt;&lt;?php echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $Qgroups-&gt;valueInt('products_options_id') . '&amp;action=list') . '"&gt;' . tep_image(DIR_WS_ICONS . 'folder.gif', ICON_FOLDER) . '&amp;nbsp;' . $Qgroups-&gt;value('products_options_name') . '&lt;/a&gt;'; ?&gt;&lt;/td&gt;
+        &lt;td&gt;&lt;?php echo $Qentries-&gt;valueInt('total_entries'); ?&gt;&lt;/td&gt;
+        &lt;td align="right"&gt;
+&lt;?php
+    if (isset($paInfo) &amp;&amp; ($Qgroups-&gt;valueInt('products_options_id') == $paInfo-&gt;products_options_id)) {
+      echo '&lt;a href="#" onClick="toggleInfoBox(\'paEdit\');"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . '&lt;/a&gt;&amp;nbsp;' .
+           '&lt;a href="#" onClick="toggleInfoBox(\'paDelete\');"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . '&lt;/a&gt;';
+    } else {
+      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $Qgroups-&gt;valueInt('products_options_id') . '&amp;action=paEdit') . '"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . '&lt;/a&gt;&amp;nbsp;' .
+           '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $Qgroups-&gt;valueInt('products_options_id') . '&amp;action=paDelete') . '"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . '&lt;/a&gt;';
+    }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+&lt;?php
+  }
+?&gt;
+    &lt;/tbody&gt;
+  &lt;/table&gt;
+
+  &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+    &lt;tr&gt;
+      &lt;td class="smallText"&gt;&lt;?php echo $Qgroups-&gt;displayBatchLinksTotal(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?&gt;&lt;/td&gt;
+      &lt;td class="smallText" align="right"&gt;&lt;?php echo $Qgroups-&gt;displayBatchLinksPullDown(); ?&gt;&lt;/td&gt;
+    &lt;/tr&gt;
+  &lt;/table&gt;
+
+  &lt;p align="right"&gt;&lt;?php echo '&lt;input type="button" value="' . IMAGE_INSERT . '" onClick="toggleInfoBox(\'paNew\');" class="infoBoxButton"&gt;'; ?&gt;&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;div id="infoBox_paNew" &lt;?php if ($action != 'paNew') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/new.png', IMAGE_INSERT, '16', '16') . ' ' . TEXT_INFO_HEADING_NEW_ATTRIBUTE_GROUP; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+    &lt;?php echo tep_draw_form('paNew', FILENAME_PRODUCTS_ATTRIBUTES, 'action=saveGroup'); ?&gt;
+
+    &lt;p&gt;&lt;?php echo TEXT_INFO_INSERT_ATTRIBUTE_INTRO; ?&gt;&lt;/p&gt;
+
+    &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+      &lt;tr&gt;
+        &lt;td class="smallText" width="40%" valign="top"&gt;&lt;?php echo '&lt;b&gt;' . TEXT_INFO_ATTRIBUTE_GROUP_NAME . '&lt;/b&gt;'; ?&gt;&lt;/td&gt;
+        &lt;td class="smallText" width="60%"&gt;
+&lt;?php
+  foreach ($languages as $l_entry) {
+    echo tep_image(DIR_WS_CATALOG_LANGUAGES . $l_entry['directory'] . '/images/icon.gif', $l_entry['name']) . '&amp;nbsp;' .  osc_draw_input_field('group_name[' . $l_entry['id'] . ']') . '&lt;br&gt;';
+  }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;p align="center"&gt;&lt;?php echo '&lt;input type="submit" value="' . IMAGE_SAVE . '" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paDefault\');" class="operationButton"&gt;'; ?&gt;&lt;/p&gt;
+
+    &lt;/form&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;?php
+  if (isset($paInfo)) {
+?&gt;
+
+&lt;div id="infoBox_paEdit" &lt;?php if ($action != 'paEdit') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . ' ' . $paInfo-&gt;products_options_name; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+    &lt;?php echo tep_draw_form('paEdit', FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $paInfo-&gt;products_options_id . '&amp;action=saveGroup'); ?&gt;
+
+    &lt;p&gt;&lt;?php echo TEXT_INFO_EDIT_INTRO; ?&gt;&lt;/p&gt;
+
+    &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+      &lt;tr&gt;
+        &lt;td class="smallText" width="40%" valign="top"&gt;&lt;?php echo '&lt;b&gt;' . TEXT_INFO_ATTRIBUTE_GROUP_NAME . '&lt;/b&gt;'; ?&gt;&lt;/td&gt;
+        &lt;td class="smallText" width="60%"&gt;
+&lt;?php
+    $Qgd = $osC_Database-&gt;query('select language_id, products_options_name from :table_products_options where products_options_id = :products_options_id');
+    $Qgd-&gt;bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
+    $Qgd-&gt;bindInt(':products_options_id', $_GET['paID']);
+    $Qgd-&gt;execute();
+
+    $group_names = array();
+    while ($Qgd-&gt;next()) {
+      $group_names[$Qgd-&gt;valueInt('language_id')] = $Qgd-&gt;value('products_options_name');
+    }
+
+    foreach ($languages as $l_entry) {
+      echo tep_image(DIR_WS_CATALOG_LANGUAGES . $l_entry['directory'] . '/images/icon.gif', $l_entry['name']) . '&amp;nbsp;' .  osc_draw_input_field('group_name[' . $l_entry['id'] . ']', (isset($group_names[$l_entry['id']]) ? $group_names[$l_entry['id']] : '')) . '&lt;br&gt;';
+    }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;p align="center"&gt;&lt;?php echo '&lt;input type="submit" value="' . IMAGE_SAVE . '" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paDefault\');" class="operationButton"&gt;'; ?&gt;&lt;/p&gt;
+
+    &lt;/form&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div id="infoBox_paDelete" &lt;?php if ($action != 'paDelete') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . ' ' . $paInfo-&gt;products_options_name; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+
+&lt;?php
+    if ($paInfo-&gt;total_products &gt; 0) {
+      echo '    &lt;p&gt;&lt;b&gt;' . sprintf(TEXT_INFO_DELETE_ATTRIBUTE_GROUP_PROHIBITED, $paInfo-&gt;total_products) . '&lt;/b&gt;&lt;/p&gt;' . "\n" .
+           '    &lt;p align="center"&gt;&lt;input type="button" value="' . IMAGE_BACK . '" onClick="toggleInfoBox(\'paDefault\');" class="operationButton"&gt;&lt;/p&gt;' . "\n";
+    } else {
+      echo '    &lt;p&gt;' . TEXT_INFO_DELETE_ATTRIBUTE_INTRO . '&lt;/p&gt;' . "\n" .
+           '    &lt;p&gt;&lt;b&gt;' . $paInfo-&gt;products_options_name . '&lt;/b&gt;&lt;/p&gt;' . "\n";
+
+      if ($paInfo-&gt;total_entries &gt; 0) {
+        echo '    &lt;p&gt;&lt;b&gt;' . sprintf(TEXT_INFO_DELETE_ATTRIBUTE_GROUP_WARNING, $paInfo-&gt;total_entries) . '&lt;/b&gt;&lt;/p&gt;' . "\n";
+      }
+
+      echo '    &lt;p align="center"&gt;&lt;input type="button" value="' . IMAGE_DELETE . '" onClick="document.location.href=\'' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $paInfo-&gt;products_options_id . '&amp;action=deleteConfirm') . '\';" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paDefault\');" class="operationButton"&gt;&lt;/p&gt;' . "\n";
+    }
+?&gt;
+
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;?php
+  }
+?&gt;
</pre></div>
<hr /><a name="file3" /><div class="file">
<span class="pathname" id="added"><a href="http://cvs.oscommerce.com/viewcvs.cgi/admin">admin</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin">admin</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates">templates</a>/<a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages">pages</a><br /></span>
<div class="fileheader" id="added"><big><b>products_attributes_listing.php</b></big> <small id="info">added at <a href="http://cvs.oscommerce.com/viewcvs.cgi/admin/admin/templates/pages/products_attributes_listing.php?rev=1.1&amp;content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N products_attributes_listing.php
--- /dev/null	Mon Aug 30 00:19:04 2004
+++ /tmp/cvsAAAmVa45U	Mon Aug 30 00:19:05 2004
@@ -0,0 +1,165 @@
</small></pre><pre class="diff" id="added">+&lt;?php
+/*
+  $Id$
+
+  osCommerce, Open Source E-Commerce Solutions
+  http://www.oscommerce.com
+
+  Copyright (c) 2004 osCommerce
+
+  Released under the GNU General Public License
+*/
+?&gt;
+
+&lt;h1&gt;&lt;?php echo HEADING_TITLE; ?&gt;&lt;/h1&gt;
+
+&lt;div id="infoBox_paeDefault" &lt;?php if (!empty($entriesAction)) { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;table border="0" width="100%" cellspacing="0" cellpadding="2" class="dataTable"&gt;
+    &lt;thead&gt;
+      &lt;tr&gt;
+        &lt;th&gt;&lt;?php echo 'Entry'; ?&gt;&lt;/th&gt;
+        &lt;th&gt;&lt;?php echo TABLE_HEADING_ACTION; ?&gt;&lt;/th&gt;
+      &lt;/tr&gt;
+    &lt;/thead&gt;
+    &lt;tbody&gt;
+&lt;?php
+  $Qentries = $osC_Database-&gt;query('select pov.products_options_values_id, pov.products_options_values_name from :table_products_options_values pov, :table_products_options_values_to_products_options pov2po where pov2po.products_options_id = :products_options_id and pov2po.products_options_values_id = pov.products_options_values_id and pov.language_id = :language_id order by pov.products_options_values_name');
+  $Qentries-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+  $Qentries-&gt;bindTable(':table_products_options_values_to_products_options', TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS);
+  $Qentries-&gt;bindInt(':products_options_id', $_GET['paID']);
+  $Qentries-&gt;bindInt(':language_id', $osC_Session-&gt;value('languages_id'));
+  $Qentries-&gt;setBatchLimit($_GET['entriesPage'], MAX_DISPLAY_SEARCH_RESULTS);
+  $Qentries-&gt;execute();
+
+  while ($Qentries-&gt;next()) {
+    if (!isset($paeInfo) &amp;&amp; (!isset($_GET['paeID']) || (isset($_GET['paeID']) &amp;&amp; ($_GET['paeID'] == $Qentries-&gt;valueInt('products_options_values_id'))))) {
+      $Qproducts = $osC_Database-&gt;query('select count(*) as total_products from :table_products_attributes where options_values_id = :options_values_id');
+      $Qproducts-&gt;bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
+      $Qproducts-&gt;bindInt(':options_values_id', $Qentries-&gt;valueInt('products_options_values_id'));
+      $Qproducts-&gt;execute();
+
+      $paeInfo = new objectInfo(array_merge($Qentries-&gt;toArray(), $Qproducts-&gt;toArray()));
+    }
+
+    if (isset($paeInfo) &amp;&amp; ($Qentries-&gt;valueInt('products_options_values_id') == $paeInfo-&gt;products_options_values_id)) {
+      echo '      &lt;tr class="selected"&gt;' . "\n";
+    } else {
+      echo '      &lt;tr onMouseOver="rowOverEffect(this);" onMouseOut="rowOutEffect(this);" onClick="document.location.href=\'' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $Qentries-&gt;valueInt('products_options_values_id')) . '\';"&gt;' . "\n";
+    }
+?&gt;
+        &lt;td&gt;&lt;?php echo $Qentries-&gt;value('products_options_values_name'); ?&gt;&lt;/td&gt;
+        &lt;td align="right"&gt;
+&lt;?php
+    if (isset($paeInfo) &amp;&amp; ($Qentries-&gt;valueInt('products_options_values_id') == $paeInfo-&gt;products_options_values_id)) {
+      echo '&lt;a href="#" onClick="toggleInfoBox(\'paeEdit\');"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . '&lt;/a&gt;&amp;nbsp;' .
+           '&lt;a href="#" onClick="toggleInfoBox(\'paeDelete\');"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . '&lt;/a&gt;';
+    } else {
+      echo '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $Qentries-&gt;valueInt('products_options_values_id') . '&amp;entriesAction=paeEdit') . '"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . '&lt;/a&gt;&amp;nbsp;' .
+           '&lt;a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $Qentries-&gt;valueInt('products_options_values_id') . '&amp;entriesAction=paeDelete') . '"&gt;' . tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . '&lt;/a&gt;';
+    }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+&lt;?php
+    }
+?&gt;
+    &lt;/tbody&gt;
+  &lt;/table&gt;
+
+  &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+    &lt;tr&gt;
+      &lt;td class="smallText"&gt;&lt;?php echo $Qentries-&gt;displayBatchLinksTotal(TEXT_DISPLAY_NUMBER_OF_COUNTRIES); ?&gt;&lt;/td&gt;
+      &lt;td class="smallText" align="right"&gt;&lt;?php echo $Qentries-&gt;displayBatchLinksPullDown('entriesPage', 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list'); ?&gt;&lt;/td&gt;
+    &lt;/tr&gt;
+  &lt;/table&gt;
+
+  &lt;p align="right"&gt;&lt;?php echo '&lt;input type="button" value="' . IMAGE_BACK . '" onClick="document.location.href=\'' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID']) . '\';" class="infoBoxButton"&gt; &lt;input type="button" value="' . IMAGE_INSERT . '" onClick="toggleInfoBox(\'paeNew\');" class="infoBoxButton"&gt;'; ?&gt;&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;div id="infoBox_paeNew" &lt;?php if ($entriesAction != 'paeNew') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/new.png', IMAGE_INSERT, '16', '16') . ' ' . TEXT_INFO_HEADING_NEW_ATTRIBUTE_ENTRY; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+    &lt;?php echo tep_draw_form('paeNew', FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesAction=saveGroupEntry'); ?&gt;
+
+    &lt;p&gt;&lt;?php echo TEXT_INFO_INSERT_ATTRIBUTE_ENTRY_INTRO; ?&gt;&lt;/p&gt;
+
+    &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+      &lt;tr&gt;
+        &lt;td class="smallText" width="40%" valign="top"&gt;&lt;?php echo '&lt;b&gt;' . TEXT_INFO_ATTRIBUTE_ENTRY_NAME . '&lt;/b&gt;'; ?&gt;&lt;/td&gt;
+        &lt;td class="smallText" width="60%"&gt;
+&lt;?php
+  foreach ($languages as $l_entry) {
+    echo tep_image(DIR_WS_CATALOG_LANGUAGES . $l_entry['directory'] . '/images/icon.gif', $l_entry['name']) . '&amp;nbsp;' .  osc_draw_input_field('entry_name[' . $l_entry['id'] . ']') . '&lt;br&gt;';
+  }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;p align="center"&gt;&lt;?php echo '&lt;input type="submit" value="' . IMAGE_SAVE . '" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paeDefault\');" class="operationButton"&gt;'; ?&gt;&lt;/p&gt;
+
+    &lt;/form&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;?php
+  if (isset($paeInfo)) {
+?&gt;
+
+&lt;div id="infoBox_paeEdit" &lt;?php if ($entriesAction != 'paeEdit') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/configure.png', IMAGE_EDIT, '16', '16') . ' ' . $paeInfo-&gt;products_options_values_name; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+    &lt;?php echo tep_draw_form('paeEdit', FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $paeInfo-&gt;products_options_values_id . '&amp;entriesAction=saveGroupEntry'); ?&gt;
+
+    &lt;p&gt;&lt;?php echo TEXT_INFO_EDIT_INTRO; ?&gt;&lt;/p&gt;
+
+    &lt;table border="0" width="100%" cellspacing="0" cellpadding="2"&gt;
+      &lt;tr&gt;
+        &lt;td class="smallText" width="40%" valign="top"&gt;&lt;?php echo '&lt;b&gt;' . TEXT_INFO_ATTRIBUTE_ENTRY_NAME . '&lt;/b&gt;'; ?&gt;&lt;/td&gt;
+        &lt;td class="smallText" width="60%"&gt;
+&lt;?php
+    $Qed = $osC_Database-&gt;query('select language_id, products_options_values_name from :table_products_options_values where products_options_values_id = :products_options_values_id');
+    $Qed-&gt;bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
+    $Qed-&gt;bindInt(':products_options_values_id', $paeInfo-&gt;products_options_values_id);
+    $Qed-&gt;execute();
+
+    $entry_names = array();
+    while ($Qed-&gt;next()) {
+      $entry_names[$Qed-&gt;valueInt('language_id')] = $Qed-&gt;value('products_options_values_name');
+    }
+
+    foreach ($languages as $l_entry) {
+      echo tep_image(DIR_WS_CATALOG_LANGUAGES . $l_entry['directory'] . '/images/icon.gif', $l_entry['name']) . '&amp;nbsp;' .  osc_draw_input_field('entry_name[' . $l_entry['id'] . ']', (isset($entry_names[$l_entry['id']]) ? $entry_names[$l_entry['id']] : '')) . '&lt;br&gt;';
+    }
+?&gt;
+        &lt;/td&gt;
+      &lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;p align="center"&gt;&lt;?php echo '&lt;input type="submit" value="' . IMAGE_SAVE . '" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paeDefault\');" class="operationButton"&gt;'; ?&gt;&lt;/p&gt;
+
+    &lt;/form&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;div id="infoBox_paeDelete" &lt;?php if ($entriesAction != 'paeDelete') { echo 'style="display: none;"'; } ?&gt;&gt;
+  &lt;div class="infoBoxHeading"&gt;&lt;?php echo tep_image('templates/' . $template . '/images/icons/16x16/trash.png', IMAGE_DELETE, '16', '16') . ' ' . $paeInfo-&gt;products_options_values_name; ?&gt;&lt;/div&gt;
+  &lt;div class="infoBoxContent"&gt;
+
+&lt;?php
+    if ($paeInfo-&gt;total_products &gt; 0) {
+      echo '    &lt;p&gt;&lt;b&gt;' . sprintf(TEXT_INFO_DELETE_ATTRIBUTE_ENTRY_PROHIBITED, $paeInfo-&gt;total_products) . '&lt;/b&gt;&lt;/p&gt;' . "\n" .
+           '    &lt;p align="center"&gt;&lt;input type="button" value="' . IMAGE_BACK . '" onClick="toggleInfoBox(\'paeDefault\');" class="operationButton"&gt;&lt;/p&gt;' . "\n";
+    } else {
+      echo '    &lt;p&gt;' . TEXT_INFO_DELETE_ATTRIBUTE_ENTRY_INTRO . '&lt;/p&gt;' . "\n" .
+           '    &lt;p&gt;&lt;b&gt;' . $paeInfo-&gt;products_options_values_name . '&lt;/b&gt;&lt;/p&gt;' . "\n" .
+           '    &lt;p align="center"&gt;&lt;input type="button" value="' . IMAGE_DELETE . '" onClick="document.location.href=\'' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'page=' . $_GET['page'] . '&amp;paID=' . $_GET['paID'] . '&amp;action=list&amp;entriesPage=' . $_GET['entriesPage'] . '&amp;paeID=' . $paeInfo-&gt;products_options_values_id . '&amp;entriesAction=deleteConfirm') . '\';" class="operationButton"&gt; &lt;input type="button" value="' . IMAGE_CANCEL . '" onClick="toggleInfoBox(\'paeDefault\');" class="operationButton"&gt;&lt;/p&gt;' . "\n";
+    }
+?&gt;
+
+  &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;?php
+  }
+?&gt;
</pre></div>
<center><small><a href="http://www.badgers-in-foil.co.uk/projects/cvsspam/" title="commit -&gt; email">CVSspam</a> 0.2.9</small></center>
</body></html>


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click