[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文件
文件大小: 63.88 KiB
MD5: cee0ee52b215b6a1da3ead6492f6f6b3

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


cron