Преглед на файлове

add extra infos prefilled gedoens

ksieren преди 2 години
родител
ревизия
0c2c48fcec

+ 64 - 0
Classes/Hooks/PageLayoutView/MrmBeCmExtraInfosboxprefilledPreviewRenderer.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_extra_infosbox_prefilled"
+ */
+class MrmBeCmExtraInfosboxprefilledPreviewRenderer 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_prefilled') {
+        $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);
+        */
+      }
+   }
+}
+

+ 211 - 120
Classes/Hooks/TCE/TCEMainHook.php

@@ -1534,6 +1534,97 @@ class TCEMainHook
           }
         $subs[] = $sub;
         break;
+      case "mrm_be_cm_extra_infosbox_prefilled":
+        $type = "typo3_extrainfosbox_prefilled";
+        $open = $flex["isInitialyOpen"] == "0" ? true : false;
+        $headline = $flex['headline'];
+        $elements = [];
+
+        $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;
+          }
+        }
+
+        $cleaned = [];
+        $keys = ["healine", "image", "icon", "isInitialyOpen", "noAutoOpen"];
+
+        foreach ($keys as $k) {
+          unset($k);
+        }
+        foreach ($flex as $key => $val) {
+          if (strpos($key, 'headline') != false) {
+            $new_value = str_replace('headline', '', $key);
+            if (array_key_exists($new_value, $cleaned)) {
+              continue;
+            } else {
+              $cleaned[$new_value]['headline'] = $val;
+            }
+          } elseif (strpos($key, 'text') != false) {
+            $new_value = str_replace('text', '', $key);
+            if (!array_key_exists($new_value, $cleaned)) {
+              continue;
+            } else {
+              $cleaned[$new_value]['text'] = $val;
+            }
+          }
+          elseif (strpos($key, 'url') != false) {
+            $new_value = str_replace('url', '', $key);
+            if (!array_key_exists($new_value, $cleaned)) {
+              continue;
+            } else {
+              $cleaned[$new_value]['url'] = $val;
+            }
+          }
+        }
+
+        foreach($cleaned as $k => $val) {
+          foreach($val as $field) {
+            if(empty($field)) unset($cleaned[$k]);
+          }
+        }
+
+        foreach($cleaned as $key => $value) {
+          $box = $this->createContentElement("boxwrapper");
+          $box["subElements"] = array_merge($box["subElements"], $this->checkText($value['headline'], $dbReference, $processedData, "h3"));
+          $box["subElements"] = array_merge($box["subElements"], $this->checkText($value['text'], $dbReference, $processedData, "typo3_paragraph"));
+          $box["subElements"] = array_merge($box["subElements"], $this->checkText($value['url'], $dbReference, $processedData, "link"));
+          $elements[] = $box;
+        }
+
+        $sub["subElements"] = array_merge($sub["subElements"], $elements);
+        $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());
 
@@ -1805,130 +1896,130 @@ class TCEMainHook
 
       case "mrm_be_cm_interviewantwort":
         $props['lang'] = $flex['lang'] ?? '';
-        $subs[] = $this->createContentElement("interviewantwort", $props, array("interviewee" => trim($flex['interviewee']),"answer" => trim($flex['answer'])));
+        $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;
-            }
+      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",
+        }
+
+        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;
+                })
               ),
-              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;
+
+            ),
+          )
+        );
+        $processedData["injections"][] = "quiz-averagePoints";
+        $processedData["injections"][] = "quiz-alreadyReachedPoints";
+        $subs[] = $s;
+        $processedData["status"]["hasQuiz"] = true;
+        break;
 
       default:
         $this->log("MISSING PROCESSDATA 4 " . $dbReference['CType']);

+ 485 - 0
Configuration/FlexForms/extra-infosbox-prefilled.xml

