From 35eea31722e902b1e823c18f9a651b987c1dfce0 Mon Sep 17 00:00:00 2001 From: vlasovilya Date: Thu, 18 Oct 2012 16:08:28 +0400 Subject: [PATCH] http://dev.rosyama.ru/bugs/show_bug.cgi?id=72 --- api/index.html | 12 +++++--- protected/controllers/XmlController.php | 9 ++++-- protected/extensions/html1234.php | 38 ++++++++++++++++++------- protected/models/HoleRequestForm.php | 3 +- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/api/index.html b/api/index.html index fe26218a..0351d665 100644 --- a/api/index.html +++ b/api/index.html @@ -1109,7 +1109,7 @@

Получение с сервера PDF

В некоторых ситуациях вместо ответа в формате XML сервер может предложить для скачивания PDF-файл со сформированным заявлением в прокуратуру или жалобой в ГИБДД. Для получения с сервера PDF необходимо отправить запрос методом POST по определённому адресу и передать заполненные поля, которые подставятся в текст.

Формирование и получение с сервера жалобы в ГИБДД

-

Для получения с сервера жалобы в ГИБДД в формате PDF необходимо отправить на сервер запрос методом POST по адресу /my/<defect-id>/pdf_gibdd/:

+

Для получения с сервера жалобы в ГИБДД в формате PDF или текста необходимо отправить на сервер запрос методом POST по адресу /my/<defect-id>/pdf_gibdd/:

POST /my/<defect-id>/pdf_gibdd/
 Поля POST:
 {
@@ -1120,15 +1120,17 @@ 

Формирование и получение с сервера жалоб postaddress: <почтовый адрес отправителя> holeaddress: <адрес дефекта> signature: <подпись (фамилия и инициалы отправителя)> + html: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде строки размеченой html] + textonly: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде текстовой строки] }

Вместо passwordhash может быть передан password.

В поле from должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле to должно быть написана должность и полное имя сотрудника ГИБДД, которому адресуется жалоба. Должность и полное имя сразу в дательном падеже начальника управления ГИБДД соответствующего субъекта РФ можно получить с помощью запроса getgibddhead. Так как ответы из ГИБДД будут приходить в письменной форме почтой, необходимо указать свой почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в ГИБДД.

-

Данный запрос применим только к дефектам, находящимся в статусах «новый» и «в процессе». В случае, если дефект находится не в этих статусах, будет выведена ошибка UNAPPROPRIATE_METHOD. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный PDF-файл не хранится на сервере.

+

Данный запрос применим только к дефектам, находящимся в статусах «новый» и «в процессе». В случае, если дефект находится не в этих статусах, будет выведена ошибка UNAPPROPRIATE_METHOD. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный текст заявления не хранится на сервере.


Формирование и получение с сервера заявления в прокуратуру

-

Для получения с сервера жалобы в ГИБДД в формате PDF необходимо отправить на сервер запрос методом POST по адресу /my/<defect-id>/pdf_prosecutor/:

+

Для получения с сервера жалобы в ГИБДД в формате PDF или текста необходимо отправить на сервер запрос методом POST по адресу /my/<defect-id>/pdf_prosecutor/:

POST /my/<defect-id>/pdf_prosecutor/
 Поля POST:
 {
@@ -1140,9 +1142,11 @@ 

Формирование и получение с сервера заявл signature: <подпись (фамилия и инициалы отправителя)> gibdd: <название отделения ГИБДД> gibddre: <ответ ГИБДД> + html: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде строки размеченой html] + textonly: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде текстовой строки] }

Вместо passwordhash может быть передан password.

-

В поле from должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле postaddress необходимо указать свой полный почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в прокуратуре. Поле gibdd должно содержать название отделения ГИБДД, куда было направлено заявление. Для его получения можно воспользоваться запросом getgibddhead. Поле gibddre должно содержать содержательную часть ответа из ГИБДД и используется только в том случае, если этот ответ получен. Отправить заявление в прокуратуру можно, когда дефект находится в двух статусах: «просрочен» и «получен ответ из ГИБДД», в обоих случаях текст заявление будет разный, в первом случае — жалоба на бездействие ГИБДД, во втором — заявление о нарушении закнодательства о содержании и ремонте дорог и безопасности дорожного движения. В том случае, если дефект находится в другом статусе, будет выведена ошибка UNAPPROPRIATE_METHOD. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный PDF-файл не хранится на сервере.

+

В поле from должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле postaddress необходимо указать свой полный почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в прокуратуре. Поле gibdd должно содержать название отделения ГИБДД, куда было направлено заявление. Для его получения можно воспользоваться запросом getgibddhead. Поле gibddre должно содержать содержательную часть ответа из ГИБДД и используется только в том случае, если этот ответ получен. Отправить заявление в прокуратуру можно, когда дефект находится в двух статусах: «просрочен» и «получен ответ из ГИБДД», в обоих случаях текст заявление будет разный, в первом случае — жалоба на бездействие ГИБДД, во втором — заявление о нарушении закнодательства о содержании и ремонте дорог и безопасности дорожного движения. В том случае, если дефект находится в другом статусе, будет выведена ошибка UNAPPROPRIATE_METHOD. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный текст заявления не хранится на сервере.

