Skip to content
Code-Schnipsel Gruppen Projekte
Commit b5feb195 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

Merge branch 'dev' into 'master'

Pre 1.0 Merge

See merge request !1
Übergeordnete 9f3a3150 3eff90b3
No related branches found
No related tags found
1 Merge Request!1Pre 1.0 Merge
werden angezeigt mit 838 Ergänzungen und 15 Löschungen
CC BY-NC-SA 4.0,
PCSG QL-1.0
\ No newline at end of file
Package Title
========
![QUIQQER EventCalendar](bin/images/Readme.jpg)
Package description
QUIQQER Event Calendar
========
Calendar Plugin Extension: Event Pages & Lists
Package Name:
quiqqer/*
quiqqer/eventcalendar
Features
--------
- Festure 1
- Festure 2
- Special sitetypes and bricks for events
Installation
------------
The Package name is: quiqqer/
The package name is: `quiqqer/eventcalendar`
Contribute
----------
- Project: *
- Issue Tracker: *
- Source Code: *
- Issue Tracker: https://dev.quiqqer.com/quiqqer/eventcalendar/issues
- Source Code: https://dev.quiqqer.com/quiqqer/eventcalendar/tree/master
- Wiki: https://dev.quiqqer.com/quiqqer/eventcalendar/wikis/home
Support
-------
If you have found errors, wishes or suggestions for improvement,
you can contact us by email at support@pcsg.de.
......@@ -41,4 +37,4 @@ of the project.
License
-------
PCSG QL-1.0, CC BY-NC-SA 4.0
<?php
/**
* This file contains package_quiqqer_calendar_ajax_eventSearch
*/
/**
* Returns event list
*
* @param string $freeText - Freetext search, String to search
* @param string $params - JSON query params
*
* @return array
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_eventcalendar_ajax_eventSearch',
function ($freeText) {
$PDO = QUI::getPDO();
$freeText = "%$freeText%";
$eventTableName = \QUI\Calendar\Handler::tableCalendarsEvents();
$statement = $PDO->prepare("
SELECT *
FROM {$eventTableName}
WHERE `title` LIKE :freeText
");
$statement->bindParam(':freeText', $freeText);
$statement->execute();
$eventsDataRaw = $statement->fetchAll(PDO::FETCH_ASSOC);
$events = array();
foreach ($eventsDataRaw as $eventData) {
$Event = \QUI\Calendar\Event::fromDatabaseArray($eventData);
$eventAsArray = $Event->toArray();
$eventAsArray['title'] = $Event->text;
$events[] = $eventAsArray;
}
return array_values($events);
},
array('freeText'),
'Permission::checkAdminUser'
);
<?php
/**
* Returns event information as an array
*
* @param integer $eventID - The ID of the event of which the information should be returned
*
* @return array
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_eventcalendar_ajax_getEvent',
function ($eventID) {
$Event = \QUI\Calendar\EventManager::getEventById($eventID);
if (!is_null($Event)) {
return $Event->toArray();
}
return null;
},
array('eventID'),
'Permission::checkAdminUser'
);
/**
* Select for events
*
* @module package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelect
* @author www.pcsg.de (Jan Wennrich)
*
* @require qui/QUI
* @require qui/controls/elements/Select
* @require Ajax
* @require Locale
*/
define('package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelect', [
'qui/QUI',
'qui/controls/elements/Select',
'Ajax',
'Locale'
], function (QUI, QUIElementSelect, QUIAjax, QUILocale) {
"use strict";
return new Class({
Extends: QUIElementSelect,
Type : 'package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelect',
Binds: [
'eventSearch',
'$onSearchButtonClick',
'$onImport'
],
initialize: function (options) {
this.parent(options);
this.setAttribute('Search', this.eventSearch);
this.setAttribute('icon', 'fa fa-bullhorn');
this.setAttribute('child', 'package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelectItem');
this.setAttribute('searchbutton', true);
this.setAttribute(
'placeholder', QUILocale.get('quiqqer/eventcalendar', 'calendar.control.eventSelect.placeholder')
);
this.addEvents({
onSearchButtonClick: this.$onSearchButtonClick
});
},
$onImport: function (options) {
this.parent(options);
this.setAttribute('multiple', false);
this.setAttribute('max', 1);
},
/**
* Search calendars
*
* @param {String} value
* @returns {Promise}
*/
eventSearch: function (value) {
return new Promise(function (resolve, reject) {
QUIAjax.get('package_quiqqer_eventcalendar_ajax_eventSearch', function(result) {
resolve(result);
}, {
'package': 'quiqqer/eventcalendar',
onError : reject,
freeText : value
});
});
},
/**
* event : on search button click
*
* @param {Object} self - select object
* @param {Object} Btn - button object
*/
$onSearchButtonClick: function (self, Btn) {
Btn.setAttribute('icon', 'fa fa-spinner fa-spin');
require([
'package/quiqqer/calendar/bin/controls/search/event/Window'
], function (Window) {
new Window({
autoclose: true,
multiple : false,
events : {
onSubmit: function (Win, data) {
var self = this;
data.forEach(function (event) {
self.addItem(event.id);
});
}.bind(this)
}
}).open();
Btn.setAttribute('icon', 'fa fa-search');
}.bind(this));
}
});
});
\ No newline at end of file
/**
* @module package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelectItem
* @author www.pcsg.de (Jan Wennrich)
*
* @require qui/QUI
* @require qui/controls/elements/SelectItem
* @require Ajax
*/
define('package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelectItem', [
'qui/QUI',
'qui/controls/elements/SelectItem',
'Ajax'
], function (QUI, QUIElementSelectItem, QUIAjax) {
"use strict";
return new Class({
Extends: QUIElementSelectItem,
Type : 'package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelectItem',
Binds: [
'refresh'
],
initialize: function (options) {
this.parent(options);
this.setAttribute('icon', 'fa fa-bullhorn');
},
/**
* Refresh the display
*
* @returns {Promise}
*/
refresh: function () {
return new Promise(function (resolve) {
QUIAjax.get('package_quiqqer_eventcalendar_ajax_getEvent', function (result) {
if (result) {
this.$Text.set({
html: result.text
});
} else {
this.destroy();
}
resolve();
}.bind(this), {
'package': 'quiqqer/eventcalendar',
eventID : this.getAttribute('id')
});
}.bind(this));
}
});
});
bin/images/Logo.jpg