@@ -0,0 +1,485 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3DataStructure>
+  <meta>
+    <langDisable>1</langDisable>
+  </meta>
+  <sheets>
+    <sDEFAULTLINKS>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.dynamic_elements</sheetTitle>
+        <type>array</type>
+        <el>
+          <berufenetheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufenetheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>BERUFNET</default>
+                </config>
+            </TCEforms>
+          </berufenetheadline>
+          <berufenettext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufenettext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Die Webseite der Bundesagentur für Arbeit bietet über 3.000 aktuelle Berufsbeschreibungen in Text und Bild.</default>
+              </config>
+            </TCEforms>
+          </berufenettext>
+          <berufeneturl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufeneturl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.arbeitsagentur.de/berufnet</default>
+              </config>
+            </TCEforms>
+          </berufeneturl>
+          <berufetvheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufetvheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>BERUFE.TV</default>
+                </config>
+            </TCEforms>
+          </berufetvheadline>
+          <berufetvtext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufetvtext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Das Filmportal der Bundesagentur für Arbeit listet Filme über Ausbildungsberufe und Studiengänge.</default>
+              </config>
+            </TCEforms>
+          </berufetvtext>
+          <berufetvurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufetvurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.berufe.tv</default>
+              </config>
+            </TCEforms>
+          </berufetvurl>
+          <studienwahldeheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studienwahldeheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>studienwahl.de</default>
+                </config>
+            </TCEforms>
+          </studienwahldeheadline>
+          <studienwahldetext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studienwahldetext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>studienwahl.de Das Infoportal der Bundesagentur für Arbeit und der Stiftung für Hochschulzulassung informiert zu Themen rund ums Studium.</default>
+              </config>
+            </TCEforms>
+          </studienwahldetext>
+          <studienwahldeurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studienwahldeurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.studienwahl.de</default>
+              </config>
+            </TCEforms>
+          </studienwahldeurl>
+          <studiensucheheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studiensucheheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Studiensuche</default>
+                </config>
+            </TCEforms>
+          </studiensucheheadline>
+          <studiensuchetext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studiensuchetext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Die Studiensuche der Bundesagentur für Arbeit zeigt auf, welche Studiengänge an welchen Hochschulen das gewählte Studienfach angeboten wird.</default>
+              </config>
+            </TCEforms>
+          </studiensuchetext>
+          <studiensucheurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studiensucheurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.arbeitsagentur.de/studiensuche </default>
+              </config>
+            </TCEforms>
+          </studiensucheurl>
+          <studiencheckheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studiencheckheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Studiencheck</default>
+                </config>
+            </TCEforms>
+          </studiencheckheadline>
+          <studienchecktext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studienchecktext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Das Portal der Bundesagentur für Arbeit bietet studiengangspezifische Wissenstests (Checks) für Studieninteressierte an. Die Checks prüfen die Voraussetzungen für die Aufnahme eines Studiums an einer bestimmten Hochschule</default>
+              </config>
+            </TCEforms>
+          </studienchecktext>
+          <studiencheckurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.studiencheckurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.studiencheck.de</default>
+              </config>
+            </TCEforms>
+          </studiencheckurl>
+          <ausbildungsplatzsucheheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsucheheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Ausbildungsplatzsuche</default>
+                </config>
+            </TCEforms>
+          </ausbildungsplatzsucheheadline>
+          <ausbildungsplatzsuchetext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsuchetext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Die Ausbildungsplatzsuche der Bundesagentur für Arbeit ermöglicht die Suche nach dualen Ausbildungsplätzen in ganz Deutschland.</default>
+              </config>
+            </TCEforms>
+          </ausbildungsplatzsuchetext>
+          <ausbildungsplatzsucheurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsucheurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.arbeitsagentur.de/ausbildungsplatzsuche</default>
+              </config>
+            </TCEforms>
+          </ausbildungsplatzsucheurl>
+          <berufsausbildungundmehrheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Berufsausbildung und mehr</default>
+                </config>
+            </TCEforms>
+          </berufsausbildungundmehrheadline>
+          <berufsausbildungundmehrtext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrtext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Dieses Angebot der Bundesagentur für Arbeit erlaubt die bundesweite Recherche nach schulischen Ausbildungen.</default>
+              </config>
+            </TCEforms>
+          </berufsausbildungundmehrtext>
+          <berufsausbildungundmehrurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.arbeitsagentur.de/berufsausbildung</default>
+              </config>
+            </TCEforms>
+          </berufsausbildungundmehrurl>
+          <checkuheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.checkuheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Check-U - das Erkundungstool der Bundesagentur für Arbeit</default>
+                </config>
+            </TCEforms>
+          </checkuheadline>
+          <checkutext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.checkutext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>Mit dem Erkundungstool Check-U findest du heraus, welche Ausbildungsberufe und Studienfelder besonders gut zu deinen Stärken und Interessen passen.</default>
+              </config>
+            </TCEforms>
+          </checkutext>
+          <checkuurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.checkuurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.check-u.de</default>
+              </config>
+            </TCEforms>
+          </checkuurl>
+          <jobsucheheadline>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.jobsucheheadline</label>
+                <config>
+                  <type>input</type>
+                  <eval>trim</eval>
+                  <size>250</size>
+                  <default>Jobsuche der Bundesagentur für Arbeit</default>
+                </config>
+            </TCEforms>
+          </jobsucheheadline>
+          <jobsuchetext>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.jobsuchetext</label>
+              <config>
+                <type>text</type>
+                <eval>trim</eval>
+                <rows>3</rows>
+                <cols>200</cols>
+                <default>https://www.arbeitsagentur.de/jobsuche</default>
+              </config>
+            </TCEforms>
+          </jobsuchetext>
+          <jobsucheurl>
+            <TCEforms>
+              <label>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.jobsucheurl</label>
+              <config>
+                <type>input</type>
+                <size>20</size>
+                <max>30</max>
+                <eval>trim</eval>
+                <default>https://www.arbeitsagentur.de/jobsuche</default>
+              </config>
+            </TCEforms>
+          </jobsucheurl>
+        </el>
+      </ROOT>
+    </sDEFAULTLINKS>
+    <sDEF>
+      <ROOT>
+        <sheetTitle>LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.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>

