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


Доп. действия - выделение


Сообщений в теме: 29

#1 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Сентябрь 2013 - 15:24

Как можно выделить кнопку доп. действия, если это действие было выполнено?
Как можно запретить повторное выполнение действия?
Как сделать так, чтобы кнопка выполненного доп. действия не перемещалась наверх списка?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#2 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 13 Сентябрь 2013 - 15:28

Просмотр сообщенияgoodcolor (13 Сентябрь 2013 - 15:24) писал:

Как можно запретить повторное выполнение действия?
Создаете в таблице поле-флаг типа список. (ДА/Нет). Отслеживаете в доп.действие это значение.

Просмотр сообщенияgoodcolor (13 Сентябрь 2013 - 15:24) писал:

Как можно выделить кнопку доп. действия, если это действие было выполнено?
Я обычно скрываю доп. действия через яваскрипт, отслеживая значение да/нет в поле флаге.

Просмотр сообщенияgoodcolor (13 Сентябрь 2013 - 15:24) писал:

Как сделать так, чтобы кнопка выполненного доп. действия не перемещалась наверх списка?
Насколько помню - это баг. Висит на исправлении.

#3 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Сентябрь 2013 - 16:39

Просмотр сообщенияwondertalik (13 Сентябрь 2013 - 15:28) писал:

Создаете в таблице поле-флаг типа список. (ДА/Нет). Отслеживаете в доп.действие это значение.


Я обычно скрываю доп. действия через яваскрипт, отслеживая значение да/нет в поле флаге.
Суть понял. Но я так понимаю, что код, который я использовал для скрытия полей типа "display_field({$one_field.id}, document.getElementById('value4161').value!="");" в данном случае будет не уместен и нужно что-то поменять на button.
Не подскажете на какой? Или может тема есть?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 13 Сентябрь 2013 - 16:43

Просмотр сообщенияgoodcolor (13 Сентябрь 2013 - 16:39) писал:

Суть понял. Но я так понимаю, что код, который я использовал для скрытия полей типа "display_field({$one_field.id}, document.getElementById('value4161').value!="");" в данном случае будет не уместен и нужно что-то поменять на button.
Не подскажете на какой? Или может тема есть?

			//получаем кнопку в режиме просмотра
			var btn_1 = document.getElementById("user_button_div_1");
			if (btn_1 != null)
				btn_1.style.display = 'none';
			//та же кнопка в режиме редактирования
			var btn_1_e = document.getElementById("e_user_button_div_1");
			if (btn_1_e != null)
				btn_1_e.style.display = 'none';
1 - айди доп. действие. это код для скрытия. не забудьте еще условие вначале добавить, мол поле-флаг равно = да. и тогда код скрытия. И еще в доп. действии на всякий случай тоже проверяйте значение поле флага.

Сообщение отредактировал wondertalik: 13 Сентябрь 2013 - 16:44


#5 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Сентябрь 2013 - 17:04

Так, а если нужно стиль кнопки поменять, то здесь какие параметры возможно задать, т.е. кроме того, чтобы скрыть?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#6 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Сентябрь 2013 - 17:53

Добавил для списка Да/Нет код
function onchange_{$one_field.id}()
{
	    if (document.getElementById('value{$one_field.id}').value=="Да")
	    {
				 //получаем кнопку в режиме просмотра
					    var btn_21 = document.getElementById("user_button_div_21");
					    if (btn_21 != null)
							    btn_21.style.display = 'none';
					    //та же кнопка в режиме редактирования
					    var btn_21_e = document.getElementById("e_user_button_div_21");
					    if (btn_21_e != null)
							    btn_21_e.style.display = 'none';
	    }
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});

В процессе редактирования скрывает кнопку, а при сохранении оставляет так же видимой.
Или же нужно функцию update использовать?
В коде кнопки ещё ничего не указал. Не совсем понял какое там условие нужно...
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#7 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Сентябрь 2013 - 18:29

Скрывать получилось. Теперь ещё хотелось бы показывать доп. действие, если условие не выполняется. На что нужно поменять 'none' в этом случае?
Я в программировании ещё тот дилетант, прошу строго не пинать, исправлюсь)
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#8 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 13 Сентябрь 2013 - 21:20

Просмотр сообщенияgoodcolor (13 Сентябрь 2013 - 18:29) писал:

Скрывать получилось. Теперь ещё хотелось бы показывать доп. действие, если условие не выполняется. На что нужно поменять 'none' в этом случае?
Я в программировании ещё тот дилетант, прошу строго не пинать, исправлюсь)

if (document.getElementById('value{$one_field.id}').value=="Да")
			{
								 //получаем кнопку в режиме просмотра
											var btn_21 = document.getElementById("user_button_div_21");
											if (btn_21 != null)
															btn_21.style.display = 'none';
											//та же кнопка в режиме редактирования
											var btn_21_e = document.getElementById("e_user_button_div_21");
											if (btn_21_e != null)
															btn_21_e.style.display = 'none';
			} else {
 //получаем кнопку в режиме просмотра
											var btn_21 = document.getElementById("user_button_div_21");
											if (btn_21 != null)
															btn_21.style.display = '';
											//та же кнопка в режиме редактирования
											var btn_21_e = document.getElementById("e_user_button_div_21");
											if (btn_21_e != null)
															btn_21_e.style.display = '';

}


как-то так

#9 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 15 Сентябрь 2013 - 12:03

Понятно, спасибо.
Значит "none" - скрывать
" " - отображать
А как сделать типа "red" например? Какие-то стили для кнопок существуют или можно их создать?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#10 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 18 Сентябрь 2013 - 15:55

Уважаемые форумчане и создатели программы, возможно ли все же применить какие-либо стили к оформлению кнопок доп. действий?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#11 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 18 Сентябрь 2013 - 16:06

Просмотр сообщенияgoodcolor (18 Сентябрь 2013 - 15:55) писал:

Уважаемые форумчане и создатели программы, возможно ли все же применить какие-либо стили к оформлению кнопок доп. действий?
Один из вариантов. код туда же к выше предоставленному добавляете

#12 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 25 Февраль 2014 - 23:17

Как сделать так, чтобы скрытие доп. действий не зависело от доступа к редактированию полей таблицы с яваскрипт?
Пример:
Есть поле типа список "Принято" Да/Нет
В нем ставлю яваскрипт:
$(function ()
{
	    if (document.getElementById('value{$one_field.id}').value == "Да")
	    {
					    //получаем кнопку в режиме просмотра
					    var btn_180 = document.getElementById("user_button_div_180");
					    if (btn_180 != null)
							    btn_180.style.display = 'none';
					    //та же кнопка в режиме редактирования
					    var btn_180_e = document.getElementById("e_user_button_div_180");
					    if (btn_180_e != null)
							    btn_180_e.style.display = 'none';
					   
	    } else {
					    //получаем кнопку в режиме просмотра
					    var btn_180 = document.getElementById("user_button_div_180");
					    if (btn_180 != null)
							    btn_180.style.display = '';
					    //та же кнопка в режиме редактирования
					    var btn_180_e = document.getElementById("e_user_button_div_180");
					    if (btn_180_e != null)
							    btn_180_e.style.display = '';
					   
}
});
В итоге скрытие кнопки доп. действия не работает, если редактирование поля "Принято" запрещено в настройках доступа.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Февраль 2014 - 11:05

Попробуйте заменить:

if ("{$one_field.display}" == "Да")


#14 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 26 Февраль 2014 - 11:44

Просмотр сообщенияgoodcolor (25 Февраль 2014 - 23:17) писал:

Как сделать так, чтобы скрытие доп. действий не зависело от доступа к редактированию полей таблицы с яваскрипт?
Столкнувшись с аналогичной проблемой решил ее следующим способом.
Создал поле ДопДействие, сделал его видимым при отображении записи, скрыл через javascript
display_field({$one_field.id}, 0);
$(document).ready(function(){
  eval(j_str);
});
Вторая строка из кода выше для выполнения js кода, который был помещен в переменную j_str, через вычисление
// Подготавливаем кнопки Дополнительных Действий к выводу в зависимости от статуса Заявки
// Создаем javascript переменную j_str, в которую помещаем код,
// скрывающий кнопки в зависимости от значения полей текущей записи
$j_str = "<script>\n var j_str='';\n";
if (!$line['YYYY']) {
	 $j_str .= "j_str +=' $(\"#user_button_div_ХХХ\").hide(); $(\"#e_user_button_div_ХХХ\").hide();'\n";
..........
}

