[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 options_name_manager.php

Zen Cart 源代码 options_name_manager.php




下载文件

文件名: options_name_manager.php
文件类型: PHP文件
文件大小: 64.02 KiB
MD5: a79c5bb7b5ec705201f5412bfa964b0d

options_name_manager.php - 关闭高亮
  1. <?php
  2. /**
  3.  * @package admin
  4.  * @copyright Copyright 2003-2012 Zen Cart Development Team
  5.  * @copyright Portions Copyright 2003 osCommerce
  6.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  7.  * @version GIT: $Id: Author: DrByte  Tue Jul 31 11:39:58 2012 -0400 Modified in v1.5.1 $
  8.  */
  9.  
  10.   require('includes/application_top.php');
  11.   $languages = zen_get_languages();
  12.  
  13.   require(DIR_WS_CLASSES . 'currencies.php');
  14.   $currencies = new currencies();
  15.  
  16.   // check for damaged database, caused by users indiscriminately deleting table data
  17.   $ary = array();
  18.   $chk_option_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_name = 'TEXT' and products_options_values_id=" . (int)PRODUCTS_OPTIONS_VALUES_TEXT_ID);
  19.   while (!$chk_option_values->EOF) {
  20.     $ary[] = $chk_option_values->fields['language_id'];
  21.     $chk_option_values->MoveNext();
  22.   }
  23.   for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  24.     if ((int)$languages[$i]['id'] > 0 && !in_array((int)$languages[$i]['id'], $ary)) {
  25. //      $db->Execute("INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name) VALUES ((int)PRODUCTS_OPTIONS_VALUES_TEXT_ID, " . (int)$languages[$i]['id'] . ", 'TEXT')");
  26.       $db->Execute("INSERT INTO " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name) VALUES (" . (int)PRODUCTS_OPTIONS_VALUES_TEXT_ID . ", " . (int)$languages[$i]['id'] . ", 'TEXT')");
  27.     }
  28.   }
  29.  
  30.   $action = (isset($_GET['action']) ? $_GET['action'] : '');
  31.  
  32. // display or hide copier features
  33.   if (!isset($_SESSION['option_names_values_copier'])) {
  34.     $_SESSION['option_names_values_copier'] = OPTION_NAMES_VALUES_GLOBAL_STATUS;
  35.   }
  36.   if (!isset($_GET['reset_option_names_values_copier'])) {
  37.     $reset_option_names_values_copier = $_SESSION['option_names_values_copier'];
  38.   }
  39.  
  40. /*
  41.   if (!isset($_GET['option_order_by'])) {
  42.     $_GET['option_order_by'] = 'products_options_id';
  43.   }
  44. */
  45.     if (isset($_GET['option_order_by'])) {
  46.       $option_order_by = $_GET['option_order_by'];
  47.     } else {
  48.       $option_order_by = 'products_options_id';
  49.     }
  50.  
  51.   if (zen_not_null($action)) {
  52.     $_SESSION['page_info'] = '';
  53.     if (isset($_GET['option_page'])) $_SESSION['page_info'] .= 'option_page=' . $_GET['option_page'] . '&';
  54.     if (isset($_GET['value_page'])) $_SESSION['page_info'] .= 'value_page=' . $_GET['value_page'] . '&';
  55.     if (isset($_GET['attribute_page'])) $_SESSION['page_info'] .= 'attribute_page=' . $_GET['attribute_page'] . '&';
  56.     if (zen_not_null($_SESSION['page_info'])) {
  57.       $_SESSION['page_info'] = substr($_SESSION['page_info'], 0, -1);
  58.     }
  59.  
  60.     switch ($action) {
  61.       case 'set_option_names_values_copier':
  62.         $_SESSION['option_names_values_copier'] = $_GET['reset_option_names_values_copier'];
  63.         $action='';
  64.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER));
  65.         break;
  66.       case 'add_product_options':
  67.         //clr 030714 update to add option type to products_option.
  68.         $products_options_id = zen_db_prepare_input($_POST['products_options_id']);
  69.         $option_name_array = $_POST['option_name'];
  70.         $products_options_sort_order = $_POST['products_options_sort_order'];
  71.         $option_type = $_POST['option_type'];
  72.         $products_options_images_per_row = $_POST['products_options_images_per_row'];
  73.         $products_options_images_style = $_POST['products_options_images_style'];
  74.         $products_options_rows = $_POST['products_options_rows'];
  75.  
  76.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  77.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  78.  
  79.           $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS . "
  80.                      (products_options_id, products_options_name, language_id, products_options_sort_order, products_options_type, products_options_images_per_row, products_options_images_style, products_options_rows)
  81.                      values ('" . (int)$products_options_id . "',
  82.                              '" . zen_db_input($option_name) . "',
  83.                              '" . (int)$languages[$i]['id'] . "',
  84.                              '" . (int)$products_options_sort_order[$languages[$i]['id']] . "',
  85.                              '" . (int)zen_db_input($option_type) . "',
  86.                              '" . (int)zen_db_input($products_options_images_per_row) . "',
  87.                              '" . (int)zen_db_input($products_options_images_style) . "',
  88.                              '" . (int)(($products_options_rows <= 1 and $option_type == PRODUCTS_OPTIONS_TYPE_TEXT) ? 1 : zen_db_input($products_options_rows)) . "'
  89.                              )");
  90.         }
  91.  
  92. // iii 030811 added:  For TEXT and FILE option types, automatically add
  93. // PRODUCTS_OPTIONS_VALUE_TEXT to the TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS
  94.         switch ($option_type) {
  95.           case PRODUCTS_OPTIONS_TYPE_TEXT:
  96.           case PRODUCTS_OPTIONS_TYPE_FILE:
  97.             $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . "
  98.                        (products_options_values_id, products_options_id)
  99.                        values ('" . (int)PRODUCTS_OPTIONS_VALUES_TEXT_ID .  "',
  100.                                '" .  (int)$products_options_id .  "')");
  101.             break;
  102.         }
  103.  
  104. // alert if possible duplicate
  105.         $duplicate_option= '';
  106.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  107.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  108.  
  109.           if (!empty($option_name)) {
  110.             $check= $db->Execute("select count(products_options_name) as count
  111.                                  from " . TABLE_PRODUCTS_OPTIONS . "
  112.                                  where language_id= '" . (int)$languages[$i]['id'] . "'
  113.                                  and products_options_name='" . zen_db_input($option_name) . "'");
  114.             if ($check->fields['count'] > 1) {
  115.               $duplicate_option .= ' <b>' . strtoupper(zen_get_language_name($languages[$i]['id'])) . '</b> : ' . $option_name;
  116.             }
  117.           }
  118.         }
  119.         if (!empty($duplicate_option)) {
  120.           $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
  121.         }
  122.  
  123.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  124.         break;
  125.       case 'update_option_name':
  126.         //clr 030714 update to add option type to products_option.
  127.         $option_name_array = $_POST['option_name'];
  128.         $option_type = (int)$_POST['option_type'];
  129.         $option_id = zen_db_prepare_input($_POST['option_id']);
  130.         $products_options_sort_order_array = $_POST['products_options_sort_order'];
  131.  
  132.         $products_options_length_array = $_POST['products_options_length'];
  133.         $products_options_comment_array = $_POST['products_options_comment'];
  134.         $products_options_size_array = $_POST['products_options_size'];
  135.  
  136.         $products_options_images_per_row_array = $_POST['products_options_images_per_row'];
  137.         $products_options_images_style_array = $_POST['products_options_images_style'];
  138.         $products_options_rows_array = $_POST['products_options_rows'];
  139.  
  140.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  141.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  142.           $products_options_sort_order = (int)zen_db_prepare_input($products_options_sort_order_array[$languages[$i]['id']]);
  143.  
  144.  
  145.           $products_options_length = zen_db_prepare_input($products_options_length_array[$languages[$i]['id']]);
  146.           $products_options_comment = zen_db_prepare_input($products_options_comment_array[$languages[$i]['id']]);
  147.           $products_options_size = zen_db_prepare_input($products_options_size_array[$languages[$i]['id']]);
  148.  
  149.           $products_options_images_per_row = (int)zen_db_prepare_input($products_options_images_per_row_array[$languages[$i]['id']]);
  150.           $products_options_images_style = (int)zen_db_prepare_input($products_options_images_style_array[$languages[$i]['id']]);
  151.           $products_options_rows = (int)zen_db_prepare_input($products_options_rows_array[$languages[$i]['id']]);
  152.  
  153. //          zen_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_name = '" . zen_db_input($option_name) . "', products_options_type = '" . $option_type . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
  154.  
  155.           $db->Execute("update " . TABLE_PRODUCTS_OPTIONS . "
  156.                        set products_options_name = '" . zen_db_input($option_name) . "', products_options_type = '" . $option_type . "', products_options_length = '" . zen_db_input($products_options_length) . "', products_options_comment = '" . zen_db_input($products_options_comment) . "', products_options_size = '" . zen_db_input($products_options_size) . "', products_options_sort_order = '" . zen_db_input($products_options_sort_order) . "', products_options_images_per_row = '" . zen_db_input($products_options_images_per_row) . "', products_options_images_style = '" . zen_db_input($products_options_images_style) . "', products_options_rows = '" . zen_db_input($products_options_rows) . "'
  157.                        where products_options_id = '" . (int)$option_id . "'
  158.                        and language_id = '" . (int)$languages[$i]['id'] . "'");
  159.         }
  160.  
  161.         switch ($option_type) {
  162.           case PRODUCTS_OPTIONS_TYPE_TEXT:
  163.           case PRODUCTS_OPTIONS_TYPE_FILE:
  164. // disabled because this could cause trouble if someone changed types unintentionally and deleted all their option values.  Shops with small numbers of values per option should consider uncommenting this.
  165. //            zen_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . $_POST['option_id'] . "'");
  166. // add in a record if none exists when option type is switched
  167.             $check_type = $db->Execute("select count(products_options_id) as count from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$_POST['option_id'] .  "' and products_options_values_id ='0'");
  168.             if ($check_type->fields['count'] == 0) {
  169.               $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_values_to_products_options_id, products_options_id, products_options_values_id) values (NULL, '" . (int)$_POST['option_id'] . "', '" . (int)PRODUCTS_OPTIONS_VALUES_TEXT_ID . "')");
  170.             }
  171.             break;
  172.           default:
  173. // if switched from file or text remove 0
  174.             $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$_POST['option_id'] . "' and products_options_values_id = '" . (int)PRODUCTS_OPTIONS_VALUES_TEXT_ID . "'");
  175.             break;
  176.         }
  177.  
  178. // alert if possible duplicate
  179.         $duplicate_option= '';
  180.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  181.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  182.  
  183.           $check= $db->Execute("select products_options_name
  184.                                from " . TABLE_PRODUCTS_OPTIONS . "
  185.                                where language_id= '" . (int)$languages[$i]['id'] . "'
  186.                                and products_options_name='" . zen_db_input($option_name) . "'");
  187.  
  188.           if ($check->RecordCount() > 1 and !empty($option_name)) {
  189.             $duplicate_option .= ' <b>' . strtoupper(zen_get_language_name($languages[$i]['id'])) . '</b> : ' . $option_name;
  190.           }
  191.         }
  192.         if (!empty($duplicate_option)) {
  193.           $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
  194.         }
  195.  
  196.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  197.         break;
  198.       case 'delete_option':
  199.         // demo active test
  200.         if (zen_admin_demo()) {
  201.           $_GET['action']= '';
  202.           $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
  203.             zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  204.         }
  205.         $option_id = zen_db_prepare_input($_GET['option_id']);
  206.  
  207.         $remove_option_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$option_id . "'");
  208.  
  209.         while (!$remove_option_values->EOF) {
  210.           $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id='" . (int)$remove_option_values->fields['products_options_values_id'] . "' and products_options_values_id !=0");
  211.           $remove_option_values->MoveNext();
  212.         }
  213.  
  214.         $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS . "
  215.                      where products_options_id = '" . (int)$option_id . "'");
  216.  
  217.         $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$option_id . "'");
  218.  
  219.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  220.         break;
  221.  
  222. /////////////////////////////////////
  223. // additional features
  224.     case 'update_options_values':
  225.       // get products to update with at least one option_value for selected options_name
  226.       $update_to = (int)$_GET['update_to'];
  227.       $update_action = $_GET['update_action'];
  228.  
  229.       switch($update_to) {
  230.         case (0):
  231.         // all products
  232.         $all_update_products = $db->Execute("select distinct products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where options_id='" . (int)$_POST['options_id'] . "'");
  233.         break;
  234.         case (1):
  235.         // one product
  236.         $product_to_update = (int)$_POST['product_to_update'];
  237.         $all_update_products = $db->Execute("select distinct products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where options_id='" . (int)$_POST['options_id'] . "' and products_id='" . $product_to_update . "'");
  238.         break;
  239.         case (2):
  240.         // category of products
  241.         $category_to_update = (int)$_POST['category_to_update'];
  242. // re-write with categories
  243.         $all_update_products = $db->Execute("select distinct pa.products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc on pa.products_id = ptc.products_id where ptc.categories_id ='" . $category_to_update . "' and pa.options_id='" . (int)$_POST['options_id'] . "' and pa.products_id = ptc.products_id");
  244.         break;
  245.       }
  246.  
  247.       if ($all_update_products->RecordCount() < 1) {
  248.         $messageStack->add_session(ERROR_PRODUCTS_OPTIONS_VALUES, 'caution');
  249.       } else {
  250. //die('I want to update ' . $_GET['update_to'] . ' : update action: ' . $update_action . ' product: ' . $_POST['product_to_update']  . ' category: ' . $_POST['category_to_update'] . ' found records: ' . $all_update_products->RecordCount() . ' - ' . $all_update_products->fields['products_id']);
  251.  
  252.         if ($update_action == 0) {
  253.           // action add
  254.           while (!$all_update_products->EOF) {
  255.             // get all option_values
  256.             $all_options_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$_POST['options_id'] . "'");
  257.             $updated = 'false';
  258.            while (!$all_options_values->EOF) {
  259.               $check_all_options_values = $db->Execute("select products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . $all_update_products->fields['products_id'] . "' and options_id='" . (int)$all_options_values->fields['products_options_id'] . "' and options_values_id='" . (int)$all_options_values->fields['products_options_values_id'] . "'");
  260.               if ($check_all_options_values->RecordCount() < 1) {
  261.                 // add missing options_value_id
  262.                 $updated = 'true';
  263.                 $db->Execute("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " (products_id, options_id, options_values_id) values ('" . (int)$all_update_products->fields['products_id'] . "', '" . (int)$all_options_values->fields['products_options_id'] . "', '" . (int)$all_options_values->fields['products_options_values_id'] . "')");
  264.               } else {
  265.                 // skip it the attribute is there
  266.               }
  267.               $all_options_values->MoveNext();
  268.             }
  269.             if ($updated == 'true') {
  270.               zen_update_attributes_products_option_values_sort_order($all_update_products->fields['products_id']);
  271.             }
  272.             $all_update_products->MoveNext();
  273.           }
  274.           if ($updated='true') {
  275.             $messageStack->add_session(SUCCESS_PRODUCTS_OPTIONS_VALUES, 'success');
  276.           } else {
  277.             $messageStack->add_session(ERROR_PRODUCTS_OPTIONS_VALUES, 'error');
  278.           }
  279.         } else {
  280.           // action delete
  281.           while (!$all_update_products->EOF) {
  282.             // get all option_values
  283.             $all_options_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$_POST['options_id'] . "'");
  284.             $updated = 'false';
  285.            while (!$all_options_values->EOF) {
  286.               $check_all_options_values = $db->Execute("select products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$all_update_products->fields['products_id'] . "' and options_id='" . (int)$all_options_values->fields['products_options_id'] . "' and options_values_id='" . (int)$all_options_values->fields['products_options_values_id'] . "'");
  287.               if ($check_all_options_values->RecordCount() >= 1) {
  288.                 // delete for this product with Option Name options_value_id
  289. // echo '<br>This should be deleted: ' . zen_get_products_name($all_options_values->fields['products_options_id']);
  290. // change to delete
  291. // should add download delete
  292.                 $db->Execute("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$all_update_products->fields['products_id'] . "' and options_id='" . (int)$_POST['options_id'] . "'");
  293.               } else {
  294.                 // skip this option_name does not exist
  295.               }
  296.               $all_options_values->MoveNext();
  297.             }
  298.             $all_update_products->MoveNext();
  299.           }
  300.         } // update_action
  301.  
  302.       } // no products found
  303.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  304.         break;
  305. ////////////////////////////////////
  306. // copy features
  307.     case 'copy_options_values':
  308.       $options_id_from = (int)$_POST['options_id_from'];
  309.       $options_id_to = (int)$_POST['options_id_to'];
  310.  
  311.       if ($options_id_from == $options_id_to) {
  312.         // cannot copy to self
  313.         $messageStack->add(ERROR_OPTION_VALUES_COPIED . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'warning');
  314.       } else {
  315.         // successful copy
  316.         $start_id = $db->Execute("select pov.products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov order by pov.products_options_values_id DESC LIMIT 1");
  317.         $copy_from_values = $db->Execute("select pov.* from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " povtpo on pov.products_options_values_id= povtpo.products_options_values_id where povtpo.products_options_id='" . (int)$options_id_from . "' order by povtpo.products_options_values_id");
  318.         if ($copy_from_values->RecordCount() > 0) {
  319.           // successful copy
  320.           $next_id = ($start_id->fields['products_options_values_id'] + 1);
  321.           while(!$copy_from_values->EOF) {
  322.             $current_id = $copy_from_values->fields['products_options_values_id'];
  323.             $sql = "insert into " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) values ('" . (int)$next_id . "', '" . (int)$copy_from_values->fields['language_id'] . "', '" . $copy_from_values->fields['products_options_values_name'] . "', '" . (int)$copy_from_values->fields['products_options_values_sort_order'] . "')";
  324.             $db->Execute($sql);
  325.             $copy_from_values->MoveNext();
  326.             if ($copy_from_values->fields['products_options_values_id'] != $current_id or $copy_from_values->EOF) {
  327.               $sql = "insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_values_to_products_options_id, products_options_id, products_options_values_id) values (0, '" . (int)$options_id_to . "', '" . (int)$next_id . "')";
  328.               $db->Execute($sql);
  329.               $next_id++;
  330.             }
  331.           }
  332.           $messageStack->add(SUCCESS_OPTION_VALUES_COPIED . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'success');
  333.         } else {
  334.           // warning nothing to copy
  335.           $messageStack->add(ERROR_OPTION_VALUES_NONE . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'warning');
  336.         }
  337.       }
  338.     break;
  339. ////////////////////////////////////
  340.     }
  341.  
  342.   }
  343.  
  344. //iii 031103 added to get results from database option type query
  345.   $products_options_types_list = array();
  346. //  $products_options_type_array = $db->Execute("select products_options_types_id, products_options_types_name from " . TABLE_PRODUCTS_OPTIONS_TYPES . " where language_id='" . $_SESSION['languages_id'] . "' order by products_options_types_id");
  347.   $products_options_type_array = $db->Execute("select products_options_types_id, products_options_types_name from " . TABLE_PRODUCTS_OPTIONS_TYPES . " order by products_options_types_id");
  348.   while (!$products_options_type_array->EOF) {
  349.     $products_options_types_list[$products_options_type_array->fields['products_options_types_id']] = $products_options_type_array->fields['products_options_types_name'];
  350.     $products_options_type_array->MoveNext();
  351.   }
  352.  
  353. //CLR 030312 add function to draw pulldown list of option types
  354. // Draw a pulldown for Option Types
  355. //iii 031103 modified to use results of database option type query from above
  356. function draw_optiontype_pulldown($name, $default = '') {
  357.   global $products_options_types_list;
  358.   $values = array();
  359.   foreach ($products_options_types_list as $id => $text) {
  360.     $values[] = array('id' => $id, 'text' => $text);
  361.   }
  362.   return zen_draw_pull_down_menu($name, $values, $default);
  363. }
  364.  
  365. //CLR 030312 add function to translate type_id to name
  366. // Translate option_type_values to english string
  367. //iii 031103 modified to use results of database option type query from above
  368. function translate_type_to_name($opt_type) {
  369.   global $products_options_types_list;
  370.   return $products_options_types_list[$opt_type];
  371.   return 'Error ' . $opt_type;
  372. }
  373.  
  374. ?>
  375. <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
  376. <html <?php echo HTML_PARAMS; ?>>
  377. <head>
  378. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
  379. <title><?php echo TITLE; ?></title>
  380. <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
  381. <link rel="stylesheet" type="text/css" href="includes/cssjsmenuhover.css" media="all" id="hoverJS">
  382. <script language="javascript" src="includes/menu.js"></script>
  383. <script language="javascript"><!--
  384. function go_option() {
  385.   if (document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value != "none") {
  386.     location = "<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . ($_GET['option_page'] ? $_GET['option_page'] : 1)); ?>&option_order_by="+document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value;
  387.   }
  388. }
  389. //--></script>
  390. <script type="text/javascript">
  391.   <!--
  392.   function init()
  393.   {
  394.     cssjsmenu('navbar');
  395.     if (document.getElementById)
  396.     {
  397.       var kill = document.getElementById('hoverJS');
  398.       kill.disabled = true;
  399.     }
  400.   }
  401.   // -->
  402. </script>
  403. </head>
  404. <body onLoad="init()">
  405. <!-- header //-->
  406. <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
  407. <!-- header_eof //-->
  408.  
  409. <!-- body //-->
  410. <!-- body_text //-->
  411.  
  412.     <!-- options and values//-->
  413.     <table border="0" width="75%" cellspacing="0" cellpadding="0" align="center">
  414.       <tr>
  415.         <td width="100%">
  416.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  417.               <tr>
  418.               <td height="40" valign="bottom">
  419.                 <a href="<?php echo  zen_href_link(FILENAME_ATTRIBUTES_CONTROLLER, '', 'NONSSL') ?>"><?php echo zen_image_button('button_edit_attribs.gif', IMAGE_EDIT_ATTRIBUTES); ?></a> &nbsp;
  420.                 <a href="<?php echo  zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, '', 'NONSSL') ?>"><?php echo zen_image_button('button_option_values.gif', IMAGE_OPTION_VALUES); ?></a>
  421.               </td>
  422.               <td class="main" height="40" valign="bottom">
  423.                 <?php
  424. // toggle switch for show copier features
  425.                   $option_names_values_copier_array = array(array('id' => '0', 'text' => TEXT_SHOW_OPTION_NAMES_VALUES_COPIER_OFF),
  426.                                         array('id' => '1', 'text' => TEXT_SHOW_OPTION_NAMES_VALUES_COPIER_ON),
  427.                                         );
  428.                   echo zen_draw_form('set_option_names_values_copier_form', FILENAME_OPTIONS_NAME_MANAGER, '', 'get') . '&nbsp;&nbsp;' . zen_draw_pull_down_menu('reset_option_names_values_copier', $option_names_values_copier_array, $reset_option_names_values_copier, 'onChange="this.form.submit();"') .
  429.                   zen_hide_session_id() .
  430.                   zen_draw_hidden_field('action', 'set_option_names_values_copier') .
  431.                   '</form>';
  432.                 ?>
  433.               </td>
  434.               <td class="main" align="right" valign="bottom"><?php echo TEXT_PRODUCT_OPTIONS_INFO; ?></td>
  435.             </tr>
  436.           </table>
  437.         </td>
  438.       </tr>
  439.       <tr>
  440.         <td valign="top" width="50%">
  441.            <table width="100%" border="0" cellspacing="0" cellpadding="2">
  442. <!-- options //-->
  443. <?php
  444.   if ($action == 'delete_product_option') { // delete product option
  445.     $options = $db->Execute("select products_options_id, products_options_name
  446.                             from " . TABLE_PRODUCTS_OPTIONS . "
  447.                             where products_options_id = '" . (int)$_GET['option_id'] . "'
  448.                             and language_id = '" . (int)$_SESSION['languages_id'] . "'");
  449.  
  450. ?>
  451.               <tr>
  452.                 <td class="pageHeading">&nbsp;<?php echo $options_values->fields['products_options_name']; ?>&nbsp;</td>
  453.               </tr>
  454.               <tr>
  455.                 <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  456. <?php
  457.     $products = $db->Execute("select p.products_id, pd.products_name, pov.products_options_values_name
  458.                              from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov,
  459.                                   " . TABLE_PRODUCTS_ATTRIBUTES . " pa,
  460.                                   " . TABLE_PRODUCTS_DESCRIPTION . " pd
  461.                              where pd.products_id = p.products_id
  462.                              and pov.language_id = '" . (int)$_SESSION['languages_id'] . "'
  463.                              and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
  464.                              and pa.products_id = p.products_id
  465.                              and pa.options_id='" . (int)$_GET['option_id'] . "'
  466.                              and pov.products_options_values_id = pa.options_values_id
  467.                              order by pd.products_name");
  468.  
  469.     if ($products->RecordCount()>0) {
  470. ?>
  471.  
  472. <?php
  473. // extra cancel
  474.       if ($products->RecordCount()> 10) {
  475. ?>
  476.                   <tr>
  477.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  478.                   </tr>
  479.                   <tr>
  480.                     <td colspan="2" class="main"><br /><?php echo '<strong>' . TEXT_OPTION_NAME . ':</strong> ' . zen_options_name((int)$_GET['option_id']) . '<br />' . TEXT_WARNING_OF_DELETE; ?></td>
  481.                     <td align="right" colspan="3" class="main"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  482.                   </tr>
  483. <?php
  484.       }
  485. ?>
  486.                   <tr class="dataTableHeadingRow">
  487.                     <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_ID; ?>&nbsp;</td>
  488.                     <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_PRODUCT; ?>&nbsp;</td>
  489.                     <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_VALUE; ?>&nbsp;</td>
  490.                   </tr>
  491.                   <tr>
  492.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  493.                   </tr>
  494. <?php
  495.       $rows = 0;
  496.       while (!$products->EOF) {
  497.         $rows++;
  498. ?>
  499.                   <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  500.                     <td align="center" class="smallText">&nbsp;<?php echo $products->fields['products_id']; ?>&nbsp;</td>
  501.                     <td class="smallText">&nbsp;<?php echo $products->fields['products_name']; ?>&nbsp;</td>
  502.                     <td class="smallText">&nbsp;<?php echo $products->fields['products_options_values_name']; ?>&nbsp;</td>
  503.                   </tr>
  504. <?php
  505.         $products->MoveNext();
  506.       }
  507. ?>
  508.                   <tr>
  509.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  510.                   </tr>
  511.                   <tr>
  512.                     <td colspan="2" class="main"><br /><?php echo TEXT_WARNING_OF_DELETE; ?></td>
  513.                     <td align="right" colspan="3" class="main"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  514.                   </tr>
  515.                   <tr>
  516.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  517.                   </tr>
  518. <?php
  519.     } else {
  520. ?>
  521.                   <tr>
  522.                     <td class="main" colspan="3"><br /><?php echo '<strong>' . TEXT_OPTION_NAME . ':</strong> ' . zen_options_name((int)$_GET['option_id']) . '<br />' . TEXT_OK_TO_DELETE; ?></td>
  523.                   </tr>
  524.                   <tr>
  525.                     <td class="main" align="right" colspan="3"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=delete_option&option_id=' . $_GET['option_id'] . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['order_by']) ? 'order_by=' . $_GET['order_by'] . '&' : '') . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  526.                   </tr>
  527. <?php
  528.     }
  529. ?>
  530.                 </table></td>
  531.               </tr>
  532. <?php
  533.   } else {
  534.     if (isset($_GET['option_order_by'])) {
  535.       $option_order_by = $_GET['option_order_by'];
  536.     } else {
  537.       $option_order_by = 'products_options_id';
  538.     }
  539. ?>
  540.               <tr>
  541.                 <td colspan="2" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_OPT; ?>&nbsp;</td>
  542.                 <td valign="top" align="left"><form name="option_order_by" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_order_by=' . $option_order_by, 'NONSSL'); ?>"><select name="selected" onChange="go_option()"><option value="products_options_id"<?php if ($option_order_by == 'products_options_id') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_ID; ?></option><option value="products_options_name"<?php if ($option_order_by == 'products_options_name') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_NAME; ?></option></select></form></td>
  543.               </tr>
  544.               <tr>
  545.                 <td colspan="4" class="smallText">
  546. <?php
  547.     $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = :languageId: order by :optionOrderBy:";
  548.     $options = $db->bindVars($options, ':languageId:', $_SESSION['languages_id'], 'integer');
  549.     $options = $db->bindVars($options, ':optionOrderBy:', $option_order_by, 'noquotestring');
  550.     if (!isset($_GET['option_page'])) {
  551.       $_GET['option_page'] = 1;
  552.     }
  553.     $prev_option_page = $_GET['option_page'] - 1;
  554.     $next_option_page = $_GET['option_page'] + 1;
  555.  
  556.     $option_query = $db->Execute($options);
  557.     $num_rows = $option_query->RecordCount();
  558.  
  559.     $per_page = (MAX_ROW_LISTS_OPTIONS == '') ? $num_rows : (int)MAX_ROW_LISTS_OPTIONS;
  560.  
  561.     $option_page_start = ($per_page * $_GET['option_page']) - $per_page;
  562.     if ($num_rows <= $per_page) {
  563.       $num_pages = 1;
  564.     } else if (($num_rows % $per_page) == 0) {
  565.       $num_pages = ($num_rows / $per_page);
  566.     } else {
  567.       $num_pages = ($num_rows / $per_page) + 1;
  568.     }
  569.     $num_pages = (int) $num_pages;
  570.  
  571. // fix limit error on some versions
  572.     if ($option_page_start < 0) { $option_page_start = 0; }
  573.  
  574.     $options = $options . " LIMIT $option_page_start, $per_page";
  575.  
  576.     // Previous
  577.     if ($prev_option_page)  {
  578.       echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $prev_option_page . '&option_order_by=' . $option_order_by) . '"> &lt;&lt; </a> | ';
  579.     }
  580.  
  581.     for ($i = 1; $i <= $num_pages; $i++) {
  582.       if ($i != $_GET['option_page']) {
  583.         echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $i . '&option_order_by=' . $option_order_by) . '">' . $i . '</a> | ';
  584.       } else {
  585.         echo '<b><font color=red>' . $i . '</font></b> | ';
  586.       }
  587.     }
  588.  
  589.     // Next
  590.     if ($_GET['option_page'] != $num_pages) {
  591.       echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $next_option_page . '&option_order_by=' . $option_order_by) . '"> &gt;&gt; </a>';
  592.     }
  593. //CLR 030212 - Add column for option type
  594. ?>
  595.                 </td>
  596.               </tr>
  597.               <tr>
  598.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  599.               </tr>
  600.               <tr class="dataTableHeadingRow">
  601.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_ID; ?>&nbsp;</td>
  602.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_NAME; ?>&nbsp;</td>
  603.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_TYPE; ?>&nbsp;</td>
  604.                 <td class="dataTableHeadingContent" align="right">&nbsp;<?php echo TABLE_HEADING_OPTION_SORT_ORDER; ?>&nbsp;</td>
  605.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_OPTION_VALUE_SIZE; ?></td>
  606.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_OPTION_VALUE_MAX; ?></td>
  607.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
  608.               </tr>
  609.               <tr>
  610.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  611.               </tr>
  612. <?php
  613.     $next_id = 1;
  614.     $rows = 0;
  615.     $options_values = $db->Execute($options);
  616.     while (!$options_values->EOF) {
  617.       $rows++;
  618. ?>
  619.               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  620. <?php
  621. // edit option name
  622.       if (($action == 'update_option') && ($_GET['option_id'] == $options_values->fields['products_options_id'])) {
  623.         echo '<form name="option" action="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_option_name' . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '')  . '&option_order_by=' . $option_order_by) . '" method="post">';echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']);
  624.         $inputs = '';
  625.         $inputs2 = '';
  626.         for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
  627.           $option_name = $db->Execute("select products_options_name, products_options_sort_order, products_options_size, products_options_length, products_options_comment, products_options_images_per_row, products_options_images_style, products_options_rows
  628.                                       from " . TABLE_PRODUCTS_OPTIONS . "
  629.                                       where products_options_id = '" . (int)$options_values->fields['products_options_id'] . "'
  630.                                       and language_id = '" . (int)$languages[$i]['id'] . "'");
  631.  
  632.           $inputs .= $languages[$i]['code'] . ':&nbsp;<input type="text" name="option_name[' . $languages[$i]['id'] . ']" ' . zen_set_field_length(TABLE_PRODUCTS_OPTIONS, 'products_options_name', 40) . ' value="' . zen_output_string($option_name->fields['products_options_name']) . '">' . TEXT_SORT . '<input type="text" name="products_options_sort_order[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_sort_order'] . '">&nbsp;<br />';
  633.           $inputs2 .= $languages[$i]['code'] . ':&nbsp; ' .
  634.                    '&nbsp;' . TEXT_OPTION_VALUE_COMMENTS . '<input type="text" name="products_options_comment[' . $languages[$i]['id'] . ']" size="50" value="' . zen_output_string($option_name->fields['products_options_comment']) . '">' .
  635.                    '<br /><br />' . TEXT_OPTION_VALUE_ROWS . '<input type="text" name="products_options_rows[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_rows'] . '">' .
  636.                    '&nbsp;' . TEXT_OPTION_VALUE_SIZE . '<input type="text" name="products_options_size[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_size'] . '">' .
  637.                    '&nbsp;' . TEXT_OPTION_VALUE_MAX . '<input type="text" name="products_options_length[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_length'] . '">' .
  638.                    '<br /><br />' . TEXT_OPTION_ATTRIBUTE_IMAGES_PER_ROW . '<input type="text" name="products_options_images_per_row[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_images_per_row'] . '">' .
  639.                    '&nbsp;' . TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE . '<input type="text" name="products_options_images_style[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_images_style'] . '">' . '<br /><br />';
  640.  
  641.         }
  642.  
  643. //CLR 030212 - Add column for option type
  644. ?>
  645.                 <td height="50" align="center" class="attributeBoxContent">&nbsp;<?php echo $options_values->fields['products_options_id']; ?><input type="hidden" name="option_id" value="<?php echo $options_values->fields['products_options_id']; ?>">&nbsp;</td>
  646.                 <td class="attributeBoxContent"><?php echo $inputs; ?></td>
  647.                 <td class="attributeBoxContent"><?php echo draw_optiontype_pulldown('option_type', $options_values->fields['products_options_type']); ?></td>
  648.                 <td colspan="3" align="left" class="attributeBoxContent">&nbsp;</td>
  649.                 <td colspan="1"  align="center" class="attributeBoxContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
  650.               </tr>
  651.       <tr>
  652.         <td colspan="7"><?php echo zen_draw_separator('pixel_black.gif', '100%', '2'); ?></td>
  653.       </tr>
  654.  
  655.               <tr class="attributeBoxContent">
  656.                 <td class="attributeBoxContent">&nbsp;</td>
  657.                 <td colspan="6" class="attributeBoxContent"><?php echo TEXT_OPTION_ATTIBUTE_MAX_LENGTH . $inputs2; ?></td>
  658.               </tr>
  659.               <tr class="attributeBoxContent">
  660.                 <td class="attributeBoxContent">&nbsp;</td>
  661.                 <td colspan="6" class="attributeBoxContent">
  662.               <?php echo '<br />' .
  663.                      TEXT_OPTION_IMAGE_STYLE . '<br />' .
  664.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_0 . '<br />' .
  665.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_1 . '<br />' .
  666.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_2 . '<br />' .
  667.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_3 . '<br />' .
  668.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_4 . '<br />' .
  669.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_5 . '<br />';
  670.               ?>
  671.                 </td>
  672.  
  673.       </tr>
  674.       <tr>
  675.         <td colspan="7"><?php echo zen_draw_separator('pixel_black.gif', '100%', '2'); ?></td>
  676. <?php
  677.         echo '</form>' . "\n";
  678.       } else {
  679. //CLR 030212 - Add column for option type
  680. ?>
  681.                 <td align="center" class="smallText">&nbsp;<?php echo $options_values->fields["products_options_id"]; ?>&nbsp;</td>
  682.                 <td class="smallText">&nbsp;<?php echo $options_values->fields["products_options_name"]; ?>&nbsp;</td>
  683.                 <td class="smallText">&nbsp;<?php echo translate_type_to_name($options_values->fields["products_options_type"]); ?>&nbsp;</td>
  684.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_sort_order"]; ?>&nbsp;</td>
  685.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_size"]; ?>&nbsp;</td>
  686.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_length"]; ?>&nbsp;</td>
  687. <?php
  688. // hide buttons when editing
  689.   if ($action== 'update_option') {
  690. ?>
  691.             <td width='120' align="center" class="smallText">&nbsp;</td>
  692. <?php
  693.   } else {
  694. ?>
  695.                 <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_option&option_id=' . $options_values->fields['products_options_id'] . '&option_order_by=' . $option_order_by . '&option_page=' . $_GET['option_page'] . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') ) . '">'; ?><?php echo zen_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=delete_product_option&option_id=' . $options_values->fields['products_options_id'] . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . '&option_order_by=' . $option_order_by, 'NONSSL') , '">'; ?><?php echo zen_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
  696. <?php
  697.   }
  698. ?>
  699. <?php
  700.       }
  701. ?>
  702.               </tr>
  703. <?php
  704.       $max_options_id_values = $db->Execute("select max(products_options_id) + 1 as next_id
  705.                                             from " . TABLE_PRODUCTS_OPTIONS);
  706.  
  707.       $next_id = $max_options_id_values->fields['next_id'];
  708.       $options_values->MoveNext();
  709.     }
  710. ?>
  711.               <tr>
  712.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  713.               </tr>
  714. <?php
  715. // add option name
  716.     if ($action != 'update_option') {
  717. ?>
  718.               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  719. <?php
  720.       echo '<form name="options" action="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=add_product_options' . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '" method="post"><input type="hidden" name="products_options_id" value="' . $next_id . '">';echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']);
  721.       $inputs = '';
  722.       for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
  723.         $inputs .= $languages[$i]['code'] . ':&nbsp;<input type="text" name="option_name[' . $languages[$i]['id'] . ']" ' . zen_set_field_length(TABLE_PRODUCTS_OPTIONS, 'products_options_name', 40) . '>' . TEXT_SORT . '<input type="text" name="products_options_sort_order[' . $languages[$i]['id'] . ']" size="3">' . '&nbsp;<br />';
  724.       }
  725. //CLR 030212 - Add column for option type
  726. ?>
  727.                 <td align="center" class="smallText">&nbsp;<?php echo $next_id; ?>&nbsp;</td>
  728.                 <td class="smallText"><?php echo $inputs; ?></td>
  729.                 <td class="smallText"><?php echo draw_optiontype_pulldown('option_type'); ?></td>
  730.                 <td colspan="2" class="smallText">&nbsp;</td>
  731.                 <td colspan="2" align="center" class="smallText">&nbsp;<?php echo zen_image_submit('button_insert.gif', IMAGE_INSERT); ?>&nbsp;</td>
  732. <?php
  733.       echo '</form>';
  734. ?>
  735.               </tr>
  736.               <tr>
  737.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  738.               </tr>
  739. <?php
  740.     }
  741.   }
  742. ?>
  743.             </table>
  744. </td></tr></table>
  745. <!-- options eof //-->
  746.  
  747. <?php if ($_SESSION['option_names_values_copier'] == '0') { ?>
  748.   <table align="center" width="90%">
  749.     <tr>
  750.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  751.     </tr>
  752.     <tr>
  753.       <td class="pageHeading" align="center"><?php echo TEXT_INFO_OPTION_NAMES_VALUES_COPIER_STATUS; ?></td>
  754.     </tr>
  755.     <tr>
  756.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  757.     </tr>
  758.   </table>
  759. <?php } else { ?>
  760.   <table align="center" width="90%">
  761.     <tr>
  762.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  763.     </tr>
  764.     <tr>
  765.       <td class="pageHeading" align="center"><span class="alert"><?php echo TEXT_WARNING_BACKUP; ?></span></td>
  766.     </tr>
  767.   </table>
  768.  
  769. <!-- ADD - additional features //-->
  770.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  771.       <tr>
  772.         <td width="100%">
  773.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  774.  
  775. <!-- bof: add all option values to products with current Option Name -->
  776.             <tr>
  777.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_ALL; ?></td>
  778.             </tr>
  779.             <tr>
  780.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_ALL; ?></td>
  781.             </tr>
  782.             <tr class="dataTableHeadingRow">
  783.               <td><table border="0" cellspacing="0" cellpadding="2">
  784.                 <tr class="dataTableHeadingRow">
  785.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=0&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  786.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  787. <?php
  788.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  789.         while(!$options_values->EOF) {
  790.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  791.             $options_values->MoveNext();
  792.         }
  793. ?>
  794.                   </select>&nbsp;</td>
  795.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  796.                   </form>
  797.                 </tr>
  798.  
  799.               </table></td>
  800.             </tr>
  801.  
  802.             <tr>
  803.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_PRODUCT; ?></td>
  804.             </tr>
  805.             <tr>
  806.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_PRODUCT; ?></td>
  807.             </tr>
  808.             <tr class="dataTableHeadingRow">
  809.               <td><table border="0" cellspacing="0" cellpadding="2">
  810.                 <tr class="dataTableHeadingRow">
  811.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=1&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  812.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  813. <?php
  814.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  815.         while(!$options_values->EOF) {
  816.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  817.             $options_values->MoveNext();
  818.         }
  819. ?>
  820.                   </select>&nbsp;</td>
  821.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_PRODUCT; ?><br /><?php echo zen_draw_products_pull_down_attributes('product_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  822.  
  823.                   <td align="center" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  824.                   </form>
  825.                 </tr>
  826.  
  827.               </table></td>
  828.             </tr>
  829.  
  830.             <tr>
  831.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_CATEGORY; ?></td>
  832.             </tr>
  833.             <tr>
  834.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_CATEGORY; ?></td>
  835.             </tr>
  836.             <tr class="dataTableHeadingRow">
  837.               <td><table border="0" cellspacing="0" cellpadding="2">
  838.                 <tr class="dataTableHeadingRow">
  839.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=2&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  840.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  841. <?php
  842.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  843.         while(!$options_values->EOF) {
  844.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  845.             $options_values->MoveNext();
  846.         }
  847. ?>
  848.                   </select>&nbsp;</td>
  849.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_CATEGORY; ?><br /><?php echo zen_draw_products_pull_down_categories('category_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  850.  
  851.                   <td align="lef" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  852.                   </form>
  853.                 </tr>
  854.  
  855.               </table></td>
  856.             </tr>
  857.  
  858.             <tr>
  859.               <td class="main"><?php echo TEXT_COMMENT_OPTION_VALUE_ADD_ALL; ?></td>
  860.             </tr>
  861. <!-- eof: add all option values to products with current Option Name -->
  862.  
  863.             </table>
  864.           </td>
  865.         </tr>
  866.    </table>
  867. <!-- ADD - additional features eof //-->
  868.  
  869.   <table>
  870.     <tr>
  871.       <td colspan="4"><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  872.     </tr>
  873.   </table>
  874.  
  875. <!-- DELETE - additional features //-->
  876.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  877.       <tr>
  878.         <td width="100%">
  879.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  880.  
  881. <!-- bof: delete all option values to products with current Option Name -->
  882.             <tr>
  883.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_ALL; ?></td>
  884.             </tr>
  885.             <tr>
  886.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_ALL; ?></td>
  887.             </tr>
  888.             <tr class="dataTableHeadingRow">
  889.               <td><table border="0" cellspacing="0" cellpadding="2">
  890.                 <tr class="dataTableHeadingRow">
  891.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=0&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  892.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  893. <?php
  894.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  895.         while(!$options_values->EOF) {
  896.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  897.             $options_values->MoveNext();
  898.         }
  899. ?>
  900.                   </select>&nbsp;</td>
  901.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  902.                   </form>
  903.                 </tr>
  904.  
  905.               </table></td>
  906.             </tr>
  907.  
  908.             <tr>
  909.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_PRODUCT; ?></td>
  910.             </tr>
  911.             <tr>
  912.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_PRODUCT; ?></td>
  913.             </tr>
  914.             <tr class="dataTableHeadingRow">
  915.               <td><table border="0" cellspacing="0" cellpadding="2">
  916.                 <tr class="dataTableHeadingRow">
  917.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=1&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  918.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  919. <?php
  920.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  921.         while(!$options_values->EOF) {
  922.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  923.             $options_values->MoveNext();
  924.         }
  925. ?>
  926.                   </select>&nbsp;</td>
  927.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_PRODUCT; ?><br /><?php echo zen_draw_products_pull_down_attributes('product_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  928.  
  929.                   <td align="center" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  930.                   </form>
  931.                 </tr>
  932.  
  933.               </table></td>
  934.             </tr>
  935.  
  936.             <tr>
  937.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_CATEGORY; ?></td>
  938.             </tr>
  939.             <tr>
  940.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_CATEGORY; ?></td>
  941.             </tr>
  942.             <tr class="dataTableHeadingRow">
  943.               <td><table border="0" cellspacing="0" cellpadding="2">
  944.                 <tr class="dataTableHeadingRow">
  945.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=2&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  946.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  947. <?php
  948.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  949.         while(!$options_values->EOF) {
  950.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  951.             $options_values->MoveNext();
  952.         }
  953. ?>
  954.                   </select>&nbsp;</td>
  955.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_CATEGORY; ?><br /><?php echo zen_draw_products_pull_down_categories('category_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  956.  
  957.                   <td align="lef" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  958.                   </form>
  959.                 </tr>
  960.  
  961.               </table></td>
  962.             </tr>
  963.  
  964.             <tr>
  965.               <td class="main"><?php echo TEXT_COMMENT_OPTION_VALUE_DELETE_ALL; ?></td>
  966.             </tr>
  967. <!-- eof: delete all option values to products with current Option Name -->
  968.  
  969.             </table>
  970.           </td>
  971.         </tr>
  972.    </table>
  973. <!-- DELETE - additional features eof //-->
  974.  
  975.  
  976.   <table>
  977.     <tr>
  978.       <td colspan="4"><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  979.     </tr>
  980.   </table>
  981.  
  982.  
  983. <!-- COPY - additional features //-->
  984.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  985.       <tr>
  986.         <td width="100%">
  987.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  988.  
  989. <!-- bof: copy all option values to another Option Name -->
  990.             <tr>
  991.               <td class="main"><?php echo TEXT_OPTION_VALUE_COPY_ALL; ?></td>
  992.             </tr>
  993.             <tr>
  994.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_COPY_ALL; ?></td>
  995.             </tr>
  996.             <tr class="dataTableHeadingRow">
  997.               <td><table border="0" cellspacing="0" cellpadding="2">
  998.                 <tr class="dataTableHeadingRow">
  999.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=copy_options_values' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  1000.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION_FROM; ?><br /><select name="options_id_from">
  1001. <?php
  1002.         $options_values_from = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  1003.         while(!$options_values_from->EOF) {
  1004.             echo "\n" . '<option name="' . $options_values_from->fields['products_options_name'] . '" value="' . $options_values_from->fields['products_options_id'] . '">' . $options_values_from->fields['products_options_name'] . '</option>';
  1005.             $options_values_from->MoveNext();
  1006.         }
  1007. ?>
  1008.                   </select>&nbsp;</td>
  1009.                   <td class="dataTableHeadingContent" width="75">&nbsp;</td>
  1010.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION_TO; ?><br /><select name="options_id_to">
  1011. <?php
  1012.         $options_values_to = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" .(int) $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . (int)PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  1013.         while(!$options_values_to->EOF) {
  1014.             echo "\n" . '<option name="' . $options_values_to->fields['products_options_name'] . '" value="' . $options_values_to->fields['products_options_id'] . '">' . $options_values_to->fields['products_options_name'] . '</option>';
  1015.             $options_values_to->MoveNext();
  1016.         }
  1017. ?>
  1018.                   </select>&nbsp;</td>
  1019.  
  1020.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  1021.                   </form>
  1022.                 </tr>
  1023.               </table></td>
  1024.             </tr>
  1025. <!-- eof: copy all option values to another Option Name -->
  1026.             </table>
  1027. <?php } // show copier features ?>
  1028.           </td>
  1029.         </tr>
  1030.    </table>
  1031.  
  1032.  
  1033.  
  1034.  
  1035. <!-- body_text_eof //-->
  1036. <!-- footer //-->
  1037. <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
  1038. <!-- footer_eof //-->
  1039. </body>
  1040. </html>
  1041. <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  1042.  


cron