Активация чекбоксов в просмотре заказов

Тема в разделе "Shop-script", создана пользователем GoldMiner, 30 июл 2009.

Статус темы:
Закрыта.
Модераторы: kadurinho
  1. GoldMiner

    GoldMiner Создатель

    Регистр.:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    2
    Хотелось бы для удобства реализовать следующую фишку в SS premium:

    Захожу в администрирование -> справочник заказов. Здесь по умолчанию выбран пункт "Поиск заказа по номеру:". Я искать по номеру не хочу, хочу просмотреть список заказов со статусом "Новый". Для этого мне нужно сначала кликнуть на пункт "Показывать заказы в статусе:", а потом уже становятся активными чекбоксы для выбора статуса заказа.

    Можно ли сделать так, чтобы чекбоксы были активными сразу, то есть не нужно было сначала кликать на пункт "Показывать заказы в статусе:"

    Спасибо за внимание :)
     
  2. Кошка

    Кошка Создатель

    Регистр.:
    25 апр 2008
    Сообщения:
    42
    Симпатии:
    13
    Вообще в templates/backend/custord_new_orders.tpl.html должно быть нечто типа

    Код:
    	{if $order_statuses}
    	<br />
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByStatusID"
    		{if $order_search_type == 'SearchByStatusID' || [B][U]$order_search_type == null[/U][/B]}checked="checked"{/if}
    		onclick="order_search_typeClickHandler()" id="id_order_search_type2" /><label for="id_order_search_type2"> {$smarty.const.ADMIN_SHOW_ORDER_IN_STATUS}</label>:
    
    		{section name=i loop=$order_statuses}
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input class="checknomarging" type="checkbox" name="checkbox_order_status_{$order_statuses[i].statusID}" id="id_checkbox_order_status_{$order_statuses[i].statusID}"
    		{if $order_statuses[i].selected == 1} checked{else}{if $order_statuses[i].statusID == $smarty.const.CONF_NEW_ORDER_STATUS} checked{/if}{/if} value="1" /><label for="id_checkbox_order_status_{$order_statuses[i].statusID}"> {$order_statuses[i].status_name}</label>
    		</div>
    		{/section}
    		<br />
    	{/if}
    Отмеченный кусочек отвечает за то, что при входе в Администрирование->Заказы по умолчанию отмечено "Показывать заказы со статусом".
     
  3. GoldMiner

    GoldMiner Создатель

    Регистр.:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    2
    К сожалению, это не совсем то, что я хотел.

    Хотелось, чтобы при установленной по-умолчанию точке "Поиск заказа по номеру:" я мог нажать на чекбокс "Новый" и точка автоматом перескочила с пункта "Поиск заказа по номеру:" на пункт "Показывать заказы в статусе:".

    Если я сделаю по вашему совету, то по-умолчанию точка будет стоять на пункте "Показывать заказы в статусе:" и для поиска заказа по номеру мне нужно будет сначала кликнуть на точку "Поиск заказа по номеру:", потом кликнуть на поле ввода номера, и потом его ввести. Получается все равно 2 клика, а хочется чтобы был один. :ah:
     
  4. Кошка

    Кошка Создатель

    Регистр.:
    25 апр 2008
    Сообщения:
    42
    Симпатии:
    13
    В файле templates/backend/custord_new_orders.tpl.html в сборке
    Код:
    <form method="get" action="admin.php" name="MainForm">
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByOrderID"
    		{if $order_search_type == 'SearchByOrderID'}
    			checked="checked"
    		{/if}	[B][COLOR="Red"]onclick="order_search_typeClickHandler()"[/COLOR][/B] id="id_order_search_type1" /><label for="id_order_search_type1"> {$smarty.const.ADMIN_ORDER_SEARCH_BY_NUMBER}</label>: 
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input type="text" name="orderID_textbox" value="{$orderID}" />
    		</div>
    	{if $order_statuses}
    	<br />
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByStatusID"
    		{if $order_search_type == 'SearchByStatusID' || $order_search_type == null}checked="checked"{/if}
    		[B][COLOR="Red"]onclick="order_search_typeClickHandler()"[/COLOR][/B] id="id_order_search_type2" /><label for="id_order_search_type2"> {$smarty.const.ADMIN_SHOW_ORDER_IN_STATUS}</label>:
    		{section name=i loop=$order_statuses}
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input class="checknomarging" type="checkbox" name="checkbox_order_status_{$order_statuses[i].statusID}" id="id_checkbox_order_status_{$order_statuses[i].statusID}"
    		{if $order_statuses[i].selected == 1} checked{else}{if $order_statuses[i].statusID == $smarty.const.CONF_NEW_ORDER_STATUS} checked{/if}{/if} value="1" /><label for="id_checkbox_order_status_{$order_statuses[i].statusID}"> {$order_statuses[i].status_name}</label>
    		</div>
    		{/section}
    		<br />
    	{/if}
    	<input type="submit" value="{$smarty.const.ADMIN_SHOW}" name="search" />
    [B][COLOR="Red"]	<script language="JavaScript" type="text/javascript">
    	function order_search_typeClickHandler()
    	{literal}{{/literal}
    		if ( document.MainForm.order_search_type[0].checked )
    		{literal}{{/literal}
    			{section name=i loop=$order_statuses}
    				document.MainForm.checkbox_order_status_{$order_statuses[i].statusID}.disabled = true;
    			{/section}
    			document.MainForm.orderID_textbox.disabled = false;
    		{literal}}{/literal}
    		else if ( document.MainForm.order_search_type[1].checked )
    		{literal}{{/literal}
    			{section name=i loop=$order_statuses}
    				document.MainForm.checkbox_order_status_{$order_statuses[i].statusID}.disabled = false;
    			{/section}
    			document.MainForm.orderID_textbox.disabled = true;						
    		{literal}}{/literal}
    	{literal}}{/literal}
    	order_search_typeClickHandler();
    	</script>[/COLOR][/B]
    
    Меняем
    Код:
    <form method="get" action="admin.php" name="MainForm">
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByOrderID"
    		{if $order_search_type == 'SearchByOrderID'}
    			checked="checked"
    		{/if} id="id_order_search_type1" /><label for="id_order_search_type1"> {$smarty.const.ADMIN_ORDER_SEARCH_BY_NUMBER}</label>: 
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input type="text" name="orderID_textbox" value="{$orderID}" [B][COLOR="Red"]onclick="document.MainForm.order_search_type[0].checked = true;"[/COLOR][/B] />
    		</div>
    	{if $order_statuses}
    	<br />
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByStatusID"
    		{if $order_search_type == 'SearchByStatusID' || $order_search_type == null}checked="checked"{/if}
    		id="id_order_search_type2" /><label for="id_order_search_type2"> {$smarty.const.ADMIN_SHOW_ORDER_IN_STATUS}</label>:
    		{section name=i loop=$order_statuses}
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input class="checknomarging" type="checkbox" name="checkbox_order_status_{$order_statuses[i].statusID}" id="id_checkbox_order_status_{$order_statuses[i].statusID}"
    		{if $order_statuses[i].selected == 1} checked{else}{if $order_statuses[i].statusID == $smarty.const.CONF_NEW_ORDER_STATUS} checked{/if}{/if} value="1" [B][COLOR="Red"]onclick="document.MainForm.order_search_type[1].checked = true;"[/COLOR][/B] /><label for="id_checkbox_order_status_{$order_statuses[i].statusID}"> {$order_statuses[i].status_name}</label>
    		</div>
    		{/section}
    		<br />
    	{/if}
    	<input type="submit" value="{$smarty.const.ADMIN_SHOW}" name="search" />
    Всё что обрамлено <script></script> убираем. Т.е. удаляем функцию order_search_typeClickHandler(), два ее вызова, и цепляем на поле для ввода номера искомого заказа и чекбоксы со статусами заказов обработчики.
    Теперь, если кликнуть на поле для ввода номера, автоматом будет отмечена радиокнопка Поиск по номеру, а если кликнуть по любому из чекбоксов, автоматом будет отмечена радиокнопка Поиск по статусу.
     
  5. GoldMiner

    GoldMiner Создатель

    Регистр.:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    2
    Чекбоксы заработали как надо, но поиск по номеру заказа вообще отключился.. То есть я ввожу номер заказ и он не находится, хотя заказ с таким номером есть.

    Еще заметил, что теперь при выводе списка заказов с одинаковым статусом в поле ввода номера заказа появляется ноль.
     
  6. Кошка

    Кошка Создатель

    Регистр.:
    25 апр 2008
    Сообщения:
    42
    Симпатии:
    13
    Данное изменение никак сам алгоритм поиска заказа не затрагивает.
    На оригинальной сборке все работает.
    Может что-то намодифицировали в custord_new_orders.php ? Попробуйте заменить его файлом из сборки.
    Чтобы не появлялся 0 в поле вводе заказа при поиске по статусу, меняем:
    Код:
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByOrderID"
    		{if $order_search_type == 'SearchByOrderID'}
    			checked="checked"
    		{/if} id="id_order_search_type1" /><label for="id_order_search_type1"> {$smarty.const.ADMIN_ORDER_SEARCH_BY_NUMBER}</label>: 
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input type="text" name="orderID_textbox" [COLOR="Red"]value="{$orderID}" [/COLOR]onclick="document.MainForm.order_search_type[0].checked = true;" />
    		</div>
    на
    Код:
    	<input class="inlradio" type="radio" name="order_search_type" value="SearchByOrderID"
    		{if $order_search_type == 'SearchByOrderID'}
    			checked="checked"
    		{/if} id="id_order_search_type1" /><label for="id_order_search_type1"> {$smarty.const.ADMIN_ORDER_SEARCH_BY_NUMBER}</label>: 
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input type="text" name="orderID_textbox" [COLOR="Red"]value="{if $order_search_type == 'SearchByOrderID'}{$orderID}{/if}"[/COLOR] onclick="document.MainForm.order_search_type[0].checked = true;" />
    		</div>
    Если нужно, чтобы постоянно сам по себе не отмечался чекбокс со статусом "Новый", меняем:
    Код:
    		{section name=i loop=$order_statuses}
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input class="checknomarging" type="checkbox" name="checkbox_order_status_{$order_statuses[i].statusID}" id="id_checkbox_order_status_{$order_statuses[i].statusID}"
    		[COLOR="Red"]{if $order_statuses[i].selected == 1} checked{else}{if $order_statuses[i].statusID == $smarty.const.CONF_NEW_ORDER_STATUS} checked{/if}{/if}[/COLOR] value="1" onclick="document.MainForm.order_search_type[1].checked = true;" /><label for="id_checkbox_order_status_{$order_statuses[i].statusID}"> {$order_statuses[i].status_name}</label>
    		</div>
    		{/section}
    на
    Код:
    		{section name=i loop=$order_statuses}
    		<div style="margin-left:40px;margin-top:3px;margin-bottom:3px;">
    		<input class="checknomarging" type="checkbox" name="checkbox_order_status_{$order_statuses[i].statusID}" id="id_checkbox_order_status_{$order_statuses[i].statusID}"
    		[COLOR="Red"]{if $order_statuses[i].selected == 1} checked{/if}[/COLOR] value="1" onclick="document.MainForm.order_search_type[1].checked = true;" /><label for="id_checkbox_order_status_{$order_statuses[i].statusID}"> {$order_statuses[i].status_name}</label>
    		</div>
    		{/section}
     
    GoldMiner нравится это.
  7. GoldMiner

    GoldMiner Создатель

    Регистр.:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    2
    Спасибо, работает.

    Нашел почему "отключился" поиск. На самом деле он не отключился, он теперь не реагирует на клавишу "Enter". То есть если я ввожу номер заказа и нажимаю на клавиатуре "Enter", то получаю результат "Заказы не найдены". А если я нажму мышкой на кнопку "Показать", то заказ находится.
     
  8. Кошка

    Кошка Создатель

    Регистр.:
    25 апр 2008
    Сообщения:
    42
    Симпатии:
    13
    Даже уже и не знаю, что сказать :nezn:

    У меня работает. И по клавише "Enter", и по кнопке "Показать". И на оригинальной сборке, и на переработанной.

    Разве что дайте весь custord_new_orders.tpl.html, попробую, может у меня тоже работать не будет...
     
Статус темы:
Закрыта.