From aa607d6f2f4471d3cac732889287620e27b7e844 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Fri, 17 Apr 2020 16:40:55 +0200 Subject: [PATCH 1/8] [WIP] Add contact widget --- Classes/Widgets/ContactWidget.php | 61 +++++++++++++++++++ Configuration/Services.yaml | 16 +++++ Resources/Private/Language/locallang.xlf | 6 ++ .../Templates/Widget/ContactWidget.html | 17 ++++++ 4 files changed, 100 insertions(+) create mode 100644 Classes/Widgets/ContactWidget.php create mode 100644 Resources/Private/Templates/Widget/ContactWidget.html diff --git a/Classes/Widgets/ContactWidget.php b/Classes/Widgets/ContactWidget.php new file mode 100644 index 0000000..aa85fc6 --- /dev/null +++ b/Classes/Widgets/ContactWidget.php @@ -0,0 +1,61 @@ +configuration = $configuration; + $this->view = $view; + $this->options = $options; + } + + public function renderWidgetContent(): string + { + + $this->view->setTemplate('Widget/ContactWidget'); + $this->view->assignMultiple([ + 'options' => $this->options, + 'configuration' => $this->configuration, + ]); + return $this->view->render(); + } +} diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 60fbf0d..8df1a7a 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -23,3 +23,19 @@ services: iconIdentifier: 'content-widget-list' height: 'large' width: 'medium' + + widgets.dashboard.widget.contact: + class: 'FriendsOfTYPO3\Widgets\Widgets\ContactWidget' + arguments: + $view: '@dashboard.views.widget' + $options: + template: 'Widget/ContactWidget' + tags: + - name: dashboard.widget + identifier: 'widgets-contact' + groupNames: 'general' + title: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:widgets.dashboard.widget.contact.title' + description: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:widgets.dashboard.widget.contact.description' + iconIdentifier: 'content-widget-list' + height: 'medium' + width: 'medium' diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 7f66b69..e74b392 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -33,6 +33,12 @@ Will show you which users are currently online + + Contact information + + + Will show contact information of supplier + diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html new file mode 100644 index 0000000..6975f64 --- /dev/null +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -0,0 +1,17 @@ + +
{f:translate(id: configuration.title, default: configuration.title)}
+
+
+
+

+ {f:translate(id: contact.introduction, default: contact.introduction) -> f:format.raw()} +

+
+
+ +
+
+
+ From ad6a57fd41ce3a4967c3596976da545f15d79579 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Wed, 22 Apr 2020 23:25:58 +0200 Subject: [PATCH 2/8] [TASK] configure Contact Widget base --- .gitignore | 2 +- Configuration/Services.yaml | 9 ++++++++ Resources/Private/Language/locallang.xlf | 4 ++++ .../Templates/Widget/ContactWidget.html | 23 +++++++++++++------ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 9864f50..2278c9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ +.DS_Store /.idea /composer.lock /.vscode -/.DS_Store /.ddev /logs /var diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 62dfd18..b1d7f07 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -56,6 +56,15 @@ services: $view: '@dashboard.views.widget' $options: template: 'Widget/ContactWidget' + introText: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:contactIntroTextDefault' + company: 'Your TYPO3 agency' + address: '-' + postalCode: '-' + place: '-' + tel: '-' + mail: '-' + website: '-' + logoPath: 'logopath.svg' tags: - name: dashboard.widget identifier: 'widgets-contact' diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index dbf3f16..6a18ae0 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -36,6 +36,10 @@ Last change + + Contact information: + + Current online users diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html index 6975f64..28a293b 100644 --- a/Resources/Private/Templates/Widget/ContactWidget.html +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -1,17 +1,26 @@ -
{f:translate(id: configuration.title, default: configuration.title)}
-
+ + +

- {f:translate(id: contact.introduction, default: contact.introduction) -> f:format.raw()} + {f:translate(key: options.introText, default: options.introText) -> f:format.raw()} +

+

+ {config.company} + {config.address} + {config.postalCode} + {config.place} + {config.tel} + {config.mail} + {config.website}

