Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

0 Пользователей и 1 Гость просматривают эту тему.
  • 504 Ответов
  • 33320 Просмотров
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну как видите как я и писал у вас выходит что данные не приходят..
сделайте форму методом get в action формы напишите "<?php echo JRoute::_('index.php')?>"

вместо этого:
<input type="hidden" name="type" value="" />
<input type="hidden" name="dtfrom" value="" />
<input type="hidden" name="dtto" value="" />
<input type="hidden" name="task" value="documc.work" />
<?php echo JHtml::_('form.token'); ?>

написать это:
<input type="hidden" name="option" value="com_mfo" />
<input type="hidden" name="view" value="documc" />
<input type="hidden" name="dtfrom" value="" />
<input type="hidden" name="dtto" value="" />
<input type="hidden" name="loans" value="<?php echo $loan; ?>" />
<input type="hidden" name="list" value="<?php echo $list; ?>" />

*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Теперь в полях дата стоит текущая и не меняется. Список операций пуст.
реквест:
Array ( [datepicker1] => 28.03.2013 [datepicker2] => 31.10.2013 [option] => com_mfo [view] => documc [dtfrom] => 28.03.2013 [dtto] => 31.10.2013 [loans] => ЗВ/31/28.03.2013 [ list] => 0 [967fe3561bf603f9721c965cd45d2a88] => 1 [format] => HTML [Itemid] => 128 )
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
В смысле текущая? У вас же вот пришли даты 
[datepicker1] => 28.03.2013 [datepicker2] => 31.10.2013
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
т.о. данные теперь приходят:
    $dtfrom = JFactory::getApplication()->input->getString('dtfrom');
    $dtto = JFactory::getApplication()->input->getString('dtto');
    $dtmin = substr($dtfrom,6,4).'-'.substr($dtfrom,3,2).'-'.substr($dtfrom,0,2);
    $dtmax = substr($dtto,6,4).'-'.substr($dtto,3,2).'-'.substr($dtto,0,2);
    print_r('1:'.$dtmin.'<br />2:'.$dtmax.'<br />');

1:2013-03-28
2:2013-10-31
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
  protected function getListQuery()
  {
    $ulogin = JFactory::getUser()->username;
    $loan = JFactory::getApplication()->input->getString('loan', '');
    $dtfrom = JFactory::getApplication()->input->getString('dtfrom');
    $dtto = JFactory::getApplication()->input->getString('dtto');
    $dtmin = substr($dtfrom,6,4).'-'.substr($dtfrom,3,2).'-'.substr($dtfrom,0,2);
    $dtmax = substr($dtto,6,4).'-'.substr($dtto,3,2).'-'.substr($dtto,0,2);
    print_r('1:'.$dtmin.'<br />2:'.$dtmax.'<br />');
    //print_r($_REQUEST);

    $db = JFactory::getDBO();
   
    if (!$dtmin or !$dtmax) {
      $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
      $item = $db->setQuery($query)->loadRow();
      $dtmin = $item[0];
      $dtmax = $item[1];
    }

    $query = $db->getQuery(true);
    $query->select('odate, docname, adebet, acredit, pdebet, pcredit, cdebet, ccredit, sdebet, scredit');
    $query->from('#__mfo_docums');
    $query->where('client = '.$db->quote($ulogin));
    $query->where('loan = '.$db->quote($loan));
    $query->where('odate >= '.$db->quote($dtmin));
    $query->where('odate <= '.$db->quote($dtmax));
    $query->order('odate, id');
    return $query;
  }

А после сабмита  в полях по факту текущая дата, вывод таблицы - пустой, хотя даты в запрос пришли, и они корректны:
1:2013-03-28
2:2013-10-31
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Кстати зачем вам это UpdateFilter = function()
  {
    var form = document.getElementById('adminForm');
    jQuery('#loading').css('display', 'block');
    form.dtfrom.value = form.datepicker1.value;
    form.dtto.value = form.datepicker2.value;
    form.submit();
  };
и это

