Prepare forms for manual journey entry and editing
This commit is contained in:
parent
d4269a8fe4
commit
beb17acb84
5 changed files with 224 additions and 3 deletions
|
@ -1475,8 +1475,10 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
|
||||||
$authed_r->get('/history')->to('traveling#history');
|
$authed_r->get('/history')->to('traveling#history');
|
||||||
$authed_r->get('/history/:year')->to('traveling#yearly_history');
|
$authed_r->get('/history/:year')->to('traveling#yearly_history');
|
||||||
$authed_r->get('/history/:year/:month')->to('traveling#monthly_history');
|
$authed_r->get('/history/:year/:month')->to('traveling#monthly_history');
|
||||||
|
$authed_r->get('/journey/add')->to('traveling#add_journey_form');
|
||||||
$authed_r->get('/journey/:id')->to('traveling#journey_details');
|
$authed_r->get('/journey/:id')->to('traveling#journey_details');
|
||||||
$authed_r->get('/s/*station')->to('traveling#station');
|
$authed_r->get('/s/*station')->to('traveling#station');
|
||||||
|
$authed_r->post('/journey/edit')->to('traveling#edit_journey');
|
||||||
$authed_r->post('/change_password')->to('account#change_password');
|
$authed_r->post('/change_password')->to('account#change_password');
|
||||||
$authed_r->post('/delete')->to('account#delete');
|
$authed_r->post('/delete')->to('account#delete');
|
||||||
$authed_r->post('/logout')->to('account#do_logout');
|
$authed_r->post('/logout')->to('account#do_logout');
|
||||||
|
|
|
@ -378,6 +378,8 @@ sub journey_details {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
my ( $uid, $checkout_id ) = split( qr{-}, $self->stash('id') );
|
my ( $uid, $checkout_id ) = split( qr{-}, $self->stash('id') );
|
||||||
|
|
||||||
|
$self->param( journey_id => $checkout_id );
|
||||||
|
|
||||||
if ( not( $uid == $self->current_user->{id} and $checkout_id ) ) {
|
if ( not( $uid == $self->current_user->{id} and $checkout_id ) ) {
|
||||||
$self->render(
|
$self->render(
|
||||||
'journey',
|
'journey',
|
||||||
|
@ -411,4 +413,60 @@ sub journey_details {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub edit_journey {
|
||||||
|
my ($self) = @_;
|
||||||
|
my $checkout_id = $self->param('journey_id');
|
||||||
|
my $uid = $self->current_user->{id};
|
||||||
|
|
||||||
|
if ( not( $uid == $self->current_user->{id} and $checkout_id ) ) {
|
||||||
|
$self->render(
|
||||||
|
'edit_journey',
|
||||||
|
error => 'notfound',
|
||||||
|
journey => {}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @journeys = $self->get_user_travels(
|
||||||
|
uid => $uid,
|
||||||
|
checkout_id => $checkout_id,
|
||||||
|
);
|
||||||
|
if ( @journeys == 0
|
||||||
|
or not $journeys[0]{completed}
|
||||||
|
or $journeys[0]{ids}[1] != $checkout_id )
|
||||||
|
{
|
||||||
|
$self->render(
|
||||||
|
'edit_journey',
|
||||||
|
error => 'notfound',
|
||||||
|
journey => {}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $journey = $journeys[0];
|
||||||
|
|
||||||
|
for my $key (qw(sched_departure rt_departure sched_arrival rt_arrival)) {
|
||||||
|
if ( $journey->{$key} and $journey->{$key}->epoch ) {
|
||||||
|
$self->param(
|
||||||
|
$key => $journey->{$key}->strftime('%d.%m.%Y %H:%M') );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $journey->{route} ) {
|
||||||
|
$self->param( route => join( "\n", @{ $journey->{route} } ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
$self->render(
|
||||||
|
'edit_journey',
|
||||||
|
error => undef,
|
||||||
|
journey => $journey
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub add_journey_form {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
$self->render( 'add_journey', error => undef );
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
63
templates/add_journey.html.ep
Normal file
63
templates/add_journey.html.ep
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<h1>Zugfahrt eingeben</h1>
|
||||||
|
% if ($error) {
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<div class="card red darken-4">
|
||||||
|
<div class="card-content white-text">
|
||||||
|
<span class="card-title">Ungültige Eingabe</span>
|
||||||
|
<p><%= $error %></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
% }
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<ul>
|
||||||
|
<li>Eingabe des Zugs als „Zug Typ Nummer“ oder „Zug Nummer“, z.B.
|
||||||
|
„ICE 100“, „S 1 31133“ oder „ABR RE11 26720“</li>
|
||||||
|
<li>Zeitangaben im Format DD.MM.YYYY HH:MM</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
%= form_for '/journey/add' => (method => 'POST') => begin
|
||||||
|
%= csrf_field
|
||||||
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
%= text_field 'train', id => 'train', class => 'validate', required => undef, pattern => '[0-9a-zA-Z]+ +[0-9a-zA-Z]* *[0-9]+'
|
||||||
|
<label for="train">Zug (Typ Linie Nummer)</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
%= text_field 'sched_departure', id => 'sched_departure', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
<label for="sched_departure">Geplante Abfahrt</label>
|
||||||
|
</div>
|
||||||
|
<div class="input-field col s12">
|
||||||
|
%= text_field 'rt_departure', id => 'rt_departure', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
<label for="rt_departure">Tatsächliche Abfahrt (optional)</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
%= text_field 'sched_arrival', id => 'sched_arrival', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
<label for="sched_arrival">Geplante Ankunft</label>
|
||||||
|
</div>
|
||||||
|
<div class="input-field col s12">
|
||||||
|
%= text_field 'rt_arrival', id => 'rt_arrival', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
<label for="rt_arrival">Tatsächliche Ankunft (optional)</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s3 m3 l3">
|
||||||
|
</div>
|
||||||
|
<div class="col s6 m6 l6 center-align">
|
||||||
|
<button class="btn waves-effect waves-light" type="submit" name="action" value="save">
|
||||||
|
Hinzufügen
|
||||||
|
<i class="material-icons right">send</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="col s3 m3 l3">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
%= end
|
94
templates/edit_journey.html.ep
Normal file
94
templates/edit_journey.html.ep
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
% if ($error and $error eq 'notfound') {
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<div class="card red darken-4">
|
||||||
|
<div class="card-content white-text">
|
||||||
|
<span class="card-title">Fehler</span>
|
||||||
|
<p>Zugfahrt nicht gefunden.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
% }
|
||||||
|
% else {
|
||||||
|
% if ($error) {
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<div class="card red darken-4">
|
||||||
|
<div class="card-content white-text">
|
||||||
|
<span class="card-title">Ungültige Eingabe</span>
|
||||||
|
<p><%= $error %></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
% }
|
||||||
|
%= form_for '/journey/edit' => (method => 'POST') => begin
|
||||||
|
%= csrf_field
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
<p>
|
||||||
|
Fahrt von
|
||||||
|
<b><%= $journey->{from_name} %></b>
|
||||||
|
nach
|
||||||
|
<b><%= $journey->{to_name} %></b>
|
||||||
|
am
|
||||||
|
<b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b>
|
||||||
|
</p>
|
||||||
|
<table class="striped">
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Zug</th>
|
||||||
|
<td>
|
||||||
|
<%= $journey->{type} %> <%= $journey->{no} %>
|
||||||
|
% if ($journey->{line}) {
|
||||||
|
(Linie <%= $journey->{line} %>)
|
||||||
|
% }
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Geplante Abfahrt</th>
|
||||||
|
<td>
|
||||||
|
%= text_field 'sched_departure', id => 'sched_departure', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Tatsächliche Abfahrt</th>
|
||||||
|
<td>
|
||||||
|
%= text_field 'rt_departure', id => 'real_departure', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Geplante Ankunft</th>
|
||||||
|
<td>
|
||||||
|
%= text_field 'sched_arrival', id => 'sched_arrival', class => 'validate', required => undef, pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Tatsächliche Ankunft</th>
|
||||||
|
<td>
|
||||||
|
%= text_field 'rt_arrival', id => 'real_arrival', class => 'validate', pattern => '[0-9][0-9]?[.][0-9][0-9]?[.][0-9][0-9][0-9][0-9] +[0-9][0-9]:[0-9][0-9]'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Route</th>
|
||||||
|
<td>
|
||||||
|
%= text_area 'route', id => 'route', cols => 40, rows => 20
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s3 m3 l3">
|
||||||
|
</div>
|
||||||
|
<div class="col s6 m6 l6 center-align">
|
||||||
|
<button class="btn waves-effect waves-light" type="submit" name="action" value="save">
|
||||||
|
Speichern
|
||||||
|
<i class="material-icons right">send</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="col s3 m3 l3">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
%= end
|
||||||
|
% }
|
|
@ -129,8 +129,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s3 m3 l3">
|
|
||||||
</div>
|
|
||||||
<div class="col s6 m6 l6 center-align">
|
<div class="col s6 m6 l6 center-align">
|
||||||
<a class="waves-effect waves-light red btn action-delete"
|
<a class="waves-effect waves-light red btn action-delete"
|
||||||
data-id="<%= join(q{,}, @{$journey->{ids}}) %>"
|
data-id="<%= join(q{,}, @{$journey->{ids}}) %>"
|
||||||
|
@ -140,7 +138,13 @@
|
||||||
Löschen
|
Löschen
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s3 m3 l3">
|
<div class="col s6 m6 l6 center-align">
|
||||||
|
%= form_for '/journey/edit' => (method => 'POST') => begin
|
||||||
|
%= hidden_field 'journey_id' => param('journey_id')
|
||||||
|
<button class="btn waves-effect waves-light" type="submit" name="action" value="edit" disabled="disabled">
|
||||||
|
Bearbeiten
|
||||||
|
</button>
|
||||||
|
%= end
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
% }
|
% }
|
||||||
|
|
Loading…
Reference in a new issue