improved install steps #6

Merged
andibraeu merged 3 commits from master into master 2014-07-29 23:03:37 +02:00
26 changed files with 1045 additions and 3053 deletions
Showing only changes of commit 4486b3b3c0 - Show all commits

View file

@ -10,9 +10,13 @@
Diese Anleitung geht davon aus das du SSH-Zugriff auf deinen Server hast. Wenn du Calcifer auf einem Shared-Hosting-Anbieter installieren willst, so ist dies auch möglich, aber etwas komplizierter und wird irgendwann später beschrieben.
1. Das [Repo](https://phablab.krautspace.de/diffusion/C/calcifer.git) irgendwo hin clonen
2. In das calcifer Verzeichnis wechseln.
3. composer install
4. Im Verzeichnis app/config die Datei parameters.yml.dist nach parameters.yml kopieren und anpassen.
5. Dann die Tabellen erstellen: php app/console doctrine:schema:create
6. Zum Schluss must du noch deinen Webserver [konfigurieren](http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html) und dann ist calcifer auch schon erreichbar.
1. Das [Repo](https://phablab.krautspace.de/diffusion/C/calcifer.git) irgendwo hin clonen
2. In das calcifer Verzeichnis wechseln.
3. Abhängigkeiten installieren
1. composer herunterladen ```curl -sS https://getcomposer.org/installer | php```
2. Installation ausführen: ```php composer.phar install```
5. Dann die Tabellen erstellen: ```php app/console doctrine:schema:update --force```
6. Cache löschen ```php app/console cache:clear --env=prod --no-debug```
7. Assets dumpen ```php app/console assetic:dump --env=prod --no-debug```
8. Einen täglichen Cronjob anlegen, der die wiederholenden Termine anlegt: ```php app/console calcifer:events:generate```
6. Zum Schluss must du noch deinen Webserver [konfigurieren](http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html) und dann ist calcifer auch schon erreichbar.

View file

@ -0,0 +1,88 @@
<?php
/**
* Created by PhpStorm.
* User: tim
* Date: 28.07.14
* Time: 22:19
*/
namespace Hackspace\Bundle\CalciferBundle\Command;
use Doctrine\ORM\EntityManager;
use Hackspace\Bundle\CalciferBundle\Entity\Event;
use Hackspace\Bundle\CalciferBundle\Entity\RepeatingEvent;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class GenerateEventsCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('calcifer:events:generate')
->setDescription('Generate events from repeating events')
->addOption('duration', 'd', InputOption::VALUE_OPTIONAL, 'The duration you want to generate events into the future. Default is 2 monts','2 months')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$duration = \DateInterval::createFromDateString($input->getOption('duration'));
if ($duration instanceof \DateInterval) {
$now = new \DateTime();
$end = new \DateTime();
$end->add($duration);
$output->writeln(sprintf("Generating Dates from %s to %s",$now->format('Y-m-d'),$end->format('Y-m-d')));
$output->writeln("Fetching repeating events");
/** @var EntityManager $entityManager */
$entityManager = $this->getContainer()->get('doctrine')->getManager();
$repo = $entityManager->getRepository('CalciferBundle:RepeatingEvent');
$entities = $repo->findAll();
foreach($entities as $entity) {
/** @var RepeatingEvent $entity */
$period = new \DatePeriod($entity->nextdate,new \DateInterval($entity->repeating_pattern),$end);
$event = null;
foreach($period as $date) {
/** @var \DateTime $date */
$output->writeln(sprintf("Creating Event %s for %s",$entity->summary,$date->format('Y-m-d H:i')));
$event = new Event();
$event->location = $entity->location;
$event->startdate = $date;
if ($entity->duration > 0) {
$duration = new \DateInterval("PT".$entity->duration.'H');
/** @var \DateTime $enddate */
$enddate = clone $date;
$enddate->add($duration);
$entity->enddate = $enddate;
}
$event->summary = $entity->summary;
$event->description = $entity->description;
$event->url = $entity->url;
$entityManager->persist($event);
$entityManager->flush();
$event->slug = \URLify::filter($event->id . '-' . $event->summary,255,'de');
$entityManager->persist($event);
$entityManager->flush();
foreach($entity->getTags() as $tag) {
$event->addTag($tag);
}
$entityManager->persist($event);
$entityManager->flush();
}
if (!is_null($event)) {
$entity->nextdate = $event->startdate;
$entity->nextdate->add(new \DateInterval($entity->repeating_pattern));
$entityManager->persist($entity);
$entityManager->flush();
}
}
} else {
$output->writeln('Invalid duration');
}
}
}

View file

@ -59,76 +59,8 @@ class EventController extends Controller
public function createAction(Request $request)
{
$entity = new Event();
$entity->setDescription($request->get('description'));
$entity->setSummary($request->get('summary'));
$entity->setUrl($request->get('url'));
$startdate = $request->get('startdate');
$startdate = new \DateTime($startdate);
$entity->setStartdate($startdate);
$entity->setSlug(\URLify::filter($entity->getSummary(),255,'de'));
$enddate = $request->get('enddate');
if (strlen($enddate) > 0) {
$enddate = new \DateTime($enddate);
$entity->setenddate($enddate);
}
$location = $request->get('location');
$location_lat = $request->get('location_lat');
$location_lon = $request->get('location_lon');
if (strlen($location) > 0) {
// check if the location already exists
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('CalciferBundle:Location');
$results = $repo->findBy(['name' => $location]);
if (count($results) > 0) {
$location_obj = $results[0];
if (strlen($location_lat) > 0) {
$location_obj->setLat($location_lat);
}
if (strlen($location_lon) > 0) {
$location_obj->setLon($location_lon);
}
$em->persist($location_obj);
$em->flush();
$entity->setLocation($results[0]);
} else {
$location_obj = new Location();
$location_obj->setName($location);
if (strlen($location_lat) > 0) {
$location_obj->setLat($location_lat);
}
if (strlen($location_lon) > 0) {
$location_obj->setLon($location_lon);
}
$location_obj->setSlug(\URLify::filter($location_obj->getName(),255,'de'));
$em->persist($location_obj);
$em->flush();
$entity->setLocation($location_obj);
}
}
$tags = $request->get('tags');
if (strlen($tags) > 0) {
$tags = explode(',',$tags);
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('CalciferBundle:Tag');
foreach ($tags as $tag) {
$tag = trim($tag);
$results = $repo->findBy(['name' => $tag]);
if (count($results) > 0) {
$entity->addTag($results[0]);
} else {
$tag_obj = new Tag();
$tag_obj->setName($tag);
$tag_obj->setSlug(\URLify::filter($tag_obj->getName(),255,'de'));
$em->persist($tag_obj);
$em->flush();
$entity->addTag($tag_obj);
}
}
}
$em = $this->saveEvent($request, $entity);
if ($entity->isValid()) {
@ -136,7 +68,7 @@ class EventController extends Controller
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('_show', array('slug' => $entity->getSlug())));
return $this->redirect($this->generateUrl('_show', array('slug' => $entity->slug)));
}
return array(
@ -236,18 +168,42 @@ class EventController extends Controller
throw $this->createNotFoundException('Unable to find Event entity.');
}
$entity->setDescription($request->get('description'));
$entity->setSummary($request->get('summary'));
$entity->setUrl($request->get('url'));
$em = $this->saveEvent($request, $entity);
if ($entity->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('_show', array('slug' => $entity->slug)));
}
return array(
'entity' => $entity,
);
}
/**
* @param Request $request
* @param $entity
* @return EntityManager
*/
public function saveEvent(Request $request, Event $entity)
{
$entity->description = $request->get('description');
$entity->summary = $request->get('summary');
$entity->url = $request->get('url');
$startdate = $request->get('startdate');
$startdate = new \DateTime($startdate);
$entity->setStartdate($startdate);
$entity->setSlug(\URLify::filter($entity->getSummary(),255,'de'));
$entity->startdate = $startdate;
$entity->slug = \URLify::filter($entity->summary, 255, 'de');
$enddate = $request->get('enddate');
if (strlen($enddate) > 0) {
$enddate = new \DateTime($enddate);
$entity->setenddate($enddate);
$entity->enddate = $enddate;
}
$location = $request->get('location');
@ -262,24 +218,24 @@ class EventController extends Controller
if (count($results) > 0) {
$location_obj = $results[0];
if (strlen($location_lat) > 0) {
$location_obj->setLat($location_lat);
$location_obj->lat = $location_lat;
}
if (strlen($location_lon) > 0) {
$location_obj->setLon($location_lon);
$location_obj->lon = $location_lon;
}
$em->persist($location_obj);
$em->flush();
$entity->setLocation($results[0]);
} else {
$location_obj = new Location();
$location_obj->setName($location);
$location_obj->name = $location;
if (strlen($location_lat) > 0) {
$location_obj->setLat($location_lat);
$location_obj->lat = $location_lat;
}
if (strlen($location_lon) > 0) {
$location_obj->setLon($location_lon);
$location_obj->lon = $location_lon;
}
$location_obj->setSlug(\URLify::filter($location_obj->getName(),255,'de'));
$location_obj->slug = \URLify::filter($location_obj->name, 255, 'de');
$em->persist($location_obj);
$em->flush();
$entity->setLocation($location_obj);
@ -288,9 +244,10 @@ class EventController extends Controller
$tags = $request->get('tags');
if (strlen($tags) > 0) {
$tags = explode(',',$tags);
$tags = explode(',', $tags);
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('CalciferBundle:Tag');
$entity->clearTags();
foreach ($tags as $tag) {
$tag = trim($tag);
$results = $repo->findBy(['name' => $tag]);
@ -298,27 +255,15 @@ class EventController extends Controller
$entity->addTag($results[0]);
} else {
$tag_obj = new Tag();
$tag_obj->setName($tag);
$tag_obj->setSlug(\URLify::filter($tag_obj->getName(),255,'de'));
$tag_obj->name = $tag;
$tag_obj->slug = \URLify::filter($tag_obj->name, 255, 'de');
$em->persist($tag_obj);
$em->flush();
$entity->addTag($tag_obj);
}
}
return $em;
}
if ($entity->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('_show', array('slug' => $entity->getSlug())));
}
return array(
'entity' => $entity,
);
return $em;
}
}