+ 16 - 0
Configuration/TCA/Overrides/custom_components/extra-infosbox-prefilled.php

@@ -0,0 +1,16 @@
+<?php
+
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
+   'tt_content',
+   'CType',
+    [
+        'LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.title',
+        'mrm_be_cm_extra_infosbox_prefilled',
+        'mrm_be_cm_extra_infosbox_prefilled_icon',
+    ]
+);
+
+$GLOBALS['TCA']['tt_content']['columns']['pi_flexform']['config']['ds'][',mrm_be_cm_extra_infosbox_prefilled'] = 'FILE:EXT:mrm_be/Configuration/FlexForms/extra-infosbox-prefilled.xml';
+$GLOBALS['TCA']['tt_content']['types']['mrm_be_cm_extra_infosbox_prefilled'] = [
+    'showitem' => 'CType;;;1-1-1,pi_flexform;LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.title,',
+];

+ 1 - 0
Configuration/TCA/Overrides/tt_content.php

@@ -50,4 +50,5 @@ require_once(dirname(__FILE__).'/custom_components/interviewfrage.php');
 require_once(dirname(__FILE__).'/custom_components/interviewantwort.php');
 require_once(dirname(__FILE__).'/custom_components/foldouth3.php');
 require_once(dirname(__FILE__).'/custom_components/quizdirect.php');
+require_once(dirname(__FILE__).'/custom_components/extra-infosbox-prefilled.php');
 

+ 13 - 0
Configuration/TsConfig/pageTsConfig.ts

@@ -864,6 +864,19 @@ mod {
           }
         }
 
