Перейти к содержимому


Фото
- - - - -

Отдельный доступ Курьеру

доступ курьер

  • Чтобы отвечать, сперва войдите на форум
9 ответов в теме

#1 DarAmal

DarAmal
  • Пользователь
  • 763 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 21.08.2016 - 20:52

Приветствую всех!

 

Друзья, такая ситуация.

Стало необходимо сделать отдельный доступ для Курьера.

 

Чтоб он смог войти под свой логин и только в раздел "Приняты" в Заказах и что самое главное -

не мог редактировать принятые заказы, а лишь только нажав на иконку Принтера для просмотра самой Квитанции.

 

Как такое реализовать? Где копать и вообще любые ценные Ваши советы.

 

Спасибо большое!



#2 Noxter

Noxter
  • Забаненый
  • 1 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 21.08.2016 - 21:54

Я бы реализовал через экшены, но тогда нужно переделать всю систему разграничения прав менеджеров.
Такое кого-то давно Wizard (он же Davinci) делал, еще до того как в симпле появилась система разграничения прав.

#3 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 21.08.2016 - 22:20

Стало необходимо сделать отдельный доступ для Курьера.
 
Чтоб он смог войти под свой логин и только в раздел "Приняты" в Заказах и что самое главное -
не мог редактировать принятые заказы, а лишь только нажав на иконку Принтера для просмотра самой Квитанции.

 

По-моему, проще всего - сделать в админке новый модуль, переделав текущий модуль заказов и при этом удалив всю ненужную для курьера функциональность. Бесплатно вряд ли кто сделает...



#4 DarAmal

DarAmal
  • Пользователь
  • 763 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 21.08.2016 - 22:23

а нельзя сделать, например, если это Вася, то ему видны такие-то разделы и т.д. ?



#5 Maksclub

Maksclub
  • Фрилансер
  • 1 398 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 21.08.2016 - 23:09

А разве нельзя условиями сделать? В orders.tpl условие для 1 менеджера, если да -- подгрузить данные в виде таблицы, если нет -- грузить как есть.

Для бесплатного решения думаю можно запилить

#6 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 23.08.2016 - 09:30

а нельзя сделать, например, если это Вася, то ему видны такие-то разделы и т.д. ?

 
Конечно, можно.
"если это Вася, то ему видны такие-то разделы" - ставите в админке в нужных местах нужный if
"и т.д."  - и т.д.



#7 DarAmal

DarAmal
  • Пользователь
  • 763 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 23.08.2016 - 21:39

 
Конечно, можно.
"если это Вася, то ему видны такие-то разделы" - ставите в админке в нужных местах нужный if
"и т.д."  - и т.д.

Спасибо большое. Я сделал практически все, только возник последний вопрос.

В общем добавил пользователя с логином: kurier и открыл доступ только к Заказам

далее вписал там, где необходимо в файле orders.tpl и получилось следующее:

{* Вкладки *}
{capture name=tabs}
	{if in_array('orders', $manager->permissions)}
  
    {if $manager->login == 'kurier'}
   <li {if $status==1}class="active"{/if}>
   <a href="{url module=OrdersAdmin status=1 keyword=null id=null page=null label=null}">Приняты</a>
   </li>
   
    {else}
    
	<li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null id=null page=null label=null}">Новые</a></li>
	<li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null id=null page=null label=null}">Приняты</a></li>
	<li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null id=null page=null label=null}">Выполнены</a></li>
	<li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null id=null page=null label=null}">Удалены</a></li>
    
     {/if}
     
	{if $keyword}
	<li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null label=null}">Поиск</a></li>
	{/if}
	{/if}
	{if in_array('labels', $manager->permissions)}
	<li><a href="{url module=OrdersLabelsAdmin keyword=null id=null page=null label=null}">Метки</a></li>
	{/if}
{/capture}

{* Title *}
{$meta_title='Заказы' scope=parent}

{* Поиск *}
<form method="get">
<div id="search">
	<input type="hidden" name="module" value="OrdersAdmin">
	<input class="search" type="text" name="keyword" value="{$keyword|escape}"/>
	<input class="search_button" type="submit" value=""/>
</div>
</form>
	
{* Заголовок *}
<div id="header">
	<h1>{if $orders_count}{$orders_count}{else}Нет{/if} заказ{$orders_count|plural:'':'ов':'а'}</h1>		
	<a class="add" href="{url module=OrderAdmin}" style="{if $manager->login == 'kurier'}display:none;{/if}">Добавить заказ</a>
    <a href="{url module=ExportXLAdmin}" style="float: right; margin-right: 44px; {if $manager->login == 'kurier'}display:none;{/if}" title="Выгрузить все заказы"><img src="./design/images/export_excel.png"></a>
