* Link: http://code.shishnet.org/shimmie2/ * License: GPLv2 * Description: Add HTML to some space * Documentation: * Any HTML is allowed *
Separate different blocks with a line of 4 dashes *
Within each block, some settings can be set. *
Example settings *
 *  Title: some text
 *  Area: main
 *  Priority: 100
 *  Pages: *
 *  
 *  Here is some <b>html</b>
 *  ----
 *  Title: another block, on the left this time
 *  Priority: 0
 *  Pages: post/view/*
 *  
 *  Area can be "left" or "main" in the default theme
 *  other themes may have more areas. Priority has 0
 *  near the top of the screen and 100 near the bottom
 *  
*/ class Blocks extends Extension { public function onInitExt(InitExtEvent $event) { global $config, $database; if($config->get_int("ext_blocks_version") < 1) { $database->create_table("blocks", " id SCORE_AIPK, pages VARCHAR(128) NOT NULL, title VARCHAR(128) NOT NULL, area VARCHAR(16) NOT NULL, priority INTEGER NOT NULL, content TEXT NOT NULL, INDEX (pages) "); $config->set_int("ext_blocks_version", 1); } } public function onUserBlockBuilding(UserBlockBuildingEvent $event) { global $user; if($user->can("manage_blocks")) { $event->add_link("Blocks Editor", make_link("blocks/list")); } } public function onPageRequest(PageRequestEvent $event) { global $config, $database, $page, $user; $blocks = $database->get_all("SELECT * FROM blocks"); foreach($blocks as $block) { if(fnmatch($block['pages'], implode("/", $event->args))) { $page->add_block(new Block($block['title'], $block['content'], $block['area'], $block['priority'])); } } if($event->page_matches("blocks") && $user->can("manage_blocks")) { if($event->get_arg(0) == "add") { if($user->check_auth_token()) { $database->execute(" INSERT INTO blocks (pages, title, area, priority, content) VALUES (?, ?, ?, ?, ?) ", array($_POST['pages'], $_POST['title'], $_POST['area'], (int)$_POST['priority'], $_POST['content'])); $page->set_mode("redirect"); $page->set_redirect(make_link("blocks/list")); } } if($event->get_arg(0) == "update") { if($user->check_auth_token()) { if(!empty($_POST['delete'])) { $database->execute(" DELETE FROM blocks WHERE id=? ", array($_POST['id'])); } else { $database->execute(" UPDATE blocks SET pages=?, title=?, area=?, priority=?, content=? WHERE id=? ", array($_POST['pages'], $_POST['title'], $_POST['area'], (int)$_POST['priority'], $_POST['content'], $_POST['id'])); } $page->set_mode("redirect"); $page->set_redirect(make_link("blocks/list")); } } else if($event->get_arg(0) == "remove") { if($user->check_auth_token()) { $database->execute("DELETE FROM blocks WHERE id=:id", array("id" => $_POST['id'])); log_info("alias_editor", "Deleted Block #".$_POST['id']); $page->set_mode("redirect"); $page->set_redirect(make_link("blocks/list")); } } else if($event->get_arg(0) == "list") { $this->theme->display_blocks($database->get_all("SELECT * FROM blocks")); } } } } ?>