ADD редактирование фрагментов трека - имя и описание

This commit is contained in:
Krivchikov Dmitry 2016-05-29 21:32:17 +03:00
parent 8125659f83
commit c7a52b19d1
5 changed files with 82 additions and 4 deletions

View File

@ -21,6 +21,6 @@ class Geo
static function formatedDistance($distance)
{
return $distance > 1000 ? round($distance/1000, 2).'km' : round($distance).'m';
return $distance > 1000 ? round($distance/1000, 2).'км' : round($distance).';
}
}

View File

@ -22,6 +22,29 @@ class EdittrackController extends Controller
$trip->name = trim($_POST['name']);
$trip->description = trim($_POST['description']);
$trip->status = ($_POST['isPublic'] == 'true') ? Trips::STATUS_PUBLIC : Trips::STATUS_PRIVATE;
$trip->json = '';
$trip->save();
}
function actionTrack()
{
$id = intval(App::getParam('id'));
$track = Tracks::model()->getByPK($id);
if (empty($_POST['name']) || $track->isEmpty()) {
App::error404();
}
$trip = Trips::model()->getByPK($track->tripId);
if ($trip->isEmpty() || $trip->owner != App::$user->id) {
App::error404();
}
$track->name = trim($_POST['name']);
$track->description = trim($_POST['description']);
$track->save();
$trip->json = '';
$trip->save();
}
}

View File

@ -44,6 +44,7 @@ class TracksController extends Controller
self::render('/tracks/edit.php', array(
'trip' => $trip,
'tracks' => Tracks::model()->getAll(array('where' => '`tripId` = ' . $trip->id)),
));
}

View File

@ -14,4 +14,8 @@ class Tracks extends Model
return new self();
}
function distance()
{
return Geo::formatedDistance($this->distance);
}
}

View File

@ -2,9 +2,9 @@
<span class="glyphicon glyphicon-home" aria-hidden="true"></span>
Выйти из редактора
</a>
<h3>Редактор треков</h3>
<form onfocusout="saveChangesTrip()">
<a href="/?track=<?= $trip->id ?>" class="btn btn-success pull-right"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span></a>
<h3 onclick="$('#tripBlock').toggle(100)" style="cursor: pointer;">Свойства трека</h3>
<form onfocusout="saveChangesTrip()" id="tripBlock">
<div class="form-group">
<label for="tripName">Название трека</label>
<input type="text" class="form-control" id="tripName" placeholder="Великолепное путешествие <?= date('Y') ?>" value="<?= $trip->name ?>">
@ -25,8 +25,34 @@
<span id="tripSavedOK" style="color: #999; display: none;">изменения сохранены...</span>
<span id="tripSavedError" style="color: #900; display: none;">при сохранении возникла ошибка!</span>
<br/>
</form>
<?php if ($tracks): ?>
<h3 onclick="$('#tracksBlock').toggle()" style="cursor: pointer;">Фрагменты трека</h3>
<div id="tracksBlock" style="">
<!--<hr/>-->
<?php foreach ($tracks as $track): ?>
<form onfocusout="saveChangesTrack(<?= $track->id ?>)" class="form-horizontal">
<div class="form-group">
<div style="font-size: 20px" class="col-sm-1"><?= $track->distance() ?></div>
<div class="col-sm-2">
<input type="text" class="form-control" id="trackName<?= $track->id ?>" placeholder="День №__" value="<?= $track->name ?>">
</div>
<div class="col-sm-8">
<input type="text" class="form-control" id="trackDescription<?= $track->id ?>" placeholder="В этот день..." value="<?= $track->description ?>">
</div>
<div class="col-sm-1">
<a href="/edittrack/deletetrack/id/<?= $track->id ?>" class="btn btn-danger" onclick="return confirm('Вы уверены, что хотите удалить фрагмент трека?')"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
</div>
</div>
</form>
<!--<hr/>-->
<?php endforeach; ?>
<span id="trackSavedOK" style="color: #999; display: none;">изменения сохранены...</span>
<span id="trackSavedError" style="color: #900; display: none;">при сохранении возникла ошибка!</span>
</div>
<?php endif; ?>
<script lang="javascript">
function saveChangesTrip()
@ -53,4 +79,28 @@
}
});
}
function saveChangesTrack(id)
{
$('#trackSavedOK').hide();
$('#trackSavedError').hide();
$.ajax({
url: "/edittrack/track/id/" + id,
method: "POST",
data: {
name: $('#trackName' + id).val(),
description: $('#trackDescription' + id).val()
},
success: function (data) {
$('#trackSavedOK').show();
setTimeout(function () {
$('#trackSavedOK').fadeOut(300);
}, 2000);
},
error: function (data) {
$('#trackSavedError').show();
}
});
}
</script>