/** * Fjern fra menyen til medlemmer */ public function remove_menu_entries() { // fjern fra menyen hos medlemmer if (count($this->members['members']) == 0) { return; } $up_id = array_keys($this->members['members']); \Kofradia\DB::get()->beginTransaction(); $result = \Kofradia\DB::get()->query("SELECT u_id, u_params FROM users, users_players WHERE up_id IN (" . implode(",", $up_id) . ") AND up_u_id = u_id FOR UPDATE"); while ($user = $result->fetch()) { $params = new params($user['u_params']); $container = new container($params->get("forums")); foreach ($container->items as $key => $row) { if ($row[0] != "ff") { continue; } if ($row[1] != $this->id) { continue; } unset($container->items[$key]); // fjerne hele container? if (count($container->items) == 0) { $params->remove("forums"); } else { $params->update("forums", $container->build()); } // lagre nye params \Kofradia\DB::get()->exec("UPDATE users SET u_params = " . \Kofradia\DB::quote($params->build()) . " WHERE u_id = {$user['u_id']}"); break; } } // lagre endringer \Kofradia\DB::get()->commit(); }
public static function main() { // har vi ikke tilgang? if (!access::has("crewet", null, null, "login")) { redirect::handle("/node", redirect::ROOT); } ess::$b->page->add_title("Innholdsredigering"); nodes::add_node(0, "Innholdsredigering", ess::$s['relative_path'] . "/node/a"); if (isset($_POST['abort']) && !isset($_GET['node_id'])) { ess::$b->page->add_message("Handlingen ble avbrutt."); redirect::handle(); } // opprette ny node? if (isset($_GET['new_node'])) { $parent_node = getval("parent_node", 0); $previous_node = getval("previous_node", 0); // kontroller parent node if ($parent_node != 0 && !isset(nodes::$nodes[$parent_node])) { ess::$b->page->add_message("Fant ikke forelder til elementet. Prøv på nytt.", "error"); redirect::handle(); } // kontroller previous node $siblings = isset(nodes::$nodes_sub[$parent_node]) ? nodes::$nodes_sub[$parent_node] : array(); if ($previous_node != 0 && !in_array($previous_node, $siblings)) { ess::$b->page->add_message("Fant ikke forrige side. Prøv på nytt.", "error"); redirect::handle(); } // finn priority if ($previous_node == 0) { $priority = 1; $priority_num = 1; } else { // hent priority til previous node $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_id = {$previous_node} AND node_deleted = 0"); if ($result->rowCount() == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error"); redirect::handle(); } $priority = $result->fetchColumn(0); // hent priority til den vi skal "erstatte" $result = \Kofradia\DB::get()->query("SELECT node_priority FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority > {$priority} AND node_deleted = 0 ORDER BY node_priority LIMIT 1"); if ($result->rowCount() > 0) { $priority = $result->fetchColumn(0); } else { $priority++; } // hent nummer $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = {$parent_node} AND node_priority < {$priority} AND node_deleted = 0"); $priority_num = $result->fetchColumn(0) + 1; } // legge til? if (isset($_POST['title']) && isset($_POST['type'])) { // ok tittel? $title = trim(postval("title")); $type = postval("type"); if (empty($title)) { ess::$b->page->add_message("Du må fylle ut en tittel.", "error"); } elseif (!isset(nodes::$types[$type])) { ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error"); } else { // sett opp prioritys \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node} AND node_priority >= {$priority}"); // legg til side \Kofradia\DB::get()->exec("INSERT INTO nodes SET node_parent_node_id = {$parent_node}, node_title = " . \Kofradia\DB::quote($title) . ", node_type = " . \Kofradia\DB::quote(mb_strtolower($type)) . ", node_priority = {$priority}, node_change = " . time()); $iid = \Kofradia\DB::get()->lastInsertId(); ess::$b->page->add_message("Siden ble lagt til."); redirect::handle("node/a?node_id={$iid}", redirect::ROOT); } } $parent_title = isset(nodes::$nodes[$parent_node]) ? nodes::$nodes[$parent_node]['node_title'] : 'Toppnivå'; echo ' <h1>Ny side</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Forelder</dt> <dd>' . htmlspecialchars($parent_title) . '</dd> <dt>Plassering</dt> <dd>' . $priority_num . '</dd> <dt>Tittel</dt> <dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title")) . '" /></dd> <dt>Type</dt> <dd> <select name="type">'; $selected = postval("type"); if (!isset(nodes::$types[$selected])) { $selected = false; } foreach (nodes::$types as $key => $value) { echo ' <option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($value) . '</option>'; } echo ' </select> </dd> </dl> <p>' . show_sbutton("Opprett side") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } $node = false; if (isset($_GET['node_id'])) { $result = nodes::load_node($_GET['node_id'], false); if (!$result) { ess::$b->page->add_message("Fant ikke enheten."); redirect::handle(); } $node = true; #ess::$b->page->add_title(nodes::$node_info['node_title']); redirect::store("node/a?node_id=" . nodes::$node_id, redirect::ROOT); if (isset($_POST['abort'])) { ess::$b->page->add_message("Handlingen ble avbrutt."); redirect::handle(); } // flytt if (isset($_GET['move'])) { // hent tree $root = array(0 => array("number" => 0, "prefix" => "", "prefix_node" => "", "data" => array("node_id" => 0, "node_parent_node_id" => 0, "node_title" => "Innhold (toppnivå)", "node_type" => NULL, "node_params" => NULL, "node_show_menu" => NULL, "node_expand_menu" => NULL, "node_enabled" => true, "node_priority" => 0))); $tree = new tree(nodes::$nodes_sub); $data = $tree->generate(0, $root, nodes::$nodes); // sett opp data og finn ut hvor ting kan plasseres $number_last = 1; $disabled = 0; $list = array(0 => 0); foreach ($data as &$row) { if ($disabled != 0 && $row['number'] <= $disabled) { $disabled = 0; } $number_last = $row['number']; $row['inside'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id']; $row['under'] = $disabled == 0 && nodes::$node_id != $row['data']['node_id']; if (nodes::$node_id == $row['data']['node_id']) { if (isset($list[$row['number']])) { $active = array("under", $list[$row['number']]); } else { $active = array("inside", $list[$row['number'] - 1]); } $disabled = $row['number']; } $list[$row['number']] = $row['data']['node_id']; } unset($row); $data[0]['under'] = false; // lagre endringer? if (isset($_POST['destination_node_id'])) { $match = preg_match("/^(under_)?(\\d+)\$/u", postval("destination_node_id"), $matches); $type = $match && $matches[1] == "under_" ? "under" : "inside"; $dest_node_id = $match ? $matches[2] : -1; $parent_node_id = $type == "inside" ? $dest_node_id : nodes::$nodes[$dest_node_id]['node_parent_node_id']; // finnes? if (!isset($data[$dest_node_id])) { ess::$b->page->add_message("Fant ikke målsiden.", "error"); } elseif (!$data[$dest_node_id][$type]) { ess::$b->page->add_message("Du kan ikke plassere siden her.", "error"); } elseif ($type == $active[0] && $dest_node_id == $active[1]) { ess::$b->page->add_message("Du må velge en ny plassering.", "error"); } else { \Kofradia\DB::get()->beginTransaction(); // flytt de andre kategoriene \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority - 1 WHERE node_parent_node_id = " . nodes::$node_info['node_parent_node_id'] . " AND node_priority > " . nodes::$node_info['node_priority']); \Kofradia\DB::get()->exec("UPDATE nodes SET node_priority = node_priority + 1 WHERE node_parent_node_id = {$parent_node_id}" . ($type == "under" ? " AND node_priority > " . nodes::$nodes[$dest_node_id]['node_priority'] : "")); // flytt den valgte siden \Kofradia\DB::get()->exec("UPDATE nodes SET node_parent_node_id = {$parent_node_id}, node_priority = " . ($type == "inside" ? 0 : nodes::$nodes[$dest_node_id]['node_priority'] + 1) . " WHERE node_id = " . nodes::$node_id); \Kofradia\DB::get()->commit(); ess::$b->page->add_message("Siden ble flyttet."); redirect::handle(); } } // sett opp plasseringen $items = array(); $parent_node = nodes::$node_info['node_parent_node_id']; while (isset(nodes::$nodes[$parent_node]) && ($item = nodes::$nodes[$parent_node])) { $items[] = $item['node_title']; $parent_node = $item['node_parent_node_id']; } $items[] = "Toppnivå"; // tittel ess::$b->page->add_title("Flytt side"); nodes::add_node(0, "Flytt side", ess::$s['relative_path'] . "/node/a?node_id=" . nodes::$node_id . "&move"); echo ' <h1>' . htmlspecialchars(nodes::$node_info['node_title']) . '</h1> <p><a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '">Tilbake</a></p> <h2>Flytt side</h2> <form action="" method="post"> <dl class="dl_2x dd_right"> <dt>Nåværende plassering</dt> <dd>' . implode("\\", array_reverse($items)) . '</dd> <dt>Ny plassering</dt> <dd> <table class="table" style="margin-left: auto"> <thead> <tr> <th>Side</th> <th>Inni</th> <th>Nedenfor</th> </tr> </thead> <tbody class="c">'; $i = 0; foreach ($data as $row) { $i++; $class = nodes::$node_id == $row['data']['node_id'] ? ' class="highlight"' : ($i % 2 == 0 ? ' class="color"' : ''); $link = $row['data']['node_id'] == 0 ? $row['data']['node_title'] : '<a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . $row['data']['node_id'] . '">' . htmlspecialchars($row['data']['node_title']) . '</a>'; echo ' <tr' . $class . '> <td class="l"><span class="plain">' . $row['prefix'] . $row['prefix_node'] . '</span> ' . $link . '</td> <td>' . ($row['inside'] ? '<input type="radio" name="destination_node_id" value="' . $row['data']['node_id'] . '"' . ($active[0] == "inside" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td> <td>' . ($row['under'] ? '<input type="radio" name="destination_node_id" value="under_' . $row['data']['node_id'] . '"' . ($active[0] == "under" && $active[1] == $row['data']['node_id'] ? ' checked="checked"' : '') : ' x') . '</td> </tr>'; } echo ' </tbody> </table> </dd> <dt> </dt> <dd>' . show_sbutton("Lagre endringer") . '</dd> </dl> </form>'; page_node::load_page(); } // rediger tittel if (isset($_GET['edit_title'])) { // lagre? if (isset($_POST['title'])) { $title = postval('title'); if (empty($title)) { ess::$b->page->add_message("Du må skrive inn en tittel.", "error"); } else { // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_title = " . \Kofradia\DB::quote($title) . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message("Tittelen ble endret fra «" . htmlspecialchars(nodes::$node_info['node_title']) . "» til «" . htmlspecialchars($title) . "»."); redirect::handle(); } } echo ' <h1>Rediger tittel</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende tittel</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Ny tittel</dt> <dd><input type="text" name="title" class="styled w100" value="' . htmlspecialchars(postval("title", nodes::$node_info['node_title'])) . '" /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } // aktiver/deaktiver if (isset($_GET['enabled'])) { $update = false; if ($_GET['enabled'] == "false") { // deaktiver if (nodes::$node_info['node_enabled'] > 0) { $update = 0; ess::$b->page->add_message("Siden er nå deaktivert. Alle undersider vil også være utilgjengelige."); } } else { // aktiver if (nodes::$node_info['node_enabled'] == 0) { $update = 1; ess::$b->page->add_message("Siden er nå aktivert. Alle undersider som ikke er deaktivert vil også være tilgjengelige."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_enabled = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // skjul fra/vis i menyen if (isset($_GET['show_menu'])) { $update = false; if ($_GET['show_menu'] == "false") { // deaktiver if (nodes::$node_info['node_show_menu'] > 0) { $update = 0; ess::$b->page->add_message("Siden blir ikke lengre vist i menyen. Alle undersider vil også bli skjult fra menyen."); } } else { // aktiver if (nodes::$node_info['node_show_menu'] == 0) { $update = 1; ess::$b->page->add_message("Siden blir nå vist i menyen. Alle undersider som ikke er skjult vil også bli vist i menyen."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_show_menu = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // vis/skjul undersider if (isset($_GET['expand_menu'])) { $update = false; if ($_GET['expand_menu'] == "false") { // deaktiver if (nodes::$node_info['node_expand_menu'] > 0) { $update = 0; ess::$b->page->add_message("Undersidene blir ikke lengre vist i menyen."); } } else { // aktiver if (nodes::$node_info['node_expand_menu'] == 0) { $update = 1; ess::$b->page->add_message("Undersidene blir nå vist i menyen."); } } // oppdater? if ($update !== false) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_expand_menu = {$update} WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // slett side if (isset($_GET['delete'])) { $table_check = ""; $where_check = ""; // sjekk om det er noen elementer under denne $result = \Kofradia\DB::get()->query("SELECT COUNT(node_id) FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0"); $ant = $result->fetchColumn(0); if ($ant > 0) { ess::$b->page->add_message("Du kan ikke slette en side som inneholder undersider. Flytt eller fjern undersidene og prøv på nytt.", "error"); redirect::handle(); } $table_check .= ", (SELECT COUNT(node_id) AS ant FROM nodes WHERE node_parent_node_id = " . nodes::$node_id . " AND node_deleted = 0) AS ref_subnodes"; $where_check .= " AND ref_subnodes.ant = 0"; // sjekk type og spesiell info switch (nodes::$node_info['node_type']) { case "container": // sjekk antall enheter $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0"); $ant = $result->fetchColumn(0); if ($ant > 0) { ess::$b->page->add_message("Du kan ikke slette en side som inneholder noen enheter. Fjern enhetene og prøv på nytt.", "error"); redirect::handle(); } $table_check .= ", (SELECT COUNT(ni_id) AS ant FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_deleted = 0) AS ref_items"; $where_check .= " AND ref_items.ant = 0"; break; } // godkjenn? if (isset($_POST['delete'])) { // marker som slettet $a = \Kofradia\DB::get()->exec("UPDATE nodes{$table_check} SET node_deleted = " . time() . " WHERE node_id = " . nodes::$node_id . $where_check); if ($a == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv på nytt.", "error"); redirect::handle(); } ess::$b->page->add_message("Siden ble markert som slettet og er ikke lenger tilgjengelig."); redirect::handle("node/a", redirect::ROOT); } echo ' <h1>Slett side</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> </dl> <p>' . show_sbutton("Slett", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } // vanlig side if (nodes::$node_info['node_type'] == "container") { // vis/skjul tittel if (isset($_GET['hide_title'])) { $hide = NULL; if ($_GET['hide_title'] == "false") { // vis tittel if (nodes::$node_params->get("hide_title")) { $hide = false; ess::$b->page->add_message("Tittelen blir nå vist øverst på siden."); } } else { // skjul tittel if (!nodes::$node_params->get("hide_title")) { $hide = true; ess::$b->page->add_message("Tittelen blir ikke lengre vist øverst på siden."); } } // oppdater? if (!is_null($hide)) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); if ($hide) { $params->update("hide_title", "1"); } else { $params->remove("hide_title"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // vis/skjul sist endret dato if (isset($_GET['hide_time_change'])) { $hide = NULL; if ($_GET['hide_time_change'] == "false") { // vis tittel if (nodes::$node_params->get("hide_time_change")) { $hide = false; ess::$b->page->add_message("Dato for sist endret blir nå vist nederst på siden."); } } else { // skjul tittel if (!nodes::$node_params->get("hide_time_change")) { $hide = true; ess::$b->page->add_message("Dato for sist endret blir ikke lengre vist nederst på siden."); } } // oppdater? if (!is_null($hide)) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); if ($hide) { $params->update("hide_time_change", "1"); } else { $params->remove("hide_time_change"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); } redirect::handle(); } // aktiver/deaktiver enhet if (isset($_GET['unit_enable']) || isset($_GET['unit_disable'])) { if (isset($_GET['unit_enable'])) { $value = 1; $msg = "Enheten er nå aktivert og blir vist."; $unit_id = intval($_GET['unit_enable']); } else { $value = 0; $msg = "Enheten er nå deaktivert og blir ikke vist."; $unit_id = intval($_GET['unit_disable']); } // oppdater $affected = \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_enabled = {$value} WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); if ($affected > 0) { \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message($msg); } redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit_id}", redirect::ROOT); } // slett enhet if (isset($_GET['unit_delete'])) { // hent enheten $unit_id = \Kofradia\DB::quote($_GET['unit_delete']); $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); // fant ikke? if ($result->rowCount() == 0) { ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error"); redirect::handle(); } $unit = $result->fetch(); // slette? if (isset($_POST['delete'])) { // marker som slettet \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_deleted = " . time() . " WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); ess::$b->page->add_message("Enheten ble markert som slettet og er ikke lenger tilgjengelig."); redirect::handle(); } echo ' <h1>Slett enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> </dl> <p>' . show_sbutton("Slett enhet", 'name="delete"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form> <h2>Innhold av enhet</h2>' . nodes::content_build($unit); page_node::load_page(); } // rediger enhet if (isset($_GET['unit_edit'])) { // hent enheten $unit_id = \Kofradia\DB::quote($_GET['unit_edit']); $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_type, nir_content, nir_params, nir_description, ni_priority, ni_enabled, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$unit_id} AND ni_deleted = 0"); // fant ikke? if ($result->rowCount() == 0) { ess::$b->page->add_message("Fant ikke enheten. Prøv på nytt.", "error"); redirect::handle(); } $unit = $result->fetch(); // kan endres? if (!isset(nodes::$item_types[$unit['ni_type']]) || !nodes::$item_types[$unit['ni_type']][1]) { ess::$b->page->add_message("Denne enheten kan ikke redigeres.", "error"); redirect::handle(); } $params = new params($unit['nir_params']); // lagre endringer? if (isset($_POST['description']) && isset($_POST['content'])) { // ingenting endret? if (trim($_POST['description']) == $unit['nir_description'] && trim($_POST['content']) == $unit['nir_content']) { ess::$b->page->add_message("Ingen endringer ble utført.", "error"); } else { \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$unit['ni_id']}, nir_params = " . \Kofradia\DB::quote($params->build()) . ", nir_content = " . \Kofradia\DB::quote($_POST['content']) . ", nir_description = " . \Kofradia\DB::quote($_POST['description']) . ", nir_time = " . time()); $nir_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id}, ni_nir_count = ni_nir_count + 1 WHERE ni_id = {$unit['ni_id']}"); \Kofradia\DB::get()->exec("UPDATE nodes SET node_change = " . time() . " WHERE node_id = " . nodes::$node_id); putlog("CREWCHAN", "NODE REDIGERT: " . login::$user->player->data['up_name'] . " redigerte %u" . nodes::$node_info['node_title'] . "%u " . ess::$s['spath'] . "/node/" . nodes::$node_id); ess::$b->page->add_message("Enheten ble oppdatert."); redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT); } } // vis form osv echo ' <h1>Rediger enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Forelder</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Type</dt> <dd>' . nodes::content_type($unit) . '</dd> <dt>Beskrivelse</dt> <dd> <textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description", $unit['nir_description'])) . '</textarea> </dd>'; switch ($unit['ni_type']) { case 1: echo ' <dt>Innhold (BB-kode)</dt> <dd> </dd> </dl> <p> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; break; case 2: echo ' <dt>Innhold (ren HTML)</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; break; case 3: tinymce::add_element("ni_content", true); echo ' <dt>Innhold (HTML editor)</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" id="ni_content" style="width: 530px; height: 400px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p>'; tinymce::load(); break; case 4: echo ' <dt>Ren tekst</dt> <dd> </dd> </dl> <p class="clear"> <textarea name="content" cols="30" rows="2" style="width: 530px; height: 300px">' . htmlspecialchars(postval("content", $unit['nir_content'])) . '</textarea> </p'; break; default: redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_highlight={$unit['ni_id']}", redirect::ROOT); } echo ' <p>' . show_sbutton("Oppdater") . ' <a href="' . ess::$s['relative_path'] . '/node/a?node_id=' . nodes::$node_id . '&unit_highlight=' . $unit['ni_id'] . '" class="button">Avbryt</a></p> </form>'; page_node::load_page(); } // opprette ny enhet? if (isset($_GET['unit_new'])) { $previous_unit = getval("previous_unit", 0); // hent info om previous unit if ($previous_unit == 0) { $priority = 1; $priority_num = 1; } else { // hent priority til forrige $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_id = {$previous_unit} AND ni_deleted = 0"); if ($result->rowCount() == 0) { ess::$b->page->add_message("Noe gikk galt. Prøv igjen.", "error"); redirect::handle(); } $priority = $result->fetchColumn(0); // hent priority til den vi skal "erstatte" $result = \Kofradia\DB::get()->query("SELECT ni_priority FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority > {$priority} AND ni_deleted = 0 ORDER BY ni_priority LIMIT 1"); if ($result->rowCount() > 0) { $priority = $result->fetchColumn(0); } else { $priority++; } // hent nummer $result = \Kofradia\DB::get()->query("SELECT COUNT(ni_id) FROM nodes_items WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority < {$priority} AND ni_deleted = 0"); $priority_num = $result->fetchColumn(0) + 1; } // legge til? if (isset($_POST['type'])) { // kontroller type $type = postval("type"); if (!isset(nodes::$item_types[$type]) || !nodes::$item_types[$type][1]) { ess::$b->page->add_message("Ugyldig type. Prøv på nytt.", "error"); } else { $description = postval("description", NULL); // sett opp prioritys \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_priority = ni_priority + 1 WHERE ni_node_id = " . nodes::$node_id . " AND ni_priority >= {$priority} AND ni_deleted = 0"); // legg til enhet \Kofradia\DB::get()->exec("INSERT INTO nodes_items SET ni_node_id = " . nodes::$node_id . ", ni_type = " . \Kofradia\DB::quote($type) . ", ni_priority = {$priority}"); $ni_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("INSERT INTO nodes_items_rev SET nir_ni_id = {$ni_id}, nir_time = " . time() . ", nir_description = " . \Kofradia\DB::quote($description)); $nir_id = \Kofradia\DB::get()->lastInsertId(); \Kofradia\DB::get()->exec("UPDATE nodes_items SET ni_nir_id = {$nir_id} WHERE ni_id = {$ni_id}"); ess::$b->page->add_message("Enheten ble lagt til."); redirect::handle("node/a?node_id=" . nodes::$node_id . "&unit_edit={$ni_id}", redirect::ROOT); } } echo ' <h1>Ny enhet</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Under side</dt> <dd>' . htmlspecialchars(nodes::$node_info['node_title']) . '</dd> <dt>Plassering</dt> <dd>' . $priority_num . '</dd> <dt>Type</dt> <dd> <select name="type">'; $selected = postval("type", 3); if (!isset(nodes::$item_types[$selected]) || !nodes::$item_types[$selected][1]) { $selected = false; } foreach (nodes::$item_types as $key => $info) { // ikke i bruk? if (!$info[1]) { continue; } echo ' <option value="' . htmlspecialchars($key) . '"' . ($selected == $key ? ' selected="selected"' : '') . '>' . htmlspecialchars($info[0]) . '</option>'; } echo ' </select> </dd> <dt>Beskrivelse</dt> <dd> <textarea name="description" cols="30" rows="2">' . htmlspecialchars(postval("description")) . '</textarea> </dd> </dl> <p>' . show_sbutton("Opprett enhet") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; page_node::load_page(); } } elseif (nodes::$node_info['node_type'] == "url_relative" || nodes::$node_info['node_type'] == "url_relative") { // endre adresse if (isset($_GET['edit_url'])) { // lagre? if (isset($_POST['url'])) { // hent friske params $result = \Kofradia\DB::get()->query("SELECT node_params FROM nodes WHERE node_id = " . nodes::$node_id . " FOR UPDATE"); $params = new params($result->fetchColumn(0)); $params->update("url", $_POST['url']); if (isset($_POST['new_window'])) { $params->update("new_window", 1); } else { $params->remove("new_window"); } // oppdater \Kofradia\DB::get()->exec("UPDATE nodes SET node_params = " . \Kofradia\DB::quote($params->build()) . " WHERE node_id = " . nodes::$node_id); ess::$b->page->add_message("Adressen ble oppdatert."); redirect::handle(); } if (nodes::$node_info['node_type'] == "url_relative") { echo ' <h1>Rediger adresse</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende adresse</dt> <dd>' . htmlspecialchars(ess::$s['path']) . htmlspecialchars(nodes::$node_params->get("url", " ???")) . '</dd> <dt>Ny adresse</dt> <dd>' . htmlspecialchars(ess::$s['path']) . ' <input type="text" name="url" class="styled w150" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></dd> <dt>Åpne i nytt vindu</dt> <dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; } else { echo ' <h1>Rediger adresse</h1> <form action="" method="post"> <dl class="dd_right dl_2x"> <dt>Nåværende adresse</dt> <dd>' . htmlspecialchars(nodes::$node_params->get("url", "???")) . '</dd> <dt>Ny adresse</dt> <dd><input type="text" name="url" class="styled w250" value="' . htmlspecialchars(nodes::$node_params->get("url", "")) . '" /></Dd> <dt>Åpne i nytt vindu</dt> <dd><input type="checkbox" name="new_window"' . (nodes::$node_params->get("new_window") ? ' checked="checked"' : '') . ' /></dd> </dl> <p>' . show_sbutton("Lagre") . ' ' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>'; } page_node::load_page(); } } } if ($node) { self::show_node_info($node); } self::show_nodes_list(); page_node::load_page(); }