initial commit

This commit is contained in:
root 2018-10-08 11:29:39 +02:00
commit b69bd7f300
5 changed files with 90 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.*.sw*

9
calendar_ror.info.yml Normal file
View file

@ -0,0 +1,9 @@
name: Calendario ROR
type: module
description: 'Calendario ICS delle iniziative di ROR'
core: 8.x
version: 0.1
package: Ondarossa
dependencies:
- field
- link

9
calendar_ror.routing.yml Normal file
View file

@ -0,0 +1,9 @@
calendar_ror.ics:
path: '/calendar/calendar.ics'
defaults:
_controller: '\Drupal\calendar_ror\Controller\CalendarRorController::ics'
_title: 'Global calendar'
requirements:
_access: 'TRUE'
options:
no_cache: 'TRUE'

View file

@ -0,0 +1,56 @@
<?php
namespace Drupal\calendar_ror\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Template\TwigEnvironment;
use Drupal\node\NodeInterface;
class CalendarRorController extends ControllerBase {
protected $state;
protected $twig;
public function __construct($state, TwigEnvironment $twig) {
$this->state = $state;
$this->twig = $twig;
}
public static function create(ContainerInterface $container) {
return new static(
$container->get('state'),
$container->get('twig')
);
}
private function query() {
$query = \Drupal::entityQuery('node');
$query
->condition('status', '1')
->condition('type', 'eventi')
->sort('nid', 'DESC')
->range(0, 20);
$nids = $query->execute();
$data = array();
$nodes_e = \Drupal\node\Entity\Node::loadMultiple($nids);
$data['nodes'] = array();
foreach($nodes_e as $nid => $node) {
$data['nodes'][$nid] = $node->toArray();
$data['nodes'][$nid]['summary'] = htmlspecialchars(substr(
html_entity_decode(strip_tags($data['nodes'][$nid]['body'][0]['value'])),
0, 3500), ENT_XML1, 'UTF-8');
}
return $data;
}
public function ics() {
// TODO: use $path
$template = $this->twig->loadTemplate(drupal_get_path('module', 'calendar_ror') . '/templates/calendar.ics.twig');
$tmpl_data = [ 'ror' => array('calendar' => $this->query(),
'url' => \Drupal::service('path.current')->getPath(),
)];
//$variables['ror']['url'] =
$xml = $template->render($tmpl_data);
$resp = new Response($xml, 200, array( 'Content-Type' => 'application/rss+xml'));
return $resp;
}
}

View file

@ -0,0 +1,15 @@
BEGIN:VCALENDAR
PRODID:drupal-calendar-ror
VERSION:2.0
{% for nid, node in ror.calendar.nodes %}
BEGIN:VEVENT
SUMMARY: {{node.title.0.value}}
UID: node-{{node.nid.0.value}}@www.ondarossa.info
DTSTAMP: {{node.created.0.value}}
DTSTART: {{node.field_data_evento.0.value|date("Ymd\\THis")}}Z
DURATION: PT1H
URL: http://www.ondarossa.info{{node.path.0.alias}}
END:VEVENT
{% endfor %}
END:VCALENDAR