View file

@ -2,6 +2,7 @@
namespace Hackspace\Bundle\CalciferBundle\Controller;
use Doctrine\Common\Annotations\Annotation\Required;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
@ -35,11 +36,11 @@ class LocationController extends Controller
/**
* Finds and displays a Event entity.
*
* @Route("/{slug}(?!\.ics)", name="location_show")
* @Route("/{slug}.{format}", name="location_show", defaults={"format" = "html"})
* @Method("GET")
* @Template("CalciferBundle:Event:index.html.twig")
*/
public function showAction($slug)
public function showAction($slug,$format)
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
@ -67,39 +68,23 @@ class LocationController extends Controller
->andWhere('e.locations_id = :location')
->orderBy('e.startdate')
->setParameter('startdate',$now)
->setParameter('location',$location->getId());
->setParameter('location',$location->id);
$entities = $qb->getQuery()->execute();
return array(
'entities' => $entities,
'location' => $location,
);
}
/**
* Finds and displays a Event entity.
*
* @Route("/{slug}\.ics", name="location_show_ics")
* @Method("GET")
*/
public function showActionICS($slug)
{
$results = $this->showAction(str_replace('.ics','',$slug));
$entities = $results['entities'];
if ($format == 'ics') {
$calendar = new Calendar();
$calendar->setProdId('-//My Company//Cool Calendar App//EN');
foreach($entities as $entity) {
foreach ($entities as $entity) {
/** @var Event $entity */
$event = new CalendarEvent();
$event->setStart($entity->getStartdate());
if ($entity->getEnddate() instanceof DateTime)
$event->setEnd($entity->getEnddate());
$event->setSummary($entity->getSummary());
$event->setDescription($entity->getDescription());
$event->setStart($entity->startdate);
if ($entity->enddate instanceof \DateTime)
$event->setEnd($entity->enddate);
$event->setSummary($entity->summary);
$event->setDescription($entity->description);
$location = new \Jsvrcek\ICS\Model\Description\Location();
$location->setName($entity->getLocation()->getName());
$location->setName($entity->getLocation()->name);
$event->setLocations([$location]);
$calendar->addEvent($event);
}
@ -114,5 +99,11 @@ class LocationController extends Controller
$response->headers->set('Content-Type', 'text/calendar');
return $response;
} else {
return array(
'entities' => $entities,
'location' => $location,
);
}
}
}

View file

