Кнопка вида "image" для комментариев

#
Кнопка вида "image" для комментариев
Столкнулся с интересной проблемой.
Решил заменить кнопку "Опубликовать" на кнопку с картинкой.
Вот код
<input id="submit_email{$comment_id}" type="submit" name="submit_comment" value="Опубликовать"/>

При замене type="submit" на type="image" комментарий не добавляется.
Открыл htmlbook, читаю
image
Поле с изображением. При нажатии на рисунок данные формы отправляются на сервер.

Не пойму, где копать...
#
Re: Кнопка вида "image" для комментариев
Уважаемый вы так код прописываете?

type="image" src="submit.gif"


Или только type меняете ? ? ? ...

( гарантирую 1000...% мой пример кода работает )
Модератор
#
Re: Кнопка вида "image" для комментариев
ironwayru,
распечатайте массив с данными, который приходит. При установке кнопки-картинки передается не ее имя, а x и y, если висит обработчик на имя кнопки, то он перестанет работать, замените его.
#
Re: Кнопка вида "image" для комментариев
HostCMS писал(а):
распечатайте массив с данными, который приходит. При установке кнопки-картинки передается не ее имя, а x и y, если висит обработчик на имя кнопки, то он перестанет работать, замените его.

Вам конечно виднее, но я вас например не понял - я просто прописал в шаблоне на форму комментов type="image" и путь к картинке - всё работает, причём тут оси ?
#
Re: Кнопка вида "image" для комментариев
dimidos писал(а):
Уважаемый вы так код прописываете?

Я не самый большой специалист, но насколько я понимаю, срс на отправку формы не должен влиять. В данном случае изначально код был, конечно же, с срс. Но после того, как я увидел, что он не работает, я взял полностью стандартный код и поменял только тайп.
Отсюда я сделал вывод, что дело в тайпе и поэтому написал только его здесь, чтобы не усложнять.


HostCMS, а не подскажете, на что у вас висит обработчик? На тайп? Ведь имя-то я не меняю... Только тайп и все...
Модератор
#
Re: Кнопка вида "image" для комментариев
ironwayru писал(а):

