ksieren 3 anni fa
parent
commit
22c98546ec
100 ha cambiato i file con 21049 aggiunte e 0 eliminazioni
  1. 12 0
      .gitignore
  2. 339 0
      LICENSE
  3. 69 0
      composer.json
  4. 6971 0
      composer.lock
  5. 53 0
      extensions/mrm_be/Classes/Controller/DKZController.php
  6. 248 0
      extensions/mrm_be/Classes/DKZer.php
  7. 42 0
      extensions/mrm_be/Classes/Form/Element/PagesDkzSelector.php
  8. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmAdditionalinfoboxPreviewRenderer.php
  9. 47 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmAnimationPreviewRenderer.php
  10. 58 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmButtonPreviewRenderer.php
  11. 65 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChatbotDirectPreviewRenderer.php
  12. 68 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChatbotPreviewRenderer.php
  13. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistInputPreviewRenderer.php
  14. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistRadioRangePreviewRenderer.php
  15. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistScalePreviewRenderer.php
  16. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistToDoMultiPreviewRenderer.php
  17. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistToDoPreviewRenderer.php
  18. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistYesMaybeNoPreviewRenderer.php
  19. 82 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmContentimagePreviewRenderer.php
  20. 72 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmExplorerboxPreviewRenderer.php
  21. 64 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmExtraInfosboxPreviewRenderer.php
  22. 47 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFahrplanPreviewRenderer.php
  23. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFoldoutH3PreviewRenderer.php
  24. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFoldoutPreviewRenderer.php
  25. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmH2PreviewRenderer.php
  26. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmH3PreviewRenderer.php
  27. 75 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHeroimagePreviewRenderer.php
  28. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHighlightboxPreviewRenderer.php
  29. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHtmlPreviewRenderer.php
  30. 89 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmImageplusPreviewRenderer.php
  31. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInfoboxPreviewRenderer.php
  32. 57 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInjectionPreviewRenderer.php
  33. 64 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInterviewantwortPreviewRenderer.php
  34. 60 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInterviewfragePreviewRenderer.php
  35. 57 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmIntrotextPreviewRenderer.php
  36. 65 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmLinkagePreviewRenderer.php
  37. 65 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmMenuPreviewRenderer.php
  38. 63 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmMovingimagesvideoPreviewRenderer.php
  39. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmNewsletteraboPreviewRenderer.php
  40. 57 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmParagraphPreviewRenderer.php
  41. 74 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPicturechoicePreviewRenderer.php
  42. 61 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPodcastPreviewRenderer.php
  43. 75 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPostimagePreviewRenderer.php
  44. 75 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPublicationPreviewRenderer.php
  45. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmQuizPreviewRenderer.php
  46. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmQuizdirectPreviewRenderer.php
  47. 82 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmRawimagePreviewRenderer.php
  48. 55 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmRedirectsPreviewRenderer.php
  49. 73 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmStatementboxPreviewRenderer.php
  50. 71 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmThemaDerWochePreviewRenderer.php
  51. 74 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmTopthemenPreviewRenderer.php
  52. 48 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmVotingPreviewRenderer.php
  53. 52 0
      extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmbeCmMaintenancePreviewRenderer.php
  54. 2378 0
      extensions/mrm_be/Classes/Hooks/TCE/TCEMainHook.php
  55. 88 0
      extensions/mrm_be/Classes/Mongoer.php
  56. 63 0
      extensions/mrm_be/Classes/Task/PageStatusValidator.php
  57. 56 0
      extensions/mrm_be/Classes/Task/RedirectsFromMysqlToMongo.php
  58. 75 0
      extensions/mrm_be/Classes/UserFunc/Pages.php
  59. 16 0
      extensions/mrm_be/Configuration/Backend/AjaxRoutes.php
  60. 238 0
      extensions/mrm_be/Configuration/FlexForms/additionalinfobox.xml
  61. 108 0
      extensions/mrm_be/Configuration/FlexForms/animation.xml
  62. 54 0
      extensions/mrm_be/Configuration/FlexForms/button.xml
  63. 35 0
      extensions/mrm_be/Configuration/FlexForms/chatbot-direct.xml
  64. 87 0
      extensions/mrm_be/Configuration/FlexForms/chatbot.xml
  65. 176 0
      extensions/mrm_be/Configuration/FlexForms/checklist-input.xml
  66. 409 0
      extensions/mrm_be/Configuration/FlexForms/checklist-radiorange.xml
  67. 274 0
      extensions/mrm_be/Configuration/FlexForms/checklist-scale.xml
  68. 121 0
      extensions/mrm_be/Configuration/FlexForms/checklist-todo-multi.xml
  69. 221 0
      extensions/mrm_be/Configuration/FlexForms/checklist-todo.xml
  70. 184 0
      extensions/mrm_be/Configuration/FlexForms/checklist-yesmaybeno.xml
  71. 90 0
      extensions/mrm_be/Configuration/FlexForms/contentimage.xml
  72. 260 0
      extensions/mrm_be/Configuration/FlexForms/dynamictileoverview.xml
  73. 795 0
      extensions/mrm_be/Configuration/FlexForms/explorerbox.xml
  74. 205 0
      extensions/mrm_be/Configuration/FlexForms/extra-infosbox.xml
  75. 626 0
      extensions/mrm_be/Configuration/FlexForms/fahrplan.xml
  76. 226 0
      extensions/mrm_be/Configuration/FlexForms/foldout-h3.xml
  77. 226 0
      extensions/mrm_be/Configuration/FlexForms/foldout.xml
  78. 25 0
      extensions/mrm_be/Configuration/FlexForms/headline1.xml
  79. 25 0
      extensions/mrm_be/Configuration/FlexForms/headline2.xml
  80. 25 0
      extensions/mrm_be/Configuration/FlexForms/headline3.xml
  81. 90 0
      extensions/mrm_be/Configuration/FlexForms/heroimage.xml
  82. 46 0
      extensions/mrm_be/Configuration/FlexForms/highlightbox.xml
  83. 413 0
      extensions/mrm_be/Configuration/FlexForms/homeheaderinfo.xml
  84. 25 0
      extensions/mrm_be/Configuration/FlexForms/html.xml
  85. 131 0
      extensions/mrm_be/Configuration/FlexForms/imageplus.xml
  86. 255 0
      extensions/mrm_be/Configuration/FlexForms/infobox.xml
  87. 25 0
      extensions/mrm_be/Configuration/FlexForms/injection.xml
  88. 46 0
      extensions/mrm_be/Configuration/FlexForms/interviewantwort.xml
  89. 35 0
      extensions/mrm_be/Configuration/FlexForms/interviewfrage.xml
  90. 26 0
      extensions/mrm_be/Configuration/FlexForms/introtext.xml
  91. 235 0
      extensions/mrm_be/Configuration/FlexForms/linkage.xml
  92. 50 0
      extensions/mrm_be/Configuration/FlexForms/maintenance.xml
  93. 83 0
      extensions/mrm_be/Configuration/FlexForms/menu.xml
  94. 43 0
      extensions/mrm_be/Configuration/FlexForms/movingimagesvideo.xml
  95. 38 0
      extensions/mrm_be/Configuration/FlexForms/newsletterabo.xml
  96. 28 0
      extensions/mrm_be/Configuration/FlexForms/paragraph.xml
  97. 1467 0
      extensions/mrm_be/Configuration/FlexForms/picturechoice.xml
  98. 99 0
      extensions/mrm_be/Configuration/FlexForms/podcast.xml
  99. 90 0
      extensions/mrm_be/Configuration/FlexForms/postimage.xml
  100. 188 0
      extensions/mrm_be/Configuration/FlexForms/publication.xml

+ 12 - 0
.gitignore

