Add edit form for the location.
This commit is contained in:
parent
1b3fc58d44
commit
9227016086
3 changed files with 245 additions and 5 deletions
|
@ -40,7 +40,7 @@ class LocationController extends Controller
|
|||
* @Method("GET")
|
||||
* @Template("CalciferBundle:Event:index.html.twig")
|
||||
*/
|
||||
public function showAction($slug,$format)
|
||||
public function showAction($slug, $format)
|
||||
{
|
||||
/** @var EntityManager $em */
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
@ -58,17 +58,17 @@ class LocationController extends Controller
|
|||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
$now = new \DateTime();
|
||||
$now->setTime(0,0,0);
|
||||
$now->setTime(0, 0, 0);
|
||||
|
||||
/** @var QueryBuilder $qb */
|
||||
$qb = $em->createQueryBuilder();
|
||||
$qb ->select(array('e'))
|
||||
$qb->select(array('e'))
|
||||
->from('CalciferBundle:Event', 'e')
|
||||
->where('e.startdate >= :startdate')
|
||||
->andWhere('e.locations_id = :location')
|
||||
->orderBy('e.startdate')
|
||||
->setParameter('startdate',$now)
|
||||
->setParameter('location',$location->id);
|
||||
->setParameter('startdate', $now)
|
||||
->setParameter('location', $location->id);
|
||||
$entities = $qb->getQuery()->execute();
|
||||
|
||||
if ($format == 'ics') {
|
||||
|
@ -118,4 +118,73 @@ class LocationController extends Controller
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds and displays a Event entity.
|
||||
*
|
||||
* @Route("/{slug}/bearbeiten", name="location_edit")
|
||||
* @Method("GET")
|
||||
* @Template()
|
||||
*/
|
||||
public function editAction($slug)
|
||||
{
|
||||
/** @var EntityManager $em */
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
/** @var EntityRepository $repo */
|
||||
$repo = $em->getRepository('CalciferBundle:Location');
|
||||
|
||||
/** @var Location $location */
|
||||
$location = $repo->findOneBy(['slug' => $slug]);
|
||||
|
||||
if (!$location) {
|
||||
throw $this->createNotFoundException('Unable to find Location entity.');
|
||||
}
|
||||
|
||||
return [
|
||||
'entity' => $location
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds and displays a Event entity.
|
||||
*
|
||||
* @Route("/{slug}/bearbeiten", name="location_update")
|
||||
* @Method("POST")
|
||||
*/
|
||||
public function updateAction(Request $request, $slug) {
|
||||
/** @var EntityManager $em */
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
/** @var EntityRepository $repo */
|
||||
$repo = $em->getRepository('CalciferBundle:Location');
|
||||
|
||||
/** @var Location $location */
|
||||
$location = $repo->findOneBy(['slug' => $slug]);
|
||||
|
||||
if (!$location) {
|
||||
throw $this->createNotFoundException('Unable to find Location entity.');
|
||||
}
|
||||
|
||||
if ($location->name != $request->get('name')) {
|
||||
$location->name = $request->get('name');
|
||||
$location->slug = $location->generateSlug($location->name,$em);
|
||||
}
|
||||
$location->streetaddress = $request->get('streetaddress');
|
||||
$location->streetnumber = $request->get('streetnumber');
|
||||
$location->zipcode = $request->get('zipcode');
|
||||
$location->city = $request->get('city');
|
||||
|
||||
$latlon = $request->get('geocords');
|
||||
$latlon = explode(',',$latlon);
|
||||
if (count($latlon) == 2) {
|
||||
$location->lat = $latlon[0];
|
||||
$location->lon = $latlon[1];
|
||||
}
|
||||
|
||||
$em->persist($location);
|
||||
$em->flush();
|
||||
|
||||
return $this->redirect($this->generateUrl('location_show', array('slug' => $location->slug)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,4 +44,9 @@ form .ui.form {
|
|||
|
||||
#map {
|
||||
height: 20rem;
|
||||
|
||||
.location-edit {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,166 @@
|
|||
{% extends 'CalciferBundle::layout.html.twig' %}
|
||||
|
||||
{% block css %}
|
||||
{% stylesheets filter="compass"
|
||||
"@CalciferBundle/Resources/assets/css/jquery.datetimepicker.scss"
|
||||
"@CalciferBundle/Resources/assets/css/events.scss"
|
||||
"@CalciferBundle/Resources/assets/css/leaflet.scss" %}
|
||||
<link rel="stylesheet" href="{{ asset_url }}"/>
|
||||
{% endstylesheets %}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
{% javascripts
|
||||
"@CalciferBundle/Resources/assets/js/jquery.datetimepicker.js"
|
||||
"@CalciferBundle/Resources/assets/js/events.js"
|
||||
"@CalciferBundle/Resources/assets/js/leaflet.js" %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
{% endjavascripts %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body -%}
|
||||
<div class="ui one column page grid">
|
||||
<div class="ui column">
|
||||
<h1>Termin bearbeiten</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui one column page grid">
|
||||
<div class="ui column">
|
||||
<form method="post"
|
||||
action="{{ path('location_update',{'slug':entity.slug}) }}">
|
||||
<div class="ui form segment">
|
||||
<div class="field">
|
||||
<label class="" for="location-name">Name</label>
|
||||
|
||||
<div class="ui left labeled input">
|
||||
<input type="text"
|
||||
id="location-name"
|
||||
name="name"
|
||||
value="{{ entity.name|default('') }}"
|
||||
required="required"
|
||||
maxlength="255"
|
||||
class="form-control">
|
||||
|
||||
<div class="ui corner label">
|
||||
<i class="icon asterisk"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="control-label required" for="location-description">Beschreibung</label>
|
||||
|
||||
<div class="ui left labeled icon input attached-label">
|
||||
<textarea id="location-description" name="description">{{ entity.description|default('') }}</textarea>
|
||||
|
||||
<div class="ui bottom attached label">Du kannst hier <a
|
||||
href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> benutzen.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="" for="location-streetaddress">Straße</label>
|
||||
|
||||
<div class="ui left labeled input">
|
||||
<input type="text"
|
||||
id="location-streetaddress"
|
||||
name="streetaddress"
|
||||
value="{{ entity.streetaddress|default('') }}"
|
||||
required="required"
|
||||
maxlength="255"
|
||||
class="form-control">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="" for="location-streetnumber">Hausnummer</label>
|
||||
|
||||
<div class="ui left labeled input">
|
||||
<input type="text"
|
||||
id="location-streetnumber"
|
||||
name="streetnumber"
|
||||
value="{{ entity.streetnumber|default('') }}"
|
||||
required="required"
|
||||
maxlength="255"
|
||||
class="form-control">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="" for="location-zipcode">Postleitzahl</label>
|
||||
|
||||
<div class="ui left labeled input">
|
||||
<input type="text"
|
||||
id="location-zipcode"
|
||||
name="zipcode"
|
||||
value="{{ entity.zipcode|default('') }}"
|
||||
required="required"
|
||||
maxlength="255"
|
||||
class="form-control">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="" for="location-city">Ort</label>
|
||||
|
||||
<div class="ui left labeled input">
|
||||
<input type="text"
|
||||
id="location-city"
|
||||
name="city"
|
||||
value="{{ entity.city|default('') }}"
|
||||
required="required"
|
||||
maxlength="255"
|
||||
class="form-control">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="control-label required" for="location-geocords">Geokoordinaten</label>
|
||||
|
||||
<div class="ui left labeled icon input attached-{% if entity.location.lat|default(0) > 0 %}geo-{% endif %}label">
|
||||
<input type="text"
|
||||
id="location-geocords"
|
||||
name="geocords"
|
||||
maxlength="255"
|
||||
value="{{ entity.lat|default('0') }},{{ entity.lon|default('0') }}"
|
||||
class="form-control">
|
||||
<i class="icon map marker"></i>
|
||||
<div class="ui bottom attached label">
|
||||
Gebe entweder Breitengrad und Längengrad (Mit Punkten!) kommasepariert ein oder <a href="#" class="add_geo">wähle einen Punkt auf der Karte aus</a>.
|
||||
</div>
|
||||
<div class="ui modal geo chooser">
|
||||
<i class="close icon"></i>
|
||||
<div class="header">
|
||||
Wähle einen Punkt auf der Karte
|
||||
</div>
|
||||
<div class="content">
|
||||
<div id="map"></div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui button cancel">
|
||||
Cancel
|
||||
</div>
|
||||
<div class="ui button ok">
|
||||
Okay
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<input type="submit" class="ui button blue" value="Speichern"/>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
Reference in a new issue