@ -0,0 +1,262 @@
<?php
namespace Hackspace\Bundle\CalciferBundle\Controller;
use Hackspace\Bundle\CalciferBundle\Entity\RepeatingEvent;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\Common\Annotations\Annotation\Required;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
use Hackspace\Bundle\CalciferBundle\Entity\Location;
use Hackspace\Bundle\CalciferBundle\Entity\Tag;
use Symfony\Component\Config\Definition\Exception\Exception;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Hackspace\Bundle\CalciferBundle\Entity\Event;
use Hackspace\Bundle\CalciferBundle\Form\EventType;
use Symfony\Component\HttpFoundation\Response;
/**
* Location controller.
*
* @Route("/termine/wiederholend")
*/
class RepeatingEventController extends Controller
{
/**
* Displays all repeating events
*
* @Route("/", name="repeating_event_show")
* @Method("GET")
* @Template()
*/
public function indexAction()
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
/** @var EntityRepository $repo */
$repo = $em->getRepository('CalciferBundle:RepeatingEvent');
$entities = $repo->findAll();
return [
'entities' => $entities,
];
}
/**
* Displays a form to create a repeating event
*
* @Route("/neu", name="repeating_event_new")
* @Method("GET")
* @Template()
*/
public function newAction()
{
$entity = new RepeatingEvent();
return [
'entity' => $entity,
];
}
/**
* Creates a repeating event
*
* @Route("/neu", name="repeating_event_create")
* @Method("POST")
* @Template("CalciferBundle:RepeatingEvent:new.html.twig")
*/
public function createAction(Request $request)
{
$entity = new RepeatingEvent();
$this->fillEntity($request, $entity);
if ($this->validateRepeatingEvent($entity)) {
$ret = $this->saveRepeatingEvent($request, $entity);
if ($entity->id > 0) {
return $this->redirect($this->generateUrl('repeating_event_show'));
} else {
throw new \Exception('Could not save repeating event?!?');
}
}
return [
'entity' => $entity,
];
}
/**
* Displays a form to edit a repeating event
*
* @Route("/{slug}/bearbeiten",name="repeating_event_edit")
* @Method("GET")
* @Template()
*/
public function editAction($slug)
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
/** @var EntityRepository $repo */
$repo = $em->getRepository('CalciferBundle:RepeatingEvent');
/** @var Event $entity */
$entity = $repo->findOneBy(['slug' => $slug]);
if (!$entity) {
throw $this->createNotFoundException('Unable to find RepeatingEvent entity.');
}
return array(
'entity' => $entity,
);
}
/**
* Updates a repeating event
*
* @Route("/{slug}/bearbeiten",name="repeating_event_update")
* @Method("POST")
* @Template("CalciferBundle:RepeatingEvent:edit.html.twig")
*/
public function updateAction(Request $request, $slug)
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
/** @var EntityRepository $repo */
$repo = $em->getRepository('CalciferBundle:RepeatingEvent');
/** @var Event $entity */
$entity = $repo->findOneBy(['slug' => $slug]);
if (!$entity) {
throw $this->createNotFoundException('Unable to find RepeatingEvent entity.');
}
$this->fillEntity($request, $entity);
if ($this->validateRepeatingEvent($entity)) {
$ret = $this->saveRepeatingEvent($request, $entity);
if ($entity->id > 0) {
return $this->redirect($this->generateUrl('repeating_event_show'));
} else {
throw new \Exception('Could not save repeating event?!?');
}
}
return [
'entity' => $entity,
];
}
private function fillEntity(Request $request, RepeatingEvent $entity)
{
$fields = [
'duration',
'repeating_pattern',
'summary',
'description',
'url',
];
foreach ($fields as $field) {
$entity->$field = $request->get($field);
}
if (strlen($entity->duration) == 0)
$entity->duration = null;
$nextdate = $request->get('nextdate');
$nextdate = new \DateTime($nextdate);
$entity->nextdate = $nextdate;
}
private function validateRepeatingEvent(RepeatingEvent $entity)
{
$fields = [
'nextdate',
'repeating_pattern',
'summary',
];
foreach ($fields as $field) {
if ((is_null($entity->$field)) && (strlen($entity->$field) > 0))
return false;
}
return true;
}
private function saveRepeatingEvent(Request $request, RepeatingEvent $entity)
{
$location = $request->get('location');
$location_lat = $request->get('location_lat');
$location_lon = $request->get('location_lon');
if (strlen($location) > 0) {
// check if the location already exists
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('CalciferBundle:Location');
$results = $repo->findBy(['name' => $location]);
if (count($results) > 0) {
$location_obj = $results[0];
if (strlen($location_lat) > 0) {
$location_obj->lat = $location_lat;
}
if (strlen($location_lon) > 0) {
$location_obj->lon = $location_lon;
}
$em->persist($location_obj);
$em->flush();
$entity->location = $results[0];
} else {
$location_obj = new Location();
$location_obj->name = $location;
if (strlen($location_lat) > 0) {
$location_obj->lat = $location_lat;
}
if (strlen($location_lon) > 0) {
$location_obj->lon = $location_lon;
}
$location_obj->slug = \URLify::filter($location_obj->name, 255, 'de');
$em->persist($location_obj);
$em->flush();
$entity->location = $location_obj;
}
} else {
$entity->location = null;
}
$tags = $request->get('tags');
if (strlen($tags) > 0) {
$tags = explode(',', $tags);
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('CalciferBundle:Tag');
$entity->clearTags();
foreach ($tags as $tag) {
$tag = trim($tag);
$results = $repo->findBy(['name' => $tag]);
if (count($results) > 0) {
$entity->addTag($results[0]);
} else {
$tag_obj = new Tag();
$tag_obj->name = $tag;
$tag_obj->slug = \URLify::filter($tag_obj->name, 255, 'de');
$em->persist($tag_obj);
$em->flush();
$entity->addTag($tag_obj);
}
}
} else {
$entity->clearTags();
}
$entity->slug = \URLify::filter($entity->summary,255,'de');
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $entity;
}
}

View file

@ -35,11 +35,11 @@ class TagController extends Controller
/**
* Finds and displays a Event entity.
*
* @Route("/{slug}(?!\.ics)", name="tag_show")
* @Route("/{slug}.{format}", defaults={"format" = "html"}, name="tag_show")
* @Method("GET")
* @Template("CalciferBundle:Event:index.html.twig")
*/
public function showAction($slug)
public function showAction($slug, $format)
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
@ -55,47 +55,32 @@ class TagController extends Controller
}
$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')
->join('e.tags', 't', 'WITH', $qb->expr()->in('t.id', $tag->getId()))
->join('e.tags', 't', 'WITH', $qb->expr()->in('t.id', $tag->id))
->where('e.startdate >= :startdate')
->orderBy('e.startdate')
->setParameter('startdate',$now);
->setParameter('startdate', $now);
$entities = $qb->getQuery()->execute();
return array(
'entities' => $entities,
'tag' => $tag,
);
}
/**
* Finds and displays a Event entity.
*
* @Route("/{slug}.ics", name="tag_show_ics")
* @Method("GET")
*/
public function showActionICS($slug)
{
$results = $this->showAction(str_replace('.ics','',$slug));
$entities = $results['entities'];
if ($format == 'ics') {
$calendar = new Calendar();
$calendar->setProdId('-//My Company//Cool Calendar App//EN');
foreach($entities as $entity) {
foreach ($entities as $entity) {
/** @var Event $entity */
$event = new CalendarEvent();
$event->setStart($entity->getStartdate());
$event->setEnd($entity->getEnddate());
$event->setSummary($entity->getSummary());
$event->setDescription($entity->getDescription());
$event->setStart($entity->startdate);
if ($entity->enddate instanceof \DateTime)
$event->setEnd($entity->enddate);
$event->setSummary($entity->summary);
$event->setDescription($entity->description);
$location = new \Jsvrcek\ICS\Model\Description\Location();
$location->setName($entity->getLocation()->getName());
$location->setName($entity->location->name);
$event->setLocations([$location]);
$calendar->addEvent($event);
}
@ -110,5 +95,11 @@ class TagController extends Controller
$response->headers->set('Content-Type', 'text/calendar');
return $response;
} else {
return array(
'entities' => $entities,
'tag' => $tag,
);
}
}
}

View file

@ -0,0 +1,63 @@
<?php
/**
* Created by PhpStorm.
* User: tim
* Date: 13.07.14
* Time: 13:55
*/
namespace Hackspace\Bundle\CalciferBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
/**
* A baseclass for all other entities
*
* @property integer $id
* @property string $slug
*
* @ORM\MappedSuperclass
*/
abstract class BaseEntity {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="slug", type="string", length=255,options={"default" = ""})
*/
protected $slug = '';
public function __isset($name) {
if (property_exists($this,$name)) {
return true;
} else {
return false;
}
}
public function __get($name) {
if (property_exists($this,$name)) {
return $this->$name;
} else {
throw new \Exception("Property {$name} does not Exists");
}
}
public function __set($name,$value) {
if (property_exists($this,$name)) {
$this->$name = $value;
return $this;
} else {
throw new \Exception("Property {$name} does not Exists");
}
}
}

View file