45,1 KiB

bin/images/Readme.jpg

41,3 KiB

bin/images/preview/1.jpg

56,6 KiB

bin/images/preview/2.jpg

37,8 KiB

<?xml version="1.0" encoding="UTF-8"?>
<quiqqer>
<bricks>
<!-- Next n Events List -->
<brick control="\QUI\EventCalendar\Bricks\EventList">
<title>
<locale group="quiqqer/eventcalendar"
var="brick.eventList.title"/>
</title>
<description>
<locale group="quiqqer/eventcalendar"
var="brick.eventList.description"/>
</description>
<settings>
<setting name="displayStyle" type="select">
<locale group="quiqqer/eventcalendar" var="brick.setting.displayStyle"/>
<option value="modern">
<locale group="quiqqer/eventcalendar" var="brick.setting.displayStyle.modern"/>
</option>
<option value="simple">
<locale group="quiqqer/eventcalendar" var="brick.setting.displayStyle.simple"/>
</option>
</setting>
<setting name="calendarIDs"
data-qui="package/quiqqer/calendar/bin/controls/Select"
data-qui-options-is-edit-calendar="false">
<locale group="quiqqer/calendar" var="brick.setting.calendarIDs"/>
</setting>
<setting name="amount" type="number">
<locale group="quiqqer/eventcalendar" var="brick.eventList.setting.amount"/>
</setting>
</settings>
</brick>
</bricks>
</quiqqer>
\ No newline at end of file
{
"name": "quiqqer\/eventcalendar",
"type": "quiqqer-module",
"description": "Expands the quiqqer/calendar package with event pages and lists.",
"version": "dev-dev",
"licence":["CC BY-NC-SA 4.0", "PCSG QL-1.0"],
"authors": [
{
"name": "Jan Wennrich",
"email": "jan.wennrich@pcsg.de",
"homepage": "https:\/\/www.pcsg.de",
"role": "Developer"
}
],
"support": {
"mail": "support@pcsg.de"
},
"require": {
"quiqqer\/calendar": "*"
},
"autoload": {
"psr-4": {
"QUI\\EventCalendar\\": "src\/QUI\/EventCalendar"
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<locales>
<!-- JS & PHP -->
<groups name="quiqqer/eventcalendar" datatype="js,php">
<!-- Package -->
<locale name="package.title">
<de><![CDATA[QUIQQER - Kalender Erweiterung: Termin Seiten & Listen]]></de>
<en><![CDATA[QUIQQER - Calendar Expansion: Event Pages & Lists]]></en>
</locale>
<locale name="package.description">
<de><![CDATA[Erweitert das quiqqer/calendar Paket um Termin-Seiten und -Listen um Ihre Termine schick darzustellen.]]></de>
<en><![CDATA[Expands the quiqqer/calendar package with event pages and lists to nicely display your events.]]></en>
</locale>
</groups>
<!-- PHP ONLY -->
<groups name="quiqqer/eventcalendar" datatype="php">
<locale name="brick.eventList.setting.amount">
<de><![CDATA[Anzahl anzuzeigender Termine]]></de>
<en><![CDATA[Amount of displayed Events]]></en>
</locale>
<!-- Bricks -->
<locale name="brick.setting.displayStyle">
<de><![CDATA[Style]]></de>
<en><![CDATA[Style]]></en>
</locale>
<locale name="brick.setting.displayStyle.simple">
<de><![CDATA[Simpel]]></de>
<en><![CDATA[Simpel]]></en>
</locale>
<locale name="brick.setting.displayStyle.modern">
<de><![CDATA[Modern]]></de>
<en><![CDATA[Modern]]></en>
</locale>
<!-- Sitetypes -->
<locale name="sitetypes.event.title">
<de><![CDATA[Event-Seite]]></de>
<en><![CDATA[Event-Page]]></en>
</locale>
<locale name="quiqqer/eventcalendar:sitetypes/event.title">
<de><![CDATA[Event-Seite]]></de>
<en><![CDATA[Event-Page]]></en>
</locale>
<locale name="quiqqer/eventcalendar:sitetypes/event.description">
<de><![CDATA[Zeigt die Informationen zu einem Event auf einer Seite an.]]></de>
<en><![CDATA[Displays information about an event on a page.]]></en>
</locale>
<locale name="sitetypes.event.settings">
<de><![CDATA[Event Einstellungen]]></de>
<en><![CDATA[Event Settings]]></en>
</locale>
<locale name="sitetypes.event.details">
<de><![CDATA[Details]]></de>
<en><![CDATA[Details]]></en>
</locale>
<locale name="sitetypes.event.settings.id">
<de><![CDATA[Direkt nach einem Event suchen, oder über den Button rechts auswählen.]]></de>
<en><![CDATA[Search directly for an event or select one using the button on the right.]]></en>
</locale>
<locale name="sitetypes.event.settings.image">
<de><![CDATA[Event-Bild (700x300px):]]></de>
<en><![CDATA[Event-Image (700x300px):]]></en>
</locale>
<locale name="sitetypes.event.settings.details">
<de><![CDATA[Details]]></de>
<en><![CDATA[Details]]></en>
</locale>
<locale name="sitetypes.event.error.notFound">
<de><![CDATA[Dieses Event konnte nicht gefunden werden, oder Sie besitzen nicht die nötigen Rechte um es zu sehen.]]></de>
<en><![CDATA[This event could not be found or you don't have the proper permissions to view it.]]></en>
</locale>
<locale name="sitetypes.event.error.notFound.simple">
<de><![CDATA[Kalender-Event Einstellungen: Event konnte nicht gefunden werden.]]></de>
<en><![CDATA[Calendar-Event Settings: Event could not be found]]></en>
</locale>
<locale name="sitetypes.eventList.title">
<de><![CDATA[Event-Liste]]></de>
<en><![CDATA[Event-List]]></en>
</locale>
<locale name="quiqqer/eventcalendar:sitetypes/eventList.title">
<de><![CDATA[Event-Liste]]></de>
<en><![CDATA[Event-List]]></en>
</locale>
<locale name="quiqqer/eventcalendar:sitetypes/eventList.description">
<de><![CDATA[Listet alle Unterseiten vom Typ Event mit Informationen auf.]]></de>
<en><![CDATA[Lists all subpages of type event with information.]]></en>
</locale>
<locale name="sitetypes.eventList.desc">
<de><![CDATA[Zeigt alle Event-Unterseiten als Liste an.]]></de>
<en><![CDATA[Shows all Event-Subpages as a list.]]></en>
</locale>
<locale name="sitetypes.eventList.settings">
<de><![CDATA[Event-Listen Einstellungen]]></de>
<en><![CDATA[Event-List Settings]]></en>
</locale>
<locale name="sitetypes.eventList.settings.displayStyle">
<de><![CDATA[Stil]]></de>
<en><![CDATA[Style]]></en>
</locale>
<locale name="sitetypes.eventList.settings.displayStyle.modern">
<de><![CDATA[Modern]]></de>
<en><![CDATA[Modern]]></en>
</locale>
<locale name="sitetypes.eventList.settings.displayStyle.simple">
<de><![CDATA[Simpel]]></de>
<en><![CDATA[Simple]]></en>
</locale>
<locale name="sitetypes.eventList.settings.max">
<de><![CDATA[Anzahl Kindseiten pro Seite]]></de>
<en><![CDATA[Amount of Subpages per page]]></en>
</locale>
<locale name="sitetypes.eventList.settings.showPagination">
<de><![CDATA[Blätterfunktion anzeigen]]></de>
<en><![CDATA[Show Pagination]]></en>
</locale>
</groups>
<groups name="quiqqer/eventcalendar" datatype="js">
<locale name="calendar.control.eventSelect.placeholder">
<de><![CDATA[Anzuzeigendes Event suchen...]]></de>
<en><![CDATA[Search event to show...]]></en>
</locale>
</groups>
</locales>
<quiqqer>
<package>
<title>
<locale group="quiqqer/eventcalendar" var="package.title"/>
</title>
<description>
<locale group="quiqqer/eventcalendar" var="package.description"/>
</description>
<image src="URL_OPT_DIR/quiqqer/eventcalendar/bin/images/Logo.jpg"/>
<preview>
<image src="URL_OPT_DIR/quiqqer/eventcalendar/bin/images/preview/1.jpg"/>
<image src="URL_OPT_DIR/quiqqer/eventcalendar/bin/images/preview/2.jpg"/>
</preview>
<support>
<email>support@pcsg.de</email>
<forum>https://community.quiqqer.com</forum>
<source>https://dev.quiqqer.com/quiqqer/eventcalendar</source>
<issues>https://dev.quiqqer.com/quiqqer/eventcalendar/issues</issues>
<wiki>https://dev.quiqqer.com/quiqqer/eventcalendar/wikis/home</wiki>
</support>
<copyright>
<name><![CDATA[PCSG - Computer & Internet Service OHG]]></name>
<license>PCSG QL-1.0</license>
<license>CC BY-NC-SA 4.0</license>
</copyright>
</package>
</quiqqer>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<site>
<types>
<!-- Event -->
<type type="sitetypes/event" icon="fa fa-bullhorn" template="sitetypes/event.html">
<locale group="quiqqer/eventcalendar" var="sitetypes.event.title"/>
<desc>
<locale group="quiqqer/eventcalendar" var="sitetypes.event.desc"/>
</desc>
<attributes>
<attribute>event.settings.id</attribute>
<attribute>event.settings.image</attribute>
</attributes>
<settings>
<category name="event-settings">
<settings>
<title>
<locale group="quiqqer/eventcalendar" var="sitetypes.event.settings"/>
</title>
<input conf="event.settings.id"
type="hidden"
disabled="disabled"
data-qui="package/quiqqer/eventcalendar/bin/controls/eventSelect/EventSelect"
label="false">
<description>
<locale group="quiqqer/eventcalendar" var="sitetypes.event.settings.id"/>
</description>
</input>
<input conf="event.settings.image" class="media-image">
<text>
<locale group="quiqqer/eventcalendar" var="sitetypes.event.settings.image"/>
</text>
</input>
</settings>
</category>
</settings>
</type>
<!-- Event-Liste -->
<type type="sitetypes/eventList" icon="fa fa-list">
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.title"/>
<desc>
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.desc"/>
</desc>
<!-- Event-Liste attributes -->
<attributes>
<attribute>eventList.settings.max</attribute>
<attribute default="modern">eventList.settings.displayStyle</attribute>
<attribute default="1">eventList.settings.showPagination</attribute>
</attributes>
<!-- Event-Liste settings -->
<settings>
<category name="event-list-settings">
<settings>
<title>
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings"/>
</title>
<select conf="eventList.settings.displayStyle">
<text>
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings.displayStyle"/>
</text>
<option value="modern">
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings.displayStyle.modern"/>
</option>
<option value="simple">
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings.displayStyle.simple"/>
</option>
</select>
<input conf="eventList.settings.max" type="number">
<text>
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings.max"/>
</text>
</input>
<input conf="eventList.settings.showPagination" type="checkbox">
<text>
<locale group="quiqqer/eventcalendar" var="sitetypes.eventList.settings.showPagination"/>
</text>
</input>
</settings>
</category>
</settings>
</type>
</types>
</site>
\ No newline at end of file
.event {
margin: 0 auto;
max-width: 700px;
}
.event-header {
line-height: normal;
height: 450px;
max-width: 700px;
}
.event-image {
height: 300px;
width: 100%;
max-width: 700px;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
background-color: #D4D4D4;
}
.event-date {
height: 150px;
width: 150px;
padding-left: 20px;
float: left;
background-color: #2d4d88;
color: white;
}
.event-date-day {
font-size: 64px;
font-weight: bold;
}
.event-date-month {
font-size: 26px;
}
/* On September, November, December */
.event-date-month[data-month-index="8"],
.event-date-month[data-month-index="10"],
.event-date-month[data-month-index="11"] {
font-size: 23px;
}
.event-info {
float: left;
width: calc(100% - 150px);
max-width: 550px;
padding: 20px;
font-size: 36px;
height: 150px;
background-color: #EEEEEE;
color: #2d4d88;
}
.event-time {
font-size: 16px;
}
.event-text {
width: 100%;
max-width: 700px;
min-height: 150px;
margin: 10px 0;
color: #2d4d88;
background-color: #EEE;
}
.event-text-header {
font-size: 19px;
border-bottom: 1px solid #D4D4D4;
padding: 10px 20px;
}
.event-text-content {
padding: 20px;
color: #505050;
}
.event-error {
padding: 50px 0;
}
@media (max-width: 520px) {
.event-header {
height: 350px;
}
.event-image {
height: 200px;
}
.event-date {
display: none;
}
.event-info {
border-top: 5px solid #2d4d88;
width: 100%;
}
}
\ No newline at end of file
<section class="grid-100 mobile-grid-100">
{if !is_null($Event)}
<div class="event">
<div class="event-header">
<div class="event-image" style="background-image: url(/{$Site->getAttribute('event.settings.image')})">
<!-- Event image goes here via CSS -->
</div>
<div class="event-date">
<div class="event-date-day">{$EventStart->format('d')}.</div>
{assign var="monthIndex" value=$EventStart->format('n')-1}
<div class="event-date-month" data-month-index="{$monthIndex}">
{$EventLocale['months'][$monthIndex]}
</div>
</div>
<div class="event-info">
<div class="event-title">{$Event->text}</div>
<div class="event-time">
{$EventLocale['days'][$EventStart->format('w')]}, {$EventStart->format('d.m.o H:i')} –
{if $EventStart->format('d.m.o') == $EventEnd->format('d.m.o')}
{$EventEnd->format('H:i')}
{else}
<br>
{$EventLocale['days'][$EventEnd->format('w')]}, {$EventEnd->format('d.m.o H:i')}
{/if}
</div>
</div>
</div>
<div class="event-text">
<div class="event-text-header">
<i class="fa fa-info-circle" aria-hidden="true"></i>
{$EventLocale['details']}
</div>
<div class="event-text-content">
{$Site->getAttribute('content')}
</div>
</div>
</div>
{else}
<div class="event-error">
{$EventLocale['eventNotFound']}
</div>
{/if}
</section>
<?php
$eventID = $Site->getAttribute('event.settings.id');
$Event = \QUI\Calendar\EventManager::getEventById($eventID);
\QUI\System\Log::writeRecursive($Event);
$values = array(
'Event' => $Event,
'EventLocale' => array(
'eventNotFound' => $Locale->get('quiqqer/eventcalendar', 'sitetypes.event.error.notFound'),
'details' => $Locale->get('quiqqer/eventcalendar', 'sitetypes.event.details'),
'months' => array(
$Locale->get('quiqqer/calendar-controls', 'month.01'),
$Locale->get('quiqqer/calendar-controls', 'month.02'),
$Locale->get('quiqqer/calendar-controls', 'month.03'),
$Locale->get('quiqqer/calendar-controls', 'month.04'),
$Locale->get('quiqqer/calendar-controls', 'month.05'),
$Locale->get('quiqqer/calendar-controls', 'month.06'),
$Locale->get('quiqqer/calendar-controls', 'month.07'),
$Locale->get('quiqqer/calendar-controls', 'month.08'),
$Locale->get('quiqqer/calendar-controls', 'month.09'),
$Locale->get('quiqqer/calendar-controls', 'month.10'),
$Locale->get('quiqqer/calendar-controls', 'month.11'),
$Locale->get('quiqqer/calendar-controls', 'month.12'),
),
'days' => array(
$Locale->get('quiqqer/calendar-controls', 'sunday'),
$Locale->get('quiqqer/calendar-controls', 'monday'),
$Locale->get('quiqqer/calendar-controls', 'tuesday'),
$Locale->get('quiqqer/calendar-controls', 'wednesday'),
$Locale->get('quiqqer/calendar-controls', 'thursday'),
$Locale->get('quiqqer/calendar-controls', 'friday'),
$Locale->get('quiqqer/calendar-controls', 'saturday'),
)
)
);
if (!is_null($Event)) {
$values = array_merge(
$values,
array(
'EventStart' => new DateTime($Event->start_date),
'EventEnd' => new DateTime($Event->end_date),
)
);
}
$Locale = \QUI::getLocale();
$Engine->assign($values);
{if $Template->getAttribute('content-body') && $Site->getAttribute('content')}
<section class="content-body quiqqer-content grid-100 mobile-grid-100 grid-parent">
{$Site->getAttribute('content')}
</section>
{/if}
<section class="content-template grid-100 mobile-grid-100 grid-parent">
{$ChildrenList->create()}
</section>
<?php
/**
* Event-List
*/
$ChildrenList = new QUI\Controls\ChildrenList(array(
'showTitle' => false,
'Site' => $Site,
'limit' => $Site->getAttribute('eventList.settings.max'),
'showContent' => false,
'itemtype' => 'http://schema.org/ItemList',
'child-itemtype' => 'http://schema.org/ListItem',
'display' => $Site->getAttribute('eventList.settings.displayStyle'),
'displayTemplate' => dirname(__FILE__) . '/eventListControlTemplate.html',
'displayCss' => dirname(__FILE__) . '/eventListControlTemplate.css'
));
try {
$ChildrenList->checkLimit();
} catch (QUI\Exception $Exception) {
QUI\System\Log::addWarning($Exception->getMessage());
}
$Engine->assign(array(
'ChildrenList' => $ChildrenList
));
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren