function showinput() { global $lang; global $user; global $site; global $category; global $entry; $site->addfooter("help.php?on=entry#add", "help", $lang['menu']['help'], $lang['menu']['helpalt']); if ($site->action() == "modify") { $change = true; $site->title($lang['entry']['change']); } else { $change = false; $site->title($lang['entry']['add']); } if (!$change && !$user->can("addentry", $category)) { $site->addcontent(notice($lang['entry']['noaddallowed'])); return false; } if ($change && !$user->entrycan("changeentry", $entry)) { $site->addcontent(notice($lang['entry']['nochangeallowed'])); return false; } if ($category) { $cat = $category->id(); } if ($_POST['cancel']) { if ($change) { redirect("entry.php?id=" . $entry->id() . "&cat=" . $cat); } else { redirect("category.php?id=" . $cat); } } $form = new CodeKBForm("entry.php", $change ? "modify" : "new"); $form->addhidden("cat", $cat); if ($change) { $form->addhidden("id", $entry->id()); } $form->addtext("title", $change ? $entry->name() : ""); $form->addlabel("title", $lang['entry']['name']); $form->setrequired("title"); $form->addtext("author", $change ? $entry->author() : ""); $form->addlabel("author", $lang['entry']['author']); $form->addtext("description", $change ? $entry->description() : ""); $form->addlabel("description", $lang['entry']['description']); $db = new CodeKBDatabase(); $db->dosql("SELECT name, symbol " . "FROM symbols " . "WHERE symbol LIKE 'type_%'"); if ($entry) { $symbol = $entry->symbol(); } else { $symbol = false; } while ($val = $db->row()) { $form->addradio("symbol", $val['name'], icon($val['name'], $val['name']), !$change && $val['name'] == "Unkown" || $val['name'] == $symbol, false); } $form->addtextarea("documentation", $change ? $entry->documentation() : ""); $form->addlabel("documentation", $lang['entry']['documentation'] . " (" . url("help.php?on=bbcode", $lang['entry']['bbcode'], null, true) . ")"); $form->addsubmit(); $form->addpreview(); $form->addcancel(); if ($_POST['submit'] || $_POST['preview']) { $fill = $form->fill(); if (!$fill) { $site->addcontent(notice($lang['general']['missing'])); } } if ($_POST['submit'] && $fill) { if ($change) { // Change the entry try { $entry->change($form->value("title"), $form->value("author"), $form->value("symbol"), $form->value("description"), $form->value("documentation")); redirect("entry.php?id=" . $entry->id() . "&cat=" . $cat); } catch (Exception $e) { $site->addcontent(notice($lang['entry']['failedchange'])); } } else { // Add the new entry try { $ret = $category->addentry($form->value("title"), $form->value("author"), $form->value("symbol"), $form->value("description"), $form->value("documentation")); if (is_numeric($ret)) { if ($user->entrycan("changeentry", $ret)) { redirect("entry.php?id=" . $ret . "&cat=" . $category->id() . "&action=change"); } else { redirect("entry.php?id=" . $ret . "&cat=" . $category->id()); } } else { throw new CodeKBException(__METHOD__, "entry", "failedadd"); } } catch (Exception $e) { $site->addcontent(notice($lang['entry']['failedadd'])); } } } $dialog = new CodeKBTemplate("dialog"); if ($change) { $dialog->push("legend", $lang['entry']['change']); } else { $dialog->push("legend", $lang['entry']['add']); } $dialogitem = new CodeKBTemplate("dialogitem"); $content = $form->head(); $content .= $form->get("title") . "<br />\n"; $content .= $form->get("author"); $dialogitem->push("top", $content); $dialogitem->push("content1", $form->get()); $dialogitem->push("tail", $form->tail()); $dialogcode = $dialogitem->__toString(); if ($_POST['preview']) { $dialogitem2 = new CodeKBTemplate("dialogitem"); $dialogitem2->push("head", "<em><strong>" . $lang['general']['preview'] . "</strong></em><br /><br />"); $dialogitem2->push("content1", parsebbcode($form->value("documentation"))); $dialogcode .= $dialogitem2->__toString(); } $dialog->push("content", $dialogcode); $site->addcontent($dialog); return true; }