Пример #1
0
    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 . "&amp;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>&nbsp;</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 &laquo;" . htmlspecialchars(nodes::$node_info['node_title']) . "&raquo; til &laquo;" . htmlspecialchars($title) . "&raquo;.");
                        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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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 . '&amp;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();
    }
Пример #2
0
    public function init()
    {
    }
}
class tinymce4_ui_form extends e_admin_form_ui
{
}
new tinymce4_admin();
require_once e_ADMIN . "auth.php";
e107::getAdminUI()->runPage();
require_once e_ADMIN . "footer.php";
exit;
require_once e_HANDLER . "form_handler.php";
require_once e_HANDLER . 'message_handler.php';
$frm = new e_form(true);
$ef = new tinymce();
//TODO save prefs to separate config row.
// List all forms of access, and allow the user to choose between simple/advanced or 'custom' settings.
if (varset($_POST['update']) || varset($_POST['create'])) {
    $id = intval($_POST['record_id']);
    $ef->submitPage($id);
}
if (varset($_POST['delete'])) {
    $id = key($_POST['delete']);
    $ef->deleteRecord($id);
    $_GET['mode'] = "list";
}
if (isset($_POST['edit']) || $id) {
    $id = isset($_POST['edit']) ? key($_POST['edit']) : $id;
    define("TINYMCE_CONFIG", $id);
} else {
Пример #3
0
    function load()
    {
        $count_admin = count(self::$elements['admin']);
        $count_normal = count(self::$elements['normal']);
        if ($count_admin > 0 || $count_normal > 0) {
            if (!self::$loaded) {
                self::$loaded = true;
                ess::$b->page->add_js_file(LIB_HTTP . '/tinymce/tinymce/tiny_mce_gzip.js');
                // compressor js
                ess::$b->page->add_js_domready('
tinyMCE_GZ.init({
	plugins : \'' . implode(",", array(self::$plugins_all, $count_admin > 0 ? self::$plugins_admin : self::$plugins_others)) . '\',
	themes: \'advanced\',
	languages: \'no\',
	disk_cache: true,
	debug: false
});');
            }
            if ($count_admin > 0) {
                // admin
                ess::$b->page->add_js_domready('
tinyMCE.init({
	mode: "exact",
	elements: "' . implode(",", self::$elements['admin']) . '",
	plugins: "' . implode(",", array(self::$plugins_all, self::$plugins_admin)) . '",
	language: "no",
	theme: "advanced",
	skin: "o2k7",
	skin_variant: "black",
	theme_advanced_buttons1_add_before: "save,separator",
	theme_advanced_buttons1_add: "fontselect,fontsizeselect",
	theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
	theme_advanced_buttons2_add: "separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
	theme_advanced_buttons3_add_before: "tablecontrols,separator",
	theme_advanced_buttons3_add: "emotions,iespell,advhr,separator,print,fullscreen",
	theme_advanced_toolbar_location: "top",
	theme_advanced_toolbar_align: "left",
	theme_advanced_statusbar_location: "bottom",
	theme_advanced_resizing: true,
	theme_advanced_resize_horizontal: false,
	content_css: "' . ess::$s['relative_path'] . '/themes/sm/default.css?' . @filemtime(PATH_PUBLIC . "/themes/sm/default.css") . '",
	apply_source_formatting: true,
	convert_fonts_to_spans: true,
	height: 600,
	width: "100%"
});');
            }
            if ($count_normal > 0) {
                // normal
                ess::$b->page->add_js_domready('
tinyMCE.init({mode: "exact",
	elements: "' . implode(",", self::$elements['normal']) . '",
	plugins: "' . implode(",", array(self::$plugins_all, self::$plugins_others)) . '",
	language: "no",
	theme: "advanced",
	theme_advanced_buttons1: "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,hr,removeformat,serparator,sub,sup,separator,charmap,emotions,preview",
	theme_advanced_buttons2: "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,image,cleanup",
	theme_advanced_buttons3: "",
	theme_advanced_toolbar_location: "top",
	theme_advanced_toolbar_align: "left",
	theme_advanced_statusbar_location: "none",
	theme_advanced_resizing: true,
	content_css: "' . ess::$s['relative_path'] . '/themes/sm/default.css?' . @filemtime(PATH_PUBLIC . "/themes/sm/default.css") . '"
});');
            }
        }
    }