Skip to content

Commit

Permalink
http://dev.rosyama.ru/bugs/show_bug.cgi?id=72
Browse files Browse the repository at this point in the history
  • Loading branch information
vlasovilya committed Oct 18, 2012
1 parent de2aeb7 commit 35eea31
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 19 deletions.
12 changes: 8 additions & 4 deletions api/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1109,7 +1109,7 @@ <h1>Получение с сервера PDF</h1>
<p>В некоторых ситуациях вместо ответа в формате <code>XML</code> сервер может предложить для скачивания <code>PDF</code>-файл со сформированным заявлением в прокуратуру или жалобой в ГИБДД. Для получения с сервера <code>PDF</code> необходимо отправить запрос методом <code>POST</code> по определённому адресу и передать заполненные поля, которые подставятся в текст.</p>

<h2>Формирование и получение с сервера жалобы в ГИБДД</h2>
<p>Для получения с сервера жалобы в ГИБДД в формате PDF необходимо отправить на сервер запрос методом <code>POST</code> по адресу <code>/my/&lt;defect-id&gt;/pdf_gibdd/</code>:</p>
<p>Для получения с сервера жалобы в ГИБДД в формате PDF или текста необходимо отправить на сервер запрос методом <code>POST</code> по адресу <code>/my/&lt;defect-id&gt;/pdf_gibdd/</code>:</p>
<pre>POST /my/&lt;defect-id&gt;/pdf_gibdd/
Поля POST:
{
Expand All @@ -1120,15 +1120,17 @@ <h2>Формирование и получение с сервера жалоб
postaddress: &lt;почтовый адрес отправителя&gt;
holeaddress: &lt;адрес дефекта&gt;
signature: &lt;подпись (фамилия и инициалы отправителя)&gt;
html: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде строки размеченой html]
textonly: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде текстовой строки]
}</pre>
<p>Вместо <code>passwordhash</code> может быть передан <code>password</code>.</p>
<p>В поле <code>from</code> должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле <code>to</code> должно быть написана должность и полное имя сотрудника ГИБДД, которому адресуется жалоба. Должность и полное имя сразу в дательном падеже начальника управления ГИБДД соответствующего субъекта РФ можно получить с помощью запроса <code>getgibddhead</code>. Так как ответы из ГИБДД будут приходить в письменной форме почтой, необходимо указать свой почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в ГИБДД.</p>
<p>Данный запрос применим только к дефектам, находящимся в статусах «новый» и «в процессе». В случае, если дефект находится не в этих статусах, будет выведена ошибка <code>UNAPPROPRIATE_METHOD</code>. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный <code>PDF</code>-файл не хранится на сервере.</p>
<p>Данный запрос применим только к дефектам, находящимся в статусах «новый» и «в процессе». В случае, если дефект находится не в этих статусах, будет выведена ошибка <code>UNAPPROPRIATE_METHOD</code>. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный текст заявления не хранится на сервере.</p>

<hr class="bs-docs-separator">