<input type="hidden" name="dtfrom" value="" />
<input type="hidden" name="dtto" value="" />
?!
Это же масло масляное в простонародье именуемое г о в н о кодом )
у вас же отсылается из фомры datepicker1 и datepicker2, зачем вы присваиваете их значения полям  
form.dtfrom.value = form.datepicker1.value;
form.dtto.value = form.datepicker2.value;
Принимайте сразу с datepicker1  или datepicker2, либо дайте datepicker1  имя dtfrom а datepicker2 имя dtto, и скрытые поля удалите!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
а если
 $query->where( 'odate  BETWEEN ' . $db->quote( $dtmin). ' AND ' . $db->quote( $dtmax) )
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ошибка была здесь
<input type="hidden" name="loan" value="<?php echo $loan; ?>" />
name=loan, а не loans :)

Сейчас скрипт служит скорее для jQuery('#loading').css('display', 'block'); - показать выполнение какой-либо работы.

<input type="hidden" name="dtfrom" value="" />
<input type="hidden" name="dtto" value="" />
это нужно было для post, уже убрал

Цитировать
Принимайте сразу с datepicker1  или datepicker2, либо дайте datepicker1  имя dtfrom а datepicker2 имя dtto, и скрытые поля удалите!
Да, поправлю.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
а если
 $query->where( 'odate  BETWEEN ' . $db->quote( $dtmin). ' AND ' . $db->quote( $dtmax) )
Тоже попробую, имхо. это быстрее работает (во всяком случае, на firebird выполняет это быстрее, не знаю, как мускул)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В общем, фильтр применяется, но в полях всегда отображаются значения $dtmin и $dtmax.
Решил ввести 2 скрытых доп.поля для хранения дат примененного фильтра, пытаюсь отобразить даты в основных видимых полях, но поля остаются пустыми, хотя фильтр работает, если в них выбрать даты:
Код: php
<?php
$loan = JFactory::getApplication()->input->getString('loan', '');
$list = JFactory::getApplication()->input->getString('list', '0');

$db =JFactory::getDBO();
$query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
$item_minmax = $db->setQuery($query)->loadRow();
$dtmin = $item_minmax[0];
$dtmax = $item_minmax[1];
?>

<script type="text/javascript">
  UpdateFilter = function()
  {
    var form = document.getElementById('adminForm');
    form.dtmin.value = form.dtfrom.value;
    form.dtmax.value = form.dtto.value;
    form.submit();
  };