@@ -0,0 +1,12 @@
+.DS_Store
+.idea
+nbproject
+/var/*
+!/var/labels
+/vendor
+/public/*
+!/public/.htaccess
+!/public/typo3conf
+/public/typo3conf/*
+!/public/typo3conf/LocalConfiguration.php
+!/public/typo3conf/AdditionalConfiguration.php

+ 339 - 0
LICENSE

@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.

+ 69 - 0
composer.json

@@ -0,0 +1,69 @@
+{
+	"name": "typo3/cms-base-distribution",
+	"description" : "TYPO3 CMS Base Distribution",
+	"license": "GPL-2.0-or-later",
+	"config": {
+		"allow-plugins": {
+			"typo3/class-alias-loader": true,
+			"typo3/cms-composer-installers": true
+		},
+		"platform": {
+			"php": "7.4"
+		},
+		"sort-packages": true
+	},
+	"repositories": [
+		{
+			"type": "path",
+			"url": "extensions/*",
+			"options": {
+				"symlink": true
+			}
+		}
+	],
+	"require": {
+		"ext-dom": "*",
+		"ext-json": "*",
+		"helhum/typo3-console": "^6.0.0",
+		"ichhabrecht/content-defender": "^3.2",
+		"meramo/mrm-be": "@dev",
+		"meramo/mrmbepages": "@dev",
+		"mongodb/mongodb": "^1.15",
+		"typo3/cms-about": "^10.4.0",
+		"typo3/cms-backend": "^10.4.0",
+		"typo3/cms-belog": "^10.4.0",
+		"typo3/cms-beuser": "^10.4.0",
+		"typo3/cms-core": "^10.4.0",
+		"typo3/cms-dashboard": "^10.4.0",
+		"typo3/cms-extbase": "^10.4.0",
+		"typo3/cms-extensionmanager": "^10.4.0",
+		"typo3/cms-felogin": "^10.4.0",
+		"typo3/cms-filelist": "^10.4.0",
+		"typo3/cms-fluid": "^10.4.0",
+		"typo3/cms-fluid-styled-content": "^10.4.0",
+		"typo3/cms-form": "^10.4.0",
+		"typo3/cms-frontend": "^10.4.0",
+		"typo3/cms-impexp": "^10.4.0",
+		"typo3/cms-info": "^10.4.0",
+		"typo3/cms-install": "^10.4.0",
+		"typo3/cms-recordlist": "^10.4.0",
+		"typo3/cms-rte-ckeditor": "^10.4.0",
+		"typo3/cms-seo": "^10.4.0",
+		"typo3/cms-setup": "^10.4.0",
+		"typo3/cms-sys-note": "^10.4.0",
+		"typo3/cms-t3editor": "^10.4.0",
+		"typo3/cms-tstemplate": "^10.4.0",
+		"typo3/cms-viewpage": "^10.4.0",
+		"vlucas/phpdotenv": "^5.5",
+		"wazum/pagetree-resizable": "^1.3"
+	},
+	"scripts":{
+		"typo3-cms-scripts": [
+			"typo3cms install:generatepackagestates",
+			"typo3cms install:fixfolderstructure"
+		],
+		"post-autoload-dump": [
+			"@typo3-cms-scripts"
+		]
+	}
+}

+ 6971 - 0
composer.lock

@@ -0,0 +1,6971 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "060e7ada7036bacc07f9dc1dd8de8e06",
+    "packages": [
+        {
+            "name": "doctrine/annotations",
+            "version": "1.14.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/annotations.git",
+                "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
+                "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/lexer": "^1 || ^2",
+                "ext-tokenizer": "*",
+                "php": "^7.1 || ^8.0",
+                "psr/cache": "^1 || ^2 || ^3"
+            },
+            "require-dev": {
+                "doctrine/cache": "^1.11 || ^2.0",
+                "doctrine/coding-standard": "^9 || ^10",
+                "phpstan/phpstan": "~1.4.10 || ^1.8.0",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "symfony/cache": "^4.4 || ^5.4 || ^6",
+                "vimeo/psalm": "^4.10"
+            },
+            "suggest": {
+                "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Guilherme Blanco",
+                    "email": "guilhermeblanco@gmail.com"
+                },
+                {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
+                    "name": "Benjamin Eberlei",
+                    "email": "kontakt@beberlei.de"
+                },
+                {
+                    "name": "Jonathan Wage",
+                    "email": "jonwage@gmail.com"
+                },
+                {
+                    "name": "Johannes Schmitt",
+                    "email": "schmittjoh@gmail.com"
+                }
+            ],
+            "description": "Docblock Annotations Parser",
+            "homepage": "https://www.doctrine-project.org/projects/annotations.html",
+            "keywords": [
+                "annotations",
+                "docblock",
+                "parser"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/annotations/issues",
+                "source": "https://github.com/doctrine/annotations/tree/1.14.3"
+            },
+            "time": "2023-02-01T09:20:38+00:00"
+        },
+        {
+            "name": "doctrine/cache",
+            "version": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/cache.git",
+                "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
+                "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
+                "shasum": ""
+            },
+            "require": {
+                "php": "~7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/common": ">2.2,<2.4"
+            },
+            "require-dev": {
+                "cache/integration-tests": "dev-master",
+                "doctrine/coding-standard": "^9",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "psr/cache": "^1.0 || ^2.0 || ^3.0",
+                "symfony/cache": "^4.4 || ^5.4 || ^6",
+                "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Guilherme Blanco",
+                    "email": "guilhermeblanco@gmail.com"
+                },
+                {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
+                    "name": "Benjamin Eberlei",
+                    "email": "kontakt@beberlei.de"
+                },
+                {
+                    "name": "Jonathan Wage",
+                    "email": "jonwage@gmail.com"
+                },
+                {
+                    "name": "Johannes Schmitt",
+                    "email": "schmittjoh@gmail.com"
+                }
+            ],
+            "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
+            "homepage": "https://www.doctrine-project.org/projects/cache.html",
+            "keywords": [
+                "abstraction",
+                "apcu",
+                "cache",
+                "caching",
+                "couchdb",
+                "memcached",
+                "php",
+                "redis",
+                "xcache"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/cache/issues",
+                "source": "https://github.com/doctrine/cache/tree/2.2.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-20T20:07:39+00:00"
+        },
+        {
+            "name": "doctrine/dbal",
+            "version": "2.13.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/dbal.git",
+                "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8",
+                "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/cache": "^1.0|^2.0",
+                "doctrine/deprecations": "^0.5.3|^1",
+                "doctrine/event-manager": "^1.0",
+                "ext-pdo": "*",
+                "php": "^7.1 || ^8"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "9.0.0",
+                "jetbrains/phpstorm-stubs": "2021.1",
+                "phpstan/phpstan": "1.4.6",
+                "phpunit/phpunit": "^7.5.20|^8.5|9.5.16",
+                "psalm/plugin-phpunit": "0.16.1",
+                "squizlabs/php_codesniffer": "3.6.2",
+                "symfony/cache": "^4.4",
+                "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
+                "vimeo/psalm": "4.22.0"
+            },
+            "suggest": {
+                "symfony/console": "For helpful console commands such as SQL execution and import of files."
+            },
+            "bin": [
+                "bin/doctrine-dbal"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Guilherme Blanco",
+                    "email": "guilhermeblanco@gmail.com"
+                },
+                {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
+                    "name": "Benjamin Eberlei",
+                    "email": "kontakt@beberlei.de"
+                },
+                {
+                    "name": "Jonathan Wage",
+                    "email": "jonwage@gmail.com"
+                }
+            ],
+            "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
+            "homepage": "https://www.doctrine-project.org/projects/dbal.html",
+            "keywords": [
+                "abstraction",
+                "database",
+                "db2",
+                "dbal",
+                "mariadb",
+                "mssql",
+                "mysql",
+                "oci8",
+                "oracle",
+                "pdo",
+                "pgsql",
+                "postgresql",
+                "queryobject",
+                "sasql",
+                "sql",
+                "sqlanywhere",
+                "sqlite",
+                "sqlserver",
+                "sqlsrv"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/dbal/issues",
+                "source": "https://github.com/doctrine/dbal/tree/2.13.9"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-02T20:28:55+00:00"
+        },
+        {
+            "name": "doctrine/deprecations",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/deprecations.git",
+                "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+                "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1|^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9",
+                "phpunit/phpunit": "^7.5|^8.5|^9.5",
+                "psr/log": "^1|^2|^3"
+            },
+            "suggest": {
+                "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+            "homepage": "https://www.doctrine-project.org/",
+            "support": {
+                "issues": "https://github.com/doctrine/deprecations/issues",
+                "source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
+            },
+            "time": "2022-05-02T15:47:09+00:00"
+        },
+        {
+            "name": "doctrine/event-manager",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/event-manager.git",
+                "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520",
+                "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/deprecations": "^0.5.3 || ^1",
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/common": "<2.9"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9 || ^10",
+                "phpstan/phpstan": "~1.4.10 || ^1.8.8",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.24"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Common\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Guilherme Blanco",
+                    "email": "guilhermeblanco@gmail.com"
+                },
+                {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
+                    "name": "Benjamin Eberlei",
+                    "email": "kontakt@beberlei.de"
+                },
+                {
+                    "name": "Jonathan Wage",
+                    "email": "jonwage@gmail.com"
+                },
+                {
+                    "name": "Johannes Schmitt",
+                    "email": "schmittjoh@gmail.com"
+                },
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com"
+                }
+            ],
+            "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+            "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+            "keywords": [
+                "event",
+                "event dispatcher",
+                "event manager",
+                "event system",
+                "events"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/event-manager/issues",
+                "source": "https://github.com/doctrine/event-manager/tree/1.2.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-12T20:51:15+00:00"
+        },
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9 || ^11",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.16 || ^1",
+                "phpstan/phpstan": "^1.4",
+                "phpstan/phpstan-phpunit": "^1",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.30 || ^5.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "https://ocramius.github.io/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/instantiator/issues",
+                "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-12-30T00:15:36+00:00"
+        },
+        {
+            "name": "doctrine/lexer",
+            "version": "1.2.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/lexer.git",
+                "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+                "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9.0",
+                "phpstan/phpstan": "^1.3",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.11"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Guilherme Blanco",
+                    "email": "guilhermeblanco@gmail.com"
+                },
+                {
+                    "name": "Roman Borschel",
+                    "email": "roman@code-factory.org"
+                },
+                {
+                    "name": "Johannes Schmitt",
+                    "email": "schmittjoh@gmail.com"
+                }
+            ],
+            "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+            "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+            "keywords": [
+                "annotations",
+                "docblock",
+                "lexer",
+                "parser",
+                "php"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/lexer/issues",
+                "source": "https://github.com/doctrine/lexer/tree/1.2.3"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-02-28T11:07:21+00:00"
+        },
+        {
+            "name": "egulias/email-validator",
+            "version": "2.1.25",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/egulias/EmailValidator.git",
+                "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4",
+                "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/lexer": "^1.0.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.10"
+            },
+            "require-dev": {
+                "dominicsayers/isemail": "^3.0.7",
+                "phpunit/phpunit": "^4.8.36|^7.5.15",
+                "satooshi/php-coveralls": "^1.0.1"
+            },
+            "suggest": {
+                "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Egulias\\EmailValidator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Eduardo Gulias Davis"
+                }
+            ],
+            "description": "A library for validating emails against several RFCs",
+            "homepage": "https://github.com/egulias/EmailValidator",
+            "keywords": [
+                "email",
+                "emailvalidation",
+                "emailvalidator",
+                "validation",
+                "validator"
+            ],
+            "support": {
+                "issues": "https://github.com/egulias/EmailValidator/issues",
+                "source": "https://github.com/egulias/EmailValidator/tree/2.1.25"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/egulias",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-12-29T14:50:06+00:00"
+        },
+        {
+            "name": "enshrined/svg-sanitize",
+            "version": "0.15.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/darylldoyle/svg-sanitizer.git",
+                "reference": "e50b83a2f1f296ca61394fe88fbfe3e896a84cf4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e50b83a2f1f296ca61394fe88fbfe3e896a84cf4",
+                "reference": "e50b83a2f1f296ca61394fe88fbfe3e896a84cf4",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "php": "^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.5 || ^8.5"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "enshrined\\svgSanitize\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Daryll Doyle",
+                    "email": "daryll@enshrined.co.uk"
+                }
+            ],
+            "description": "An SVG sanitizer for PHP",
+            "support": {
+                "issues": "https://github.com/darylldoyle/svg-sanitizer/issues",
+                "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.15.4"
+            },
+            "time": "2022-02-21T09:13:59+00:00"
+        },
+        {
+            "name": "graham-campbell/result-type",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/GrahamCampbell/Result-Type.git",
+                "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8",
+                "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0",
+                "phpoption/phpoption": "^1.9"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "GrahamCampbell\\ResultType\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                }
+            ],
+            "description": "An Implementation Of The Result Type",
+            "keywords": [
+                "Graham Campbell",
+                "GrahamCampbell",
+                "Result Type",
+                "Result-Type",
+                "result"
+            ],
+            "support": {
+                "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+                "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-30T15:56:11+00:00"
+        },
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "6.5.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "guzzlehttp/promises": "^1.0",
+                "guzzlehttp/psr7": "^1.9",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.17"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+                "psr/log": "^1.1"
+            },
+            "suggest": {
+                "psr/log": "Required for using the Log middleware"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.5-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Jeremy Lindblom",
+                    "email": "jeremeamia@gmail.com",
+                    "homepage": "https://github.com/jeremeamia"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-06-20T22:16:07+00:00"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "1.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "b94b2807d85443f9719887892882d0329d1e2598"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
+                "reference": "b94b2807d85443f9719887892882d0329d1e2598",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^4.4 || ^5.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.5-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/1.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-08-28T14:55:35+00:00"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
+                "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0",
+                "psr/http-message": "~1.0",
+                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+            },
+            "provide": {
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "ext-zlib": "*",
+                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+            },
+            "suggest": {
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/1.9.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-06-20T21:43:03+00:00"
+        },
+        {
+            "name": "helhum/config-loader",
+            "version": "v0.12.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/helhum/config-loader.git",
+                "reference": "f761ab3fcf888b9d17d679d94b14aca24fe6bfab"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/helhum/config-loader/zipball/f761ab3fcf888b9d17d679d94b14aca24fe6bfab",
+                "reference": "f761ab3fcf888b9d17d679d94b14aca24fe6bfab",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2"
+            },
+            "require-dev": {
+                "php-parallel-lint/php-parallel-lint": "^1.2",
+                "phpunit/phpunit": "^8.5",
+                "symfony/yaml": "^2.8 || ^3.3 || ^4.0 || ^5.0"
+            },
+            "suggest": {
+                "ext-yaml": "For improved performance when parsing yaml files you should use the PECL YAML Parser php extension",
+                "symfony/yaml": "To be able to parse yaml files, you will need symfony/yaml"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Helhum\\ConfigLoader\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "description": "Generic config loader with context and environment support.",
+            "support": {
+                "issues": "https://github.com/helhum/config-loader/issues",
+                "source": "https://github.com/helhum/config-loader/tree/v0.12.5"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.me/helhum/19.99",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/helhum",
+                    "type": "github"
+                }
+            ],
+            "time": "2022-02-21T15:32:39+00:00"
+        },
+        {
+            "name": "helhum/typo3-console",
+            "version": "v6.7.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-Console/TYPO3-Console.git",
+                "reference": "4b7123a8198978b46bd2370c685d44432242a2b3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-Console/TYPO3-Console/zipball/4b7123a8198978b46bd2370c685d44432242a2b3",
+                "reference": "4b7123a8198978b46bd2370c685d44432242a2b3",
+                "shasum": ""
+            },
+            "require": {
+                "helhum/config-loader": ">=0.9 <0.13",
+                "php": ">=7.2",
+                "symfony/console": "^4.4 || ^5.0",
+                "symfony/process": "^4.4 || ^5.0",
+                "typo3/cms-backend": "^10.4.22",
+                "typo3/cms-core": "^10.4.22",
+                "typo3/cms-extbase": "^10.4.22",
+                "typo3/cms-extensionmanager": "^10.4.22",
+                "typo3/cms-fluid": "^10.4.22",
+                "typo3/cms-frontend": "^10.4.22",
+                "typo3/cms-install": "^10.4.22"
+            },
+            "conflict": {
+                "doctrine/dbal": "2.13.0 || 2.13.1"
+            },
+            "replace": {
+                "typo3-ter/typo3-console": "self.version"
+            },
+            "require-dev": {
+                "nimut/testing-framework": "^6.0.1",
+                "php-parallel-lint/php-parallel-lint": "^1.2",
+                "phpspec/prophecy": "*",
+                "phpunit/phpunit": "^8.5.18",
+                "symfony/expression-language": "^4.4 || ^5.0",
+                "symfony/filesystem": "^4.4 || ^5.0",
+                "typo3-console/create-reference-command": "@dev",
+                "typo3-console/php-server-command": "@dev",
+                "typo3/cms-filemetadata": "^10.4.22",
+                "typo3/cms-reports": "^10.4.22"
+            },
+            "bin": [
+                "typo3cms"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-latest": "6.x-dev"
+                },
+                "typo3/cms": {
+                    "app-dir": ".Build",
+                    "web-dir": ".Build/public"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Helhum\\Typo3Console\\": [
+                        "Classes/Console/",
+                        "Classes/Compatibility/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Helmut Hummel",
+                    "email": "info@helhum.io",
+                    "homepage": "https://helhum.io",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A reliable and powerful command line interface for TYPO3 CMS",
+            "homepage": "https://insight.helhum.io/post/104528981610/about-the-beauty-and-power-of-typo3-console",
+            "keywords": [
+                "cli",
+                "command",
+                "commandline",
+                "console",
+                "typo3"
+            ],
+            "support": {
+                "docs": "https://docs.typo3.org/p/helhum/typo3-console/main/en-us/",
+                "issues": "https://github.com/TYPO3-Console/TYPO3-Console/issues",
+                "source": "https://github.com/TYPO3-Console/TYPO3-Console"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.me/helhum/19.99",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/helhum",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-01-08T21:22:53+00:00"
+        },
+        {
+            "name": "ichhabrecht/content-defender",
+            "version": "3.2.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/IchHabRecht/content_defender.git",
+                "reference": "d24b4a059d12859587f9e767f5d28aa3b664c888"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/IchHabRecht/content_defender/zipball/d24b4a059d12859587f9e767f5d28aa3b664c888",
+                "reference": "d24b4a059d12859587f9e767f5d28aa3b664c888",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">= 7.2, < 7.5 || ^8.0",
+                "typo3/cms-backend": "^9.5 || ^10.4 || ^11.5"
+            },
+            "replace": {
+                "typo3-ter/content-defender": "self.version"
+            },
+            "require-dev": {
+                "nimut/testing-framework": "6.x-dev",
+                "phpspec/prophecy": "^1.12.1",
+                "typo3/cms-fluid-styled-content": "^9.5 || ^10.4 || ^11.5",
+                "typo3/cms-indexed-search": "^9.5 || ^10.4 || ^11.5"
+            },
+            "type": "typo3-cms-extension",
+            "extra": {
+                "typo3/cms": {
+                    "extension-key": "content_defender",
+                    "cms-package-dir": "{$vendor-dir}/typo3/cms",
+                    "app-dir": ".Build",
+                    "web-dir": ".Build/public"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "IchHabRecht\\ContentDefender\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Nicole Cordes",
+                    "email": "typo3@cordes.co",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Define allowed or denied content element types in your backend layouts",
+            "homepage": "https://github.com/IchHabRecht/content_defender",
+            "keywords": [
+                "TYPO3 CMS",
+                "backend",
+                "content",
+                "restrict"
+            ],
+            "support": {
+                "issues": "https://github.com/IchHabRecht/content_defender/issues",
+                "source": "https://github.com/IchHabRecht/content_defender/tree/3.2.3"
+            },
+            "time": "2022-08-29T14:23:22+00:00"
+        },
+        {
+            "name": "jean85/pretty-package-versions",
+            "version": "2.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Jean85/pretty-package-versions.git",
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+                "shasum": ""
+            },
+            "require": {
+                "composer-runtime-api": "^2.0.0",
+                "php": "^7.1|^8.0"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^2.17",
+                "jean85/composer-provided-replaced-stub-package": "^1.0",
+                "phpstan/phpstan": "^0.12.66",
+                "phpunit/phpunit": "^7.5|^8.5|^9.4",
+                "vimeo/psalm": "^4.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Jean85\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Alessandro Lai",
+                    "email": "alessandro.lai85@gmail.com"
+                }
+            ],
+            "description": "A library to get pretty versions strings of installed dependencies",
+            "keywords": [
+                "composer",
+                "package",
+                "release",
+                "versions"
+            ],
+            "support": {
+                "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+                "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
+            },
+            "time": "2021-10-08T21:21:46+00:00"
+        },
+        {
+            "name": "lolli42/finediff",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/lolli42/FineDiff.git",
+                "reference": "f72cd968b663fc09bc73ef0ab5a3288583d0d59d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/lolli42/FineDiff/zipball/f72cd968b663fc09bc73ef0ab5a3288583d0d59d",
+                "reference": "f72cd968b663fc09bc73ef0ab5a3288583d0d59d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.0",
+                "symfony/polyfill-mbstring": "^1.23"
+            },
+            "replace": {
+                "cogpowered/finediff": "*"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^3.4",
+                "phpstan/phpstan": "^1.6",
+                "phpunit/phpunit": "^8 || ^9"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "cogpowered\\FineDiff\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Raymond Hill"
+                },
+                {
+                    "name": "Rob Crowe",
+                    "email": "rob@cogpowered.com"
+                },
+                {
+                    "name": "Christian Kuhn",
+                    "email": "lolli@schwarzbu.ch",
+                    "role": "maintainer"
+                }
+            ],
+            "description": "PHP implementation of a Fine granularity Diff engine",
+            "homepage": "https://github.com/lolli42/FineDiff",
+            "keywords": [
+                "diff",
+                "finediff",
+                "opcode",
+                "string",
+                "text"
+            ],
+            "support": {
+                "issues": "https://github.com/lolli42/FineDiff/issues",
+                "source": "https://github.com/lolli42/FineDiff/tree/1.0.2"
+            },
+            "time": "2022-05-23T07:44:28+00:00"
+        },
+        {
+            "name": "masterminds/html5",
+            "version": "2.7.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Masterminds/html5-php.git",
+                "reference": "897eb517a343a2281f11bc5556d6548db7d93947"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947",
+                "reference": "897eb517a343a2281f11bc5556d6548db7d93947",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.7-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Masterminds\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Matt Butcher",
+                    "email": "technosophos@gmail.com"
+                },
+                {
+                    "name": "Matt Farina",
+                    "email": "matt@mattfarina.com"
+                },
+                {
+                    "name": "Asmir Mustafic",
+                    "email": "goetas@gmail.com"
+                }
+            ],
+            "description": "An HTML5 parser and serializer.",
+            "homepage": "http://masterminds.github.io/html5-php",
+            "keywords": [
+                "HTML5",
+                "dom",
+                "html",
+                "parser",
+                "querypath",
+                "serializer",
+                "xml"
+            ],
+            "support": {
+                "issues": "https://github.com/Masterminds/html5-php/issues",
+                "source": "https://github.com/Masterminds/html5-php/tree/2.7.6"
+            },
+            "time": "2022-08-18T16:18:26+00:00"
+        },
+        {
+            "name": "meramo/mrm-be",
+            "version": "dev-local",
+            "dist": {
+                "type": "path",
+                "url": "extensions/mrm_be",
+                "reference": "2e6fe1f7a2fd0c3073c620c85a932aba8141f3eb"
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "typo3/cms-core": "^8.7 || ^9.5 || ^10.4"
+            },
+            "type": "typo3-cms-extension",
+            "extra": {
+                "typo3/cms": {
+                    "extension-key": "mrm_be"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "*"
+                ]
+            },
+            "license": [
+                "GPL-3.0"
+            ],
+            "description": "An extension to manage the appearance of the backend.",
+            "transport-options": {
+                "symlink": true,
+                "relative": true
+            }
+        },
+        {
+            "name": "meramo/mrmbepages",
+            "version": "dev-local",
+            "dist": {
+                "type": "path",
+                "url": "extensions/mrmbepages",
+                "reference": "17db686fb34c921e8e69f380c9707cb32a0be73d"
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "typo3/cms-core": "^8.7 || ^9.5 || ^10.4"
+            },
+            "type": "typo3-cms-extension",
+            "extra": {
+                "typo3/cms": {
+                    "extension-key": "mrmbepages"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "*"
+                ]
+            },
+            "license": [
+                "GPL-3.0"
+            ],
+            "description": "An extension to manage pages in the backend.",
+            "transport-options": {
+                "symlink": true,
+                "relative": true
+            }
+        },
+        {
+            "name": "mongodb/mongodb",
+            "version": "1.15.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/mongodb/mongo-php-library.git",
+                "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8",
+                "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8",
+                "shasum": ""
+            },
+            "require": {
+                "ext-hash": "*",
+                "ext-json": "*",
+                "ext-mongodb": "^1.15.0",
+                "jean85/pretty-package-versions": "^1.2 || ^2.0.1",
+                "php": "^7.2 || ^8.0",
+                "symfony/polyfill-php80": "^1.19"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9.0",
+                "squizlabs/php_codesniffer": "^3.6",
+                "symfony/phpunit-bridge": "^5.2",
+                "vimeo/psalm": "^4.28"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.15.x-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions.php"
+                ],
+                "psr-4": {
+                    "MongoDB\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Braun",
+                    "email": "andreas.braun@mongodb.com"
+                },
+                {
+                    "name": "Jeremy Mikola",
+                    "email": "jmikola@gmail.com"
+                }
+            ],
+            "description": "MongoDB driver library",
+            "homepage": "https://jira.mongodb.org/browse/PHPLIB",
+            "keywords": [
+                "database",
+                "driver",
+                "mongodb",
+                "persistence"
+            ],
+            "support": {
+                "issues": "https://github.com/mongodb/mongo-php-library/issues",
+                "source": "https://github.com/mongodb/mongo-php-library/tree/1.15.0"
+            },
+            "time": "2022-11-23T04:45:35+00:00"
+        },
+        {
+            "name": "nikic/php-parser",
+            "version": "v4.15.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nikic/PHP-Parser.git",
+                "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+                "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=7.0"
+            },
+            "require-dev": {
+                "ircmaxell/php-yacc": "^0.0.7",
+                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+            },
+            "bin": [
+                "bin/php-parse"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpParser\\": "lib/PhpParser"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Nikita Popov"
+                }
+            ],
+            "description": "A PHP parser written in PHP",
+            "keywords": [
+                "parser",
+                "php"
+            ],
+            "support": {
+                "issues": "https://github.com/nikic/PHP-Parser/issues",
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3"
+            },
+            "time": "2023-01-16T22:05:37+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-2.x": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "opensource@ijaap.nl"
+                }
+            ],
+            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+            "homepage": "http://www.phpdoc.org",
+            "keywords": [
+                "FQSEN",
+                "phpDocumentor",
+                "phpdoc",
+                "reflection",
+                "static analysis"
+            ],
+            "support": {
+                "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+            },
+            "time": "2020-06-27T09:03:43+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "5.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+                "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+                "shasum": ""
+            },
+            "require": {
+                "ext-filter": "*",
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "webmozart/assert": "^1.9.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "~1.3.2",
+                "psalm/phar": "^4.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "support": {
+                "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+            },
+            "time": "2021-10-19T17:43:47+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "1.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "77a32518733312af16a44300404e945338981de3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
+                "reference": "77a32518733312af16a44300404e945338981de3",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.0"
+            },
+            "require-dev": {
+                "ext-tokenizer": "*",
+                "psalm/phar": "^4.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "support": {
+                "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
+            },
+            "time": "2022-03-15T21:29:03+00:00"
+        },
+        {
+            "name": "phpoption/phpoption",
+            "version": "1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/schmittjoh/php-option.git",
+                "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+                "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8",
+                "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": true
+                },
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpOption\\": "src/PhpOption/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Johannes M. Schmitt",
+                    "email": "schmittjoh@gmail.com",
+                    "homepage": "https://github.com/schmittjoh"
+                },
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                }
+            ],
+            "description": "Option Type for PHP",
+            "keywords": [
+                "language",
+                "option",
+                "php",
+                "type"
+            ],
+            "support": {
+                "issues": "https://github.com/schmittjoh/php-option/issues",
+                "source": "https://github.com/schmittjoh/php-option/tree/1.9.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-30T15:51:26+00:00"
+        },
+        {
+            "name": "psr/cache",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/cache.git",
+                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Cache\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for caching libraries",
+            "keywords": [
+                "cache",
+                "psr",
+                "psr-6"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/cache/tree/master"
+            },
+            "time": "2016-08-06T20:24:11+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
+                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/1.1.1"
+            },
+            "time": "2021-03-05T17:36:06+00:00"
+        },
+        {
+            "name": "psr/event-dispatcher",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/event-dispatcher.git",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\EventDispatcher\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Standard interfaces for event handling.",
+            "keywords": [
+                "events",
+                "psr",
+                "psr-14"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/event-dispatcher/issues",
+                "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+            },
+            "time": "2019-01-08T18:20:26+00:00"
+        },
+        {
+            "name": "psr/http-client",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-client.git",
+                "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+                "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0 || ^8.0",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Client\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP clients",
+            "homepage": "https://github.com/php-fig/http-client",
+            "keywords": [
+                "http",
+                "http-client",
+                "psr",
+                "psr-18"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-client/tree/master"
+            },
+            "time": "2020-06-29T06:28:15+00:00"
+        },
+        {
+            "name": "psr/http-factory",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-factory.git",
+                "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+                "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interfaces for PSR-7 HTTP message factories",
+            "keywords": [
+                "factory",
+                "http",
+                "message",
+                "psr",
+                "psr-17",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-factory/tree/master"
+            },
+            "time": "2019-04-30T12:38:16+00:00"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-message/tree/master"
+            },
+            "time": "2016-08-06T14:39:51+00:00"
+        },
+        {
+            "name": "psr/http-server-handler",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-server-handler.git",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP server-side request handler",
+            "keywords": [
+                "handler",
+                "http",
+                "http-interop",
+                "psr",
+                "psr-15",
+                "psr-7",
+                "request",
+                "response",
+                "server"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/http-server-handler/issues",
+                "source": "https://github.com/php-fig/http-server-handler/tree/master"
+            },
+            "time": "2018-10-30T16:46:14+00:00"
+        },
+        {
+            "name": "psr/http-server-middleware",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-server-middleware.git",
+                "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+                "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0",
+                "psr/http-message": "^1.0",
+                "psr/http-server-handler": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP server-side middleware",
+            "keywords": [
+                "http",
+                "http-interop",
+                "middleware",
+                "psr",
+                "psr-15",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/http-server-middleware/issues",
+                "source": "https://github.com/php-fig/http-server-middleware/tree/master"
+            },
+            "time": "2018-10-30T17:12:04+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/1.1.4"
+            },
+            "time": "2021-05-03T11:20:27+00:00"
+        },
+        {
+            "name": "ralouphie/getallheaders",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ralouphie/getallheaders.git",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/getallheaders.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
+                }
+            ],
+            "description": "A polyfill for getallheaders.",
+            "support": {
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+            },
+            "time": "2019-03-08T08:55:37+00:00"
+        },
+        {
+            "name": "symfony/cache",
+            "version": "v4.4.48",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/cache.git",
+                "reference": "3b98ed664887ad197b8ede3da2432787212eb915"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/cache/zipball/3b98ed664887ad197b8ede3da2432787212eb915",
+                "reference": "3b98ed664887ad197b8ede3da2432787212eb915",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/cache": "^1.0|^2.0",
+                "psr/log": "^1|^2|^3",
+                "symfony/cache-contracts": "^1.1.7|^2",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/var-exporter": "^4.2|^5.0"
+            },
+            "conflict": {
+                "doctrine/dbal": "<2.7",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/http-kernel": "<4.4|>=5.0",
+                "symfony/var-dumper": "<4.4"
+            },
+            "provide": {
+                "psr/cache-implementation": "1.0|2.0",
+                "psr/simple-cache-implementation": "1.0|2.0",
+                "symfony/cache-implementation": "1.0|2.0"
+            },
+            "require-dev": {
+                "cache/integration-tests": "dev-master",
+                "doctrine/cache": "^1.6|^2.0",
+                "doctrine/dbal": "^2.7|^3.0",
+                "predis/predis": "^1.1",
+                "psr/simple-cache": "^1.0|^2.0",
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+                "symfony/filesystem": "^4.4|^5.0",
+                "symfony/http-kernel": "^4.4",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Cache\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "caching",
+                "psr6"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/cache/tree/v4.4.48"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-17T20:21:54+00:00"
+        },
+        {
+            "name": "symfony/cache-contracts",
+            "version": "v1.1.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/cache-contracts.git",
+                "reference": "a872a66e0bf7bac179c89bc96c7098bef1949f81"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/a872a66e0bf7bac179c89bc96c7098bef1949f81",
+                "reference": "a872a66e0bf7bac179c89bc96c7098bef1949f81",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/cache": "^1.0|^2.0|^3.0"
+            },
+            "suggest": {
+                "symfony/cache-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Cache\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to caching",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/cache-contracts/tree/v1.1.13"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:41:36+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658",
+                "reference": "ed42f8f9da528d2c6cae36fe1f380b0c1d8f0658",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/polyfill-php81": "^1.22"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/config/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-20T09:59:04+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.4.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9",
+                "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "psr/log": ">=3",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<3.3"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0|2.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Eases the creation of beautiful and testable command line interfaces",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/console/tree/v4.4.49"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-05T17:10:16+00:00"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v4.4.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/dependency-injection.git",
+                "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/9065fe97dbd38a897e95ea254eb5ddfe1310f734",
+                "reference": "9065fe97dbd38a897e95ea254eb5ddfe1310f734",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/container": "^1.0",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/service-contracts": "^1.1.6|^2"
+            },
+            "conflict": {
+                "symfony/config": "<4.3|>=5.0",
+                "symfony/finder": "<3.4",
+                "symfony/proxy-manager-bridge": "<3.4",
+                "symfony/yaml": "<4.4.26"
+            },
+            "provide": {
+                "psr/container-implementation": "1.0",
+                "symfony/service-implementation": "1.0|2.0"
+            },
+            "require-dev": {
+                "symfony/config": "^4.3",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^4.4.26|^5.0"
+            },
+            "suggest": {
+                "symfony/config": "",
+                "symfony/expression-language": "For using expressions in service container configuration",
+                "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+                "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+                "symfony/yaml": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/dependency-injection/tree/v4.4.49"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-16T16:18:09+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a",
+                "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-20T09:59:04+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e",
+                "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:41:36+00:00"
+        },
+        {
+            "name": "symfony/expression-language",
+            "version": "v4.4.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/expression-language.git",
+                "reference": "e4964c7636e19f6008660f450c09121c80c2a7b9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/expression-language/zipball/e4964c7636e19f6008660f450c09121c80c2a7b9",
+                "reference": "e4964c7636e19f6008660f450c09121c80c2a7b9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/cache": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ExpressionLanguage\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an engine that can compile and evaluate expressions",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/expression-language/tree/v4.4.47"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-03T15:15:11+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v4.4.42",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/815412ee8971209bd4c1eecd5f4f481eacd44bf5",
+                "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides basic utilities for the filesystem",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/filesystem/tree/v4.4.42"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-20T08:49:14+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "66bd787edb5e42ff59d3523f623895af05043e4f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f",
+                "reference": "66bd787edb5e42ff59d3523f623895af05043e4f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Finds files and directories via an intuitive fluent interface",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/finder/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-29T07:35:46+00:00"
+        },
+        {
+            "name": "symfony/http-foundation",
+            "version": "v4.4.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-foundation.git",
+                "reference": "191413c7b832c015bb38eae963f2e57498c3c173"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/191413c7b832c015bb38eae963f2e57498c3c173",
+                "reference": "191413c7b832c015bb38eae963f2e57498c3c173",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/mime": "^4.3|^5.0",
+                "symfony/polyfill-mbstring": "~1.1",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "require-dev": {
+                "predis/predis": "~1.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\HttpFoundation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Defines an object-oriented layer for the HTTP specification",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/http-foundation/tree/v4.4.49"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-04T16:17:57+00:00"
+        },
+        {
+            "name": "symfony/inflector",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/inflector.git",
+                "reference": "66185be61805b1e44a5c4000929e700228d426cc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/inflector/zipball/66185be61805b1e44a5c4000929e700228d426cc",
+                "reference": "66185be61805b1e44a5c4000929e700228d426cc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Inflector\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Converts words between their singular and plural forms (English only)",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "inflection",
+                "pluralize",
+                "singularize",
+                "string",
+                "symfony",
+                "words"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/inflector/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "abandoned": "EnglishInflector from the String component",
+            "time": "2022-07-20T09:59:04+00:00"
+        },
+        {
+            "name": "symfony/mailer",
+            "version": "v4.4.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/mailer.git",
+                "reference": "554b8c0dc2db9d74e760fd6b726f527364f03302"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/mailer/zipball/554b8c0dc2db9d74e760fd6b726f527364f03302",
+                "reference": "554b8c0dc2db9d74e760fd6b726f527364f03302",
+                "shasum": ""
+            },
+            "require": {
+                "egulias/email-validator": "^2.1.10|^3",
+                "php": ">=7.1.3",
+                "psr/log": "^1|^2|^3",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/mime": "^4.4.21|^5.2.6",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "symfony/http-kernel": "<4.4",
+                "symfony/sendgrid-mailer": "<4.4"
+            },
+            "require-dev": {
+                "symfony/amazon-mailer": "^4.4|^5.0",
+                "symfony/google-mailer": "^4.4|^5.0",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/mailchimp-mailer": "^4.4|^5.0",
+                "symfony/mailgun-mailer": "^4.4|^5.0",
+                "symfony/messenger": "^4.4|^5.0",
+                "symfony/postmark-mailer": "^4.4|^5.0",
+                "symfony/sendgrid-mailer": "^4.4|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Mailer\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Helps sending emails",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/mailer/tree/v4.4.49"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-04T06:30:35+00:00"
+        },
+        {
+            "name": "symfony/mime",
+            "version": "v4.4.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/mime.git",
+                "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d",
+                "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-intl-idn": "^1.10",
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "conflict": {
+                "egulias/email-validator": "~3.0.0",
+                "symfony/mailer": "<4.4"
+            },
+            "require-dev": {
+                "egulias/email-validator": "^2.1.10|^3.1",
+                "symfony/dependency-injection": "^3.4|^4.1|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Mime\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows manipulating MIME messages",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "mime",
+                "mime-type"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/mime/tree/v4.4.47"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-03T15:15:11+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-icu",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-icu.git",
+                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
+                "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance and support of other locales than \"en\""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Icu\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ],
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's ICU-related data and classes",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "icu",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
+                "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1",
+                "symfony/polyfill-intl-normalizer": "^1.10",
+                "symfony/polyfill-php72": "^1.10"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Trevor Rowbotham",
+                    "email": "trevor.rowbotham@pm.me"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "idn",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's Normalizer class and related functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "intl",
+                "normalizer",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
+                "reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php72\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
+                "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php81",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php81.git",
+                "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
+                "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php81\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/process.git",
+                "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2",
+                "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Executes commands in sub-processes",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/process/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-06-27T13:16:42+00:00"
+        },
+        {
+            "name": "symfony/property-access",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/property-access.git",
+                "reference": "d49682f6f0764df725c95128213a38f7e0a9f358"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/property-access/zipball/d49682f6f0764df725c95128213a38f7e0a9f358",
+                "reference": "d49682f6f0764df725c95128213a38f7e0a9f358",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/inflector": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "require-dev": {
+                "symfony/cache": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "psr/cache-implementation": "To cache access methods."
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\PropertyAccess\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides functions to read and write from/to an object or array using a simple string notation",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "access",
+                "array",
+                "extraction",
+                "index",
+                "injection",
+                "object",
+                "property",
+                "property path",
+                "reflection"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/property-access/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-06-27T13:16:42+00:00"
+        },
+        {
+            "name": "symfony/property-info",
+            "version": "v4.4.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/property-info.git",
+                "reference": "971cf46634e44d93d2174cf004555b69b19c9487"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/property-info/zipball/971cf46634e44d93d2174cf004555b69b19c9487",
+                "reference": "971cf46634e44d93d2174cf004555b69b19c9487",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/inflector": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "conflict": {
+                "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2",
+                "phpdocumentor/type-resolver": "<0.3.0|1.3.*",
+                "symfony/dependency-injection": "<3.4"
+            },
+            "require-dev": {
+                "doctrine/annotations": "^1.10.4",
+                "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+                "symfony/cache": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/serializer": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "phpdocumentor/reflection-docblock": "To use the PHPDoc",
+                "psr/cache-implementation": "To cache results",
+                "symfony/doctrine-bridge": "To use Doctrine metadata",
+                "symfony/serializer": "To use Serializer metadata"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\PropertyInfo\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kévin Dunglas",
+                    "email": "dunglas@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Extracts information about PHP class' properties using metadata of popular sources",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "doctrine",
+                "phpdoc",
+                "property",
+                "symfony",
+                "type",
+                "validator"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/property-info/tree/v4.4.49"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-15T11:00:03+00:00"
+        },
+        {
+            "name": "symfony/routing",
+            "version": "v4.4.44",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/routing.git",
+                "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae",
+                "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "conflict": {
+                "symfony/config": "<4.2",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/yaml": "<3.4"
+            },
+            "require-dev": {
+                "doctrine/annotations": "^1.10.4",
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "doctrine/annotations": "For using the annotation loader",
+                "symfony/config": "For using the all-in-one router or any loader",
+                "symfony/expression-language": "For using expression matching",
+                "symfony/http-foundation": "For using a Symfony Request object",
+                "symfony/yaml": "For using the YAML loader"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Routing\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Maps an HTTP request to a set of configuration variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "router",
+                "routing",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/routing/tree/v4.4.44"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-07-20T09:59:04+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v1.1.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/afa00c500c2d6aea6e3b2f4862355f507bc5ebb4",
+                "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/service-contracts/tree/v1.1.13"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-27T14:01:05+00:00"
+        },
+        {
+            "name": "symfony/var-exporter",
+            "version": "v4.4.43",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-exporter.git",
+                "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4a7a3a3d55c471d396e6d28011368b7b83cb518b",
+                "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "require-dev": {
+                "symfony/var-dumper": "^4.4.9|^5.0.9"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\VarExporter\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "clone",
+                "construct",
+                "export",
+                "hydrate",
+                "instantiate",
+                "serialize"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-exporter/tree/v4.4.43"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-27T11:44:32+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.4.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d",
+                "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Loads and dumps YAML files",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/yaml/tree/v4.4.45"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-08-02T15:47:23+00:00"
+        },
+        {
+            "name": "typo3/class-alias-loader",
+            "version": "v1.1.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/class-alias-loader.git",
+                "reference": "f6fc1f5fb04c42195e8e663b43aced4919ef318f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/class-alias-loader/zipball/f6fc1f5fb04c42195e8e663b43aced4919ef318f",
+                "reference": "f6fc1f5fb04c42195e8e663b43aced4919ef318f",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0 || ^2.0",
+                "php": ">=5.3.7"
+            },
+            "replace": {
+                "helhum/class-alias-loader": "*"
+            },
+            "require-dev": {
+                "composer/composer": "^1.1@dev || ^2.0@dev",
+                "mikey179/vfsstream": "~1.4.0@dev",
+                "phpunit/phpunit": ">4.8 <9"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "TYPO3\\ClassAliasLoader\\Plugin",
+                "branch-alias": {
+                    "dev-main": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\ClassAliasLoader\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Helmut Hummel",
+                    "email": "info@helhum.io"
+                }
+            ],
+            "description": "Amends the composer class loader to support class aliases to provide backwards compatibility for packages",
+            "homepage": "http://github.com/TYPO3/class-alias-loader",
+            "keywords": [
+                "alias",
+                "autoloader",
+                "classloader",
+                "composer"
+            ],
+            "support": {
+                "issues": "https://github.com/TYPO3/class-alias-loader/issues",
+                "source": "https://github.com/TYPO3/class-alias-loader/tree/v1.1.4"
+            },
+            "time": "2022-08-07T14:48:42+00:00"
+        },
+        {
+            "name": "typo3/cms-about",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/about.git",
+                "reference": "e740291c01e986ac3cbaeada6984e8bcfc5692c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/about/zipball/e740291c01e986ac3cbaeada6984e8bcfc5692c9",
+                "reference": "e740291c01e986ac3cbaeada6984e8bcfc5692c9",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "about"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\About\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Shows info about TYPO3, installed extensions and a separate module for available modules.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-backend",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/backend.git",
+                "reference": "0026a00eb96c8bc2fd3dc05142fc305b733bcc47"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/0026a00eb96c8bc2fd3dc05142fc305b733bcc47",
+                "reference": "0026a00eb96c8bc2fd3dc05142fc305b733bcc47",
+                "shasum": ""
+            },
+            "require": {
+                "psr/event-dispatcher": "^1.0",
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-recordlist": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "replace": {
+                "typo3/cms-context-help": "*",
+                "typo3/cms-cshmanual": "*",
+                "typo3/cms-func-wizards": "*",
+                "typo3/cms-wizard-crpages": "*",
+                "typo3/cms-wizard-sortpages": "*"
+            },
+            "suggest": {
+                "typo3/cms-install": "To generate url to install tool in environment toolbar"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Backend\\ServiceProvider",
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "backend"
+                },
+                "typo3/class-alias-loader": {
+                    "class-alias-maps": [
+                        "Migrations/Code/ClassAliasMap.php"
+                    ]
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Backend\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Classes for the TYPO3 backend.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-belog",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/belog.git",
+                "reference": "2eff349999bc37bb962e594ee6d3d30958ddd2a2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/belog/zipball/2eff349999bc37bb962e594ee6d3d30958ddd2a2",
+                "reference": "2eff349999bc37bb962e594ee6d3d30958ddd2a2",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "belog"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Belog\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Displays backend log, both per page and system wide. Available as the module Tools>Log (system wide overview) and Web>Info/Log (page relative overview).",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-beuser",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/beuser.git",
+                "reference": "802b6137367b89230a8f04af1bf048aa17dc7418"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/beuser/zipball/802b6137367b89230a8f04af1bf048aa17dc7418",
+                "reference": "802b6137367b89230a8f04af1bf048aa17dc7418",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "beuser"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Beuser\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Backend user administration and overview. Allows you to compare the settings of users and verify their permissions and see who is online.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-cli",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/cms-cli.git",
+                "reference": "215a0bf5c446b4e0b20f4562bbaf3d6215a5ee82"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/cms-cli/zipball/215a0bf5c446b4e0b20f4562bbaf3d6215a5ee82",
+                "reference": "215a0bf5c446b4e0b20f4562bbaf3d6215a5ee82",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "bin": [
+                "typo3"
+            ],
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "description": "TYPO3 command line binary",
+            "homepage": "https://typo3.org",
+            "support": {
+                "issues": "https://github.com/TYPO3/cms-cli/issues",
+                "source": "https://github.com/TYPO3/cms-cli/tree/master"
+            },
+            "time": "2018-03-08T20:16:43+00:00"
+        },
+        {
+            "name": "typo3/cms-composer-installers",
+            "version": "v3.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/CmsComposerInstallers.git",
+                "reference": "613d82075650ba846d287e20941e8a0e04ad0444"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/CmsComposerInstallers/zipball/613d82075650ba846d287e20941e8a0e04ad0444",
+                "reference": "613d82075650ba846d287e20941e8a0e04ad0444",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
+                "php": "^7.2 || ^8.0"
+            },
+            "conflict": {
+                "composer/installers": "<2.0.0"
+            },
+            "replace": {
+                "lw/typo3cms-installers": "*",
+                "netresearch/composer-installers": "*"
+            },
+            "require-dev": {
+                "composer/composer": "1.2.*@dev || 2.0.*@dev",
+                "friendsofphp/php-cs-fixer": "^2.18",
+                "overtrue/phplint": "^2.0",
+                "phpunit/phpunit": "^8.5"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "TYPO3\\CMS\\Composer\\Installer\\Plugin",
+                "branch-alias": {
+                    "dev-main": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Composer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 CMS Core Team",
+                    "homepage": "https://forge.typo3.org/projects/typo3cms-core",
+                    "role": "Developer"
+                },
+                {
+                    "name": "The TYPO3 Community",
+                    "homepage": "https://typo3.org/community/",
+                    "role": "Contributor"
+                }
+            ],
+            "description": "TYPO3 CMS Installers",
+            "homepage": "https://github.com/TYPO3/CmsComposerInstallers",
+            "keywords": [
+                "cms",
+                "core",
+                "extension",
+                "installer",
+                "typo3"
+            ],
+            "support": {
+                "general": "https://typo3.org/support/",
+                "issues": "https://github.com/TYPO3/CmsComposerInstallers/issues",
+                "source": "https://github.com/TYPO3/CmsComposerInstallers/tree/v3.1.3"
+            },
+            "time": "2022-08-05T19:06:26+00:00"
+        },
+        {
+            "name": "typo3/cms-core",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/core.git",
+                "reference": "f0f9053e4537c84e1b8043f56139412323981c16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/core/zipball/f0f9053e4537c84e1b8043f56139412323981c16",
+                "reference": "f0f9053e4537c84e1b8043f56139412323981c16",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/annotations": "^1.7",
+                "doctrine/dbal": "~2.10.0 || ~2.11.2 || ~2.13.1",
+                "doctrine/instantiator": "^1.1",
+                "doctrine/lexer": "^1.0",
+                "egulias/email-validator": "^2.1",
+                "enshrined/svg-sanitize": "^0.15.4",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-pcre": "*",
+                "ext-pdo": "*",
+                "ext-session": "*",
+                "ext-xml": "*",
+                "guzzlehttp/guzzle": "^6.5.8",
+                "guzzlehttp/psr7": "^1.8.5",
+                "lolli42/finediff": "^1.0.1",
+                "masterminds/html5": "^2.7.6",
+                "nikic/php-parser": "^4.10.4",
+                "php": "^7.2",
+                "psr/container": "^1.0",
+                "psr/event-dispatcher": "^1.0",
+                "psr/http-client": "^1.0",
+                "psr/http-factory": "^1.0",
+                "psr/http-message": "^1.0",
+                "psr/http-server-handler": "^1.0",
+                "psr/http-server-middleware": "^1.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^4.4 || ^5.0",
+                "symfony/console": "^4.4 || ^5.0",
+                "symfony/dependency-injection": "^4.4 || ^5.0",
+                "symfony/event-dispatcher-contracts": "^1.1 || ^2.0",
+                "symfony/expression-language": "^4.4 || ^5.0",
+                "symfony/filesystem": "^4.4 || ^5.0",
+                "symfony/finder": "^4.4 || ^5.0",
+                "symfony/http-foundation": "^4.4 || ^5.0",
+                "symfony/mailer": "^4.4 || ^5.0",
+                "symfony/mime": "^4.4.16 || ^5.1.8",
+                "symfony/polyfill-intl-icu": "^1.6",
+                "symfony/polyfill-intl-idn": "^1.10",
+                "symfony/polyfill-intl-normalizer": "^1.22",
+                "symfony/polyfill-mbstring": "^1.16",
+                "symfony/polyfill-php73": "^1.16",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/polyfill-php81": "^1.23",
+                "symfony/routing": "^4.4 || ^5.0",
+                "symfony/yaml": "^4.4 || ^5.0",
+                "typo3/class-alias-loader": "^1.0",
+                "typo3/cms-cli": "^2.0",
+                "typo3/cms-composer-installers": "^2.0 || ^3.0",
+                "typo3/html-sanitizer": "^2.1.1",
+                "typo3/phar-stream-wrapper": "^3.1.7",
+                "typo3/symfony-psr-event-dispatcher-adapter": "^1.0 || ^2.0",
+                "typo3fluid/fluid": "^2.6.10"
+            },
+            "conflict": {
+                "guzzlehttp/guzzle": "6.5.0",
+                "hoa/core": "*",
+                "typo3/cms": "*"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0",
+                "psr/http-factory-implementation": "1.0",
+                "psr/http-message-implementation": "1.0"
+            },
+            "replace": {
+                "typo3/cms-lang": "*",
+                "typo3/cms-saltedpasswords": "*",
+                "typo3/cms-sv": "*"
+            },
+            "require-dev": {
+                "codeception/codeception": "^4.0",
+                "codeception/module-asserts": "^1.1",
+                "codeception/module-filesystem": "^1.0",
+                "codeception/module-webdriver": "^1.0.1",
+                "friendsofphp/php-cs-fixer": "^2.19 || ^3.0",
+                "mikey179/vfsstream": "^1.6.11",
+                "phpspec/prophecy": "^1.14.0",
+                "phpstan/phpstan": "^0.12.64",
+                "typo3/cms-styleguide": "~10.0.4",
+                "typo3/testing-framework": "^6.16.6"
+            },
+            "suggest": {
+                "ext-fileinfo": "Used for proper file type detection in the file abstraction layer",
+                "ext-gd": "GDlib/Freetype is required for building images with text (GIFBUILDER) and can also be used to scale images",
+                "ext-intl": "TYPO3 with unicode-based filesystems",
+                "ext-mysqli": "",
+                "ext-openssl": "OpenSSL is required for sending SMTP mails over an encrypted channel endpoint, and for extensions such as \"rsaauth\"",
+                "ext-zip": "",
+                "ext-zlib": "TYPO3 uses zlib for amongst others output compression and un/packing t3x extension files"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Core\\ServiceProvider",
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "core"
+                },
+                "typo3/class-alias-loader": {
+                    "class-alias-maps": [
+                        "Migrations/Code/ClassAliasMap.php"
+                    ]
+                }
+            },
+            "autoload": {
+                "files": [
+                    "Resources/PHP/GlobalDebugFunctions.php"
+                ],
+                "psr-4": {
+                    "TYPO3\\CMS\\Core\\": "Classes/"
+                },
+                "classmap": [
+                    "Resources/PHP/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "The core library of TYPO3.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-dashboard",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/dashboard.git",
+                "reference": "ab3fd2c71fbcd59da63b9bf1cb47f8d6efa11b9f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/dashboard/zipball/ab3fd2c71fbcd59da63b9bf1cb47f8d6efa11b9f",
+                "reference": "ab3fd2c71fbcd59da63b9bf1cb47f8d6efa11b9f",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-backend": "10.4.34",
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-extbase": "10.4.34",
+                "typo3/cms-fluid": "10.4.34",
+                "typo3/cms-frontend": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "extension-key": "dashboard",
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Dashboard\\ServiceProvider",
+                        "partOfFactoryDefault": true
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Dashboard\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Dashboard for TYPO3.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-dashboard/10.4/en-us/",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-extbase",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/extbase.git",
+                "reference": "27484f58a8d7629290b78100097193dc6b165fba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/extbase/zipball/27484f58a8d7629290b78100097193dc6b165fba",
+                "reference": "27484f58a8d7629290b78100097193dc6b165fba",
+                "shasum": ""
+            },
+            "require": {
+                "phpdocumentor/reflection-docblock": "^5.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "symfony/dependency-injection": "^4.4 || ^5.0",
+                "symfony/property-access": "^4.4 || ^5.0",
+                "symfony/property-info": "^4.4 || ^5.0",
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "suggest": {
+                "typo3/cms-scheduler": "Additional scheduler tasks"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Extbase\\ServiceProvider",
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "extbase"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Extbase\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A framework to build extensions for TYPO3 CMS.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-extensionmanager",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/extensionmanager.git",
+                "reference": "57ef8c43baed0a83b44db1e52b2f0b2638963234"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/extensionmanager/zipball/57ef8c43baed0a83b44db1e52b2f0b2638963234",
+                "reference": "57ef8c43baed0a83b44db1e52b2f0b2638963234",
+                "shasum": ""
+            },
+            "require": {
+                "ext-libxml": "*",
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "extensionmanager"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Extensionmanager\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "TYPO3 Extension Manager",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-felogin",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/felogin.git",
+                "reference": "913d68d96c87c2f6e2bff71bc39d459dae8aa676"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/felogin/zipball/913d68d96c87c2f6e2bff71bc39d459dae8aa676",
+                "reference": "913d68d96c87c2f6e2bff71bc39d459dae8aa676",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "felogin"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Felogin\\": "Classes/",
+                    "TYPO3\\CMS\\FrontendLogin\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A template-based plugin to log in Website Users in the Frontend",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-felogin/10.4/en-us",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-filelist",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/filelist.git",
+                "reference": "bd7bbff1d7510399de5b7a35b17b612a2f108f8d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/filelist/zipball/bd7bbff1d7510399de5b7a35b17b612a2f108f8d",
+                "reference": "bd7bbff1d7510399de5b7a35b17b612a2f108f8d",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "filelist"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Filelist\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Listing of files in the directory",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-fluid",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/fluid.git",
+                "reference": "9c3f17a793ddc93ce37ac8ff25a8cf4c6ef30cd7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/fluid/zipball/9c3f17a793ddc93ce37ac8ff25a8cf4c6ef30cd7",
+                "reference": "9c3f17a793ddc93ce37ac8ff25a8cf4c6ef30cd7",
+                "shasum": ""
+            },
+            "require": {
+                "symfony/dependency-injection": "^4.4 || ^5.0",
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-extbase": "10.4.34",
+                "typo3fluid/fluid": "^2.6.10"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "fluid"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Fluid\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Fluid is a next-generation templating engine which makes the life of extension authors a lot easier!",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/other/typo3/view-helper-reference/10.4/en-us/",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-fluid-styled-content",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/fluid_styled_content.git",
+                "reference": "70d06f73629ec91a636b4d940639aefe59608aec"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/fluid_styled_content/zipball/70d06f73629ec91a636b4d940639aefe59608aec",
+                "reference": "70d06f73629ec91a636b4d940639aefe59608aec",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-fluid": "10.4.34",
+                "typo3/cms-frontend": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "fluid_styled_content"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\FluidStyledContent\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A set of common content elements based on Fluid for Frontend output.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-fluid-styled-content/10.4/en-us",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-form",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/form.git",
+                "reference": "f7e08149730508ff3eed92d8ea7d0c13ec19cfed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/form/zipball/f7e08149730508ff3eed92d8ea7d0c13ec19cfed",
+                "reference": "f7e08149730508ff3eed92d8ea7d0c13ec19cfed",
+                "shasum": ""
+            },
+            "require": {
+                "psr/http-message": "^1.0",
+                "symfony/expression-language": "^4.4 || ^5.0",
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "suggest": {
+                "typo3/cms-filelist": "Listing of files in the directory",
+                "typo3/cms-impexp": "Import and Export of records from TYPO3 in a custom serialized format (.T3D) for data exchange with other TYPO3 systems."
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "form"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Form\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Form Library, Plugin and Editor",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-form/10.4/en-us",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-frontend",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/frontend.git",
+                "reference": "c0e50592409ad4a42d1d626ceb8d97920cd5fffb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/frontend/zipball/c0e50592409ad4a42d1d626ceb8d97920cd5fffb",
+                "reference": "c0e50592409ad4a42d1d626ceb8d97920cd5fffb",
+                "shasum": ""
+            },
+            "require": {
+                "ext-libxml": "*",
+                "symfony/polyfill-mbstring": "^1.16",
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "suggest": {
+                "typo3/cms-adminpanel": "Provides additional information and functionality for backend users in the frontend."
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Frontend\\ServiceProvider",
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "frontend"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Frontend\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Classes for the frontend of TYPO3.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-impexp",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/impexp.git",
+                "reference": "dd447b42032adaabe4c653ab1ceb611d79202713"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/impexp/zipball/dd447b42032adaabe4c653ab1ceb611d79202713",
+                "reference": "dd447b42032adaabe4c653ab1ceb611d79202713",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "impexp"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Impexp\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Import and Export of records from TYPO3 in a custom serialized format (.T3D) for data exchange with other TYPO3 systems.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-info",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/info.git",
+                "reference": "654140c005de2a268f215e04e0e92ffa1b047445"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/info/zipball/654140c005de2a268f215e04e0e92ffa1b047445",
+                "reference": "654140c005de2a268f215e04e0e92ffa1b047445",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "replace": {
+                "typo3/cms-info-pagetsconfig": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "info"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Info\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Shows various infos",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-install",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/install.git",
+                "reference": "0eaa610df4b1f16f6fafc3db43a0b442df0e11a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/install/zipball/0eaa610df4b1f16f6fafc3db43a0b442df0e11a7",
+                "reference": "0eaa610df4b1f16f6fafc3db43a0b442df0e11a7",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/dbal": "~2.10.0 || ~2.11.2 || ~2.13.1",
+                "nikic/php-parser": "^4.10.4",
+                "symfony/finder": "^4.4 || ^5.0",
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-extbase": "10.4.34",
+                "typo3/cms-fluid": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "serviceProvider": "TYPO3\\CMS\\Install\\ServiceProvider",
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "install"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Install\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "The Install Tool mounted as the module Tools>Install in TYPO3.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-recordlist",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/recordlist.git",
+                "reference": "7d46eace1584e9498bcaa0efc463de060809541d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/recordlist/zipball/7d46eace1584e9498bcaa0efc463de060809541d",
+                "reference": "7d46eace1584e9498bcaa0efc463de060809541d",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "protected": true,
+                        "partOfFactoryDefault": true,
+                        "partOfMinimalUsableSystem": true
+                    },
+                    "extension-key": "recordlist"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Recordlist\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "List of database-records",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-rte-ckeditor",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/rte_ckeditor.git",
+                "reference": "7abd28496225f1e35f66118f524770ca920b1c34"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/rte_ckeditor/zipball/7abd28496225f1e35f66118f524770ca920b1c34",
+                "reference": "7abd28496225f1e35f66118f524770ca920b1c34",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "suggest": {
+                "typo3/cms-setup": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "rte_ckeditor"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\RteCKEditor\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Integration of CKEditor as Rich Text Editor.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-rte-ckeditor/10.4/en-us",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-seo",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/seo.git",
+                "reference": "b327020dfa6ae8bceb1f28966b2612604f2eefd0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/seo/zipball/b327020dfa6ae8bceb1f28966b2612604f2eefd0",
+                "reference": "b327020dfa6ae8bceb1f28966b2612604f2eefd0",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34",
+                "typo3/cms-extbase": "10.4.34",
+                "typo3/cms-frontend": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "extension-key": "seo",
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Seo\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "SEO features for TYPO3.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org/c/typo3/cms-seo/10.4/en-us",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-setup",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/setup.git",
+                "reference": "30314d15cd45f3e0b94accb05b19df1a0c13fb5b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/setup/zipball/30314d15cd45f3e0b94accb05b19df1a0c13fb5b",
+                "reference": "30314d15cd45f3e0b94accb05b19df1a0c13fb5b",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "setup"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Setup\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Allows users to edit a limited set of options for their user profile, eg. preferred language and their name and email address.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-sys-note",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/sys_note.git",
+                "reference": "04f7c971091a0b3e058feebd97fafa050d80c85b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/sys_note/zipball/04f7c971091a0b3e058feebd97fafa050d80c85b",
+                "reference": "04f7c971091a0b3e058feebd97fafa050d80c85b",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "sys_note"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\SysNote\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Records with messages which can be placed on any page and contain instructions or other information related to a page or section.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-t3editor",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/t3editor.git",
+                "reference": "1cae0ffffa5fb861e9d81272985f076d1a82e951"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/t3editor/zipball/1cae0ffffa5fb861e9d81272985f076d1a82e951",
+                "reference": "1cae0ffffa5fb861e9d81272985f076d1a82e951",
+                "shasum": ""
+            },
+            "require": {
+                "ext-libxml": "*",
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "t3editor"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\T3editor\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "JavaScript-driven editor with syntax highlighting and codecompletion. Based on CodeMirror.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-tstemplate",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/tstemplate.git",
+                "reference": "60d8e211f761910b59551c88592f29767cb90b4f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/tstemplate/zipball/60d8e211f761910b59551c88592f29767cb90b4f",
+                "reference": "60d8e211f761910b59551c88592f29767cb90b4f",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "tstemplate"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Tstemplate\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Framework for management of TypoScript template records for the CMS frontend.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/cms-viewpage",
+            "version": "v10.4.34",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3-CMS/viewpage.git",
+                "reference": "5d9f45bf13411397ef1c560ed93e2e95a91c6e3a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3-CMS/viewpage/zipball/5d9f45bf13411397ef1c560ed93e2e95a91c6e3a",
+                "reference": "5d9f45bf13411397ef1c560ed93e2e95a91c6e3a",
+                "shasum": ""
+            },
+            "require": {
+                "typo3/cms-core": "10.4.34"
+            },
+            "conflict": {
+                "typo3/cms": "*"
+            },
+            "type": "typo3-cms-framework",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "10.4.x-dev"
+                },
+                "typo3/cms": {
+                    "Package": {
+                        "partOfFactoryDefault": true
+                    },
+                    "extension-key": "viewpage"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\CMS\\Viewpage\\": "Classes/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "TYPO3 Core Team",
+                    "email": "typo3cms@typo3.org",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Shows the frontend webpage inside the backend frameset.",
+            "homepage": "https://typo3.org",
+            "support": {
+                "chat": "https://typo3.org/help",
+                "docs": "https://docs.typo3.org",
+                "issues": "https://forge.typo3.org",
+                "source": "https://github.com/typo3/typo3"
+            },
+            "time": "2022-12-15T11:15:46+00:00"
+        },
+        {
+            "name": "typo3/html-sanitizer",
+            "version": "v2.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/html-sanitizer.git",
+                "reference": "f8b9c466a08fe4b7bd32b4b8dbde5cf7fbfa9956"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/html-sanitizer/zipball/f8b9c466a08fe4b7bd32b4b8dbde5cf7fbfa9956",
+                "reference": "f8b9c466a08fe4b7bd32b4b8dbde5cf7fbfa9956",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "masterminds/html5": "^2.7.6",
+                "php": "^7.2 || ^8.0",
+                "psr/log": "^1.0 || ^2.0 || ^3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\HtmlSanitizer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Oliver Hader",
+                    "email": "oliver@typo3.org"
+                }
+            ],
+            "description": "HTML sanitizer aiming to provide XSS-safe markup based on explicitly allowed tags, attributes and values.",
+            "support": {
+                "issues": "https://github.com/TYPO3/html-sanitizer/issues",
+                "source": "https://github.com/TYPO3/html-sanitizer/tree/v2.1.1"
+            },
+            "time": "2022-12-13T08:07:15+00:00"
+        },
+        {
+            "name": "typo3/phar-stream-wrapper",
+            "version": "v3.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/phar-stream-wrapper.git",
+                "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/phar-stream-wrapper/zipball/5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c",
+                "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "php": "^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "ext-xdebug": "*",
+                "phpspec/prophecy": "^1.10",
+                "symfony/phpunit-bridge": "^5.1"
+            },
+            "suggest": {
+                "ext-fileinfo": "For PHP builtin file type guessing, otherwise uses internal processing"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "v3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\PharStreamWrapper\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Interceptors for PHP's native phar:// stream handling",
+            "homepage": "https://typo3.org/",
+            "keywords": [
+                "phar",
+                "php",
+                "security",
+                "stream-wrapper"
+            ],
+            "support": {
+                "issues": "https://github.com/TYPO3/phar-stream-wrapper/issues",
+                "source": "https://github.com/TYPO3/phar-stream-wrapper/tree/v3.1.7"
+            },
+            "time": "2021-09-20T19:19:13+00:00"
+        },
+        {
+            "name": "typo3/symfony-psr-event-dispatcher-adapter",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/symfony-psr-event-dispatcher-adapter.git",
+                "reference": "89bf6696a2b72f7751aee6de05fb34b0938d5922"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/symfony-psr-event-dispatcher-adapter/zipball/89bf6696a2b72f7751aee6de05fb34b0938d5922",
+                "reference": "89bf6696a2b72f7751aee6de05fb34b0938d5922",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2",
+                "psr/event-dispatcher": "^1.0",
+                "symfony/event-dispatcher-contracts": "^1.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "TYPO3\\SymfonyPsrEventDispatcherAdapter\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Adapter to provide compatibility with the Symfony's event dispatcher interface in all versions with the PSR-14 specification.",
+            "homepage": "https://typo3.org/",
+            "keywords": [
+                "adapter",
+                "events",
+                "psr",
+                "psr-14"
+            ],
+            "support": {
+                "issues": "https://github.com/TYPO3/symfony-psr-event-dispatcher-adapter/issues",
+                "source": "https://github.com/TYPO3/symfony-psr-event-dispatcher-adapter/tree/v1.0.0"
+            },
+            "time": "2020-09-09T20:23:21+00:00"
+        },
+        {
+            "name": "typo3fluid/fluid",
+            "version": "2.7.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/TYPO3/Fluid.git",
+                "reference": "50ee1ee19ee00947c92bcb554bbea4fb5463b468"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/TYPO3/Fluid/zipball/50ee1ee19ee00947c92bcb554bbea4fb5463b468",
+                "reference": "50ee1ee19ee00947c92bcb554bbea4fb5463b468",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "friendsofphp/php-cs-fixer": "^3.4",
+                "phpstan/phpstan": "^1.7",
+                "phpstan/phpstan-phpunit": "^1.1",
+                "phpunit/phpunit": "^8.5.26 || ^9.5"
+            },
+            "suggest": {
+                "ext-json": "PHP JSON is needed when using JSONVariableProvider: A relatively rare use case"
+            },
+            "bin": [
+                "bin/fluid"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "TYPO3Fluid\\Fluid\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0-or-later"
+            ],
+            "description": "The TYPO3 Fluid template rendering engine",
+            "homepage": "https://github.com/TYPO3/Fluid",
+            "support": {
+                "docs": "https://docs.typo3.org/other/typo3fluid/fluid/main/en-us/",
+                "issues": "https://github.com/TYPO3/Fluid/issues",
+                "source": "https://github.com/TYPO3/Fluid"
+            },
+            "time": "2022-07-28T11:24:11+00:00"
+        },
+        {
+            "name": "vlucas/phpdotenv",
+            "version": "v5.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/vlucas/phpdotenv.git",
+                "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+                "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+                "shasum": ""
+            },
+            "require": {
+                "ext-pcre": "*",
+                "graham-campbell/result-type": "^1.0.2",
+                "php": "^7.1.3 || ^8.0",
+                "phpoption/phpoption": "^1.8",
+                "symfony/polyfill-ctype": "^1.23",
+                "symfony/polyfill-mbstring": "^1.23.1",
+                "symfony/polyfill-php80": "^1.23.1"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.4.1",
+                "ext-filter": "*",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
+            },
+            "suggest": {
+                "ext-filter": "Required to use the boolean validator."
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": true
+                },
+                "branch-alias": {
+                    "dev-master": "5.5-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Dotenv\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Vance Lucas",
+                    "email": "vance@vancelucas.com",
+                    "homepage": "https://github.com/vlucas"
+                }
+            ],
+            "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+            "keywords": [
+                "dotenv",
+                "env",
+                "environment"
+            ],
+            "support": {
+                "issues": "https://github.com/vlucas/phpdotenv/issues",
+                "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-16T01:01:54+00:00"
+        },
+        {
+            "name": "wazum/pagetree-resizable",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/wazum/pagetree-resizable.git",
+                "reference": "344f5c979e6348b507ab920310e28d52814c3d65"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/wazum/pagetree-resizable/zipball/344f5c979e6348b507ab920310e28d52814c3d65",
+                "reference": "344f5c979e6348b507ab920310e28d52814c3d65",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "typo3/cms-core": "^8.7 || ^9.5 || ^10.4"
+            },
+            "type": "typo3-cms-extension",
+            "extra": {
+                "typo3/cms": {
+                    "extension-key": "pagetree_resizable"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Wazum\\PagetreeResizable\\": "Classes"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-3.0"
+            ],
+            "description": "Make the backend page tree horizontally resizable",
+            "support": {
+                "issues": "https://github.com/wazum/pagetree-resizable/issues",
+                "source": "https://github.com/wazum/pagetree-resizable/tree/1.3.1"
+            },
+            "time": "2021-03-29T13:02:55+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozarts/assert.git",
+                "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+                "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "php": "^7.2 || ^8.0"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<4.6.1 || 4.6.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5.13"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.10-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webmozart\\Assert\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Assertions to validate method input/output with nice error messages.",
+            "keywords": [
+                "assert",
+                "check",
+                "validate"
+            ],
+            "support": {
+                "issues": "https://github.com/webmozarts/assert/issues",
+                "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+            },
+            "time": "2022-06-03T18:03:27+00:00"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": {
+        "meramo/mrm-be": 20,
+        "meramo/mrmbepages": 20
+    },
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "ext-dom": "*",
+        "ext-json": "*"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "7.4"
+    },
+    "plugin-api-version": "2.3.0"
+}

+ 53 - 0
extensions/mrm_be/Classes/Controller/DKZController.php

@@ -0,0 +1,53 @@
+<?php
+namespace Meramo\mrm_be\Controller;
+
+use \Psr\Http\Message\ServerRequestInterface;
+use TYPO3\CMS\Core\Http\JsonResponse;
+
+class DKZController
+{
+  /** @var ResponseFactoryInterface */
+  private $responseFactory;
+
+  public function __construct(){
+    $this->dkzer = new \Meramo\mrm_be\DKZer();
+  }
+
+  public function getBranchAction(ServerRequestInterface $request): JsonResponse
+  {
+    $branch = $request->getQueryParams()['branch'] ?? null;
+    if(!$branch) return new JsonResponse(['data' => json_encode(['success' => false])]);
+
+    $branchFromDkz = $this->dkzer->getBranch($branch);
+
+    $data = ['branch' => $branch, 'list' => $branchFromDkz];
+    return new JsonResponse(['data' => json_encode(['success' => true, 'data' => $data])]);
+  }
+
+  public function getListsAction(ServerRequestInterface $request): JsonResponse
+  {
+    $codenrs = $request->getQueryParams()['codenrs'] ?? null;
+    if(!$codenrs) return new JsonResponse(['data' => json_encode(['success' => false])]);
+
+    $dataFromDkz = $this->dkzer->getLists($codenrs);
+
+    return new JsonResponse(['data' => json_encode(['success' => true, 'data' => $dataFromDkz])]);
+  }
+
+  public function getSearchedAction(ServerRequestInterface $request): JsonResponse
+  {
+    $query = $request->getQueryParams()['query'] ?? null;
+    if(!$query) return new JsonResponse(['data' => json_encode(['success' => false])]);
+
+    $dataFromDkz = $this->dkzer->getSearched($query);
+
+    return new JsonResponse(['data' => json_encode(['success' => true, 'data' => $dataFromDkz])]);
+  }
+
+  private function log($msg, $isString = true){
+    if(!$isString){
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/typo3temp/debug.log', "--- DKZer ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
+  }
+}

