mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-04-20 04:29:40 -04:00
Dashboard blocks are now data driven, and you can add new blocks to
both the sidebar and the center content area from a dropdown at the top of the dashboard sidebar.
This commit is contained in:
@@ -19,10 +19,70 @@
|
||||
*/
|
||||
class Admin_Dashboard_Controller extends Admin_Controller {
|
||||
public function index() {
|
||||
$blocks = unserialize(module::get_var("core", "dashboard_blocks"));
|
||||
|
||||
$block_adder = new Block();
|
||||
$block_adder->title = t("Dashboard Content");
|
||||
$block_adder->content = $this->get_add_block_form();
|
||||
|
||||
$view = new Admin_View("admin.html");
|
||||
$view->content = new View("admin_dashboard_main.html");
|
||||
$view->sidebar = new View("admin_dashboard_sidebar.html");
|
||||
$view->content = $this->get_blocks($blocks["main"]);
|
||||
$view->sidebar = $block_adder . $this->get_blocks($blocks["sidebar"]);
|
||||
print $view;
|
||||
}
|
||||
|
||||
public function add_block() {
|
||||
$form = $this->get_add_block_form();
|
||||
if ($form->validate()) {
|
||||
list ($module_name, $id) = explode(":", $form->add_block->id->value);
|
||||
$blocks = unserialize(module::get_var("core", "dashboard_blocks"));
|
||||
$available = $this->get_block_list();
|
||||
|
||||
if ($form->add_block->center->value) {
|
||||
$blocks["main"][] = array($module_name, $id);
|
||||
message::success(
|
||||
t("Added <b>{{title}}</b> block to the main dashboard area",
|
||||
array("title" => $available["$module_name:$id"])));
|
||||
} else {
|
||||
$blocks["sidebar"][] = array($module_name, $id);
|
||||
message::success(
|
||||
t("Added <b>{{title}}</b> to the dashboard sidebar",
|
||||
array("title" => $available["$module_name:$id"])));
|
||||
}
|
||||
module::set_var("core", "dashboard_blocks", serialize($blocks));
|
||||
}
|
||||
url::redirect("admin/dashboard");
|
||||
}
|
||||
|
||||
private function get_blocks($blocks) {
|
||||
$result = "";
|
||||
foreach ($blocks as $desc) {
|
||||
if (method_exists("$desc[0]_dashboard", "get_block")) {
|
||||
$result .= call_user_func(array("$desc[0]_dashboard", "get_block"), $desc[1]);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function get_block_list() {
|
||||
$blocks = array();
|
||||
foreach (module::installed() as $module) {
|
||||
if (method_exists("{$module->name}_dashboard", "get_list")) {
|
||||
foreach (call_user_func(array("{$module->name}_dashboard", "get_list")) as $id => $title) {
|
||||
$blocks["{$module->name}:$id"] = $title;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $blocks;
|
||||
}
|
||||
|
||||
public function get_add_block_form() {
|
||||
$form = new Forge("admin/dashboard/add_block", "", "post");
|
||||
$group = $form->group("add_block")->label(t("Add Block"));
|
||||
$group->dropdown("id")->label("Available Blocks")->options($this->get_block_list());
|
||||
$group->submit("center")->value(t("Add to center"));
|
||||
$group->submit("sidebar")->value(t("Add to sidebar"));
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -66,54 +66,4 @@ class core_block_Core {
|
||||
$profiler->render();
|
||||
}
|
||||
}
|
||||
|
||||
public static function admin_dashboard_blocks($theme) {
|
||||
$block = new Block();
|
||||
$block->id = "gWelcome";
|
||||
$block->title = t("Welcome to Gallery3");
|
||||
$block->content = new View("admin_block_welcome.html");
|
||||
$blocks[] = $block;
|
||||
|
||||
$block = new Block();
|
||||
$block->id = "gPhotoStream";
|
||||
$block->title = t("Photo Stream");
|
||||
$block->content = new View("admin_block_photo_stream.html");
|
||||
$block->content->photos =
|
||||
ORM::factory("item")->where("type", "photo")->orderby("created", "desc")->find_all(10);
|
||||
$blocks[] = $block;
|
||||
|
||||
$block = new Block();
|
||||
$block->id = "gLogEntries";
|
||||
$block->title = t("Log Entries");
|
||||
$block->content = new View("admin_block_log_entries.html");
|
||||
$block->content->entries = ORM::factory("log")->orderby("timestamp", "DESC")->find_all(5);
|
||||
$blocks[] = $block;
|
||||
|
||||
return implode("\n", $blocks);
|
||||
}
|
||||
|
||||
public static function admin_sidebar_blocks($theme) {
|
||||
$block = new Block();
|
||||
$block->id = "gStats";
|
||||
$block->title = t("Gallery Stats");
|
||||
$block->content = new View("admin_block_stats.html");
|
||||
$block->content->album_count = ORM::factory("item")->where("type", "album")->count_all();
|
||||
$block->content->photo_count = ORM::factory("item")->where("type", "photo")->count_all();
|
||||
$blocks[] = $block;
|
||||
|
||||
$block = new Block();
|
||||
$block->id = "gPlatform";
|
||||
$block->title = t("Platform Information");
|
||||
$block->content = new View("admin_block_platform.html");
|
||||
$blocks[] = $block;
|
||||
|
||||
$block = new Block();
|
||||
$block->id = "gProjectNews";
|
||||
$block->title = t("Gallery Project News");
|
||||
$block->content = new View("admin_block_news.html");
|
||||
$block->content->feed = feed::parse("http://gallery.menalto.com/node/feed", 3);
|
||||
$blocks[] = $block;
|
||||
|
||||
return implode("\n", $blocks);
|
||||
}
|
||||
}
|
||||
79
core/helpers/core_dashboard.php
Normal file
79
core/helpers/core_dashboard.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php defined("SYSPATH") or die("No direct script access.");
|
||||
/**
|
||||
* Gallery - a web based photo album viewer and editor
|
||||
* Copyright (C) 2000-2008 Bharat Mediratta
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
class core_dashboard_Core {
|
||||
public static function get_list() {
|
||||
return array(
|
||||
"welcome" => t("Welcome to Gallery 3!"),
|
||||
"photo_stream" => t("Photo Stream"),
|
||||
"log_entries" => t("Log Entries"),
|
||||
"stats" => t("Gallery Stats"),
|
||||
"platform_info" => t("Platform Information"),
|
||||
"project_news" => t("Gallery Project News"));
|
||||
}
|
||||
|
||||
public static function get_block($block_id) {
|
||||
$block = new Block();
|
||||
switch($block_id) {
|
||||
case "welcome":
|
||||
$block->id = "gWelcome";
|
||||
$block->title = t("Welcome to Gallery3");
|
||||
$block->content = new View("admin_block_welcome.html");
|
||||
break;
|
||||
|
||||
case "photo_stream":
|
||||
$block->id = "gPhotoStream";
|
||||
$block->title = t("Photo Stream");
|
||||
$block->content = new View("admin_block_photo_stream.html");
|
||||
$block->content->photos =
|
||||
ORM::factory("item")->where("type", "photo")->orderby("created", "desc")->find_all(10);
|
||||
break;
|
||||
|
||||
case "log_entries":
|
||||
$block->id = "gLogEntries";
|
||||
$block->title = t("Log Entries");
|
||||
$block->content = new View("admin_block_log_entries.html");
|
||||
$block->content->entries = ORM::factory("log")->orderby("timestamp", "desc")->find_all(5);
|
||||
break;
|
||||
|
||||
case "stats":
|
||||
$block->id = "gStats";
|
||||
$block->title = t("Gallery Stats");
|
||||
$block->content = new View("admin_block_stats.html");
|
||||
$block->content->album_count = ORM::factory("item")->where("type", "album")->count_all();
|
||||
$block->content->photo_count = ORM::factory("item")->where("type", "photo")->count_all();
|
||||
break;
|
||||
|
||||
case "platform_info":
|
||||
$block->id = "gPlatform";
|
||||
$block->title = t("Platform Information");
|
||||
$block->content = new View("admin_block_platform.html");
|
||||
break;
|
||||
|
||||
case "project_news":
|
||||
$block->id = "gProjectNews";
|
||||
$block->title = t("Gallery Project News");
|
||||
$block->content = new View("admin_block_news.html");
|
||||
$block->content->feed = feed::parse("http://gallery.menalto.com/node/feed", 3);
|
||||
break;
|
||||
}
|
||||
|
||||
return $block;
|
||||
}
|
||||
}
|
||||
@@ -233,7 +233,18 @@ class core_installer {
|
||||
$theme->version = $theme_info->version;
|
||||
$theme->save();
|
||||
}
|
||||
|
||||
module::set_var(
|
||||
"core", "dashboard_blocks", serialize(
|
||||
array("sidebar" => array(array("core", "stats"),
|
||||
array("core", "platform_info"),
|
||||
array("core", "project_news")),
|
||||
"main" => array(array("core", "welcome"),
|
||||
array("core", "photo_stream"),
|
||||
array("core", "log_entries")))));
|
||||
|
||||
module::set_version("core", 1);
|
||||
module::set_var("core", "version", "3.0");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,13 +85,11 @@ class Admin_View_Core extends View {
|
||||
public function __call($function, $args) {
|
||||
switch ($function) {
|
||||
case "admin_credits";
|
||||
case "admin_dashboard_blocks":
|
||||
case "admin_footer":
|
||||
case "admin_header_top":
|
||||
case "admin_header_bottom":
|
||||
case "admin_page_bottom":
|
||||
case "admin_page_top":
|
||||
case "admin_sidebar_blocks":
|
||||
case "admin_head":
|
||||
$blocks = array();
|
||||
foreach (module::installed() as $module) {
|
||||
|
||||
25
core/views/admin_dashboard_blocks.html.php
Normal file
25
core/views/admin_dashboard_blocks.html.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php defined("SYSPATH") or die("No direct script access.") ?>
|
||||
<div id="gAdminDashboardBlocks">
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th> <?= t("Main") ?> </th>
|
||||
<th> <?= t("Sidebar") ?> </th>
|
||||
</tr>
|
||||
|
||||
<? foreach ($available as $module_name => $block_list): ?>
|
||||
<? foreach ($block_list as $id => $title): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?= $title ?>
|
||||
</td>
|
||||
<td>
|
||||
<option>
|
||||
</option>
|
||||
</td>
|
||||
</tr>
|
||||
<? endforeach ?>
|
||||
<? endforeach ?>
|
||||
</table>
|
||||
</div>
|
||||
<? printf("<pre>%s</pre>",print_r($available,1));flush(); ?>
|
||||
<? printf("<pre>%s</pre>",print_r($displayed,1));flush(); ?>
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php defined("SYSPATH") or die("No direct script access.") ?>
|
||||
<?= $theme->admin_dashboard_blocks() ?>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php defined("SYSPATH") or die("No direct script access.") ?>
|
||||
<div id="gAvailableBlocks" class="gBlock">
|
||||
<form class="gBlockContent">
|
||||
<fieldset>
|
||||
<legend>Add Dashboard Blocks</legend>
|
||||
<label for="">Available blocks</label>
|
||||
<select name="" id="">
|
||||
<option>Somthing</option>
|
||||
<option>Somthing else</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<?= $theme->admin_sidebar_blocks() ?>
|
||||
@@ -17,7 +17,6 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
class comment_block_Core {
|
||||
public static function head($theme) {
|
||||
$url = url::file("modules/comment/js/comment.js");
|
||||
@@ -40,14 +39,4 @@ class comment_block_Core {
|
||||
$block->content .= comment::get_add_form($theme->item())->render("form.html");
|
||||
return $block;
|
||||
}
|
||||
|
||||
public static function admin_dashboard_blocks($theme) {
|
||||
$block = new Block();
|
||||
$block->id = "gRecentComments";
|
||||
$block->title = t("Recent Comments");
|
||||
$block->content = new View("admin_block_recent_comments.html");
|
||||
$block->content->comments =
|
||||
ORM::factory("comment")->orderby("created", "DESC")->limit(5)->find_all();
|
||||
return $block;
|
||||
}
|
||||
}
|
||||
39
modules/comment/helpers/comment_dashboard.php
Normal file
39
modules/comment/helpers/comment_dashboard.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php defined("SYSPATH") or die("No direct script access.");
|
||||
/**
|
||||
* Gallery - a web based photo album viewer and editor
|
||||
* Copyright (C) 2000-2008 Bharat Mediratta
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
class comment_dashboard_Core {
|
||||
public static function get_list() {
|
||||
return array("recent_comments" => t("Recent Comments"));
|
||||
}
|
||||
|
||||
public static function get_block($block_id) {
|
||||
$block = new Block();
|
||||
switch ($block_id) {
|
||||
case "recent_comments":
|
||||
$block->id = "gRecentComments";
|
||||
$block->title = t("Recent Comments");
|
||||
$block->content = new View("admin_block_recent_comments.html");
|
||||
$block->content->comments =
|
||||
ORM::factory("comment")->orderby("created", "DESC")->limit(5)->find_all();
|
||||
break;
|
||||
}
|
||||
|
||||
return $block;
|
||||
}
|
||||
}
|
||||
@@ -49,6 +49,10 @@ class comment_installer {
|
||||
PRIMARY KEY (`id`))
|
||||
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
|
||||
|
||||
|
||||
$dashboard_blocks = unserialize(module::get_var("core", "dashboard_blocks"));
|
||||
$dashboard_blocks["main"][] = array("comment", "recent_comments");
|
||||
module::set_var("core", "dashboard_blocks", serialize($dashboard_blocks));
|
||||
module::set_var("comment", "spam_caught", 0);
|
||||
module::set_version("comment", 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user