</script>

  <form action="<?php echo JRoute::_('index.php'/*?option=com_mfo&view=documc&loan='.$loan.'&list='.$list*/); ?>" method="get" name="adminForm" id="adminForm" class="form-horizontal">
    <div>
      <input type="hidden" name="option" value="com_mfo" />
      <input type="hidden" name="view" value="documc" />
      <input type="hidden" name="loan" value="<?php echo $loan; ?>" />
      <input type="hidden" name="list" value="<?php echo $list; ?>" />
      <input type="hidden" name="dtmin" value="" />
      <input type="hidden" name="dtmax" value="" />
      <?php echo JHtml::_('form.token'); ?>
    </div>

    <div class="control-group">
      <div class="controls">
        <script>jQuery(function(){
          jQuery("#dtfrom").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtfrom").datepicker(jQuery.datepicker.regional["ru"]);
          if (jQuery("#dtmin").value == "")
            {jQuery("#dtmin").value = "<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>";}
          jQuery("#dtfrom").datepicker("setDate",jQuery("#dtmin").value);
          jQuery("#dtto").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtto").datepicker(jQuery.datepicker.regional["ru"]);
          if (jQuery("#dtmax").value == "")
            {jQuery("#dtmax").value = "<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>";}
          jQuery("#dtto").datepicker("setDate",jQuery("#dtmax").value);
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="dtfrom" id="dtfrom" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="dtto" id="dtto" readonly>
          <span> <a href="javascript:UpdateFilter()">Применить фильтр</a></span>
        </div>
      </div>
    </div>
  </form>

При этом alert(jQuery("#dtmin").value) после сабмита формы показывает пустую строку, файрбаг показывает, что поле dtmin пустое, хотя в реквесте (из файрбага):
Array
(
    [option] => com_mfo
    [view] => documc
    [loan] => ЗВ/31/28.03.2013
    [ list] => 0
    [dtmin] => 01.06.2013
    [dtmax] => 31.10.2013

    [967fe3561bf603f9721c965cd45d2a88] => 1
    [dtfrom] => 01.06.2013
    [dtto] => 31.10.2013

    [Itemid] =>
)
и визуально dtfrom и dtto ничего не отображают...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В общем, теперь все упирается в js, в котором я не силен...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
1.
Код
<input type="hidden" name="dtmin" value="" />
     <input type="hidden" name="dtmax" value="" />
тут никогда не отобразится значение т.к. Вы его не прописали.
2. jQuery("#dtmin").value пишется jQuery("#dtmin").val()
3. У инпутов выше нет идов чтобы искать их по ним в скрипте.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
3. У инпутов выше нет идов чтобы искать их по ним в скрипте.
А я как идиот думал, что ищет по name...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: html4strict
      <input type="hidden" name="dtmin" id="dtmin" value="" />
      <input type="hidden" name="dtmax" id="dtmax" value="" />
При первоначальном открытии вьюхи сода записываются первоначальные значения, но потом при сабмите не меняются почему-то, и в основные поля попадают первоначальные даты:

Код: javascript
  UpdateFilter = function()
  {
    var form = document.getElementById('adminForm');
    jQuery('#loading').css('display', 'block');
    form.dtmin.value = form.dtfrom.value;
    form.dtmax.value = form.dtto.value;
    form.submit();
  };
Код: php
    <div class="control-group">
      <div class="controls">
        <script>jQuery(function(){
          var form = document.getElementById('adminForm');
          jQuery("#dtfrom").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtfrom").datepicker(jQuery.datepicker.regional["ru"]);
          if (form.dtmin.value == "")
            {form.dtmin.value = "<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>";}     // здесь 28.03.2013, записывается при первоначальном открытии вьюхи
          jQuery("#dtfrom").datepicker("setDate",form.dtmin.value);                          // при сабмите должно записаться 01.06.2013, но остается 28.03.2013
          jQuery("#dtto").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtto").datepicker(jQuery.datepicker.regional["ru"]);
          if (form.dtmax.value == "")
            {form.dtmax.value = "<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>";} // здесь 31.10.2013, записывается при первоначальном открытии вьюхи
          jQuery("#dtto").datepicker("setDate",form.dtmax.value);                          // при сабмите должно записаться 01.10.2013, но остается 31.10.2013
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="dtfrom" id="dtfrom" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="dtto" id="dtto" readonly>
          <span><a href="javascript:UpdateFilter()"> Применить фильтр </a></span>
        </div>
      </div>
    </div>

при этом в реквесте:
Array
(
    [option] => com_mfo
    [view] => documc
    [loan] => ЗВ/31/28.03.2013
    [ list] => 0
    [dtmin] => 01.06.2013
    [dtmax] => 01.10.2013
    [cf73849fb8a742224bfe14d766f2d08d] => 1
    [dtfrom] => 01.06.2013
    [dtto] => 01.10.2013
    [Itemid] =>
)

*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А зачем вы значение по умолчанию пишете в форму?
*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
Тему не читал, только пару последних постов. Поэтому, возможно, "не в тему"...
Цитировать
// при сабмите должно записаться 01.06.2013, но остается 28.03.2013
Сабмит с перезагрузкой страницы? Тогда почему "должно"? При перезагрузке -
Цитировать
// здесь 28.03.2013, записывается при первоначальном открытии вьюхи
если данные c сервера, все опять "первоначально" , так что все правильно. Получайте в поле значение c JInput , если пусто, тогда с JHtml.

js-код... вы бы или на javascript или на jQuery, а то "трасянка"...
Веб-разработка: заказ. Только новая разработка.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А зачем вы значение по умолчанию пишете в форму?
пока сам не знаю. так лучше понять как работает (или как должно работать, по идее)

если данные c сервера, все опять "первоначально" , так что все правильно. Получайте в поле значение c JInput , если пусто, тогда с JHtml.
Так фильтр по данным применяется, и в реквесте видно, что данные в полях имеются нужные,  отображение кривое.

=======================

С Днем Победы!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
js-код... вы бы или на javascript или на jQuery, а то "трасянка"...
Не знаю, как именно будет правильнее, потому и прошу здесь совета. В js я совсем не силен.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В общем, получил желаемое:

<?php
$dtfrom 
JFactory::getApplication()->input->getString('dtfrom''');
$dtto JFactory::getApplication()->input->getString('dtto''');

$db =JFactory::getDBO();
$query 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
$item_minmax $db->setQuery($query)->loadRow();
$dtmin $item_minmax[0];
$dtmax $item_minmax[1];
?>
  <form action="<?php echo JRoute::_('index.php'); ?>" method="get" name="adminForm" id="adminForm" class="form-horizontal">
    <div>
      <input type="hidden" name="dtmin" id="dtmin" value="<?php echo $dtfrom?>" />
      <input type="hidden" name="dtmax" id="dtmax" value="<?php echo $dtto?>" />
    </div>
    
    <div class="control-group">
      <div class="controls">
        <script>jQuery(function(){
          var form = document.getElementById('adminForm');
          jQuery("#dtfrom").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date'$dtmin'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date'$dtmax'd.m.Y'); ?>"});
          jQuery("#dtfrom").datepicker(jQuery.datepicker.regional["ru"]);
          if (jQuery("#dtmin").val() == '') 
            {jQuery("#dtfrom").datepicker("setDate","<?php echo JHtml::_('date'$dtmin'd.m.Y'); ?>");} else
            {jQuery("#dtfrom").datepicker("setDate",jQuery("#dtmin").val());}
          jQuery("#dtto").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date'$dtmin'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date'$dtmax'd.m.Y'); ?>"});
          jQuery("#dtto").datepicker(jQuery.datepicker.regional["ru"]);
          if (jQuery("#dtmax").val() == '') 
            {jQuery("#dtto").datepicker("setDate","<?php echo JHtml::_('date'$dtmax'd.m.Y'); ?>");} else
            {jQuery("#dtto").datepicker("setDate",jQuery("#dtmax").val());}
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="dtfrom" id="dtfrom" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="dtto" id="dtto" readonly>
          <span> <a href="javascript:form.submit()">Apply filter</a></span>
        </div>
      </div>
    </div>
  </form>


Поля и при сабмите и при первоначальном открытии вьюхи отображают нужные даты.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В js две функции (рабочие - сам себе удивляюсь), где перемешаны и чистый js и jQuery:
Код: javascript
  UpdateFilter = function()
  {
    jQuery('#loading').css('display', 'block');
    var form = document.getElementById('adminForm');
    form.submit();
  };

  ClearFilter = function()
  {
    jQuery('#loading').css('display', 'block');
    var form = document.getElementById('adminForm');
    form.dtfrom.value = "<?php echo $dtmin; ?>";
    form.dtto.value = "<?php echo $dtmax; ?>";
    form.submit();
  };

Помогите, пожалуйста, все привести к jquery, чтобы без "трасянок"
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Одно во всем этом плохо: весь реквест в url видно, не есть хорошо всю начинку пользователю отображать
/loans.html?option=com_mfo&view=documc&loan=ЗВ%2F31%2F28.03.2013&list=0&dtmin=&dtmax=&30c18412e3ba8246cb847433f19c2a03=1&dtfrom=16.05.2013&dtto=11.09.2013
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А в чем проблема перевести форму в post?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Одно во всем этом плохо: весь реквест в url видно, не есть хорошо всю начинку пользователю отображать
/loans.html?option=com_mfo&view=documc&loan=ЗВ%2F31%2F28.03.2013&list=0&dtmin=&dtmax=&30c18412e3ba8246cb847433f19c2a03=1&dtfrom=16.05.2013&dtto=11.09.2013
Ну тогда переводить форму в POST и играться с setState
а если не хотите играться с setState то
1. убрать option=com_mfo если вы в этом компоненте делает любые запросы то он и так понимает что это и куда ему нужно!
2. view=documc написать роутер который это должен спрятать ..
3. dtmin, dtmax - пустые переменные, зачем они вообще?
4. 30c18412e3ba8246cb847433f19c2a03=1 - удалите из формы вашей JHTML::_('form.token') у этой опции другое назначение!

Если все правильно сделать то у вас должно остаться что то типа:
/loans.html?loan=ЗВ%2F31%2F28.03.2013&list=0&dtfrom=16.05.2013&dtto=11.09.2013 - а это уже не так страшно выглядит!
« Последнее редактирование: 10.05.2014, 10:15:46 от Istaan »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А в чем проблема перевести форму в post?
Проблема с умением играться с setState - просто не умею, но это только пока: имеется аналогичная вьюха, там просто вывод истории операций идет по другому типу договора, хотя данные из той же таблицы бд, там требуется аналогичная фильтрация по дате операции, вот и буду изучать вариант с post.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
3. dtmin, dtmax - пустые переменные, зачем они вообще?
Не пустые:
Код: html4strict
      <input type="hidden" name="dtmin" id="dtmin" value="<?php echo $dtfrom; ?>" />
      <input type="hidden" name="dtmax" id="dtmax" value="<?php echo $dtto; ?>" />
Уберу эти поля - и в основных поля даты уже не отображаются. Возможно, немного не то и не так делаю, но пока добился работоспособности только так (пост #258).
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: html4strict
      <input type="hidden" name="dtmin" id="dtmin" value="<?php echo $dtfrom; ?>" />
      <input type="hidden" name="dtmax" id="dtmax" value="<?php echo $dtto; ?>" />
Убрал поля и выкрутился следующим образом:
Код: php
        <script>jQuery(function(){
          var form = document.getElementById('adminForm');
          jQuery("#dtfrom").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtfrom").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#dtto").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#dtto").datepicker(jQuery.datepicker.regional["ru"]);
          <?php
            if ($dtfrom == '')
              {echo 'jQuery("#dtfrom").datepicker("setDate","'.$dtmin.'");';} else
              {echo 'jQuery("#dtfrom").datepicker("setDate","'.$dtfrom.'");';}
            if ($dtto == '')
              {echo 'jQuery("#dtto").datepicker("setDate","'.$dtmax.'");';} else
              {echo 'jQuery("#dtto").datepicker("setDate","'.$dtto.'");';}
          ?>
        });</script>

Не знаю только, на сколько так будет правильно, но получить значение php-переменной на js по другому не могу, да и возможно ли?



1. убрать option=com_mfo если вы в этом компоненте делает любые запросы то он и так понимает что это и куда ему нужно!
2. view=documc написать роутер который это должен спрятать ..
Как можно убрать option=com_mfo, если при сабмите формы оно само вставляется? До сабмита url: /component/mfo/?view=documc&loan=ЗВ/31/28.03.2013
А написать роутер самому пока слабо, отложил этот вопрос напоследок.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
а если
 $query->where( 'odate  BETWEEN ' . $db->quote( $dtmin). ' AND ' . $db->quote( $dtmax) )
Работает, только сог-но спецификации ansi sql'92 все условие взял в скобки, да и текст запроса при отладке читабельнее:
Код: php
    $query->where('(client = '.$db->quote($ulogin).')');
    $query->where('(loan = '.$db->quote($loan).')');
    $query->where('(odate between '.$db->quote($dtmin).' and '.$db->quote($dtmax).')');
*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
В js две функции (рабочие - сам себе удивляюсь), где перемешаны ...
Код: php
$doc = JFactory::getDocument();
$jsByAlekVolsk = '
  jQuery(function($) {
    UpdateFilter = function() {
      $("#loading").css("display", "block");
      $("#adminForm").submit();
    };
    ClearFilter = function() {
      $("#loading").css("display", "block");
      $("#dtfrom").val( " '. $dtmin .' " );
      $("#dtto").val( " '. $dtmax .' " );
      $("#adminForm").submit();
    };
  });
';
$doc->addScriptDeclaration ($jsByAlekVolsk);
Опять тему не читал, много очень. Исходил из "автономности" этого вашего кода. Но это ведь не так. Поэтому наверняка что-то лишнее написал. Надеюсь, разберетесь, что куда.
Веб-разработка: заказ. Только новая разработка.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
fsv, все работает, все как надо, премного благодарен, +
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В компоненте, в /tables/, каждое объявление JTable должно быть в своем файле, или их можно объединить в один? Если первое, как правильно, по mvc называть имена файлов?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться