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


Реализация выбор шаблона через доп. действие


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

#1 aleks.goodcolor

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

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

Отправлено 13 Август 2014 - 16:53

Добрый вечер. Имеется кнопка доп. действия. Хотелось бы привязать на нее выбор шаблона как это сделано при нажатии на кнопку "разослать" и потом дальнейшее выполнение доп. действия. Подскажите пожалуйста как это можно реализовать?

#2 CbCoder

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

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

Отправлено 13 Август 2014 - 17:44

Не сделать это никак стандартными методами, а нестандартными - слишком много гемора для непрофессионала. Лучше закажите это как платную доработку.

#3 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Август 2014 - 11:15

Просто напишу тут как вариант,как у нас сделано..
В самой записи есть поле типа "связь" (с отдельной таблицей с наименованием тарифов) из него сотрудники выбирают по какому тарифу работаем. Название тарифа=названию шаблона соответственно.
В доп.действии прописано в формате "если выбрали тариф такой-то-то печатаем шаблон с таким же названием"
global $ses_id;
if ($line['Тариф']['raw']==38) //10 эа
{
unset($_SESSION[$ses_id]["sel".$table_id]);
$_SESSION[$ses_id]["sel".$table_id][] = $ID;
header("Location: forms.php?table=78&mode=print&form=2851");
exit();
}
elseif ($line['Тариф']['raw']==37) //антикр
{
unset($_SESSION[$ses_id]["sel".$table_id]);
$_SESSION[$ses_id]["sel".$table_id][] = $ID;
header("Location: forms.php?table=78&mode=print&form=2861");
exit();
}
table=78&mode=print&form=2861
78-номер таблицы, 2861-номер шаблона договора
$line['Тариф']['raw']==38
38-ID тарифа который проставлен

Просто вдруг поможет,кто знает...

Сообщение отредактировал Dinara: 14 Август 2014 - 11:16


#4 CbCoder

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

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

Отправлено 14 Август 2014 - 11:22

Этот вариант хорош для одной записи, можно также сделать доп.действие во всплывающем окне и выбирать шаблон там, а не в поле (хотя это чуть сложнее). Но оба варианта не будут работать в табличном режиме.

#5 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Август 2014 - 11:23

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

#6 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 09:00

Решил сделать через селект в окошке доп. действия - выбираем шаблон и обращаемся к таблице с шаблонами откуда я и буду подтягивать инфо для заполнения. Но сейчас есть некоторые проблемы. Подскажите каким образом можно подключить ckeditor к полю в окошке доп. условия?

P.S.: Dinara cпасибо за ваш вариант - может в дальнейшем и пригодится

Сообщение отредактировал aleks.goodcolor: 15 Август 2014 - 09:02


#7 CbCoder

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

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

Отправлено 15 Август 2014 - 10:46

Цитата

Подскажите каким образом можно подключить ckeditor к полю в окошке доп. условия?

На форуме где-то писали уже как подключать html-редактор, поищите.

#8 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 14:10

Может кому пригодится.
Подключение ckeditor к полю:
echo "<script type='text/javascript' src='include/jquery/jquery.min.js'></script>";// подключение ckeditor
echo "<script type='text/javascript' src='include/ckeditor/ckeditor.js'></script>";//
echo "<script type='text/javascript' src='include/ckeditor/adapters/jquery.js'></script>";//
echo "<script type='text/javascript'>$(function(){ $('textarea.html_editor').ckeditor(function(){ }, { width:'600px', height:'300px' }) })</script>";//
echo "<textarea class ='html_editor'  name='comment' rows='10' cols='30'> </textarea>";

Сообщение отредактировал aleks.goodcolor: 15 Август 2014 - 14:10


#9 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 15:01

Добавить получилось но теперь не знаю как в него передать значение. Передаю значение через javascript - если класс не выставлен то работает но с классом html_editor не хочет работать. Подскажите каким образом можно передать значение?

if (isset($_REQUEST["comment"]) || $_FILES["files"]["name"] != 0)
   {  $mas['Кому'] = $line['От кого'];
	 $mas['Имя отправителя'] = $user['fio'];
	 if(isset($_REQUEST["shablon"]))
	 {
	    $res = data_select(610, "`status`=0");
	    while ($row = sql_fetch_assoc($res))
	    {
			  if($_REQUEST["shablon"]==$row['f10100'])
			  $mas['Сообщение'] = $row['f10090']."\\r\\n\\r\\n".$line['Дата'].", < ".$line['От кого']." > :"."\\r\\n"."<blockquote type=\\"cite\\" style=\\"display: block;\\">".$line['Сообщение']."</blockquote>";;
	    }	
	 }
	 else
	 {
	  $mas['Сообщение'] = $_REQUEST["comment"]."\\r\\n\\r\\n".$line['Дата'].", < ".$line['От кого']." > :"."\\r\\n"."<blockquote type=\\"cite\\" style=\\"display: block;\\">".$line['Сообщение']."</blockquote>";
	 }
	 $mas['От кого'] = $user['e_mail'];
	 $mas['Тема'] = "Ответ на обращение от клиента ".$line['Имя отправителя'];
	 $mas['Дата'] = date("Y-m-d H:i:s");
	 $mas['Поставщики'] = $line['Поставщики']['ID'];
	 $mas['Контрагент'] = $line['Контрагент']['ID'];
	 $mas['Приоритет'] = $line['Приоритет'];
	 $mas['Статус'] = "Ответ";
	 $mas['status_files'] = "1";
	
	 $new_id = insert_query($mas, "Почта");
		
	  if(is_array($_FILES['files']['tmp_name']))
	   {
		 $count = count($_FILES['files']['tmp_name']);
		 for($i = 0; $i < $count; $i++)
		 {
			   if( $_FILES['files']['error'][$i] == 0 )
			  {
			    $tmpname = $_FILES['files']['tmp_name'][$i];
			    $named = $_FILES['files']['name'][$i];
			   
			    $dat = file_get_contents($tmpname);
			    $mas['Файлы'] = $mas['Файлы'] ? ($mas['Файлы']."\\r\\n".$named) : $named;
			    save_data_file(9760, $new_id, $named, $dat);
			   
			  }
		 }
		
	   }
		
	 // производим нужные нам действия с необходимыми полями
	 update_query($mas, "Почта", "id=$new_id");
	 send_template(440, "id=$new_id");
	
	 //Добавление в лог
	 $log['Действие'] = "Ответ";
	 $log['Клиент'] = $line['Имя отправителя'];
	 $log['Ссылка'] = "<a href=\\"/cb/view_line2.php?table=580&line=".$new_id."\\">ссылка</a>";
	 $log['Приоритет'] = $line['ID'];
	
	 insert_query($log, "Лог");  
		
	 echo "<script>";
	 echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
	 echo "window.close()"; // Закрываем текущее
	 echo "</script>";
   }