- + afb
-
+ + From cec518fad8bc8db24e0e2e9d34186986773ed2b5 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Thu, 23 Apr 2020 17:30:56 +0200 Subject: [PATCH 3/8] [TASK] Add contactWidget styling and content handling --- Build/Gruntfile.js | 4 +- Classes/Widgets/ContactWidget.php | 10 ++- Configuration/Services.yaml | 4 +- Resources/Private/Language/locallang.xlf | 6 ++ Resources/Private/Sass/contactWidget.scss | 8 +++ .../Templates/Widget/ContactWidget.html | 61 +++++++++++++------ Resources/Public/Css/contactWidget.css | 4 ++ 7 files changed, 72 insertions(+), 25 deletions(-) create mode 100644 Resources/Private/Sass/contactWidget.scss create mode 100644 Resources/Public/Css/contactWidget.css diff --git a/Build/Gruntfile.js b/Build/Gruntfile.js index c904ed4..e01ef4c 100644 --- a/Build/Gruntfile.js +++ b/Build/Gruntfile.js @@ -26,8 +26,8 @@ module.exports = function (grunt) { scssFilePaths: [], cssFilePaths: [] }, - 'reportsWidget': { - stylesheets: ['reportsWidget'], + 'contactWidget': { + stylesheets: ['contactWidget'], scssFilePaths: [], cssFilePaths: [] }, diff --git a/Classes/Widgets/ContactWidget.php b/Classes/Widgets/ContactWidget.php index aa85fc6..9db4cd7 100644 --- a/Classes/Widgets/ContactWidget.php +++ b/Classes/Widgets/ContactWidget.php @@ -17,11 +17,12 @@ namespace FriendsOfTYPO3\Widgets\Widgets; +use TYPO3\CMS\Dashboard\Widgets\AdditionalCssInterface; use TYPO3\CMS\Dashboard\Widgets\WidgetConfigurationInterface; use TYPO3\CMS\Dashboard\Widgets\WidgetInterface; use TYPO3\CMS\Fluid\View\StandaloneView; -class ContactWidget implements WidgetInterface +class ContactWidget implements WidgetInterface, AdditionalCssInterface { /** * @var WidgetConfigurationInterface @@ -48,6 +49,13 @@ public function __construct( $this->options = $options; } + public function getCssFiles(): array + { + return [ + 'EXT:widgets/Resources/Public/Css/contactWidget.css', + ]; + } + public function renderWidgetContent(): string { diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index b1d7f07..6aa24c0 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -56,7 +56,7 @@ services: $view: '@dashboard.views.widget' $options: template: 'Widget/ContactWidget' - introText: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:contactIntroTextDefault' + introTextLl: '' company: 'Your TYPO3 agency' address: '-' postalCode: '-' @@ -73,4 +73,4 @@ services: description: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:widgets.dashboard.widget.contact.description' iconIdentifier: 'content-widget-list' height: 'medium' - width: 'medium' + width: 'small' diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 6a18ae0..370e31d 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -36,6 +36,12 @@ Last change + + Tel: + + + Mail: + Contact information: diff --git a/Resources/Private/Sass/contactWidget.scss b/Resources/Private/Sass/contactWidget.scss new file mode 100644 index 0000000..eb3fb84 --- /dev/null +++ b/Resources/Private/Sass/contactWidget.scss @@ -0,0 +1,8 @@ +@import "Base"; + +.widget { + .widget-contact-logo { + max-width: 290px; + margin-top: 20px; + } +} diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html index 28a293b..568d4f1 100644 --- a/Resources/Private/Templates/Widget/ContactWidget.html +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -1,26 +1,47 @@ - + -
-
-

- {f:translate(key: options.introText, default: options.introText) -> f:format.raw()} -

-

- {config.company} - {config.address} - {config.postalCode} - {config.place} - {config.tel} - {config.mail} - {config.website} -

-
-
- afb -
-
+ +

+ {f:translate(key: options.introTextLl, default: options.introTextLl) -> f:format.raw()} +

+
+

+ + {options.company}
+
+ + {options.address}
+
+ + {options.postalCode} {options.place}
+
+

+ +

+ + + {options.tel}
+
+ + + + {options.mail} +
+
+

+
+ +

+ {options.website} +

+
+ + +
diff --git a/Resources/Public/Css/contactWidget.css b/Resources/Public/Css/contactWidget.css new file mode 100644 index 0000000..44564a3 --- /dev/null +++ b/Resources/Public/Css/contactWidget.css @@ -0,0 +1,4 @@ +.widget .widget-contact-logo { + max-width: 290px; + margin-top: 20px; } +/*# sourceMappingURL=contactWidget.css.map */ \ No newline at end of file From 6bdbcd87225f2e9c5af84d636aa109c1016861af Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Thu, 23 Apr 2020 17:45:31 +0200 Subject: [PATCH 4/8] [TASK] Add button to contactWidget --- Classes/Widgets/ContactWidget.php | 8 +++++++ Configuration/Services.yaml | 24 ++++++++++++------- Resources/Private/Language/locallang.xlf | 3 --- .../Templates/Widget/ContactWidget.html | 10 ++++++-- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/Classes/Widgets/ContactWidget.php b/Classes/Widgets/ContactWidget.php index 9db4cd7..859e97f 100644 --- a/Classes/Widgets/ContactWidget.php +++ b/Classes/Widgets/ContactWidget.php @@ -39,13 +39,20 @@ class ContactWidget implements WidgetInterface, AdditionalCssInterface */ private $options; + /** + * @var null + */ + private $buttonProvider; + public function __construct( WidgetConfigurationInterface $configuration, StandaloneView $view, + $buttonProvider = null, array $options = [] ) { $this->configuration = $configuration; $this->view = $view; + $this->buttonProvider = $buttonProvider; $this->options = $options; } @@ -62,6 +69,7 @@ public function renderWidgetContent(): string $this->view->setTemplate('Widget/ContactWidget'); $this->view->assignMultiple([ 'options' => $this->options, + 'button' => $this->buttonProvider, 'configuration' => $this->configuration, ]); return $this->view->render(); diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 6aa24c0..961485d 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -50,21 +50,29 @@ services: height: 'medium' width: 'medium' + dashboard.buttons.contact: + class: 'TYPO3\CMS\Dashboard\Widgets\Provider\ButtonProvider' + arguments: + $title: '' + $link: '' + $target: '_blank' + widgets.dashboard.widget.contact: class: 'FriendsOfTYPO3\Widgets\Widgets\ContactWidget' arguments: $view: '@dashboard.views.widget' + $buttonProvider: '@dashboard.buttons.contact' $options: template: 'Widget/ContactWidget' - introTextLl: '' + introText: '' company: 'Your TYPO3 agency' - address: '-' - postalCode: '-' - place: '-' - tel: '-' - mail: '-' - website: '-' - logoPath: 'logopath.svg' + address: '' + postalCode: '' + place: '' + tel: '' + mail: '' + website: '' + logoPath: '' tags: - name: dashboard.widget identifier: 'widgets-contact' diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 370e31d..c009705 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -42,9 +42,6 @@ Mail: - - Contact information: - Current online users diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html index 568d4f1..5df0bdb 100644 --- a/Resources/Private/Templates/Widget/ContactWidget.html +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -2,9 +2,9 @@ - +

- {f:translate(key: options.introTextLl, default: options.introTextLl) -> f:format.raw()} + {f:translate(key: options.introText, default: options.introText) -> f:format.raw()}

@@ -44,4 +44,10 @@ + + + {f:translate(id: button.title, default: button.title)} + + + From 2e023bbedbf9125698a23d0ad9cde1abee50e2cf Mon Sep 17 00:00:00 2001 From: Richard Haeser Date: Tue, 5 May 2020 10:53:12 +0200 Subject: [PATCH 5/8] [BUGFIX] Add config for reportsWidgets in grunt file --- Build/Gruntfile.js | 5 +++++ Resources/Public/Css/contactWidget.css | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Build/Gruntfile.js b/Build/Gruntfile.js index e01ef4c..b13cec8 100644 --- a/Build/Gruntfile.js +++ b/Build/Gruntfile.js @@ -26,6 +26,11 @@ module.exports = function (grunt) { scssFilePaths: [], cssFilePaths: [] }, + 'reportsWidget': { + stylesheets: ['reportsWidget'], + scssFilePaths: [], + cssFilePaths: [] + }, 'contactWidget': { stylesheets: ['contactWidget'], scssFilePaths: [], diff --git a/Resources/Public/Css/contactWidget.css b/Resources/Public/Css/contactWidget.css index 44564a3..f821173 100644 --- a/Resources/Public/Css/contactWidget.css +++ b/Resources/Public/Css/contactWidget.css @@ -1,4 +1 @@ -.widget .widget-contact-logo { - max-width: 290px; - margin-top: 20px; } -/*# sourceMappingURL=contactWidget.css.map */ \ No newline at end of file +.widget .widget-contact-logo{max-width:290px;margin-top:20px} \ No newline at end of file From bd4de51bc1cd6bfcc41c2458d1ce03261d7d3a06 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Thu, 16 Jul 2020 18:53:27 +0200 Subject: [PATCH 6/8] [TASK] Add country to contact widget --- Configuration/Services.yaml | 1 + README.md | 6 +++--- Resources/Private/Language/locallang.xlf | 2 +- Resources/Private/Templates/Widget/ContactWidget.html | 3 +++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 961485d..472eee4 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -69,6 +69,7 @@ services: address: '' postalCode: '' place: '' + country: '' tel: '' mail: '' website: '' diff --git a/README.md b/README.md index d87a847..4dd90df 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # Widgets for the TYPO3 Dashboard This extension contains several widgets, which can be used on the Dashboard for TYPO3. To use -these widgets you need to install the TYPO3 core-extension called dashboard. +these widgets you need to install the TYPO3 core-extension called dashboard. The extension only contains widgets showing data that is available in core extensions. So for these widgets no 3rd party extensions are needed. ## Overview of widgets This extension currently contains the following widgets: -* +* **Contact information**, Will show contact information of your supplier; ## I miss widgets! Do you have an idea for a widget showing information that is available by core extensions, please -create a new widget request with your ideas. +create a new widget request with your ideas. [Request new widget](https://github.com/FriendsOfTYPO3/widgets/issues/new?labels=widget&template=widget-request.md) diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index c009705..0ebe9fd 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -71,7 +71,7 @@ Contact information - Will show contact information of supplier + Will show contact information of your supplier diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html index 5df0bdb..8eebe71 100644 --- a/Resources/Private/Templates/Widget/ContactWidget.html +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -17,6 +17,9 @@ {options.postalCode} {options.place}
+ + {options.country}
+

From e2e1437901761966a1d0348ff74216dba5cca891 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Thu, 16 Jul 2020 21:46:11 +0200 Subject: [PATCH 7/8] [TASK] Refactor frontend and default widget information --- Configuration/Services.yaml | 10 +++++----- Resources/Private/Language/locallang.xlf | 8 ++++++++ Resources/Private/Sass/contactWidget.scss | 3 ++- .../Templates/Widget/ContactWidget.html | 19 ++++++++++++++----- Resources/Public/Css/contactWidget.css | 2 +- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 472eee4..22536f8 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -53,8 +53,8 @@ services: dashboard.buttons.contact: class: 'TYPO3\CMS\Dashboard\Widgets\Provider\ButtonProvider' arguments: - $title: '' - $link: '' + $title: 'Find a partner' + $link: 'https://typo3.com/services/find-a-typo3-partner/official-typo3-partner-finder' $target: '_blank' widgets.dashboard.widget.contact: @@ -64,8 +64,8 @@ services: $buttonProvider: '@dashboard.buttons.contact' $options: template: 'Widget/ContactWidget' - introText: '' - company: 'Your TYPO3 agency' + introText: 'LLL:EXT:widgets/Resources/Private/Language/locallang.xlf:widgets.dashboard.widget.contact.defaultIntro' + company: '' address: '' postalCode: '' place: '' @@ -73,7 +73,7 @@ services: tel: '' mail: '' website: '' - logoPath: '' + logoPath: 'EXT:backend/Resources/Public/Images/typo3_orange.svg' tags: - name: dashboard.widget identifier: 'widgets-contact' diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 0ebe9fd..aec6ee6 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -73,6 +73,14 @@ Will show contact information of your supplier + + TYPO3 + + + No information of your supplier found!

+ Good partners are crucial to success. Our certified, audited partner agencies and freelancers are doing remarkable, high-quality work every day and we can help you find the best match for your project.]]> + +
diff --git a/Resources/Private/Sass/contactWidget.scss b/Resources/Private/Sass/contactWidget.scss index eb3fb84..be6ba60 100644 --- a/Resources/Private/Sass/contactWidget.scss +++ b/Resources/Private/Sass/contactWidget.scss @@ -2,7 +2,8 @@ .widget { .widget-contact-logo { + width: 75%; max-width: 290px; - margin-top: 20px; + margin-bottom: 20px; } } diff --git a/Resources/Private/Templates/Widget/ContactWidget.html b/Resources/Private/Templates/Widget/ContactWidget.html index 8eebe71..f8db7af 100644 --- a/Resources/Private/Templates/Widget/ContactWidget.html +++ b/Resources/Private/Templates/Widget/ContactWidget.html @@ -2,6 +2,20 @@ + + + {f:translate(key: options.company, default: options.company)} + + + {f:translate(key: 'widgets.dashboard.widget.contact.defaultCompany')} + + + + + +

{f:translate(key: options.introText, default: options.introText) -> f:format.raw()} @@ -40,11 +54,6 @@ {options.website}

- - -
diff --git a/Resources/Public/Css/contactWidget.css b/Resources/Public/Css/contactWidget.css index f821173..f81818f 100644 --- a/Resources/Public/Css/contactWidget.css +++ b/Resources/Public/Css/contactWidget.css @@ -1 +1 @@ -.widget .widget-contact-logo{max-width:290px;margin-top:20px} \ No newline at end of file +.widget .widget-contact-logo{width:75%;max-width:290px;margin-bottom:20px} \ No newline at end of file From 95510a75dd5675d00decbb2cc8b1b7ba8de7ca69 Mon Sep 17 00:00:00 2001 From: Koen Wouters Date: Thu, 16 Jul 2020 22:07:35 +0200 Subject: [PATCH 8/8] [TASK] Add contact widget documentation --- Documentation/Images/ContactWidget.png | Bin 0 -> 33536 bytes Documentation/Widgets/ContactWidget.rst | 52 ++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 Documentation/Images/ContactWidget.png create mode 100644 Documentation/Widgets/ContactWidget.rst diff --git a/Documentation/Images/ContactWidget.png b/Documentation/Images/ContactWidget.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e47a69cd82573fb8b12d47797886d6f69dfe92 GIT binary patch literal 33536 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
    +Z)M%_?w+jLozsVt06f|?s^D@z`27LZ>q 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 literal 0 HcmV?d00001 diff --git a/Documentation/Widgets/ContactWidget.rst b/Documentation/Widgets/ContactWidget.rst new file mode 100644 index 0000000..ba30eca --- /dev/null +++ b/Documentation/Widgets/ContactWidget.rst @@ -0,0 +1,52 @@ +.. include:: ../Includes.txt + +.. _contact-widget: + +=========================== +Contact Widget +=========================== + +This widget will show you the contact information of your your TYPO3 supplier. +To show your supplier contact information some configuration is required. + + +.. figure:: ../Images/ContactWidget.png + :class: with-shadow + :alt: Show the contact information + :width: 500px + + An example of the contact widget with supplier information. + + +Options +------- +This widget has some options. To override the default options, see :ref:`Adjust settings of registered widgets `. + +An example: + +.. code-block:: yaml + + dashboard.buttons.contact: + class: 'TYPO3\CMS\Dashboard\Widgets\Provider\ButtonProvider' + arguments: + $title: 'Support' + $link: 'https://maxserv.com/support' + $target: '_blank' + + widgets.dashboard.widget.contact: + class: 'FriendsOfTYPO3\Widgets\Widgets\ContactWidget' + arguments: + $view: '@dashboard.views.widget' + $buttonProvider: '@dashboard.buttons.contact' + $options: + template: 'Widget/ContactWidget' + introText: '' + company: 'MaxServ' + address: 'Taxandriaweg 11' + postalCode: '5142 PA' + place: 'Waalwijk' + country: 'The Netherlands' + tel: '+31 416 30 10 00' + mail: 'info@maxserv.com' + website: 'https://www.maxserv.com' + logoPath: 'https://typo3.com/fileadmin/partner/logo-maxserv-zonder-groot.png'