@ -3,59 +3,59 @@
namespace Hackspace\Bundle\CalciferBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
/**
* Event
*
* @property \DateTime $startdate
* @property \DateTime $enddate
* @property string $summary
* @property string $description
* @property Location $location
* @property string $url
* @property array $tags
*
* @ORM\Table(name="events")
* @ORM\Entity
*/
class Event
class Event extends BaseEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
use TagTrait;
/**
* @var \DateTime
*
* @ORM\Column(name="startdate", type="datetimetz")
*/
private $startdate;
protected $startdate;
/**
* @var \DateTime
*
* @ORM\Column(name="enddate", type="datetimetz", nullable=true)
*/
private $enddate;
protected $enddate;
/**
* @var string
*
* @ORM\Column(name="summary", type="string", length=255)
*/
private $summary;
protected $summary;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
protected $description;
/**
* @var string
*
* @ORM\Column(name="locations_id", type="integer", nullable=true)
*/
private $locations_id;
protected $locations_id;
/**
* @var Location
@ -63,14 +63,14 @@ class Event
* @ORM\ManyToOne(targetEntity="Location")
* @ORM\JoinColumn(name="locations_id", referencedColumnName="id")
*/
private $location;
protected $location;
/**
* @var string
*
* @ORM\Column(name="url", type="string", length=255, nullable=true)
*/
private $url;
protected $url;
/**
* @var array
@ -81,179 +81,7 @@ class Event
* inverseJoinColumns={@ORM\JoinColumn(name="tags_id", referencedColumnName="id")}
* )
*/
private $tags = [];
/**
* @var string
*
* @ORM\Column(name="slug", type="string", length=255,options={"default" = ""})
*/
private $slug = '';
/**
* @param string $slug
*/
public function setSlug($slug)
{
$this->slug = $slug;
}
/**
* @return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set startdate
*
* @param \DateTime $startdate
* @return Event
*/
public function setStartdate($startdate)
{
$this->startdate = $startdate;
return $this;
}
/**
* Get startdate
*
* @return \DateTime
*/
public function getStartdate()
{
return $this->startdate;
}
/**
* Set enddate
*
* @param \DateTime $enddate
* @return Event
*/
public function setEnddate($enddate)
{
$this->enddate = $enddate;
return $this;
}
/**
* Get enddate
*
* @return \DateTime
*/
public function getEnddate()
{
return $this->enddate;
}
/**
* Set summary
*
* @param string $summary
* @return Event
*/
public function setSummary($summary)
{
$this->summary = $summary;
return $this;
}
/**
* Get summary
*
* @return string
*/
public function getSummary()
{
return $this->summary;
}
/**
* Set description
*
* @param string $description
* @return Event
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set location
*
* @param string $locations_id
* @return Event
*/
public function setLocationsID($locations_id)
{
$this->locations_id = $locations_id;
return $this;
}
/**
* Get location
*
* @return string
*/
public function getLocationsID()
{
return $this->locations_id;
}
/**
* Set url
*
* @param string $url
* @return Event
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
/**
* Get url
*
* @return string
*/
public function getUrl()
{
return $this->url;
}
protected $tags = [];
/**
* @param \Hackspace\Bundle\CalciferBundle\Entity\Location $location
@ -273,41 +101,7 @@ class Event
return $this->location;
}
public function getTags() {
return $this->tags;
}
public function hasTag(Tag $tag) {
if ($this->tags instanceof PersistentCollection) {
return $this->tags->contains($tag);
} elseif (is_array($this->tags)) {
return in_array($tag,$this->tags);
} else {
return false;
}
}
public function addTag(Tag $tag) {
/** @var PersistentCollection $this->tags */
if (!$this->hasTag($tag)) {
$this->tags[] = $tag;
}
}
public function isValid() {
return true;
}
public function getTagsAsText() {
if (count($this->tags) > 0) {
$tags = [];
foreach ($this->tags as $tag) {
$tags[] = $tag->getName();
}
return implode(',',$tags);
} else {
return '';
}
}
}

View file

@ -10,138 +10,28 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="locations")
* @ORM\Entity
*/
class Location
class Location extends BaseEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
protected $name;
/**
* @var float
*
* @ORM\Column(name="lon", type="float", nullable=true)
*/
private $lon;
protected $lon;
/**
* @var float
*
* @ORM\Column(name="lat", type="float", nullable=true)
*/
private $lat;
/**
* @var string
*
* @ORM\Column(name="slug", type="string", length=255,options={"default" = ""})
*/
private $slug = '';
/**
* @param string $slug
*/
public function setSlug($slug)
{
$this->slug = $slug;
}
/**
* @return string
*/
public function getSlug()
{
return $this->slug;
}
protected $lat;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Location
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set lon
*
* @param float $lon
* @return Location
*/
public function setLon($lon)
{
$this->lon = $lon;
return $this;
}
/**
* Get lon
*
* @return float
*/
public function getLon()
{
return $this->lon;
}
/**
* Set lat
*
* @param float $lat
* @return Location
*/
public function setLat($lat)
{
$this->lat = $lat;
return $this;
}
/**
* Get lat
*
* @return float
*/
public function getLat()
{
return $this->lat;
}
}

View file

@ -0,0 +1,100 @@
<?php
namespace Hackspace\Bundle\CalciferBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
/**
* RepeatEvent
*
* @property \DateTime $nextdate
* @property integer $duration
* @property string $repeating_pattern
* @property string $summary
* @property string $description
* @property Location $location
* @property string $url
* @property array $tags
*
* @ORM\Table(name="repeating_events")
* @ORM\Entity
*/
class RepeatingEvent extends BaseEntity
{
use TagTrait;
/**
* @var \DateTime
*
* @ORM\Column(name="nextdate", type="datetimetz")
*/
protected $nextdate;
/**
* @var integer
*
* @ORM\Column(name="duration", type="integer", nullable=true)
*/
protected $duration;
/**
* @var string
*
* @ORM\Column(name="repeating_pattern", type="string", length=255)
*/
protected $repeating_pattern = '';
/**
* @var string
*
* @ORM\Column(name="summary", type="string", length=255)
*/
protected $summary;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
protected $description;
/**
* @var Location
*
* @ORM\ManyToOne(targetEntity="Location")
* @ORM\JoinColumn(name="locations_id", referencedColumnName="id")
*/
protected $location;
/**
* @var string
*
* @ORM\Column(name="url", type="string", length=255, nullable=true)
*/
protected $url;
/**
* @var array
*
* @ORM\ManyToMany(targetEntity="Tag")
* @ORM\JoinTable(name="repeating_events2tags",
* joinColumns={@ORM\JoinColumn(name="repeating_events_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tags_id", referencedColumnName="id")}
* )
*/
protected $tags = [];
public function getFormatedRepeatPattern() {
switch($this->repeating_pattern) {
case 'P7D':
return 'Wöchentlich';
case 'P14D':
return 'Alle 2 Wochen';
case 'P1M':
return 'Monatlich';
default:
return $this->repeating_pattern;
}
}
}

View file

@ -10,77 +10,12 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="tags")
* @ORM\Entity
*/
class Tag
class Tag extends BaseEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="slug", type="string", length=255,options={"default" = ""})
*/
private $slug = '';
/**
* @param string $slug
*/
public function setSlug($slug)
{
$this->slug = $slug;
}
/**
* @return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Tag
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
protected $name;
}

View file

@ -0,0 +1,61 @@
<?php
/**
* Created by PhpStorm.
* User: tim
* Date: 28.07.14
* Time: 21:00
*/
namespace Hackspace\Bundle\CalciferBundle\Entity;
use Doctrine\ORM\PersistentCollection;
use Doctrine\ORM\Mapping as ORM;
trait TagTrait
{
public function getTags()
{
return $this->tags;
}
public function clearTags()
{
if ($this->tags instanceof PersistentCollection) {
$this->tags->clear();
} elseif (is_array($this->tags)) {
$this->tags = [];
}
}
public function hasTag(Tag $tag)
{
if ($this->tags instanceof PersistentCollection) {
return $this->tags->contains($tag);
} elseif (is_array($this->tags)) {
return in_array($tag, $this->tags);
} else {
return false;
}
}
public function addTag(Tag $tag)
{
if (!$this->hasTag($tag)) {
$this->tags[] = $tag;
}
}
public function getTagsAsText()
{
if (count($this->tags) > 0) {
$tags = [];
foreach ($this->tags as $tag) {
$tags[] = $tag->name;
}
return implode(',', $tags);
} else {
return '';
}
}
}

View file

@ -0,0 +1,6 @@
$(document).ready(function(){
$('.ui.dropdown.selection')
.dropdown()
.dropdown('set value',$('.ui.dropdown.selection input[type=hidden]').val())
;
});

View file