+ 248 - 0
extensions/mrm_be/Classes/DKZer.php

@@ -0,0 +1,248 @@
+<?php
+namespace Meramo\mrm_be;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Database\ConnectionPool;
+use \TYPO3\CMS\Core\Database\Connection;
+
+
+class DKZer
+{
+  private $connection;
+  private $auth_token = null;
+  private $fetched_data = null;
+
+  function __construct(){
+    $this->auth();
+  }
+
+  private function auth(){
+    $url = "/auth";
+    $data = array(
+      'usr' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['usr'],
+      'pwd' => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['pwd']
+    );
+    $result = $this->sendRequest($url, $data);
+    if($result["tok"]) $this->auth_token = $result["tok"];
+  }
+
+  private function sendRequest($url, $data){
+    $url = $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['url'].$url;
+    $data = json_encode($data);
+
+    $ch = curl_init($url);
+    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+        'Content-Type: application/json; charset=utf-8',
+        'Content-Length: ' . strlen($data))
+    );
+    $result = curl_exec($ch);
+
+    if($result === FALSE) return null;
+    return json_decode($result, TRUE);
+  }
+
+  private function log($msg, $isString = true){
+    if(!$isString){
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/typo3temp/debug.log', "--- DKZer ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
+  }
+
+  public function getSearchWords($codenrs) {
+    $resultBerufe = $this->sendRequest(
+        "/get/beruf",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
+          ),
+          "select" => "suchworte.name_technisch",
+        )
+      )
+    ;
+
+    $resultSystematik = $this->sendRequest(
+        "/get/systematik",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
+          ),
+          "select" => "suchworte.name_technisch",
+        )
+      )
+    ;
+
+    if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
+    $sws = array();
+    if($resultSystematik)
+      foreach($resultSystematik as $itm){
+        foreach($itm["suchworte"] as $swo){
+          $sws[] = $swo["name_technisch"];
+        }
+      }
+
+    if($resultBerufe)
+      foreach($resultBerufe as $itm){
+        foreach($itm["suchworte"] as $swo){
+          $sws[] = $swo["name_technisch"];
+        }
+      }
+    $sws = array_unique($sws);
+    return $sws;
+  }
+
+  public function getSearched($query){
+    $result = $this->sendRequest(
+        "/get/systematik",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "bezeichnung" => "***".$query
+          ),
+          "select" => "codenr suchworte bezeichnung"
+        )
+      )
+    ;
+    $result = array_merge($result, $this->sendRequest(
+        "/get/beruf",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "bezeichnung" => "***".$query
+          ),
+          "select" => "codenr suchworte bezeichnung"
+        )
+      )
+    );
+
+    $ret = array();
+    foreach($result as $itm){
+      $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
+    }
+
+    $keys = array_keys($ret);
+    natsort($keys);
+    $keys = array_values($keys);
+    $ret2 = array();
+    foreach($keys as $idx => $key){
+      $ret2[] = $ret[$key];
+    }
+
+    return array("list" => array_values($ret2));
+  }
+
+  public function getLists($codenrs) {
+    $resultBerufe = $this->sendRequest(
+        "/get/beruf",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
+          ),
+          "select" => "bezeichnung codenr suchworte.name",
+        )
+      )
+    ;
+
+    $resultSystematik = $this->sendRequest(
+        "/get/systematik",
+        array(
+          "tok" => $this->auth_token,
+          "query" => array(
+            "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+            "codenr" => array('$in' => preg_split('/( *),( *)/', $codenrs)),
+          ),
+          "select" => "bezeichnung codenr suchworte.name",
+        )
+      )
+    ;
+
+    if($resultBerufe === FALSE && $resultSystematik === FALSE) return null;
+    $sws = array();
+    $berufe = array();
+    if($resultSystematik)
+      foreach($resultSystematik as $itm){
+        $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
+        foreach($itm["suchworte"] as $swo){
+          $sws[] = $swo["name"];
+        }
+      }
+
+    if($resultBerufe)
+      foreach($resultBerufe as $itm){
+        $berufe[] = array( "codenr" => $itm["codenr"], "bezeichnung" => $itm["bezeichnung"] );
+        foreach($itm["suchworte"] as $swo){
+          $sws[] = $swo["name"];
+        }
+      }
+    $sws = array_unique($sws);
+    return array("sws" => array_values($sws), "berufe" => array_values($berufe));
+  }
+
+  public function getBranch($path){
+    $result = FALSE;
+    if($path === "root")
+        $result = $this->sendRequest(
+            "/get/systematik",
+            array(
+              "tok" => $this->auth_token,
+              "query" => array(
+                "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+                '$expr' => array('$eq' => array(array('$strLenCP' => '$codenr'), 3))
+              ),
+              "select" => "codenr obercodenr suchworte bezeichnung"
+            )
+          )
+        ;
+    else {
+      $result = $this->sendRequest(
+          "/get/systematik",
+          array(
+            "tok" => $this->auth_token,
+            "query" => array(
+              "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+              "codenr" => "***^".$path."\\d$"
+            ),
+            "select" => "codenr obercodenr suchworte bezeichnung"
+          )
+        )
+      ;
+      $result = array_merge($result, $this->sendRequest(
+          "/get/beruf",
+          array(
+            "tok" => $this->auth_token,
+            "query" => array(
+              "layer" => $GLOBALS['TYPO3_CONF_VARS']['MRM']['dkz']['layer'],
+              "obercodenr" => $path
+            ),
+            "select" => "codenr obercodenr suchworte bezeichnung"
+          )
+        )
+      );
+    }
+
+    $ret = array();
+    foreach($result as $itm){
+      $ret[$itm['codenr']] = array('codenr' => $itm['codenr'], 'obercodenr' => $itm['obercodenr'] ?  $itm['obercodenr'] : $path, 'bezeichnung' => htmlspecialchars($itm['bezeichnung']), 'swcount' => sizeof($itm['suchworte']));
+    }
+
+    $keys = array_keys($ret);
+    natsort($keys);
+    $keys = array_values($keys);
+    $ret2 = array();
+    foreach($keys as $idx => $key){
+      $ret2[] = $ret[$key];
+    }
+
+    return $ret2;
+  }
+}

+ 42 - 0
extensions/mrm_be/Classes/Form/Element/PagesDkzSelector.php

@@ -0,0 +1,42 @@
+<?php
+declare(strict_types = 1);
+namespace Meramo\mrm_be\Form\Element;
+
+use \TYPO3\CMS\Backend\Form\Element\AbstractFormElement;
+
+class PagesDkzSelector extends AbstractFormElement
+{
+    public function render()
+    {
+        // Custom TCA properties and other data can be found in $this->data, for example the above
+        // parameters are available in $this->data['parameterArray']['fieldConf']['config']['parameters']
+        $result = $this->initializeResultArray();
+        $html = array(
+          '<div class="formengine-field-item t3js-formengine-field-item">',
+            '<div class="form-control-wrap" style="max-width: 100%;">',
+              '<div class="form-wizards-wrap">',
+                '<div class="form-wizards-element">',
+                  '<div class="form-control-clearable">',
+                    '<script type="application/javascript">window.dkzFormElementId="'.$this->data['parameterArray']['itemFormElID'].'";</script>',
+                    '<input class="form-control mrm_be_dkz_form_hidden" type="text" name="'.$this->data['parameterArray']['itemFormElName'].'" id="'.$this->data['parameterArray']['itemFormElID'].'" value="'.$this->data['parameterArray']['itemFormElValue'].'" />',
+                  '</div>',
+                '</div>',
+              '</div>',
+            '</div>',
+          '</div>',
+          '<script type="application/javascript" src="/typo3conf/ext/mrm_be/Resources/Public/Javascript/dkz_page_tree.js"></script>',
+          '<link rel="stylesheet" type="text/css" href="/typo3conf/ext/mrm_be/Resources/Public/Css/dkz_page_tree.css" media="all" >',
+        );
+        $result['html'] = implode('', $html);
+//        $this->log($result, false);
+//        $this->log($this->data['parameterArray'], false);
+        return $result;
+    }
+
+    private function log($msg, $isString = true){
+      if(!$isString){
+        $msg = json_encode($msg, JSON_PRETTY_PRINT);
+      }
+      file_put_contents('/var/www/html/typo3temp/debug.log', "--- Form/Element/PagesDkzSelector ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
+    }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmAdditionalinfoboxPreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmAdditionalinfoboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_additionalinfobox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['headline'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 47 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmAnimationPreviewRenderer.php

@@ -0,0 +1,47 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmAnimationPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {}
+}

+ 58 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmButtonPreviewRenderer.php

@@ -0,0 +1,58 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_button"
+ */
+class MrmBeCmButtonPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_button') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $buttonType = ($flex['buttonType'] == "0") ? 'button-linlk' : 'button-scream';
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.strip_tags($flex['text']).'</em><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.strip_tags($buttonType).'</em></div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 65 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChatbotDirectPreviewRenderer.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_paragraph"
+ */
+class MrmBeCmChatbotDirectPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+   * Preprocesses the preview rendering of a content element of type "My new content element"
+   *
+   * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+   * @param bool $drawItem Whether to draw the item using the default functionality
+   * @param string $headerContent Header content
+   * @param string $itemContent Item content
+   * @param array $row Record row of tt_content
+   *
+   * @return void
+   */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  ) {
+    if ($row['CType'] === 'mrm_be_cm_chatbot-direct') {
+
+      $headerContent = '<b>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.title', '') . '</b>';
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+      $terms = strip_tags($flex['settings']['terms']);
+      
+      $url = strip_tags($flex['settings']['url']) ?? '';
+
+      $itemContent = '<div style="display: flex; flec-direction: row; justify-content: flex-start;">';
+      $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/' . $row['CType'] . '.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.title', '') . ':</strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.terms', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $terms . '</em></strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.url', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $url . '</em></strong></div>';
+
+      $drawItem = false;
+    }
+  }
+}

+ 68 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChatbotPreviewRenderer.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_paragraph"
+ */
+class MrmBeCmChatbotPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+   * Preprocesses the preview rendering of a content element of type "My new content element"
+   *
+   * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+   * @param bool $drawItem Whether to draw the item using the default functionality
+   * @param string $headerContent Header content
+   * @param string $itemContent Item content
+   * @param array $row Record row of tt_content
+   *
+   * @return void
+   */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  ) {
+    if ($row['CType'] === 'mrm_be_cm_chatbot') {
+
+      $headerContent = '<b>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.title', '') . '</b>';
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+      $terms = strip_tags($flex['settings']['terms']);
+      $type = strip_tags($flex['settings']['type']) ?? '';
+      $category = strip_tags($flex['settings']['category']) ?? '';
+      $url = strip_tags($flex['settings']['url']) ?? '';
+
+      $itemContent = '<div style="display: flex; flec-direction: row; justify-content: flex-start;">';
+      $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/' . $row['CType'] . '.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.title', '') . ':</strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.terms', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $terms . '</em></strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.type', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $type . '</em></strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.category', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $category . '</em></strong><br>';
+      $itemContent .= '<strong>' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:' . $row['CType'] . '.url', '') . ':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">' . $url . '</em></strong></div>';
+
+      $drawItem = false;
+    }
+  }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistInputPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-input"
+ */
+class MrmBeCmChecklistInputPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistRadioRangePreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-radiorange"
+ */
+class MrmBeCmChecklistRadioRangePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistScalePreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-scale"
+ */
+class MrmBeCmChecklistScalePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistToDoMultiPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-todo"
+ */
+class MrmBeCmChecklistToDoMultiPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistToDoPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-todo"
+ */
+class MrmBeCmChecklistToDoPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmChecklistYesMaybeNoPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_checklist-yesmaybeno"
+ */
+class MrmBeCmChecklistYesMaybeNoPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 82 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmContentimagePreviewRenderer.php

@@ -0,0 +1,82 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmContentimagePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+     if ($row['CType'] === 'mrm_be_cm_contentimage') {
+       $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+       $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+       $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+       $img = '';
+       
+       if($flex['image'] == "1"){
+         $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+         $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+         if($fileObjects && sizeOf($fileObjects) >= 1){
+           $img = array(
+             'reference' => $fileObjects[0]->getReferenceProperties(),
+             'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+             'resource' => $fileObjects[0]
+           );
+         }
+
+         $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+         $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+         $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+       }
+
+       $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
+
+       $drawItem = false;
+
+       /* *
+       file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+       file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+       file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+       /* */
+     }
+   }
+}

+ 72 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmExplorerboxPreviewRenderer.php

@@ -0,0 +1,72 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_explorerbox"
+ */
+class MrmBeCmExplorerboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_explorerbox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $dynamicContent = "<span style=\"flex-direction: column; display: flex;\">Entdeckerbox-Elemente vollständig?<br />";
+        $dynContentCounter = 0;
+        while(1){
+          $dynContentCounter++;
+          if(!isset($flex["head".$dynContentCounter])) break;
+          $dynamicContent .= '<i><strong>Element '.$dynContentCounter.':</strong> '.(($flex["head".$dynContentCounter] && $flex["claim".$dynContentCounter] && $flex["image".$dynContentCounter] && $flex["text".$dynContentCounter]) != '' ? '&check;' : '&times;').'</i>';
+        }
+        $dynamicContent .= "</span>";
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$dynamicContent.'</div></div>';
+
+
+        $drawItem = false;
+
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 64 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmExtraInfosboxPreviewRenderer.php

@@ -0,0 +1,64 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmExtraInfosboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_extra_infosbox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['headline'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}
+

+ 47 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFahrplanPreviewRenderer.php

@@ -0,0 +1,47 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmFahrplanPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {}
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFoldoutH3PreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmFoldoutH3PreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_foldout_h3') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['headline'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmFoldoutPreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmFoldoutPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_foldout') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['headline'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmH2PreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmH2PreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_h2') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['text'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmH3PreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmH3PreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_h3') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['text'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+    }
+}

+ 75 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHeroimagePreviewRenderer.php

@@ -0,0 +1,75 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmHeroimagePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_heroimage') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $img = '';
+        if($flex['image'] == "1"){
+          $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+          $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+          if($fileObjects && sizeOf($fileObjects) >= 1){
+            $img = array(
+              'reference' => $fileObjects[0]->getReferenceProperties(),
+              'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+              'resource' => $fileObjects[0]
+            );
+          }
+
+          $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+          $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+          $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+        }
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHighlightboxPreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_highlightbox"
+ */
+class MrmBeCmHighlightboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_highlightbox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><i>Icon: '.$flex['icon'].'</i><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">Text: '.strip_tags($flex['text']).'</em></div></div>';
+
+        $drawItem = false;
+
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmHtmlPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmHtmlPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 89 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmImageplusPreviewRenderer.php

@@ -0,0 +1,89 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmImageplusPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_imageplus') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        // print_r($flex);
+        // die();
+        $img = '';
+        if($flex['image'] == "1"){
+          $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+          $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+          if($fileObjects && sizeOf($fileObjects) >= 1){
+            $img = array(
+              'reference' => $fileObjects[0]->getReferenceProperties(),
+              'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+              'resource' => $fileObjects[0]
+            );
+          }
+
+          $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+          $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+          $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+        }
+
+        $headline = $flex['headline'] ?? '';
+        $description = $flex['description'] ?? '';
+        $link = $flex['link'] ?? '';
+        $customcss = $flex['customcss'] ?? '';
+
+        $itemContent .= '<div style="display: flex; flex-direction: column; justify-content: flex-start;">';
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;">';
+        $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;">';
+        $itemContent .= '<div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
+        $itemContent .= '<div>'.$headline.'</div>';
+        $itemContent .= '<div>'.$description.'</div>';
+        $itemContent .= '<div>'.$link.'</div>';
+        $itemContent .= '<div>'.$customcss.'</div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInfoboxPreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmInfoboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_infobox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['headline'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 57 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInjectionPreviewRenderer.php

@@ -0,0 +1,57 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_injection"
+ */
+class MrmBeCmInjectionPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+     if ($row['CType'] === 'mrm_be_cm_injection') {
+       $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+       $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+       $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+       $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['text'].'</em></div></div>';
+
+       $drawItem = false;
+     }
+   }
+}

+ 64 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInterviewantwortPreviewRenderer.php

@@ -0,0 +1,64 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_interviewfrage"
+ */
+class MrmBeCmInterviewantwortPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_interviewantwort') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $lang = $flex['lang'] ?? '';
+        $answer = trim($flex['answer']);
+        $interviewee = trim($flex['interviewee']);
+        $languageFile = 'LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:';
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;">';
+        $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;">';
+        $itemContent .= '<div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($languageFile.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$lang.'<br>'.$interviewee.'<br>'.$answer.'</em></div></div>';
+
+        $drawItem = false;
+
+      }
+   }
+}

+ 60 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmInterviewfragePreviewRenderer.php

@@ -0,0 +1,60 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_interviewfrage"
+ */
+class MrmBeCmInterviewfragePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_interviewfrage') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;">';
+        $itemContent .= '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;">';
+        $itemContent .= '<div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['question'].'<br>'.$flex['lang'].'</em></div></div>';
+
+        $drawItem = false;
+
+      }
+   }
+}

+ 57 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmIntrotextPreviewRenderer.php

@@ -0,0 +1,57 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmIntrotextPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_introtext') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['text'].'</em></div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 65 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmLinkagePreviewRenderer.php

@@ -0,0 +1,65 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmLinkagePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+  * Preprocesses the preview rendering of a content element of type "My new content element"
+  *
+  * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+  * @param bool $drawItem Whether to draw the item using the default functionality
+  * @param string $headerContent Header content
+  * @param string $itemContent Item content
+  * @param array $row Record row of tt_content
+  *
+  * @return void
+  */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  )
+  {
+    if ($row['CType'] === 'mrm_be_cm_linkage') {
+
+      $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+      $linkCount = $flex['dynamicComponents'] ? sizeof($flex['dynamicComponents']) : 0;
+      $berufenetCount = $flex['dynamicComponentsBerufeNet'] ? sizeof($flex['dynamicComponentsBerufeNet']) : 0;
+      $berufsausbildungCount = $flex['dynamicComponentsBerufsausbildung'] ? sizeof($flex['dynamicComponentsBerufsausbildung']) : 0;
+      $berufetvCount = $flex['dynamicComponentsBerufeTV'] ? sizeof($flex['dynamicComponentsBerufeTV']) : 0;
+      $ba_searchCount = $flex['dynamicComponentsBASearch'] ? sizeof($flex['dynamicComponentsBASearch']) : 0;
+      $studienwahlCount = $flex['dynamicComponentsStudienwahl'] ? sizeof($flex['dynamicComponentsStudienwahl']) : 0;
+
+      $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$linkCount.'&times;Vernetzung<br/>'.$berufsausbildungCount.'&times;Berufsausbildung</br>'.$berufetvCount.'&times;BERUFETV<br/>'.$ba_searchCount.'&times;BA-Studiensuche<br/>'.$studienwahlCount.'&times;Studienwahl<br/>Check-U-Link? '.(($flex['enable_check_u'] == true) ? '&check;' : '&times;').'<br/>Studiencheck-Link? '.(($flex['enable_studiencheck'] == true) ? '&check;' : '&times;').'</em></div></div>';
+
+      $drawItem = false;
+    }
+  }
+}

+ 65 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmMenuPreviewRenderer.php

@@ -0,0 +1,65 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_menu"
+ */
+class MrmBeCmMenuPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_menu') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><i>Headline: '.$flex['headline'].'</i><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;"></em></div></div>';
+
+        $drawItem = false;
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 63 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmMovingimagesvideoPreviewRenderer.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmMovingimagesvideoPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_movingimagesvideo') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$flex['vid'].'</em></div></div>';
+
+        $drawItem = false;
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmNewsletteraboPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_newsletterabo"
+ */
+class MrmBeCmNewsletteraboPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 57 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmParagraphPreviewRenderer.php

@@ -0,0 +1,57 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_paragraph"
+ */
+class MrmBeCmParagraphPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_paragraph') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.strip_tags($flex['text']).'</em></div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 74 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPicturechoicePreviewRenderer.php

@@ -0,0 +1,74 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_picturechoice"
+ */
+class MrmBeCmPicturechoicePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_picturechoice') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $dynamicContent = "<span><i>Frage:</i> ".$flex["question"]."</span><span style=\"flex-direction: row; display: flex; flex-direction: column;\">";
+        for($i = 1; $i <= 3; $i++){
+          $imgs = '';
+          for($j = 1; $j <= 5; $j++){
+            $imgs .= $flex["image".$i."_".$j] == "1" ? "√" : "&times;";
+          }
+          $dynamicContent .= "<span><i>Set ".$i.":</i> ".$imgs."</span>";
+        }
+        $dynamicContent .= "</span>";
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$dynamicContent.'</div></div>';
+
+        $drawItem = false;
+
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 61 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPodcastPreviewRenderer.php

@@ -0,0 +1,61 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+
+/**
+ * Contains a preview rendering for the page module for CTYPE="mrm_be_cm_podcast"
+ */
+class MrmBeCmPodcastPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+     /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    * @return void
+    */
+    public function preProcess(
+        PageLayoutView &$parentObject,
+        &$drawItem,
+        &$headerContent,
+        &$itemContent,
+        array &$row
+    )
+    {
+        if($row['CType'] === 'mrm_be_cm_podcast') {
+            // Hier wird das aussehen der oben angezeigt Komponent festgelegt
+            $headerContent = '<b>' . LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+            $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+            $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+            $media = [];
+            if($flex['media'] == '1') {
+                $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+                $fileObjects = $fileRepository->findByRelation('tt_content', 'media', $row['uid']);
+
+                if($fileObjects && sizeOf($fileObjects) >= 1){
+                    $media = array(
+                      'reference' => $fileObjects[0]->getReferenceProperties(),
+                      'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+                      'resource' => $fileObjects[0]
+                    );
+                  }
+            }
+            //console_log($media);
+            $media = $media['original']['name'];
+            
+            $transcript = $flex['transcript'];
+
+            $itemContent .= '<div><div style="display: flex;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="min-width: 0;"><strong>'.LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><br/>'.$media.'</div></div><div>'.$transcript.'</div></div>';
+
+            $drawItem = false;
+        }
+    }
+}

+ 75 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPostimagePreviewRenderer.php

@@ -0,0 +1,75 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmPostimagePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_postimage') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $img = '';
+        if($flex['image'] == "1"){
+          $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+          $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+          if($fileObjects && sizeOf($fileObjects) >= 1){
+            $img = array(
+              'reference' => $fileObjects[0]->getReferenceProperties(),
+              'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+              'resource' => $fileObjects[0]
+            );
+          }
+
+          $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+          $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+          $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+        }
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 75 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmPublicationPreviewRenderer.php

@@ -0,0 +1,75 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmPublicationPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_publication') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $img = '';
+        if($flex['image'] == "1"){
+          $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+          $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+          if($fileObjects && sizeOf($fileObjects) >= 1){
+            $img = array(
+              'reference' => $fileObjects[0]->getReferenceProperties(),
+              'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+              'resource' => $fileObjects[0]
+            );
+          }
+
+          $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+          $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+          $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+        }
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong><span>'.$flex["issuenumber"].': '.$flex["issuetitle"].' --&gt; '.$flex["issueheadline"].'</span>'.$img.'</div></div>';
+
+        $drawItem = false;
+      }
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmQuizPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmQuizPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmQuizdirectPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmQuizdirectPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+   * Preprocesses the preview rendering of a content element of type "My new content element"
+   *
+   * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+   * @param bool $drawItem Whether to draw the item using the default functionality
+   * @param string $headerContent Header content
+   * @param string $itemContent Item content
+   * @param array $row Record row of tt_content
+   *
+   * @return void
+   */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  ) {
+  }
+}

+ 82 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmRawimagePreviewRenderer.php

@@ -0,0 +1,82 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmRawimagePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+     if ($row['CType'] === 'mrm_be_cm_rawimage') {
+       $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+       $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+       $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+       $img = '';
+       //file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+       if($flex['image'] == "1"){
+         $fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+         $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $row['uid']);
+
+         if($fileObjects && sizeOf($fileObjects) >= 1){
+           $img = array(
+             'reference' => $fileObjects[0]->getReferenceProperties(),
+             'original' => $fileObjects[0]->getOriginalFile()->getProperties(),
+             'resource' => $fileObjects[0]
+           );
+         }
+
+         $params = '{"fileId":'.$img['original']['uid'].',"configuration":{"width":64,"height":"64c","crop":{},"_context":"Image.CropScaleMask"}}';
+         $thumbnailUrl = \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl($img["original"]["uid"], ["width" => 64, "height" => "64c", "crop" => [], "_context" => "Image.CropScaleMask"]);
+
+         $img = '<img src="'.$thumbnailUrl.'" width="64" height="64"/><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$img['original']['name'].'</em>';
+       }
+
+       $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$img.'</div></div>';
+
+       $drawItem = false;
+
+       /* *
+       file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+       file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+       file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+       /* */
+     }
+   }
+}

+ 55 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmRedirectsPreviewRenderer.php

@@ -0,0 +1,55 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+
+/**
+ * Contains a preview rendering for the page module for CTYPE="mrm_be_cm_redirects"
+ */  
+class MrmBeCmRedirectsPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+     /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    * @return void
+    */
+    public function preProcess(
+        PageLayoutView &$parentObject,
+        &$drawItem,
+        &$headerContent,
+        &$itemContent,
+        array &$row
+    )
+    {
+        if($row['CType'] === 'mrm_be_cm_redirects') {
+            // Hier wird das aussehen der oben angezeigt Komponent festgelegt
+            $headerContent = '<b>' . LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+            $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+            $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+            $source_path = $flex['source_path'];
+            
+            $target = $flex['target'];
+
+            $target_statuscode = $flex['target_statuscode'];
+
+            $html = [];
+            $html[] = '<div style="display: flex; flex-direction: row; justify-content: flex-start">';
+            $html[] = '<img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;">';
+            $html[] = '<div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>';
+            $html[] = '<br />'.$source_path.'<br/>'.$target.'<br/>'.$target_statuscode.'</div></div>';
+            $itemContent = implode('', $html);
+
+            $drawItem = false;
+        }
+    }
+}

+ 73 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmStatementboxPreviewRenderer.php

@@ -0,0 +1,73 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_statementbox"
+ */
+class MrmBeCmStatementboxPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+      if ($row['CType'] === 'mrm_be_cm_statementbox') {
+        $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+        $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $dynamicContent = "<span style=\"flex-direction: row; display: flex;\">";
+        $dynContentCounter = 0;
+        while(1){
+          $dynContentCounter++;
+          if(!isset($flex['text'.$dynContentCounter])) break;
+          $dynamicContent .= '<i style="margin: 5px; padding: 5px;"><strong>Zitat '.$dynContentCounter.':</strong><br />Text: '.($flex["text".$dynContentCounter] != '' ? '&check;' : '&times;').'<br/>Bild: '.($flex["image".$dynContentCounter] != 0 ? '&check;' : '&times;').'<br />Name: '.($flex["name".$dynContentCounter] != '' ? '&check;' : '&times;').'</i>';
+        }
+        $dynamicContent .= "</span>";
+
+        $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').':</strong>'.$dynamicContent.'</div></div>';
+
+        $drawItem = false;
+
+
+        /*
+        file_put_contents('/var/www/html/typo3temp/debug.log', json_encode($flex, JSON_PRETTY_PRINT).PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', $itemContent.PHP_EOL, FILE_APPEND);
+        file_put_contents('/var/www/html/typo3temp/debug.log', '----'.PHP_EOL, FILE_APPEND);
+        */
+      }
+   }
+}

+ 71 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmThemaDerWochePreviewRenderer.php

@@ -0,0 +1,71 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmThemaDerWochePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+  * Preprocesses the preview rendering of a content element of type "My new content element"
+  *
+  * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+  * @param bool $drawItem Whether to draw the item using the default functionality
+  * @param string $headerContent Header content
+  * @param string $itemContent Item content
+  * @param array $row Record row of tt_content
+  *
+  * @return void
+  */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  )
+  {
+    if ($row['CType'] === 'mrm_be_cm_themaderwoche') {
+
+      $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+      $days = '';
+      $days .= 'Montag: '.($flex["monday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Dienstag: '.($flex["tuesday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Mittwoch: '.($flex["wednesday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Donnerstag: '.($flex["thursday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Freitag: '.($flex["friday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Samstag: '.($flex["saturday"] != '' ? '&check;' : '&times;').'<br />';
+      $days .= 'Sonntag: '.($flex["sunday"] != '' ? '&check;' : '&times;');
+
+      $kw = new \DateTime();
+      $kw->setTimestamp($flex["starttime"]);
+      $kw = $kw->format('W');
+
+      $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').' (KW '.$kw.'):</strong> '.$flex['key'].'<br /><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$days.'</em></div></div>';
+
+      $drawItem = false;
+    }
+  }
+}

+ 74 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmTopthemenPreviewRenderer.php

@@ -0,0 +1,74 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_topthemen"
+ */
+class MrmBeCmTopthemenPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+  /**
+  * Preprocesses the preview rendering of a content element of type "My new content element"
+  *
+  * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+  * @param bool $drawItem Whether to draw the item using the default functionality
+  * @param string $headerContent Header content
+  * @param string $itemContent Item content
+  * @param array $row Record row of tt_content
+  *
+  * @return void
+  */
+  public function preProcess(
+    PageLayoutView &$parentObject,
+    &$drawItem,
+    &$headerContent,
+    &$itemContent,
+    array &$row
+  )
+  {
+    if ($row['CType'] === 'mrm_be_cm_topthemen') {
+
+      $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+      $sections = '';
+      $sections .= 'Mo–Mi Woche 1: '.($flex["section1"] != '' ? '&check;' : '&times;').'<br />';
+      $sections .= 'Do–Sa Woche 1: '.($flex["section2"] != '' ? '&check;' : '&times;').'<br />';
+      $sections .= 'So–Di Woche 1/2: '.($flex["section3"] != '' ? '&check;' : '&times;').'<br />';
+      $sections .= 'Mi–Fr Woche 2: '.($flex["section4"] != '' ? '&check;' : '&times;').'<br />';
+      $sections .= 'Sa–So Woche 2: '.($flex["section5"] != '' ? '&check;' : '&times;');
+
+      $sectionStart = new \DateTime();
+      $sectionStart->setTimestamp($flex['starttime']);
+      $sectionStart = $sectionStart->format('W');
+
+      $sectionEnd = new \DateTime();
+      $sectionEnd->setTimestamp($flex['starttime']);
+      $sectionEnd->modify('+ 13 days');
+      $sectionEnd = $sectionEnd->format('W');
+
+      $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').' (Kalenderwochen '.$sectionStart.' und '.$sectionEnd.'):</strong> '.$flex['key'].'<br /><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$sections.'</em></div></div>';
+
+      $drawItem = false;
+    }
+  }
+}

+ 48 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmBeCmVotingPreviewRenderer.php

@@ -0,0 +1,48 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+
+/**
+ * Contains a preview rendering for the page module of CType="mrm_be_cm_introtext"
+ */
+class MrmBeCmVotingPreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+
+   /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    *
+    * @return void
+    */
+   public function preProcess(
+      PageLayoutView &$parentObject,
+      &$drawItem,
+      &$headerContent,
+      &$itemContent,
+      array &$row
+   )
+   {
+   }
+}

+ 52 - 0
extensions/mrm_be/Classes/Hooks/PageLayoutView/MrmbeCmMaintenancePreviewRenderer.php

@@ -0,0 +1,52 @@
+<?php
+namespace Meramo\mrm_be\Hooks\PageLayoutView;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
+use \TYPO3\CMS\Backend\View\PageLayoutView;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+
+/**
+ * Contains a preview rendering for the page module for CTYPE="mrm_be_cm_maintenance"
+ */
+class MrmBeCmMaintenancePreviewRenderer implements PageLayoutViewDrawItemHookInterface
+{
+     /**
+    * Preprocesses the preview rendering of a content element of type "My new content element"
+    *
+    * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
+    * @param bool $drawItem Whether to draw the item using the default functionality
+    * @param string $headerContent Header content
+    * @param string $itemContent Item content
+    * @param array $row Record row of tt_content
+    * @return void
+    */
+    public function preProcess(
+        PageLayoutView &$parentObject,
+        &$drawItem,
+        &$headerContent,
+        &$itemContent,
+        array &$row
+    )
+    {
+        if($row['CType'] === 'mrm_be_cm_maintenance') {
+            // Hier wird das aussehen der oben angezeigt Komponent festgelegt
+            $headerContent = '<b>' . LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
+            $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+            $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+            
+            $start = $flex['starttime'];
+            $start = date('d.m.Y H:i', $start);
+
+            $end = $flex['endtime'];
+            $end = date('d.m.Y H:i', $end);
+
+            $infotext = $flex['infotext'];
+
+            $itemContent = '<div style="display: flex; flex-direction: row; justify-content: flex-start"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').': </strong><b>'.$flex['key'].'</b><br>'.$start.'<br>'.$end.'<br><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$infotext.'</em></div></div>';
+
+            $drawItem = false;
+        }
+    }
+}

+ 2378 - 0
extensions/mrm_be/Classes/Hooks/TCE/TCEMainHook.php