echo "<form method='post' enctype='multipart/form-data'>";
echo "<script type='text/javascript' src='include/jquery/jquery.min.js'></script>";// подключение ckeditor
echo "<script type='text/javascript' src='include/ckeditor/ckeditor.js'></script>";//
echo "<script type='text/javascript' src='include/ckeditor/adapters/jquery.js'></script>";//
echo "<script type='text/javascript'>$(function(){ $('textarea.html_editor').ckeditor(function(){ }, { width:'600px', height:'300px' }) })</script>";//
//--------------------
echo "<script type='text/javascript'>";
echo "var shouts = {";
echo "1: '0',";
echo "2 : '5 000',";
echo "3: '10 000',";
echo "4: '8 000',";
echo "5: '15 000'";
echo "};";
echo "function shoutbox(select) {";
echo "var selected = select.options[select.selectedIndex];";
echo "if (selected.value in shouts) {";
echo "document.getElementById('html_editor').innerHTML = shouts[selected.value];";
echo "} else {";
echo "document.getElementById('html_editor').innerHTML = '';";
echo "}";
echo "}";
echo "</script>";
//--------------------
echo "Ваш ответ:";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value='$ID'>";  // Значение строки
echo "<input type='hidden' name='csrf' value='{$csrf}'>";
echo "<select onchange ='shoutbox(this)' id='shablon' style='width:260px;' name='shablon'>";
echo "<option selected disabled>Выбрать шаблон</option>";
echo "<option value='1'>1</option>";
echo "<option value='2'>2</option>";
echo "<option value='3'>3</option>";
echo "<option value='4'>4</option>";
echo "<option value='5'>5</option>";

echo"</select><br><br>";
echo "<br><textarea class ='html_editor' id='comment' name='comment' rows='10' cols='30'> </textarea><br>";
echo "Загрузить файл:";
echo "<input name='files[]' size='18' type='file' multiple='multiple' value=''>";
echo "<br><input type='submit' value='Отправить'>";
echo "</form>";

Сообщение отредактировал aleks.goodcolor: 15 Август 2014 - 15:02


#10 CbCoder

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

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

Отправлено 15 Август 2014 - 15:09

А зачем вы вставляете туда значение через innerHTML? Этот вариант заведомо кривой. Любые значения элементов формы необходимо передавать через value, насколько я знаю. Или через метод val() от jQuery.

#11 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 15:32

value работает в данном случае также как и Innerhtml. не получается получить значение.

#12 CbCoder

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

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

Отправлено 15 Август 2014 - 15:58

Да как раз и не работает, в данном случае, что очевидно из ваших же слов. Хотя бы потому, что преобразование textarea в ckeditor меняет элемент (можете увидеть это через firebug, к примеру), и innerHTML может запросто уже не работать с ним, или работать некорректно. Я уж не говорю про то, что этот метод вообще является не рекомендуемым с точки зрения стандартов. Вы пробовали то хоть через value или val() значение вставить?

#13 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 15:59

я же сказал что value срабатывает также - если класса нет, то работает а с классом не работает

#14 CbCoder

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

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

Отправлено 15 Август 2014 - 16:06

Ну а метод val()? Ckeditor вставляется с помощью jQuery и вполне возможно что заполнять элемент тоже надо через него. А value может не работать по тем же причинам что и innerhtml.

#15 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 16:19

если просто добавить вместо innerfhtml не работает, нужно разбираться как его правильно вставить - пока я не понимаю как нужно правильно формировать запрос.

#16 CbCoder

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

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

Отправлено 15 Август 2014 - 16:32

Погодите, только что дошло, а где собственно в коде элемент, которому вы присваиваете значение? Я вижу присваивание через document.getElementById элементу c id="html_editor", которого я не нашел, а вместо него вижу элемент с классом "html_editor" и id="comment". Естественно так никакого присвоения не будет в принципе, т.к. сам код с ошибкой.

#17 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 16:41

в действующем коде стоит comment

#18 CbCoder

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

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

Отправлено 15 Август 2014 - 16:52

Тогда, соответственно, должно быть $('#comment').val(ваше_значение), если вопрос у вас был в синтаксисе.

#19 aleks.goodcolor

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

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

Отправлено 15 Август 2014 - 16:58

Спасибо огромное - так сработало.





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

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