File: /var/www/vhosts/creativefellows.nl/fvr.creativefellows.nl/src/Domain/Form/Data/FormFieldData.php
<?php
namespace App\Domain\Form\Data;
use App\Domain\Data;
final class FormFieldData extends Data
{
protected $options = [];
protected $html;
protected $error;
protected $value;
protected $class_prefix= "input-group-label__";
public function id()
{
return $this->form_element_id;
}
public function setOptions($options)
{
$this->options = $options;
}
public function html($sizes)
{
$this->sizes = $sizes;
$this->create();
return $this->html;
}
private function create()
{
$this->html .= '<div class="grid-x grid-padding-x">';
$this->html .= $this->inputType();
$this->html .= '</div>';
}
public function type()
{
return $this->field_id;
}
public function postName()
{
return preg_replace("/ /","",strtolower($this->name()) );
}
public function postId()
{
return $this->postName()."-".$this->id();
}
public function setPostValue($post)
{
$this->post_value = $post;
}
public function postValue()
{
if(is_array($this->post_value))
{
$values = [];
foreach($this->options() as $i => $option)
{
if(in_array($i, $this->post_value)) $values[] = $option->name();
}
return implode("<br />",$values);
}
return $this->post_value;
}
public function htmlRow()
{
switch( $this->type() )
{
default:
return '<table class="row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th class="small-12 large-4 columns first" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0 auto;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0 auto;padding-bottom:0;padding-left:24px;padding-right:12px;padding-top:0;text-align:left;vertical-align:top;width:216px;word-wrap:break-word"><table style="border-collapse:collapse;border-spacing:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;word-wrap:break-word;font-weight:bold">'. $this->name() .'</th></tr></tbody></table></th><th class="small-12 large-8 columns last" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0 auto;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0 auto;padding-bottom:0;padding-left:12px;padding-right:24px;padding-top:0;text-align:left;vertical-align:top;width:456px;word-wrap:break-word"><table style="border-collapse:collapse;border-spacing:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;word-wrap:break-word">'. $this->postValue() .'</th></tr></tbody></table></th></tr></tbody></table>';
break;
case 32:
return '<table class="row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th class="small-12 large-12 columns first last" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0 auto;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0 auto;padding-bottom:0;padding-left:24px;padding-right:24px;padding-top:0;text-align:left;vertical-align:top;width:696px;word-wrap:break-word"><table style="border-collapse:collapse;border-spacing:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;word-wrap:break-word"><h4 style="color:#082c5c;margin:24px 0 0 0;font-size:15px;font-weight:bold;">'. $this->name() .'</h4></th><th class="expander" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding:0!important;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;visibility:hidden;width:0;word-wrap:break-word"></th></tr></tbody></table></th></tr></tbody></table>';
break;
}
}
private function required()
{
return $this->value == 1 ? "required" : "";
}
private function inputType()
{
switch( $this->type() )
{
// input
default:
return '<div class="'. $this->sizes["label"] .' cell input-label">
<label class="label__'. $this->id() .'">'. $this->name() .'</label>
</div>
<div class="'. $this->sizes["input"] .' cell">
<input type="text" id="'. $this->postId() .'" class="input input-group-field" name="'. $this->postName() .'" value="" placeholder="'. $this->placeholder() .'" '. $this->required() .'>
'. $this->inputError() .'
</div>';
break;
// textarea
case 5:
return '<div class="'. $this->sizes["label"] .' cell input-label">
<label class="label__'. $this->id() .'">'. $this->name() .'</label>
</div>
<div class="'. $this->sizes["input"] .' cell">
<div class="'. $this->class() .'">
<textarea id="'. $this->postId() .'" class="textarea" name="'. $this->postName() .'" placeholder="'. $this->placeholder() .'"></textarea>
'. $this->inputError() .'
</div>
</div>';
break;
// select
case 28:
$select = '<div class="'. $this->sizes["label"] .' input-label">';
$select .= '<label class="text-right label__'. $this->id() .'">'. $this->name() .'</label>';
$select .= '</div>';
$select .= '<div class="'. $this->sizes["input"] .' cell">';
$select .= '<select id="'. $this->postId() .'" name="'. $this->postName() .'" >';
foreach($this->options() as $option)
{
$select .= '<option value="'. $option->value() .'">'. $option->name() .'</option>';
}
$select .= '<select>';
$select .= $this->inputError();
$select .= '</div>';
return $select;
break;
// ceckbox
case 24:
$check = '<div class="cell '. $this->sizes["input"] .'">';
$check .= '<h5 class="choice-options-header">'. $this->name() .'</h5>';
foreach($this->options() as $i => $option)
{
$check .= '<div class="grid-x">';
$check .= '<div class="cell shrink"><input id="'. $this->postId() . $i .'" name="'. $this->postName() .'[]" type="checkbox" '. $this->required() .' value="'. $i .'"></div>';
$check .= '<div class="cell auto text-left"><label for="'. $this->postId() . $i .'" class="option-label">'. $option->name() .'</label></div>';
$check .= '</div>';
}
$check .= '</div>';
return $check;
break;
case 32:
return '<div class="cell '. $this->sizes["input"] .'">
<h4 class="form-group-header">'. $this->name() .'</h4>
</div>';
break;
}
}
private function options()
{
return $this->options;
}
private function name()
{
return $this->name;
}
private function value()
{
return $this->value;
}
private function placeholder()
{
return $this->name;
}
private function class()
{
return $this->class_prefix . $this->class;
}
private function inputLabel()
{
switch( $this->type() )
{
default:
return '<div class="small-12 medium-3 cell">
<label class="text-left middle label__'. $this->id() .'">'. $this->name() .'</label>
</div>';
break;
case "hidden":
case "button":
return;
break;
}
return $label;
}
private function inputError(){
return '<span class="form-error">'. $this->error .'</span>';
}
}