Skip to content

Commit

Permalink
Merge pull request #20 from roadiz/develop
Browse files Browse the repository at this point in the history
New ServiceWorker and fixes.
  • Loading branch information
ambroisemaupate authored Oct 12, 2019
2 parents 1e366ed + 664cead commit 9d8f7f1
Show file tree
Hide file tree
Showing 33 changed files with 294 additions and 61 deletions.
3 changes: 2 additions & 1 deletion BaseThemeApp.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* Copyright (c) 2017. Rezo Zero
*
Expand All @@ -23,7 +24,7 @@
*/
class BaseThemeApp extends FrontendController
{
const VERSION = '1.2.3';
const VERSION = '1.2.4';

protected static $themeName = 'Base theme';
protected static $themeAuthor = 'REZO ZERO';
Expand Down
34 changes: 34 additions & 0 deletions Controllers/AbstractSitemapController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
declare(strict_types=1);

namespace Themes\BaseTheme\Controllers;

use Doctrine\ORM\QueryBuilder;
use RZ\Roadiz\Core\Entities\NodeType;
use Themes\BaseTheme\BaseThemeApp;

abstract class AbstractSitemapController extends BaseThemeApp
{
/**
* @return \IteratorAggregate|array
*/
protected function getListableNodeSources()
{
/** @var QueryBuilder $qb */
$qb = $this->get('em')
->getRepository(NodeType::class)
->createQueryBuilder('nt');
$qb->andWhere($qb->expr()->notIn('nt.name', ['Link']))
->andWhere($qb->expr()->eq('nt.reachable', true));
$nodeTypes = $qb->getQuery()->getResult();

/*
* Add your own nodes grouped by their type.
*/
return $this->get('nodeSourceApi')
->getBy([
'node.nodeType' => $nodeTypes,
'node.visible' => true,
]);
}
}
1 change: 1 addition & 0 deletions Controllers/CssController.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* Copyright (c) 2017. Rezo Zero
*
Expand Down
5 changes: 3 additions & 2 deletions Controllers/PageController.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* Copyright (c) 2017. Rezo Zero
*
Expand Down Expand Up @@ -39,11 +40,11 @@ public function indexAction(
$response = $this->render('pages/page.html.twig', $this->assignation);

/*
* Uncomment to make response public for caching
* Uncomment to make response public for caching
* with reverse proxies like Varnish or Symfony.
*
* Be careful! Do not cache your response
* if page contains form and/or user content!
* if page contains form and/or user content!
* Or make them stateless… (disabling CSRF and
* using a different form action route).
*/
Expand Down
67 changes: 67 additions & 0 deletions Controllers/ServiceWorkerController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
/**
* Copyright (c) 2019
*
* BaseTheme
*
* @file SitemapController.php
* @author Bilel Jegham <contact.bileljegham@gmail.com>
*/
namespace Themes\BaseTheme\Controllers;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
* Class ServiceWorkerController
* @package Themes\BaseTheme\Controllers
*/
class ServiceWorkerController extends AbstractSitemapController
{
/**
* @param Request $request
* @param string $_locale
* @return Response
*/
public function serviceWorkerAction(
Request $request,
$_locale = 'fr'
) {
$this->prepareThemeAssignation(null, $this->bindLocaleFromRoute($request, $_locale));
/*
* Add your own nodes grouped by their type.
*/
$this->assignation['pages'] = $this->getListableNodeSources();

$response = new Response(
trim($this->getTwig()->render('service-worker/sw.js.twig', $this->assignation)),
Response::HTTP_OK,
['content-type' => 'application/javascript']
);

$this->makeResponseCachable($request, $response, 60);
return $response;
}

/**
* @param Request $request
* @param string $_locale
* @return Response
*/
public function offlineAction(
Request $request,
$_locale = 'fr'
) {
$this->prepareThemeAssignation(null, $this->bindLocaleFromRoute($request, $_locale));

$this->assignation['nodeName'] = 'offline-page';
$this->assignation['nodeTypeName'] = 'offline';
$this->assignation['title'] = $this->get('translator')->trans('offline.title');

$response = $this->render('pages/offline.html.twig', $this->assignation);

$this->makeResponseCachable($request, $response, 60);
return $response;
}
}
22 changes: 5 additions & 17 deletions Controllers/SitemapController.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* Copyright (c) 2017. Rezo Zero
*
Expand All @@ -9,16 +10,14 @@
*/
namespace Themes\BaseTheme\Controllers;

use RZ\Roadiz\Core\Entities\NodeType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Themes\BaseTheme\BaseThemeApp;

/**
* Class SitemapController
* @package Themes\BaseTheme\Controllers
*/
class SitemapController extends BaseThemeApp
class SitemapController extends AbstractSitemapController
{
/**
* @param Request $request
Expand All @@ -35,28 +34,17 @@ public function sitemapAction(
) {
$this->prepareThemeAssignation(null, $this->bindLocaleFromRoute($request, $_locale));

$nodeTypes = $this->get('em')
->getRepository(NodeType::class)
->findBy([
'reachable' => true,
'name' => ['!=', 'Link'], // Prevent links to be listed
]);

/*
* Add your own nodes grouped by their type.
*/
$this->assignation['pages'] = $this->get('nodeSourceApi')
->getBy([
'node.nodeType' => $nodeTypes,
'node.visible' => true,
]);
$this->assignation['pages'] = $this->getListableNodeSources();

$response = new Response(
trim($this->getTwig()->render('sitemap/sitemap.xml.twig', $this->assignation)),
trim($this->getTwig()->render('@BaseTheme/sitemap/sitemap.xml.twig', $this->assignation)),
Response::HTTP_OK,
['content-type' => 'application/xml']
);

$this->makeResponseCachable($request, $response, 60);
return $response;
}
Expand Down
2 changes: 1 addition & 1 deletion Resources/import/node/node-main-menu.rzn
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"children_order": "position",
"children_order_direction": "ASC",
"position": 1,
"dynamic_node_name": true,
"dynamic_node_name": false,
"children": [
{
"node_name": "home",
Expand Down
10 changes: 10 additions & 0 deletions Resources/routes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ sitemap:
defaults:
_controller: Themes\BaseTheme\Controllers\SitemapController::sitemapAction

sw:
path: /sw.js
defaults:
_controller: Themes\BaseTheme\Controllers\ServiceWorkerController::serviceWorkerAction

offline:
path: /offline.html
defaults:
_controller: Themes\BaseTheme\Controllers\ServiceWorkerController::offlineAction

defaultRemoveTrailingSlash:
path: /{url}
defaults:
Expand Down
12 changes: 12 additions & 0 deletions Resources/translations/messages.en.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file original="none" source-language="en" target-language="en" datatype="plaintext">
<body>
<trans-unit id="contact_form.user_consent" xml:space="preserve">
<source>contact_form.user_consent</source>
<target xml:lang="en" state="translated">I consent that my personal data will be processed and stored by XXXXXX in order to contact me for maximum 6 months.</target>
</trans-unit>
<trans-unit id="orejime.accept" xml:space="preserve">
<source>orejime.accept</source>
<target xml:lang="en" state="translated">Accept</target>
Expand Down Expand Up @@ -205,6 +209,14 @@
<source>send</source>
<target>Send</target>
</trans-unit>
<trans-unit id="offline.title">
<source>offline.title</source>
<target>Offline mode</target>
</trans-unit>
<trans-unit id="offline.btn">
<source>offline.btn</source>
<target>Refresh</target>
</trans-unit>
</body>
</file>
</xliff>
10 changes: 9 additions & 1 deletion Resources/translations/messages.fr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<trans-unit id="contact_form.user_consent" xml:space="preserve">
<source>contact_form.user_consent</source>
<target xml:lang="fr" state="translated">Je consens à ce que mes données soient traitées et stockées par XXXXXX dans le but de me contacter, et ce pour une période maximale de 6 mois.</target>
</trans-unit>
</trans-unit>
<trans-unit id="orejime.accept" xml:space="preserve">
<source>orejime.accept</source>
<target xml:lang="fr" state="translated">Accepter</target>
Expand Down Expand Up @@ -211,6 +211,14 @@
<source>send</source>
<target>Envoyer</target>
</trans-unit>
<trans-unit id="offline.title">
<source>offline.title</source>
<target>Mode hors ligne</target>
</trans-unit>
<trans-unit id="offline.btn">
<source>offline.btn</source>
<target>Recharger</target>
</trans-unit>
</body>
</file>
</xliff>
3 changes: 2 additions & 1 deletion Resources/views/base.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,8 @@
locale: '{{ request.locale }}',
resourcesUrl: '{{ head.resourcesUrl }}',
privacyPolicy: {% if themeServices.nodeSourceLegals %}'{{ url(themeServices.nodeSourceLegals) }}'{% else %}''{% endif %},
hasTrackers: {% if head.universalAnalyticsId or head.googleTagManagerId %}true{% else %}false{% endif %}
hasTrackers: {% if head.universalAnalyticsId or head.googleTagManagerId %}true{% else %}false{% endif %},
swPath: '{{ path('sw') }}'
};
</script>

Expand Down
3 changes: 1 addition & 2 deletions Resources/views/common/nav.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@

<button id="nav-btn"
class="nav-btn d-block d-sm-none"
role="button"
type="button"
aria-labelledby="nav-btn-label">
aria-label="{{ 'menu'|trans }}">
<span class="nav-btn__bar nav-btn__bar-1"></span>
<span class="nav-btn__bar nav-btn__bar-2"></span>
<span class="nav-btn__bar nav-btn__bar-3"></span>
Expand Down
4 changes: 2 additions & 2 deletions Resources/views/css/dynamic-styles.css.twig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{% spaceless %}
/* --- Pages --- */
{% for page in pages %}
// Styles for {{ page.node.nodeName }}
/* Styles for {{ page.node.nodeName }} */
{% endfor %}
{% endspaceless %}
{% endspaceless %}
2 changes: 1 addition & 1 deletion Resources/views/form-blocks/contactblock.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{% endfor %}
{% endfor %}

{% form_theme contactForm 'bootstrap_4_layout.html.twig' %}
{% form_theme contactForm 'form-blocks/forms.html.twig' %}
{{ form_start(contactForm) }}
{{ form_widget(contactForm) }}
<div class="form-group">
Expand Down
21 changes: 21 additions & 0 deletions Resources/views/form-blocks/forms.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{% extends "bootstrap_4_layout.html.twig" %}

{%- block widget_attributes -%}
{%- if label and not attr.placeholder %}
{% set attr = attr|merge({placeholder: label|trans}) %}
{% if required %}
{% set attr = attr|merge({placeholder: label|trans ~ '*'}) %}
{% endif %}
{% endif -%}
{{ parent() }}
{%- endblock widget_attributes -%}

{% block form_row -%}
{%- if compound is defined and compound -%}
{%- set element = 'fieldset' -%}
{%- endif -%}
<{{ element|default('div') }} class="form-group form-{{ name|replace({ '_': '-' }) }}">
{{- form_label(form) -}}
{{- form_widget(form) -}}
</{{ element|default('div') }}>
{%- endblock form_row %}
2 changes: 1 addition & 1 deletion Resources/views/pages/base.html.twig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% extends head.ajax ? '@BaseTheme/base.ajax.twig' : '@BaseTheme/base.html.twig' %}
{% extends '@BaseTheme/base.html.twig' %}

{% set classes = classes|default([
'page-content',
Expand Down
22 changes: 22 additions & 0 deletions Resources/views/pages/offline.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{% extends '@BaseTheme/pages/base.html.twig' %}

{% block body_attributes %}id="offline-page" data-node-type="offline"{% endblock %}


{% block header %}
<header class="page-header">
<div class="container">
<h1 class="page-title">{{ title }}</h1>
</div>
</header>
{% endblock %}

{% block inner_content %}
<div class="container">
<button onclick="document.location.reload(true)">{% trans %}offline.btn{% endtrans %}</button>
</div>
{% endblock %}




2 changes: 1 addition & 1 deletion Resources/views/partials/css-inject.html.twig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<link href="/themes/BaseTheme/static/css/app.1db76626028c95fa7daf.css" rel="stylesheet">
<link href="/themes/BaseTheme/static/css/app.b308f0c535294de887b1.css" rel="stylesheet">
2 changes: 1 addition & 1 deletion Resources/views/partials/js-inject-legacy.html.twig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<script nomodule defer="defer" src="/themes/BaseTheme/static/js/legacy.vendors~app.aacd4a2958fba0b30a87.js"></script><script nomodule defer="defer" src="/themes/BaseTheme/static/js/legacy.app.108dbabf3405ef91c9bf.js"></script>
<script nomodule defer="defer" src="/themes/BaseTheme/static/js/legacy.vendors~app.aacd4a2958fba0b30a87.js"></script><script nomodule defer="defer" src="/themes/BaseTheme/static/js/legacy.app.bc02d5b4adae0d6fc573.js"></script>
2 changes: 1 addition & 1 deletion Resources/views/partials/js-inject-modern.html.twig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<script type="module" crossorigin src="/themes/BaseTheme/static/js/modern.vendors~app.7aa4595c5f49d7c1be72.js"></script><script type="module" crossorigin src="/themes/BaseTheme/static/js/modern.app.1db76626028c95fa7daf.js"></script>
<script type="module" crossorigin src="/themes/BaseTheme/static/js/modern.vendors~app.7aa4595c5f49d7c1be72.js"></script><script type="module" crossorigin src="/themes/BaseTheme/static/js/modern.app.b308f0c535294de887b1.js"></script>
Loading

0 comments on commit 9d8f7f1

Please sign in to comment.