$j_str .= "</script>\n";
echo $j_str;
// переменная будет вызвана через eval в поле ДопДействие
Возможно, что не совсем корректно все и код помещается в документ до <html>, но работает независимо от прав доступа.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#15 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Февраль 2014 - 12:45

andibrag, вы же сами сталкивались недавно с подобной проблемой (значения из нередактируемых полей), и мы с вами пришли к выводу, что можно использовать переменные smarty, в частности {$one_field.display}, что я и привел в ответе выше. Такой вариант у вас не заработал разве? Приведенный вами альтернативный способ уж больно "кривоходный", включая и ломку html-документа.

#16 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 26 Февраль 2014 - 12:59

Просмотр сообщенияCbCoder (26 Февраль 2014 - 12:45) писал:

andibrag, вы же сами сталкивались недавно с подобной проблемой (значения из нередактируемых полей), и мы с вами пришли к выводу, что можно использовать переменные smarty, в частности {$one_field.display}, что я и привел в ответе выше. Такой вариант у вас не заработал разве? Приведенный вами альтернативный способ уж больно "кривоходный", включая и ломку html-документа.
Согласен, что о-о-очень кривой, но код выше не зависит от наличия прав вообще. Т.е. Поле, по которому осуществляется проверка может отсутствовать во всех режимах. Вариант с {$one_field.display} доступен только для полей, которые имеют право либо на отображение, либо на редактирование. Поскольку у каждой группы свои настройки искал универсальное решение.
Единственное не проверял, передается ли в текущую запись вышеописанная переменная смарти, если стоит галочка в чеке экспорт... Если да, то можно переписать код, проставив у всех групп соответствующее разрешение.
Вдогонку. Было бы замечательно, чтобы посредством правил доступа была бы возможность управлять дополнительными действиями. Однажды мы это уже обсуждали.

Сообщение отредактировал andibrag: 26 Февраль 2014 - 13:11

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#17 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 26 Февраль 2014 - 13:24

Не работает. Для того, чтобы доп.действие скрывалось или показывалось помимо прав на редактирование так же необходимы открытые права на экспорт/импорт для полей на основе которых работает яваскрипт. Баг? Исправимо? Можно как-то обойти сейчас?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#18 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 26 Февраль 2014 - 13:49

Просмотр сообщенияgoodcolor (26 Февраль 2014 - 13:24) писал:

Не работает. Для того, чтобы доп.действие скрывалось или показывалось помимо прав на редактирование так же необходимы открытые права на экспорт/импорт для полей на основе которых работает яваскрипт. Баг? Исправимо? Можно как-то обойти сейчас?
Попробуйте эту методику. Хоть и кривой код, но работает поскольку данные из полей берутся из БД через вычисления. Один минус - не работает он-лайн. Т.е. при текущем изменении поля на стороне клиента - кнопка не скроется пока не нажмете Сохранить.
Можно, в принципе, скрыть все доп.действия в режиме редактирования.

Сообщение отредактировал andibrag: 26 Февраль 2014 - 13:50

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#19 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 26 Февраль 2014 - 14:23

Попробую, вот только не понимаю к какому полю прикрепляется второй код. Поясните пожалуйста.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#20 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 26 Февраль 2014 - 14:44

Просмотр сообщенияgoodcolor (26 Февраль 2014 - 14:23) писал:

Попробую, вот только не понимаю к какому полю прикрепляется второй код. Поясните пожалуйста.
Второй код - это вычисление в таблице, срабатываемое при отображении поля ДопДействие.

Сообщение отредактировал andibrag: 26 Февраль 2014 - 14:46

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных