Доска объявлений модификация ТДС

#
Доска объявлений модификация ТДС
Нужно организовать добавление товаров с кабинета пользователей. /shop/add/ Как правильно нужно модифицировать ТДС доски объявлений, что бы при заходе на эту страницу отображалась форма по добавления объявления только зарегистрированным пользователям?  
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Доска объявлений модификация ТДС
<a onclick="if (document.getElementById('AddItemForm').innerHTML == '') sendBackgroundRequest('{/shop/path}?action=show_form_add_item&amp;group_id=36', 'get', callbackfunction_showFormAddItem); else cr('AddItemForm'); return false;" href="javascript:void(0)">Добавить объект</a>


Объясните на пальцах как работает этот скрипт? От куда он подтягивает форму для добавления объекта?
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Доска объявлений модификация ТДС
Форму он подтягивает аяксом с сервера. Код для ее формирования находится на вкладке "Настройки страницы" ТДС "Доска объявлений", и начинается он с кода
// Обработка AJAX-запроса при формирвоании формы для добавления объявления
if (isset ($_REQUEST['action']) && $_REQUEST['action'] == 'show_form_add_item' && isset ($_REQUEST['group_id']))
{
а заканчивается кодом

   $form_add_advertisement = ob_get_clean();

   $JsHttpRequest = new JsHttpRequest('UTF-8');

   $GLOBALS['_RESULT'] = array (
      'result' => $form_add_advertisement
   );

   echo $JsHttpRequest->LOADER;
   exit ();
}

// Обработка добавления объявления
, где "// Обработка добавления объявления" к этой форме уже не относится.

При этом, изначально при загрузке страницы на ней должен быть блок с
id="AddItemForm"
. Прицитированный вами код для действия onclick находит этот блок, и если он пустой то заполняет его аяксом с сервера, как я описал выше. Обработчик ответа, получаемого с сервера на ajax-запрос находится в функции callbackfunction_showFormAddItem() из файла /hostcmsfiles/main.js

А если блок с id="AddItemForm"[/ не пустой, то событие onclick просто переключает его видимость с помощью функции cr() из файла /templates/template1/hostcms.js

Если исходно такого блока нет, то событие onclick ни к какому разумному результату не приводит.
Заказов не беру. Консультирую редко.
#
Re: Доска объявлений модификация ТДС
Ситуация такова: грузиться форма вроде бы все нормально. В настройках ТДС Меняю "Заголовок" на "Другое название". Обновляю страницу и не фига. Компрессия и Кешированние отключены. Почему так... Не могу понять! Все облазил уже, что возможно.
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Доска объявлений модификация ТДС
ferdinant писал(а):
Обновляю страницу и не фига.
Долго думал над глубоким смыслом вашего описания ошибки... Это так загадочно!
Заказов не беру. Консультирую редко.
#
Re: Доска объявлений модификация ТДС
Я надеялся вы умеете читать мысли . Ну не понятно откуда тянется форма!


// Обработка AJAX-запроса при формирвоании формы для добавления объявления
if (isset ($_REQUEST['action']) && $_REQUEST['action'] == 'show_form_add_item' && isset ($_REQUEST['group_id']))
{
   // Формируем html-код формы добавления объявления
   ob_start();

   // Идентификатор текущей группы
   $current_group_id = to_int($_REQUEST['group_id']);

   $Captcha = new Captcha();
   $captcha_key = $Captcha->GetCaptchaID();

   $advertisement_title = '';
   $advertisement_price = '';
   $advertisement_text = '';
   $advertisement_email = '';
   $advertisement_fio = '';
   $advertisement_phone = '';
   $advertisement_elmail = '';
   $advertisement_title = '';
   
   ?><!--<div class="comment">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>-->

<form method="POST" action="./" enctype="multipart/form-data">
<table>
   <tr>
      <td>Название организации<br />
      <input type="text" name="advertisement_title" size="70"
         value="<?php echo $advertisement_title;?>" /></td>
   </tr>
   <tr>
      <td>Цена<br />
      <input type="text" name="advertisement_price" size="70"
         value="<?php echo $advertisement_price;?>" /></td>
   </tr>

   <?php

   // Получаем список валют, используемых в доске объявлений
   $result_currency = $shop->GetAllCurrency();
   ?>
   <tr>
      <td>Валюта<br />
      <select name="advertisement_currency">
      <?php

      while ($row_currency = mysql_fetch_assoc($result_currency))
      {
         ?>
         <option value="<?php echo $row_currency['shop_currency_id'];?>"><?php echo $row_currency['shop_currency_international_name'];?></option>
         <?php
      }
      ?>
      </select></td>
   </tr>
   <tr>
      <td>Текст объявления<br />
      <textarea name="advertisement_text" rows="5" cols="53"><?php echo $advertisement_text;?></textarea>
      </td>
   </tr>

   <tr>
      <td>Фото<br />
      <input type="file" name="advertisement_file" size="59" /></td>
   </tr>

   <tr>
      <td>ФИО<br />
      <input type="text" name="advertisement_fio" size="70"
         value="<?php echo $advertisement_fio;?>" /></td>
   </tr>

   <tr>
      <td>Тел.<br />
      <input type="text" name="advertisement_phone" size="70"
         value="<?php echo $advertisement_phone;?>" /></td>
   </tr>

   <tr>
      <td>E-mail<br />
      <input type="text" name="advertisement_email" size="70"
         value="<?php echo $advertisement_email;?>" /></td>
   </tr>


   <?php



   // Получаем список дополнительных свойств группы магазина
   $group_propertys_result = $shop->GetPropertiesOfGroup($current_group_id, false, $current_shop_id);

   $count_group_propertys = count($group_propertys_result);

   // Для группы существуют доп. свойства
   if ($count_group_propertys)
   {
      // В цикле получаем подробную информацию о дополнительных свойствах группы
      for ($i = 0; $i < $count_group_propertys; $i++)
      {
         $item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);
                        printe_r($item_property);
         if ($item_property)
         {
            if (($item_property['shop_list_of_properties_type'] != 2
            || $item_property['shop_list_of_properties_type'] == 2 && class_exists('lists')))
            {
               ?><tr><td><?php
               switch ($item_property['shop_list_of_properties_type'])
               {
                  case 0 : // Строка
                  case 3 : // Большое текстовое поле
                  case 4 : // Визуальный редактор
                  case 5 : // Дата
                  case 6 : // Дата-время
                     {
                        echo $item_property['shop_list_of_properties_name'];
                        ?> <br />
                        <input type="text" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="70" value="<?php echo htmlspecialchars(to_str($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))?>" />
                           <?php

                           break;
                     }

                  case 1 : // Файл
                     {
                        echo $item_property['shop_list_of_properties_name'];
                        ?> <br />
                        <input type="file" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="59" /> <?php
                        break;
                     }
                  case 2 : // Список
                     {
                        if (class_exists('lists'))
                        {
                           $list = & singleton('lists');
                           $list_result = $list->SelectListsItems($item_property['lists_id']);

                           if ($list_result)
                           {
                              echo $item_property['shop_list_of_properties_name'];
                              ?> <br />
                              <select name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>"><?php

                              while ($list_row = mysql_fetch_assoc($list_result))
                              {
                                 $selected = '';
                                 if ($list_row['lists_items_id'] == to_int($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
                                 {
                                    $selected = ' selected="" ';
                                 }
                                 ?><option value="<?php echo $list_row['lists_items_id']?>" <?php echo $selected?>><?php echo $list_row['lists_items_value']?></option>
                              <?php
                              }
                           ?></select> <?php
                           }
                        }

                        break;
                     }
                  case 7 : // Флажок
                     {
                        if (isset ($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
                        {
                           $checked = ' checked="" ';
                        }
                        else
                        {
                           $checked = '';
                        }
                        ?> <input type="checkbox" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" <?php echo $checked?> /> <?php
                           echo $item_property['shop_list_of_properties_name'];
                           break;
                     }
                  default :
                     {
                        echo $item_property['shop_list_of_properties_name'];
                        ?> <br />
                        <input type="text" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="70" /> <?php
                           break;
                     }
               }
               ?></td></tr><?php
            }
         }
      }
   }
   ?>
   <tr>
      <td>
      <div style="clear: both; padding-top: 3px;">Контрольные цифры:</div>
      <div style="float: left"><img style="border: 1px solid #000000"
         src="/captcha.php?get_captcha=<?php echo $captcha_key?>&amp;height=30&amp;width=100"
         title="Код подтверждения" name="captcha" /></div>
      <div id="captcha" style="clear: both;"><img style="border: 0px"
         src="/hostcmsfiles/images/refresh.gif" /> <a
         href="javascript:void(0);"
         onclick="ReNewCaptcha(<?php echo $captcha_key?>, 30);return false;">Показать
      другое число</a></div>
      <div style="float: left; margin-left: 5px;"><input type="text"
         name="captcha_keystring" /> <input type="hidden" name="captcha_key"
         value="<?php echo $captcha_key?>" size="15" /></div>
      <div id="captcha" style="clear: both;">Введите число, которое указано
      выше.</div>
      </td>
   </tr>
   <tr>
      <td><input type="submit" name="add_advertisement" value="Отправить"
         onclick="return AjaxSendForm(callbackfunction_SendFormItem, '', this)" /></td>
   </tr>
</table>
</form>
<!--</div>-->
   <?php

   $form_add_advertisement = ob_get_clean();

   $JsHttpRequest = new JsHttpRequest('UTF-8');

   $GLOBALS['_RESULT'] = array (
      'result' => $form_add_advertisement
   );

   echo $JsHttpRequest->LOADER;
   exit ();
}


Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Доска объявлений модификация ТДС
Ну тут совершенно очевидно, что форма на скриншоте и процитированный код никак не связаны. Начнем с того, что порядок полей в коде и на картинке не совпадают
Тогда есть вероятность, что данная форма генерируется в том же самом xsl-шаблоне, из которого вы процитировали обработчик события onclick во втором сообщении. Поскольку этот самый обработчик совершенно не исключает того что форма уже будет существовать не странице, и запрашивать ее с сервера не надо.

Это, впрочем, только предположение, в демо-версии в этом шаблоне сейчас никакой формы нет. Возможно она была в этом шаблоне в прошлых версиях, и у вас как раз-таки старый шаблон, с формой. Или у вас уже внесены какие-то изменения в ТДС и XSL, о которых я не могу догадатся...
Заказов не беру. Консультирую редко.
#
Re: Доска объявлений модификация ТДС
Да это какая-то барабашка 100000% ! Я перепроверил в 5 браузерах Chrome, Opera, Mazilla, Safari и даже в ослике на момент может где-то что-то. XSL файл стандартный.
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Доска объявлений модификация ТДС
ferdinant, ну чудес же не бывает!
У вас запрос за получением формы отправляется к совершенно другому узлу структуры
Заказов не беру. Консультирую редко.
#
Re: Доска объявлений модификация ТДС
Такой еще вопрос ФИО, телефон и мыло - это дополнительные свойства в стандартных объявлениях?
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
Авторизация