</div>

{if $message_error}
<!-- Системное сообщение -->
<div class="message message_error">
	<span class="text">{if $message_error=='error_closing'}Нехватка некоторых товаров на складе{else}{$message_error|escape}{/if}</span>
	{if $smarty.get.return}
	<a class="button" href="{$smarty.get.return}">Вернуться</a>
	{/if}
</div>
{/if}

{if $orders}
<div id="main_list">
	
	<!-- Листалка страниц -->
	{include file='pagination.tpl'}	
	<!-- Листалка страниц (The End) -->
	
	<form id="form_list" method="post">
	<input type="hidden" name="session_id" value="{$smarty.session.id}">

		<div id="list">		
			{foreach $orders as $order}
            
			<div class="{if $order->paid}green{/if} row
            {foreach $order->labels as $l}
					class="order_label" style="background-color:#{$l->color};" title="{$l->name}{/foreach}">
              
		 		<div class="checkbox cell" {if $manager->login == 'kurier'}style='display:none;'{/if}>
					<input type="checkbox" name="check[]" value="{$order->id}"/>				
				</div>
				<div class="order_date cell">				 	
	 				{$order->date|date} в {$order->date|time}
				</div>
              
				<div class="order_name cell">
					
				<a href="{url module=OrderAdmin id=$order->id return=$smarty.server.REQUEST_URI}">Заказ №{$order->id}</a> 
                {$order->name|escape}
	 				{if $order->note}
	 				<div class="note">{$order->note|escape}</div>
	 				{/if} 	 			
				</div>
              
				<div class="icons cell">
				<a href='{url module=OrderAdmin id=$order->id view=print}'  target="_blank" class="print" title="Печать заказа"></a>
				<a href='#' class=delete title="Удалить" style="{if $manager->login == 'kurier'}display:none;{/if}"></a>
				</div>
				<div class="name cell" style='white-space:nowrap;'>
	 				{$order->total_price|escape} {$currency->sign}
				</div>
				<div class="icons cell" style="{if $manager->login == 'kurier'}display:none;{/if}">
					{if $order->paid}
						<img src='design/images/cash_stack.png' alt='Оплачен' title='Оплачен'>
					{else}
						<img src='design/images/cash_stack_gray.png' alt='Не оплачен' title='Не оплачен'>				
					{/if}			 	
				</div>
				{if $keyword}
				<div class="icons cell">
						{if $order->status == 0}
						<img src='design/images/new.png' alt='Новый' title='Новый'>
						{/if}
						{if $order->status == 1}
						<img src='design/images/time.png' alt='Принят' title='Принят'>
						{/if}
						{if $order->status == 2}
						<img src='design/images/tick.png' alt='Выполнен' title='Выполнен'>
						{/if}
						{if $order->status == 3}
						<img src='design/images/cross.png' alt='Удалён' title='Удалён'>
						{/if}
				</div>
				{/if}
				<div class="clear"></div>
                 
			</div>
			{/foreach}
		</div>
	
		<div id="action" {if $manager->login == 'kurier'}style='display:none;'{/if}>
		<label id='check_all' class="dash_link">Выбрать все</label>
	
		<span id="select">
		<select name="action">
			{if $status!==0}<option value="set_status_0">В новые</option>{/if}
			{if $status!==1}<option value="set_status_1">В принятые</option>{/if}
			{if $status!==2}<option value="set_status_2">В выполненные</option>{/if}
			{foreach $labels as $l}
			<option value="set_label_{$l->id}">Отметить &laquo;{$l->name}&raquo;</option>
			{/foreach}
			{foreach $labels as $l}
			<option value="unset_label_{$l->id}">Снять &laquo;{$l->name}&raquo;</option>
			{/foreach}
			<option value="delete">Удалить выбранные заказы</option>
		</select>
		</span>
	
		<input id="apply_action" class="button_green" type="submit" value="Применить">
		
		</div>
	</form>
	
	<!-- Листалка страниц -->
	{include file='pagination.tpl'}	
	<!-- Листалка страниц (The End) -->
		
</div>
{/if}