@ -1,25 +1,31 @@
<div class="ui column">
<div class="ui segment event box">
<h2 class="ui dividing header segment green inverted"><a href="{{ path('_show', { 'slug': entity.slug }) }}">{{ entity.summary }}</a>
<h2 class="ui dividing header segment green inverted"><a
href="{{ path('_show', { 'slug': entity.slug }) }}">{{ entity.summary }}</a>
</h2>
<p class="edit">
<a href="{{ path('_edit', {'slug' : entity.slug }) }}"><i class="circular icon edit green inverted link"></i>Bearbeiten</a>
<a href="{{ path('_edit', {'slug' : entity.slug }) }}"><i
class="circular icon edit green inverted link"></i>Bearbeiten</a>
</p>
<p class="startdate ">
<i class="circular icon calendar green inverted link" title="Wann?" data-content="Wann?"></i>{{ entity.startdate.format('Y-m-d H:i') }}
<i class="circular icon calendar green inverted link" title="Wann?"
data-content="Wann?"></i>{{ entity.startdate.format('Y-m-d H:i') }}
</p>
{% if entity.location is not null %}
<p class="location">
<a href="{{ path('location_show', {'slug' : entity.location.slug }) }}"><i class="circular icon map marker green inverted link" title="Wo?" data-content="Wo?"></i>{{ entity.location.name }}</a>
<a href="{{ path('location_show', {'slug' : entity.location.slug }) }}"><i
class="circular icon map marker green inverted link" title="Wo?"
data-content="Wo?"></i>{{ entity.location.name }}</a>
</p>
{% endif %}
{% if entity.tags|length > 0 %}
<ul class="tags">
{% for tag in entity.tags %}
<li class="tag"><a href="{{ path('tag_show',{'slug' : tag.slug }) }}"><i class="circular icon tag green inverted link"></i>{{ tag.name }}</a></li>
<li class="tag"><a href="{{ path('tag_show',{'slug' : tag.slug }) }}"><i
class="circular icon tag green inverted link"></i>{{ tag.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
@ -37,6 +43,5 @@
{% else %}
<p>{{ entity.description|markdown }}</p>
{% endif %}
</div>
</div>

View file

@ -1,4 +1,4 @@
<form method="post" action="{% if entity.id > 0 %}{{ path('_update',{'slug':entity.slug}) }}{% else %}{{ path('_create') }}{% endif %}">
<form method="post" action="{% if entity.id|default(0) > 0 %}{{ path('_update',{'slug':entity.slug}) }}{% else %}{{ path('_create') }}{% endif %}">
<div class="ui form segment">
<div class="field">
<label class="control-label required" for="event_startdate">Startdatum</label>

View file

@ -18,6 +18,6 @@
{% block body -%}
<div class="ui one column page grid">
{{ include('CalciferBundle:Event:event_box.html.twig') }}
{{ include('CalciferBundle:Event:event_box.html.twig',{'entity' : entity}) }}
</div>
{% endblock %}

View file

@ -0,0 +1,37 @@
{% 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/repeating_events.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>Wiederholenden Termin bearbeiten</h1>
</div>
</div>
<div class="ui one column page grid">
<div class="ui column">
{{ include('CalciferBundle:RepeatingEvent:repeating_event_form.html.twig',{'entity':entity}) }}
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,65 @@
{% extends 'CalciferBundle::layout.html.twig' %}
{% block css %}
{% stylesheets filter="compass"
"@CalciferBundle/Resources/assets/css/events.scss" %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
{% endblock %}
{% block javascripts %}
{% javascripts
"@CalciferBundle/Resources/assets/js/events.js" %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block body -%}
<div class="ui one column page grid title">
<div class="ui column">
<h1 class="ui header">
Wiederholende Termine
</h1>
</div>
</div>
<div class="ui one column page grid stackable">
<div class="column">
<table class="ui table">
<thead>
<tr>
<th>Zusammenfassung</th>
<th>Nächstes Datum</th>
<th>Wiederholungsmuster</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{% for entity in entities %}
<tr>
<td>
{{ entity.summary }}
</td>
<td>
{{ entity.nextdate.format('Y-m-d H:i') }}
</td>
<td>
{{ entity.getFormatedRepeatPattern() }}
</td>
<td>
<a href="{{ path('repeating_event_edit', {'slug':entity.slug}) }}">Bearbeiten</a>
</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td colspan="4"><a href="{{ path('repeating_event_new') }}">Neuen wiederholenden Termin anlegen</a></td>
</tr>
</tfoot>
</table>
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,35 @@
{% 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/repeating_events.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>Wiederholenden Termin erstellen</h1>
</div>
</div>
<div class="ui one column page grid">
<div class="ui column">
{{ include('CalciferBundle:RepeatingEvent:repeating_event_form.html.twig') }}
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,166 @@
<form method="post"
action="{% if entity.id|default(0) > 0 %}{{ path('repeating_event_update',{'slug':entity.slug}) }}{% else %}{{ path('repeating_event_create') }}{% endif %}">
<div class="ui form segment">
<div class="field">
<label class="control-label required" for="event_startdate">Nächster Termin</label>
<div class="ui left labeled icon input">
<input type="datetime"
id="event_nextdate"
name="nextdate"
required="required"
value="{{ entity.nextdate.format('Y-m-d H:i')|default('') }}"
placeholder="{{ "now"|date('d.m.Y H:00') }}"
class="form-control">
<i class="icon calendar"></i>
<div class="ui corner label">
<i class="icon asterisk"></i>
</div>
</div>
</div>
<div class="field">
<label class="control-label required" for="event_duration">Dauer</label>
<div class="ui left labeled input attached-label">
<input type="text"
id="event_duration"
name="duration"
pattern="\d*"
value="{{ entity.duration }}"
class="form-control">
<div class="ui bottom attached label">
Hier gibst du bitte die Dauer der Veranstaltung in Minuten an.
</div>
</div>
</div>
<div class="field">
<label class="control-label required" for="event_duration">Wiederholungsmuster</label>
<div class="ui left labeled input">
<div class="ui dropdown selection fluid">
<input name="repeating_pattern" type="hidden" value="{{ entity.repeating_pattern|default('') }}">
<div class="default text">Bitte wähle einen Wert aus</div>
<i class="dropdown icon"></i>
<div class="menu">
<div class="item" data-value="P7D">Wöchentlich</div>
<div class="item" data-value="P14D">Jede 2. Woche</div>
<div class="item" data-value="P1M">Monatlich</div>
</div>
<div class="ui corner label">
<i class="icon asterisk"></i>
</div>
</div>
</div>
</div>
<div class="field">
<label class="" for="event_summary">Zusammenfassung</label>
<div class="ui left labeled input">
<input type="text"
id="event_summary"
name="summary"
value="{{ entity.summary|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="event_summary">Beschreibung</label>
<div class="ui left labeled icon input attached-label">
<textarea 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="control-label required" for="event_url">URL</label>
<div class="ui left labeled icon input">
<input type="text"
id="event_url"
name="url"
maxlength="255"
value="{{ entity.url|default('') }}"
class="form-control">
<i class="icon globe"></i>
</div>
</div>
<div class="field">
<label class="control-label required" for="event_location">Ort</label>
<div class="ui left labeled icon input attached-{% if entity.location.lat|default(0) > 0 %}geo-{% endif %}label">
<input type="text"
id="event_location"
name="location"
maxlength="255"
value="{{ entity.location.name|default('') }}"
class="form-control">
<input type="hidden" name="location_lat" value="{{ entity.location.lat|default('') }}">
<input type="hidden" name="location_lon" value="{{ entity.location.lon|default('') }}">
<i class="icon map marker"></i>
<div class="ui bottom attached label">
Du kannst zu diesem Ort auch Geokoordinaten <a href="#" class="add_geo">hinterlegen</a>.<br/>
<span class="coords">{% if entity.location.lat|default(0) > 0 %}Folgende Koordinaten sind angegeben: lat:{{ entity.location.lat }}, lon:{{ entity.location.lon }}{% endif %}</span>
</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>
<div class="field">
<label class="" for="event_tags">Tags</label>
<div class="ui left icon input attached-label">
<input type="text"
id="event_tags"
name="tags"
value="{{ entity.getTagsAsText() }}"
class="form-control">
<i class="icon tag"></i>
<div class="ui bottom attached label">Du kannst hier kommasepariert <a
href="https://en.wikipedia.org/wiki/Tag_%28metadata%29">Tags</a> angeben.
</div>
</div>
</div>
<input type="submit" class="ui button blue" value="Speichern"/>
</div>
</form>

View file

@ -3,6 +3,7 @@
<div class="ui column">
<div class="title item"><a href="{{ path('') }}">Calcifer</a></div>
<div class="item"><a href="{{ path('_new') }}">Neuer Termin</a> </div>
<div class="item"><a href="{{ path('repeating_event_show') }}">Wiederholende Termine</a></div>
</div>
</div>
</header>

View file

@ -1,460 +0,0 @@
/* line 1, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker {
box-shadow: 0px 5px 15px -5px rgba(0, 0, 0, 0.506);
background: #FFFFFF;
border-bottom: 1px solid #BBBBBB;
border-left: 1px solid #CCCCCC;
border-right: 1px solid #CCCCCC;
border-top: 1px solid #CCCCCC;
color: #333333;
font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
padding: 8px;
padding-left: 0px;
padding-top: 2px;
position: absolute;
z-index: 9999;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: none;
}
/* line 20, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker iframe {
position: absolute;
left: 0;
top: 0;
width: 75px;
height: 210px;
background: transparent;
border: none;
}
/*For IE8 or lower*/
/* line 31, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker button {
border: none !important;
}
/* line 35, assetic_compassiP1C2P.scss */
.xdsoft_noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
/* line 45, assetic_compassiP1C2P.scss */
.xdsoft_noselect::selection {
background: transparent;
}
/* line 49, assetic_compassiP1C2P.scss */
.xdsoft_noselect::-moz-selection {
background: transparent;
}
/* line 53, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker.xdsoft_inline {
display: inline-block;
position: static;
box-shadow: none;
}
/* line 59, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker * {
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0px;
margin: 0px;
}
/* line 66, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
display: none;
}
/* line 70, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
display: block;
}
/* line 74, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_datepicker {
width: 224px;
float: left;
margin-left: 8px;
}
/* line 80, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker {
width: 58px;
float: left;
text-align: center;
margin-left: 8px;
margin-top: 0px;
}
/* line 88, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_datepicker.active + .xdsoft_timepicker {
margin-top: 8px;
margin-bottom: 3px;
}
/* line 93, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_mounthpicker {
position: relative;
text-align: center;
}
/* line 98, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_prev, .xdsoft_datetimepicker .xdsoft_next, .xdsoft_datetimepicker .xdsoft_today_button {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAeCAYAAACsYQl4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozQjRCQjRGREU4MkNFMzExQjRDQkIyRDJDOTdBRUI1MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQjg0OUYyNTZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQjg0OUYyNDZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI5NzE3MjFBN0E2Q0UzMTFBQjJEQjgzMDk5RTNBNTdBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNCNEJCNEZERTgyQ0UzMTFCNENCQjJEMkM5N0FFQjUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aQvATgAAAfVJREFUeNrsmr1OwzAQxzGtkPjYEAuvVGAvfQIGRKADE49gdLwDDwBiZ2RhQUKwICQkWLsgFiRQuIBTucFJ/XFp4+hO+quqnZ4uvzj2nV2RpukCW/22yAgYNINmc7du7DcghCjrkqgOKjF1znpt6rZ0AGWQj7TvCU8d9UM+QAGDrhdyc2Bnc1WVVPBev9V8lBnY+rDwncWZThG4xk4lmxtJy2AHgoY/FySgbSBPwPZ8mEXbQx3aDERb0EbYAYFC7pcAtAvkMWwC0D3NX58S9D/YnoGC7nPWr3Dg9JTbtuHhDShBT8D2CBSK/iIEvVXxpuxSgh7DdgwUTL4iA92zmJb6lKB/YTsECmV+IgK947AGDIqgQ/LojsO135Hn51l2cWlov0JdGNrPUceueXRwilSVgkUyom9Rd6gbLfYTDeO+1v6orn0InTogYDGUkYLO3/wc9BdqqTCKP1Tfi+oTIaCBIL2TES+GTyruT9S61p6BHam+99DFEAgLFklYsIBHwSI9QY80H5ta+1rB/6ovaKihBJeEJbgLbBlQgl+j3lDPqA2tfQV1j3pVn8s+oKHGTSVJ+FqDLeR5bCqJ2E/BCycsoLZETXaKGs7rhKVt+9HZScrZNMi88V8P7LlDbvOZYaJVpMMmBCT4n0o8dTBoNgbdWPsRYACs3r7XyNfbnAAAAABJRU5ErkJggg==");
}
/* line 102, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_prev {
float: left;
background-position: -20px 0px;
}
/* line 107, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_today_button {
float: left;
background-position: -70px 0px;
margin-left: 5px;
}
/* line 113, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_next {
float: right;
background-position: 0px 0px;
}
/* line 121, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_next, .xdsoft_datetimepicker .xdsoft_prev, .xdsoft_datetimepicker .xdsoft_today_button {
background-color: transparent;
background-repeat: no-repeat;
border: 0px none currentColor;
cursor: pointer;
display: block;
height: 30px;
opacity: 0.5;
outline: medium none currentColor;
overflow: hidden;
padding: 0px;
position: relative;
text-indent: 100%;
white-space: nowrap;
width: 20px;
}
/* line 139, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
float: none;
background-position: -40px -15px;
height: 15px;
width: 30px;
display: block;
margin-left: 14px;
margin-top: 7px;
}
/* line 149, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
background-position: -40px 0px;
margin-bottom: 7px;
margin-top: 0px;
}
/* line 155, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
height: 151px;
overflow: hidden;
border-bottom: 1px solid #DDDDDD;
}
/* line 161, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div {
background: #F5F5F5;
border-top: 1px solid #DDDDDD;
color: #666666;
font-size: 12px;
text-align: center;
border-collapse: collapse;
cursor: pointer;
border-bottom-width: 0px;
height: 25px;
line-height: 25px;
}
/* line 174, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:first-child {
border-top-width: 0px;
}
/* line 180, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_today_button:hover,
.xdsoft_datetimepicker .xdsoft_next:hover,
.xdsoft_datetimepicker .xdsoft_prev:hover {
opacity: 1;
}
/* line 184, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label {
display: inline;
position: relative;
z-index: 9999;
margin: 0;
padding: 5px 3px;
font-size: 14px;
line-height: 20px;
font-weight: bold;
background-color: #fff;
float: left;
width: 182px;
text-align: center;
cursor: pointer;
}
/* line 200, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label:hover {
text-decoration: underline;
}
/* line 204, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
border: 1px solid #ccc;
position: absolute;
right: 0px;
top: 30px;
z-index: 101;
display: none;
background: #fff;
max-height: 160px;
overflow-y: hidden;
}
/* line 216, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect {
right: -7px;
}
/* line 220, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect {
right: 2px;
}
/* line 224, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
color: #fff;
background: #ff8000;
}
/* line 229, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
padding: 2px 10px 2px 5px;
}
/* line 233, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
background: #33AAFF;
box-shadow: #178FE5 0px 1px 3px 0px inset;
color: #fff;
font-weight: 700;
}
/* line 240, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_month {
width: 90px;
text-align: right;
}
/* line 245, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar {
clear: both;
}
/* line 249, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_year {
width: 56px;
}
/* line 253, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar table {
border-collapse: collapse;
width: 100%;
}
/* line 259, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td > div {
padding-right: 5px;
}
/* line 263, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
height: 25px;
}
/* line 267, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td, .xdsoft_datetimepicker .xdsoft_calendar th {
width: 14.2857142%;
background: #F5F5F5;
border: 1px solid #DDDDDD;
color: #666666;
font-size: 12px;
text-align: right;
padding: 0px;
border-collapse: collapse;
cursor: pointer;
height: 25px;
}
/* line 280, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
background: #F1F1F1;
}
/* line 284, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
color: #33AAFF;
}
/* line 290, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
background: #33AAFF;
box-shadow: #178FE5 0px 1px 3px 0px inset;
color: #fff;
font-weight: 700;
}
/* line 299, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
.xdsoft_datetimepicker .xdsoft_time_box > div > div.xdsoft_disabled {
opacity: 0.5;
}
/* line 303, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
opacity: 0.2;
}
/* line 308, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
color: #fff !important;
background: #ff8000 !important;
box-shadow: none !important;
}
/* line 315, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_disabled:hover {
color: inherit !important;
background: inherit !important;
/*box-shadow: inherit !important;*/
}
/* line 321, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
font-weight: 700;
text-align: center;
color: #999;
cursor: default;
}
/* line 328, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_copyright {
color: #ccc !important;
font-size: 10px;
clear: both;
float: none;
margin-left: 8px;
}
/* line 336, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_copyright a {
color: #eee !important;
}
/* line 340, assetic_compassiP1C2P.scss */
.xdsoft_datetimepicker .xdsoft_copyright a:hover {
color: #aaa !important;
}
/* line 344, assetic_compassiP1C2P.scss */
.xdsoft_time_box {
position: relative;
border: 1px solid #ccc;
}
/* line 349, assetic_compassiP1C2P.scss */
.xdsoft_scrollbar > .xdsoft_scroller {
background: #ccc !important;
height: 20px;
border-radius: 3px;
}
/* line 355, assetic_compassiP1C2P.scss */
.xdsoft_scrollbar {
position: absolute;
width: 7px;
right: 0px;
top: 0px;
bottom: 0px;
cursor: pointer;
}
/* line 364, assetic_compassiP1C2P.scss */
.xdsoft_scroller_box {
position: relative;
}
/* line 2, assetic_compass09ABip.scss */
.event.box h2 {
padding: 0.5rem;
}
/* line 4, assetic_compass09ABip.scss */
.event.box h2 a, .event.box h2 a:hover, .event.box h2 a:visited {
color: #ffffff;
}
/* line 9, assetic_compass09ABip.scss */
.event.box .startdate, .event.box .location, .event.box .url, .event.box .edit {
/*float: left;*/
display: inline;
margin: 0;
margin-right: 0.5rem;
margin-bottom: 0.5rem;
}
/* line 17, assetic_compass09ABip.scss */
.event.box ul.tags {
padding-left: 0;
/*float: left;*/
margin: 0;
margin-right: 0.5rem;
margin-bottom: 0.5rem;
display: inline;
}
/* line 24, assetic_compass09ABip.scss */
.event.box ul.tags li {
list-style-type: none;
/*float: left;*/
display: inline;
margin-right: 0.5rem;
}
/* line 35, assetic_compass09ABip.scss */
form .ui.form .field .attached-label > input, form .ui.form .field .attached-label > textarea {
margin-bottom: 2rem;
}
/* line 41, assetic_compass09ABip.scss */
#map {
height: 20rem;
}

View file

@ -1,42 +0,0 @@
/* line 2, assetic_compasscXEbLP.scss */
.event.box h2 {
padding: 0.5rem;
}
/* line 4, assetic_compasscXEbLP.scss */
.event.box h2 a, .event.box h2 a:hover, .event.box h2 a:visited {
color: #ffffff;
}
/* line 9, assetic_compasscXEbLP.scss */
.event.box .startdate, .event.box .location, .event.box .url, .event.box .edit {
/*float: left;*/
display: inline;
margin: 0;
margin-right: 0.5rem;
margin-bottom: 0.5rem;
}
/* line 17, assetic_compasscXEbLP.scss */
.event.box ul.tags {
padding-left: 0;
/*float: left;*/
margin: 0;
margin-right: 0.5rem;
margin-bottom: 0.5rem;
display: inline;
}
/* line 24, assetic_compasscXEbLP.scss */
.event.box ul.tags li {
list-style-type: none;
/*float: left;*/
display: inline;
margin-right: 0.5rem;
}
/* line 35, assetic_compasscXEbLP.scss */
form .ui.form .field .attached-label > input, form .ui.form .field .attached-label > textarea {
margin-bottom: 2rem;
}
/* line 41, assetic_compasscXEbLP.scss */
#map {
height: 20rem;
}

View file

@ -1,417 +0,0 @@
/* line 1, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker {
box-shadow: 0px 5px 15px -5px rgba(0, 0, 0, 0.506);
background: #FFFFFF;
border-bottom: 1px solid #BBBBBB;
border-left: 1px solid #CCCCCC;
border-right: 1px solid #CCCCCC;
border-top: 1px solid #CCCCCC;
color: #333333;
font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
padding: 8px;
padding-left: 0px;
padding-top: 2px;
position: absolute;
z-index: 9999;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: none;
}
/* line 20, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker iframe {
position: absolute;
left: 0;
top: 0;
width: 75px;
height: 210px;
background: transparent;
border: none;
}
/*For IE8 or lower*/
/* line 31, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker button {
border: none !important;
}
/* line 35, assetic_compassQzxHpj.scss */
.xdsoft_noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
/* line 45, assetic_compassQzxHpj.scss */
.xdsoft_noselect::selection {
background: transparent;
}
/* line 49, assetic_compassQzxHpj.scss */
.xdsoft_noselect::-moz-selection {
background: transparent;
}
/* line 53, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker.xdsoft_inline {
display: inline-block;
position: static;
box-shadow: none;
}
/* line 59, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker * {
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0px;
margin: 0px;
}
/* line 66, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
display: none;
}
/* line 70, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
display: block;
}
/* line 74, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_datepicker {
width: 224px;
float: left;
margin-left: 8px;
}
/* line 80, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker {
width: 58px;
float: left;
text-align: center;
margin-left: 8px;
margin-top: 0px;
}
/* line 88, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_datepicker.active + .xdsoft_timepicker {
margin-top: 8px;
margin-bottom: 3px;
}
/* line 93, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_mounthpicker {
position: relative;
text-align: center;
}
/* line 98, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_prev, .xdsoft_datetimepicker .xdsoft_next, .xdsoft_datetimepicker .xdsoft_today_button {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAeCAYAAACsYQl4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozQjRCQjRGREU4MkNFMzExQjRDQkIyRDJDOTdBRUI1MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQjg0OUYyNTZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQjg0OUYyNDZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI5NzE3MjFBN0E2Q0UzMTFBQjJEQjgzMDk5RTNBNTdBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNCNEJCNEZERTgyQ0UzMTFCNENCQjJEMkM5N0FFQjUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aQvATgAAAfVJREFUeNrsmr1OwzAQxzGtkPjYEAuvVGAvfQIGRKADE49gdLwDDwBiZ2RhQUKwICQkWLsgFiRQuIBTucFJ/XFp4+hO+quqnZ4uvzj2nV2RpukCW/22yAgYNINmc7du7DcghCjrkqgOKjF1znpt6rZ0AGWQj7TvCU8d9UM+QAGDrhdyc2Bnc1WVVPBev9V8lBnY+rDwncWZThG4xk4lmxtJy2AHgoY/FySgbSBPwPZ8mEXbQx3aDERb0EbYAYFC7pcAtAvkMWwC0D3NX58S9D/YnoGC7nPWr3Dg9JTbtuHhDShBT8D2CBSK/iIEvVXxpuxSgh7DdgwUTL4iA92zmJb6lKB/YTsECmV+IgK947AGDIqgQ/LojsO135Hn51l2cWlov0JdGNrPUceueXRwilSVgkUyom9Rd6gbLfYTDeO+1v6orn0InTogYDGUkYLO3/wc9BdqqTCKP1Tfi+oTIaCBIL2TES+GTyruT9S61p6BHam+99DFEAgLFklYsIBHwSI9QY80H5ta+1rB/6ovaKihBJeEJbgLbBlQgl+j3lDPqA2tfQV1j3pVn8s+oKHGTSVJ+FqDLeR5bCqJ2E/BCycsoLZETXaKGs7rhKVt+9HZScrZNMi88V8P7LlDbvOZYaJVpMMmBCT4n0o8dTBoNgbdWPsRYACs3r7XyNfbnAAAAABJRU5ErkJggg==");
}
/* line 102, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_prev {
float: left;
background-position: -20px 0px;
}
/* line 107, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_today_button {
float: left;
background-position: -70px 0px;
margin-left: 5px;
}
/* line 113, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_next {
float: right;
background-position: 0px 0px;
}
/* line 121, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_next, .xdsoft_datetimepicker .xdsoft_prev, .xdsoft_datetimepicker .xdsoft_today_button {
background-color: transparent;
background-repeat: no-repeat;
border: 0px none currentColor;
cursor: pointer;
display: block;
height: 30px;
opacity: 0.5;
outline: medium none currentColor;
overflow: hidden;
padding: 0px;
position: relative;
text-indent: 100%;
white-space: nowrap;
width: 20px;
}
/* line 139, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
float: none;
background-position: -40px -15px;
height: 15px;
width: 30px;
display: block;
margin-left: 14px;
margin-top: 7px;
}
/* line 149, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
background-position: -40px 0px;
margin-bottom: 7px;
margin-top: 0px;
}
/* line 155, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
height: 151px;
overflow: hidden;
border-bottom: 1px solid #DDDDDD;
}
/* line 161, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div {
background: #F5F5F5;
border-top: 1px solid #DDDDDD;
color: #666666;
font-size: 12px;
text-align: center;
border-collapse: collapse;
cursor: pointer;
border-bottom-width: 0px;
height: 25px;
line-height: 25px;
}
/* line 174, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:first-child {
border-top-width: 0px;
}
/* line 180, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_today_button:hover,
.xdsoft_datetimepicker .xdsoft_next:hover,
.xdsoft_datetimepicker .xdsoft_prev:hover {
opacity: 1;
}
/* line 184, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label {
display: inline;
position: relative;
z-index: 9999;
margin: 0;
padding: 5px 3px;
font-size: 14px;
line-height: 20px;
font-weight: bold;
background-color: #fff;
float: left;
width: 182px;
text-align: center;
cursor: pointer;
}
/* line 200, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label:hover {
text-decoration: underline;
}
/* line 204, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
border: 1px solid #ccc;
position: absolute;
right: 0px;
top: 30px;
z-index: 101;
display: none;
background: #fff;
max-height: 160px;
overflow-y: hidden;
}
/* line 216, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect {
right: -7px;
}
/* line 220, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect {
right: 2px;
}
/* line 224, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
color: #fff;
background: #ff8000;
}
/* line 229, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
padding: 2px 10px 2px 5px;
}
/* line 233, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
background: #33AAFF;
box-shadow: #178FE5 0px 1px 3px 0px inset;
color: #fff;
font-weight: 700;
}
/* line 240, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_month {
width: 90px;
text-align: right;
}
/* line 245, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar {
clear: both;
}
/* line 249, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_year {
width: 56px;
}
/* line 253, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar table {
border-collapse: collapse;
width: 100%;
}
/* line 259, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td > div {
padding-right: 5px;
}
/* line 263, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
height: 25px;
}
/* line 267, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td, .xdsoft_datetimepicker .xdsoft_calendar th {
width: 14.2857142%;
background: #F5F5F5;
border: 1px solid #DDDDDD;
color: #666666;
font-size: 12px;
text-align: right;
padding: 0px;
border-collapse: collapse;
cursor: pointer;
height: 25px;
}
/* line 280, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
background: #F1F1F1;
}
/* line 284, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
color: #33AAFF;
}
/* line 290, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
background: #33AAFF;
box-shadow: #178FE5 0px 1px 3px 0px inset;
color: #fff;
font-weight: 700;
}
/* line 299, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
.xdsoft_datetimepicker .xdsoft_time_box > div > div.xdsoft_disabled {
opacity: 0.5;
}
/* line 303, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
opacity: 0.2;
}
/* line 308, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
color: #fff !important;
background: #ff8000 !important;
box-shadow: none !important;
}
/* line 315, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_disabled:hover {
color: inherit !important;
background: inherit !important;
/*box-shadow: inherit !important;*/
}
/* line 321, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_calendar th {
font-weight: 700;
text-align: center;
color: #999;
cursor: default;
}
/* line 328, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_copyright {
color: #ccc !important;
font-size: 10px;
clear: both;
float: none;
margin-left: 8px;
}
/* line 336, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_copyright a {
color: #eee !important;
}
/* line 340, assetic_compassQzxHpj.scss */
.xdsoft_datetimepicker .xdsoft_copyright a:hover {
color: #aaa !important;
}
/* line 344, assetic_compassQzxHpj.scss */
.xdsoft_time_box {
position: relative;
border: 1px solid #ccc;
}
/* line 349, assetic_compassQzxHpj.scss */
.xdsoft_scrollbar > .xdsoft_scroller {
background: #ccc !important;
height: 20px;
border-radius: 3px;
}
/* line 355, assetic_compassQzxHpj.scss */
.xdsoft_scrollbar {
position: absolute;
width: 7px;
right: 0px;
top: 0px;
bottom: 0px;
cursor: pointer;
}
/* line 364, assetic_compassQzxHpj.scss */
.xdsoft_scroller_box {
position: relative;
}

File diff suppressed because one or more lines are too long

View file

@ -1,56 +0,0 @@
/**
* Created by tim on 06.07.14.
*/
// initializing with settings
function addGeoCoordinates(ev) {
return false;
}
var map = null;
$(document).ready(function () {
$('.icon.link').popup();
jQuery('input[type=datetime]').datetimepicker({lang: 'de', format: 'Y-m-d H:i'});
$('.add_geo').click(addGeoCoordinates);
map = L.map('map');
// add an OpenStreetMap tile layer
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
map.setView([51.505, -0.09], 0);
L.Icon.Default.imagePath = '/css/images';
var popup = L.popup();
var marker = L.marker();
function onMapClick(e) {
marker
.setLatLng(e.latlng)
//.setContent("You clicked the map at " + e.latlng.toString())
.addTo(map);
}
map.on('click', onMapClick);
$('.geo.chooser').modal('setting', {
closable: false,
onApprove: function () {
var coords = marker.getLatLng();
$('input[name=location_lat]').val(coords.lat);
$('input[name=location_lon]').val(coords.lng);
$('input[name=location]').css('margin-bottom','3.2rem');
$('span.coords').text('Folgende Koordinaten sind angegeben: lat:' +coords.lat + ', lon:' + coords.lng);
},
onDeny: function () {
},
onVisible: function () {
map.invalidateSize(true);
map.locate({setView: true});
}
}).modal('attach events', '.add_geo', 'show');
});