+
+        mrm_be_cm_extra_infosbox_prefilled {
+          title = LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.title
+          description = LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_extra_infosbox_prefilled.description
+          iconIdentifier = mrm_be_cm_extra_infosbox_prefilled_icon
+          tt_content_defValues {
+            CType = mrm_be_cm_extra_infosbox_prefilled
+          }
+        }
+
+
+
+
         mrm_be_cm_chatbot {
           title = LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.title
           description = LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:mrm_be_cm_chatbot.element_description

+ 137 - 0
Resources/Private/Language/locallang_ttc.xlf

@@ -2026,6 +2026,143 @@
         <source>Link</source>
       </trans-unit>
 
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.title">
+        <source>Weitere-Infos-Box-vorgefüllt</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.description">
+        <source>Zusätzliches Informationsfeld mit vorausgefüllten Feldern</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox.description">
+        <source>Ein Weitere-Infos-Box</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.mainheadline">
+        <source>Überschrift (falls nicht vergeben, erscheint "Weitere Informationen")</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufenetheadline">
+        <source>Berufenet Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufenettext">
+        <source>Berufenet Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufeneturl">
+        <source>Berufenet Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufetvheadline">
+        <source>Berufe.TV Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufetvtext">
+        <source>Berufe.TV Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufetvurl">
+        <source>Berufe.TV Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studienwahldeheadline">
+        <source>studienwahl.de Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studienwahldetext">
+        <source>studienwahl.de Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studienwahldeurl">
+        <source>Studienwahl.de Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studiensucheheadline">
+        <source>studiensuche Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studiensuchetext">
+        <source>studiensuche Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studiensucheurl">
+        <source>studiensuche Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studiencheckheadline">
+        <source>studiencheck Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studienchecktext">
+        <source>studiencheck Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.studiencheckurl">
+        <source>studiencheck Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsucheheadline">
+        <source>Ausbildungsplatsuche Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsuchetext">
+        <source>Ausbildungsplatzsuche Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.ausbildungsplatzsucheurl">
+        <source>Ausbildungsplatzsuche Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrheadline">
+        <source>Berufsausbildung und mehr Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrtext">
+        <source>Berufsausbildung und mehr Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.berufsausbildungundmehrurl">
+        <source>Berufsausbildung und mehr Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.checkuheadline">
+        <source>Check-U - das Erkundungstool der Bundesagentur für Arbeit</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.checkutext">
+        <source>Check-U - das Erkundungstool der Bundesagentur für Arbeit Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.checkuurl">
+        <source>Check-U - das Erkundungstool der Bundesagentur für Arbeit Url</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.jobsucheheadline">
+        <source>Jobsuche der Bundesagentur für Arbeit Headline</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.jobsuchetext">
+        <source>Jobsuche der Bundesagentur für Arbeit Body Text</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.jobsucheurl">
+        <source>Jobsuche der Bundesagentur für Arbeit Url</source>
+      </trans-unit>
+
+
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.isInitialyOpen">
+        <source>Initial geöffnet?</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.noAutoOpen">
+        <source>Kein automatisches Öffnen?</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.contentimage">
+        <source>Bild</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon">
+        <source>Icon (anstelle eines Bildes)</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.0">
+        <source>Kein Icon</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.1">
+        <source>stadtinfo_basics</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.2">
+        <source>geschichte</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.3">
+        <source>kultur_freizeit</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.4">
+        <source>besonderheiten</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.5">
+        <source>kosten_geld</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.6">
+        <source>hochschulen</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.icon.7">
+        <source>studieren</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.default_elements">
+        <source>Einstellungen</source>
+      </trans-unit>
+      <trans-unit id="mrm_be_cm_extra_infosbox_prefilled.dynamic_elements">
+        <source>Content-Elemente</source>
+      </trans-unit>
 
 
 

+ 21 - 0
Resources/Public/Icons/_mrm_be_cm_extra_infosbox_prefilled.svg

@@ -0,0 +1,21 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="64.000000pt" height="64.000000pt" viewBox="0 0 16 16"
+ preserveAspectRatio="xMidYMid meet">
+
+<g transform="translate(0.000000,64.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M346 605 c-17 -13 -16 -17 33 -67 l51 -53 25 28 c23 25 55 37 55 19
+0 -14 -65 -72 -80 -72 -8 0 -45 32 -82 72 l-66 73 -24 -22 c-13 -13 -34 -23
+-47 -23 -12 0 -53 -24 -91 -52 -50 -39 -75 -67 -94 -106 -29 -58 -27 -79 5
+-62 18 10 19 6 19 -125 l0 -135 203 0 203 0 52 65 c46 57 52 70 52 111 l0 46
+-18 -22 c-23 -29 -34 -22 -69 42 l-28 52 -5 -135 -5 -134 -177 -3 -178 -2 0
+170 0 170 177 -2 178 -3 33 -55 c18 -30 37 -62 42 -70 7 -12 21 -3 71 47 l62
+61 -42 71 -42 71 -59 0 c-54 0 -63 3 -87 30 -29 33 -40 36 -67 15z m-167 -105
+c-19 -23 -41 -40 -53 -40 -12 0 -16 4 -10 9 11 12 88 70 92 71 2 0 -12 -18
+-29 -40z"/>
+<path d="M180 370 c0 -6 32 -10 75 -10 43 0 75 4 75 10 0 6 -32 10 -75 10 -43
+0 -75 -4 -75 -10z"/>
+</g>
+</svg>

+ 16 - 0
Resources/Public/Icons/mrm_be_cm_extra_infosbox_prefilled.svg

@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
+ preserveAspectRatio="xMidYMid meet">
+
+<g transform="translate(0.000000,16.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M26 141 c-21 -8 -32 -71 -12 -71 7 0 12 -10 12 -22 -1 -29 42 -46 82
+-32 21 7 28 17 30 42 2 21 -1 32 -10 32 -7 0 -2 7 11 16 22 16 23 17 5 27 -23
+13 -92 17 -118 8z m83 -33 c-32 -20 -38 -31 -11 -21 9 3 5 -4 -11 -16 -15 -13
+-33 -20 -40 -18 -7 3 -5 6 5 6 31 2 30 21 -3 33 l-32 11 29 11 c15 7 42 12 60
+12 l33 0 -30 -18z"/>
+</g>
+</svg>

+ 2 - 0
ext_localconf.php

@@ -56,6 +56,7 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php'][
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['mrm_be_cm_interviewantwort'] = 'Meramo\mrm_be\Hooks\PageLayoutView\MrmBeCmInterviewantwortPreviewRenderer';
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['mrm_be_cm_foldout_h3'] = 'Meramo\mrm_be\Hooks\PageLayoutView\MrmBeCmFoldoutH3PreviewRenderer';
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['mrm_be_cm_quiz_direct'] = 'Meramo\mrm_be\Hooks\PageLayoutView\MrmBeCmQuizdirectPreviewRenderer';
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['mrm_be_cm_extra_infosbox_prefilled'] = 'Meramo\mrm_be\Hooks\PageLayoutView\MrmBeCmExtraInfosboxprefilledPreviewRenderer';
 
 /* icons start */
 $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
@@ -112,6 +113,7 @@ $iconRegistry->registerIcon( 'mrm_be_cm_interviewfrage_icon', TYPO3\CMS\Core\Ima
 $iconRegistry->registerIcon( 'mrm_be_cm_interviewantwort_icon', TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, ['source' => 'EXT:mrm_be/Resources/Public/Icons/mrm_be_cm_interviewantwort.svg'] );
 $iconRegistry->registerIcon( 'mrm_be_cm_foldout_h3_icon', TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, ['source' => 'EXT:mrm_be/Resources/Public/Icons/mrm_be_cm_foldout_h3.svg'] );
 $iconRegistry->registerIcon( 'mrm_be_cm_quiz_direct_icon', TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, ['source' => 'EXT:mrm_be/Resources/Public/Icons/mrm_be_cm_quiz_direct.svg'] );
+$iconRegistry->registerIcon( 'mrm_be_cm_extra_infosbox_prefilled_icon', TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, ['source' => 'EXT:mrm_be/Resources/Public/Icons/mrm_be_cm_extra_infosbox_prefilled.svg'] );