diff --git a/protected/controllers/XmlController.php b/protected/controllers/XmlController.php index 38caf1d8..aecb35cd 100644 --- a/protected/controllers/XmlController.php +++ b/protected/controllers/XmlController.php @@ -580,6 +580,8 @@ public function actionSetstate($id,$type) 'address'=>Yii::app()->request->getParam('holeaddress') ? Yii::app()->request->getParam('holeaddress') : $model->ADDRESS, 'comment'=>Yii::app()->request->getParam('comment'), 'signature'=>Yii::app()->request->getParam('signature'), + 'html'=>Yii::app()->request->getParam('html'), + 'textonly'=>Yii::app()->request->getParam('textonly') ? Yii::app()->request->getParam('textonly') : false, 'pdf'=>true, ); $this->makepdf($attribs, $model); @@ -736,8 +738,7 @@ public function makepdf($attribs, $model) 'gibdd' => $request->gibdd, 'gibdd_reply' => $request->gibdd_reply ); - - if($request->html) + if($request->html || $request->textonly) { foreach($model->pictures_fresh as $picture) { @@ -751,7 +752,9 @@ public function makepdf($attribs, $model) ( $request->form_type ? $request->form_type : $model->type, $_data, - $_images + $_images, + $request->textonly ? false : true, + $request->textonly ); } else diff --git a/protected/extensions/html1234.php b/protected/extensions/html1234.php index 86210287..e9540137 100755 --- a/protected/extensions/html1234.php +++ b/protected/extensions/html1234.php @@ -10,7 +10,7 @@ class html1234 extends pdf1234 public function __construct() { } // получение HTML - public function gethtml($temp, $params, $image = null, $printAllPictures=true){ + public function gethtml($temp, $params, $image = null, $printAllPictures=true, $textonly=false){ $this->params = pdf1234::regexp($params); if(is_object($temp) || method_exists(__CLASS__,'text_'.$temp)) { @@ -18,14 +18,16 @@ public function gethtml($temp, $params, $image = null, $printAllPictures=true){ } elseif (count ($this->models) < 2) return false; $this->note = count($image); - $this->template(); + $this->template($textonly); if(is_array($image) && $this->temp != 'prosecutor' && $this->temp != 'prosecutor2') { + if ($textonly) echo "Ссылки на фотографии:\n"; foreach($image as $im_path) { if(!empty($im_path)) { - echo '

'; + if (!$textonly) echo '

'; + else echo $im_path."\n"; } } } @@ -33,19 +35,20 @@ public function gethtml($temp, $params, $image = null, $printAllPictures=true){ // Обработка и вывод картинок на многоям if ($this->models && $printAllPictures) foreach($this->models as $model){ - echo '

'.$model->ADDRESS.'

'; + echo $textonly ? $model->ADDRESS."\n" : '

'.$model->ADDRESS.'

'; foreach($model->pictures_fresh as $picture) { - echo '

'; + if (!$textonly) echo '

'; + else echo $picture->original."\n"; } } - $this->getsignature(); - echo ''; + $this->getsignature($textonly); + if (!$textonly) echo ''; } // собственно шаблон - protected function template() + protected function template($textonly=false) { if (count ($this->models) < 2){ if (!is_object($this->temp)) $arResult = call_user_func(array(__CLASS__, 'text_'.$this->temp)); @@ -56,6 +59,7 @@ protected function template() $header = $this->header(); $footer = $this->footer(); $name = $this->name(); + if (!$textonly) { ob_start(); { ?> @@ -89,12 +93,23 @@ protected function template() } $buf = ob_get_clean(); echo $buf; + } + else { + foreach($header as $h) + echo $h."\n"; + echo $name."\n"; + echo $arResult['body0']."\n"; + if(!isset($arResult['holes'])) echo $arResult['body1']."\n"; + else foreach ($arResult['holes'] as $str) + echo $str."\n"; + + } } // добавление подписи - protected function getsignature() + protected function getsignature($textonly=false) { - echo '

'.'

'; + if (!$textonly) echo '

'.'

'; if($this->temp == 'prosecutor' || $this->temp == 'prosecutor2') { $date = date('d.m.Y'); @@ -103,7 +118,8 @@ protected function getsignature() { $date = $this->params['date2.day'].'.'.$this->params['date2.month'].'.'.$this->params['date2.year']; } - echo '

'.$this->params['signature'].'

'.$this->signature().'

'.$date; + if (!$textonly) echo '
'.$this->params['signature'].'

'.$this->signature().'

'.$date; + else echo $this->params['signature']."\n".$this->signature()."\n".$date; } } diff --git a/protected/models/HoleRequestForm.php b/protected/models/HoleRequestForm.php index 9ae4cd8b..e1365c31 100644 --- a/protected/models/HoleRequestForm.php +++ b/protected/models/HoleRequestForm.php @@ -17,6 +17,7 @@ class HoleRequestForm extends CFormModel public $holes=Array(); public $printAllPictures=true; public $showDescriptions=true; + public $textonly=false; public function rules() @@ -25,7 +26,7 @@ public function rules() // username and password are required //array('username, password', 'required'), // rememberMe needs to be a boolean - array('html, pdf, printAllPictures, showDescriptions', 'boolean'), + array('html, pdf, printAllPictures, showDescriptions, textonly', 'boolean'), // password needs to be authenticated array('form_type, to, from, postaddress, address, comment, signature, application_data, gibdd, gibdd_reply', 'length'), array('holes', 'safe'),