Я не самый большой специалист, но насколько я понимаю, срс на отправку формы не должен влиять.
А он и не влияет, меняете то Вы type. У нас нажмите на поиск и посмотрите.
ironwayru,
В стандартном обработчике вообще нет проверки на нажатие кнопки, идет просто получение текста из другого поля. Покажите код настроек и типовой.
#
Re: Кнопка вида "image" для комментариев
У меня вобщем-то стандартный код типовой...
ТДС "Интернет-магазин"
// Если добавление комментария
   if (isset($_POST['submit_comment']) && !empty($GLOBALS['shop_item_path']['item']))
   {
      /* Проверяем CAPCHA*/
      $Captcha = new Captcha();

      $xmlData = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
      $xmlData .= '<document>' . "\n";

      if ($site_user_id > 0
      || $Captcha->ValidCaptcha(to_str($_POST['captcha_key']), to_str($_POST['captcha_keystring'])))
      {
         $param['shop_items_catalog_item_id'] = $GLOBALS['shop_item_path']['item'];
         $param['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);

         $param['shop_comment_user_email'] = to_str($_REQUEST['shop_comment_user_email']);
         $param['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
         $param['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
         $param['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
         $param['shop_comment_date_time'] = date("Y-m-d H:i:s");

         /* Активность/неактивность комментария */
         $shop_row = $shop->GetShop($current_shop_id);

         if ($shop_row)
         {
            $param['shop_comment_active'] = to_int($shop_row['shop_comment_active']);
         }
         else
         {
            $param['shop_comment_active'] = false;
         }

         $external_propertys['comment_is_active'] = $param['shop_comment_active'];

         // Если есть модуль "Пользователи сайта", получим текущего пользователя
         if (class_exists('SiteUsers'))
         {
            $SiteUsers = & singleton('SiteUsers');
            $param['site_users_id'] = $SiteUsers->GetCurrentSiteUser();
         }
         else
         {
            $param['site_users_id'] = 0;
         }

         $shop_comment_id = $shop->InsertComment($param);

         // Задан XSL для формирования письма администратору о добавлении комментария к товару
         if (to_str($GLOBALS['LA']['xsl_add_comment_letter_to_admin']) != '')
         {
            // Формируем XML для комментария
            $xmlData .= $shop->GenXml4Comment($shop_comment_id);
            $xmlData .= '</document>' . "\n";

            $xsl = new xsl();
            // Формируем текст письма администратору
            $message = $xsl->build($xmlData, $GLOBALS['LA']['xsl_add_comment_letter_to_admin']);

            // Формат письма - текст
            if (to_int($GLOBALS['LA']['comment_mail_type']) == 0)
            {
               $comment_mail_type = 'text/plain';
            }
            else
            {
               $comment_mail_type = 'text/html';
            }

            $subject = $GLOBALS['MSG_shops']['subject_report_for_comment'];

            $kernel = & singleton('kernel');

            // Получаем e-mail куратора магазина
            $email_to = to_str($shop_row['shop_shops_admin_mail']);

            if (!empty($email_to))
            {
               $kernel->SendMailWithFile($email_to, EMAIL_TO, $subject, $message, array(), $comment_mail_type);
            }
         }
      }
      else
      {
         /* Неправильно введен код изображенный на картинке */
         $external_propertys['error'] = 1;

         /* Запоминаем значения */
         $external_propertys['shop_comment_user_name'] = strip_tags(to_str($_REQUEST['shop_comment_user_name']));
         $external_propertys['shop_comment_user_email'] = strip_tags(to_str($_REQUEST['shop_comment_user_email']));
         $external_propertys['shop_comment_subject'] = strip_tags(to_str($_REQUEST['shop_comment_subject']));
         $external_propertys['shop_comment_text'] = strip_tags(to_str($_REQUEST['shop_comment_text']));
         $external_propertys['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
         $external_propertys['shop_comment_date_time'] = date("Y-m-d H:i:s");
      }

Настройки. В Настройках не нашел ничего про комментарии, поэтому привожу весь код
<?php
/* Создаем экземпляр класса магазина (при создании устанавливаем флаг необходимости очистки cookie) */
$shop = new shop(true);

$kernel = & singleton('kernel');

$current_shop_id = to_int($GLOBALS['LA']['shop_id']);

// Обработка скачивания файла электронного товара
if (isset($_GET['download_file']))
{
   $eitem_path = to_str($_GET['download_file']);

   // Получаем заказанный товар с данным путем
   if ($order_item_row = $shop->GetOrderItemByPath($eitem_path))
   {
      // Получаем информацию о заказе
      $order_row = $shop->GetOrder($order_item_row['shop_order_id']);

      if ($order_row)
      {
         $DateClass = new DateClass();

         // Проверяем, доступна ли ссылка (Ссылка доступна в течение суток после оплаты)
         if ($DateClass->DateSqlToUnix($order_row['shop_order_date_of_pay']) > time() - 24 * 60 * 60)
         {
            // Получаем информацию об электронной сущности заказанного товара
            $eitem_row = $shop->GetEitem($order_item_row['shop_eitem_id']);

            if ($eitem_row['shop_eitem_filename'] != '')
            {
               if (class_exists('File'))
               {
                  $File = new File();
                     
                  $ext = $kernel->GetExtension($eitem_row['shop_eitem_filename']);
                  $file_path = CMS_FOLDER . UPLOADDIR . "shop_{$current_shop_id}/eitems/item_catalog_{$eitem_row['shop_items_catalog_item_id']}/{$eitem_row['shop_eitem_id']}.{$ext}";

                  if (is_file($file_path))
                  {
                     $File->Download($file_path, $eitem_row['shop_eitem_filename'], array('content_disposition' => 'attachment'));
                  }

                  unset($File);
               }
            }
         }
      }
   }
}

if(preg_match("^user-(.*)^", end($GLOBALS['URL_ARRAY']), $regs))
{
   // Установка кукис для аффилиат-программы
   setcookie('affiliate_name', $regs[1], time() + 31536000, '/');
   $break_if_path_not_found = false;
}
else
{
   $break_if_path_not_found = true;
}

// получаем для пути ассоциативный массив с id группы и id/url элемента
$GLOBALS['shop_item_path'] = $shop->GetItemPath($current_shop_id, '', $break_if_path_not_found);

/* Если путь существует */
if ($GLOBALS['shop_item_path'])
{
   $group_path = '';

   // получаем массив с деревом от текущей группы до корня
   $mas_groups_to_root = $shop->GetShopGroupsToRoot($GLOBALS['shop_item_path']['group'], $current_shop_id);
$mas_groups_to_root = array_reverse($mas_groups_to_root);

   // получаем данные о группе
   $row_group = $shop->GetGroup($GLOBALS['shop_item_path']['group']);

   // получаем данные из seo - полей для групп
   $seo_title = trim($row_group['shop_groups_seo_title']);
   $seo_description = trim($row_group['shop_groups_seo_description']);
   $seo_keywords = trim($row_group['shop_groups_seo_keywords']);

   // цикл по массиву с деревом для формирования пути по группам
   $count_groups=count($mas_groups_to_root);

   for ($i = $count_groups - 1; $i >= 0; $i--)
   {
      if ($i < $count_groups-1)
      {
         $group_path .= ' &#151; ';
      }

      if (trim($mas_groups_to_root[$i]['shop_groups_seo_title'])=='')
      {
         $group_path .= $mas_groups_to_root[$i]['shop_groups_name'];
      }
      else
      {
         $group_path .= $mas_groups_to_root[$i]['shop_groups_seo_title'];
      }
   }

   $item_name='';

   // Если вывод информационного элемента
   if ($GLOBALS['shop_item_path']['item'])
   {
      // получаем данные о товаре
      $row_item = $shop->GetItem($GLOBALS['shop_item_path']['item']);

      // имя элемента
      $item_name = $row_item['shop_items_catalog_name'];

      // проверяем если seo_title непустой, то в заголовок страницы подставляем его
      if (trim($row_item['shop_items_catalog_seo_title'])!='')
      {
         $item_name = trim($row_item['shop_items_catalog_seo_title']);
      }

      if ($group_path != '')
      {
         $item_name = $item_name. ' &#151; ';
      }
   }

   if (isset($GLOBALS['shop_item_path']['tag_name']) && class_exists('Tag'))
   {
      $oTag = new Tag();
      $tag_row = $oTag->GetTagByPath($GLOBALS['shop_item_path']['tag_name']);
      
      if ($tag_row)
      {
         $tag_name = "Метка: {$tag_row['tag_name']}. ";
      }
   }
   
   // формируем заголовок страницы
   $new_title = to_str($tag_name) . $item_name . $group_path;
}
else
{
   // Элемент/группа не найдены, возвращаем 404 ошибку.
   ShowHeader404();

   // Запрещаем отдавать 200-й заголовок
   if (!defined('IS_ERROR_404'))
   {
      define('IS_ERROR_404', true);
   }
   
   $site = & singleton('site');
   $site_row = $site->GetSite(CURRENT_SITE);

   if ($site_row['site_error404'])
   {
      $structure = & singleton('Structure');

      $structure_id = intval($site_row['site_error404']);
      $structure_row = $structure->GetStructureItem($structure_id);

      // Если тип - страница
      if ($structure_row['structure_type'] == 0)
      {
         $document = & singleton('documents');

         $documents_version_row = $document->GetCurrentDocumentVersion($structure_row['documents_id']);
         $documents_version_id = $documents_version_row['documents_version_id'];

         // Текущая страница
         $kernel->set_current_page(PAGE_DIR . 'documents' . $documents_version_id . '.html');
      }
      elseif ($structure_row['structure_type'] == 1)
      {
         // Текущая страница - модуль
         $kernel->set_current_page(CMS_FOLDER . 'structure/Modules/Module' . $structure_id . '.php');
      }
      else
      {
         /* типовая динамическая страница */
         $lib_id = intval($structure_row['lib_id']);

         /* Получаем параметры типовой динамической страницы */
         $lib = new lib();
         $GLOBALS['LA'] = $lib->LoadLibPropertiesValue($lib_id, $structure_id);

         $kernel->set_current_page(CMS_FOLDER . "lib/lib_$lib_id/lib_$lib_id.php");
      }

      // Шаблон вывода для страницы
      $kernel->set_current_page_data_template($structure_row['data_templates_id']);
   }
   elseif (to_str($_SERVER['REQUEST_URI']) != '/')
   {
      header('Location: /');

      // Прекращаем выполнение
      exit();
   }
}

if (!empty($new_title))
{
   // отображаем группу

   if (!isset($row_item))
   {
      // Заголовок для группы задан
      if (!empty($seo_title))
      {
         $kernel->set_title($seo_title);
      }
      else // Описание для группы не задано
      {
         $kernel->set_title($new_title);
      }

      // Описание для группы задано
      if (!empty($seo_description))
      {
         $kernel->set_description($seo_description);
      }
      else // Описание для группы не задано
      {
         $kernel->set_description($new_title);
      }
      // Ключевые слова для группы заданы

      if (!empty($seo_keywords))
      {
         $kernel->set_keywords($seo_keywords);
      }
      else // Ключевые слова для группы не заданы
      {
         $kernel->set_keywords($new_title);
      }
   }
   else // отображаем элемент
   {
      // Описание для элемента задано
      if (!empty($row_item['shop_items_catalog_seo_title']))
      {
         $kernel->set_title(trim($row_item['shop_items_catalog_seo_title']));
      }
      else  // Описание для элемента не задано
      {
         $kernel->set_title($new_title);
      }

      // Описание для элемента задано
      if (!empty($row_item['shop_items_catalog_seo_description']))
      {
         $kernel->set_description(trim($row_item['shop_items_catalog_seo_description']));
      }
      else  // Описание для элемента не задано
      {
         $kernel->set_description($new_title);
      }

      // Ключевые слова для элемента заданы
      if (!empty($row_item['shop_items_catalog_seo_keywords']))
      {
         $kernel->set_keywords(trim($row_item['shop_items_catalog_seo_keywords']));
      }
      else // Ключевые слова для элемента не заданы
      {
         $kernel->set_keywords($new_title);
      }
   }
}

/* Обработка сравнения товаров */
/* Десериализуем массив */
if (isset($_COOKIE['SHOPCOMPARE']))
{
   $compare_items = @unserialize($shop->GetCookie('SHOPCOMPARE'));
   $compare_items = to_array($compare_items);
}
else
{
   $compare_items = array();
}

/* Добавление элементов */
foreach ($_GET as $key => $value)
{
   /* Выбираем из запроса товары, которые нужно добавить в список для сравнения */
   if (preg_match("/compare_id_(\d*)/", $key, $matches))
   {
      $compare_id = to_int($matches[1]);
      /* Проверяем, есть ли этот товар в кукисах для сравнения */
      if (!in_array($compare_id, $compare_items))
      {
         /*Добавляем в массив кукисов*/
         $compare_items[] = $compare_id;
      }
   }
}

/* Удаление выбранного товара из сравнения */
if (isset($_GET['delete_compare']))
{
   foreach ($_GET as $key => $value)
   {
      /* Извлекаем индекс товара, который нужно удалить из сравнения и кукиса */
      if (preg_match("/del_compare_id_(\d*)/", $key, $matches))
      {
         $compare_id = to_int($matches[1]);
         $i = array_search($compare_id, $compare_items);
         if ($i !== false)
         {
            unset($compare_items[$i]);
         }
      }
   }
}

/* Удаление всех сравнений */
if (isset($_GET['delete_all_compare']))
{
   $compare_items = array();
}

/* Устанавливаем кукисы */
if (count($compare_items) > 0)
{
   $shop->SetCookie("SHOPCOMPARE", serialize($compare_items), time() + 31536000, '/');
}
else
{
   $shop->SetCookie("SHOPCOMPARE", '', 0, '/');
   unset($_COOKIE['SHOPCOMPARE']);
}

?>
#
Re: Кнопка вида "image" для комментариев
Для кнопки картинки в стандартной типовой надо прописать вместо
if (isset($_POST['submit_comment']) && !empty($GLOBALS['shop_item_path']['item']))
такую проверку:
if ((isset($_POST['submit_comment.x']) || isset($_POST['submit_comment_x'])) && !empty($GLOBALS['shop_item_path']['item']))


Вариант с "_x" - для IE, а ".x" - для всех нормальных браузеров. Или наоборот, не помню точно, но помню что для универсальности надо проверять на оба значения.
Заказов не беру. Консультирую редко.
#
Re: Кнопка вида "image" для комментариев
Kotoff, и как всегда огромное спасибо!!! И в нормальных браузерах, и в ие работает! Супер!
#
Re: Кнопка вида "image" для комментариев
ironwayru, пожалуйста.
Заказов не беру. Консультирую редко.
Авторизация