Commit ef5801e3 authored by Hermann Mayer's avatar Hermann Mayer

Started refactoring of entities. Pages can now include services, eg. contact or…

Started refactoring of entities. Pages can now include services, eg. contact or impress. So they not special routes anymore, they are common pages.
parent 35546a83
......@@ -199,9 +199,9 @@
<a target="_blank" href="http://projects.hermann-mayer.net/">Chiliprojects</a> und
<a target="_blank" href="http://ebay-tool.hermann-mayer.net/">eBay Tool</a>.
Allgemeine Informationen können Sie aus folgenden Quellen beziehen:
<a target="_blank" href="{{ path('impress') }}">Impressum</a>,
<a target="_blank" href="{{ path('home', {slug: 'impressum'}) }}">Impressum</a>,
<a target="_blank" href="{{ path('home') }}">Über mich</a> und
<a target="_blank" href="{{ path('contact') }}">Kontakt</a>.
<a target="_blank" href="{{ path('home', {slug: 'kontakt'}) }}">Kontakt</a>.
</small></p>
</div>
</div>
......
......@@ -50,31 +50,6 @@ class DefaultController extends Controller
// Get bundle config from container
$config = (object) $this->container->getParameter('jity_homepage');
// If impress settings were set write links
if (array_key_exists('site_admin', $config->impress)) {
$impress = new Page();
$impress
->setSlug('impress')
->setTitle('Impressum')
->setIcon('icon-list')
;
$pages = array_merge($pages, array($impress));
}
// If impress settings were set write links
if (array_key_exists('site_admin', $config->impress)) {
$contact = new Page();
$contact
->setSlug('contact')
->setTitle('Kontakt')
->setIcon('icon-comment')
;
$pages = array_merge($pages, array($contact));
}
return $this->render('JityHomepageBundle:Default:navigation.html.twig', array(
'pages' => $pages,
'currentSlug' => $currentSlug
......@@ -112,7 +87,7 @@ class DefaultController extends Controller
* @access public
* @return void
*/
public function showPageAction($slug)
public function showPageAction($slug, $renderService = true, Response $serviceReponse = null)
{
// Get Entity Manager
$em = $this->getDoctrine()->getEntityManager();
......@@ -130,8 +105,23 @@ class DefaultController extends Controller
return $this->forward('JityHomepageBundle:Default:showInfo', array('template' => 'homepage_notfound'));
}
// On service relation jump into
if ($service = $page->getService() and (true === $renderService)) {
$serviceReponse = $this->forward('JityHomepageBundle:Service:show', array(
'page' => $page
));
// return new Response($serviceReponse);
}
// echo '<pre>';var_dump($serviceReponse->getContent());exit;
// Return the rendered result
return $this->render('JityHomepageBundle:Default:index.html.twig', array('page' => $page));
return $this->render('JityHomepageBundle:Default:index.html.twig', array(
'page' => $page,
'service' => (isset($serviceReponse)) ? $serviceReponse->getContent() : ''
));
}
/**
......@@ -152,102 +142,5 @@ class DefaultController extends Controller
// Return the rendered result
return $this->render($templateName);
}
/**
* showImpressAction
*
* @access public
* @return void
*/
public function showImpressAction()
{
// Get bundle config from container
$config = (object) $this->container->getParameter('jity_homepage');
// Emulate the page.slug for navigation handling
$page = new Page();
$page->setSlug('impress');
// Return the rendered result
return $this->render('JityHomepageBundle:Default:impress.html.twig', array(
'config' => $config->impress,
'page' => $page
));
}
/**
* showContactAction
*
* @access public
* @return void
*/
public function showContactAction()
{
// Emulate the page.slug for navigation handling
$page = new Page();
$page->setSlug('contact');
$entity = new Contact();
$form = $this->createForm(new ContactType(), $entity);
// Return the rendered result
return $this->render('JityHomepageBundle:Default:contact.html.twig', array(
'page' => $page,
'form' => $form->createView()
));
}
/**
* sendContactMessageAction
*
* @access public
* @return void
*/
public function sendContactMessageAction()
{
$entity = new Contact();
$request = $this->getRequest();
$form = $this->createForm(new ContactType(), $entity);
$form->bind($request);
if ($form->isValid()) {
// Get bundle config from container
$config = (object) $this->container->getParameter('jity_homepage');
// Prepare and Send a Contact Email
$message = \Swift_Message::newInstance()
->setSubject('[Jity] Neue Kontakt Mitteilung wurde verfasst')
->setFrom('info@jity.de')
->setTo($config->impress['contact']['email'])
->setBody($this->renderView('JityHomepageBundle:Default:contact_email.html.twig', array(
'contact' => $entity,
'config' => $config->impress
)), 'text/html')
;
$this->get('mailer')->send($message);
// Write entitiy
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
// Write flash message and redirect back
$this->get('session')->getFlashBag()->add('success', 'Ihre Mitteilung wurde erfolgreich übermittelt.');
return $this->redirect($this->generateUrl('contact'));
}
// Emulate the page.slug for navigation handling
$page = new Page();
$page->setSlug('contact');
return $this->render('JityHomepageBundle:Default:contact.html.twig', array(
'page' => $page,
'form' => $form->createView()
));
}
}
<?php
namespace Jity\HomepageBundle\Controller;
use Jity\HomepageBundle\JityHomepageBundle;
use Jity\HomepageBundle\Entity\Contact;
use Jity\HomepageBundle\Entity\Page;
use Jity\HomepageBundle\Form\ContactType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
/**
* ServiceController
*
* @uses Controller
* @version $id$
* @author Hermann Mayer <hermann.mayer92@gmail.com>
*/
class ServiceController extends Controller
{
/**
* showAction
*
* @param Service $service
* @access public
* @return void
*/
public function showAction(Page $page)
{
// Get bundle config from container
$config = (object) $this->container->getParameter('jity_homepage');
$section = '';
$form = '';
$name = $page->getService()->getName();
if (isset($config->$name)) {
$section = $config->$name;
}
if ($name == 'contact') {
$entity = new Contact();
$form = $this
->createForm(new ContactType(), $entity)
->createView()
;
}
// Return the rendered result
return $this->render('JityHomepageBundle:Service:' . $name . '.html.twig', array(
'config' => $section,
'form' => $form
));
}
/**
* sendContactMessageAction
*
* @access public
* @return void
*/
public function sendContactMessageAction()
{
$entity = new Contact();
$request = $this->getRequest();
$form = $this->createForm(new ContactType(), $entity);
$form->bind($request);
if ($form->isValid()) {
// Get bundle config from container
$config = (object) $this->container->getParameter('jity_homepage');
// Prepare and Send a Contact Email
$message = \Swift_Message::newInstance()
->setSubject('[Jity] Neue Kontakt Mitteilung wurde verfasst')
->setFrom('info@jity.de')
->setTo($config->impress['contact']['email'])
->setBody($this->renderView('JityHomepageBundle:Service:contact_email.html.twig', array(
'contact' => $entity,
'config' => $config->impress
)), 'text/html')
;
$this->get('mailer')->send($message);
// Write entitiy
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
// Write flash message and redirect back
$this->get('session')->getFlashBag()->add('success', 'Ihre Mitteilung wurde erfolgreich übermittelt.');
return $this->redirect($this->generateUrl('home', array(
'slug' => 'kontakt'
)));
}
// Render the form with the given errors
$partial = $this->render('JityHomepageBundle:Service:contact.html.twig', array(
'form' => $form->createView()
));
// Respond the filled form over the Default Controller
return $this->forward('JityHomepageBundle:Default:showPage', array(
'slug' => 'kontakt',
'renderService' => false,
'serviceReponse' => new Response($partial->getContent())
));
}
}
......@@ -3,12 +3,28 @@
namespace Jity\HomepageBundle\DataFixtures\ORM;
use Jity\HomepageBundle\Entity\Group;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
/**
* LoadGroupData
*
* @uses AbstractFixture
* @uses OrderedFixtureInterface
* @version $id$
* @author Hermann Mayer <hermann.mayer92@gmail.com>
*/
class LoadGroupData extends AbstractFixture implements OrderedFixtureInterface
{
/**
* load
*
* @param ObjectManager $manager
* @access public
* @return void
*/
public function load(ObjectManager $manager)
{
// Build Anonymous Group
......@@ -78,6 +94,12 @@ class LoadGroupData extends AbstractFixture implements OrderedFixtureInterface
$this->addReference('anonymous-group', $anonymousGroup);
}
/**
* getOrder
*
* @access public
* @return void
*/
public function getOrder()
{
return 1;
......
<?php
namespace Jity\HomepageBundle\DataFixtures\ORM;
use Jity\HomepageBundle\Entity\Sidebar;
use Jity\HomepageBundle\Entity\Category;
use Jity\HomepageBundle\Entity\Navigation;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
/**
* LoadMetaData
*
* @uses AbstractFixture
* @uses OrderedFixtureInterface
* @version $id$
* @author Hermann Mayer <hermann.mayer92@gmail.com>
*/
class LoadMetaData extends AbstractFixture implements OrderedFixtureInterface
{
/**
* load
*
* @param ObjectManager $manager
* @access public
* @return void
*/
public function load(ObjectManager $manager)
{
// Build default Navigation
$navigation = new Navigation();
$navigation->setName('Default');
// Build default Category
$category = new Category();
$category->setName('Default');
// Build default Sidebar
$sidebar = new Sidebar();
$sidebar->setName('Default');
// Save all Metadata
$manager->persist($navigation);
$manager->persist($category);
$manager->persist($sidebar);
// Flush to Database
$manager->flush();
$this->addReference('default-navigation', $navigation);
$this->addReference('default-category', $category);
$this->addReference('default-sidebar', $sidebar);
}
/**
* getOrder
*
* @access public
* @return void
*/
public function getOrder()
{
return 3;
}
}
......@@ -2,49 +2,136 @@
namespace Jity\HomepageBundle\DataFixtures\ORM;
use Jity\HomepageBundle\Entity\Sidebar;
use Jity\HomepageBundle\Entity\Category;
use Jity\HomepageBundle\Entity\Navigation;
use Jity\HomepageBundle\Entity\Group;
use Jity\HomepageBundle\Entity\Page;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
/**
* LoadPageData
*
* @uses AbstractFixture
* @uses OrderedFixtureInterface
* @version $id$
* @author Hermann Mayer <hermann.mayer92@gmail.com>
*/
class LoadPageData extends AbstractFixture implements OrderedFixtureInterface
{
/**
* load
*
* @param ObjectManager $manager
* @access public
* @return void
*/
public function load(ObjectManager $manager)
{
// Build default Navigation
$navigation = new Navigation();
$navigation->setName('Default');
{
// Build Home Page
$home = new Page();
$home
->setSlug('home')
->setTitle('Über mich')
->setContent('<img src="{{ asset("bundles/jityhomepage/img/myself-cc3-300px.png") }}" alt="" class="img-polaroid pull-left" />
Mein Name ist Hermann Mayer, ich wurde am 02. August im Jahre 1992 in Berlin geboren und bin
in einem kleinen Örtchen Namens Augsdorf, dass im ehemaligen Mansfelder Land liegt, aufgewachsen.
Heute heißt dieser Landkreis, in Sachsen-Anhalt, Mansfeld-Südharz. Eine frohe und aufgeschlossene
Natur wurde mir in die Wiege gelegt und diese habe ich mir bis heute erhalten können, nicht
zuletzt auch durch die Art und Weise wie ich manche Dinge bewerte und durch die Fähigkeit mich
selbst nicht immer zu ernst zu nehmen.
Verschiedene Hobbys haben sich im Laufe meines Lebens heraus kristallisiert, dazu gehört das
leidenschaftliche Motorradfahren, das Programmieren und Verwirklichen von Projekten in meiner
Freizeit, sowie der Drang meine Kreativität durch Gedichte oder Digitale Kunst auszudrücken.
Ich habe die Angewohnheit meine Umwelt genau zu beobachten und zu analysieren, auch völlig
unbewusst. Dies ist oftmals auch eine Quelle für Inspirationen, jeglicher Art.
Des Weiteren bin ich ein Mensch der Musik liebt, und sie braucht. Ich habe fast immer Musik an,
egal ob Radio oder Alben meiner Lieblings Interpreten, sei es Unterwegs per N900 oder zu Hause mit
der dortigen Workstation. Musik trägt zu meiner Entspannung bei, fördert aber auch die
Konzentrationsfähigkeit in meinem Falle. Eine weitere Eigenheit von mir ist der unerschöpfliche
Wunsch nach Wissen, wenn mich etwas interessiert erkunde ich es tiefgründig. Ich verbringe
dadurch viele Stunden meines Tages mit dem Lesen von Büchern (digitaler oder gedruckter Art)
oder dem recherchieren im Internet.
$manager->persist($navigation);
Zudem liebe ich es zu Planen und zu Organisieren. Manchmal verbringe ich Tage mit der gedanklichen
Ausgestaltung eines Planes, der in Jahren, Jahrzehnten oder nie zum Einsatz kommen wird. Außerdem
bin ich kontaktfreudig, wortgewandt und tolerant in jedem Aspekt. Meine Art ist direkt und offen,
ich sage was ich denke, auch wenn es nicht immer das ist was andere gern hören wollen. Trotzdem
pflege ich meine sozialen Kontakte und Bindungen und versuche mich in die Probleme anderer
hineinzudenken um sie zu verstehen. Zudem bin ich hilfsbereit, selbst wenn dies für mich
zusätzliche Arbeit bedeutet.
')
->setCategory($this->getReference('default-category'))
->setSidebar($this->getReference('default-sidebar'))
->setNavigation($this->getReference('default-navigation'))
->setAuthor($this->getReference('admin-user'))
->setIcon('icon-user')
;
/*
* --------------------------------------------------------------------
*/
// Build default Category
$category = new Category();
$category->setName('Default');
// Build Impress Page
$impress = new Page();
$impress
->setSlug('impressum')
->setTitle('Impressum')
->setContent('')
->setCategory($this->getReference('default-category'))
->setSidebar($this->getReference('default-sidebar'))
->setNavigation($this->getReference('default-navigation'))
->setAuthor($this->getReference('admin-user'))
->setService($this->getReference('impress-service'))
->setIcon('icon-list')
;
$manager->persist($category);
/*
* --------------------------------------------------------------------
*/
// Build Contact Page
$contact = new Page();
$contact
->setSlug('kontakt')
->setTitle('Kontakt')
->setContent('')
->setCategory($this->getReference('default-category'))
->setSidebar($this->getReference('default-sidebar'))
->setNavigation($this->getReference('default-navigation'))
->setAuthor($this->getReference('admin-user'))
->setService($this->getReference('contact-service'))
->setIcon('icon-comment')
;
// Build default Sidebar
$sidebar = new Sidebar();
$sidebar->setName('Default');
/*
* --------------------------------------------------------------------
*/
$manager->persist($sidebar);
// Save all Metadata
$manager->persist($home);
$manager->persist($impress);
$manager->persist($contact);
// Flush to Database
$manager->flush();
$this->addReference('default-navigation', $navigation);
$this->addReference('default-category', $category);
$this->addReference('default-sidebar', $sidebar);
$this->addReference('home-page', $home);
$this->addReference('impress-page', $impress);
$this->addReference('contact-page', $contact);
}
/**
* getOrder
*
* @access public
* @return void
*/
public function getOrder()
{
return 3;
return 6;
}
}
......@@ -2,68 +2,34 @@
namespace Jity\HomepageBundle\DataFixtures\ORM;
use Jity\HomepageBundle\Entity\Sidebar;
use Jity\HomepageBundle\Entity\Section;
use Jity\HomepageBundle\Entity\Page;
use Jity\HomepageBundle\Entity\Category;
use Jity\HomepageBundle\Entity\Navigation;
use Jity\HomepageBundle\Entity\Group;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
class LoadDevData extends AbstractFixture implements OrderedFixtureInterface
/**
* LoadSectionData
*
* @uses AbstractFixture
* @uses OrderedFixtureInterface
* @version $id$
* @author Hermann Mayer <hermann.mayer92@gmail.com>
*/
class LoadSectionData extends AbstractFixture implements OrderedFixtureInterface
{
/**
* load
*
* @param ObjectManager $manager
* @access public
* @return void
*/
public function load(ObjectManager $manager)
{
$page = new Page();
$page
->setSlug('home')
->setTitle('Über mich')
->setContent('<img src="{{ asset("bundles/jityhomepage/img/myself-cc3-300px.png") }}" alt="" class="img-polaroid pull-left" />
Mein Name ist Hermann Mayer, ich wurde am 02. August im Jahre 1992 in Berlin geboren und bin
in einem kleinen Örtchen Namens Augsdorf, dass im ehemaligen Mansfelder Land liegt, aufgewachsen.
Heute heißt dieser Landkreis, in Sachsen-Anhalt, Mansfeld-Südharz. Eine frohe und aufgeschlossene
Natur wurde mir in die Wiege gelegt und diese habe ich mir bis heute erhalten können, nicht
zuletzt auch durch die Art und Weise wie ich manche Dinge bewerte und durch die Fähigkeit mich
selbst nicht immer zu ernst zu nehmen.
Verschiedene Hobbys haben sich im Laufe meines Lebens heraus kristallisiert, dazu gehört das
leidenschaftliche Motorradfahren, das Programmieren und Verwirklichen von Projekten in meiner
Freizeit, sowie der Drang meine Kreativität durch Gedichte oder Digitale Kunst auszudrücken.
Ich habe die Angewohnheit meine Umwelt genau zu beobachten und zu analysieren, auch völlig
unbewusst. Dies ist oftmals auch eine Quelle für Inspirationen, jeglicher Art.
Des Weiteren bin ich ein Mensch der Musik liebt, und sie braucht. Ich habe fast immer Musik an,
egal ob Radio oder Alben meiner Lieblings Interpreten, sei es Unterwegs per N900 oder zu Hause mit
der dortigen Workstation. Musik trägt zu meiner Entspannung bei, fördert aber auch die
Konzentrationsfähigkeit in meinem Falle. Eine weitere Eigenheit von mir ist der unerschöpfliche
Wunsch nach Wissen, wenn mich etwas interessiert erkunde ich es tiefgründig. Ich verbringe
dadurch viele Stunden meines Tages mit dem Lesen von Büchern (digitaler oder gedruckter Art)
oder dem recherchieren im Internet.
Zudem liebe ich es zu Planen und zu Organisieren. Manchmal verbringe ich Tage mit der gedanklichen
Ausgestaltung eines Planes, der in Jahren, Jahrzehnten oder nie zum Einsatz kommen wird. Außerdem
bin ich kontaktfreudig, wortgewandt und tolerant in jedem Aspekt. Meine Art ist direkt und offen,
ich sage was ich denke, auch wenn es nicht immer das ist was andere gern hören wollen. Trotzdem
pflege ich meine sozialen Kontakte und Bindungen und versuche mich in die Probleme anderer
hineinzudenken um sie zu verstehen. Zudem bin ich hilfsbereit, selbst wenn dies für mich
zusätzliche Arbeit bedeutet.
')
->setCategory($this->getReference('default-category'))
->setSidebar($this->getReference('default-sidebar'))
->setNavigation($this->getReference('default-navigation'))
->setAuthor($this->getReference('admin-user'))
->setIcon('icon-user')
;
$manager->persist($page);
// -------------------------------------
$section = new Section();
$section
{
// Build Share Section
$share = new Section();
$share
->setGroup($this->getReference('anonymous-group'))
->setTitle('Teilen')
->setContent('<p>
......@@ -83,12 +49,13 @@ Freunden und Bekannten über Googles Soziales Netzwerk oder über Facebook.
->addSidebar($this->getReference('default-sidebar'))
;
$manager->persist($section);
/*
* --------------------------------------------------------------------
*/
// -------------------------------------
$section = new Section();
$section
// Build Favorites Section
$favorites = new Section();
$favorites
->setGroup($this->getReference('anonymous-group'))
->setTitle('Favoriten')
->setContent('<p>
......@@ -102,14 +69,15 @@ werden Favoriten für Sie in der Applikation gespeichert.
</a>
</p>')
->addSidebar($this->getReference('default-sidebar'))
;
$manager->persist($section);
;
// -------------------------------------
/*
* --------------------------------------------------------------------
*/
$section = new Section();
$section
// Build Quick Operations Section
$quickOperations = new Section();
$quickOperations
->setGroup($this->getReference('author-group'))
->setTitle('Quick Operations')
->setContent('<p>
......@@ -125,19 +93,34 @@ Mittel um die aktuelle Seite zu verändern.
</a>
</p>')
->addSidebar($this->getReference('default-sidebar'))