<!-- Меню -->
<div id="right_menu">
	
	{if $labels}
	<!-- Метки -->
	<ul id="labels">
		<li {if !$label}class="selected"{/if}><span class="label"></span> <a href="{url label=null}">Все заказы</a></li>
		{foreach $labels as $l}
		<li data-label-id="{$l->id}" {if $label->id==$l->id}class="selected"{/if}>
		<span style="background-color:#{$l->color};" class="order_label"></span>
		<a href="{url label=$l->id}">{$l->name}</a></li>
		{/foreach}
	</ul>
	<!-- Метки -->
	{/if}
	
</div>
<!-- Меню  (The End) -->



{* On document load *}
{literal}
<script>

$(function() {

	// Сортировка списка
	$("#labels").sortable({
		items:             "li",
		tolerance:         "pointer",
		scrollSensitivity: 40,
		opacity:           0.7
	});
	

	$("#main_list #list .row").droppable({
		activeClass: "drop_active",
		hoverClass: "drop_hover",
		tolerance: "pointer",
		drop: function(event, ui){
			label_id = $(ui.helper).attr('data-label-id');
			$(this).find('input[type="checkbox"][name*="check"]').attr('checked', true);
			$(this).closest("form").find('select[name="action"] option[value=set_label_'+label_id+']').attr("selected", "selected");		
			$(this).closest("form").submit();
			return false;	
		}		
	});
	
	// Раскраска строк
	function colorize()
	{
		$("#list div.row:even").addClass('even');
		$("#list div.row:odd").removeClass('even');
	}
	// Раскрасить строки сразу
	colorize();

	// Выделить все
	$("#check_all").click(function() {
		$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
	});	

	// Удалить 
	$("a.delete").click(function() {
		$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
		$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
		$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
		$(this).closest("form").submit();
	});

	// Подтверждение удаления
	$("form").submit(function() {
		if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
			if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
				return false;	
	});
});

</script>
{/literal}

После этого получается, что проходишь авторизацию и попадаешь в Заказы. Убрал все ненужные табы, оставил только Принятые.

 

Теперь самое главное - где и что нужно добавить, чтоб при авторизации логина kurier отобразился список "Приняты", а то дефолтно открывает список "Новых" ?

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

 

Спасибо!


Изменено: DarAmal, 23.08.2016 - 22:09


#8 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 24.08.2016 - 09:24

Можно в simpla/design/html/index.tpl  или через OrdersAdmin.php

 

А вообще Ваш вопрос должен бы уже натолкнуть Вас на мысль: а что я, собственно, делаю - чтобы курьеру НЕ ПОКАЗЫВАТЬ ссылки? Видимо,  чтобы он не видел лишнего.  А если курьер чуть сообразительнее окажется и введет ссылку сам?  Там ведь ума много не надо - приписал в адресе  status=0 и готово. Особенно если вдруг этот курьер сейчас работает и в админке видит все заказы.  И все усилия - впустую...



#9 DarAmal

DarAmal
  • Пользователь
  • 763 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 24.08.2016 - 10:06

Можно в simpla/design/html/index.tpl  или через OrdersAdmin.php

 

А вообще Ваш вопрос должен бы уже натолкнуть Вас на мысль: а что я, собственно, делаю - чтобы курьеру НЕ ПОКАЗЫВАТЬ ссылки? Видимо,  чтобы он не видел лишнего.  А если курьер чуть сообразительнее окажется и введет ссылку сам?  Там ведь ума много не надо - приписал в адресе  status=0 и готово. Особенно если вдруг этот курьер сейчас работает и в админке видит все заказы.  И все усилия - впустую...

Нее. с этим проблем не возникнет ))

мне главное сделать задуманное )



#10 DarAmal

DarAmal
  • Пользователь
  • 763 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 24.08.2016 - 10:21

Не подскажите, как через simpla/design/html/index.tpl  или через OrdersAdmin.php сделать это?

я попытался сделать в index.tpl прописать

<li>
        {if $manager->login == 'kurier'}
        <a href="index.php?module=OrdersAdmin&status=1"><img src="design/images/menu/orders.png"><b>Заказы</b></a>
        {else}
			<a href="index.php?module=OrdersAdmin"><img src="design/images/menu/orders.png"><b>Заказы</b></a>
			{if $new_orders_counter}<div class='counter'><span>{$new_orders_counter}</span></div>{/if}
         {/if}
		</li>

Но это совсем не то. он только  ссылку в меню меняет.

Как сделать, чтоб сразу открылась страница "Принятые" ?!

 

Спасибо большое!







Также с меткой «доступ, курьер»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых