function cat_select()
 {
     $return_string = Form::form_tag(SELF, 'get');
     $attr = array();
     $table = new Table(2, array('id' => 'cat_select'));
     foreach ($this->categories as $cat) {
         if (isset($_GET['Kategorie'])) {
             if (in_array(rawurlencode($cat['Name']), $_GET['Kategorie'])) {
                 $attr['checked'] = 'checked';
             } else {
                 unset($attr['checked']);
             }
         }
         if ($cat['Access'] == 'PUBLIC' || $this->check_right('KalenderExtern') || $this->check_right('KalenderIntern')) {
             $inputs[] = Form::add_input('checkbox', 'Kategorie[]', rawurlencode($cat['Name']), $attr);
             $labels[] = $cat['Name'];
         }
     }
     $submit = Form::add_input('submit', 'filter', 'Auswählen', array('class' => 'button'));
     //$table->add_td(array(array(2=>'Ansicht')));
     $table->add_caption('Ansicht');
     for ($i = 0; $i < count($inputs); $i++) {
         $table->add_td(array($labels[$i], $inputs[$i]));
     }
     $table->add_td(array(array(2 => $submit)), array('style' => 'text-align:center'));
     $return_string .= $table->flush_table() . Form::close_form();
     return $return_string;
 }
 function group_table()
 {
     $group_table = '';
     $this->images['edit'] = Html::img('/Libraries/Icons/16x16/edit.png', 'Eigenschaften bearbeiten', array('title' => 'Eigenschaften bearbeiten'));
     $this->images['apply'] = Html::img('/Libraries/Icons/16x16/apply.png', 'Speichern');
     $this->images['apply_path'] = '/Libraries/Icons/16x16/apply.png';
     $this->images['checkbox_disabled_unchecked'] = Html::img('/Libraries/Icons/16x16/checkbox_disabled_unchecked.png', 'Nicht erlaubt');
     $this->images['checkbox_disabled_checked'] = Html::img('/Libraries/Icons/16x16/checkbox_disabled_checked.png', 'Erlaubt');
     $this->images['new_group'] = Html::img('/Libraries/Icons/16x16/add_group.png', 'Gruppe hinzufügen', array('title' => 'Gruppe hinzufügen'));
     $this->images['delete_group'] = Html::img('/Libraries/Icons/16x16/delete_group.png', 'Gruppe löschen', array('title' => 'Gruppe löschen'));
     $img_group = Html::img('/Libraries/Icons/16x16/edit_group.png', 'Gruppe');
     $cols = count($this->rechte) + 3;
     $table = new Table($cols, array('id' => 'groups_table'));
     $form_tag = Form::form_tag('/Admin/Gruppen');
     $form_close = Form::close_form();
     $th = array(Html::bold('Gruppe'));
     foreach ($this->rechte as $recht) {
         $th[] = $recht['RechtName'];
     }
     $table->add_th($th);
     $i = 0;
     foreach ($this->existent_groups as $group) {
         if (isset($_GET['editgroup']) && $_GET['editgroup'] == $group['id']) {
             $td = array(Form::add_input('text', 'name', $group['Name']));
             for ($j = 0; $j < count($this->rechte); $j++) {
                 if (in_array($this->rechte[$j]['id'], $group['Rechte'])) {
                     $td[] = Form::add_input('checkbox', 'Recht[]', $this->rechte[$j]['id'], array('checked' => 'checked'));
                 } else {
                     $td[] = Form::add_input('checkbox', 'Recht[]', $this->rechte[$j]['id']);
                 }
             }
             $id = Form::add_input('hidden', 'group_id', $group['id']);
             $old_name = Form::add_input('hidden', 'old_name', $group['Name']);
             $new_rechte_submit = Form::add_input('image', 'submit_rechte', 'Speichern', array('src' => $this->images['apply_path'], 'alt' => 'Speichern'));
             $td[] = $id . $old_name . $new_rechte_submit;
         } else {
             $td = array(Html::bold($group['Name']));
             for ($j = 0; $j < count($this->rechte); $j++) {
                 $td[] = in_array($this->rechte[$j]['id'], $group['Rechte']) ? $this->images['checkbox_disabled_checked'] : $this->images['checkbox_disabled_unchecked'];
             }
             $edit_button = Html::a('/Admin/Gruppen?editgroup=' . $group['id'], $this->images['edit'], array('title' => 'Eigenschaften bearbeiten'));
             $delete_button = Html::a('/Admin/Gruppen?deletegroup=' . $group['id'], $this->images['delete_group'], array('title' => 'Gruppe löschen', 'onclick' => "return confirm('Gruppe " . addcslashes($group['Name'], "'") . " löschen?')"));
             $td[] = $edit_button;
             $td[] = $delete_button;
         }
         $class = is_int($i / 2) ? 'abwechselnde_flaechen_1' : 'abwechselnde_flaechen_2';
         $table->add_td($td, array('class' => is_int($i / 2) ? 'abwechselnde_flaechen_1' : 'abwechselnde_flaechen_2'));
         $i++;
     }
     $new_group_button = Html::a('/Admin/Gruppen?newgroup', $this->images['new_group'] . ' Gruppe hinzufügen');
     if (isset($_GET['newgroup'])) {
         $td = array(Form::add_input('text', 'name', ''));
         for ($j = 0; $j < count($this->rechte); $j++) {
             $td[] = Form::add_input('checkbox', 'Recht[]', $this->rechte[$j]['id']);
         }
         $new_group_submit = Form::add_input('image', 'submit_newgroup', 'Speichern', array('src' => $this->images['apply_path'], 'alt' => 'Speichern'));
         $td[] = $id . $new_group_submit;
         $table->add_td($td);
     } else {
         $table->add_td(array(array(2 => $new_group_button)));
     }
     return $form_tag . $table->flush_table() . $form_close;
 }
 function user_table()
 {
     $user_table = '';
     $img_edit_group = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/edit_group.png', 'Gruppe ändern', array('title' => 'Gruppe ändern'));
     $img_delete_user = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/delete_user.png', 'Benutzer löschen', array('title' => 'Benutzer löschen'));
     $img_new_user = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/add_user.png', 'Benutzer hinzufügen', array('title' => 'Benutzer hinzufügen'));
     $img_edit = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/edit.png', 'Eigenschaften bearbeiten', array('title' => 'Eigenschaften bearbeiten'));
     $img_apply = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/apply.png', 'Speichern');
     $img_apply_path = '/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/apply.png';
     $img_pass = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/password.png', 'Passwort');
     $img_user = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/edit_user.png', 'Benutzername');
     $img_group = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/edit_group.png', 'Gruppe');
     $img_mail = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/mail_generic.png', 'E-Mail');
     $img_show_pw = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/14_layer_visible.png', 'Passwörter zeigen');
     $img_hide_pw = Html::img('/' . INSTALL_PATH . '/Classes/Admin/Icons/16x16/14_layer_novisible.png', 'Passwörter verstecken');
     $form = new Form();
     $table = new Table(5, array('id' => 'user_table'));
     $table->add_caption('Registrierte Benutzer');
     if (!isset($_GET['showpw'])) {
         $pwshow = Html::a($_SERVER['REDIRECT_URL'] . '?showpw', $img_show_pw, array('title' => 'Passwörter zeigen'));
     } else {
         $pwshow = Html::a($_SERVER['REDIRECT_URL'], $img_hide_pw, array('title' => 'Passwörter verstecken'));
     }
     $table->add_th(array('Benutzer', 'E-Mail', 'Passwort ' . $pwshow, 'Gruppe'));
     for ($i = 0; $i < count($this->existent_users); $i++) {
         $select = new Select('gruppe');
         foreach ($this->existent_groups as $group) {
             if ($this->existent_users[$i]['Group'] == $group) {
                 $attr['selected'] = 'selected';
             } else {
                 unset($attr['selected']);
             }
             $select->add_option(rawurlencode($group), $group, $attr);
         }
         $groups_select = $select->flush_select();
         if (!isset($_GET['showpw'])) {
             $show_password = '******';
         } else {
             $show_password = $this->existent_users[$i]['Password'];
         }
         if (isset($_GET['editgroup'])) {
             $id = $_GET['editgroup'];
             if ($id == $this->existent_users[$i]['id']) {
                 $editgroup_submit = $form->add_input('image', 'submit_edit_group', '', array('src' => $img_apply_path, 'alt' => 'Speichern'));
                 $editgroup_submit_id = $form->add_input('hidden', 'id', $id);
                 $groupshow = $groups_select . $editgroup_submit_id . $editgroup_submit;
             } else {
                 $groupshow = $this->existent_users[$i]['Group'];
             }
         } else {
             $groupshow = $this->existent_users[$i]['Group'];
         }
         //$edit_group_button = Html::a($_SERVER['REDIRECT_URL'].'?editgroup='.$this->existent_users[$i]['id'],$img_edit_group);
         $edit_user_button = Html::a($_SERVER['REDIRECT_URL'] . '?edituser='******'id'], $img_edit);
         $delete_user_confirm = array('onclick' => 'return confirm(\'Wollen Sie ' . $this->existent_users[$i]['Name'] . ' wirklich löschen?\')');
         $delete_user_button = Html::a($_SERVER['REDIRECT_URL'] . '?deleteuser='******'id'], $img_delete_user, $delete_user_confirm);
         $user_row = array($this->existent_users[$i]['Name'], $this->existent_users[$i]['E-Mail'], $show_password, $groupshow, $edit_user_button . $edit_group_button . $delete_user_button);
         if (isset($_GET['edituser'])) {
             $id = $_GET['edituser'];
             if ($id == $this->existent_users[$i]['id']) {
                 $edit_user_form_name = $form->add_input('text', 'edit_user_name', $this->existent_users[$i]['Name'], array('size' => '12'));
                 $edit_user_form_pass = $form->add_input('text', 'edit_user_pass', $this->existent_users[$i]['Password'], array('size' => '12'));
                 $edit_user_form_mail = $form->add_input('text', 'edit_user_mail', $this->existent_users[$i]['E-Mail'], array('size' => '12'));
                 $edit_user_form_id = $form->add_input('hidden', 'edit_user_id', $id);
                 $edit_user_form_submit = $form->add_input('image', 'submit_edit_user', 'Speichern', array('src' => $img_apply_path, 'alt' => 'Speichern'));
                 $user_row = array($img_user . $edit_user_form_name, $img_mail . $edit_user_form_mail, $img_pass . $edit_user_form_pass, $img_group . $groups_select, $edit_user_form_submit . $edit_user_form_id);
             }
         }
         $table->add_td($user_row, array('class' => is_int($i / 2) ? 'abwechselnde_flaechen_1' : 'abwechselnde_flaechen_2'));
     }
     $new_user_link = Html::a($_SERVER['REDIRECT_URL'] . '?newuser', $img_new_user . ' Benutzer hinzufügen');
     if (isset($_GET['newuser'])) {
         $new_user_form_name = $form->add_input('text', 'new_user_name', '', array('size' => '12'));
         $new_user_form_pass = $form->add_input('text', 'new_user_pass', '', array('size' => '12'));
         $new_user_form_mail = $form->add_input('text', 'new_user_mail', '', array('size' => '12'));
         $new_user_form_submit = $form->add_input('image', 'submit_new_user', 'Speichern', array('src' => $img_apply_path, 'alt' => 'Speichern'));
         $table->add_td(array($img_user . $new_user_form_name, $img_mail . $new_user_form_mail, $img_pass . $new_user_form_pass, $img_group . $groups_select, $new_user_form_submit));
     } else {
         $table->add_td(array(array(2 => $new_user_link)));
     }
     return $form->form_tag('/Admin/User/') . $table->flush_table() . $form->close_form();
 }
 function module_table()
 {
     $this->installed = $this->connection->db_assoc("SELECT * FROM `RheinaufCMS>Module` WHERE `SYSTEM` = 0 ORDER BY `id` ASC");
     $this->available_modules = RheinaufFile::dir_array(INSTALL_PATH . '/Module', false, 'php');
     foreach ($this->available_modules as $module) {
         $class_name = preg_replace('/\\.php/', '', $module);
         if ($module != 'Navi.php') {
             if (RheinaufFile::is_file(INSTALL_PATH . '/Module/' . $class_name . '/Install.php')) {
                 include_once INSTALL_PATH . '/Module/' . $class_name . '/Install.php';
                 $class_name .= 'Install';
             } else {
                 include_once $module;
             }
         }
         if (is_callable(array($class_name, 'about'))) {
             eval('$module_about = ' . $class_name . '::about();');
             switch ($module_about['type']) {
                 case 'inPage':
                     $this->inPageModules[] = $module_about;
                     break;
                 case 'installable':
                     $this->installableModules[] = $module_about;
                     break;
             }
         }
     }
     $return_string = '';
     $this->return .= Html::h(3, 'Installierbare Module');
     $table = new Table(2);
     $table->add_th(array('Installierbare Module', 'Installierte Module'));
     $form = new Form();
     $form->form_tag(SELF_URL);
     $installed_modules = array();
     foreach ($this->installed as $installed) {
         $installed_modules[] = $installed['Name'];
     }
     $installables_select = new Select('installable', array('size' => '10', 'style' => 'width:150px'));
     foreach ($this->installableModules as $modul) {
         if (!in_array($modul['Name'], $installed_modules)) {
             $installables_select->add_option(rawurlencode($modul['Name']), $modul['Name']);
         }
     }
     $installed_select = new Select('installed', array('size' => '10', 'style' => 'width:150px'));
     foreach ($installed_modules as $modul) {
         $installed_select->add_option(rawurlencode($modul), $modul);
     }
     $table->add_td(array($installables_select->flush_select(), $installed_select->flush_select()));
     $install_submit = Form::add_input('submit', 'install', 'Installieren');
     $uninstall_submit = Form::add_input('submit', 'uninstall', 'Deinstallieren');
     $table->add_td(array($install_submit, $uninstall_submit), array('style' => 'text-align:center'));
     $form->add_custom($table->flush_table());
     $this->return .= $form->flush_form();
     $this->return .= Html::h(3, 'Aufruf über Template');
     $table = new Table(2, array('style' => 'width:500px'));
     $table->add_th(array('Modul', 'Einbindung'));
     foreach ($this->inPageModules as $module) {
         $table->add_td(array(Html::bold($module['Name']), $module['Usage']));
     }
     $this->return .= $table->flush_table();
 }
    function make_form($edit = '')
    {
        if ($edit) {
            $values = $this->get_entry($edit);
            $edit = is_array($edit) ? current($edit) : $edit;
        }
        $return = '';
        $return .= Form::form_tag($this->action ? $this->action : SELF, 'post', 'multipart/form-data', array('onsubmit' => 'return checkform()'));
        $table = new Table(2);
        foreach ($this->cols_array as $key => $col) {
            $name = $key;
            $show_name = $col['name'];
            $id = 'input_' . $GLOBALS['input_id'];
            $encoded_name = rawurlencode($name);
            $attr_array = $col['attributes'];
            if (isset($values[$key])) {
                $value = $values[$key];
            } elseif ($col['value']) {
                $value = $col['value'];
            } elseif ($this->re_entry && $_POST[$name]) {
                $value = $_POST[$name];
            } else {
                $value = '';
            }
            if ($name != 'id') {
                switch ($col['type']) {
                    case 'text':
                        $attr_array['id'] = $id;
                        if (isset($col['length'])) {
                            $attr_array['size'] = $field['length'];
                            $attr_array['maxlength'] = $field['length'];
                        } else {
                            $attr_array['size'] = 40;
                        }
                        $input = Form::add_input('text', $encoded_name, $value, $attr_array);
                        break;
                    case 'select':
                        $attr_array['id'] = $id;
                        $select = new Select($encoded_name, $attr_array);
                        $select->add_option('', '--Bitte auswählen--');
                        $attr_array = array();
                        foreach ($col['options'] as $option => $name) {
                            if ($value == $option) {
                                $attr_array['selected'] = 'selected';
                            } else {
                                unset($attr_array['selected']);
                            }
                            $select->add_option(rawurlencode($option), $name, $attr_array);
                        }
                        if ($col['sonstiges']) {
                            $select->add_option('', 'Sonstige:');
                        }
                        //,array('onclick'=>'sonstig_input(this,\''.rawurlencode($encoded_name).'\')'));
                        $input = $select->flush_select();
                        break;
                    case 'check':
                        $input = '';
                        foreach ($col['options'] as $option => $name) {
                            if (is_array($value) && in_array($option, $value)) {
                                $attr_array['checked'] = 'checked';
                            } else {
                                unset($attr_array['checked']);
                            }
                            $input .= Form::add_input('checkbox', $encoded_name . '[]', $option, $attr_array) . ' ' . $name . Html::br();
                        }
                        break;
                    case 'textarea':
                        $attr_array['id'] = $id;
                        $attr_array['cols'] = $col['attributes']['cols'] ? $col['attributes']['cols'] : 30;
                        $attr_array['rows'] = $col['attributes']['rows'] ? $col['attributes']['rows'] : 10;
                        $input = Form::add_textarea($encoded_name, $value, $attr_array);
                        //,'cols'=>'35','rows'=>'2','onfocus'=>'textarea_grow(\''.$id.'\')','onblur'=>'textarea_shrink(\''.$id.'\')'));
                        if ($col['html']) {
                            if (!$xinha_loaded) {
                                $GLOBALS['scripts'] .= Html::script(' _editor_url  = "/' . INSTALL_PATH . '/Libraries/Xinha/";_editor_lang = "de";_document_root = "' . DOCUMENT_ROOT . '";project_name = "' . PROJECT_NAME . '";');
                                $GLOBALS['scripts'] .= Html::script('', array('src' => '/' . INSTALL_PATH . '/Libraries/Xinha/XinhaLoader.js'));
                                $GLOBALS['scripts'] .= Html::script('', array('src' => '/' . INSTALL_PATH . '/System/Scaffold/XinhaConfig.php'));
                                $GLOBALS['scripts'] .= Html::script('xinha_editors.push("' . $id . '")');
                                $xinha_loaded = true;
                            } else {
                                $GLOBALS['scripts'] .= Html::script('xinha_editors.push("' . $id . '")');
                            }
                        }
                        break;
                    case 'upload':
                        $attr_array['id'] = $id;
                        $input = $value ? $value . Form::add_input('hidden', $encoded_name, $value, $attr_array) . Html::br() . Html::span('Neue Datei verknüpfen:', array('class' => 'klein')) . Html::br() : '';
                        $input .= Form::add_input('file', $encoded_name . '_upload');
                        break;
                    case 'custom':
                        $input = $col['custom_input'];
                        break;
                    case 'timestamp':
                        $this->calendar_script();
                        $attr_array['id'] = 'tag_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input = Form::add_input('text', $encoded_name . '_tag', ($tag = Date::tag($value)) != 0 && $value != '' ? $tag : '', $attr_array) . '.';
                        $attr_array['id'] = 'monat_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_monat', ($monat = Date::monat($value)) != 0 && $value != '' ? $monat : '', $attr_array) . '.';
                        $attr_array['id'] = 'jahr_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_jahr', ($jahr = Date::jahr($value)) != 0 && $value != '' ? $jahr : '', $attr_array) . '&emsp;';
                        $attr_array['id'] = 'stunde_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_stunde', ($stunde = Date::stunde($value)) != 0 && $value != '' ? $stunde : '', $attr_array) . ':';
                        $attr_array['id'] = 'minute_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_minute', ($minute = Date::minute($value)) != 0 && $value != '' ? $minute : '', $attr_array);
                        $input .= Form::add_input('hidden', $encoded_name, $value, array('id' => $id));
                        $input .= Form::add_input('button', '', 'Kalender', array('id' => 'trigger_' . $GLOBALS['input_id']));
                        $script = '
						Calendar.setup(
							{
								inputField : "' . $id . '", // ID of the input field
								ifFormat : "%Y/%m/%d", // the date format
								button : "trigger_"+' . $GLOBALS['input_id'] . ', // ID of the button
								showsTime : false,
								timeFormat : "24",
								showOthers : true,
								onSelect : onSelect,
								onUpdate : onUpd,
								inputId : ' . $GLOBALS['input_id'] . ',
								prevInput : "test"

							}
						);
						timefields.push("' . $id . '");
				';
                        $input .= Html::script($script);
                        break;
                    case 'email':
                        preg_match('/(.*?)<?([0-9a-z.+-]{2,}\\@[0-9a-z.-]{2,}\\.[a-z]{2,6})>?/', $value, $matches);
                        $name_value = trim($matches[1]);
                        $mail_value = $matches[2];
                        $attr_array['id'] = 'name_' . $GLOBALS['input_id'];
                        $input = 'Name ' . Form::add_input('text', $encoded_name . '_name', $name_value, $attr_array);
                        $attr_array['id'] = 'mail_' . $GLOBALS['input_id'];
                        $input .= 'E-Mail ' . Form::add_input('text', $encoded_name . '_mail', $mail_value, $attr_array);
                        break;
                    case 'info':
                        $input = $col['value'];
                        $hidden_inputs .= Form::add_input('hidden', $encoded_name, $value, $attr_array);
                        break;
                    case 'hidden':
                        $attr_array['id'] = $id;
                        $hidden_inputs .= Form::add_input('hidden', $encoded_name, $value, $attr_array);
                        $input = '';
                        break;
                    case 'ignore':
                        unset($input);
                        break;
                }
                if ($col['required'] && $input) {
                    if ($col['type'] == 'timestamp') {
                        $input .= Html::script("\nrequired_fields.push('" . 'tag_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'monat_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'jahr_' . $GLOBALS['input_id'] . "');");
                    } else {
                        $input .= Html::script("\nrequired_fields.push('{$id}');");
                    }
                }
                if ($input) {
                    $table->add_td(array(Form::add_label($id, $show_name), $input));
                }
                $GLOBALS['input_id']++;
            }
        }
        $input = $this->submit_button ? $this->submit_button : Form::add_input('submit', 'submit', 'Eintragen', array('class' => 'button'));
        if ($edit) {
            $input .= Form::add_input('hidden', 'edit_id', $edit);
        }
        $input .= Form::add_input('hidden', 'submit', 'submit');
        $input .= $hidden_inputs;
        $table->add_td(array('', $input));
        $return .= $table->flush_table();
        $return .= Form::close_form();
        return $return;
    }
    function pages_table($j)
    {
        $rubrik = $this->navi[$j]['Rubrik'];
        $rubrik = $this->I18n_get_real($rubrik);
        $return_string = '';
        $GLOBALS['scripts'] .= Html::script('
		var editor_win = null;
		function editor (r,s)
		{
			editor_win = window.open("/Admin/SeiteEdit?edit_page=" +r+ "&edit="+s,"Editor","resizable=yes,status=no");
			editor_win.focus();
		}
		');
        $navi_table = new Table(3);
        $navi_table->add_caption('Seiten in ' . $rubrik);
        $rubrik_folder = $this->path_encode($rubrik);
        $navi_table->add_th(array('Live-Version', 'Arbeits-Version'), array('style:padding-right:5px;'));
        for ($i = 0; $i < count($this->navi[$j]['Subnavi']); $i++) {
            if (!empty($this->navi[$j]['Subnavi'][$i]) && $this->navi[$j]['Subnavi'][$i]['Modul'] == '') {
                $name = $this->I18n_get_real($this->navi[$j]['Subnavi'][$i]['Seite']);
                $seite_folder = $this->path_encode($name);
                $edit_button = Html::a(SELF_URL . '?edit_page=' . $i . '&edit=' . $j, $name . $this->images['edit'], array('onclick' => "editor({$i},{$j});return false"));
                $working_version_button = Html::a(SELF_URL . '?workingversion&edit_page=' . $i . '&edit=' . $j, $name . $this->images['edit'], array('onclick' => "window.open('/Admin/SeiteEdit?workingversion&edit_page={$i}&edit={$j}','Editor','resizable=yes,status=no');return false"));
                $vorschau_button = ' ' . Html::a('/' . rawurlencode($rubrik_folder) . '/' . rawurlencode($seite_folder) . '/Arbeitsversion/', 'Vorschau');
                $golive_button = ' | ' . Html::a(SELF_URL . '?golive&edit_page=' . $i . '&edit=' . $j, 'Go Live!');
                $navi_table->add_td(array($edit_button, $working_version_button, $vorschau_button . $golive_button), array('style:padding-right:5px;'));
            }
        }
        $return_string .= $navi_table->flush_table();
        return $return_string;
    }
 function neu_form()
 {
     $this->form_scripts();
     $required = array();
     for ($i = 0; $i < count($this->fields); $i++) {
         if ($this->fields[$i]['required']) {
             $required[] = preg_replace('#[^\\w\\.]#', '_', $this->fields[$i]['name']);
         }
     }
     $required = General::array2js('required', $required);
     $form_tag = Form::form_tag(SELF . '?input', 'post', 'multipart/form-data', array('onsubmit' => 'return checkform()'));
     $form_close = Form::close_form();
     $this->scripts .= Html::script($required);
     //$this->scripts .= Html::script('',array('src'=>'/'.INSTALL_PATH.'/Module/BuddyListe/BuddyListe.js'));
     $spalten = 2;
     $table = new Table($spalten, array('id' => 'formtable'));
     $table->id_tbody('form_tbody');
     foreach ($this->fields as $field) {
         $show_name = $field['show_name'] != '' ? $field['show_name'] : $field['name'];
         $show_name = $field['required'] ? $show_name . Html::span('*', array('style' => 'color:red;cursor:help', 'title' => 'Dieses Feld muss ausgefüllt werden.')) : $show_name;
         $encoded_name = rawurlencode($field['name']);
         $id = Html::html_legal_id($field['name']);
         switch ($field['input_type']) {
             case 'text':
                 $parameters = array();
                 $parameters['id'] = $id;
                 if (isset($field['length'])) {
                     $parameters['size'] = $field['length'];
                     $parameters['maxlength'] = $field['length'];
                 } else {
                     $parameters['size'] = 40;
                 }
                 $input = Form::add_input('text', $encoded_name, '', $parameters);
                 break;
             case 'select':
                 $select = new Select($encoded_name, array('id' => $id));
                 $select->add_option('--Bitte auswählen--');
                 foreach ($field['options'] as $option) {
                     $select->add_option(rawurlencode($option), $option);
                 }
                 if ($field['sonstiges']) {
                     $select->add_option('', 'Sonstige:', array('onclick' => 'sonstig_input(this,\'' . rawurlencode($encoded_name) . '\')'));
                 }
                 $input = $select->flush_select();
                 break;
             case 'check':
                 $input = '';
                 foreach ($field['options'] as $option) {
                     $input .= Form::add_input('checkbox', $encoded_name . '[]', rawurlencode($option)) . ' ' . $option . '<br />';
                 }
                 break;
             case 'textarea':
                 $input = Form::add_textarea($encoded_name, '', array('id' => $id, 'cols' => '35', 'rows' => '2', 'onfocus' => 'textarea_grow(\'' . $id . '\')', 'onblur' => 'textarea_shrink(\'' . $id . '\')'));
                 break;
         }
         $table->add_td(array($show_name, $input));
     }
     $fileinput = Form::add_input('file', 'bild[0]');
     $table->add_td(array('Bild 1', $fileinput . Html::a('javascript:;', Html::img('/RheinaufCMS/Module/BuddyListe/edit_add.png', 'Plus', array('title' => 'Noch ein Bild', 'onclick' => 'add_file_upload()')))));
     $table->add_td(array(Form::add_input('submit', 'submit_new_buddyentry', 'Eintragen')), array('style' => 'border-top:1px solid #33466B'));
     $page = new Template(INSTALL_PATH . '/Module/BuddyListe/Templates/Form.template.html');
     $vars['form'] = $form_tag . $table->flush_table() . $form_close;
     return $page->parse_template('TEMPLATE', $vars);
 }
 function install()
 {
     if (isset($_POST['cat_submit'])) {
         $create_categorytable_sql = "CREATE TABLE `RheinaufCMS>Kalender>Kategorien` (\n\t\t\t\t\t\t\t\t\t\t\t`id` INT NOT NULL ,\n\t\t\t\t\t\t\t\t\t\t\t`Name` TEXT NOT NULL ,\n\t\t\t\t\t\t\t\t\t\t\t`Gruppen` TEXT NOT NULL ,\n\t\t\t\t\t\t\t\t\t\t\t`event` TINYINT DEFAULT '0' NOT NULL,\n\t\t\t\t\t\t\t\t\t\t\tPRIMARY KEY ( `id` )\n\t\t\t\t\t\t\t\t\t\t\t)";
         $this->connection->db_query($create_categorytable_sql);
         $cat_array = unserialize(urldecode($_POST['categories']));
         for ($i = 0; $i < count($cat_array); $i++) {
             $id = $i;
             $name = $cat_array[$i]['Name'];
             $event = $cat_array[$i]['event'];
             $gruppen = '';
             $insert_cat_sql = "INSERT INTO `RheinaufCMS>Kalender>Kategorien`\n\t\t\t\t\t\t\t\t\t\t\t\t( `id` , `Name` , `Gruppen` , `event` )\n\t\t\t\t\t\t\t\t\t\tVALUES \t('{$id}', '{$name}', '{$gruppen}', '{$event}')";
             $this->connection->db_query($insert_cat_sql);
         }
         $create_datatable_sql = "CREATE TABLE `RheinaufCMS>Kalender>Termine` (\n\t\t\t\t\t\t\t\t\t  `id` int(10) NOT NULL auto_increment,\n\t\t\t\t\t\t\t\t\t  `wann` timestamp(14) NOT NULL,\n\t\t\t\t\t\t\t\t\t  `wer_ueber` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `wer_text` longtext NOT NULL,\n\t\t\t\t\t\t\t\t\t  `presse` text,\n\t\t\t\t\t\t\t\t\t  `cafe_logo` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `bild` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `was` varchar(200) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `kostet` varchar(10) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `verantwortlich` text NOT NULL,\n\t\t\t\t\t\t\t\t\t  `pass` varchar(30) NOT NULL default '',\n\t\t\t\t\t\t\t\t\t  `event` tinyint(1) default '0',\n\t\t\t\t\t\t\t\t\t  PRIMARY KEY  (`id`),\n\t\t\t\t\t\t\t\t\t  UNIQUE KEY `pass` (`pass`),\n\t\t\t\t\t\t\t\t\t  KEY `wann` (`wann`),\n\t\t\t\t\t\t\t\t\t  KEY `event` (`event`),\n\t\t\t\t\t\t\t\t\t  KEY `was` (`was`)\n\t\t\t\t\t\t\t\t\t) TYPE=MyISAM ";
         $this->connection->db_query($create_datatable_sql);
         Module::install('KalenderAdmin', true);
     } else {
         $img_apply = Html::img('/' . INSTALL_PATH . '/Libraries/Icons/16x16/apply.png', 'Speichern');
         $img_apply_path = '/' . INSTALL_PATH . '/Libraries/Icons/16x16/apply.png';
         $img_add = Html::img('/' . INSTALL_PATH . '/Libraries/Icons/16x16/edit_add.png', 'Neu');
         $img_add_path = '/' . INSTALL_PATH . '/Libraries/Icons/16x16/edit_add.png';
         $return_string = '';
         $form = new Form();
         $return_string .= $form->form_tag('/Admin/Module?new=KalenderAdmin');
         $table = new Table(2);
         $table->add_caption('Kalender einrichten');
         if (isset($_POST['categories'])) {
             $cat_array = unserialize(urldecode($_POST['categories']));
         }
         if (isset($_POST['new_category'])) {
             $new = array('Name' => $_POST['new_category']['Name'], 'event' => $_POST['new_category']['event'] ? 1 : 0);
             $cat_array[] = $new;
         }
         for ($i = 0; $i < count($cat_array); $i++) {
             $table->add_td(array($cat_array[$i]['Name'], $cat_array[$i]['event']));
         }
         if (isset($_POST['newcategory'])) {
             $new_cat_name = Form::add_input('text', "new_category[Name]");
             $new_cat_event = Form::add_input('checkbox', "new_category[event]", 1);
             $newcategory_submit = Form::add_input('image', 'newcategory_submit', 'Speichern', array('src' => $img_apply_path));
             $table->add_td(array($new_cat_name, $new_cat_event . $newcategory_submit));
         }
         $cat_input = Form::add_input('hidden', 'categories', urlencode(serialize($cat_array)));
         $add_button = Form::add_input('image', 'newcategory', 'Kategorie hinzufügen', array('src' => $img_add_path));
         $table->add_td(array(array(2 => $add_button . 'Neue Kategorie' . $cat_input)));
         $all_submit = Form::add_input('image', 'cat_submit', 'Speichern', array('src' => $img_apply_path));
         $table->add_td(array(array(2 => $all_submit . 'Speichern')));
         $return_string .= $table->flush_table() . $form->close_form();
         print $return_string;
     }
 }
    function make_form($edit = '')
    {
        if ($edit) {
            $values = $this->get_entry($edit);
            $edit = is_array($edit) ? current($edit) : $edit;
        }
        $return = '';
        $return .= Form::form_tag($this->action ? $this->action : SELF, 'post', 'multipart/form-data', array('onsubmit' => 'return checkform()'));
        $table = new Table(2);
        foreach ($this->cols_array as $key => $col) {
            $name = $key;
            $show_name = $col['name'];
            $id = 'input_' . $GLOBALS['input_id'];
            $encoded_name = rawurlencode($name);
            $attr_array = $col['attributes'];
            if (isset($values[$key])) {
                $value = $values[$key];
            } elseif ($col['value']) {
                $value = $col['value'];
            } elseif ($this->re_entry && $_POST[$name]) {
                $value = $_POST[$name];
            } else {
                $value = '';
            }
            if ($name != 'id') {
                switch ($col['type']) {
                    case 'text':
                        $attr_array['id'] = $id;
                        if (isset($col['length'])) {
                            $attr_array['size'] = $field['length'];
                            $attr_array['maxlength'] = $field['length'];
                        } else {
                            $attr_array['size'] = 40;
                        }
                        $input = Form::add_input('text', $encoded_name, $value, $attr_array);
                        break;
                    case 'select':
                        $attr_array['id'] = $id;
                        $select = new Select($encoded_name, $attr_array);
                        $select->add_option('', '--Bitte auswählen--');
                        $attr_array = array();
                        foreach ($col['options'] as $option => $name) {
                            if ($value == $option) {
                                $attr_array['selected'] = 'selected';
                            } else {
                                unset($attr_array['selected']);
                            }
                            $select->add_option(rawurlencode($option), $name, $attr_array);
                        }
                        if ($col['sonstiges']) {
                            $select->add_option('', 'Sonstige:');
                        }
                        //,array('onclick'=>'sonstig_input(this,\''.rawurlencode($encoded_name).'\')'));
                        $input = $select->flush_select();
                        break;
                    case 'check':
                        $input = '';
                        foreach ($col['options'] as $option => $name) {
                            if (is_array($value) && in_array($option, $value)) {
                                $attr_array['checked'] = 'checked';
                            } else {
                                unset($attr_array['checked']);
                            }
                            $input .= Form::add_input('checkbox', $encoded_name . '[]', $option, $attr_array) . ' ' . $name . Html::br();
                        }
                        break;
                    case 'textarea':
                        $attr_array['id'] = $id;
                        $attr_array['cols'] = $col['attributes']['cols'] ? $col['attributes']['cols'] : 30;
                        $attr_array['rows'] = $col['attributes']['rows'] ? $col['attributes']['rows'] : 10;
                        $input = Form::add_textarea($encoded_name, $value, $attr_array);
                        //,'cols'=>'35','rows'=>'2','onfocus'=>'textarea_grow(\''.$id.'\')','onblur'=>'textarea_shrink(\''.$id.'\')'));
                        if ($col['html']) {
                            if (!$xinha_loaded) {
                                $GLOBALS['scripts'] .= Html::script(' _editor_url  = "/' . INSTALL_PATH . '/Libraries/Xinha/";_editor_lang = "de";_document_root = "' . DOCUMENT_ROOT . '"');
                                $GLOBALS['scripts'] .= Html::script('', array('src' => '/' . INSTALL_PATH . '/Libraries/Xinha/htmlarea.js'));
                                $GLOBALS['scripts'] .= Html::script('
									xinha_editors = [];
									xinha_init    = null;
									xinha_config  = null;
									xinha_plugins = null;

									// This contains the names of textareas we will make into Xinha editors
									xinha_init = xinha_init ? xinha_init : function()
									{

										xinha_plugins = xinha_plugins ? xinha_plugins :
										[
										"SuperClean",

										"ImageManager",
										//"GetHtml",
										//"Linker",
										"DoubleClick"
										];
									    if(!HTMLArea.loadPlugins(xinha_plugins, xinha_init)) return;


										xinha_editors.push("' . $id . '");

										xinha_config = xinha_config ? xinha_config : new HTMLArea.Config();


										xinha_config.statusBar = false;
										xinha_config.toolbar =
										 [
										    ["bold","italic"],
										    ["separator","createlink","insertimage"],
										    ["separator","undo","redo","selectall"], (HTMLArea.is_gecko ? [] : ["cut","copy","paste","overwrite"]),
										    ["separator","killword","separator","htmlmode","about","showhelp"]
									 	 ];

										//xinha_config.flowToolbars = false;
										xinha_config.showLoading = true;
										//xinha_config.only7BitPrintablesInURLs = false;


										xinha_config.SuperClean.show_dialog = true;
									    xinha_config.SuperClean.filters = {
									               "tidy": HTMLArea._lc("General tidy up and correction of some problems.", "SuperClean"),
									               "word": "Word"
									    }

									    xinha_editors   = HTMLArea.makeEditors(xinha_editors, xinha_config, xinha_plugins);

										HTMLArea.startEditors(xinha_editors);

									}
								window.onload = xinha_init;
							');
                                $xinha_loaded = true;
                            } else {
                                $GLOBALS['scripts'] .= Html::script('xinha_editors.push("' . $id . '")');
                            }
                        }
                        break;
                    case 'upload':
                        $attr_array['id'] = $id;
                        $input = $value ? $value . Form::add_input('hidden', $encoded_name, $value, $attr_array) . Html::br() . Html::span('Neue Datei verknüpfen:', array('class' => 'klein')) . Html::br() : '';
                        $input .= Form::add_input('file', $encoded_name . '_upload');
                        break;
                    case 'custom':
                        $input = $col['custom_input'];
                        break;
                    case 'timestamp':
                        $this->calendar_script();
                        $attr_array['id'] = 'tag_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input = Form::add_input('text', $encoded_name . '_tag', ($tag = Date::tag($value)) != 0 && $value != '' ? $tag : '', $attr_array) . '.';
                        $attr_array['id'] = 'monat_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_monat', ($monat = Date::monat($value)) != 0 && $value != '' ? $monat : '', $attr_array) . '.';
                        $attr_array['id'] = 'jahr_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_jahr', ($jahr = Date::jahr($value)) != 0 && $value != '' ? $jahr : '', $attr_array) . '&emsp;';
                        $attr_array['id'] = 'stunde_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_stunde', ($stunde = Date::stunde($value)) != 0 && $value != '' ? $stunde : '', $attr_array) . ':';
                        $attr_array['id'] = 'minute_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_minute', ($minute = Date::minute($value)) != 0 && $value != '' ? $minute : '', $attr_array);
                        $input .= Form::add_input('hidden', $encoded_name, $value, array('id' => $id));
                        $input .= Form::add_input('button', '', 'Kalender', array('id' => 'trigger_' . $GLOBALS['input_id']));
                        $script = '
						Calendar.setup(
							{
								inputField : "' . $id . '", // ID of the input field
								ifFormat : "%Y/%m/%d", // the date format
								button : "trigger_"+' . $GLOBALS['input_id'] . ', // ID of the button
								showsTime : false,
								timeFormat : "24",
								showOthers : true,
								onSelect : onSelect,
								onUpdate : onUpd,
								inputId : ' . $GLOBALS['input_id'] . ',
								prevInput : "test"

							}
						);
						timefields.push("' . $id . '");
				';
                        $input .= Html::script($script);
                        break;
                    case 'email':
                        preg_match('/(.*?)<?([0-9a-z.+-]{2,}\\@[0-9a-z.-]{2,}\\.[a-z]{2,6})>?/', $value, $matches);
                        $name_value = trim($matches[1]);
                        $mail_value = $matches[2];
                        $attr_array['id'] = 'name_' . $GLOBALS['input_id'];
                        $input = 'Name ' . Form::add_input('text', $encoded_name . '_name', $name_value, $attr_array);
                        $attr_array['id'] = 'mail_' . $GLOBALS['input_id'];
                        $input .= 'E-Mail ' . Form::add_input('text', $encoded_name . '_mail', $mail_value, $attr_array);
                        break;
                    case 'info':
                        $input = $col['value'];
                        $hidden_inputs .= Form::add_input('hidden', $encoded_name, $value, $attr_array);
                        break;
                    case 'hidden':
                        $attr_array['id'] = $id;
                        $hidden_inputs .= Form::add_input('hidden', $encoded_name, $value, $attr_array);
                        $input = '';
                        break;
                    case 'ignore':
                        unset($input);
                        break;
                }
                if ($col['required'] && $input) {
                    if ($col['type'] == 'timestamp') {
                        $input .= Html::script("\nrequired_fields.push('" . 'tag_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'monat_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'jahr_' . $GLOBALS['input_id'] . "');");
                    } else {
                        $input .= Html::script("\nrequired_fields.push('{$id}');");
                    }
                }
                if ($input) {
                    $table->add_td(array(Form::add_label($id, $show_name), $input));
                }
                $GLOBALS['input_id']++;
            }
        }
        $input = $this->submit_button ? $this->submit_button : Form::add_input('submit', 'submit', 'Eintragen', array('class' => 'button'));
        if ($edit) {
            $input .= Form::add_input('hidden', 'edit_id', $edit);
        }
        $input .= Form::add_input('hidden', 'submit', 'submit');
        $input .= $hidden_inputs;
        $table->add_td(array('', $input));
        $return .= $table->flush_table();
        $return .= Form::close_form();
        return $return;
    }
 function pages_table($j)
 {
     $return_string .= Form::form_tag($_SERVER['REDIRECT_URL'] . '?edit=' . $j, 'post', 'application/x-www-form-urlencoded', array('onsubmit' => 'return dublette(document.getElementById(\'new_page_name\').value,\'seiten\')'));
     $navi_table = new Table(3);
     $navi_table->add_caption('Seiten in ' . $this->I18n_get_real($this->navi[$j]['Rubrik']));
     $navi_table->add_th(array('', 'Name', ''));
     for ($i = 0; $i < count($this->navi[$j]['Subnavi']); $i++) {
         if (isset($_GET['edit_page']) && $_GET['edit_page'] == $i && !isset($_GET['visible'])) {
             $name = $this->navi[$j]['Subnavi'][$i]['Seite'];
             $name_input = $_SESSION['RheinaufCMS_User']['Group'] == 'dev' ? Form::add_input('text', 'name', $name) : Html::bold($name) . Form::add_input('hidden', 'name', $name);
             if ($this->navi[$j]['Subnavi'][$i]['Show'] == 1) {
                 $visible_checked = array('checked' => 'checked', 'title' => 'Sichtbarkeit im Hauptmenü');
             } else {
                 $visible_checked = array('title' => 'Sichtbarkeit im Hauptmenü');
             }
             $visble_checkbox = Form::add_input('checkbox', 'Show', 1, $visible_checked);
             $id = Form::add_input('hidden', 'page_id', $i);
             $old_name = Form::add_input('hidden', 'oldname', $this->navi[$j]['Subnavi'][$i]['Seite']);
             $apply_button = Form::add_input('image', 'submit_edit_page', 'Speichern', array('src' => $this->images['img_apply_path'], 'alt' => 'Speichern', 'title' => 'Speichern'));
             $navi_table->add_td(array($id . $old_name . $visble_checkbox, $name_input, $apply_button . $this->buttons['cancel_page']));
             $module_select = $this->modules_select(preg_replace("/\\(.*/", "", $this->navi[$j]['Subnavi'][$i]['Modul']));
             if ($module_select) {
                 $navi_table->add_td(array('', Html::bold('Modul') . Html::br() . $module_select));
             }
             $ext_link_input = Html::bold('URL ') . '(optional) ' . Html::br() . Form::add_input('text', 'ext_link', rawurldecode($this->navi[$j]['Subnavi'][$i]['ext_link']), array('id' => 'ext_link_page'));
             $navi_table->add_td(array('', $ext_link_input, isset($_GET['browse']) ? '' : Html::br() . Html::a($_SERVER['REDIRECT_URL'] . '?browse&amp;edit_page=' . $i . '&amp;edit=' . $j, $this->images['browse'])));
             if (isset($_GET['browse'])) {
                 $navi_table->add_td(array('', $this->make_tree('ext_link_page')));
             }
             $navi_table->add_td(array('', $this->groups_select($_GET['edit'], $i)));
         } else {
             if (!empty($this->navi[$j]['Subnavi'][$i]) && $this->navi[$j]['Subnavi'][$i]['Seite'] != 'index') {
                 if ($this->navi[$j]['Subnavi'][$i]['Show'] == 0) {
                     $visible_img = $this->images['invisible'];
                     $visible_button = Html::a($_SERVER['REDIRECT_URL'] . '?visible=1&amp;edit_page=' . $i . '&amp;edit=' . $j, $visible_img);
                 } else {
                     $visible_img = $this->images['visible'];
                     $visible_button = Html::a($_SERVER['REDIRECT_URL'] . '?visible=0&amp;edit_page=' . $i . '&amp;edit=' . $j, $visible_img);
                 }
                 $modul = $this->navi[$j]['Subnavi'][$i]['Modul'] != '' ? $this->images['modul'] : '';
                 $locked = $this->navi[$j]['Subnavi'][$i]['Show_to'] != '' ? $this->images['locked'] : '';
                 $international = strstr($this->navi[$j]['Subnavi'][$i]['Seite'], '{I18n') ? $this->images['intern'] : '';
                 $name = $this->I18n_get_real($this->navi[$j]['Subnavi'][$i]['Seite']);
                 $edit_button = Html::a($_SERVER['REDIRECT_URL'] . '?edit_page=' . $i . '&amp;edit=' . $j, $this->images['edit']);
                 $delete_button = Html::a($_SERVER['REDIRECT_URL'] . '?delete_page=' . $i . '&amp;edit=' . $j, $this->images['delete'], array('onclick' => "return delete_confirm('{$name}')"));
                 $navi_table->add_td(array($visible_button, $modul . $locked . $international . $name, $edit_button . $delete_button));
             }
         }
     }
     $add_page_button = Html::a($_SERVER['REDIRECT_URL'] . '?newpage&amp;edit=' . $j, $this->images['new_file'] . 'Neue Seite');
     $reihenfolge_button = Html::a($_SERVER['REDIRECT_URL'] . '?reorder_pages&amp;edit=' . $j, $this->images['order'] . 'Reihenfolge ändern');
     if (isset($_GET['newpage'])) {
         $name_input = Form::add_input('text', 'new_name', '', array('title' => 'Name', 'id' => 'new_page_name'));
         $visble_check = Form::add_input('checkbox', 'Show', 1, array('checked' => 'checked', 'title' => 'Sichtbarkeit im Hauptmenü'));
         $count = Form::add_input('hidden', 'count', count($this->navi));
         $apply_button = Form::add_input('image', 'submit_new_page', 'Speichern', array('src' => $this->images['img_apply_path'], 'alt' => 'Speichern', 'title' => 'Speichern'));
         $navi_table->add_td(array($visble_check, $count . $name_input, $apply_button . $this->buttons['cancel_page']));
         $ext_link_input = Html::bold('URL ') . '(optional) ' . Html::br() . Form::add_input('text', 'ext_link', $this->navi[$i]['ext_link'], array('id' => 'ext_link_page'));
         $navi_table->add_td(array('', $ext_link_input, isset($_GET['browse']) ? '' : Html::br() . Html::a($_SERVER['REDIRECT_URL'] . '?browse&amp;newpage&amp;edit=' . $j, $this->images['browse'])));
         if (isset($_GET['browse'])) {
             $navi_table->add_td(array('', $this->make_tree('ext_link_page')));
         }
         $navi_table->add_td(array('', $this->groups_select()));
     } else {
         $navi_table->add_td(array(array(2 => $add_page_button)));
         $navi_table->add_td(array(array(2 => $reihenfolge_button)));
     }
     $return_string .= $navi_table->flush_table();
     $return_string .= Form::close_form();
     return $return_string;
 }
 function select_room()
 {
     $table = new Table(5);
     $new_room_button = Html::a('/Admin/RheinaufExhibitionAdmin/Rooms?new', 'Neuer Raum', array('class' => 'button'));
     $order_rooms_button = Html::a('/Admin/RheinaufExhibitionAdmin/Rooms?orderrooms', 'Räume anordnen', array('class' => 'button'));
     foreach ($this->rooms as $room) {
         $name = $room['Roomname'];
         $add_button = Html::a(SELF . '?add=' . $room['RoomId'], 'Bilder hinzufügen', array('class' => 'button'));
         $order_button = Html::a(SELF . '?order=' . $room['RoomId'], 'Bilder anordnen/löschen', array('class' => 'button'));
         $edit_button = Html::a(SELF . '?edit=' . $room['RoomId'], 'Bearbeiten', array('class' => 'button'));
         $rename_button = Html::a(SELF . '?rename_room=' . $room['RoomId'], 'Umbenennen', array('class' => 'button'));
         $loeschen_button = Html::a(SELF . '?deleteroom=' . $room['RoomId'], 'Löschen', array('class' => 'button', 'onclick' => "return confirm('Wirklich löschen?')"));
         $table->add_td(array($name, $add_button, $order_button, $rename_button, $loeschen_button));
     }
     return Html::h(2, 'Bitte auswählen:') . $table->flush_table() . $new_room_button . $order_rooms_button;
 }
 function select_exhibition()
 {
     $table = new Table(5);
     $new_exhibition_button = Html::a('/Admin/RheinaufExhibitionAdmin/Exhibitions?new', 'Neue Ausstellung', array('class' => 'button'));
     $order_exhibitions_button = Html::a('/Admin/RheinaufExhibitionAdmin/Exhibitions?orderexhibitions', 'Ausstellungen anordnen', array('class' => 'button'));
     foreach ($this->exhibitions as $exhibition) {
         $name = $exhibition['Exhibitionname'];
         $add_button = Html::a(SELF . '?add=' . $exhibition['ExhibitionId'], 'Räume hinzufügen', array('class' => 'button'));
         $order_button = Html::a(SELF . '?order=' . $exhibition['ExhibitionId'], 'Räume anordnen/löschen', array('class' => 'button'));
         $edit_button = Html::a(SELF . '?edit=' . $exhibition['ExhibitionId'], 'Bearbeiten', array('class' => 'button'));
         $rename_button = Html::a(SELF . '?rename_exhibition=' . $exhibition['ExhibitionId'], 'Umbenennen', array('class' => 'button'));
         $loeschen_button = Html::a(SELF . '?deleteexhibition=' . $exhibition['ExhibitionId'], 'Löschen', array('class' => 'button', 'onclick' => "return confirm('Wirklich löschen?')"));
         $table->add_td(array($name, $add_button, $order_button, $rename_button, $loeschen_button));
     }
     return Html::h(2, 'Bitte auswählen:') . $table->flush_table() . $new_exhibition_button . $order_exhibitions_button;
 }
 function frontend_module_table()
 {
     $this->frontend_not_installed = RheinaufFile::dir_array(INSTALL_PATH . '/Module', false, 'php');
     $return_string = '';
     $table = new Table(1);
     $table->add_caption('Frontend-Module');
     $installed_modules = array();
     foreach ($this->frontend_installed as $installed) {
         $installed_modules[] = $installed['Name'];
     }
     foreach ($this->frontend_not_installed as $not_installed) {
         $not_installed = preg_replace('#(.*?).php$#', "\$1", $not_installed);
         if (!in_array($not_installed, $installed_modules)) {
             $table->add_td(array('<em>' . $not_installed . '</em>' . Html::a('/Admin/Module?newfrontend=' . rawurlencode($not_installed), '&gt;&gt;', array('title' => 'Installieren'))));
         }
     }
     foreach ($this->frontend_installed as $installed) {
         $table->add_td(array($installed['Name']));
     }
     $this->return .= $table->flush_table();
 }
    function make_form($edit = '', $action = null, $action_parameter_filter = array(), $template = null)
    {
        if ($edit) {
            $values = $this->get_entry($edit);
            $edit = is_array($edit) ? current($edit) : $edit;
        }
        $GLOBALS['scripts'] .= Html::script("onLoad.push(checkConditions);");
        //$GLOBALS['scripts'] .= Html::script("onLoad.push(sizeTextAreas);");
        $return = '';
        $url = $action ? $action : SELF_URL;
        $url .= strstr($url, '?') ? '&amp;' : '?';
        $url .= $this->GET_2_url(array_merge(array('edit', 'new', 'noframe', 'reentry'), $action_parameter_filter));
        //$url .= ($_GET['edit']) ? '#entry'.$_GET['edit'] : '';
        $return .= Form::form_tag($url, 'post', 'multipart/form-data', array('onsubmit' => "loading();return checkform();"));
        $table = new Table(2, array('class' => 'scaffold'));
        $return .= $this->text_above_form;
        if ($this->show_buttons_above_form) {
            $input = $this->submit_button ? $this->submit_button : Form::add_input('submit', 'submit', 'Eintragen', array('class' => 'button'));
            if ($this->show_cancel) {
                $input .= Form::add_input('button', 'cancel', 'Abbrechen', array('class' => 'button', 'onclick' => 'cancelEdit(this)'));
            }
            $table->add_td(array(array(2 => $input)));
        }
        foreach ($this->cols_array as $key => $col) {
            $name = $key;
            //$show_name  =  General::wrap_string($col['name'],30);
            $show_name = $col['name'];
            $show_name .= $col['required'] ? ' *' : '';
            $id = 'input_' . $GLOBALS['input_id'];
            $encoded_name = rawurlencode($name);
            $attr_array = $col['attributes'];
            if ($col['disabled']) {
                $attr_array['disabled'] = 'disabled';
            } else {
                if ($attr_array['disabled']) {
                    unset($attr_array['disabled']);
                }
            }
            if ($this->re_entry || isset($_REQUEST['reentry']) && $_POST[$name]) {
                $value = $_POST[$name];
            } else {
                if ($values[$key]) {
                    $value = $values[$key];
                } else {
                    if ($col['value']) {
                        $value = $col['value'];
                    } else {
                        $value = '';
                    }
                }
            }
            if (isset($col['options'])) {
                $options = $this->get_options($col['options'], $col['options_sort'], $col['options_insert_id']);
                if (!$col['options_hide_edit_button']) {
                    $edit_options_btn = is_string($col['options']) && $this->edit_enabled ? Html::a("javascript:void(0);", 'Optionen bearbeiten', array('class' => 'button', 'onclick' => "window.open('" . SELF_URL . "?nomenu&editoptions={$encoded_name}','scaff_dialog','toolbar=no,menubar=yes,personalbar=no,width=500,scrollbars=yes,resizable=yes,modal=yes,dependable=yes');var refresh=document.getElementById('{$id}_refresh');refresh.style.display='';refresh.focus();return false;")) : '';
                    $edit_options_btn .= Form::add_input('submit', 'reentry', 'Aktualisieren', array('id' => $id . '_refresh', 'style' => 'display:none'));
                    $edit_options_btn = Html::br() . $edit_options_btn;
                }
            }
            if ($name != 'id') {
                switch ($col['type']) {
                    case 'text':
                        $attr_array['id'] = $id;
                        if (isset($col['length'])) {
                            $attr_array['size'] = $field['length'];
                            $attr_array['maxlength'] = $field['length'];
                        } else {
                            if (!stristr($attr_array['style'], 'width')) {
                                $attr_array['style'] .= "width:{$this->input_width};";
                            }
                        }
                        if ($col['multiple']) {
                            $input = Form::add_input('text', $encoded_name . '[]', $value, $attr_array);
                            $info .= Html::a('javascript:void(0);', '+', array('onclick' => 'cloneInput(\'' . $id . '\')'));
                        } else {
                            $input = Form::add_input('text', $encoded_name, $value, $attr_array);
                        }
                        break;
                    case 'select':
                        $attr_array['id'] = $id;
                        $select = new Select($encoded_name, array_merge($attr_array, array('onchange' => "selectOtherOption('{$id}','" . $col['other_option'] . "')")));
                        $select->add_option('', '--Bitte auswählen--');
                        $attr_array = array();
                        if (is_array($options)) {
                            if (!in_array($value, $options) && !key_exists($value, $options)) {
                                $col['other'] = $value;
                            }
                            foreach ($options as $option => $name) {
                                if ($value == $option) {
                                    $attr_array['selected'] = 'selected';
                                } else {
                                    unset($attr_array['selected']);
                                }
                                $select->add_option($option, $name, $attr_array);
                            }
                            if ($col['other_option']) {
                                if ($col['other']) {
                                    $attr_array['selected'] = 'selected';
                                }
                                $attr_array['onclick'] = 'otherOption(this,\'' . rawurlencode($encoded_name) . '\')';
                                $select->add_option('', $col['other_option'], $attr_array);
                            } else {
                                unset($attr_array['onclick']);
                            }
                        }
                        $input = $select->flush_select();
                        if ($col['other']) {
                            $input .= Form::add_input('text', $encoded_name, $col['other'], array('onfocus' => "selectOtherOption('{$id}','" . $col['other_option'] . "')", 'id' => $id . '_other'));
                        }
                        $input .= $edit_options_btn;
                        break;
                    case 'radio':
                        $attr_array['id'] = $id;
                        $attr_array = array();
                        $input = '';
                        foreach ($options as $option => $name) {
                            if ($value == $option) {
                                $attr_array['checked'] = 'checked';
                            } else {
                                unset($attr_array['checked']);
                            }
                            if (isset($col['condition'][$option])) {
                                $condition = "{input:'" . $encoded_name . "',value:'" . $option . "',target:'" . $col['condition'][$option] . "'}";
                                $input .= Html::script("conditions.push({$condition})");
                                //$attr_array['onchange'] = "checkCondition($condition)";
                            } else {
                                //unset($attr_array['onchange']);
                            }
                            if (isset($col['condition'])) {
                                $attr_array['onchange'] = "checkCondition({$condition})";
                            } else {
                                unset($attr_array['onchange']);
                            }
                            $input .= Form::add_input('radio', $encoded_name, $option, $attr_array) . ' ' . $name . Html::br();
                        }
                        if ($col['condition']) {
                        }
                        $input .= $edit_options_btn;
                        break;
                    case 'check':
                        $input = '';
                        if (!is_array($value)) {
                            $value = explode('&delim;', $value);
                        }
                        foreach ($options as $option => $name) {
                            if (is_array($value) && in_array($option, $value)) {
                                $attr_array['checked'] = 'checked';
                            } else {
                                unset($attr_array['checked']);
                            }
                            $input .= Form::add_input('checkbox', $encoded_name . '[]', $option, $attr_array) . ' ' . $name . Html::br();
                        }
                        if ($col['other_option']) {
                            $other = array_diff($value, $options);
                            $input .= $col['other_option'] . ' ' . Form::add_input('text', $encoded_name . '[]', implode(', ', $other)) . Html::br();
                        }
                        $input .= $edit_options_btn;
                        $input = Html::div($input, array('id' => $id, 'name' => $encoded_name));
                        break;
                    case 'textarea':
                        $attr_array['id'] = $id;
                        if ($col['attributes']['cols']) {
                            $col['attributes']['cols'];
                        } else {
                            if (!stristr($attr_array['style'], 'width')) {
                                $attr_array['style'] .= "width:{$this->input_width};";
                            }
                        }
                        $attr_array['rows'] = $col['attributes']['rows'] ? $col['attributes']['rows'] : 10;
                        if ($col['max_length']) {
                            $attr_array['onkeydown'] = 'return maxLength(event,this,' . $col['max_length'] . ')';
                        }
                        $input = Form::add_textarea($encoded_name, $value, $attr_array);
                        //,'cols'=>'35','rows'=>'2','onfocus'=>'textarea_grow(\''.$id.'\')','onblur'=>'textarea_shrink(\''.$id.'\')'));
                        if ($col['max_length']) {
                            $input .= Html::span("Noch " . Html::span($col['max_length'] - strlen($value), array('id' => $id . '_charsleft')) . " Zeichen");
                        }
                        if ($col['options']) {
                            $input .= Html::br() . $edit_options_btn;
                        }
                        if ($col['html']) {
                            $this->xinha_scripts();
                        }
                        break;
                    case 'upload':
                        $input = '';
                        $value = $values[$key];
                        $entries = array();
                        if (!is_array($value)) {
                            $entries = explode('&delim;', $value);
                        } else {
                            $entries = $value;
                        }
                        $upload_folder = '';
                        if (is_string($this->upload_folder)) {
                            $this->upload_folder = array($this->upload_folder);
                        }
                        foreach ($this->upload_folder as $col_name) {
                            $upload_folder .= $values[$col_name];
                        }
                        $upload_folder .= '/';
                        if (count(General::trim_array($entries)) > 0) {
                            $subtable = new Table(3);
                            foreach ($entries as $file) {
                                $img_info = @getimagesize($this->upload_path . $upload_folder . $file);
                                if ($img_info) {
                                    $thumb = Html::img(SELF_URL . '?img=' . rawurlencode($upload_folder . $file) . '&amp;x=100', $file);
                                } else {
                                    $thumb = '';
                                }
                                $check = Form::add_input('hidden', $encoded_name . '[]', $file);
                                $check .= Html::br() . Form::add_input('checkbox', $encoded_name . '_delfile[]', $file, array("onclick" => "confirmDelPic(this)")) . ' Datei löschen';
                                $subtable->add_td(array($thumb, $file . $check));
                            }
                            $input .= $subtable->flush_table();
                            if ($col['upload_max_count']) {
                                $input .= Html::span("Maximal " . $col['upload_max_count'] . " Dateien" . Html::br(), array('class' => 'klein'));
                            }
                        }
                        if ($col['upload_max_count'] && count(General::trim_array($entries)) >= $col['upload_max_count']) {
                            continue;
                        }
                        $attr_array['id'] = $id;
                        //$input = ($value) ? $value.Form::add_input('hidden',$encoded_name,$value,$attr_array).Html::br().Html::span('Neue Datei verknüpfen:',array('class'=>'klein')).Html::br():'';
                        $input .= Form::add_input('file', $encoded_name . '_upload[]');
                        //	if ($col['upload_max_count'])
                        //	{
                        $input .= Form::add_input('submit', 'reentry', 'Hochladen');
                        //	}
                        if ($col['upload_extensions']) {
                            $input .= Html::br() . Html::span("Erlaubte Erweiterungen: " . implode(', ', $col['upload_extensions']), array('class' => 'klein'));
                        }
                        if ($col['upload_size']) {
                            $input .= Html::br() . Html::span("Maximale Dateigröße: " . $col['upload_size'] . 'KB', array('class' => 'klein'));
                        }
                        break;
                    case 'EFM':
                        break;
                    case 'custom':
                        $input = $col['custom_input'];
                        break;
                    case 'timestamp':
                        $this->calendar_script();
                        $attr_array['id'] = 'tag_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input = Form::add_input('text', $encoded_name . '_tag', ($tag = Date::tag($value)) != 0 && $value != '' ? $tag : '', $attr_array) . '.';
                        $attr_array['id'] = 'monat_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_monat', ($monat = Date::monat($value)) != 0 && $value != '' ? $monat : '', $attr_array) . '.';
                        $attr_array['id'] = 'jahr_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_jahr', ($jahr = Date::jahr($value)) != 0 && $value != '' ? $jahr : '', $attr_array) . '&emsp;';
                        $attr_array['id'] = 'stunde_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_stunde', ($stunde = Date::stunde($value)) != 0 && $value != '' ? $stunde : '', $attr_array) . ':';
                        $attr_array['id'] = 'minute_' . $GLOBALS['input_id'];
                        $attr_array['size'] = '2';
                        $input .= Form::add_input('text', $encoded_name . '_minute', ($minute = Date::minute($value)) != 0 && $value != '' ? $minute : '', $attr_array);
                        $input .= Form::add_input('hidden', $encoded_name, $value, array('id' => $id));
                        $input .= Form::add_input('button', '', 'Kalender', array('id' => 'trigger_' . $GLOBALS['input_id']));
                        $script = '
						Calendar.setup(
							{
								inputField : "' . $id . '", // ID of the input field
								ifFormat : "%Y/%m/%d", // the date format
								button : "trigger_"+' . $GLOBALS['input_id'] . ', // ID of the button
								showsTime : false,
								timeFormat : "24",
								showOthers : true,
								onSelect : onSelect,
								onUpdate : onUpd,
								inputId : ' . $GLOBALS['input_id'] . ',
								prevInput : "test"

							}
						);
						timefields.push("' . $id . '");
				';
                        $input .= Html::script($script);
                        break;
                    case 'email':
                        preg_match('/(.*?)<?([0-9a-z.+-]{2,}\\@[0-9a-z.-]{2,}\\.[a-z]{2,6})>?/', $value, $matches);
                        $name_value = trim($matches[1]);
                        $mail_value = $matches[2];
                        $attr_array['id'] = 'name_' . $GLOBALS['input_id'];
                        $input = 'Name ' . Form::add_input('text', $encoded_name . '_name', $name_value, $attr_array);
                        $attr_array['id'] = 'mail_' . $GLOBALS['input_id'];
                        $input .= 'E-Mail ' . Form::add_input('text', $encoded_name . '_mail', $mail_value, $attr_array);
                        break;
                    case 'info':
                        $input = $col['value'];
                        //$hidden_inputs .= Form::add_input('hidden',$encoded_name,$value,$attr_array);
                        break;
                    case 'hidden':
                        $attr_array['id'] = $id;
                        $hidden_inputs .= Form::add_input('hidden', $encoded_name, $value, $attr_array);
                        $input = '';
                        break;
                    case 'ignore':
                        unset($input);
                        break;
                    case 'changed':
                        $input = Form::add_textarea('', $value, array("disabled" => "disabled")) . Form::add_input('hidden', $encoded_name, $value);
                        break;
                }
                if ($col['required'] && $input) {
                    if ($col['type'] == 'timestamp') {
                        $input .= Html::script("\nrequired_fields.push('" . 'tag_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'monat_' . $GLOBALS['input_id'] . "');");
                        $input .= Html::script("\nrequired_fields.push('" . 'jahr_' . $GLOBALS['input_id'] . "');");
                    } else {
                        $input .= Html::script("\nrequired_fields.push('{$id}');");
                    }
                }
                $alternatig_rows = $alternatig_rows == 1 ? 0 : 1;
                $td_atributes['class'] = ' alt_row_' . $alternatig_rows;
                if ($col['hidden']) {
                    $td_atributes['style'] = 'display:none;';
                } else {
                    unset($td_atributes['style']);
                }
                if ($col['info']) {
                    if (!$GLOBALS['toolTipScriptLoaded']) {
                        $GLOBALS['scripts'] .= Html::script(null, array('src' => '/Libraries/ToolTip/ToolTip.js'));
                        $GLOBALS['scripts'] .= Html::script('onLoad.push(toolTipOnLoad)');
                        $GLOBALS['toolTipScriptLoaded'] = true;
                    }
                    $trigger_id = 'info' . $GLOBALS['input_id'];
                    $source_id = "tooltip" . $GLOBALS['input_id'];
                    $info = ' ' . Html::img('/' . INSTALL_PATH . "/System/Scaffold/info.gif", strip_tags($col['info']), array('id' => $trigger_id, 'title' => strip_tags($col['info'])));
                    $info .= Html::div($col['info'], array('id' => $source_id, "style" => "display:none"));
                    $info .= Html::script("toolTips.push({trigger : '{$trigger_id}',source : '{$source_id}',className : 'tooltip'});");
                } else {
                    $info = '';
                }
                if ($input) {
                    $table->add_td(array(Form::add_label($id, $show_name) . $info, $input), $td_atributes);
                }
                ++$GLOBALS['input_id'];
            }
        }
        $input = $this->submit_button ? $this->submit_button : Form::add_input('submit', 'submit', 'Eintragen', array('class' => 'button'));
        if ($this->show_cancel) {
            if ($this->use_ajax) {
                $input .= Form::add_input('button', 'cancel', 'Abbrechen', array('class' => 'button', 'onclick' => 'cancelEdit(this)'));
            } else {
                $input .= Form::add_input('submit', 'cancel', 'Abbrechen', array('class' => 'button'));
            }
        }
        $input .= Form::add_input('hidden', 'edit_id', $edit ? $edit : '');
        $input .= Form::add_input('hidden', 'submit', 'submit');
        $input .= $hidden_inputs;
        $table->add_td(array(array(2 => $input)));
        $return .= $table->flush_table();
        $return .= Form::close_form();
        if ($template) {
            $t = new Template($template);
            $vars['form'] = $return;
            return $t->parse_template(null, $vars);
        } else {
            return $return;
        }
    }