<h2>Формирование и получение с сервера заявления в прокуратуру</h2>
<p>Для получения с сервера жалобы в ГИБДД в формате PDF необходимо отправить на сервер запрос методом POST по адресу /my/&lt;defect-id&gt;/pdf_prosecutor/:</p>
<p>Для получения с сервера жалобы в ГИБДД в формате PDF или текста необходимо отправить на сервер запрос методом POST по адресу /my/&lt;defect-id&gt;/pdf_prosecutor/:</p>
<pre>POST /my/&lt;defect-id&gt;/pdf_prosecutor/
Поля POST:
{
Expand All @@ -1140,9 +1142,11 @@ <h2>Формирование и получение с сервера заявл
signature: &lt;подпись (фамилия и инициалы отправителя)&gt;
gibdd: &lt;название отделения ГИБДД&gt;
gibddre: &lt;ответ ГИБДД&gt;
html: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде строки размеченой html]
textonly: [Не обязательный boolean параметр. Если true ответ будет выдан ввиде текстовой строки]
}</pre>
<p>Вместо <code>passwordhash</code> может быть передан <code>password</code>.</p>
<p>В поле <code>from</code> должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле <code>postaddress</code> необходимо указать свой полный почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в прокуратуре. Поле <code>gibdd</code> должно содержать название отделения ГИБДД, куда было направлено заявление. Для его получения можно воспользоваться запросом <code>getgibddhead</code>. Поле gibddre должно содержать содержательную часть ответа из ГИБДД и используется только в том случае, если этот ответ получен. Отправить заявление в прокуратуру можно, когда дефект находится в двух статусах: «просрочен» и «получен ответ из ГИБДД», в обоих случаях текст заявление будет разный, в первом случае — жалоба на бездействие ГИБДД, во втором — заявление о нарушении закнодательства о содержании и ремонте дорог и безопасности дорожного движения. В том случае, если дефект находится в другом статусе, будет выведена ошибка <code>UNAPPROPRIATE_METHOD</code>. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный <code>PDF</code>-файл не хранится на сервере.</p>
<p>В поле <code>from</code> должно быть указано полное имя отправителя. Так как на сайте в профиле может быть не указано полное правильное имя пользователя, имеется возможность указать его отдельно. В поле <code>postaddress</code> необходимо указать свой полный почтовый адрес. На сайте не хранятся почтовые адреса пользователей. Адрес дефекта нужно указать чётко, чтоб было понятно в прокуратуре. Поле <code>gibdd</code> должно содержать название отделения ГИБДД, куда было направлено заявление. Для его получения можно воспользоваться запросом <code>getgibddhead</code>. Поле gibddre должно содержать содержательную часть ответа из ГИБДД и используется только в том случае, если этот ответ получен. Отправить заявление в прокуратуру можно, когда дефект находится в двух статусах: «просрочен» и «получен ответ из ГИБДД», в обоих случаях текст заявление будет разный, в первом случае — жалоба на бездействие ГИБДД, во втором — заявление о нарушении закнодательства о содержании и ремонте дорог и безопасности дорожного движения. В том случае, если дефект находится в другом статусе, будет выведена ошибка <code>UNAPPROPRIATE_METHOD</code>. Скрипты на сайте не проверяют валидность вводимых данных. Сгенерированный текст заявления не хранится на сервере.</p>

</section>

Expand Down
9 changes: 6 additions & 3 deletions protected/controllers/XmlController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
{
Expand All @@ -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
Expand Down
38 changes: 27 additions & 11 deletions protected/extensions/html1234.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,42 +10,45 @@ 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))
{
$this->temp = $temp;
}
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 '<p><img src="'.$im_path.'"></p>';
if (!$textonly) echo '<p><img src="'.$im_path.'"></p>';
else echo $im_path."\n";
}
}
}

// Обработка и вывод картинок на многоям
if ($this->models && $printAllPictures)
foreach($this->models as $model){
echo '<h3>'.$model->ADDRESS.'</h3>';
echo $textonly ? $model->ADDRESS."\n" : '<h3>'.$model->ADDRESS.'</h3>';
foreach($model->pictures_fresh as $picture)
{
echo '<p><img src="'.$picture->original.'"></p>';
if (!$textonly) echo '<p><img src="'.$picture->original.'"></p>';
else echo $picture->original."\n";
}
}

$this->getsignature();
echo '</body></html>';
$this->getsignature($textonly);
if (!$textonly) echo '</body></html>';
}

// собственно шаблон
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));
Expand All @@ -56,6 +59,7 @@ protected function template()
$header = $this->header();
$footer = $this->footer();
$name = $this->name();
if (!$textonly) {
ob_start();
{
?><!DOCTYPE html>
Expand Down Expand Up @@ -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 '<p>'.'<p>';
if (!$textonly) echo '<p>'.'<p>';
if($this->temp == 'prosecutor' || $this->temp == 'prosecutor2')
{
$date = date('d.m.Y');
Expand All @@ -103,7 +118,8 @@ protected function getsignature()
{
$date = $this->params['date2.day'].'.'.$this->params['date2.month'].'.'.$this->params['date2.year'];
}
echo '<div style="float: right;">'.$this->params['signature'].'</div><p>'.$this->signature().'</p>'.$date;
if (!$textonly) echo '<div style="float: right;">'.$this->params['signature'].'</div><p>'.$this->signature().'</p>'.$date;
else echo $this->params['signature']."\n".$this->signature()."\n".$date;
}
}

Expand Down
3 changes: 2 additions & 1 deletion protected/models/HoleRequestForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class HoleRequestForm extends CFormModel
public $holes=Array();
public $printAllPictures=true;
public $showDescriptions=true;
public $textonly=false;


public function rules()
Expand All @@ -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'),
Expand Down

0 comments on commit 35eea31

Please sign in to comment.