<?php
/**
* User: remmel
* Date: 7/28/15
* Time: 10:32 AM
*/
namespace App\Controller\Frontend;
use App\Entity\model\Conveyance;
use App\Repository\StopRepository;
use App\Service\UrlRewrite;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class WidgetIframeController extends AbstractController {
const BUILD_MANIFEST_JSON = "build/manifest.json";
/**
* Widget page
* @Route("/widget/iframe", name="widget_iframe")
* @Template("Default/homepage/iframe_page.html.twig")
*/
public function widgetIframeAction(Request $request, UrlRewrite $urlRewrite, StopRepository $stopRepo){
$source = $request->query->get('source');
$type = $request->query->get('type');
$company = $request->query->get('company');
$color = $request->query->get('color');
$isRedirect = 'true' === $request->query->get('redirect');
$depStopId = $request->query->get('depStopId');
$arrStopId = $request->query->get('arrStopId');
$depStop = $depStopId ? $stopRepo->find($depStopId) : null; //TODO check if could be directly set by symfony
$arrStop = $arrStopId ? $stopRepo->find($arrStopId) : null;
return [
'source' => isset($source) ? "&source=$source" : null, //TODO should not work anymore
'type' => json_encode($type),
'odpage' => $urlRewrite->generateODWebappLink(Conveyance::BUS), //TODO improve that
'company' => json_encode($company),
'color' => $color && preg_match('/^[a-f0-9]{6}$/i', $color) ? "#$color" : null,
'search' => [
'depStopName' => $depStop ? $depStop->getName() : null,
'arrStopName' => $arrStop ? $arrStop->getName() : null,
'depStopId' => $depStopId,
'arrStopId' => $arrStopId,
],
'redirect' => $isRedirect ? OdController::REDIRECT_TAB : OdController::REDIRECT_NONE
];
}
/**
* Micro widget / displays the widget
* @Route("/widget/iframe2", name="widget_iframe2")
* @Template("Default/homepage/iframe_simple_page.html.twig")
*/
public function microwidgetIframeAction(Request $request){
}
/**
* Micro widget search / post
* @Route("/widget/iframe2/search", name="widget_iframe2_post")
* @ParamConverter("depLat", converter="querystring")
* @ParamConverter("depLng", converter="querystring")
* @ParamConverter("arrLat", converter="querystring")
* @ParamConverter("arrLng", converter="querystring")
* @ParamConverter("date", converter="querystring")
*/
public function microwidgetIframePostAction(UrlRewrite $urlRewrite, $depLat, $depLng, $arrLat, $arrLng, $date, StopRepository $stopRepo){
$depStop = $stopRepo->findOneByLatLon($depLat, $depLng);
$arrStop = $stopRepo->findOneByLatLon($arrLat, $arrLng);
$uri = '';
if($depStop && $arrStop) {
$uri = $urlRewrite->generateFromAtoBUrl($depStop, $arrStop, $date, null, false, null, Conveyance::ALL);
} else {
$uri = $this->generateUrl('homepageLocale');
}
return $this->redirect($uri);
}
/**
* Redirection as the blog need to use static link to the cb-widget.js file
* Similar to CKeditorController.assertAction
* @Route("/js/dist/cb-widget.js", name="widget_fulljs_redirect", options={"i18n"=false})
*/
public function fulljswidget() {
$manifest = self::getManifest();
return $this->redirect($manifest['build/cb-widget.js']);
}
/**
* @Route("/js/dist/cb-widget.css", name="widget_fullcss_redirect", options={"i18n"=false})
*/
public function fullcsswidget() {
$manifest = self::getManifest();
return $this->redirect($manifest['build/cb-widget.css']);
}
/**
* @Route("/debug/testfulljswidget", options={"i18n"=false})
* @Template("Default/simple/widget_js.html.twig")
*/
public function testfulljswidget() {
return [];
}
public static function getManifest(): array {
//information also in framework.yaml
return json_decode(file_get_contents(self::BUILD_MANIFEST_JSON), true);
}
}