PHP-Code:
<?php if (count($this->data)): ?>
<?php
$factory = $this->getContainer()->get('metamodels.factory');
$model = $factory->getMetaModel('mm_vereine');
// Kategorien
$modelKat = $factory->getMetaModel('mm_kategorie');
$filterKat = $modelKat->prepareFilter(19, []);
$itemsKat = $modelKat->findByFilter($filterKat);
$arrItemsKat = $itemsKat->parseAll('text');
// Festlegen von Pflichtfeldern für das Formular
$mandatoryFields = array('title','category');
// Handling Form submit
if(\Input::post('FORM_SUBMIT') == 'mm_vereine'){
foreach($this->data as $arrItem){
// Handling für Eingabefelder
$type = "";
$select = array('category');
$textarea = array('beschreibung','oeffnungszeiten', 'termine');
$filetype = array('singleSRC','multiSRC');
$multifile = ($key == 'multiSRC')? true : false;
$checkbox = array('addImage','addGallery','published');
// Edit Item
if (\Input::post('ACTION') == "edit"){
foreach($arrItem['raw'] as $key => $value){
if(in_array($key, $checkbox))
$arrItem['raw'][$key] = (\Input::post($key))? 1 : 0;
elseif (in_array($key, $textarea))
$arrItem['raw'][$key] = html_entity_decode(\Input::post($key));
elseif ($key == 'datelatestnews')
$arrItem['raw'][$key] = strtotime(\Input::post($key));
elseif (in_array($key, $filetype)){
$dst = 'files/allianz-thueringer-becken/vereine/'.$arrItem['raw']['alias'];
if (!file_exists($dst)){
$objFiles = \Files::getInstance();
$objFiles->mkdir($dst);
$objFolder = \Dbafs::addResource( $dst );
echo "Ordner existiert nicht";
}
$storeFolderAbs = TL_ROOT.'/'.$dst;
$storeFolder = $dst;
$targetTmpPath = $storeFolder . '/tmp';
$targetTmpPathAbs = $storeFolderAbs . '/tmp';
if(!file_exists($storeFolderAbs)){
new \Folder($storeFolder);
\Dbafs::addResource($storeFolder);
}
if($key != "multiSRC"){
echo "Einzelbild";
$tmp_name = $_FILES[$key]['tmp_name'];
$name = basename($_FILES[$key]["name"]);
move_uploaded_file($tmp_name, "$storeFolder/$name");
\Image::resize("$storeFolder/$name", 800, 800, "proportional");
$objFile = \Dbafs::addResource("$storeFolder/$name");
$bild = array();
$bild['bin'][] = $objFile->uuid;
$bild['value'][] = \StringUtil::binToUuid($objFile->uuid);
$bild['path'][] = $objFile->path;
$bild['meta'][] = array();
$arrItem['raw'][$key] = $bild;
dump($arrItem['raw'][$key]);
}else{
$bild = array();
if(!file_exists($storeFolderAbs."/galerie")){
new \Folder($storeFolder."/galerie");
\Dbafs::addResource($storeFolder."/galerie");
}
foreach($_FILES[$key]['name'] as $index=>$value){
$tmp_name = $_FILES[$key]['tmp_name'][$index];
$name = basename($_FILES[$key]["name"][$index]);
move_uploaded_file($tmp_name, "$storeFolder/galerie/$name");
\Image::resize("$storeFolder/galerie/$name", 800, 800, "proportional");
$objFile = \Dbafs::addResource("$storeFolder/galerie/$name");
$bild['bin'][] = $objFile->uuid;
$bild['value'][] = \StringUtil::binToUuid($objFile->uuid);
$bild['path'][] = $objFile->path;
$bild['meta'][] = array();
}
$arrItem['raw'][$key] = $bild;
}
unset($_FILES[$key]);
}
elseif (\Input::post($key) != $arrItem['raw'][$key])
$arrItem['raw'][$key] = \Input::post($key);
// Variable zurücksetzen
\Input::setPost($key, null);
}
}
}
$ObjItem = new \MetaModels\Item($model, $arrItem['raw']);
$ObjItem->save();
$this->reload();
// alle Items
$items = $model->findByFilter($filter);
// alternativ nur Knoten raw und text
$arrItems = $items->parseAll('text');
// Variable zurücksetzen
\Input::setPost('FORM_SUBMIT', null);
}
?>
<script>document.write('<script src="assets/tinymce4/js/tinymce.min.js">\x3C/script>')</script>
<script>
tinymce.init({
skin: 'contao',
selector: 'textarea',
language: 'de',
element_format: 'html',
document_base_url: '<?= Environment::get('base') ?>',
entities: '160,nbsp,60,lt,62,gt,173,shy',
branding: false,
setup: function(editor) {
editor.getElement().removeAttribute('required');
},
content_css: 'system/themes/<?= Backend::getTheme() ?>/tinymce.min.css',
plugins: 'autosave charmap code fullscreen image importcss link lists paste searchreplace stripnbsp tabfocus table visualblocks visualchars',
browser_spellcheck: true,
tabfocus_elements: ':prev,:next',
importcss_append: true,
extended_valid_elements: 'q[cite|class|title],article,section,hgroup,figure,figcaption',
menubar: 'edit insert view format table',
toolbar: 'link unlink | image | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | code'
});
</script>
<div class="verein_item verein_full">
<?php foreach ($this->data as $arrItem): ?>
<div class="verein_fee last block">
<form method="post" class="edit_form" action="{{env::request}}" id="mm_vereine" enctype="multipart/form-data">
<div class="formbody_edit">
<h2>Verein bearbeiten: <?= $arrItem['text']['title'] ?></h2>
<input type="hidden" name="FORM_SUBMIT" value="mm_vereine">
<input type="hidden" name="ACTION" value="edit">
<input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
<input type="hidden" name="MAX_FILE_SIZE" value="4096000">
<input type="hidden" name="id" value="<?= $arrItem['raw']['id'] ?>">
<?php foreach($arrItem['attributes'] as $key => $value): ?>
<?php $mandatory = (in_array($key,$mandatoryFields))? true : false; ?>
<?php if ($key == "author"): ?>
<input type="hidden" name="author" value="{{user::id}}">
<?php else: ?>
<?php
// Handling für Eingabefelder
$type = "";
$select = array('category');
$textarea = array('beschreibung','oeffnungszeiten', 'termine');
$filetype = array('singleSRC','multiSRC');
$multifile = ($key == 'multiSRC')? true : false;
$checkbox = array('addImage','addGallery','published');
if (in_array($key, $select))
$type = "select";
elseif (in_array($key, $textarea))
$type = "textarea";
elseif (in_array($key, $filetype))
$type = "file";
elseif (in_array($key, $checkbox))
$type = "checkbox";
elseif ($key == 'datelatestnews')
$type = "date";
elseif ($key == 'email')
$type = "email";
else
$type = "text";
?>
<div class="widget widget-<?= $type ?> <?php if($mandatory):?>mandatory<?php endif;?>">
<?php if(!in_array($type, array("checkbox", "radio"))): ?>
<label for="ctrl_<?= $key ?>" <?php if($mandatory):?>class="mandatory"<?php endif;?>> <?= $value ?> <?php if($mandatory):?> <span class="mandatory">*</span><?php endif;?></label>
<?php endif; ?>
<?php
$wert = $arrItem['text'][$key];
$mandatoryTag = ($mandatory)? "required=''": "";
switch ($type) {
case "text":
echo "<input type='text' name='$key' id='ctrl_$key' class='text' value='$wert' $mandatoryTag>";
break;
case "email":
echo "<input type='email' name='$key' id='ctrl_$key' class='text' value='$wert' $mandatoryTag>";
break;
case "date":
echo "<input type='date' name='$key' id='ctrl_$key' class='text' value='". $this->parseDate("Y-m-d", $arrItem['raw'][$key]) ."' $mandatoryTag>";
break;
case "textarea":
echo "<textarea type='textarea' name='$key' id='ctrl_$key' class='textarea' rows='12' cols='80' $mandatoryTag>$wert</textarea>";
break;
case "checkbox":
$checked = ($wert == 1)? "checked=''" : "";
echo "<input type='checkbox' name='$key' id='opt_$key_0' class='checkbox' value='1' $checked><label for='ctrl_$key' $mandatoryTag>$value</label>";
break;
case "select":
echo "<select name='$key' id='ctrl_$key' class='select' >";
foreach($arrItemsKat as $kat){
$selected = ($kat['text']['title'] == $wert)? "selected=''" : "";
echo "<option value='". $kat['raw']['id'] ."' $selected >". $kat['text']['title'] ."</option>";
}
echo "</select>";
break;
case "file":
if ($multifile){
if($wert != ""){
echo "<div class='vorschaubild' style='display:block;'>";
foreach($arrItem['raw'][$key]["path"] as $image)
echo "<figure class='image_container float_left'>{{picture::$image?size=3&template=picture_default}}</figure>";
echo"<div class='clear'></div></div><br />";
}
echo "<input type='file' name='".$key."[]' id='ctrl_$key' class='upload' accept='.jpg,.jpeg,.gif,.png,.pdf' multiple>";
}else{
if($wert != ""){
echo "<div class='vorschaubild'><figure class='image_container'>{{picture::".$arrItem['text'][$key]."?size=3&template=picture_default}}</figure></div><br />";
}
echo "<input type='file' name='$key' id='ctrl_$key' class='upload' accept='.jpg,.jpeg,.gif,.png,.pdf'>";
}
break;
}
?>
</div>
<?php endif; ?>
<?php endforeach; ?>
</div>
<div class="formbody_submit widget-submit widget">
<div class="submit_container">
<input type="submit" name="save" class="submit save" accesskey="s" value="Speichern">
</div>
</div>
</form>
</div>
<?php endforeach; ?>
</div>
<?php else : ?>
<?php $this->block('noItem'); ?>
<p class="info"><?= $this->noItemsMsg ?></p>
<?php $this->endblock(); ?>
<?php endif; ?>
Edit:
Lesezeichen