ADD Распечатывание маршрута

This commit is contained in:
Krivchikov Dmitry 2014-12-14 16:41:54 +03:00
parent c378657c43
commit 6cb6cec2d5
7 changed files with 111 additions and 6 deletions

View File

@ -163,13 +163,20 @@ class IndexController extends Controller
print($xml->asXML());
}
static function actionTest()
static function actionRoute()
{
$route = array(301, 128);
self::$layout = 'layoutPrint.php';
self::addStyle('/css/print.css?ver=' . App::getConfig('version'));
// $route = Point::model()->getAll(array('where' => '`id` IN ('.implode(', ', array_fill(1, count($route), '?')).')'), $route);
//// print_r(array('where' => '`id` IN ('.implode(', ', array_fill(1, count($route), '?')).')'));die;
// print_r($route);die;
if (!isset($_GET['route']) || !$_GET['route']) {
App::error404('Нет данных для построения маршрута!');
}
$route = json_decode($_GET['route']);
if (!$route || !is_array($route)) {
App::error404();
}
$points = array();
foreach ($route as $pointId){
@ -178,7 +185,7 @@ class IndexController extends Controller
}
}
self::renderPartial('route.php', array(
self::render('route.php', array(
'points' => $points,
));
}

View File

@ -59,6 +59,7 @@
<div id="wayPoints"></div>
<div id="routeDistance"></div>
<button class="btn btn-info" onclick="buildRoute(true)"><span class="glyphicon glyphicon-send"></span> Проложить</button>
<a class="btn btn-default" href="" id="printRoute" target="_blank"><span class="glyphicon glyphicon-print"></span> Печать</a>
<?php if ($user): ?>
<button class="btn btn-default" onclick="saveRoute()"><span class="glyphicon glyphicon-cloud-upload" title="Сохранить"></span></button>
<?php endif; ?>

View File

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<title><?= App::getConfig('title') ?></title>
<?php if ($styles): ?>
<?php foreach ($styles as $style): ?>
<link href="<?= $style ?>" media="all" rel="stylesheet" type="text/css" />
<?php endforeach; ?>
<?php endif; ?>
<?php if ($scripts): ?>
<?php foreach ($scripts as $script): ?>
<script src="<?= $script ?>" type="text/javascript"></script>
<?php endforeach; ?>
<?php endif; ?>
<?php if ($vars): ?>
<script type="text/javascript">
<?php foreach ($vars as $varName => $var): ?>
var <?= $varName ?> = '<?= $var ?>';
<?php endforeach; ?>
</script>
<?php endif; ?>
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Ubuntu:400&subset=Cyrillic">
</head>
<body>
<h1>WikiPoints.ru</h1>
<hr/>
<?= isset($content) && !empty($content) ? $content : 'No content =(' ?>
<script>
window.onload=window.print();
</script>
<?= self::renderPartial('metrika.php', array(), true) ?>
<?= self::renderPartial('ganalytics.php', array(), true) ?>
</body>
</html>

28
ground/views/route.php Normal file
View File

@ -0,0 +1,28 @@
<?php
foreach ($points as $point)
{
?>
<h2><?= $point->name ?></h2>
<img src="<?= $point->getImg('middle') ?>" style="float: left; margin: 0 10px 10px 0; display: block; width: 300px;"/>
<img src="http://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=H|0&chl=http://wikipoints.ru/?point=<?= $point->id ?>" style="float: right; margin: 0 0 10px 10px; display: block;"/>
<?= $point->description ?>
<div class="coords-container">
http://wikipoints.ru/?point=<?= $point->id ?>
&nbsp;&nbsp;/&nbsp;&nbsp;
<nobr>
<?= $point->lat > 0 ? 'N' : 'S' ?><?= number_format(abs($point->lat), 5, '.', '') ?>°
<?= $point->lng > 0 ? 'E' : 'W' ?><?= number_format(abs($point->lng), 5, '.', '') ?>°
</nobr>
&nbsp;&nbsp;/&nbsp;&nbsp;
<nobr>
<?= $point->lat > 0 ? 'N' : 'S' ?><?= Coord::dergeeToMinute($point->lat) ?>
<?= $point->lng > 0 ? 'E' : 'W' ?><?= Coord::dergeeToMinute($point->lng) ?>
</nobr>
</div>
<hr style="clear: both;"/>
<?php
}
?>

18
public/css/print.css Normal file
View File

@ -0,0 +1,18 @@
/*
Document : style
Created on : 03.04.2014, 10:51:45
Author : all4dk
Description:
Purpose of the stylesheet follows.
*/
html {height: 100%;}
body {margin: 1%; padding: 0; height: 100%; width: 98%;}
html body h1 {font-family: Ubuntu, inherit;}
html body h2 {font-family: Ubuntu, inherit; text-align: center;}
html body h3 {font-family: Ubuntu, inherit;}
div.clear {clear: both;}
/* ------------- PAGE --------------------*/
.coords-container {text-align: right; margin-bottom: 20px; margin-top: 10px; color: #777;font-size: 0.9em;}

View File

@ -175,6 +175,7 @@ function routeToURL()
});
history.pushState({route: JSON.stringify(wayPoints)}, document.title, "/?route=" + JSON.stringify(wayPoints));
$('#printRoute').attr('href', "/index/route/?route=" + JSON.stringify(wayPoints));
return true;
}

View File

@ -0,0 +1,11 @@
Что я хочу видеть в распечатанном маршруте?
* Название места
* Координаты
* Фотографии / Фотогрфию (?)
* Описание точки
* Расстояние до следующей точки (актуально для пешеходных маршрутов)
* Ссылку на сайт (ручной ввод)
* QR-код со ссылкой на сайт (для сканирования телефоном)
* Ближайшие точки - фотка + ссылка + QR
* Иконка типа точки