示例#1
0
文件: text.php 项目: kidaa30/Swevers
function htmlentities_all($data, $keephtml = false)
{
    if (is_array($data)) {
        foreach ($data as $key => $value) {
            $data[$key] = htmlentities_all($value, $keephtml);
        }
    }
    if (is_string($data)) {
        $data = htmlentities($data, ENT_QUOTES, 'UTF-8', false);
        if ($keephtml) {
            $data = htmlspecialchars_decode($data);
        }
    }
    return $data;
}
示例#2
0
文件: view.php 项目: kidaa30/Swevers
 public function load($viewname, $_vars = array())
 {
     foreach ($_vars as $_key => $_value) {
         ${$_key} = htmlentities_all($_value, true);
         if ($_key == 'title') {
             Router::$document_title = ${$_key};
         }
     }
     $parameters = $_vars;
     unset($_vars);
     ob_start();
     if (strstr($viewname, '/')) {
         $viewpath = explode('/', $viewname);
         if (file_exists(CONTENTPATH . Router::get_content_prefix() . strtolower($viewpath[0]) . '/views/' . strtolower($viewpath[1]) . ".php")) {
             include CONTENTPATH . Router::get_content_prefix() . strtolower($viewpath[0]) . '/views/' . strtolower($viewpath[1]) . ".php";
         } else {
             if (file_exists($this->pathname . '/views/' . strtolower($viewname) . ".php")) {
                 include $this->pathname . '/views/' . strtolower($viewname) . ".php";
             } else {
                 if (strlen(Router::get_content_prefix()) > 1 && file_exists(CONTENTPATH . Router::get_content_prefix() . 'views/' . strtolower($viewname) . ".php")) {
                     include CONTENTPATH . Router::get_content_prefix() . 'views/' . strtolower($viewname) . ".php";
                 } else {
                     if (file_exists(VIEWSPATH . strtolower($viewname) . ".php")) {
                         include VIEWSPATH . strtolower($viewname) . ".php";
                     }
                 }
             }
         }
     } else {
         if (file_exists($this->pathname . '/views/' . strtolower($viewname) . ".php")) {
             include $this->pathname . '/views/' . strtolower($viewname) . ".php";
         } else {
             if (strlen(Router::get_content_prefix()) > 1 && file_exists(CONTENTPATH . Router::get_content_prefix() . 'views/' . strtolower($viewname) . ".php")) {
                 include CONTENTPATH . Router::get_content_prefix() . 'views/' . strtolower($viewname) . ".php";
             } else {
                 if (file_exists(VIEWSPATH . strtolower($viewname) . ".php")) {
                     include VIEWSPATH . strtolower($viewname) . ".php";
                 }
             }
         }
     }
     $result = ob_get_contents();
     ob_end_clean();
     return $result;
 }
示例#3
0
    function print_row($field, $shownfields, $row, $object, $show_edit = true, $level = 0, $currentslug = '', $parenturl = '', $delete_limits = array())
    {
        if ($level == 0) {
            echo '<tbody data-id="' . $row->id . '">';
        }
        $user = FW4_User::get_user();
        $typemanager = FW4_Type_Manager::get_instance();
        ?>
		<tr<?php 
        echo $level > 0 ? ' data-root="' . $GLOBALS['root_id'] . '"' : '';
        ?>
 data-id="<?php 
        echo $row->id;
        ?>
" onclick="window.location='<?php 
        echo $parenturl . ($level > 0 ? $GLOBALS['recursive_name'] : $field['name']);
        ?>
/<?php 
        echo $row->id;
        ?>
/';">
			<?php 
        if (isset($field['sortable']) && $field['sortable']) {
            ?>
				<td valign="middle">
					<?php 
            if ($level == 0) {
                ?>
						<img class="sort-handle" src="<?php 
                echo url(ADMINRESOURCES . 'images/sort.png');
                ?>
" width="10" height="11"/><input type="hidden" name="sort-<?php 
                echo $row->id;
                ?>
" value="<?php 
                echo $row->_sort_order;
                ?>
" />
					<?php 
            }
            ?>
				</td>
			<?php 
        }
        $i = 0;
        foreach ($shownfields as $name => $subfield) {
            ?>
				<td<?php 
            if ($subfield->getName() == "price") {
                ?>
 align="right"<?php 
            }
            ?>
><div class="overflow">
					<?php 
            if ($i++ == 0 && $level > 0) {
                echo '&nbsp;&nbsp;';
                for ($s = 0; $s < $level - 1; $s++) {
                    echo '&nbsp;&nbsp;&nbsp;&nbsp;';
                }
                echo '<span style="opacity:0.5">&#9492;</span> ';
            }
            if ($subfield->getName() == "bool") {
                if ($row->{$name} == 1) {
                    ?>
							<img src="<?php 
                    echo url(ADMINRESOURCES . 'images/tick.png');
                    ?>
" class="bool" width="16" height="16"/>
						<?php 
                } else {
                    ?>
							<img src="<?php 
                    echo url(ADMINRESOURCES . 'images/cross.png');
                    ?>
" class="bool" width="16" height="16"/> 
						<?php 
                }
            } else {
                if ($subfield->getName() == "date") {
                    if ($row->{$name}) {
                        echo date('j/m/Y', $row->{$name});
                    }
                } else {
                    if ($subfield->getName() == "float") {
                        if ($row->{$name}) {
                            echo rtrim(rtrim(number_format($row->{$name}, 2, ',', '.'), '0'), ',');
                        }
                    } else {
                        if ($subfield->getName() == "timedate") {
                            if ($row->{$name}) {
                                if (date('H:i', $row->{$name}) == '00:00') {
                                    echo date('j/m/Y', $row->{$name});
                                } else {
                                    echo date('j/m/Y H:i', $row->{$name});
                                }
                            }
                        } else {
                            if ($subfield->getName() == "text") {
                                if (isset($row->{$name})) {
                                    if ($subfield['summary'] == 'bool') {
                                        if (trim($row->{$name})) {
                                            ?>
									<img src="<?php 
                                            echo url(ADMINRESOURCES . 'images/tick.png');
                                            ?>
" class="bool" width="16" height="16"/>
								<?php 
                                        } else {
                                            ?>
									<img src="<?php 
                                            echo url(ADMINRESOURCES . 'images/cross.png');
                                            ?>
" class="bool" width="16" height="16"/> 
								<?php 
                                        }
                                    } else {
                                        echo excerpt($row->{$name}, 50);
                                    }
                                }
                            } else {
                                if ($subfield->getName() == "slug") {
                                    foreach ($field->children() as $child) {
                                        $childname = strval($child['name']);
                                        if (is_numeric($row->{$childname}) && isset($subfield['format_' . $child['name'] . '_' . $row->{$childname}])) {
                                            if (!$name) {
                                                $name = 'slug';
                                            }
                                            $i = 0;
                                            foreach (languages() as $key => $lang) {
                                                $childlang = $name . '_' . $key;
                                                if ($i++ != 0) {
                                                    echo ' &bull; ';
                                                }
                                                $link = url((count(languages()) > 1 ? $key . '/' : '') . str_replace('$slug', $row->{$childlang}, $subfield['format_' . $child['name'] . '_' . $row->{$childname}]), false);
                                                if (count(languages()) > 1) {
                                                    echo '<a href="' . $link . '">' . strtoupper($key) . '</a>';
                                                } else {
                                                    echo '<a href="' . $link . '">' . $link . '</a>';
                                                }
                                            }
                                            $currentslug = str_replace('$slug', $row->{$name}, $subfield['format_' . $child['name'] . '_' . $row->{$childname}]) . '/';
                                        }
                                    }
                                } else {
                                    if ($type = $typemanager->get_type(strval($subfield->getName()))) {
                                        echo $type->summary($subfield, $row, $object);
                                    } else {
                                        echo htmlentities_all($row->{$name});
                                    }
                                }
                            }
                        }
                    }
                }
            }
            ?>
				</div></td>
			<?php 
        }
        ?>
			<?php 
        $deletable = true;
        ?>
			<?php 
        foreach ($delete_limits as $delete_limit_key => $delete_limit_value) {
            if (!isset($row->{$delete_limit_key}) || $row->{$delete_limit_key} != $delete_limit_value) {
                $deletable = false;
            }
        }
        ?>
			<td align="right">
				<?php 
        if ($deletable && !isset($field['delete_disabled'])) {
            ?>
					<div style="white-space:nowrap;">
						<?php 
            if ($field['name'] != 'user' || $row->id != $user->id) {
                ?>
							<a class="delete" href="<?php 
                echo $parenturl . ($level > 0 ? $GLOBALS['recursive_name'] : $field['name']);
                ?>
/<?php 
                echo $row->id;
                ?>
/delete/" onclick="event.stopPropagation();return confirm('<?php 
                echo l(array('nl' => 'Bent u zeker dat u dit item wilt verwijderen?', 'fr' => '&Ecirc;tes-vous s&ucirc;r de vouloir supprimer cet &eacute;l&eacute;ment?', 'en' => 'Are you sure you want to remove this item?'));
                ?>
');"><img alt="<?php 
                echo l(array('nl' => 'Verwijderen', 'fr' => 'Supprimer', 'en' => 'Delete'));
                ?>
" title="<?php 
                echo l(array('nl' => 'Verwijderen', 'fr' => 'Supprimer', 'en' => 'Delete'));
                ?>
" src="<?php 
                echo url(ADMINRESOURCES . 'images/del.png');
                ?>
" width="22" height="23"></a>
						<?php 
            }
            ?>
					</div>
				<?php 
        }
        ?>
			</td>
		</tr>
		<?php 
        if (isset($GLOBALS['recursive_name']) && $GLOBALS['recursive_name']) {
            if ($level == 0) {
                $GLOBALS['root_id'] = $row->id;
            }
            foreach ($row->{$GLOBALS}['recursive_name'] as $subrow) {
                print_row($field, $shownfields, $subrow, $object, $show_edit, $level + 1, $currentslug, $parenturl . ($level == 0 ? $field['name'] : $GLOBALS['recursive_name']) . '/' . $row->id . '/');
            }
        }
        if ($level == 0) {
            echo '</tbody>';
        }
    }
示例#4
0
文件: admin.php 项目: kidaa30/Swevers
 private static function print_field($field, $data, $structure)
 {
     if (in_array($field->getName(), array('div', 'span', 'img'))) {
         echo '<div class="usernote">' . strval($field->asXML()) . '</div>';
         return false;
     }
     $user = FW4_User::get_user();
     if (isset($field['require']) && $user->id !== 0) {
         $require_fields = explode('.', $field['require']);
         $require_field = $user;
         foreach ($require_fields as $current_field) {
             if (isset($require_field[$current_field]) && $require_field[$current_field]) {
                 $require_field = $require_field[$current_field];
             } else {
                 $require_field = false;
                 break;
             }
         }
         if (!$require_field && !isset($structure['is_version'])) {
             return false;
         }
     }
     if (isset($field['hide_on_recursive']) && self::$recursive_levels > 0) {
         return false;
     }
     $types = FW4_Type_Manager::get_instance();
     $fieldname = strval($field['name']);
     switch ($field->getName()) {
         case 'object':
             if (isset($data->id) && !isset($structure['is_version'])) {
                 $objectquery = where((isset($structure['orig_name']) ? $structure['orig_name'] : $structure['name']) . '_id = %d', $data->id);
                 foreach ($field->children() as $type => $subfield) {
                     if ($type == 'object') {
                         $objectquery->including(strval($subfield['name']));
                     }
                     if ($type == 'summary' && isset($subfield['needs'])) {
                         foreach (explode(',', strval($subfield['needs'])) as $needs) {
                             $objectquery->including(trim($needs));
                         }
                     }
                     if ($type == 'recursive') {
                         $objectquery->where('parent_id IS NULL');
                     }
                 }
                 $objectamount = $objectquery->get($structure['stack'] . '>' . $field['name'])->rowCount();
                 $objectdata = $objectquery->limit(50)->get($structure['stack'] . '>' . $field['name']);
                 $field['stack'] = $structure['stack'] . '>' . $field['name'];
                 self::print_object_list($field, $objectdata, $objectamount, $data->id);
             }
             return false;
         case 'recursive':
             if (isset($structure['editing_disabled'])) {
                 return false;
             }
             if (isset($field['levels']) && $field['levels'] <= self::$recursive_levels) {
                 return false;
             }
             if (isset($data->id)) {
                 $recursive_structure = clone $structure;
                 if (isset($field['title'])) {
                     $recursive_structure['title'] = $field['title'];
                 }
                 if (isset($field['label'])) {
                     $recursive_structure['label'] = $field['label'];
                 }
                 if (isset($field['name'])) {
                     $recursive_structure['orig_name'] = $recursive_structure['name'];
                     $recursive_structure['name'] = $field['name'];
                 }
                 $objectquery = where('parent_id = %d', $data->id)->limit(50);
                 $objectdata = $objectquery->get($structure['stack']);
                 $objectamount = $objectquery->count_rows($structure['stack']);
                 self::print_object_list($recursive_structure, $objectdata, $objectamount, $data->id, true, true, true);
             }
             return false;
         case 'list':
             if (isset($field['datasource'])) {
                 if (function_exists('datasource_' . $field['datasource'])) {
                     $listdata = call_user_func('datasource_' . $field['datasource'], false);
                     if (is_array($listdata)) {
                         echo View_Loader::get_instance()->load("data_list", array('data' => $listdata, 'export' => isset($field['exportable']), 'datasource' => isset($field['datasource']) ? strval($field['datasource']) : false, 'object' => isset($field['object']) ? strval($field['object']) : false));
                     }
                 }
             }
             if (isset($data->id)) {
                 $object = FW4_Structure::get_object_structure(strval($field['object']));
                 if (!$object) {
                     return false;
                 }
                 foreach ($field->attributes() as $key => $val) {
                     $object->addAttribute($key, $val);
                 }
                 $query = new Query();
                 if (isset($field['order_field'])) {
                     $query->order_by(strval($field['order_field']));
                 }
                 if (isset($field['where'])) {
                     foreach (explode(',', strval($field['where'])) as $item) {
                         $item = explode(':', $item);
                         $query->where($item[0] . ' = %s', $item[1]);
                     }
                 }
                 $allow_edit = true;
                 if (isset($field['allow_edit']) && ($field['allow_edit'] == 'false' || !$field['allow_edit'])) {
                     $allow_edit = false;
                 }
                 $rows = $query->load_children(true)->get(strval($field['object']));
                 self::print_object_list($object, $rows, count($rows), $data->id, true, $allow_edit);
             }
             return false;
         case 'string':
         case 'email':
             if (isset($field['readonly']) && isset($data->id) || isset($structure['editing_disabled'])) {
                 echo '<div class="input"><label for="' . $field['name'] . '" class="for-input">' . $field['label'] . '</label><div class="value">' . (isset($data->{$fieldname}) && $data->{$fieldname} ? self::placeholder_decode($data->{$fieldname}, $field) : '-') . '</div></div>';
             } else {
                 if (isset($field['translatable']) && $field['translatable']) {
                     echo '<div class="' . (FW4_Admin::$in_fieldset ? 'field' : 'input') . '"><label' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> ';
                     foreach (languages() as $key => $lang) {
                         $fieldlang = $fieldname . '_' . $key;
                         echo '<div class="language"><input type="text" class="' . (count(languages()) > 1 ? 'with_lang_label lowmargin' : '') . (isset($field['required']) && $field['required'] ? ' required' : '') . '' . (isset($field['wide']) ? ' wide' : '') . '" name="' . $field['name'] . '_' . $key . '" value="' . htmlentities_all(isset($data->{$fieldlang}) ? $data->{$fieldlang} : '') . '" maxlength="' . (isset($field['length']) ? $field['length'] : 150) . '"' . (isset($field['visible_condition']) ? ' data-visible-condition="' . $field['visible_condition'] . '"' : '') . ' />' . (count(languages()) > 1 ? '<span class="lang_label">' . strtoupper($key) . '</span>' : '') . '</div>';
                     }
                     echo '<br/></div>';
                 } else {
                     echo '<div class="' . (FW4_Admin::$in_fieldset ? 'field' : 'input') . '"><label for="' . $field['name'] . '" class="for-input">' . $field['label'] . '</label> <input class="' . (isset($field['required']) && $field['required'] ? 'required' : '') . '' . (isset($field['wide']) ? ' wide' : '') . '" type="text" id="input-' . $field['name'] . '" name="' . $field['name'] . '" value="' . htmlspecialchars(isset($data->{$fieldname}) ? $data->{$fieldname} : '') . '" maxlength="' . (isset($field['length']) ? $field['length'] : 150) . '"' . (isset($field['visible_condition']) ? ' data-visible-condition="' . $field['visible_condition'] . '"' : '') . ' /></div>';
                 }
             }
             return true;
         case 'number':
             if (isset($field['readonly']) && $field['readonly'] || isset($structure['editing_disabled'])) {
                 if (isset($data->id)) {
                     echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <div class="value">' . (isset($data->{$fieldname}) ? $data->{$fieldname} : '') . '</div></div>';
                 }
             } else {
                 echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <input class="number' . (isset($field['required']) && $field['required'] ? ' required' : '') . '" type="text" name="' . $field['name'] . '" value="' . (isset($data->{$fieldname}) ? $data->{$fieldname} : '') . '" maxlength="' . (isset($field['length']) ? $field['length'] : 20) . '" /></div>';
             }
             return true;
         case 'float':
             if (isset($field['readonly']) && $field['readonly'] || isset($structure['editing_disabled'])) {
                 if (isset($data->id)) {
                     echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <div class="value">' . (isset($data->{$fieldname}) ? trim(trim(number_format($data->{$fieldname}, 2, ',', '.'), '0'), ',') : '') . '</div></div>';
                 }
             } else {
                 echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <input class="float' . (isset($field['required']) && $field['required'] ? ' required' : '') . '" type="text" name="' . $field['name'] . '" value="' . (isset($data->{$fieldname}) ? trim(trim(number_format($data->{$fieldname}, 2, ',', '.'), '0'), ',') : '') . '" maxlength="' . (isset($field['length']) ? $field['length'] : 20) . '" /></div>';
             }
             return true;
         case 'password':
             if (isset($field['readonly']) && isset($data->id) || isset($structure['editing_disabled'])) {
                 return false;
             } else {
                 echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <input type="password"' . (isset($field['required']) && $field['required'] && !isset($data->id) ? ' class="required"' : '') . ' name="' . $field['name'] . '" maxlength="' . (isset($field['length']) ? $field['length'] : 150) . '" /></div>';
             }
             return true;
         case 'bool':
             if (self::$in_fieldset) {
                 echo '<div class="field">';
             } else {
                 echo '<fieldset>';
             }
             if (isset($field['readonly']) && isset($data->id) || isset($structure['editing_disabled'])) {
                 echo $field['label'] . ': <strong>' . (isset($data->{$fieldname}) && $data->{$fieldname} == 1 || !$data->id && isset($field['default']) ? l(array('nl' => 'Ja', 'fr' => 'Oui', 'en' => 'Yes')) : l(array('nl' => 'Nee', 'fr' => 'Non', 'en' => 'No'))) . '</strong>';
             } else {
                 echo '<input id="input-' . $field['name'] . '"' . (isset($field['enabled_condition']) ? ' data-enabled-condition="' . $field['enabled_condition'] . '"' : '') . '' . (isset($field['visible_condition']) ? ' data-visible-condition="' . $field['visible_condition'] . '"' : '') . ' type="checkbox" name="' . $field['name'] . '" value="1" ' . (isset($data->{$fieldname}) && $data->{$fieldname} == 1 || (!isset($data->id) || !$data->id) && isset($field['default']) ? 'checked="checked"' : '') . ' /><label for="input-' . $field['name'] . '">' . $field['label'] . '</label>';
             }
             if (self::$in_fieldset) {
                 echo '</div>';
             } else {
                 echo '</fieldset>';
             }
             return true;
         case 'date':
             if (isset($field['default_today']) && $field['default_today'] && !isset($data->id)) {
                 $data->{$fieldname} = time();
             } else {
                 if (!isset($data->{$fieldname})) {
                     $data->{$fieldname} = '';
                 }
             }
             echo '<div class="' . (FW4_Admin::$in_fieldset ? 'field' : 'input') . '"><label class="for-input">' . $field['label'] . '</label>';
             if (isset($field['readonly']) && $field['readonly'] || isset($structure['editing_disabled'])) {
                 echo '<div class="value">' . (isset($data->{$fieldname}) && is_numeric($data->{$fieldname}) && $data->{$fieldname} ? date('d/m/Y', $data->{$fieldname}) : ($data->{$fieldname} ? $data->{$fieldname} : 'Nooit')) . '</div>';
             } else {
                 echo '<input type="text" name="' . $field['name'] . '" style="width:100px" class="date' . (isset($field['required']) && $field['required'] ? ' required' : '') . '" size="20" id="input-' . $field['name'] . '" value="' . (isset($data->{$fieldname}) && is_numeric($data->{$fieldname}) ? date('d/m/Y', $data->{$fieldname}) : $data->{$fieldname}) . '"' . (isset($field['visible_condition']) ? ' data-visible-condition="' . $field['visible_condition'] . '"' : '') . '' . (isset($field['limit']) ? ' data-limit="' . $field['limit'] . '"' : '') . '/>';
             }
             echo '</div>';
             return true;
         case 'timedate':
             $date = new DateTime(null, new DateTimeZone('Etc/GMT+2'));
             if (isset($field['default_today']) && $field['default_today'] && !isset($data->{$fieldname})) {
                 $data->{$fieldname} = $date->getTimestamp();
             } else {
                 if (!isset($data->{$fieldname})) {
                     $data->{$fieldname} = '';
                 }
             }
             if (isset($data->{$fieldname}) && is_numeric($data->{$fieldname}) && $data->{$fieldname} > 0) {
                 if (strftime('%H:%M', $data->{$fieldname}) == '00:00') {
                     $value = strftime('%d/%m/%Y', $data->{$fieldname});
                 } else {
                     $value = strftime('%d/%m/%Y %H:%M', $data->{$fieldname});
                 }
             } else {
                 $value = '';
             }
             echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label>';
             if (isset($field['readonly']) && $field['readonly'] || isset($structure['editing_disabled'])) {
                 echo '<div class="value">' . ($value ? $value : 'Nooit') . '</div>';
             } else {
                 echo '<input type="text" name="' . $field['name'] . '" style="width:150px" class="timedate' . (isset($field['required']) && $field['required'] ? ' required' : '') . '" size="20" value="' . $value . '" data-limit="' . (isset($field['limit']) ? $field['limit'] . '"' : '') . '/>';
             }
             echo '</div>';
             return true;
         case 'text':
             $placeholdernames = array();
             $placeholderlabels = array();
             $placeholdericons = array();
             foreach ($field->xpath('//placeholder') as $child) {
                 $placeholdernames[] = strval($child['name']);
                 $placeholderlabels[] = isset($child['label']) ? $child['label'] : ucfirst($child['name']);
                 $placeholdericons[] = isset($child['icon']) ? $child['icon'] : url(ADMINRESOURCES . 'images/icon-placeholder.png');
             }
             if (isset($field['readonly']) && $field['readonly'] || isset($structure['editing_disabled'])) {
                 echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label><div class="value">' . (isset($data->{$fieldname}) && $data->{$fieldname} ? self::placeholder_decode($data->{$fieldname}, $field) : '-') . '</div></div>';
             } else {
                 if (isset($field['translatable']) && $field['translatable']) {
                     echo '<div class="input langswitch"><label' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label><div class="translate-container">';
                     if (count(languages()) > 1) {
                         echo '<select class="langswitch">';
                         foreach (languages() as $key => $lang) {
                             echo '<option value="' . $key . '">' . $lang . '</option> ';
                         }
                         echo '</select>';
                     }
                     foreach (languages() as $key => $lang) {
                         $fieldlang = $fieldname . '_' . $key;
                         echo '<div class="translatable editor lang_' . $key . ($key == language() ? '' : ' hidden') . '"><textarea class="' . (isset($field['required']) && $field['required'] ? ' required' : '') . (isset($field['controls']) && $field['controls'] ? ' ' . $field['controls'] : '') . (isset($field['size']) && $field['size'] ? ' ' . $field['size'] : '') . '" name="' . $field['name'] . '_' . $key . '" rows="5"' . (isset($field['toolbar']) && $field['toolbar'] ? ' data-controls="' . $field['toolbar'] . '"' : '');
                         if (count($placeholdernames)) {
                             echo ' data-placeholder-names="' . e(implode(',', $placeholdernames)) . '"';
                         }
                         if (count($placeholderlabels)) {
                             echo ' data-placeholder-labels="' . e(implode(',', $placeholderlabels)) . '"';
                         }
                         if (count($placeholdericons)) {
                             echo ' data-placeholder-icons="' . e(implode(',', $placeholdericons)) . '"';
                         }
                         echo '>' . (isset($data->{$fieldlang}) ? self::placeholder_decode($data->{$fieldlang}, $field) : '') . '</textarea></div>';
                     }
                     echo '<div class="textarea-loader"></div></div></div>';
                 } else {
                     echo '<div class="input"><label for="' . $field['name'] . '"' . (isset($field['invalid']) && $field['invalid'] ? ' class="invalid"' : '') . '>' . $field['label'] . '</label> <textarea name="' . $field['name'] . '" rows="5" class="' . (isset($field['required']) && $field['required'] ? ' required' : '') . (isset($field['controls']) && $field['controls'] ? ' ' . $field['controls'] : '') . (isset($field['size']) && $field['size'] ? ' ' . $field['size'] : '') . '"' . (isset($field['toolbar']) && $field['toolbar'] ? ' data-controls="' . $field['toolbar'] . '"' : '');
                     if (count($placeholdernames)) {
                         echo ' data-placeholder-names="' . e(implode(',', $placeholdernames)) . '"';
                     }
                     if (count($placeholderlabels)) {
                         echo ' data-placeholder-labels="' . e(implode(',', $placeholderlabels)) . '"';
                     }
                     if (count($placeholdericons)) {
                         echo ' data-placeholder-icons="' . e(implode(',', $placeholdericons)) . '"';
                     }
                     echo '>' . (isset($data->{$fieldname}) ? self::placeholder_decode($data->{$fieldname}, $field) : '') . '</textarea><div class="textarea-loader"></div></div>';
                 }
             }
             return true;
         case 'fieldset':
             $iseditable = false;
             self::$in_fieldset = true;
             echo '<fieldset>';
             foreach ($field->children() as $type => $subfield) {
                 $user = FW4_User::get_user();
                 if (isset($field['hidden'])) {
                     continue;
                 }
                 if (isset($subfield['superadmin_only']) && $user['id'] != 0) {
                     continue;
                 }
                 if (self::print_field($subfield, $data, $structure)) {
                     $iseditable = true;
                 } else {
                     if ($type_obj = $types->get_type($type)) {
                         $type_obj->print_field($subfield, $data, $field);
                         if ($type != 'header') {
                             $iseditable = true;
                         }
                     }
                 }
             }
             echo '</fieldset>';
             self::$in_fieldset = false;
             return $iseditable;
     }
     return false;
 }