@@ -0,0 +1,2378 @@
+<?php
+
+namespace Meramo\mrm_be\Hooks\TCE;
+
+use DOMDocument;
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Database\ConnectionPool;
+use \TYPO3\CMS\Core\Database\Connection;
+use \TYPO3\CMS\Core\Service\FlexFormService;
+use \TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
+use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
+
+use \Meramo\mrm_be\Mongoer as Mongoer;
+
+require_once GeneralUtility::getFileAbsFileName('typo3conf/ext/mrm_be/Resources/Private/PHP/phpqrcode/qrlib.php');
+
+class TCEMainHook
+{
+  protected $imageSizes = array(
+    'mrm_be_cm_publication' => array(
+      'passthru' => array(
+        'small' => array('width' => 256),
+        'big' => array('width' => 512)
+      )
+    ),
+    'mrm_be_cm_homeheaderinfo' => array(
+      'i_1_1' => array(
+        'i_1_1' => array('width' => 140, 'height' => 140),
+      ),
+      'i_16_9' => array(
+        'i_16_9' => array('width' => 140, 'height' => 79),
+      ),
+      'default' => array(
+        'default' => array('width' => 140, 'height' => 94),
+      )
+    ),
+    'mrm_be_cm_explorerbox' => array(
+      'i_1_1' => array(
+        'img' => array('width' => 500, 'height' => 500),
+      )
+    ),
+    'mrm_be_cm_statementbox' => array(
+      'i_1_1' => array(
+        'img' => array('width' => 160, 'height' => 160),
+      )
+    ),
+    'mrm_be_cm_checklist-radiorange' => array(
+      'i_1_1' => array(
+        'img' => array('width' => 160, 'height' => 160),
+      )
+    ),
+    'mrm_be_cm_tileoverview' => array(
+      'default' => array(
+        'default_hero_lte600' => array('width' => 560, 'height' => 373),
+      )
+    ),
+    'mrm_be_cm_heroimage' => array(
+      'default' => array(
+        'lte600' => array('width' => 560, 'height' => 373),
+        'gt600' => array('width' => 408, 'height' => 272)
+      ),
+    ),
+    'mrm_be_cm_imageplus' => array(
+      'default' => array(
+        'ratio32' => array('width' => 439, 'height' => 293)
+      ),
+      'i_16_9' => array(
+        'ratio169' => array('width' => 727, 'height' => 409)
+      ),
+      'i_21_9' => array(
+        'ratio219' => array('width' => 984, 'height' => 422)
+      )
+    ),
+    'mrm_be_cm_contentimage' => array(
+      'i_1_1' => array(
+        'content_image' => array('width' => 160, 'height' => 160),
+        'content_image_maximized_lte600' => array('width' => 560, 'height' => 560),
+        'content_image_maximized_gt600' => array('width' => 460, 'height' => 460),
+      ),
+    ),
+    'mrm_be_cm_rawimage' => array('passthru' => true),
+    'mrm_be_cm_animation' => array('passthru' => true),
+    'mrm_be_cm_picturechoice' => array(
+      'i_1_1' => array(
+        'pic' => array('width' => 300, 'height' => 300)
+      )
+    ),
+    'overview_image' => array(
+      'default' => array(
+        'home_topics_lte767' => array('width' => 725, 'height' => 484),
+        'home_topics_gt767' => array('width' => 313, 'height' => 209),
+        'sidebar_banner_lte840' => array('width' => 100, 'height' => 66),
+        'rubrik_overview' => array('width' => 318, 'height' => 212),
+        'default_hero_lte600' => array('width' => 560, 'height' => 373),
+        'default_hero_gt600' => array('width' => 408, 'height' => 272, 'allowed_doktypes' => ['102']),
+      ),
+      'i_1_1' => array(
+        'home_rubrik' => array('width' => 95, 'height' => 95),
+        'archive_block' => array('width' => 160, 'height' => 160),
+        'square_big' => array('width' => 520, 'height' => 520),
+      ),
+      'i_16_9' => array(
+        'og' => array('width' => 1200, 'height' => 675),
+        'sidebar_banner_gt840' => array('width' => 282, 'height' => 159),
+      ),
+      'i_21_9' => array(
+        'flat_tile' => array('width' => 400, 'height' => 171),
+        'flat_big' => array('width' => 700, 'height' => 300),
+      ),
+    )
+  );
+
+  private $imageService;
+  private $resourceFactory;
+  private $fileRepository;
+  private $environmentService;
+  private $queryBuilder;
+  private $pageQueryBuilder;
+  private $pageRepository;
+  private $linkService;
+  private $connection;
+
+  function __construct()
+  {
+    $this->environmentService = GeneralUtility::makeInstance("TYPO3\CMS\Extbase\Service\EnvironmentService");
+    $this->resourceFactory = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\ResourceFactory');
+    $this->imageService = GeneralUtility::makeInstance("TYPO3\CMS\Extbase\Service\ImageService");
+    $this->fileRepository = GeneralUtility::makeInstance('TYPO3\CMS\Core\Resource\FileRepository');
+    $this->pageRepository = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Page\PageRepository');
+    $this->linkService = GeneralUtility::makeInstance('TYPO3\CMS\Core\LinkHandling\LinkService');
+
+    $connection = GeneralUtility::makeInstance(ConnectionPool::class);
+    $this->connection = $connection;
+
+    $this->queryBuilder = $connection->getQueryBuilderForTable('tt_content');
+    $this->queryBuilder->getRestrictions()->removeAll()
+      ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
+      ->add(GeneralUtility::makeInstance(HiddenRestriction::class));
+
+    $this->pageQueryBuilder = $connection->getQueryBuilderForTable('pages');
+    $this->pageQueryBuilder->getRestrictions()->removeAll();
+  }
+
+  public function processDatamap_beforeStart($pObj)
+  {
+    if (!isset($pObj->datamap['pages'])) return;
+
+    foreach ($pObj->datamap['pages'] as $pid => &$_d) {
+      if (!$pid || $pid < 0) continue;
+      $starttime = $_d["starttime"];
+      if ($starttime != 0)
+        $_d["starttime"] = $this->startOfDay($starttime, null, true, true);
+      $endtime = $_d["endtime"];
+      if ($endtime != 0)
+        $_d["endtime"] = $this->endOfDay($endtime, null, true, true);
+
+      switch ($_d["red_status"]) {
+        case "-1": //neu angelegt
+        case "1": //in Bearbeitung
+        case "2": //vorbereitet
+        case "3": //geprüft
+        case "21": //gesperrt
+        case "22": //archiviert
+          $_d["hidden"] = 1;
+          break;
+        case "11": //frei
+        case "12": //online
+          $_d["hidden"] = 0;
+          break;
+        default:
+          break;
+      }
+    }
+  }
+
+  public function processCmdmap_afterFinish(\TYPO3\CMS\Core\DataHandling\DataHandler &$pObj)
+  {
+    if (!isset($pObj->datamap['pages'])) return;
+
+    foreach ($pObj->datamap['pages'] as $pid => $_d) {
+      if (!$pid || $pid < 0) continue;
+      $this->log('processing PID: ' . $pid);
+
+      $pageStatement = $this->pageQueryBuilder
+        ->select('*')
+        ->from('pages')
+        ->setMaxResults(1)
+        ->where(
+          $this->pageQueryBuilder->expr()->eq('uid', $this->pageQueryBuilder->createNamedParameter($pid))
+        )
+        ->execute();
+
+      $post = $pageStatement->fetchAll();
+      $post = $post[0];
+
+      if (!$post) continue;
+
+      if ($post['doktype'] == 254) {
+        $this->processFolderContent($post);
+        continue;
+      }
+
+      if ($post['hidden'] == 1 || $post['deleted'] == 1) {
+        Mongoer::sendRequest("pages", "delete", array("pageuid" => $pid));
+        Mongoer::sendRequest("abialtcache", "delete", array("pageuid" => $pid));
+        Mongoer::sendRequest("search", "delete", array("pageuid" => $pid));
+        Mongoer::sendRequest("security", "delete", array("pageuid" => $pid));
+
+        // DELETE existing page PDF
+        $this->deletePagePDFIfExists($post['slug']);
+        //continue;
+      }
+
+      $rootlineutil = GeneralUtility::makeInstance('TYPO3\CMS\Core\Utility\RootlineUtility', $pid);
+      $rootline = array_reverse($rootlineutil->get($pid));
+
+      $processedImages = array();
+      $slugData = $this->constructSlug($pid);
+      if (!$slugData) {
+        $this->log($pid . " slugData empty");
+        continue;
+      }
+
+      $qrfilename = '/var/www/html/public/typo3temp/' . mt_rand(0, 0xffffff) . '_' . mt_rand(0, 0xffffff) . '.svg';
+      \QRcode::svg("https://abi.de" . $slugData, $qrfilename);
+      $qrsvg = file_get_contents($qrfilename);
+      unlink($qrfilename);
+
+      $statement = $this->queryBuilder
+        ->select('*')
+        ->from('tt_content')
+        ->where(
+          $this->queryBuilder->expr()->eq('pid', $this->queryBuilder->createNamedParameter($pid))
+        )
+        ->execute();
+
+      $fetchedTTContent = array();
+      $pageType = "article";
+      //$this->log($post["doktype"]);
+      if ($post["doktype"] == 100) $pageType = "event-page";
+      if ($post["doktype"] == 101) $pageType = "blog-page";
+      if ($post["doktype"] == 102) $pageType = "blogger-page";
+      if ($post["doktype"] == 103) $pageType = "archive";
+      if ($post["doktype"] == 104) $pageType = "video-page";
+      if ($post['is_siteroot'] == 1) $pageType = "home";
+      // $overview_image = null;
+
+      while ($row = $statement->fetch()) {
+        $fetchedTTContent[] = $row;
+        $row["doktype"] = $post["doktype"];
+      }
+
+      /* look for overview_image start */
+      if ($pageType == "blogger-page" || $pageType == "video-page") {
+        $overview_image = $this->processImagesTTContent($post, 'overview_image', 'pages', 'overview_image');
+        $overview_image = $overview_image[0] ? $overview_image[0] : null;
+      }
+
+      if (!$overview_image) {
+        $x = $this->findFirstAppearingElementByType("mrm_be_cm_postimage", $fetchedTTContent, "CType");
+        if ($x) {
+          $overview_image = $this->processImagesTTContent($x, 'overview_image');
+          $overview_image = $overview_image[0] ? $overview_image[0] : null;
+        }
+      }
+
+      if (!$overview_image) {
+        foreach ($fetchedTTContent as $row) {
+          if (!$overview_image && ($row['CType'] == "mrm_be_cm_heroimage" || $row['CType'] == "mrm_be_cm_contentimage" || $row['CType'] == "mrm_be_cm_rawimage")) {
+            $overview_image = $this->processImagesTTContent($row, 'overview_image');
+            $overview_image = $overview_image[0] ? $overview_image[0] : null;
+          }
+        }
+      }
+
+      /* look for overview_image end */
+
+      if ($pageType != "home") {
+        $initialContent = $this->createContentElement($pageType, array(), (object) array(), array());
+        $initialH1Attribs = array();
+        if ($post["roof"] && $post["roof"] != '') $initialH1Attribs["roof"] = $post["roof"];
+        if ($post["title"] && $post["title"] != '') $initialH1Attribs["text"] = $post["title"];
+        if (sizeof($initialH1Attribs) > 0) $initialContent["subElements"][] = $this->createContentElement("h1", array(), $initialH1Attribs);
+      }
+
+      $processedData = array(
+        'pageuid' => $pid,
+        'documentLanguage' => $post['documentlanguage'],
+        'url' => $slugData,
+        'shareableUrl' => "https://abi.de" . $slugData,
+        'title' => ($post['roof'] != '' ? $post['roof'] . ": " : "") . $post['title'],
+        'activeMenuPage' => $post['targetgroup'],
+        'overviewImage' => $overview_image,
+        'teasers' => array(
+          'teaserHome' => $post['teaserHome'],
+          'abstract' => $this->removeLinebreaks($post['abstract']),
+          'teaserOverview' => $post['teaserOverview'],
+          'title' => $post['title'],
+          'roof' => $post['roof'],
+          'intro' => ($pageType == 'blogger-page') ? $post['overview'] : $post['intro']
+        ),
+        'sharingActivated' => $post['sharing_activated'] == 1 ? true : false,
+        'linkableInHTMLSitemap' => $post['forHTMLSitemap'] == 1 ? true : false,
+        'linkableOnHome' => $post['forHome'] == 1 ? true : false,
+        'linkableOnCategoryOverview' => $post['forCategoryOverview'] == 1 ? true : false,
+        'moveToTopPositionOnCategoryOverview' => $post['forCategoryOverviewTopPosition'] == 1 ? true : false,
+        'pageType' => $pageType,
+        'pageData' => array(
+          'title' => ($post['roof'] != '' ? $post['roof'] . ": " : "") . $post['title'],
+          'metas' => array(
+            "<meta name=\"keywords\" content=\"" . $post["keywords"] . "\">",
+            "<meta name=\"dcterms.date\" content=\"" . date("Y-m-d", $post['tstamp'] > $post['starttime'] ? $post['tstamp'] : $post['starttime']) . "\">",
+            "<meta name=\"robots\" content=\"" . ($post['no_index'] == 0 ? "index" : "noindex") . ", " . ($post['no_follow'] == 0 ? "follow" : "nofollow") . "\" />",
+            "<meta property=\"og:title\" content=\"" . ($post['roof'] != '' ? $post['roof'] . ": " : "") . $post['title'] . "\">",
+            ($overview_image ? "<meta property=\"og:image\" content=\"https://abi.de/cdn/" . $overview_image["sources"]["og"] . "\" >" : ""),
+          ),
+          'breadcrumbs' => $this->constructBreadCrumb($rootline, $post, $pageType),
+          'content' => $initialContent,
+          'sidebar' => $this->createContentElement("sidebar", array(), (object) array(), array()),
+        ),
+        'linkedPosts' => array(),
+        'injections' => array(),
+        'qr2page' => $qrsvg,
+        'status' => $this->constructStatus($post)
+      );
+
+      //before content
+      switch ($pageType) {
+        case "blog-page":
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "blog-author-info"));
+          $processedData["injections"][] = "blog-author-info";
+          $processedData["pageData"]["sidebar"]["subElements"][] = $this->createContentElement("injection", array("type" => "blog-page-sidebar"));
+          $processedData["injections"][] = "blog-page-sidebar";
+          break;
+
+        case "blogger-page":
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "blogger-page-author-image"));
+          $processedData["injections"][] = "blogger-page-author-image";
+          $text = $post['overview'] ?? $post['abstract'];
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("typo3_paragraph", array(), array('text' => '<p>' . $this->exchangeLinkBreaksWithBr($text) . '</p>'), null);
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "blogger-page-author-latest-blogs"));
+          $processedData["injections"][] = "blogger-page-author-latest-blogs";
+          $processedData["pageData"]["sidebar"]["subElements"][] = $this->createContentElement("injection", array("type" => "blogger-page-sidebar"));
+          $processedData["injections"][] = "blogger-page-sidebar";
+          break;
+
+        case "video-page":
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "video-date-category"));
+          $processedData["injections"][] = "video-date-category";
+          $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "video-info"));
+          $processedData["injections"][] = "video-info";
+          break;
+      }
+
+      foreach ($fetchedTTContent as $row) {
+        $this->processData($row, $processedData, $processedImages);
+      }
+
+      //after content
+      $processedData['pageData']['metas'][] = $this->constructMetaDescription($post['abstract'], $processedData['pageData']['content']);
+      $processedData['pageData']['metas'][] = $this->constructMetaDescription($post['abstract'], $processedData['pageData']['content'], true);
+
+      if ($pageType == "blog-page") {
+        $processedData['pageData']['metas'][] = $this->constructMetaDescriptionForBlogPage('', $processedData['pageData']['content']);
+        $processedData['pageData']['metas'][] = $this->constructMetaDescriptionForBlogPage('', $processedData['pageData']['content'], true);
+      }
+
+
+
+      $processedData['pageData']['metas'] = array_filter($processedData['pageData']['metas'], function ($val) {
+        return $val != "";
+      });
+
+      switch ($pageType) {
+        case "archive":
+          $hasSpecificOverviewInjection = false;
+          foreach ($processedData["injections"] as $inj) {
+            if (str_contains($inj, "-archive-")) {
+              $hasSpecificOverviewInjection = true;
+              break;
+            }
+          }
+          if (!$hasSpecificOverviewInjection) {
+            $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("injection", array("type" => "archive-of-direct-childurls"));
+            $processedData["injections"][] = "archive-of-direct-childurls";
+          }
+          break;
+        case "event-page":
+          if ($post["event_link"] && $post["event_link"] != "") {
+            $processedData["pageData"]["content"]["subElements"][] = $this->createContentElement("typo3_paragraph", array(), array('text' => '<p><a href="' . $post["event_link"] . '" target="_blank">Weitere Infos zu dieser Veranstaltung »</a></p>'));
+          }
+          break;
+      }
+
+      if (sizeof($processedData['pageData']['sidebar']['subElements']) == 0) {
+        $processedData['pageData']['sidebar'] = null;
+      }
+      if (sizeof($processedData['linkedPosts']) == 0) $processedData['linkedPosts'] = null;
+      else
+        $processedData['linkedPosts'] = array_values(array_unique($processedData['linkedPosts']));
+
+      if (sizeof($processedData['injections']) == 0) $processedData['injections'] = null;
+      else
+        $processedData['injections'] = array_unique($processedData['injections']);
+
+      if ($post['hidden'] == 1) {
+        //TODO: SET STATUS ..
+      }
+
+      $this->deletePagePDFIfExists($processedData['url']);
+      Mongoer::sendRequest("pages", "save", $processedData);
+
+      $this->generatePDFPath($processedData['pageuid'], $processedData['url']);
+
+      Mongoer::sendRequest("abialtcache", "delete", array("pageuid" => $pid));
+      $security_user_pass = $post["security_user_pass"];
+      if (!$security_user_pass || $security_user_pass == '')
+        Mongoer::sendRequest("security", "delete", array("pageuid" => $pid));
+      else {
+        $tmp = array();
+        foreach (preg_split('/\n|\r\n?/', $security_user_pass) as $itm) {
+          $itm = trim($itm);
+          $itm = explode('|', $itm);
+          $tmp[$itm[0]] = $itm[1];
+        }
+        $security_user_pass = $tmp;
+        Mongoer::sendRequest("security", "save", array("pageuid" => $pid, "url" => $processedData["url"], "data" => $security_user_pass));
+      }
+
+      //if($post['doktype'] != 1)   continue;
+
+      if ($post['no_search'] == 0) {
+        $dkzer = new \Meramo\mrm_be\DKZer();
+        $searchwords = $dkzer->getSearchWords($post['dkz_code_nrs']);
+        $freesearchwords = preg_split('/\n|\r|,\n?/', $post['free_searchwords']);
+        foreach ($freesearchwords as $sw) {
+          $searchwords[] = $this->convertStringToTechnicalName($sw);
+        }
+        $ignoredsearchwords = preg_split('/\n|\r|,\n?/', $post['ignored_searchwords']);
+        foreach ($ignoredsearchwords as &$sw) {
+          $sw = $this->convertStringToTechnicalName($sw);
+        }
+        $searchwords = array_values(array_diff($searchwords, $ignoredsearchwords));
+        $searchabletext = $this->constructSearchableText($processedData, true);
+        $searchabletext_full = $this->constructSearchableText($processedData, false);
+
+        $arra = array("pageuid" => $pid, "searchwords" => $searchwords, "text" => $searchabletext, "fulltext" => $searchabletext_full, "lesson" => null);
+        $lessons = array_values(explode(',', $post['lesson']));
+        if (sizeof($lessons) == 1 && $lessons[0] == "") $lessons = [];
+
+        if (sizeof($lessons) > 0) {
+          foreach ($lessons as &$l) $l = (int) $l;
+          $arra['lesson'] = $lessons;
+        }
+        Mongoer::sendRequest("search", "save", $arra);
+      } else Mongoer::sendRequest("search", "delete", array("pageuid" => $pid));
+    }
+  }
+
+  private function createPDFHash($url)
+  {
+    $page = md5($url);
+    return  $page[0] . $page[1] . '/' . $page[2] . $page[3] . '/' . $page . '.pdf';
+  }
+
+  private function deletePagePDFIfExists($url)
+  {
+    $partialpath = \TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/pdf-storage/';
+    $file = $this->createPDFHash($url);
+    $filepath = $partialpath . $file;
+
+    if (file_exists($filepath)) {
+      unlink($filepath);
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  private function generatePDFPath($pageuid, $url)
+  {
+    $urlencoded = urlencode($url);
+    // $this->log($url, true);
+    $urlpart = "https://abi.de/pdfgen?u=";
+    $pdfgenurl = $urlpart . $urlencoded;
+
+    $data = [
+      'pageuid' => $pageuid,
+      'url' => $pdfgenurl,
+      'pdfhash' => $this->createPDFHash($url)
+    ];
+
+    Mongoer::sendRequest('pdfgenjobs', 'save', $data);
+  }
+
+  private function processFolderContent(&$post)
+  {
+    $statement = $this->queryBuilder
+      ->select('*')
+      ->from('tt_content')
+      ->where(
+        $this->queryBuilder->expr()->eq('pid', $this->queryBuilder->createNamedParameter($post["uid"]))
+      )
+      ->execute();
+
+    $fetchedTTContent = array();
+    while ($row = $statement->fetch()) {
+      $fetchedTTContent[] = $row;
+    }
+
+    if ($post['backend_layout'] == 'pagets__19') {
+      $themenderwoche = array();
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      foreach ($fetchedTTContent as $row) {
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $themenderwoche[] = array(
+          "key" => $flex['key'],
+          "starttime" => $this->startOfDay($flex['starttime']),
+          "endtime" => $this->endOfDay($flex['starttime'], '+6 days'),
+          "monday" => (int) $this->parseUIDFromT3Url($flex['monday']),
+          "tuesday" => (int) $this->parseUIDFromT3Url($flex['tuesday']),
+          "wednesday" => (int) $this->parseUIDFromT3Url($flex['wednesday']),
+          "thursday" => (int) $this->parseUIDFromT3Url($flex['thursday']),
+          "friday" => (int) $this->parseUIDFromT3Url($flex['friday']),
+          "saturday" => (int) $this->parseUIDFromT3Url($flex['saturday']),
+          "sunday" => (int) $this->parseUIDFromT3Url($flex['sunday']),
+        );
+      }
+      Mongoer::sendRequest("themaderwoche", "save", array("data" => $themenderwoche));
+    }
+
+    if ($post['backend_layout'] == 'pagets__20') {
+      $menus = array();
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      foreach ($fetchedTTContent as $row) {
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $items = array();
+        foreach ((array) $flex["dynamicComponents"] as $link) {
+          $linkedPostIds = array();
+          $itm = $this->parseFlexFormLink($link["links"]["link"], null, $linkedPostIds);
+          //$this->log($itm, false);
+          unset($itm["href"]);
+          $itm["pageuid"] = $linkedPostIds["linkedPosts"][0];
+          $items[] = $itm;
+        }
+        $menus[] = array(
+          'headline' => $flex['headline'],
+          'menu_id' => $flex['mid'],
+          'items' => $items
+        );
+      }
+      Mongoer::sendRequest("menues", "save", array("data" => $menus));
+    }
+
+    if ($post['backend_layout'] == 'pagets__21') {
+      $topthemen = array();
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+      foreach ($fetchedTTContent as $row) {
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $topthemen[] = array(
+          "key" => $flex['key'],
+          "starttime" => $this->startOfDay($flex['starttime']),
+          "endtime" => $this->endOfDay($flex['starttime'], '+13 days'),
+          "section1" => (int) $this->parseUIDFromT3Url($flex['section1']),
+          "section2" => (int) $this->parseUIDFromT3Url($flex['section2']),
+          "section3" => (int) $this->parseUIDFromT3Url($flex['section3']),
+          "section4" => (int) $this->parseUIDFromT3Url($flex['section4']),
+          "section5" => (int) $this->parseUIDFromT3Url($flex['section5']),
+        );
+      }
+      Mongoer::sendRequest("topthemen", "save", array("data" => $topthemen));
+    }
+
+    if ($post['backend_layout'] == 'pagets__23') {
+      $maintenance = array();
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+
+      foreach ($fetchedTTContent as $row) {
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+        $maintenance[] = array(
+          "starttime" => $flex['starttime'],
+          "endtime" => $flex['endtime'],
+          "infotext" => $flex['infotext']
+        );
+      }
+      Mongoer::sendRequest("maintenance", "save", array("data" => $maintenance));
+    }
+
+    if ($post['backend_layout'] == 'pagets__27' || $post['backend_layout' == 'pagets__28']) {
+
+      $chatbot = array();
+      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+
+      foreach ($fetchedTTContent as $row) {
+
+        $isDirect = $row['CType'] == 'mrm_be_cm_chatbot-direct';
+
+        $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);
+
+        $item = array();
+
+        $item['terms'] = explode("\n", str_replace(',', '', $flex['settings']['terms']));
+        $item['type'] = $isDirect ? 'direct' : $flex['settings']['type'];
+
+        if ($isDirect) {
+          $item['url'] = $this->replaceT3Link($flex['settings']['url'], null, $row, false);
+        }
+        if ($flex['settings']['type'] == 'reverse') {
+          $item["category"] =  (($flex['settings']['category'] == "Auswählen") ? '' : $flex['settings']['category']);
+        }
+
+        $chatbot[] = $item;
+      }
+      Mongoer::sendRequest("chatbot", "save",  array("data" => $chatbot));
+    }
+  }
+
+  private function removeLinebreaks($str)
+  {
+    return trim(preg_replace('/\s+/', ' ', $str));
+  }
+
+  private function exchangeLinkBreaksWithBr($str)
+  {
+    return trim(preg_replace('/\r\n/', '<br />', $str));
+  }
+
+  private function startOfDay($ts, $modify = null, $isAtomDate = false, $returnAtomDate = false)
+  {
+    $dt = null;
+    if ($isAtomDate) {
+      if (is_numeric($ts)) {
+        $ts = $ts + 0;
+        $dt = new \DateTime();
+        $dt->setTimezone(new \DateTimeZone('UTC'));
+        $dt->setTimestamp($ts);
+      } else {
+        $dt = new \DateTime($ts);
+        $dt->setTimezone(new \DateTimeZone('UTC'));
+      }
+    } else {
+      $dt = new \DateTime(null, new \DateTimeZone('Europe/Berlin'));
+      $dt->setTimestamp($ts);
+    }
+
+    if ($modify) $dt->modify($modify);
+    $bodStr = $dt->format('Y-m-d 00:00:00');
+
+    $bodObj = \DateTime::createFromFormat('Y-m-d H:i:s', $bodStr, $returnAtomDate ? new \DateTimeZone('UTC') : new \DateTimeZone('Europe/Berlin'));
+
+    if ($returnAtomDate) return $bodObj->format(\DateTimeInterface::ATOM);
+
+    return (int) $bodObj->getTimestamp();
+  }
+
+  private function endOfDay($ts, $modify = null, $isAtomDate = false, $returnAtomDate = false)
+  {
+    $dt = null;
+    if ($isAtomDate) {
+      if (is_numeric($ts)) {
+        $ts = $ts + 0;
+        $dt = new \DateTime();
+        $dt->setTimezone(new \DateTimeZone('UTC'));
+        $dt->setTimestamp($ts);
+      } else {
+        $dt = new \DateTime($ts);
+        $dt->setTimezone(new \DateTimeZone('UTC'));
+      }
+    } else {
+      $dt = new \DateTime(null, new \DateTimeZone('Europe/Berlin'));
+      $dt->setTimestamp($ts);
+    }
+
+    if ($modify) $dt->modify($modify);
+    $eodStr = $dt->format('Y-m-d 23:59:59');
+    $eodObj = \DateTime::createFromFormat('Y-m-d H:i:s', $eodStr, $returnAtomDate ? new \DateTimeZone('UTC') : new \DateTimeZone('Europe/Berlin'));
+
+    if ($returnAtomDate) return $eodObj->format(\DateTimeInterface::ATOM);
+
+    return (int) $eodObj->getTimestamp();
+  }
+
+  function array_search_by_key_recursive($needle, array $haystack, &$return)
+  {
+    foreach ($haystack as $k => $v) {
+      if (is_array($v)) {
+        $this->array_search_by_key_recursive($needle, $v, $return);
+      } else {
+        if ($k === $needle) {
+          $return[] = $v;
+        }
+      }
+    }
+  }
+
+  private function findFirstAppearingElementByType($type, $subs, $typeKey = "type")
+  {
+    foreach ($subs as $v) {
+      if ($v[$typeKey] == $type) return $v;
+    }
+    return null;
+  }
+
+  private function checkOrReduceDescriptionLength($desc, $len)
+  {
+    $newStr = '';
+
+    $desc = $this->removeLinebreaks($desc);
+    if (is_string($desc) && mb_strlen($desc) < $len) {
+      $newStr = $desc;
+    } else {
+      $newStr = substr($desc, 0, $len);
+      $pos = strrpos($newStr, ' ');
+      $newStr =  substr($desc, 0, $pos);
+    }
+    return $newStr;
+  }
+
+  private function constructMetaDescription($abstract = '', $content, $isOgTag = false)
+  {
+    $desc = '';
+    if ($abstract != '') $desc = $abstract;
+
+    if (!$desc || $desc == '') {
+      $desc = $this->findFirstAppearingElementByType("introtext", $content["subElements"]);
+      if ($desc)
+        $desc = $desc["attributes"]["text"];
+    }
+    if (!$desc || $desc == '')
+      return '';
+
+    if ($isOgTag)
+      return "<meta property=\"og:description\" content=\"" . $this->checkOrReduceDescriptionLength($desc, 320) . "\">";
+
+    return "<meta name=\"description\" content=\"" . $this->checkOrReduceDescriptionLength($desc, 320) . "\">";
+  }
+
+  private function constructMetaDescriptionForBlogPage($text = '', $content, $isOgTag = false)
+  {
+    $desc = '';
+
+    if ($text != '') $desc = $text;
+
+    if (!$desc || $desc == '') {
+      $desc = $this->findFirstAppearingElementByType('typo3_paragraph', $content["subElements"]);
+
+      if ($desc)
+        $desc = strip_tags($desc["attributes"]["text"]);
+    }
+
+    if (!$desc || $desc == '')
+      return '';
+
+    if ($isOgTag)
+
+      return "<meta property=\"og:description\" content=\"" . $this->checkOrReduceDescriptionLength($desc, 165) . ' …' . "\">";
+
+    return "<meta name=\"description\" content=\"" . $this->checkOrReduceDescriptionLength($desc, 165) . ' …' . "\">";
+  }
+
+  private function constructSearchableText($content, $minimum = true)
+  {
+    $cr = [];
+    if (!$minimum) {
+      $this->array_search_by_key_recursive("text", $content["pageData"]["content"], $cr);
+    } else {
+      //$roof = $this->findFirstAppearingElementByType("roof", $content["pageData"]["content"]["subElements"]);
+      //if($roof) $cr[] = $roof["attributes"]["text"];
+      $h1 = $this->findFirstAppearingElementByType("h1", $content["pageData"]["content"]["subElements"]);
+      if ($h1) {
+        $cr[] = $h1["attributes"]["roof"];
+        $cr[] = $h1["attributes"]["text"];
+      }
+      $introtext = $this->findFirstAppearingElementByType("introtext", $content["pageData"]["content"]["subElements"]);
+      if ($introtext) $cr[] = $introtext["attributes"]["text"];
+    }
+    $cr = preg_replace("/\r|\n/", " ", strip_tags(implode(" ", $cr)));
+    return $cr;
+  }
+
+  private function constructStatus($post)
+  {
+    $publicationType = null;
+    switch ($post["red_status"]) {
+      case "-1": //neu angelegt
+      case "1": //in Bearbeitung
+      case "2": //vorbereitet
+      case "3": //geprüft
+      case "21": //gesperrt
+      case "22": //archiviert
+        $publicationType = "preview";
+        break;
+      case "11": //frei
+      case "12": //online
+        $publicationType = "live";
+        break;
+      default:
+        break;
+    }
+
+    $status = array(
+      'isLiveFrom' => -1,
+      'isLiveTill' => -1,
+      'publicationType' => $publicationType,
+      'seo' => array(
+        'sitemap_changefreq' => $post['sitemap_changefreq'],
+        'sitemap_priority' => $post['sitemap_priority'],
+        'sitemap_lastmod' => time(),
+      ),
+    );
+
+    if ($post['starttime'] != 0) {
+      $status['isLiveFrom'] = $this->startOfDay($post['starttime']);
+    }
+    if ($post['endtime'] != 0) {
+      $status['isLiveTill'] = $this->endOfDay($post['endtime']);
+    }
+
+    if ($post['doktype'] == '101') {
+      $status['blog_author'] = $post['blog_author'];
+      $status['blog_category'] = $post['blog_category'];
+    }
+
+    if ($post['doktype'] == '100') {
+      $status['event_state'] = $post['event_state'];
+      $status['event_category'] = $post['event_category'];
+    }
+
+    if ($post['doktype'] == '104') {
+      $status['video_category'] = $post['event_category'];
+    }
+    //$this->log($status, false);
+    return $status;
+  }
+
+  private function constructRedirects($pageData)
+  {
+    $redirects = array(
+      '/?id=' . $pageData['uid']
+    );
+    //TODO: Add a single \r to match old Macs line breaks?
+    foreach (preg_split('/\n|\r\n?/', $pageData['redirects']) as $redir) {
+      $redir = trim($redir);
+      if ($redir == '') continue;
+      $redirects[] = $redir;
+    }
+    return $redirects;
+  }
+
+  private function convertStringToTechnicalName($string)
+  {
+    $string = $this->sanitizeString($string);
+    $string = preg_replace('/-/', '', $string);
+    return strtoupper($string);
+  }
+
+  private function sanitizeString($string)
+  {
+    $table = array(
+      'Š' => 'S', 'š' => 's', 'Đ' => 'Dj', 'đ' => 'dj', 'Ž' => 'Z', 'ž' => 'z', 'Č' => 'C', 'č' => 'c', 'Ć' => 'C', 'ć' => 'c',
+      'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'AE', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E',
+      'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O',
+      'Õ' => 'O', 'Ö' => 'OE', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'UE', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss',
+      'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'ae', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e',
+      'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o',
+      'ô' => 'o', 'õ' => 'o', 'ö' => 'oe', 'ø' => 'o', 'ü' => 'ue', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y',
+      'þ' => 'b', 'ÿ' => 'y', 'Ŕ' => 'R', 'ŕ' => 'r', '/' => ''
+    );
+
+    $x = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $string);
+    $x = trim(strtr($x, $table));
+    $x = preg_replace('/[^A-Za-z0-9]+/', ' ', $x);
+    $x = trim($x);
+    $x = preg_replace('/ {1,}/', '-', $x);
+    $x = trim($x, "-");
+    return $x;
+  }
+
+  private function constructSlug($pid)
+  {
+    $postStatement = $this->pageQueryBuilder
+      ->select('slug')
+      ->from('pages')
+      ->setMaxResults(1)
+      ->where(
+        $this->pageQueryBuilder->expr()->eq('uid', $this->pageQueryBuilder->createNamedParameter($pid))
+      )
+      ->execute();
+
+    $postSlug = $postStatement->fetchAll();
+    $postSlug = $postSlug[0];
+    return $postSlug ? $postSlug["slug"] : null;
+  }
+
+  private function constructBreadCrumb($rootline, $page, $pageType)
+  {
+    $breadCrumb = $this->createContentElement('breadcrumbs');
+    foreach ($rootline as $post) {
+      if ($post['doktype'] == 254) continue;
+      if ($post['is_siteroot'] == 1) continue;
+      if ($page['uid'] == $post['uid'] && ($pageType == "blogger-page" || $pageType == "video-page"))
+        $tit = $post['title'];
+      else
+        if ($post['use_roof_as_breadcrumb_text'] == 0)
+        $tit = $post['title'];
+      else
+        $tit = $post['roof'] && $post['roof'] != '' ? $post['roof'] : $post['title'];
+      $breadCrumb['subElements'][] = $this->createContentElement(
+        'breadcrumblink',
+        array(
+          'title' => $tit,
+          'alt' => $tit,
+          'text' => $tit,
+          'href' => $this->constructSlug($post['uid'])
+        )
+      );
+    }
+    return $breadCrumb;
+  }
+
+  private function processData($dbReference, &$processedData, &$processedImages)
+  {
+    $isSidebar = $dbReference['colPos'] == 1;
+    if ($isSidebar)
+      $subs = &$processedData['pageData']['sidebar']['subElements'];
+    else
+      $subs = &$processedData['pageData']['content']['subElements'];
+
+    $ffs = GeneralUtility::makeInstance(FlexFormService::class);
+    $flex = $ffs->convertFlexFormContentToArray($dbReference['pi_flexform']);
+
+    // print_r($flex);
+    // die();
+
+    switch ($dbReference['CType']) {
+      case "mrm_be_cm_postimage":
+        break;
+      case "mrm_be_cm_voting":
+        $s = $this->createContentElement(
+          "voting",
+          array(
+            "labels" => array(
+              "startbutton" => $flex["startbuttontext"],
+            ),
+            "resultscreen" => array(
+              "headingTop" => $flex["resultheadingtop"],
+            ),
+          ),
+          array(
+            "items" => array(array(
+              "text" => $flex["questiontext"],
+              "type" => $flex["questiontype"] == "1" || $flex["questiontype"] == 1 ? "multi" : "single",
+              "answers" => array_values(array_map(function ($x) {
+                return array("text" => $x["settings"]["answer"]["text"], "value" => null);
+              }, $flex["dynamicComponents"]))
+            )),
+            "validation" => array(
+              "alreadyVoted" => $this->createContentElement("injection", array("type" => "voting-alreadyVoted")),
+              "chartData" => $this->createContentElement("injection", array("type" => "voting-chartData|")),
+            ),
+          )
+        );
+        $cntr = 0;
+        foreach ($s["attributes"]["items"][0]["answers"] as &$a) {
+          $a["value"] = $cntr;
+          $cntr++;
+        }
+        $s["attributes"]["validation"]["chartData"]["props"]["type"] .= $cntr;
+        $processedData["injections"][] = "voting-alreadyVoted";
+        $processedData["injections"][] = "voting-chartData|" . $cntr;
+        $subs[] = $s;
+        $processedData["status"]["hasVoting"] = true;
+        break;
+      case "mrm_be_cm_checklist-todo":
+        $elements = $this->createContentElement(
+          "checklist-todo",
+          array(
+            "headlines" => array(
+              "main" => $flex["headline_main"],
+              "done" => $flex["headline_done"],
+              "not_done" => $flex["headline_not_done"],
+            ),
+            "controls" => array(
+              "print" => $flex["enable_print"] == "1",
+              "pdf" => $flex["enable_pdf"] == "1",
+            ),
+            "labels" => array(
+              "submit" => $flex["label_submit"],
+              "print" => $flex["label_print"],
+              "pdf" => $flex["label_pdf"],
+            ),
+            "items" => (function ($flex, $dbReference) {
+              $itms = array();
+              $imgs = array();
+              if ($flex["images"] != "0" && $flex["images"] != 0) {
+                $imgs = $this->processImagesTTContent($dbReference, 'mrm_be_cm_contentimage', 'tt_content', 'image', 'uid', true, true);
+              }
+              foreach ($flex["items"] as $itm) {
+                $i = $itm["item"];
+                $a = array();
+                if ($i["text"] != "") $a["text"] = $i["text"];
+                if ($i["contains_image"] == "1" || $i["contains_image"] == 1) {
+                  $im = array_shift($imgs);
+                  if (isset($im)) $a["img"] = $im;
+                }
+                $itms[] = $a;
+              }
+              return $itms;
+            })($flex, $dbReference),
+          )
+        );
+        $subs[] = $elements;
+        $processedData["status"]["hasChecklist"] = true;
+        break;
+      case "mrm_be_cm_checklist_todo_multi":
+        $elements = $this->createContentElement(
+          'checklist-todo-multi',
+          array(
+            "texts" => array(
+              "mainhead" => $flex['mainhead'],
+              "description" =>  $flex['description'],
+            ),
+            "controls" => array(
+              "print" => $flex["enable_print"] == "1",
+              "pdf" => $flex["enable_pdf"] == "1",
+            ),
+            "labels" => array(
+
+              "print" => $flex["label_print"],
+              "pdf" => $flex["label_pdf"],
+            ),
+            "items" => (function ($flex) {
+              $itms  = [];
+              $a = array();
+              foreach ($flex['items'] as $itm) {
+
+                if (is_array($itm)) {
+                  $a['head'] = $itm['item']['head'];
+                  $list = $itm['item']['list'];
+
+                  $doc = new \DOMDocument('1.0', 'utf-8');
+                  $doc->loadHTML('<?xml encoding="UTF-8">' . $list);
+                  $listitems = $doc->getElementsByTagName('li');
+
+                  $list = [];
+                  foreach ($listitems as $node) {
+                    foreach ($node->childNodes as $child) {
+                      $list[] = array('text' => $child->nodeValue);
+                    }
+                    $a['items'] = $list;
+                  }
+                }
+                $itms[] = $a;
+              }
+              return $itms;
+            })($flex),
+          ),
+        );
+        $subs[] = $elements;
+        break;
+
+      case "mrm_be_cm_checklist-input":
+        $items = array();
+        $dynContentCounter = 0;
+        while (true) {
+          $dynContentCounter++;
+          if (!isset($flex["label" . $dynContentCounter])) break;
+          if ($flex["label" . $dynContentCounter] === "") continue;
+          $label = array(
+            "label" => $flex["label" . $dynContentCounter]
+          );
+          $items[] = $label;
+        }
+        $elements = $this->createContentElement(
+          "checklist-input",
+          array(
+            "headlines" => array(
+              "main" => $flex["headline_main"],
+              "results" => $flex["headline_result"],
+            ),
+            "intro" => $flex["intro"],
+            "controls" => array(
+              "print" => $flex["enable_print"] == "1",
+              "pdf" => $flex["enable_pdf"] == "1",
+            ),
+            "labels" => array(
+              "submit" => $flex["label_submit"],
+              "print" => $flex["label_print"],
+              "pdf" => $flex["label_pdf"],
+            ),
+            "items" => $items,
+          )
+        );
+        $subs[] = $elements;
+        $processedData["status"]["hasChecklist"] = true;
+        break;
+      case "mrm_be_cm_checklist-scale":
+        $items = array();
+        $dynContentCounter = 0;
+        while (true) {
+          $dynContentCounter++;
+          if (!isset($flex["label" . $dynContentCounter])) break;
+          if ($flex["label" . $dynContentCounter] === "") continue;
+          $label = array(
+            "label" => $flex["label" . $dynContentCounter]
+          );
+          $items[] = $label;
+        }
+        $elements = $this->createContentElement(
+          "checklist-scale",
+          array(
+            "headlines" => array(
+              "main" => $flex["headline_main"],
+              "results" => $flex["headline_result"],
+            ),
+            "intro" => $flex["intro"],
+            "maxPoints" => (int)$flex["maxpoints"],
+            "controls" => array(
+              "print" => $flex["enable_print"] == "1",
+              "pdf" => $flex["enable_pdf"] == "1",
+            ),
+            "labels" => array(
+              "nextbutton" => $flex["label_nextbutton"],
+              "lastbutton" => $flex["label_lastbutton"],
+              "print" => $flex["label_print"],
+              "pdf" => $flex["label_pdf"],
+            ),
+            "items" => $items,
+          )
+        );
+        $subs[] = $elements;
+        $processedData["status"]["hasChecklist"] = true;
+        break;
+      case "mrm_be_cm_checklist-radiorange":
+        $items = array();
+        $dynContentCounter = 0;
+        while (true) {
+          $dynContentCounter++;
+          if (!isset($flex["pointsFrom" . $dynContentCounter])) break;
+          if ($flex["pointsFrom" . $dynContentCounter] === "") continue;
+          $item = array(
+            "pointsFrom" => (int)$flex["pointsFrom" . $dynContentCounter],
+            "pointsTo" => (int)$flex["pointsTo" . $dynContentCounter],
+            "validationText" => $flex["validationText" . $dynContentCounter]
+          );
+          if ($flex["image" . $dynContentCounter] == 1) {
+            $images = $this->processImagesTTContent($dbReference, 'mrm_be_cm_checklist-radiorange', 'tt_content', 'flex_image_' . $dynContentCounter, 'uid', false, true);
+            $images = $images[0];
+            $images["src"] = $images["sources"]["img"];
+            unset($images["sources"]);
+            $item["img"] = $images;
+          }
+          $items[] = $item;
+        }
+        $elements = $this->createContentElement(
+          "checklist-radiorange",
+          array(
+            "headlines" => array(
+              "main" => $flex["headline_main"],
+            ),
+            "intro" => $flex["intro"],
+            "validation" => array(
+              "maxPoints" => (int)$flex["maxpoints"],
+              "items" => $items,
+            )
+          )
+        );
+        $subs[] = $elements;
+        $processedData["status"]["hasChecklist"] = true;
+        break;
+      case "mrm_be_cm_checklist-yesmaybeno":
+        $items = array();
+        foreach ($flex["dynamicComponents"] as $component) {
+          foreach ($component as $key => $value) {
+            $item = array(
+              "heading" => $value["headline"],
+              "text" => $value["text"]
+            );
+          }
+          if ($item) {
+            $items[] = $item;
+          }
+          unset($value);
+        }
+        $choices = array();
+        $choice_yes = array(
+          "label" => $flex["choice_value_yes"],
+          "value" => "yes"
+        );
+        $choice_maybe = array(
+          "label" => $flex["choice_value_maybe"],
+          "value" => "maybe"
+        );
+        $choice_no = array(
+          "label" => $flex["choice_value_no"],
+          "value" => "no"
+        );
+        $choices[] = $choice_yes;
+        $choices[] = $choice_maybe;
+        $choices[] = $choice_no;
+        $elements = $this->createContentElement(
+          "checklist-yesmaybeno",
+          array(
+            "headlines" => array(
+              "main" => $flex["headline_main"],
+              "results" => $flex["headline_result"],
+            ),
+            "intro" => $flex["intro"],
+            "controls" => array(
+              "print" => $flex["enable_print"] == "1",
+              "pdf" => $flex["enable_pdf"] == "1",
+            ),
+            "labels" => array(
+              "nextbutton" => $flex["label_nextbutton"],
+              "lastbutton" => $flex["label_lastbutton"],
+              "print" => $flex["label_print"],
+              "pdf" => $flex["label_pdf"],
+            ),
+            "choices" => $choices,
+            "items" => $items,
+          )
+        );
+        $subs[] = $elements;
+        $processedData["status"]["hasChecklist"] = true;
+        break;
+      case "mrm_be_cm_picturechoice":
+        $s = $this->createContentElement(
+          "picturechoice",
+          array(
+            "labels" => array(
+              "startbutton" => $flex["startbuttontext"],
+              "nextbutton" => $flex["nextbuttontext"],
+              "lastbutton" => $flex["lastbuttontext"],
+              "question" => $flex["question"],
+              "repeatbutton" => $flex["repeatbuttontext"],
+            ),
+            "resultscreen" => array(
+              "headingTop" => $flex["resultheadingtop"],
+              "end" => $flex["thanks"]
+            ),
+            "isRestartAble" => $flex["isRestartAble"] == 1 || $flex["isRestartAble"] == "1",
+          ),
+          array(
+            "items" => (function ($flex, $dbReference) {
+              $ret = array();
+              for ($i = 1; $i <= 3; $i++) {
+                $item = array();
+                for ($j = 1; $j <= 5; $j++) {
+                  if ($flex["image" . $i . "_" . $j] == "1") {
+                    $img = $this->processImagesTTContent($dbReference, 'mrm_be_cm_picturechoice', 'tt_content', 'flex_image_' . $i . "_" . $j, 'uid', false, true);
+                    $img = $img[0];
+                    $item[] = array(
+                      "image" => $img,
+                      "points" => (int) $flex["pointsOfImage" . $i . "_" . $j]
+                    );
+                  }
+                }
+                if (sizeof($item) > 0)
+                  $ret[] = $item;
+              }
+              return $ret;
+            })($flex, $dbReference),
+            "validation" => array(
+              "maxPoints" => (int)$flex["maxpoints"],
+              "alreadyReachedPoints" => $this->createContentElement("injection", array("type" => "picturechoice-alreadyReachedPoints")),
+              "items" => array_map(
+                function ($i) {
+                  $i["validationText"] = $this->checkTextForInternalLinks($i["validationText"], $dbReference, $processedData);
+                  $i["pointsFrom"] = (int)$i["pointsFrom"];
+                  $i["pointsTo"] = (int)$i["pointsTo"];
+                  return $i;
+                },
+                array_filter(array_values(array_map(function ($v) {
+                  return $v['settings']['validation'];
+                }, $flex["validations"])), function ($x) {
+                  return $x != null;
+                })
+                //TODO: Core: Error handler (BE): PHP Warning: array_filter() expects parameter 1 (or 2 in another error message) to be array, null given in /var/www/html/typo3conf/ext/mrm_be/Classes/Hooks/TCE/TCEMainHook.php line 830
+              ),
+            ),
+          )
+        );
+        $processedData["injections"][] = "picturechoice-alreadyReachedPoints";
+        $subs[] = $s;
+        $processedData["status"]["hasPicturechoice"] = true;
+        break;
+      case "mrm_be_cm_quiz":
+        $s = $this->createContentElement(
+          "quiz",
+          array(
+            "labels" => array(
+              "startbutton" => $flex["startbuttontext"],
+              "nextbutton" => $flex["nextbuttontext"],
+              "lastbutton" => $flex["lastbuttontext"],
+              "question" => $flex["question"],
+              "repeatbutton" => $flex["repeatbuttontext"],
+            ),
+            "resultscreen" => array(
+              "headingTop" => $flex["resultheadingtop"],
+              "headingSub" => $flex["resultheadingsub"],
+              "validation" => $flex["validationstr"],
+              "end" => $flex["thanks"]
+            ),
+            "isRestartAble" => $flex["isRestartAble"] == 1 || $flex["isRestartAble"] == "1",
+          ),
+          array(
+            "items" => array_values(array_map(function ($v) {
+              $questionType = null;
+              $quest = $v['settings']['question'];
+              if (!isset($quest)) {
+                $quest = $v['settings']['question_multi'];
+                $questionType = "multi";
+              }
+              if (isset($quest["additional_text"]) && $quest["additional_text"] != "") {
+                $quest["text"] = $quest["text"] . " (" . $quest["additional_text"] . ")";
+                unset($quest["additional_text"]);
+              }
+              if ($questionType) $quest["type"] = $questionType;
+              unset($quest["rightanswer"]);
+              $i = 0;
+              $quest["answers"] = array();
+              while (1) {
+                $i++;
+                if (!isset($quest["answertext" . $i])) break;
+                if ($quest["answertext" . $i] === "") continue;
+                $quest["answers"][] = array("text" => $quest["answertext" . $i],  "points" => (int)$quest["answerpoints" . $i]);
+                unset($quest["answertext" . $i]);
+                unset($quest["answerpoints" . $i]);
+              }
+              /* NOTE: DEPRECATED BY SINGLE INPUTS
+              $quest["answers"] = array_map(function($x) {
+                $x = explode("|", $x);
+                $x = array("text" => $x[0], "points" => (int)$x[1]);
+                return $x;
+              }, explode("\n", $quest["answers"]));
+              */
+              return $quest;
+            }, $flex["dynamicComponents"])),
+            "validation" => array(
+              "maxPoints" => (int)$flex["maxpoints"],
+              "averagePoints" => $this->createContentElement("injection", array("type" => "quiz-averagePoints")),
+              "alreadyReachedPoints" => $this->createContentElement("injection", array("type" => "quiz-alreadyReachedPoints")),
+              "items" => array_map(
+                function ($i) {
+                  $i["validationText"] = $this->checkTextForInternalLinks($i["validationText"], $dbReference, $processedData);
+                  return $i;
+                },
+                array_filter(array_values(array_map(function ($v) {
+                  return $v['settings']['validation'];
+                }, $flex["dynamicComponents2"])), function ($x) {
+                  return $x != null;
+                })
+              ),
+            ),
+          )
+        );
+        $processedData["injections"][] = "quiz-averagePoints";
+        $processedData["injections"][] = "quiz-alreadyReachedPoints";
+        $subs[] = $s;
+        $processedData["status"]["hasQuiz"] = true;
+        break;
+      case "mrm_be_cm_animation":
+        $script = $flex["script"];
+        if ($flex["staticfiles"] != "0" && $flex["staticfiles"] != 0) {
+          $imgs = $this->processImagesTTContent($dbReference);
+          foreach ($imgs as $idx => $v) {
+            $script = implode("#cdnurl#/" . $v["sources"]["passthru"], explode("%ASSET_" . ($idx + 1) . "%", $script));
+          }
+        }
+        $subs[] = $this->createContentElement("animation", array("addJQuery" => $flex["addJQuery"] == 1 || $flex["addJQuery"] == "1"), array("script" => $script));
+        $processedData["status"]["hasAnimation"] = true;
+        break;
+      case "mrm_be_cm_injection":
+        $subs[] = $this->createContentElement("injection", array("type" => $flex["text"]));
+        $processedData["injections"][] = $flex["text"];
+        break;
+      case "mrm_be_cm_roof":
+        $subs[] = $this->createContentElement("roof", array(), array("text" => $flex["text"]));
+        break;
+      case "mrm_be_cm_h1":
+        $subs[] = $this->createContentElement("h1", array(), array("text" => $flex["text"]));
+        break;
+      case "mrm_be_cm_h2":
+        $subs[] = $this->createContentElement("h2", array(), array("text" => $flex["text"]));
+        break;
+      case "mrm_be_cm_h3":
+        $subs[] = $this->createContentElement("h3", array(), array("text" => $flex["text"]));
+        break;
+      case "mrm_be_cm_introtext":
+        $text = preg_replace("/\n/", "<br />", $flex["text"]);
+        $subs[] = $this->createContentElement("introtext", array(), array("text" => $text));
+        break;
+      case "mrm_be_cm_button":
+        $href = $this->parseFlexFormLink($flex["button"], $dbReference, $processedData);
+        $buttonType = ($flex['buttonType'] == "0") ? 'button-link' : 'button-scream';
+        $button = $this->createContentElement("button", array('buttonType' => $buttonType), array("text" => $flex["text"], "href" => $href["href"], "target" => $href["target"]));
+        $subs[] = $button;
+        break;
+      case "mrm_be_cm_html":
+        $subs[] = $this->createContentElement("html", array(), array("text" => $flex["html"]));
+        break;
+      case "mrm_be_cm_heroimage":
+        $props = $this->processImagesTTContent($dbReference)[0];
+        $props["type"] = "typo3_hero";
+        $subs[] = $this->createContentElement("image", $props);
+        break;
+      case "mrm_be_cm_contentimage":
+        $props = $this->processImagesTTContent($dbReference)[0];
+        $props["type"] = "typo3_content";
+        $subs[] = $this->createContentElement("image", $props);
+        break;
+      case "mrm_be_cm_publication":
+        $imgprops = $this->processImagesTTContent($dbReference, 'mrm_be_cm_publication')[0];
+        $imgprops["type"] = "typo3_publication";
+        $publication = $this->createContentElement(
+          "publication",
+          array(
+            "starttime" => $this->startOfDay($flex['starttime']),
+            "endtime" => $this->endOfDay($flex['endtime']),
+            "issuekey" => $flex['issuekey'],
+          ),
+          array(
+            "image" => $imgprops,
+            "number" => $flex["issuenumber"],
+            "title" => $flex["issuetitle"],
+            "headline" => $flex["issueheadline"],
+            "link" => $this->parseFlexFormLink($flex["htmllink"], $dbReference, $processedData),
+            "pdf" => $this->parseFlexFormLink($flex["pdflink"], $dbReference, $processedData),
+          )
+        );
+        $subs[] = $publication;
+        break;
+      case "mrm_be_cm_rawimage":
+        $props = $this->processImagesTTContent($dbReference)[0];
+        $props["type"] = "typo3_raw";
+        $subs[] = $this->createContentElement("image", $props);
+        break;
+      case "mrm_be_cm_movingimagesvideo":
+        $subs[] = $this->createContentElement(
+          "movingimagesvideo",
+          array(
+            "hasNoticeForCrossPromotion" => $flex["hasNoticeForCrossPromotion"] == 1,
+            "hasNoticeForAccessibility" => $flex["hasNoticeForAccessibility"] == 1
+          ),
+          array("vid" => $flex["vid"])
+        );
+        break;
+      case "mrm_be_cm_paragraph":
+        $elements = $this->checkText($flex["text"], $dbReference, $processedData, "typo3_paragraph");
+        $subs = array_merge($subs, $elements);
+        break;
+      case "mrm_be_cm_additionalinfobox":
+      case "mrm_be_cm_infobox":
+      case "mrm_be_cm_extra_infosbox":
+
+        $type = null;
+        $open = null;
+        $noAutoOpen = null;
+        if ($dbReference['CType'] == "mrm_be_cm_additionalinfobox") $type = "typo3_additionalinfobox";
+        elseif ($dbReference['CType'] == "mrm_be_cm_infobox") $type = "typo3_infobox";
+        else $type = "typo3_extrainfosbox";
+
+        if ($dbReference['CType'] == "mrm_be_cm_additionalinfobox" || $dbReference['CType'] == "mrm_me_cm_extra_infosbox") $open = true;
+        else $open = $flex["isInitialyOpen"] == "1";
+
+        if ($dbReference['CType'] == "mrm_be_cm_additionalinfobox" || $dbReference['CType'] == "mrm_be_cm_infobox") $headline = $flex["headline"];
+        elseif ($dbReference['CType'] == "mrm_be_cm_extra_infosbox") $headline = '';
+        $this->log('Headline: ' . $headline, true);
+
+        $sub = $this->createContentElement(
+          $type,
+          array("open" => $open, "noAutoOpen" => $flex["noAutoOpen"] == 1),
+          array("headline" => $flex["headline"])
+        );
+
+        if ($flex["image"] == "1") {
+          $props = $this->processImagesTTContent($dbReference, "mrm_be_cm_contentimage")[0];
+          $props["type"] = "typo3_content";
+          $sub["subElements"][] = $this->createContentElement("image", $props);
+        } else {
+          switch ($flex["icon"]) {
+            case "1":
+              $sub["attributes"]["icon"] = "stadtinfo_basics";
+              break;
+            case "2":
+              $sub["attributes"]["icon"] = "geschichte";
+              break;
+            case "3":
+              $sub["attributes"]["icon"] = "kultur_freizeit";
+              break;
+            case "4":
+              $sub["attributes"]["icon"] = "besonderheiten";
+              break;
+            case "5":
+              $sub["attributes"]["icon"] = "kosten_geld";
+              break;
+            case "6":
+              $sub["attributes"]["icon"] = "hochschulen";
+              break;
+            case "7":
+              $sub["attributes"]["icon"] = "studieren";
+              break;
+          }
+        }
+
+        if ($flex["dynamicComponents"] && sizeof($flex["dynamicComponents"]) > 0)
+          foreach ($flex["dynamicComponents"] as $comp) {
+            $stype = array_keys($comp['settings'])[0];
+            $elements = [];
+            switch ($stype) {
+              case "box":
+                $box = $this->createContentElement("boxwrapper");
+                $box["subElements"] = array_merge($box["subElements"], $this->checkText($comp['settings']['box']['boxheadline'], $dbReference, $processedData, "h3"));
+                $box["subElements"] = array_merge($box["subElements"], $this->checkText($comp['settings']['box']['boxtext'], $dbReference, $processedData, "typo3_paragraph"));
+                $elements = [$box];
+                break;
+              case "boxheadline":
+                $elements = $this->checkText($comp['settings'][$stype][$stype], $dbReference, $processedData, "h3");
+                //$this->log($elements, false);
+                break;
+              case "boxtext":
+                $elements = $this->checkText($comp['settings'][$stype][$stype], $dbReference, $processedData, "typo3_paragraph");
+                break;
+              case "html":
+                $elements = $this->checkText($comp['settings'][$stype][$stype], $dbReference, $processedData, "html");
+                break;
+            }
+            $sub["subElements"] = array_merge($sub["subElements"], $elements);
+            $this->log($sub["subElements"], false);
+          }
+        $subs[] = $sub;
+        break;
+      case "mrm_be_cm_foldout":
+        $sub = $this->createContentElement("typo3_foldout", array("open" => $flex["isInitialyOpen"] == "1", "noAutoOpen" => $flex["noAutoOpen"] == "1"), array("headline" => $flex["headline"]), array());
+
+        if ($flex["image"] == "1") {
+          $props = $this->processImagesTTContent($dbReference, "mrm_be_cm_contentimage")[0];
+          $props["type"] = "typo3_content";
+          $sub["subElements"][] = $this->createContentElement("image", $props);
+        } else {
+          switch ($flex["icon"]) {
+            case "1":
+              $sub["attributes"]["icon"] = "stadtinfo_basics";
+              break;
+            case "2":
+              $sub["attributes"]["icon"] = "geschichte";
+              break;
+            case "3":
+              $sub["attributes"]["icon"] = "kultur_freizeit";
+              break;
+            case "4":
+              $sub["attributes"]["icon"] = "besonderheiten";
+              break;
+            case "5":
+              $sub["attributes"]["icon"] = "kosten_geld";
+              break;
+            case "6":
+              $sub["attributes"]["icon"] = "hochschulen";
+              break;
+            case "7":
+              $sub["attributes"]["icon"] = "studieren";
+              break;
+          }
+        }
+
+        if ($flex["dynamicComponents"] && sizeof($flex["dynamicComponents"]) > 0)
+          foreach ($flex["dynamicComponents"] as $comp) {
+            $stype = array_keys($comp['settings'])[0];
+            $elements = $this->checkText($comp['settings'][$stype][$stype], $dbReference, $processedData, $stype == "paragraph" ? "typo3_paragraph" : ($stype == "headline" ? "h3" : $stype));
+            $sub["subElements"] = array_merge($sub["subElements"], $elements);
+          }
+        $subs[] = $sub;
+        break;
+      case "mrm_be_cm_newsletterabo":
+        $newsletterabo = $this->createContentElement("newsletterabo", array("cr_url" => $flex["cr_url"], "cr_url_BIZ" => $flex["cr_url_BIZ"]));
+        $subs[] = $newsletterabo;
+        break;
+      case "mrm_be_cm_linkage":
+        $subs[] = $this->createContentElement("sidebarheadline", array(), array("text" => $flex['headline']));
+        $banners = $this->createContentElement("sidebarbanners");
+        if ($flex['dynamicComponents'] && sizeof($flex['dynamicComponents']) > 0)
+          foreach ($flex['dynamicComponents'] as $banner) {
+            $banners["subElements"][] = $this->createContentElement("banner", $this->parseFlexFormLink($banner["settings"]["link"]["link"], $dbReference, $processedData));
+          }
+        $subs[] = $banners;
+        $subs[] = $this->createContentElement("injection", array("type" => "rubrik_content"));
+        $processedData["injections"][] = "rubrik_content";
+
+        $berufenet = $this->createContentElement("sidebarexternallinks", array("type" => "berufenet"), array("items" => []));
+        if ($flex['dynamicComponentsBerufeNet'] && sizeof($flex['dynamicComponentsBerufeNet']) != 0)
+          foreach ($flex['dynamicComponentsBerufeNet'] as $itm) {
+            $link = $this->parseFlexFormLink($itm["settings"]["link"]["link"], $dbReference, $processedData);
+            $link = '<a href="' . $link['href'] . '" target="' . $link['target'] . '" aria-label="Externer Link">' . $link['alt'] . '</a>';
+            $berufenet["attributes"]["items"][] = $link;
+          }
+        if (sizeof($berufenet["attributes"]["items"]) > 0) $subs[] = $berufenet;
+
+        $berufetv = $this->createContentElement("sidebarexternallinks", array("type" => "berufetv"), array("items" => []));
+        if ($flex['dynamicComponentsBerufeTV'] && sizeof($flex['dynamicComponentsBerufeTV']) != 0)
+          foreach ($flex['dynamicComponentsBerufeTV'] as $itm) {
+            $link = $this->parseFlexFormLink($itm["settings"]["link"]["link"], $dbReference, $processedData);
+            $link = '<a href="' . $link['href'] . '" target="' . $link['target'] . '" aria-label="Externer Link">' . $link['alt'] . '</a>';
+            $berufetv["attributes"]["items"][] = $link;
+          }
+        if (sizeof($berufetv["attributes"]["items"]) > 0) $subs[] = $berufetv;
+
+        $berufsausbildung = $this->createContentElement("sidebarexternallinks", array("type" => "berufsausbildung"), array("items" => []));
+        if ($flex['dynamicComponentsBerufsausbildung'] && sizeof($flex['dynamicComponentsBerufsausbildung']) != 0)
+          foreach ($flex['dynamicComponentsBerufsausbildung'] as $itm) {
+            $link = $this->parseFlexFormLink($itm["settings"]["link"]["link"], $dbReference, $processedData);
+            $link = '<a href="' . $link['href'] . '" target="' . $link['target'] . '" aria-label="Externer Link">' . $link['alt'] . '</a>';
+            $berufsausbildung["attributes"]["items"][] = $link;
+          }
+        if (sizeof($berufsausbildung["attributes"]["items"]) > 0) $subs[] = $berufsausbildung;
+
+        $ba_search = $this->createContentElement("sidebarexternallinks", array("type" => "ba_search"), array("items" => []));
+        if ($flex['dynamicComponentsBASearch'] && sizeof($flex['dynamicComponentsBASearch']) != 0)
+          foreach ($flex['dynamicComponentsBASearch'] as $itm) {
+            $link = $this->parseFlexFormLink($itm["settings"]["link"]["link"], $dbReference, $processedData);
+            $link = '<a href="' . $link['href'] . '" target="' . $link['target'] . '" aria-label="Externer Link">' . $link['alt'] . '</a>';
+            $ba_search["attributes"]["items"][] = $link;
+          }
+        if (sizeof($ba_search["attributes"]["items"]) > 0) $subs[] = $ba_search;
+
+        $studienwahl = $this->createContentElement("sidebarexternallinks", array("type" => "studienwahl"), array("items" => []));
+        if ($flex['dynamicComponentsStudienwahl'] && sizeof($flex['dynamicComponentsStudienwahl']) != 0)
+          foreach ($flex['dynamicComponentsStudienwahl'] as $itm) {
+            $link = $this->parseFlexFormLink($itm["settings"]["link"]["link"], $dbReference, $processedData);
+            $link = '<a href="' . $link['href'] . '" target="' . $link['target'] . '" aria-label="Externer Link">' . $link['alt'] . '</a>';
+            $studienwahl["attributes"]["items"][] = $link;
+          }
+        if (sizeof($studienwahl["attributes"]["items"]) > 0) $subs[] = $studienwahl;
+
+        if ($flex['enable_check_u']) {
+          $check_u = $this->createContentElement("extimgbutton", array("ariaLabel" => "Zur Check-U-Website", "href" => "https://www.arbeitsagentur.de/bildung/welche-ausbildung-welches-studium-passt", "target" => "_blank"), array("imgsrc" => "/public/media/ext-link_check_u.png"));
+          $subs[] = $check_u;
+        }
+
+        if ($flex['enable_studiencheck']) {
+          $studiencheck = $this->createContentElement("extimgbutton", array("ariaLabel" => "Zur Studiencheck-Website", "href" => "https://studiencheck.de/", "target" => "_blank"), array("imgsrc" => "/public/media/ext-link_studiencheck.png"));
+          $subs[] = $studiencheck;
+        }
+
+        break;
+      case "mrm_be_cm_homeheaderinfo":
+        $items = array();
+        for ($i = 1; $i <= 3; $i++) {
+          if ($flex["headline" . $i] != "" && $flex["text" . $i] != "") {
+            $item = array("heading" => $flex["headline" . $i], "text" => $flex["text" . $i]);
+            if ($flex["link" . $i] != "") {
+              $link = $this->parseFlexFormLink($flex["link" . $i], $dbReference, $processedData);
+              $item["href"] = $link["href"];
+              $item["linkTarget"] = $link["target"];
+            }
+            if ($flex["image" . $i] == "1") {
+              $imgs = $this->processImagesTTContent($dbReference, 'mrm_be_cm_homeheaderinfo', 'tt_content', 'flex_image_' . $i, 'uid', false);
+              $item["image"] = "#cdnurl#/" . $imgs[0]["sources"][$flex["imagesize" . $i]];
+            }
+            $items[] = $item;
+          }
+        }
+        $subs[] = $this->createContentElement("abimessages", array("data" => $items));
+        break;
+      case "mrm_be_cm_tileoverview":
+        $items = array();
+        for ($i = 1; $i <= 8; $i++) {
+          if ($flex["link" . $i] == "") continue;
+          $item = array();
+          $link = $this->parseFlexFormLink($flex["link" . $i], $dbReference, $processedData);
+          $item["href"] = $link["href"];
+          $item["linkTarget"] = $link["target"];
+          $item["text"] = $link["alt"];
+          if ($flex["image" . $i] == "1") {
+            $imgs = $this->processImagesTTContent($dbReference, 'mrm_be_cm_tileoverview', 'tt_content', 'flex_image_' . $i, 'uid', false);
+            $item["image"] = "#cdnurl#/" . $imgs[0]["sources"]["default_hero_lte600"];
+          }
+          $items[] = $item;
+        }
+        $subs[] = $this->createContentElement("tileoverview", array("items" => $items));
+        break;
+      case "mrm_be_cm_highlightbox":
+        $elements = $this->checkText($flex["text"], $dbReference, $processedData, "typo3_paragraph");
+        $subs[] = $this->createContentElement("highlightbox", array("icon" => $flex["icon"]), array(), $elements);
+        break;
+      case "mrm_be_cm_statementbox":
+        $items = array();
+        $dynContentCounter = 0;
+        while (1) {
+          $dynContentCounter++;
+          if (!isset($flex['text' . $dynContentCounter])) break;
+          if ($flex['text' . $dynContentCounter] === '' || $flex['name' . $dynContentCounter] === '') continue;
+          $item = array(
+            'quote' => $flex['text' . $dynContentCounter],
+            'cite' => $flex['name' . $dynContentCounter]
+          );
+          if ($flex['image' . $dynContentCounter] == 1) {
+            $imgs = $this->processImagesTTContent($dbReference, 'mrm_be_cm_statementbox', 'tt_content', 'flex_image_' . $dynContentCounter, 'uid', false);
+            $imgs = $imgs[0];
+            $imgs['src'] = "#cdnurl#/" . $imgs['sources']['img'];
+            unset($imgs['sources']);
+            $item['img'] = $imgs;
+          }
+          $items[] = $item;
+        }
+        $subs[] = $this->createContentElement('statementbox', array('items' => $items));
+        break;
+      case "mrm_be_cm_explorerbox":
+        $items = array();
+        $dynContentCounter = 0;
+        while (1) {
+          $dynContentCounter++;
+          if (!isset($flex['head' . $dynContentCounter])) break;
+          if ($flex['head' . $dynContentCounter] === '' || $flex['claim' . $dynContentCounter] === '' || $flex['image' . $dynContentCounter] == 0) continue;
+          $item = array(
+            'heading' => $flex['head' . $dynContentCounter],
+            'subheading' => $flex['claim' . $dynContentCounter],
+            'text' => $flex['text' . $dynContentCounter]
+          );
+          if ($flex['image' . $dynContentCounter] == 1) {
+            $imgs = $this->processImagesTTContent($dbReference, 'mrm_be_cm_explorerbox', 'tt_content', 'flex_image_' . $dynContentCounter, 'uid', false);
+            $imgs = $imgs[0];
+            $imgs['src'] = "#cdnurl#/" . $imgs['sources']['img'];
+            unset($imgs['sources']);
+            $item['img'] = $imgs;
+          }
+          if ($flex['link' . $dynContentCounter] !== '') {
+            $button = $this->parseFlexFormLink($flex['link' . $dynContentCounter], $dbReference, $processedData);
+            $item['button'] = $button;
+          }
+          $items[] = $item;
+        }
+        $subs[] = $this->createContentElement('explorerbox', array('items' => $items));
+        break;
+      case "mrm_be_cm_dynamic_tileoverview":
+        $items = array();
+        foreach ($flex["dynamicComponents"] as $comp) {
+          foreach ($comp as $k => $v) {
+            $itm = null;
+            switch ($k) {
+              case "links":
+                $lnk = $this->parseFlexFormLink($v["link"], $dbReference, $processedData);
+                $itm = $this->createContentElement("tile_default", array("link" => $lnk, "coloured" => $v["coloured"] == 1, "allowed" => preg_split('/\+/', $v["type"]), "format" => $v["format"]));
+                if ($lnk["alt"]) $itm["props"]["headline"] = $lnk["alt"];
+                break;
+              case "buttons":
+                $itm = $this->createContentElement(
+                  "tile_content",
+                  array(
+                    "headline" => $v["headline"],
+                    "content" => $this->checkTextForInternalLinks($v["buttons"], $dbReference, $processedData)
+                  )
+                );
+                break;
+              case "icons":
+                $lnk = $this->parseFlexFormLink($v["link"], $dbReference, $processedData);
+                $itm = $this->createContentElement("tile_icon", array("link" => $lnk, "icon" => $v["icon"]), array());
+                if ($lnk["alt"]) $itm["props"]["headline"] = $lnk["alt"];
+                break;
+              case "flat":
+                $lnk = $this->parseFlexFormLink($v["link"], $dbReference, $processedData);
+                $itm = $this->createContentElement("tile_flat", array("link" => $lnk));
+                if ($lnk["alt"]) $itm["props"]["headline"] = $lnk["alt"];
+                break;
+              case "injections":
+                $itm = $this->createContentElement("injection", array("type" => $v["text"]));
+                $processedData["injections"][] = $v["text"];
+                break;
+            }
+            if ($itm)
+              $items[] = $itm;
+          }
+        }
+        $dto = $this->createContentElement('dynamic_tileoverview', array(), array(), $items);
+        if ($flex["cssClass"] && $flex["cssClass"] !== "")
+          $dto["attributes"]["cssClassName"] = $flex["cssClass"];
+        $subs[] = $dto;
+        $processedData["status"]["hasDynamicTileOverview"] = true;
+        break;
+      case "mrm_be_cm_podcast":
+        //$items = array();
+        if ($flex['media'] == "1")
+          $media = $this->processAudio($dbReference, 'mrm_be_cm_podcast', 'tt_content', 'media', 'uid', true, true);
+
+        if ($flex['transcript'])
+          $transcript = $flex['transcript'];
+        $subs[] = $this->createContentElement('podcast', array(), array('media' => $media, 'transcript' => $transcript));
+        break;
+      case "mrm_be_cm_imageplus":
+        $props = $this->processImagesTTContent($dbReference)[0];
+        $props["type"] = "imageplus";
+        $props["headline"] = $flex['headline'] ?? '';
+        $props["description"] = $flex['description'] ?? '';
+        $props["link"] = $this->parseFlexFormLink($flex["link"], $dbReference, $processedData);
+        $props["customcss"] = $flex['customcss'] ?? '';
+        $subs[] = $this->createContentElement('imageplus', $props);
+        break;
+      case "mrm_be_cm_interviewfrage":
+        $props['lang'] = $flex['lang'] ?? '';
+        $subs[] = $this->createContentElement("interviewfrage", $props, array("question" => trim($flex['question'])));
+        break;
+
+      case "mrm_be_cm_interviewantwort":
+        $props['lang'] = $flex['lang'] ?? '';
+        $subs[] = $this->createContentElement("interviewantwort", $props, array("interviewee" => trim($flex['interviewee']),"answer" => trim($flex['answer'])));
+        break;
+
+        case "mrm_be_cm_foldout_h3":
+          $sub = $this->createContentElement("typo3_foldout_h3", array("open" => $flex["isInitialyOpen"] == "1", "noAutoOpen" => $flex["noAutoOpen"] == "1"), array("headline" => $flex["headline"]), array());
+  
+          if ($flex["image"] == "1") {
+            $props = $this->processImagesTTContent($dbReference, "mrm_be_cm_contentimage")[0];
+            $props["type"] = "typo3_content";
+            $sub["subElements"][] = $this->createContentElement("image", $props);
+          } else {
+            switch ($flex["icon"]) {
+              case "1":
+                $sub["attributes"]["icon"] = "stadtinfo_basics";
+                break;
+              case "2":
+                $sub["attributes"]["icon"] = "geschichte";
+                break;
+              case "3":
+                $sub["attributes"]["icon"] = "kultur_freizeit";
+                break;
+              case "4":
+                $sub["attributes"]["icon"] = "besonderheiten";
+                break;
+              case "5":
+                $sub["attributes"]["icon"] = "kosten_geld";
+                break;
+              case "6":
+                $sub["attributes"]["icon"] = "hochschulen";
+                break;
+              case "7":
+                $sub["attributes"]["icon"] = "studieren";
+                break;
+            }
+          }
+  
+          if ($flex["dynamicComponents"] && sizeof($flex["dynamicComponents"]) > 0)
+            foreach ($flex["dynamicComponents"] as $comp) {
+              $stype = array_keys($comp['settings'])[0];
+              $elements = $this->checkText($comp['settings'][$stype][$stype], $dbReference, $processedData, $stype == "paragraph" ? "typo3_paragraph" : ($stype == "headline" ? "h4" : $stype));
+              $sub["subElements"] = array_merge($sub["subElements"], $elements);
+            }
+          $subs[] = $sub;
+          break;
+          case "mrm_be_cm_quiz_direct":
+            //print_r($flex); die();
+            $s = $this->createContentElement(
+              "quizdirect",
+              array(
+                "labels" => array(
+                  "startbutton" => $flex["startbuttontext"],
+                  "submitbutton" => $flex["submitbuttontext"],
+                  "nextbutton" => $flex["nextbuttontext"],
+                  "lastbutton" => $flex["lastbuttontext"],
+                  "question" => $flex["question"],
+                  "repeatbutton" => $flex["repeatbuttontext"],
+                  "qsuccess" => $flex["questionsuccesstext"],
+                  "qfail" => $flex["questionfailtext"],
+                ),
+                "resultscreen" => array(
+                  "headingTop" => $flex["resultheadingtop"],
+                  "headingSub" => $flex["resultheadingsub"],
+                  "validation" => $flex["validationstr"],
+                  "end" => $flex["thanks"]
+                ),
+                "isRestartAble" => $flex["isRestartAble"] == 1 || $flex["isRestartAble"] == "1",
+              ),
+              array(
+                "items" => array_values(array_map(function ($v) {
+                  $questionType = null;
+                  $quest = $v['settings']['question'];
+                  if (!isset($quest)) {
+                    $quest = $v['settings']['question_multi'];
+                    $questionType = "multi";
+                  }
+                  if (isset($quest["additional_text"]) && $quest["additional_text"] != "") {
+                    $quest["text"] = $quest["text"] . " (" . $quest["additional_text"] . ")";
+                    unset($quest["additional_text"]);
+                  }
+                  if ($questionType) $quest["type"] = $questionType;
+                  unset($quest["rightanswer"]);
+                  if(isset($quest['solutionText'])) $solution = $quest['solutionText'];
+                  unset($quest['solutionText']);
+                  $i = 0;
+                  $quest["answers"] = array();
+                  while (1) {
+                    $i++;
+                    if (!isset($quest["answertext" . $i])) break;
+                    if ($quest["answertext" . $i] === "") continue;
+                    $quest["answers"][] = array("text" => $quest["answertext" . $i],  "points" => (int)$quest["answerpoints" . $i]);
+                    unset($quest["answertext" . $i]);
+                    unset($quest["answerpoints" . $i]);
+                  }
+                  $quest["solution"] = $solution;
+
+                  return $quest;
+                }, $flex["dynamicComponents"])),
+
+                "validation" => array(
+                  "maxPoints" => (int)$flex["maxpoints"],
+                  "averagePoints" => $this->createContentElement("injection", array("type" => "quiz-averagePoints")),
+                  "alreadyReachedPoints" => $this->createContentElement("injection", array("type" => "quiz-alreadyReachedPoints")),
+
+                  "items" => ($flex["dynamicComponents2"] == 0) ? [] : array_map(
+                    function ($i) {
+                      if(empty($i["validationText"]))  $i["validationText"] = "";
+                      else $i["validationText"] = $this->checkTextForInternalLinks($i["validationText"], $dbReference, $processedData);
+                      return $i;
+                    },
+                    array_filter(array_values(array_map(function ($v) {
+                      return $v['settings']['validation'];
+                    }, $flex["dynamicComponents2"])), function ($x) {
+                      return $x != null;
+                    })
+                  ),
+                  
+                ),
+              )
+            );
+            $processedData["injections"][] = "quiz-averagePoints";
+            $processedData["injections"][] = "quiz-alreadyReachedPoints";
+            $subs[] = $s;
+            $processedData["status"]["hasQuiz"] = true;
+            break;
+
+      default:
+        $this->log("MISSING PROCESSDATA 4 " . $dbReference['CType']);
+        $this->log($flex, false);
+        break;
+    }
+  }
+
+  private function checkText($txt, $dbReference, &$processedData, $defaultElementType = "typo3_paragraph")
+  {
+    $txt = $this->checkTextForInternalLinks($txt, $dbReference, $processedData);
+    $txt = $this->refactorTextElements($txt, $defaultElementType);
+    return $txt;
+  }
+
+  private function refactorTextElements($txt, $defaultElementType)
+  {
+    if (strpos($txt, "<table") === FALSE) return [$this->createContentElement($defaultElementType, array(), array("text" => $txt))];
+    $elements = [];
+    while (($tablepos = strpos($txt, "<table")) !== FALSE) {
+      if ($tablepos != 0) {
+        //$this->log(trim(substr($txt, 0, $tablepos)));
+        $elements[] = $this->createContentElement($defaultElementType, array(), array("text" => trim(substr($txt, 0, $tablepos))));
+        $txt = substr($txt, $tablepos);
+      }
+      $tablepos = strpos($txt, "</table>") + 8;
+      $dom = new \DOMDocument();
+      @$dom->loadHTML('<?xml encoding="utf-8" ?><div id="sexy">' . trim(substr($txt, 0, $tablepos)) . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
+      $tab = $this->createContentElement("table", array("rows" => array(), "columnCount" => 0));
+      foreach ($dom->getElementsByTagName('tr') as $tr) {
+        $par = $tr->parentNode;
+        $row = [];
+        if ($tab["props"]["columnCount"] == 0) {
+          foreach ($tr->childNodes as $e) {
+            if ($e->tagName == "td" ||  $e->tagName == "th") {
+              $tab["props"]["columnCount"]++;
+            }
+          }
+        }
+        foreach ($tr->childNodes as $e) {
+          if ($e->tagName != "td" && $e->tagName != "th") continue;
+          $innerHTML = '';
+          foreach ($e->childNodes as $n) $innerHTML .= $dom->saveHtml($n);
+          $row[] = array(
+            "html" => "<p>" . $innerHTML . "</p>",
+            "isHeader" => $par->tagName == "thead",
+            "isRowHeader" => $e->tagName == "th" && $par->tagName != "thead",
+          );
+        }
+        $tab["props"]["rows"][] = $row;
+      }
+      $elements[] = $tab;
+
+      $txt = substr($txt, $tablepos);
+    }
+    $txt = trim($txt);
+    if ($txt != "")
+      $elements[] = $this->createContentElement($defaultElementType, array(), array("text" => $txt));
+
+    return $elements;
+  }
+
+  private function checkTextForInternalLinks($txt, $dbReference, &$processedData)
+  {
+    $dom = new \DOMDocument();
+    @$dom->loadHTML('<?xml encoding="utf-8" ?><div id="sexy">' . $txt . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
+    foreach ($dom->getElementsByTagName('a') as $link) {
+      $emptyHref = false;
+      $title = null;
+      $alt = null;
+      $href = null;
+      for ($i = 0; $i < $link->attributes->length; ++$i) {
+        $node = $link->attributes->item($i);
+        if ($node->nodeName == "href" && strpos($node->nodeValue, 'smartadserver.com') === FALSE) {
+          $nv = $node->nodeValue;
+          $nv = str_replace('&amp;', '&', $nv);
+          $href = $this->replaceT3Link($nv, $dbReference, $processedData);
+          $node->nodeValue = htmlspecialchars($href);
+          if ($node->nodeValue == '') $emptyHref = true;
+        }
+        if ($node->nodeName == "title" && $node->nodeValue != '') $title = $node->nodeValue;
+        if ($node->nodeName == "alt" && $node->nodeValue != '') $alt = $node->nodeValue;
+      }
+      if ($emptyHref) $link->removeAttribute('href');
+      else {
+        if (!$alt) {
+          //check for pdf files (AS-337)
+          if (strtolower(pathinfo($href, PATHINFO_EXTENSION)) == "pdf") {
+            $alt = "PDF-Download (öffnet sich in neuem Fenster)";
+            $link->setAttribute('target', '_blank');
+            $link->setAttribute('alt', $alt);
+          }
+        }
+      }
+      if ($title && !$alt) $link->setAttribute('alt', $title);
+      if ($title) $link->removeAttribute('title');
+    }
+
+    $txt = $dom->saveHTML($dom->getElementById('sexy'));
+    $txt = str_replace('<div id="sexy">', '', $txt);
+    $txt = substr($txt, 0, -6);
+    return trim($txt);
+  }
+
+  private function parseFlexFormLink($link, $dbReference, &$processedData)
+  {
+    $link = implode("/", explode("\/", $link));
+    [$href, $target, $css] = explode(" ", $link);
+    $alt = substr($link, strlen($href . $target . $css) + 3);
+    $alt = preg_replace('/&quot;/', '', trim($alt, " \""));
+    if ($href == "-") return null;
+    $href = $this->replaceT3Link($href, $dbReference, $processedData, true);
+    $ret = array("href" => $href);
+    if (!$target || $target == "-") $ret["target"] = "_top";
+    else $ret["target"] = $target;
+    if ($alt && $alt != "-") $ret["alt"] = $alt;
+    return $ret;
+  }
+
+  private function replaceT3Link($link, $dbReference, &$processedData, $addToLinkedPosts = false)
+  {
+    $uid = $this->parseUIDFromT3Url($link);
+    if (!$uid || $uid == '') return $link;
+    if (strpos($link, 't3://page?') !== false) {
+      if ($uid == "current") {
+        $link = str_replace('t3://page?uid=current', '', $link);
+      } else {
+        if ($addToLinkedPosts) {
+          $processedData['linkedPosts'][] = (int)$uid;
+          $link = "#linkedPost#" . $uid . "#/linkedPost#";
+        } else {
+          $pageStatement = $this->pageQueryBuilder
+            ->select('*')
+            ->from('pages')
+            ->setMaxResults(1)
+            ->where(
+              $this->pageQueryBuilder->expr()->eq('uid', $this->pageQueryBuilder->createNamedParameter($uid))
+            )
+            ->execute();
+
+          $post = $pageStatement->fetchAll();
+          $post = $post[0];
+          $link = $post['slug'];
+        }
+      }
+    }
+
+    if (strpos($link, 't3://file?') !== false)
+      $link = $this->setStaticFile($dbReference, $uid);
+
+    return $link;
+  }
+
+  private function setStaticFile($dbReference, $uid, $publicUrl = null)
+  {
+    $fnNameRef = $dbReference['pid'] . "|" . $dbReference['uid'] . "|" . $dbReference['CType'] . "|file|" . $uid;
+    if (!$publicUrl) {
+      $file = $this->resourceFactory->getFileObject($uid);
+      $publicUrl = $file->getPublicUrl();
+    }
+    try {
+      $fnName = basename($publicUrl);
+      $fnName = explode(".", $fnName);
+      $extension = array_pop($fnName);
+      $fnName = implode(".", $fnName);
+    } catch (Exception $e) {
+      $fnName = null;
+    }
+    return "#cdnurl#/" . $this->copyAndRenameFile($fnNameRef, "/" . $publicUrl, $fnName);
+  }
+
+  private function parseUIDFromT3Url($t3url)
+  {
+    $uid = null;
+    if ($t3url && $t3url != '' && substr($t3url, 0, 2) == "t3")
+      try {
+        parse_str(parse_url($t3url)['query'], $query);
+        $uid = $query['uid'];
+      } catch (Exception $e) {
+      }
+
+    return $uid;
+  }
+
+  private function createContentElement($type, $props = null, $attributes = null, $subElements = null)
+  {
+    if (is_null($props)) $props = array();
+    if (is_null($attributes)) $attributes = (object) array();
+    $props["__hbs_uid"] = '_ab' . mt_rand(0, 0xffffff) . '_' . mt_rand(0, 0xffffff);
+    $ele = array(
+      'type' => $type,
+      'props' => $props,
+      'attributes' => $attributes,
+    );
+    if (!is_null($subElements)) $ele['subElements'] = $subElements;
+    else $ele['subElements'] = [];
+    return $ele;
+  }
+
+  private function processVideo($dbReference)
+  {
+    $data = $this->resourceFactory->convertFlexFormDataToConfigurationArray($dbReference['pi_flexform']);
+    $vids = array();
+
+    foreach ($data['settings']['video'] as $value) {
+      if ($value['posterConfiguration'] && $value['posterConfiguration'] != '') $vids['poster'] = $value['posterConfiguration']['image'];
+      if ($value['mp4Configuration'] && $value['mp4Configuration'] != '') $vids['mp4'] = $value['mp4Configuration']['video'];
+      if ($value['ogvConfiguration'] && $value['ogvConfiguration'] != '') $vids['ogv'] = $value['ogvConfiguration']['video'];
+      if ($value['webmConfiguration'] && $value['webmConfiguration'] != '') $vids['webm'] = $value['webmConfiguration']['video'];
+      if ($value['threegpConfiguration'] && $value['threegpConfiguration'] != '') $vids['3gp'] = $value['threegpConfiguration']['video'];
+    }
+
+    foreach ($vids as $key => &$value) {
+      $value = "/" . $value;
+      $fnNameRef = $dbReference['pid'] . "|" . $dbReference['uid'] . "|" . $dbReference['CType'] . "|" . $key;
+      $value = $this->copyAndRenameFile($fnNameRef, $value);
+    }
+    return $vids;
+  }
+
+  private function processImagesTTContent($dbReference, $ctypeOverride = '', $table = 'tt_content', $tableColumn = 'image', $refField = 'uid', $useRelationFetch = true, $addCDNPrefix = false)
+  {
+    if ($useRelationFetch)
+      $fileObjects = $this->fileRepository->findByRelation($table, $tableColumn, $dbReference[$refField]);
+    else {
+      $sysfilerefQueryBuilder = $this->connection->getQueryBuilderForTable('sys_file_reference');
+      $sysfileStatement = $sysfilerefQueryBuilder
+        ->select('uid')
+        ->from('sys_file_reference')
+        ->andWhere(
+          $sysfilerefQueryBuilder->expr()->eq('uid_foreign', intval($dbReference[$refField])),
+          $sysfilerefQueryBuilder->expr()->eq('tablenames', $sysfilerefQueryBuilder->createNamedParameter($table)),
+          $sysfilerefQueryBuilder->expr()->eq('fieldname', $sysfilerefQueryBuilder->createNamedParameter($tableColumn)),
+        )
+        ->execute();
+
+      $frows = $sysfileStatement->fetchAll();
+      foreach ($frows as $fileuid) {
+        $fileObjects[] = $this->fileRepository->findFileReferenceByUid(intval($fileuid['uid']));
+      }
+    }
+    $processedImages = array();
+
+    $ctypeOverride = $ctypeOverride != '' ? $ctypeOverride : $dbReference['CType'];
+
+    foreach ($fileObjects as $key => $value) {
+      $img = array(
+        'reference' => $value->getReferenceProperties(),
+        'original' => $value->getOriginalFile()->getProperties(),
+      );
+
+      $imgfn = rtrim($img['original']['identifier'], "/");
+      $image = $this->imageService->getImage('fileadmin/' . $imgfn, null, false);
+      $cropvariantcollection = \TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection::create($img['reference']['crop']);
+
+      $cropareas = $this->imageSizes[$ctypeOverride];
+
+      $processArray = array(
+        'sources' => array()
+      );
+
+      $alt = $img['reference']['alternative'] != NULL ? $img['reference']['alternative'] : ($img['original']['alternative'] != NULL ? $img['original']['alternative'] : NULL);
+      $title = $img['reference']['title'] != NULL ? $img['reference']['title'] : ($img['original']['title'] != NULL ? $img['original']['title'] : NULL);
+      $caption = $img['reference']['description'] != NULL ? $img['reference']['description'] : ($img['original']['description'] != NULL ? $img['original']['description'] : NULL);
+      $copyright = $img['reference']['copyright'] != NULL ? $img['reference']['copyright'] : ($img['original']['copyright'] != NULL ? $img['original']['copyright'] : NULL);
+      if ($alt != NULL) $processArray['alt'] = $alt;
+      if ($title != NULL) $processArray['title'] = $title;
+      if ($caption != NULL) $processArray['caption'] = $caption;
+      if ($copyright != NULL) $processArray['copyright'] = $copyright;
+
+      if ($cropareas['passthru']) {
+        if (is_array($cropareas['passthru'])) {
+          foreach ($cropareas['passthru'] as $sizename => $size) {
+            $processingInstructions = array(
+              'width' => $size['width'],
+              'minWidth' => $size['width'],
+              'maxWidth' => $size['width'],
+              'crop' => null
+            );
+            if ($size['height']) {
+              $processingInstructions = array_merge(
+                $processingInstructions,
+                array(
+                  'height' => $size['height'],
+                  'minHeight' => $size['height'],
+                  'maxHeight' => $size['height']
+                )
+              );
+            }
+            if ($size['maxHeight'])
+              $processingInstructions['maxHeight'] = $size['maxHeight'];
+            if ($size['minHeight'])
+              $processingInstructions['minHeight'] = $size['minHeight'];
+
+            $processedImage = $this->imageService->applyProcessingInstructions($image, $processingInstructions);
+            $imageUri = $this->imageService->getImageUri($processedImage);
+
+
+            $fnNameRef = $dbReference['pid'] . "|" . $dbReference['uid'] . "|" . $ctypeOverride . "|" . $img['reference']['uid'] . "|passthru|" . $sizename;
+
+            $processArray['sources'][$sizename] = $this->copyAndRenameFile($fnNameRef, $imageUri, $processArray['alt']);
+          }
+        } else {
+          $fnNameRef = $dbReference['pid'] . "|" . $dbReference['uid'] . "|" . $ctypeOverride . "|" . $img['reference']['uid'] . "|passthru";
+          $imageUri = $this->imageService->getImageUri($image);
+          $processArray['sources']['passthru'] = ($addCDNPrefix ? "#cdnurl#/" : "") . $this->copyAndRenameFile($fnNameRef, $imageUri, $processArray['alt']);
+        }
+      } else
+        foreach ($cropareas as $cropareaname => $sizes) {
+          $croparea = $cropvariantcollection->getCropArea($cropareaname);
+
+          foreach ($sizes as $sizename => $size) {
+            if ($dbReference["doktype"] && $size['allowed_doktypes'] && !in_array($dbReference["doktype"], $size['allowed_doktypes'])) continue;
+            $processingInstructions = array(
+              'width' => $size['width'],
+              'minWidth' => $size['width'],
+              'maxWidth' => $size['width'],
+              'crop' => $croparea->isEmpty() ? null : $croparea->makeAbsoluteBasedOnFile($image)
+            );
+            if ($size['height']) {
+              $processingInstructions = array_merge(
+                $processingInstructions,
+                array(
+                  'height' => $size['height'],
+                  'minHeight' => $size['height'],
+                  'maxHeight' => $size['height']
+                )
+              );
+            }
+            if ($size['maxHeight'])
+              $processingInstructions['maxHeight'] = $size['maxHeight'];
+            if ($size['minHeight'])
+              $processingInstructions['minHeight'] = $size['minHeight'];
+
+            $processedImage = $this->imageService->applyProcessingInstructions($image, $processingInstructions);
+            $imageUri = $this->imageService->getImageUri($processedImage);
+
+
+            $fnNameRef = $dbReference['pid'] . "|" . $dbReference['uid'] . "|" . $ctypeOverride . "|" . $img['reference']['uid'] . "|" . $cropareaname . "|" . $sizename;
+
+            $processArray['sources'][$sizename] = ($addCDNPrefix ? "#cdnurl#/" : "") . $this->copyAndRenameFile($fnNameRef, $imageUri, $processArray['alt']);
+          }
+        }
+      $processedImages[] = $processArray;
+    }
+
+    return $processedImages;
+  }
+
+  private function processAudio($dbReference, $ctypeOverride = '', $table = 'tt_content', $tableColumn = 'media', $refField = 'uid', $useRelationFetch = true, $copyToCDN = false)
+  {
+    if ($useRelationFetch)
+      $fileObjects = $this->fileRepository->findByRelation($table, $tableColumn, $dbReference[$refField]);
+    else {
+      $sysfilerefQueryBuilder = $this->connection->getQueryBuilderForTable('sys_file_reference');
+      $sysfileStatement = $sysfilerefQueryBuilder
+        ->select('uid')
+        ->from('sys_file_reference')
+        ->andWhere(
+          $sysfilerefQueryBuilder->expr()->eq('uid_foreign', intval($dbReference[$refField])),
+          $sysfilerefQueryBuilder->expr()->eq('tablenames', $sysfilerefQueryBuilder->createNamedParameter($table)),
+          $sysfilerefQueryBuilder->expr()->eq('fieldname', $sysfilerefQueryBuilder->createNamedParameter($tableColumn)),
+        )
+        ->execute();
+
+      $frows = $sysfileStatement->fetchAll();
+
+      foreach ($frows as $fileuid) {
+        $fileObjects[] = $this->fileRepository->findFileReferenceByUid(intval($fileuid['uid']));
+      }
+    }
+    $processedAudio = array();
+    $audio = [];
+
+    $ctypeOverride = $ctypeOverride != '' ? $ctypeOverride : $dbReference['CType'];
+
+    foreach ($fileObjects as $key => $value) {
+      $processedAudio = array(
+        'reference' => $value->getReferenceProperties(),
+        'original' => $value->getOriginalFile()->getProperties(),
+      );
+
+      if ($copyToCDN) {
+        $oringalFile = $processedAudio['original']['identifier'];
+        $extension = pathinfo($processedAudio['original']['identifier'], PATHINFO_EXTENSION);
+        $targetFile = substr(sha1($processedAudio['original']['identifier']), 0, 5) . '_podcast.' . $extension;
+        $oringalFile = '/fileadmin' . $oringalFile;
+        $url = $this->copyPodcastAudioFileToCDN($oringalFile, $targetFile);
+      }
+
+      $audio['name'] = $processedAudio['original']['name'];
+      $audio['url'] = $url;
+      $audio['title'] = $processedAudio['reference']['title'];
+      $audio['description'] = $processedAudio['reference']['description'];
+    }
+    return $audio;
+  }
+
+  private function copyAndRenameFile($destinationFnRef, $sourceUri, $altText = null)
+  {
+    $shaFileRef = sha1($destinationFnRef);
+    $workPath = substr($shaFileRef, 0, 2) . "/" . substr($shaFileRef, 2, 2);
+    $workFnPrefix = $shaFileRef;
+    if ($altText) {
+      $altText = substr($altText, 0, 100);
+      $workFnPrefix = $this->sanitizeString($altText) . "-" . $shaFileRef;
+    }
+    $workFn = $workFnPrefix . "." . pathinfo($sourceUri, PATHINFO_EXTENSION);
+
+    if (!file_exists(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $workPath)) {
+      mkdir(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $workPath, 0777, true);
+    }
+    copy(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . $sourceUri, \TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $workPath . '/' . $workFn);
+
+    return $workPath . '/' . $workFn;
+  }
+
+  private function copyPodcastAudioFileToCDN($sourceFile, $destinationFile)
+  {
+    $dir = 'podcast';
+    if (!file_exists(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $dir)) {
+      mkdir(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $dir, 0777, true);
+    }
+    copy(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . $sourceFile, \TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/cdn/' . $dir . '/' . $destinationFile);
+
+    return '#cdnurl#/' . $dir . '/' . $destinationFile;
+  }
+
+  public function processCmdmap_deleteAction($table, $id, $recordToDelete, $recordWasDeleted = NULL, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj)
+  {
+    //$this->log('processCmdmap_deleteAction');
+    if ($table == "pages") {
+      Mongoer::sendRequest("pages", "delete", array("pageuid" => $id));
+      Mongoer::sendRequest("abialtcache", "delete", array("pageuid" => $pid));
+      Mongoer::sendRequest("search", "delete", array("pageuid" => $id));
+      Mongoer::sendRequest("security", "delete", array("pageuid" => $id));
+      Mongoer::sendRequest("previews", "delete", array("pageuid" => $id));
+    }
+  }
+
+  /* PRIVATES */
+  private function log($msg, $isString = true)
+  {
+    if (!$isString) {
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/public/typo3temp/debug.log', $msg . PHP_EOL, FILE_APPEND);
+  }
+}

+ 88 - 0
extensions/mrm_be/Classes/Mongoer.php

@@ -0,0 +1,88 @@
+<?php
+namespace Meramo\mrm_be;
+
+//require '/var/phpmongodb/vendor/autoload.php';
+
+
+// TODO: scheduler task alle 15 min welcher
+// select x.deleted, x.disabled, x.source_path as source, x.target, x.target_statuscode as statusCode from sys_redirect as x where x.deleted = 0 and x.disabled = 0 order by x.updatedon DESC
+// abfrägt und aber ohne deleted, disabled und mit timestamp nicht älter als 16 min ;)
+// in key value array spielt und immer nur das aktuellste sourcepath-teil (updatedon) behält
+// danach durchrequesten (deleted und disabled abfrage nicht vergessen ;) )
+// target T3LINK überprüfen
+// ganz zum schluss ein delete mongo query über deleted = 1 || disabled = 1 und dann passts
+
+class Mongoer
+{
+  function __construct(){}
+
+  public static function sendRequest($dataType, $action, $data){
+//    $client = new \MongoDB\Client("mongodb://db:db@mongo:27017/");
+    $client = new \MongoDB\Client($_ENV['FE_DATABASE_DSN']);
+    $collection = null;
+    if($dataType == "pages")
+      $collection = $client->abi_local->pages;
+
+    if($dataType == "search")
+      $collection = $client->abi_local->searches;
+
+    if($dataType == "topthemen")
+      $collection = $client->abi_local->topthemens;
+
+    if($dataType == "themaderwoche")
+      $collection = $client->abi_local->themaderwoches;
+
+    if($dataType == "security")
+      $collection = $client->abi_local->pagesecurities;
+
+    if($dataType == "abialtcache")
+      $collection = $client->abi_local->abialtcaches;
+
+    if($dataType == "menues")
+      $collection = $client->abi_local->menues;
+
+    if($dataType == "maintenance")
+      $collection = $client->abi_local->maintenance;
+
+    if($dataType == "redirects")
+      $collection = $client->abi_local->redirects;
+
+    if($dataType == "forwardings") 
+      $collection = $client->abi_local->forwardings;
+    
+    if($dataType == "pdfgenjobs") 
+      $collection = $client->abi_local->pdfgenjobs;
+    if($dataType == "chatbot") 
+      $collection = $client->abi_local->chatbot;
+
+    if(!$collection) return self::log("no collection for senddata: ".$dataType);
+
+    self::log("sendRequest ".$action." ".$dataType);
+    if($action == "save"){
+      $updateResult = $collection->updateOne(
+          ['pageuid' => $data['pageuid']],
+          ['$set' => $data],
+          ['upsert' => true],
+        );
+    }
+    if($action == "delete"){
+      $collection->deleteOne(['pageuid' => $data['pageuid']]);
+    }
+    if($action == "deleteAll") {
+      $collection->deleteMany([]);
+    }
+  }
+
+  /* PRIVATES */
+  private static function log($msg, $isString = true){
+    if(!$isString){
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/tuepotest/public/typo3temp/debug.log', $msg.PHP_EOL, FILE_APPEND);
+  }
+
+  /* Private function to drop a collection */
+  public static function deleteAll($collection) {
+    return $collection->deleteMany();
+  }
+}

+ 63 - 0
extensions/mrm_be/Classes/Task/PageStatusValidator.php

@@ -0,0 +1,63 @@
+<?php
+namespace Meramo\mrm_be\Task;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
+
+class PageStatusValidator extends \TYPO3\CMS\Scheduler\Task\AbstractTask {
+  public function execute(){
+    $connection = GeneralUtility::makeInstance(ConnectionPool::class);
+
+    $pageQueryBuilder = $connection->getQueryBuilderForTable('pages');
+    $pageQueryBuilder->getRestrictions()->removeAll()
+      ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
+      ->add(GeneralUtility::makeInstance(HiddenRestriction::class))
+    ;
+
+    $postStatement = $pageQueryBuilder
+                  ->update('pages')
+                  ->orWhere(
+                    $pageQueryBuilder->expr()->eq('red_status', 11),
+                    $pageQueryBuilder->expr()->eq('red_status', 12),
+                  )
+                  ->andWhere(
+                    $pageQueryBuilder->expr()->neq('deleted', 1),
+                    $pageQueryBuilder->expr()->gt('endtime', 0),
+                    $pageQueryBuilder->expr()->lte('endtime', (new \DateTime())->getTimestamp()),
+                  )
+                  ->set('red_status', 22)
+                  ->execute();
+
+
+    $pageQueryBuilderOnline = $connection->getQueryBuilderForTable('pages');
+    $pageQueryBuilderOnline->getRestrictions()->removeAll()
+      ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
+      ->add(GeneralUtility::makeInstance(HiddenRestriction::class))
+    ;
+
+    $postStatementOnline = $pageQueryBuilderOnline
+                  ->update('pages')
+                  ->where(
+                    $pageQueryBuilderOnline->expr()->eq('red_status', 11)
+                  )
+                  ->andWhere(
+                    $pageQueryBuilderOnline->expr()->neq('deleted', 1),
+                    $pageQueryBuilderOnline->expr()->lte('starttime', (new \DateTime())->getTimestamp()),
+                  )
+                  ->set('red_status', 12)
+                  ->execute();
+                  
+    return TRUE;
+  }
+
+  /* PRIVATES */
+  private function log($msg, $isString = true){
+    if(!$isString){
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/typo3temp/debug.log', $msg.PHP_EOL, FILE_APPEND);
+  }
+
+}

+ 56 - 0
extensions/mrm_be/Classes/Task/RedirectsFromMysqlToMongo.php

@@ -0,0 +1,56 @@
+<?php
+namespace Meramo\mrm_be\Task;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use \Meramo\mrm_be\Mongoer as Mongoer;
+
+class RedirectsFromMysqlToMongo extends  \TYPO3\CMS\Scheduler\Task\AbstractTask {
+    public function execute(){
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class);
+
+        $redirectsQueryBuilder = $connection->getQueryBuilderForTable('sys_redirect');
+        $redirectsQueryBuilder->getRestrictions()->removeAll()
+            ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
+        ;
+
+        $mongoRedirects = [];
+
+        $selectStatement = $redirectsQueryBuilder
+                        ->select('uid','source_path', 'target', 'target_statuscode')
+                        ->from('sys_redirect')
+                        ->where(
+                            $redirectsQueryBuilder->expr()->eq('deleted', 0)
+                        )
+                        ->andwhere(
+                            $redirectsQueryBuilder->expr()->eq('disabled', 0)
+                        )
+                        ->execute();
+
+        $results = $selectStatement->fetchAll();
+
+        Mongoer::sendRequest("forwardings", "deleteAll", null);
+
+        foreach($results as $k => $redirect) {
+            $data = [
+                'pageuid' => $redirect['uid'],
+                'source' => $redirect['source_path'],
+                'target' => $redirect['target'],
+                'statusCode' => $redirect['target_statuscode'],
+
+            ]; 
+
+            Mongoer::sendRequest('forwardings', 'save', $data);
+        }
+
+        return TRUE;                        
+    }
+
+    private function log($msg, $isString = true){
+        if(!$isString){
+          $msg = json_encode($msg, JSON_PRETTY_PRINT);
+        }
+        file_put_contents('/var/www/html/typo3temp/debug.log', $msg.PHP_EOL, FILE_APPEND);
+      }
+}

+ 75 - 0
extensions/mrm_be/Classes/UserFunc/Pages.php

@@ -0,0 +1,75 @@
+<?php
+namespace Meramo\mrm_be\UserFunc;
+
+use \TYPO3\CMS\Core\Utility\GeneralUtility;
+use \TYPO3\CMS\Core\Database\ConnectionPool;
+use \TYPO3\CMS\Core\Context\Context;
+
+class Pages
+{
+  function __construct(){
+    $connection = GeneralUtility::makeInstance(ConnectionPool::class);
+    $this->connection = $connection;
+  }
+
+  public function render_author_ro($pa, $fObj){
+    $context = GeneralUtility::makeInstance(Context::class);
+    $id = array_keys($_GET["edit"]["pages"])[0];
+    if(!$id) return "ERR: !id";
+
+    $queryBuilder = $this->connection->getQueryBuilderForTable('be_users');
+    $queryBuilder->getRestrictions()->removeAll();
+    $statement = $queryBuilder
+      ->select('realName')
+      ->from('be_users')
+      ->innerJoin(
+        'be_users',
+        'pages',
+        'p',
+        $queryBuilder->expr()->eq('be_users.uid', $queryBuilder->quoteIdentifier('p.cruser_id'))
+      )
+      ->setMaxResults(1)
+      ->where(
+        $queryBuilder->expr()->eq('p.uid', $id)
+      )
+      ->execute()
+    ;
+    $result = $statement->fetchAll();
+    if(sizeof($result) == 0) return "ERR: size==0";
+    return $result[0]["realName"];
+  }
+
+  public function render_last_editor_ro($pa, $fObj){
+    $context = GeneralUtility::makeInstance(Context::class);
+    $id = array_keys($_GET["edit"]["pages"])[0];
+    if(!$id) return "ERR: !id";
+
+    $queryBuilder = $this->connection->getQueryBuilderForTable('be_users');
+    $queryBuilder->getRestrictions()->removeAll();
+    $statement = $queryBuilder
+      ->select('realName')
+      ->from('be_users')
+      ->innerJoin(
+        'be_users',
+        'sys_log',
+        'l',
+        $queryBuilder->expr()->eq('be_users.uid', $queryBuilder->quoteIdentifier('l.userid'))
+      )
+      ->setMaxResults(1)
+      ->where(
+        $queryBuilder->expr()->eq('l.recuid', $id)
+      )
+      ->execute()
+    ;
+    $result = $statement->fetchAll();
+    if(sizeof($result) == 0) return "ERR: size==0";
+    return $result[0]["realName"];
+  }
+
+  private function log($msg, $isString = true){
+    if(!$isString){
+      $msg = json_encode($msg, JSON_PRETTY_PRINT);
+    }
+    file_put_contents('/var/www/html/typo3temp/debug.log', "--- UserFunc/Pages ---".PHP_EOL.$msg.PHP_EOL, FILE_APPEND);
+  }
+}

+ 16 - 0
extensions/mrm_be/Configuration/Backend/AjaxRoutes.php

@@ -0,0 +1,16 @@
+<?php
+
+return [
+  'mrm_be_dkz_branch' => [
+      'path' => '/dkz/branch',
+      'target' => \Meramo\mrm_be\Controller\DKZController::class . '::getBranchAction',
+  ],
+  'mrm_be_dkz_lists' => [
+      'path' => '/dkz/lists',
+      'target' => \Meramo\mrm_be\Controller\DKZController::class . '::getListsAction',
+  ],
+  'mrm_be_dkz_search' => [
+      'path' => '/dkz/search',
+      'target' => \Meramo\mrm_be\Controller\DKZController::class . '::getSearchedAction',
+  ],
+];

+ 238 - 0
extensions/mrm_be/Configuration/FlexForms/additionalinfobox.xml

@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.boxtext>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxtext</title>
+                <el>
+                  <boxtext>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxtext</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </boxtext>
+                </el>
+              </settings.boxtext>
+              <settings.boxheadline>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxheadline</title>
+                <el>
+                  <boxheadline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxheadline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </boxheadline>
+                </el>
+              </settings.boxheadline>
+              <settings.box>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.box</title>
+                <el>
+                  <boxheadline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxheadline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </boxheadline>
+                  <boxtext>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.boxtext</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </boxtext>
+                </el>
+              </settings.box>
+              <settings.html>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.html</title>
+                <el>
+                  <html>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.html</label>
+                      <config>
+                        <type>text</type>
+                        <cols>250</cols>
+                        <rows>15</rows>
+                      </config>
+                    </TCEforms>
+                  </html>
+                </el>
+              </settings.html>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.mainheadline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Weitere Informationen</default>
+              </config>
+            </TCEforms>
+          </headline>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.contentimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.0</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.1</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.2</numIndex>
+                  <numIndex index="1">2</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.3</numIndex>
+                  <numIndex index="1">3</numIndex>
+                </numIndex>
+                <numIndex index="4">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.4</numIndex>
+                  <numIndex index="1">4</numIndex>
+                </numIndex>
+                <numIndex index="5">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.5</numIndex>
+                  <numIndex index="1">5</numIndex>
+                </numIndex>
+                <numIndex index="6">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.6</numIndex>
+                  <numIndex index="1">6</numIndex>
+                </numIndex>
+                <numIndex index="7">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_additionalinfobox.icon.7</numIndex>
+                  <numIndex index="1">7</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </icon>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 108 - 0
extensions/mrm_be/Configuration/FlexForms/animation.xml

@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <addJQuery>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_animation.addJQuery</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </addJQuery>
+          <script>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_animation.script</label>
+              <config>
+                <type>text</type>
+                <cols>250</cols>
+                <rows>15</rows>
+              </config>
+            </TCEforms>
+          </script>
+          <staticfiles>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_animation.staticfiles</label>
+              <config>
+                <type>inline</type>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </staticfiles>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 54 - 0
extensions/mrm_be/Configuration/FlexForms/button.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_button.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text>
+          <button>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_button.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <eval>required</eval>
+              </config>
+            </TCEforms>
+          </button>
+          <buttonType>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_button.buttonType</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_button.buttonLink</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_button.buttonScream</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </buttonType>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 35 - 0
extensions/mrm_be/Configuration/FlexForms/chatbot-direct.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+    <meta>
+        <langDisable>1</langDisable>
+    </meta>
+    <sheets>
+        <sDEF>
+            <ROOT>
+                <type>array</type>
+                <el>
+                    <settings.terms>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.terms</label>
+                            <config>
+                                <type>text</type>
+                                <eval>trim,required</eval>
+                                <rows>5</rows>
+                                <cols>200</cols>
+                            </config>
+                        </TCEforms>
+                    </settings.terms>
+                    <settings.url>
+                        <TCEforms>
+                          <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.url</label>
+                          <config>
+                            <type>input</type>
+                            <renderType>inputLink</renderType>
+                          </config>
+                        </TCEforms>
+                    </settings.url>
+                </el>
+            </ROOT>
+        </sDEF>
+    </sheets>
+</T3DataStructure>

+ 87 - 0
extensions/mrm_be/Configuration/FlexForms/chatbot.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+    <meta>
+        <langDisable>1</langDisable>
+    </meta>
+    <sheets>
+        <sDEF>
+            <ROOT>
+                <type>array</type>
+                <el>
+                    <settings.terms>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.terms</label>
+                            <config>
+                                <type>text</type>
+                                <eval>trim,required</eval>
+                                <rows>5</rows>
+                                <cols>200</cols>
+                            </config>
+                        </TCEforms>
+                    </settings.terms>
+                    <settings.type>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.type</label>
+                            <config>
+                                <type>select</type>
+                                <eval>required</eval>
+                                <renderType>selectSingle</renderType>
+                                <items type="array">
+                                  <numIndex index="0" type="array">
+                                    <numIndex index="0">Auswählen</numIndex>
+                                    <numIndex index="1"></numIndex>
+                                  </numIndex>
+                                  <numIndex index="2" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">medical</numIndex>
+                                  </numIndex>
+                                  <numIndex index="3" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">bewerbung</numIndex>
+                                  </numIndex>
+                                  <numIndex index="4" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">weiterbildung</numIndex>
+                                  </numIndex>
+                                  <numIndex index="5" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">reverse</numIndex>
+                                  </numIndex>
+                                 <numIndex index="6" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">unknown</numIndex>
+                                  </numIndex> 
+                                </items>
+                            </config>
+                        </TCEforms>
+                    </settings.type>
+                    <settings.category>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.category</label>
+                            <displayCond>FIELD:settings.type:=:reverse</displayCond>
+                            <config>
+                                <type>select</type>
+                                 <eval>required</eval>
+                                <renderType>selectSingle</renderType>
+                                <items type="array">
+                                  <numIndex index="0" type="array">
+                                    <numIndex index="0"></numIndex>
+                                    <numIndex index="1">Auswählen</numIndex>
+                                  </numIndex>
+                                  <numIndex index="1" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">studium</numIndex>
+                                  </numIndex>
+                                  <numIndex index="2" type="array">
+                                    <numIndex index="0">type</numIndex>
+                                    <numIndex index="1">ausbildung</numIndex>
+                                  </numIndex>
+                                </items>
+                            </config>
+                        </TCEforms>
+                    </settings.category>
+                </el>
+            </ROOT>
+        </sDEF>
+    </sheets>
+</T3DataStructure>

+ 176 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-input.xml

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.category_1</sheetTitle>
+        <type>array</type>
+        <el>
+          <label1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.categoryHeadline_1</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Fähigkeiten</default>
+              </config>
+            </TCEforms>
+          </label1>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sDEF2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.category_2</sheetTitle>
+        <type>array</type>
+        <el>
+          <label2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.categoryHeadline_2</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Berufliche Vorlieben</default>
+              </config>
+            </TCEforms>
+          </label2>
+        </el>
+      </ROOT>
+    </sDEF2>
+    <sDEF3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.category_3</sheetTitle>
+        <type>array</type>
+        <el>
+          <label3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.categoryHeadline_3</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Interessen</default>
+              </config>
+            </TCEforms>
+          </label3>
+        </el>
+      </ROOT>
+    </sDEF3>
+    <sDEF4>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.category_4</sheetTitle>
+        <type>array</type>
+        <el>
+          <label4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.categoryHeadline_4</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Soziale Kompetenzen</default>
+              </config>
+            </TCEforms>
+          </label4>
+        </el>
+      </ROOT>
+    </sDEF4>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline_main>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.headline_main</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Das bin ich</default>
+              </config>
+            </TCEforms>
+          </headline_main>
+          <intro>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.intro</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Trage in die Felder ein, wie du dich in den jeweiligen Kategorien einschätzt.</default>
+              </config>
+            </TCEforms>
+          </intro>
+          <headline_result>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.headline_result</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>So hast du dich eingeschätzt:</default>
+              </config>
+            </TCEforms>
+          </headline_result>
+          <enable_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.enable_print</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_print>
+          <enable_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.enable_pdf</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_pdf>
+          <label_submit>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.label_submit</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Zur Übersicht</default>
+              </config>
+            </TCEforms>
+          </label_submit>
+          <label_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.label_print</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Drucken</default>
+              </config>
+            </TCEforms>
+          </label_print>
+          <label_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-input.settings.label_pdf</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>PDF speichern</default>
+              </config>
+            </TCEforms>
+          </label_pdf>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 409 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-radiorange.xml

@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationTitle</sheetTitle>
+        <type>array</type>
+        <el>
+          <pointsFrom1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_from</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </pointsFrom1>
+          <pointsTo1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_to</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>3</default>
+              </config>
+            </TCEforms>
+          </pointsTo1>
+          <validationText1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationText</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE_skala</richtextConfiguration>
+                <default>Du bist noch ziemlich unentschlossen, was du mal werden willst.</default>
+              </config>
+            </TCEforms>
+          </validationText1>
+          <image1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationImage</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sDEF2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationTitle</sheetTitle>
+        <type>array</type>
+        <el>
+          <pointsFrom2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_from</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>4</default>
+              </config>
+            </TCEforms>
+          </pointsFrom2>
+          <pointsTo2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_to</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>7</default>
+              </config>
+            </TCEforms>
+          </pointsTo2>
+          <validationText2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationText</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE_skala</richtextConfiguration>
+                <default>Du hast schon einen roten Faden, aber bist noch nicht ganz "ready for prime time".</default>
+              </config>
+            </TCEforms>
+          </validationText2>
+          <image2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationImage</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2>
+        </el>
+      </ROOT>
+    </sDEF2>
+    <sDEF3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationTitle</sheetTitle>
+        <type>array</type>
+        <el>
+          <pointsFrom3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_from</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>8</default>
+              </config>
+            </TCEforms>
+          </pointsFrom3>
+          <pointsTo3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validation_points_to</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>10</default>
+              </config>
+            </TCEforms>
+          </pointsTo3>
+          <validationText3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationText</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <default>Dir braucht man nichts mehr zu sagen. Du weißt schon, wo die Reise hingeht.</default>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE_skala</richtextConfiguration>
+              </config>
+            </TCEforms>
+          </validationText3>
+          <image3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.validationImage</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3>
+        </el>
+      </ROOT>
+    </sDEF3>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline_main>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.settings.headline_main</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Selbsteinschätzung: Berufswahl</default>
+              </config>
+            </TCEforms>
+          </headline_main>
+          <intro>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-radiorange.settings.intro</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Wie schätzt du dich hinsichtlich deiner Berufswahl auf einer Skala von 1 bis &lt;MAXPOINTS&gt; ein?</default>
+              </config>
+            </TCEforms>
+          </intro>
+          <maxpoints>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_quiz.checklist-radiorange.settings.maxpoints</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>10</default>
+              </config>
+            </TCEforms>
+          </maxpoints>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 274 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-scale.xml

@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_1</sheetTitle>
+        <type>array</type>
+        <el>
+          <label1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_1</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Durchsetzungsfähigkeit</default>
+              </config>
+            </TCEforms>
+          </label1>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sDEF2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_2</sheetTitle>
+        <type>array</type>
+        <el>
+          <label2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_2</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Spontane Handlungsbereitschaft</default>
+              </config>
+            </TCEforms>
+          </label2>
+        </el>
+      </ROOT>
+    </sDEF2>
+    <sDEF3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_3</sheetTitle>
+        <type>array</type>
+        <el>
+          <label3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_3</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Stressresistenz</default>
+              </config>
+            </TCEforms>
+          </label3>
+        </el>
+      </ROOT>
+    </sDEF3>
+    <sDEF4>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_4</sheetTitle>
+        <type>array</type>
+        <el>
+          <label4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_4</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Teamorientierung</default>
+              </config>
+            </TCEforms>
+          </label4>
+        </el>
+      </ROOT>
+    </sDEF4>
+    <sDEF5>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_5</sheetTitle>
+        <type>array</type>
+        <el>
+          <label5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_5</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Einfühlungsvermögen</default>
+              </config>
+            </TCEforms>
+          </label5>
+        </el>
+      </ROOT>
+    </sDEF5>
+    <sDEF6>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_6</sheetTitle>
+        <type>array</type>
+        <el>
+          <label6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_6</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Sorgfältiges Arbeiten</default>
+              </config>
+            </TCEforms>
+          </label6>
+        </el>
+      </ROOT>
+    </sDEF6>
+    <sDEF7>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_7</sheetTitle>
+        <type>array</type>
+        <el>
+          <label7>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_7</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Konfliktbereitschaft</default>
+              </config>
+            </TCEforms>
+          </label7>
+        </el>
+      </ROOT>
+    </sDEF7>
+    <sDEF8>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.category_8</sheetTitle>
+        <type>array</type>
+        <el>
+          <label8>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.categoryHeadline_8</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Verantwortungsbereitschaft</default>
+              </config>
+            </TCEforms>
+          </label8>
+        </el>
+      </ROOT>
+    </sDEF8>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline_main>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.headline_main</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Meine sozialen Kompetenzen</default>
+              </config>
+            </TCEforms>
+          </headline_main>
+          <intro>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.intro</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Wie schätzt du dich hinsichtlich deiner Kompetenzen auf einer Skala von 1 bis &lt;MAXPOINTS&gt; ein?</default>
+              </config>
+            </TCEforms>
+          </intro>
+          <headline_result>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.headline_result</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Dein persönliches Ranking:</default>
+              </config>
+            </TCEforms>
+          </headline_result>
+          <maxpoints>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_quiz.checklist-scale.settings.maxpoints</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>5</default>
+              </config>
+            </TCEforms>
+          </maxpoints>
+          <enable_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.enable_print</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_print>
+          <enable_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.enable_pdf</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_pdf>
+          <label_nextbutton>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.label_nextbutton</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Weiter</default>
+              </config>
+            </TCEforms>
+          </label_nextbutton>
+          <label_lastbutton>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.label_lastbutton</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Zur Auswertung</default>
+              </config>
+            </TCEforms>
+          </label_lastbutton>
+          <label_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.label_print</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Drucken</default>
+              </config>
+            </TCEforms>
+          </label_print>
+          <label_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-scale.settings.label_pdf</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>PDF speichern</default>
+              </config>
+            </TCEforms>
+          </label_pdf>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 121 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-todo-multi.xml

@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sITEMS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.items.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <items>
+            <section>1</section>
+            <type>array</type>
+            <el>
+              <item>
+              <type>array</type>
+              <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.items.title</title>
+                <el>
+                   <head>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.items.head</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </head>
+                  <list>
+                   <TCEforms>
+                    <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_paragraph.subtitle</label>
+                    <config>
+                      <type>text</type>
+                      <eval>trim,required</eval>
+                      <rows>5</rows>
+                      <cols>200</cols>
+                      <enableRichtext>true</enableRichtext>
+                      <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                    </config>
+                  </TCEforms>
+                </list>
+                </el> 
+              </item>
+            </el>
+          </items>
+        </el>
+      </ROOT>
+    </sITEMS>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <mainhead>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.settings.mainhead</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>350</size>
+                <default>Deine persönliche To-do-Liste (Multi)</default>
+              </config>
+            </TCEforms>
+          </mainhead>
+          <description>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.settings.description</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </description>
+          <enable_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.settings.enable_print</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_print>
+          <enable_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.settings.enable_pdf</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_pdf>
+          <label_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_multi.settings.label_print</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Liste drucken</default>
+              </config>
+            </TCEforms>
+          </label_print>
+          <label_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist_todo_.settings.label_pdf</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>PDF speichern</default>
+              </config>
+            </TCEforms>
+          </label_pdf>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 221 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-todo.xml

@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sITEMS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.items.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <items>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <item>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.items.title</title>
+                <el>
+                  <text>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.items.text</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </text>
+                  <contains_image>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.items.contains_image</label>
+                      <config>
+                        <type>check</type>
+                        <default>0</default>
+                      </config>
+                    </TCEforms>
+                  </contains_image>
+                </el>
+              </item>
+            </el>
+          </items>
+        </el>
+      </ROOT>
+    </sITEMS>
+    <sIMAGES>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.images.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <images>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.images.sheet_title</label>
+              <config>
+                <type>inline</type>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </images>
+        </el>
+      </ROOT>
+    </sIMAGES>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline_main>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.headline_main</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>350</size>
+                <default>Deine persönliche To-do-Liste</default>
+              </config>
+            </TCEforms>
+          </headline_main>
+          <headline_done>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.headline_done</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>350</size>
+                <default>Super, das hast du schon erledigt:</default>
+              </config>
+            </TCEforms>
+          </headline_done>
+          <headline_not_done>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.headline_not_done</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>350</size>
+                <default>Diese Punkte stehen noch auf deiner To-do-Liste:</default>
+              </config>
+            </TCEforms>
+          </headline_not_done>
+          <enable_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.enable_print</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_print>
+          <enable_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.enable_pdf</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_pdf>
+          <label_submit>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.label_submit</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Weiter</default>
+              </config>
+            </TCEforms>
+          </label_submit>
+          <label_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.label_print</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Liste drucken</default>
+              </config>
+            </TCEforms>
+          </label_print>
+          <label_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-todo.settings.label_pdf</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>PDF speichern</default>
+              </config>
+            </TCEforms>
+          </label_pdf>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 184 - 0
extensions/mrm_be/Configuration/FlexForms/checklist-yesmaybeno.xml

@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sITEMS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.items.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <items>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.items.title</title>
+                <el>
+                  <headline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.items.headline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </headline>
+                  <text>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.items.text</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </text>
+                </el>
+              </items>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sITEMS>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.sheet_title</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline_main>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.headline_main</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Was interessiert mich?</default>
+              </config>
+            </TCEforms>
+          </headline_main>
+          <intro>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.intro</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Schau dir die folgenden Interessensbereiche an und ordne sie entsprechend ein.</default>
+              </config>
+            </TCEforms>
+          </intro>
+          <headline_result>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.headline_result</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Deine Interessen im Überblick:</default>
+              </config>
+            </TCEforms>
+          </headline_result>
+          <enable_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.enable_print</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_print>
+          <enable_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.enable_pdf</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </enable_pdf>
+          <label_nextbutton>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.label_nextbutton</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Weiter</default>
+              </config>
+            </TCEforms>
+          </label_nextbutton>
+          <label_lastbutton>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.label_lastbutton</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Zur Auswertung</default>
+              </config>
+            </TCEforms>
+          </label_lastbutton>
+          <label_print>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.label_print</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Drucken</default>
+              </config>
+            </TCEforms>
+          </label_print>
+          <label_pdf>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.label_pdf</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>PDF speichern</default>
+              </config>
+            </TCEforms>
+          </label_pdf>
+          <choice_value_yes>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.choice_value_yes</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Das interessiert mich</default>
+              </config>
+            </TCEforms>
+          </choice_value_yes>
+          <choice_value_maybe>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.choice_value_maybe</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Das könnte mich interessieren</default>
+              </config>
+            </TCEforms>
+          </choice_value_maybe>
+          <choice_value_no>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_checklist-yesmaybeno.settings.choice_value_no</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+                <default>Das interessiert mich nicht</default>
+              </config>
+            </TCEforms>
+          </choice_value_no>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 90 - 0
extensions/mrm_be/Configuration/FlexForms/contentimage.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_contentimage.subtitle</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 260 - 0
extensions/mrm_be/Configuration/FlexForms/dynamictileoverview.xml

@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.sheetTitle.tiles</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <links>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                        <eval>required</eval>
+                        <fieldControl>
+                          <linkPopup>
+                            <options>
+                              <blindLinkFields>params,class</blindLinkFields>
+                              <blindLinkOptions>file,folder,mail,spec,telephone</blindLinkOptions>
+                            </options>
+                          </linkPopup>
+                        </fieldControl>
+                      </config>
+                    </TCEforms>
+                  </link>
+                  <type>
+                    <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.type</label>
+                    <config>
+                      <type>select</type>
+                      <renderType>selectSingle</renderType>
+                      <eval>required</eval>
+                      <items>
+                        <numIndex index="0">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.type.0</numIndex>
+                          <numIndex index="1">image+headline+text</numIndex>
+                        </numIndex>
+                        <numIndex index="1">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.type.1</numIndex>
+                          <numIndex index="1">headline</numIndex>
+                        </numIndex>
+                        <numIndex index="2">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.type.2</numIndex>
+                          <numIndex index="1">headline+text</numIndex>
+                        </numIndex>
+                        <numIndex index="3">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.type.3</numIndex>
+                          <numIndex index="1">image+headline</numIndex>
+                        </numIndex>
+                      </items>
+                      <default>image+headline+text</default>
+                    </config>
+                  </type>
+                  <format>
+                    <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.format</label>
+                    <config>
+                      <type>select</type>
+                      <renderType>selectSingle</renderType>
+                      <eval>required</eval>
+                      <items>
+                        <numIndex index="0">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.format.0</numIndex>
+                          <numIndex index="1">16_9</numIndex>
+                        </numIndex>
+                        <numIndex index="1">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.format.1</numIndex>
+                          <numIndex index="1">default</numIndex>
+                        </numIndex>
+                        <numIndex index="2">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.format.2</numIndex>
+                          <numIndex index="1">flat</numIndex>
+                        </numIndex>
+                      </items>
+                      <default>default</default>
+                    </config>
+                  </format>
+                  <coloured>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.link.coloured</label>
+                      <config>
+                        <type>check</type>
+                        <default>0</default>
+                      </config>
+                    </TCEforms>
+                  </coloured>
+                </el>
+              </links>
+
+              <flat>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.flat</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.flat</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                        <eval>required</eval>
+                        <fieldControl>
+                          <linkPopup>
+                            <options>
+                              <blindLinkFields>params,class</blindLinkFields>
+                              <blindLinkOptions>file,folder,mail,spec,telephone</blindLinkOptions>
+                            </options>
+                          </linkPopup>
+                        </fieldControl>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </flat>
+
+              <buttons>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.buttons</title>
+                <el>
+                  <headline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.buttons.headline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </headline>
+                  <buttons>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.buttons.links</label>
+                      <config>
+                        <type>text</type>
+                        <eval>required,trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE_ul_only</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </buttons>
+                </el>
+              </buttons>
+
+              <icons>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                        <eval>required</eval>
+                        <fieldControl>
+                          <linkPopup>
+                            <options>
+                              <blindLinkFields>params,class</blindLinkFields>
+                              <blindLinkOptions>file,folder,mail,spec,telephone</blindLinkOptions>
+                            </options>
+                          </linkPopup>
+                        </fieldControl>
+                      </config>
+                    </TCEforms>
+                  </link>
+                  <icon>
+                    <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon</label>
+                    <config>
+                      <type>select</type>
+                      <renderType>selectSingle</renderType>
+                      <eval>required</eval>
+                      <items>
+                        <numIndex index="0">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.0</numIndex>
+                          <numIndex index="1">career-track</numIndex>
+                        </numIndex>
+                        <numIndex index="1">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.1</numIndex>
+                          <numIndex index="1">company</numIndex>
+                        </numIndex>
+                        <numIndex index="2">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.2</numIndex>
+                          <numIndex index="1">diploma</numIndex>
+                        </numIndex>
+                        <numIndex index="3">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.3</numIndex>
+                          <numIndex index="1">writing</numIndex>
+                        </numIndex>
+                        <numIndex index="4">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.4</numIndex>
+                          <numIndex index="1">todo3</numIndex>
+                        </numIndex>
+                        <numIndex index="5">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.5</numIndex>
+                          <numIndex index="1">comeback</numIndex>
+                        </numIndex>
+                        <numIndex index="6">
+                          <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.icons.icon.6</numIndex>
+                          <numIndex index="1">work</numIndex>
+                        </numIndex>
+                      </items>
+                      <default>career-track</default>
+                    </config>
+                  </icon>
+                </el>
+              </icons>
+
+              <injections>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.injections</title>
+                <el>
+                  <text>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.injections</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>200</size>
+                      </config>
+                    </TCEforms>
+                  </text>
+                </el>
+              </injections>
+            </el>
+
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sSETTINGS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.sheetTitle.settings</sheetTitle>
+        <type>array</type>
+        <el>
+          <cssClass>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_dynamic_tileoverview.settings.css</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </cssClass>
+        </el>
+      </ROOT>
+    </sSETTINGS>
+  </sheets>
+</T3DataStructure>

+ 795 - 0
extensions/mrm_be/Configuration/FlexForms/explorerbox.xml

@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element1</sheetTitle>
+        <type>array</type>
+        <el>
+          <head1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head1>
+          <claim1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim1>
+          <text1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text1>
+          <image1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sDEF2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element2</sheetTitle>
+        <type>array</type>
+        <el>
+          <head2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head2>
+          <claim2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim2>
+          <text2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text2>
+          <link2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>folder,mail,spec,telephone</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </link2>
+          <image2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2>
+        </el>
+      </ROOT>
+    </sDEF2>
+    <sDEF3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element3</sheetTitle>
+        <type>array</type>
+        <el>
+          <head3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head3>
+          <claim3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim3>
+          <text3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text3>
+          <link3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>folder,mail,spec,telephone</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </link3>
+          <image3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3>
+        </el>
+      </ROOT>
+    </sDEF3>
+    <sDEF4>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element4</sheetTitle>
+        <type>array</type>
+        <el>
+          <head4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head4>
+          <claim4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim4>
+          <text4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text4>
+          <link4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>folder,mail,spec,telephone</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </link4>
+          <image4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_4</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image4>
+        </el>
+      </ROOT>
+    </sDEF4>
+    <sDEF5>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element5</sheetTitle>
+        <type>array</type>
+        <el>
+          <head5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head5>
+          <claim5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim5>
+          <text5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text5>
+          <link5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>folder,mail,spec,telephone</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </link5>
+          <image5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_5</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image5>
+        </el>
+      </ROOT>
+    </sDEF5>
+    <sDEF6>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.explore_element6</sheetTitle>
+        <type>array</type>
+        <el>
+          <head6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.headline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </head6>
+          <claim6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.subheadline</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>1</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </claim6>
+          <text6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.text</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text6>
+          <link6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>folder,mail,spec,telephone</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </link6>
+          <image6>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_explorerbox.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_6</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image6>
+        </el>
+      </ROOT>
+    </sDEF6>
+  </sheets>
+</T3DataStructure>

+ 205 - 0
extensions/mrm_be/Configuration/FlexForms/extra-infosbox.xml

@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.box>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.box</title>
+                <el>
+                  <boxheadline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxheadline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </boxheadline>
+                  <boxtext>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxtext</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </boxtext>
+                </el>
+              </settings.box>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox.mainheadline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Weitere Informationen</default>
+              </config>
+            </TCEforms>
+          </headline>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.contentimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.0</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.1</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.2</numIndex>
+                  <numIndex index="1">2</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.3</numIndex>
+                  <numIndex index="1">3</numIndex>
+                </numIndex>
+                <numIndex index="4">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.4</numIndex>
+                  <numIndex index="1">4</numIndex>
+                </numIndex>
+                <numIndex index="5">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.5</numIndex>
+                  <numIndex index="1">5</numIndex>
+                </numIndex>
+                <numIndex index="6">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.6</numIndex>
+                  <numIndex index="1">6</numIndex>
+                </numIndex>
+                <numIndex index="7">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.7</numIndex>
+                  <numIndex index="1">7</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </icon>
+          <isInitialyOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.isInitialyOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </isInitialyOpen>
+          <noAutoOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.noAutoOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </noAutoOpen>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 626 - 0
extensions/mrm_be/Configuration/FlexForms/fahrplan.xml

@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sELEMENT1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element1</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT1>
+    <sELEMENT2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element2</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT2>
+    <sELEMENT3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element3</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT3>
+    <sELEMENT4>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element4</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT4>
+    <sELEMENT5>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element5</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT5>
+    <sELEMENT6>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.element6</sheetTitle>
+        <type>array</type>
+        <el>
+          <caption>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementcaption</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </caption>
+          <link>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementlink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.elementimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sELEMENT6>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_fahrplan.default_elements</sheetTitle>
+        <type>array</type>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 226 - 0
extensions/mrm_be/Configuration/FlexForms/foldout-h3.xml

@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.paragraph>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.paragraph</title>
+                <el>
+                  <paragraph>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.paragraph</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </paragraph>
+                </el>
+              </settings.paragraph>
+              <settings.headline>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.headline</title>
+                <el>
+                  <headline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.headline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </headline>
+                </el>
+              </settings.headline>
+              <settings.html>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.html</title>
+                <el>
+                  <html>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.html</label>
+                      <config>
+                        <type>text</type>
+                        <cols>250</cols>
+                        <rows>15</rows>
+                      </config>
+                    </TCEforms>
+                  </html>
+                </el>
+              </settings.html>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </headline>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.contentimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.0</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.1</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.2</numIndex>
+                  <numIndex index="1">2</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.3</numIndex>
+                  <numIndex index="1">3</numIndex>
+                </numIndex>
+                <numIndex index="4">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.4</numIndex>
+                  <numIndex index="1">4</numIndex>
+                </numIndex>
+                <numIndex index="5">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.5</numIndex>
+                  <numIndex index="1">5</numIndex>
+                </numIndex>
+                <numIndex index="6">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.6</numIndex>
+                  <numIndex index="1">6</numIndex>
+                </numIndex>
+                <numIndex index="7">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.icon.7</numIndex>
+                  <numIndex index="1">7</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </icon>
+          <isInitialyOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout_h3.isInitialyOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </isInitialyOpen>
+          <noAutoOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.noAutoOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </noAutoOpen>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 226 - 0
extensions/mrm_be/Configuration/FlexForms/foldout.xml

@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.paragraph>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.paragraph</title>
+                <el>
+                  <paragraph>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.paragraph</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </paragraph>
+                </el>
+              </settings.paragraph>
+              <settings.headline>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.headline</title>
+                <el>
+                  <headline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.headline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </headline>
+                </el>
+              </settings.headline>
+              <settings.html>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.html</title>
+                <el>
+                  <html>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.html</label>
+                      <config>
+                        <type>text</type>
+                        <cols>250</cols>
+                        <rows>15</rows>
+                      </config>
+                    </TCEforms>
+                  </html>
+                </el>
+              </settings.html>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </headline>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.contentimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.0</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.1</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.2</numIndex>
+                  <numIndex index="1">2</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.3</numIndex>
+                  <numIndex index="1">3</numIndex>
+                </numIndex>
+                <numIndex index="4">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.4</numIndex>
+                  <numIndex index="1">4</numIndex>
+                </numIndex>
+                <numIndex index="5">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.5</numIndex>
+                  <numIndex index="1">5</numIndex>
+                </numIndex>
+                <numIndex index="6">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.6</numIndex>
+                  <numIndex index="1">6</numIndex>
+                </numIndex>
+                <numIndex index="7">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.icon.7</numIndex>
+                  <numIndex index="1">7</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </icon>
+          <isInitialyOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_foldout.isInitialyOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </isInitialyOpen>
+          <noAutoOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.noAutoOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </noAutoOpen>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 25 - 0
extensions/mrm_be/Configuration/FlexForms/headline1.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_h1.subtitle</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 25 - 0
extensions/mrm_be/Configuration/FlexForms/headline2.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_h2.subtitle</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 25 - 0
extensions/mrm_be/Configuration/FlexForms/headline3.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_h3.subtitle</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 90 - 0
extensions/mrm_be/Configuration/FlexForms/heroimage.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_heroimage.subtitle</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 46 - 0
extensions/mrm_be/Configuration/FlexForms/highlightbox.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_highlightbox.subtitle</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+              </config>
+            </TCEforms>
+          </text>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_highlightbox.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_highlightbox.icon.0</numIndex>
+                  <numIndex index="1">lightbulb</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_highlightbox.icon.1</numIndex>
+                  <numIndex index="1">warning</numIndex>
+                </numIndex>
+              </items>
+              <default>lightbulb</default>
+            </config>
+          </icon>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 413 - 0
extensions/mrm_be/Configuration/FlexForms/homeheaderinfo.xml

@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.sheet_element1</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>35</maxlength>
+              </config>
+            </TCEforms>
+          </headline1>
+          <text1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.text</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>120</maxlength>
+              </config>
+            </TCEforms>
+          </text1>
+          <link1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link1>
+          <image1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1>
+          <imagesize1>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_1_1</numIndex>
+                  <numIndex index="1">i_1_1</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_16_9</numIndex>
+                  <numIndex index="1">i_16_9</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_default</numIndex>
+                  <numIndex index="1">default</numIndex>
+                </numIndex>
+              </items>
+              <default>i_1_1</default>
+            </config>
+          </imagesize1>
+        </el>
+      </ROOT>
+    </sDEF1>
+    <sDEF2>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.sheet_element2</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>35</maxlength>
+              </config>
+            </TCEforms>
+          </headline2>
+          <text2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.text</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>120</maxlength>
+              </config>
+            </TCEforms>
+          </text2>
+          <link2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link2>
+          <image2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2>
+          <imagesize2>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_1_1</numIndex>
+                  <numIndex index="1">i_1_1</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_16_9</numIndex>
+                  <numIndex index="1">i_16_9</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_default</numIndex>
+                  <numIndex index="1">default</numIndex>
+                </numIndex>
+              </items>
+              <default>i_1_1</default>
+            </config>
+          </imagesize2>
+        </el>
+      </ROOT>
+    </sDEF2>
+    <sDEF3>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.sheet_element3</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>35</maxlength>
+              </config>
+            </TCEforms>
+          </headline3>
+          <text3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.text</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <maxlength>120</maxlength>
+              </config>
+            </TCEforms>
+          </text3>
+          <link3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+              </config>
+            </TCEforms>
+          </link3>
+          <image3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>0</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3>
+          <imagesize3>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_1_1</numIndex>
+                  <numIndex index="1">i_1_1</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_16_9</numIndex>
+                  <numIndex index="1">i_16_9</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_homeheaderinfo.imagesize.i_default</numIndex>
+                  <numIndex index="1">default</numIndex>
+                </numIndex>
+              </items>
+              <default>i_1_1</default>
+            </config>
+          </imagesize3>
+        </el>
+      </ROOT>
+    </sDEF3>
+  </sheets>
+</T3DataStructure>

+ 25 - 0
extensions/mrm_be/Configuration/FlexForms/html.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <html>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_html.html</label>
+              <config>
+                <type>text</type>
+                <cols>250</cols>
+                <rows>15</rows>
+              </config>
+            </TCEforms>
+          </html>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 131 - 0
extensions/mrm_be/Configuration/FlexForms/imageplus.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+	<meta>
+		<langDisable>1</langDisable>
+	</meta>
+	<sheets>
+		<sDEF>
+			<ROOT>
+				<type>array</type>
+				<el>
+					<image>
+						<TCEforms>
+							<label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_imageplus.subtitle</label>
+							<config>
+								<type>inline</type>
+								<maxitems>1</maxitems>
+								<foreign_table>sys_file_reference</foreign_table>
+								<foreign_table_field>tablenames</foreign_table_field>
+								<foreign_label>uid_local</foreign_label>
+								<foreign_sortby>sorting_foreign</foreign_sortby>
+								<foreign_field>uid_foreign</foreign_field>
+								<foreign_selector>uid_local</foreign_selector>
+								<foreign_selector_fieldTcaOverride>
+									<config>
+										<appearance>
+											<elementBrowserType>file</elementBrowserType>
+											<elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+										</appearance>
+									</config>
+								</foreign_selector_fieldTcaOverride>
+								<foreign_types type="array">
+									<numIndex index="0">
+										<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+									</numIndex>
+									<numIndex index="2">
+										<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+									</numIndex>
+								</foreign_types>
+								<foreign_match_fields>
+									<fieldname>image</fieldname>
+									<!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+								</foreign_match_fields>
+								<appearance type="array">
+									<fileUploadAllowed>0</fileUploadAllowed>
+									<newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+									<headerThumbnail>
+										<field>uid_local</field>
+										<height>64</height>
+										<width>64</width>
+									</headerThumbnail>
+									<enabledControls>
+										<info>1</info>
+										<new>0</new>
+										<dragdrop>0</dragdrop>
+										<sort>1</sort>
+										<hide>0</hide>
+										<delete>1</delete>
+										<localize>0</localize>
+									</enabledControls>
+									<createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+								</appearance>
+								<behaviour>
+									<localizationMode>select</localizationMode>
+									<localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+								</behaviour>
+								<overrideChildTca>
+									<columns type="array">
+										<uid_local type="array">
+											<config type="array">
+												<appearance type="array">
+													<elementBrowserType>file</elementBrowserType>
+													<elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+												</appearance>
+											</config>
+										</uid_local>
+									</columns>
+									<types type="array">
+										<numIndex index="2">
+											<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+										</numIndex>
+									</types>
+								</overrideChildTca>
+							</config>
+						</TCEforms>
+					</image>
+					<headline>
+						<TCEforms>
+							<label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_imageplus.headline</label>
+							<config>
+								<type>input</type>
+								<eval>trim</eval>
+								<size>200</size>
+							</config>
+						</TCEforms>
+					</headline>
+					<description>
+						<TCEforms>
+							<label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_imageplus.description</label>
+							<config>
+								<type>text</type>
+								<eval>trim</eval>
+								<rows>4</rows>
+								<cols>200</cols>
+							</config>
+						</TCEforms>
+					</description>
+					<link>
+						<TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_imageplus.link</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <eval>required</eval>
+              </config>
+            </TCEforms>
+          </link>
+					<customcss>
+						<TCEforms>
+							<label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_imageplus.customcss</label>
+							<config>
+								<type>input</type>
+								<eval>trim</eval>
+								<size>200</size>
+							</config>
+						</TCEforms>
+					</customcss>
+				</el>
+			</ROOT>
+		</sDEF>
+	</sheets>
+</T3DataStructure>

+ 255 - 0
extensions/mrm_be/Configuration/FlexForms/infobox.xml

@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.boxtext>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxtext</title>
+                <el>
+                  <boxtext>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxtext</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </boxtext>
+                </el>
+              </settings.boxtext>
+              <settings.boxheadline>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxheadline</title>
+                <el>
+                  <boxheadline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxheadline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </boxheadline>
+                </el>
+              </settings.boxheadline>
+              <settings.box>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.box</title>
+                <el>
+                  <boxheadline>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxheadline</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required</eval>
+                        <size>250</size>
+                      </config>
+                    </TCEforms>
+                  </boxheadline>
+                  <boxtext>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.boxtext</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim</eval>
+                        <rows>3</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </boxtext>
+                </el>
+              </settings.box>
+              <settings.html>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.html</title>
+                <el>
+                  <html>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.html</label>
+                      <config>
+                        <type>text</type>
+                        <cols>250</cols>
+                        <rows>15</rows>
+                      </config>
+                    </TCEforms>
+                  </html>
+                </el>
+              </settings.html>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.mainheadline</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </headline>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.contentimage</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <icon>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.0</numIndex>
+                  <numIndex index="1">0</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.1</numIndex>
+                  <numIndex index="1">1</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.2</numIndex>
+                  <numIndex index="1">2</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.3</numIndex>
+                  <numIndex index="1">3</numIndex>
+                </numIndex>
+                <numIndex index="4">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.4</numIndex>
+                  <numIndex index="1">4</numIndex>
+                </numIndex>
+                <numIndex index="5">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.5</numIndex>
+                  <numIndex index="1">5</numIndex>
+                </numIndex>
+                <numIndex index="6">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.6</numIndex>
+                  <numIndex index="1">6</numIndex>
+                </numIndex>
+                <numIndex index="7">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.icon.7</numIndex>
+                  <numIndex index="1">7</numIndex>
+                </numIndex>
+              </items>
+              <default>0</default>
+            </config>
+          </icon>
+          <isInitialyOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.isInitialyOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </isInitialyOpen>
+          <noAutoOpen>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_infobox.noAutoOpen</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </noAutoOpen>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 25 - 0
extensions/mrm_be/Configuration/FlexForms/injection.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_injection.subtitle</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 46 - 0
extensions/mrm_be/Configuration/FlexForms/interviewantwort.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <interviewee>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_interviewantwort.interviewee</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </interviewee>
+          <answer>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_interviewantwort.answer</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </answer>
+          <lang>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_interviewantwort.lang</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </lang>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 35 - 0
extensions/mrm_be/Configuration/FlexForms/interviewfrage.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <question>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_interviewfrage.question</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </question>
+          <lang>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_interviewfrage.lang</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </lang>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 26 - 0
extensions/mrm_be/Configuration/FlexForms/introtext.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_introtext.subtitle</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 235 - 0
extensions/mrm_be/Configuration/FlexForms/linkage.xml

@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDYNAMIC>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDYNAMIC>
+    <sBERUFENET>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.berufenet</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponentsBerufeNet>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponentsBerufeNet>
+        </el>
+      </ROOT>
+    </sBERUFENET>
+    <sBERUFETV>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.berufetv</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponentsBerufeTV>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponentsBerufeTV>
+        </el>
+      </ROOT>
+    </sBERUFETV>
+    <Berufsausbildung>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.berufsausbildung</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponentsBerufsausbildung>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponentsBerufsausbildung>
+        </el>
+      </ROOT>
+    </Berufsausbildung>
+    <sBASEARCH>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.ba_search</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponentsBASearch>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponentsBASearch>
+        </el>
+      </ROOT>
+    </sBASEARCH>
+    <sSTUDIENWAHL>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.studienwahl</sheetTitle>
+        <type>array</type>
+        <el>
+          <dynamicComponentsStudienwahl>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.link>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </settings.link>
+            </el>
+          </dynamicComponentsStudienwahl>
+        </el>
+      </ROOT>
+    </sSTUDIENWAHL>
+    <sCHECKU>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.check_u</sheetTitle>
+        <type>array</type>
+        <el>
+          <enable_check_u>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.check_u.set_link</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </enable_check_u>
+        </el>
+      </ROOT>
+    </sCHECKU>
+    <sSTUDIENCHECK>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.studiencheck</sheetTitle>
+        <type>array</type>
+        <el>
+          <enable_studiencheck>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.studiencheck.set_link</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </enable_studiencheck>
+        </el>
+      </ROOT>
+    </sSTUDIENCHECK>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_linkage.mainheadline</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Weitere Beiträge</default>
+              </config>
+            </TCEforms>
+          </headline>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 50 - 0
extensions/mrm_be/Configuration/FlexForms/maintenance.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+    <meta>
+        <langDisable>1</langDisable>
+    </meta>
+    <sheets>
+        <sDEF>
+            <ROOT>
+                <type>array</type>
+                <el>
+                    <starttime>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_maintenance.starttime</label>
+                            <config>
+                                <type>input</type>
+                                <renderType>inputDateTime</renderType>
+                                <eval>datetime</eval>
+                                <default>0</default>
+                            </config>
+                        </TCEforms>
+                    </starttime>
+                    <endtime>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_maintenance.endtime</label>
+                            <config>
+                                <type>input</type>
+                                <renderType>inputDateTime</renderType>
+                                <eval>datetime</eval>
+                                <default>0</default>
+                            </config>
+                        </TCEforms>
+                    </endtime>
+                    <infotext>
+                        <TCEforms>
+                            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_maintenance.infotext</label>
+                            <config>
+                                <type>text</type>
+                                <eval>trim,required</eval>
+                                <rows>5</rows>
+                                <cols>200</cols>
+                                <enableRichtext>true</enableRichtext>
+                                <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                            </config>
+                        </TCEforms>
+                    </infotext>
+                </el>
+            </ROOT>
+        </sDEF>
+    </sheets>
+</T3DataStructure>

+ 83 - 0
extensions/mrm_be/Configuration/FlexForms/menu.xml

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF1>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.sheetTitle</sheetTitle>
+        <type>array</type>
+        <el>
+          <mid>
+            <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.id</label>
+            <config>
+              <type>select</type>
+              <renderType>selectSingle</renderType>
+              <eval>required</eval>
+              <items>
+                <numIndex index="0">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.id.0</numIndex>
+                  <numIndex index="1">main</numIndex>
+                </numIndex>
+                <numIndex index="1">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.id.1</numIndex>
+                  <numIndex index="1">footer</numIndex>
+                </numIndex>
+                <numIndex index="2">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.id.2</numIndex>
+                  <numIndex index="1">access</numIndex>
+                </numIndex>
+                <numIndex index="3">
+                  <numIndex index="0">LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.id.3</numIndex>
+                  <numIndex index="1">direct</numIndex>
+                </numIndex>
+              </items>
+              <default>main</default>
+            </config>
+          </mid>
+          <headline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.headline</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </headline>
+          <dynamicComponents>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <links>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.link</title>
+                <el>
+                  <link>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_menu.link</label>
+                      <config>
+                        <type>input</type>
+                        <renderType>inputLink</renderType>
+                        <eval>required</eval>
+                        <fieldControl>
+                          <linkPopup>
+                            <options>
+                              <blindLinkFields>params,class</blindLinkFields>
+                              <blindLinkOptions>file,folder,mail,spec,telephone</blindLinkOptions>
+                            </options>
+                          </linkPopup>
+                        </fieldControl>
+                      </config>
+                    </TCEforms>
+                  </link>
+                </el>
+              </links>
+            </el>
+          </dynamicComponents>
+        </el>
+      </ROOT>
+    </sDEF1>
+  </sheets>
+</T3DataStructure>

+ 43 - 0
extensions/mrm_be/Configuration/FlexForms/movingimagesvideo.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <vid>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_movingimagesvideo.vid</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </vid>
+          <hasNoticeForCrossPromotion>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_movingimagesvideo.hasNoticeForCrossPromotion</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </hasNoticeForCrossPromotion>
+          <hasNoticeForAccessibility>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_movingimagesvideo.hasNoticeForAccessibility</label>
+              <config>
+                <type>check</type>
+                <default>1</default>
+              </config>
+            </TCEforms>
+          </hasNoticeForAccessibility>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 38 - 0
extensions/mrm_be/Configuration/FlexForms/newsletterabo.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <cr_url>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_newsletterabo.cr_url</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </cr_url>
+          <cr_url_BIZ>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_newsletterabo.cr_url_BIZ</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+              </config>
+            </TCEforms>
+          </cr_url_BIZ>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>
+
+
+

+ 28 - 0
extensions/mrm_be/Configuration/FlexForms/paragraph.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <text>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_paragraph.subtitle</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+              </config>
+            </TCEforms>
+          </text>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 1467 - 0
extensions/mrm_be/Configuration/FlexForms/picturechoice.xml

@@ -0,0 +1,1467 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sPic1>
+      <ROOT>
+        <type>array</type>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.choice1_title</sheetTitle>
+        <el>
+          <image1_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image1</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1_1>
+          <pointsOfImage1_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage1</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage1_1>
+          <image1_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image2</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1_2>
+          <pointsOfImage1_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage2</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage1_2>
+          <image1_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image3</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1_3>
+          <pointsOfImage1_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage3</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage1_3>
+          <image1_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image4</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1_4</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1_4>
+          <pointsOfImage1_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage4</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage1_4>
+          <image1_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image5</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_1_5</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image1_5>
+          <pointsOfImage1_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage5</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage1_5>
+        </el>
+      </ROOT>
+    </sPic1>
+    <sPic2>
+      <ROOT>
+        <type>array</type>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.choice2_title</sheetTitle>
+        <el>
+          <image2_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image1</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2_1>
+          <pointsOfImage2_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage1</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage2_1>
+          <image2_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image2</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2_2>
+          <pointsOfImage2_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage2</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage2_2>
+          <image2_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image3</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2_3>
+          <pointsOfImage2_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage3</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage2_3>
+          <image2_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image4</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2_4</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2_4>
+          <pointsOfImage2_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage4</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage2_4>
+          <image2_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image5</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_2_5</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image2_5>
+          <pointsOfImage2_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage5</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage2_5>
+        </el>
+      </ROOT>
+    </sPic2>
+    <sPic3>
+      <ROOT>
+        <type>array</type>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.choice3_title</sheetTitle>
+        <el>
+          <image3_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image1</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3_1</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3_1>
+          <pointsOfImage3_1>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage1</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage3_1>
+          <image3_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image2</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3_2</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3_2>
+          <pointsOfImage3_2>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage2</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage3_2>
+          <image3_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image3</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3_3</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3_3>
+          <pointsOfImage3_3>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage3</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage3_3>
+          <image3_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image4</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3_4</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3_4>
+          <pointsOfImage3_4>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage4</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage3_4>
+          <image3_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.image5</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>flex_image_3_5</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image3_5>
+          <pointsOfImage3_5>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.pointsOfImage5</label>
+              <config>
+                <type>input</type>
+                <eval>trim,int</eval>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </pointsOfImage3_5>
+        </el>
+      </ROOT>
+    </sPic3>
+    <sVALIDATION>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.title</sheetTitle>
+        <type>array</type>
+        <el>
+          <validations>
+            <type>array</type>
+            <section>1</section>
+            <el>
+              <settings.validation>
+                <type>array</type>
+                <title>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.title</title>
+                <el>
+                  <pointsFrom>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.points_from</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required,int</eval>
+                        <size>10</size>
+                        <default>0</default>
+                      </config>
+                    </TCEforms>
+                  </pointsFrom>
+                  <pointsTo>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.points_to</label>
+                      <config>
+                        <type>input</type>
+                        <eval>trim,required,int</eval>
+                        <size>10</size>
+                        <default>0</default>
+                      </config>
+                    </TCEforms>
+                  </pointsTo>
+                  <validationText>
+                    <TCEforms>
+                      <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.text</label>
+                      <config>
+                        <type>text</type>
+                        <eval>trim,required</eval>
+                        <rows>5</rows>
+                        <cols>200</cols>
+                        <enableRichtext>true</enableRichtext>
+                        <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+                      </config>
+                    </TCEforms>
+                  </validationText>
+                </el>
+              </settings.validation>
+            </el>
+          </validations>
+        </el>
+      </ROOT>
+    </sVALIDATION>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.default_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <startbuttontext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.startbuttontext</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Start</default>
+              </config>
+            </TCEforms>
+          </startbuttontext>
+          <nextbuttontext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.nextbuttontext</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Nächste Frage</default>
+              </config>
+            </TCEforms>
+          </nextbuttontext>
+          <lastbuttontext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.lastbuttontext</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Zur Auswertung</default>
+              </config>
+            </TCEforms>
+          </lastbuttontext>
+          <repeatbuttontext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.repeatbuttontext</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Nochmal versuchen</default>
+              </config>
+            </TCEforms>
+          </repeatbuttontext>
+          <question>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.question</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Frage</default>
+              </config>
+            </TCEforms>
+          </question>
+          <resultheadingtop>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.resultheadingtop</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Auflösung:</default>
+              </config>
+            </TCEforms>
+          </resultheadingtop>
+          <maxpoints>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.validation.maxpoints</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required,int</eval>
+                <size>10</size>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </maxpoints>
+          <thanks>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.thanks</label>
+              <config>
+                <type>input</type>
+                <eval>trim</eval>
+                <size>250</size>
+                <default>Vielen Dank für deine Teilnahme!</default>
+              </config>
+            </TCEforms>
+          </thanks>
+          <isRestartAble>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_picturechoice.isRestartAble</label>
+              <config>
+                <type>check</type>
+                <default>0</default>
+              </config>
+            </TCEforms>
+          </isRestartAble>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 99 - 0
extensions/mrm_be/Configuration/FlexForms/podcast.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <media>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_podcast.subtitle</label>
+               <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>mp3</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>media</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media.addFileReference</createNewRelationLinkTitle>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>mp3</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </media>
+          <transcript>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_podcast.transcript</label>
+              <config>
+                <type>text</type>
+                <eval>trim,required</eval>
+                <rows>5</rows>
+                <cols>200</cols>
+                <enableRichtext>true</enableRichtext>
+                <richtextConfiguration>mrm_be_cm_RTE</richtextConfiguration>
+              </config>
+            </TCEforms>
+          </transcript>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 90 - 0
extensions/mrm_be/Configuration/FlexForms/postimage.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_postimage.subtitle</label>
+              <config>
+                <type>inline</type>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

+ 188 - 0
extensions/mrm_be/Configuration/FlexForms/publication.xml

@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEF>
+      <ROOT>
+        <type>array</type>
+        <el>
+          <image>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.image</label>
+              <config>
+                <type>inline</type>
+                <minitems>1</minitems>
+                <maxitems>1</maxitems>
+                <foreign_table>sys_file_reference</foreign_table>
+                <foreign_table_field>tablenames</foreign_table_field>
+                <foreign_label>uid_local</foreign_label>
+                <foreign_sortby>sorting_foreign</foreign_sortby>
+                <foreign_field>uid_foreign</foreign_field>
+                <foreign_selector>uid_local</foreign_selector>
+                <foreign_selector_fieldTcaOverride>
+                  <config>
+                    <appearance>
+                      <elementBrowserType>file</elementBrowserType>
+                      <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed>
+                    </appearance>
+                  </config>
+                </foreign_selector_fieldTcaOverride>
+                <foreign_types type="array">
+                  <numIndex index="0">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                  <numIndex index="2">
+                    <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
+                  </numIndex>
+                </foreign_types>
+                <foreign_match_fields>
+                  <fieldname>image</fieldname>
+                  <!-- CAUTION!! Replace "fal" with the variable name of this field! -->
+                </foreign_match_fields>
+                <appearance type="array">
+                  <fileUploadAllowed>0</fileUploadAllowed>
+                  <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
+                  <headerThumbnail>
+                    <field>uid_local</field>
+                    <height>64</height>
+                    <width>64</width>
+                  </headerThumbnail>
+                  <enabledControls>
+                    <info>1</info>
+                    <new>0</new>
+                    <dragdrop>0</dragdrop>
+                    <sort>1</sort>
+                    <hide>0</hide>
+                    <delete>1</delete>
+                    <localize>0</localize>
+                  </enabledControls>
+                  <createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
+                </appearance>
+                <behaviour>
+                  <localizationMode>select</localizationMode>
+                  <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
+                </behaviour>
+                <overrideChildTca>
+                  <columns type="array">
+                    <uid_local type="array">
+                      <config type="array">
+                        <appearance type="array">
+                          <elementBrowserType>file</elementBrowserType>
+                          <elementBrowserAllowed>jpg,png,svg,jpeg,gif</elementBrowserAllowed>
+                        </appearance>
+                      </config>
+                    </uid_local>
+                  </columns>
+                  <types type="array">
+                    <numIndex index="2">
+                      <showitem>--palette--;;filePalette</showitem>
+                    </numIndex>
+                  </types>
+                </overrideChildTca>
+              </config>
+            </TCEforms>
+          </image>
+          <pdflink>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.pdflink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <eval>required</eval>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>page,folder,mail,spec,telephone,url</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </pdflink>
+          <htmllink>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.htmllink</label>
+              <config>
+                <type>input</type>
+                <renderType>inputLink</renderType>
+                <fieldControl>
+                  <linkPopup>
+                    <options>
+                      <blindLinkFields>params,class</blindLinkFields>
+                      <blindLinkOptions>file,folder,mail,spec,telephone,url</blindLinkOptions>
+                    </options>
+                  </linkPopup>
+                </fieldControl>
+              </config>
+            </TCEforms>
+          </htmllink>
+          <issuekey>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.issuekey</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </issuekey>
+          <issuenumber>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.issuenumber</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </issuenumber>
+          <issuetitle>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.issuetitle</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </issuetitle>
+          <issueheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.issueheadline</label>
+              <config>
+                <type>input</type>
+                <eval>trim,required</eval>
+                <size>200</size>
+              </config>
+            </TCEforms>
+          </issueheadline>
+          <starttime>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.starttime</label>
+              <config>
+                <type>input</type>
+                <renderType>inputDateTime</renderType>
+                <size>8</size>
+                <eval>date,required</eval>
+              </config>
+            </TCEforms>
+          </starttime>
+          <endtime>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_publication.endtime</label>
+              <config>
+                <type>input</type>
+                <renderType>inputDateTime</renderType>
+                <size>8</size>
+                <eval>date,required</eval>
+              </config>
+            </TCEforms>
+          </endtime>
+        </el>
+      </ROOT>
+    </sDEF>
+  </sheets>
+</T3DataStructure>

Some files were not shown because too many files changed in this diff