Merge branch 'master' of git@github.com:gallery/gallery3

Conflicts:
	modules/gallery/libraries/Theme_View.php
	themes/admin_default/views/admin.html.php
This commit is contained in:
Tim Almdal
2009-06-29 06:44:05 -07:00
19 changed files with 240 additions and 193 deletions

View File

@@ -30,10 +30,6 @@ require(DOCROOT . "installer/installer.php");
if (PHP_SAPI == "cli") {
include("cli.php");
} else {
if (@$_GET["page"] == "check") {
include("check.html.php");
} else {
include("web.php");
}
include("web.php");
}

View File

@@ -32,6 +32,19 @@ CREATE TABLE {access_intents} (
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
INSERT INTO {access_intents} VALUES (1,1,1,1,0,0,1,1,0,0);
DROP TABLE IF EXISTS {caches};
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE {caches} (
`id` int(9) NOT NULL auto_increment,
`key` varchar(255) NOT NULL,
`tags` varchar(255) default NULL,
`expiration` int(9) NOT NULL,
`cache` longblob,
PRIMARY KEY (`id`),
KEY `tags` (`tags`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS {comments};
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
@@ -208,7 +221,7 @@ CREATE TABLE {modules} (
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
INSERT INTO {modules} VALUES (1,1,'gallery',3),(2,1,'user',1),(3,1,'comment',2),(4,1,'organize',1),(5,1,'info',1),(6,1,'rss',1),(7,1,'search',1),(8,1,'slideshow',1),(9,1,'tag',1);
INSERT INTO {modules} VALUES (1,1,'gallery',6),(2,1,'user',1),(3,1,'comment',2),(4,1,'organize',1),(5,1,'info',1),(6,1,'rss',1),(7,1,'search',1),(8,1,'slideshow',1),(9,1,'tag',1);
DROP TABLE IF EXISTS {outgoing_translations};
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;

View File

@@ -18,31 +18,6 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
// We know that we have either mysql or mysqli. By default we use mysql functions, so if they're
// not defined then do the simplest thing which will work: remap them to their mysqli
// counterparts.
if (!function_exists("mysql_query")) {
function mysql_connect($host, $user, $pass) {
installer::$mysqli = new mysqli($host, $user, $pass);
// http://php.net/manual/en/mysqli.connect.php says to use mysqli_connect_error() instead of
// $mysqli->connect_error because of bugs before PHP 5.2.9
$error = mysqli_connect_error();
return empty($error);
}
function mysql_query($query) {
return installer::$mysqli->query($query);
}
function mysql_num_rows($result) {
return $result->num_rows;
}
function mysql_error() {
return installer::$mysqli->error;
}
function mysql_select_db($db) {
return installer::$mysqli->select_db($db);
}
}
class installer {
static $mysqli;
@@ -92,7 +67,32 @@ class installer {
}
static function connect($config) {
return @mysql_connect($config["host"], $config["user"], $config["password"]);
// We know that we have either mysql or mysqli. By default we use mysql functions, so if
// they're not defined then do the simplest thing which will work: remap them to their mysqli
// counterparts.
if (!function_exists("mysql_query")) {
function mysql_connect($host, $user, $pass) {
installer::$mysqli = new mysqli($host, $user, $pass);
// http://php.net/manual/en/mysqli.connect.php says to use mysqli_connect_error() instead of
// $mysqli->connect_error because of bugs before PHP 5.2.9
$error = mysqli_connect_error();
return empty($error);
}
function mysql_query($query) {
return installer::$mysqli->query($query);
}
function mysql_num_rows($result) {
return $result->num_rows;
}
function mysql_error() {
return installer::$mysqli->error;
}
function mysql_select_db($db) {
return installer::$mysqli->select_db($db);
}
}
return mysql_connect($config["host"], $config["user"], $config["password"]);
}
static function select_db($config) {

View File

@@ -26,10 +26,10 @@ var show_full_size = function(image_url, image_width, image_height) {
// handle the case where the calculation is almost zero (2.14e-14)
return {
top: ((windowHeight - imageHeight) / 2).toFixed(2),
left: ((windowWidth - imageWidth) / 2).toFixed(2),
width: imageWidth.toFixed(2),
height: imageHeight.toFixed(2)
top: Number((windowHeight - imageHeight) / 2),
left: Number((windowWidth - imageWidth) / 2),
width: Number(imageWidth),
height: Number(imageHeight)
};
}

View File

@@ -2,7 +2,7 @@
<ul>
<? foreach ($comments as $i => $comment): ?>
<li class="<?= ($i % 2 == 0) ? "gEvenRow" : "gOddRow" ?>">
<img src="<?= $comment->author()->avatar_url(32, $theme->url("images/avatar.jpg", true)) ?>"
<img src="<?= $comment->author()->avatar_url(32, $theme->theme_url("images/avatar.jpg", true)) ?>"
class="gAvatar"
alt="<?= p::clean($comment->author_name()) ?>"
width="32"

View File

@@ -106,7 +106,7 @@
<tr id="gComment-<?= $comment->id ?>" class="<?= ($i % 2 == 0) ? "gEvenRow" : "gOddRow" ?>">
<td>
<a href="#">
<img src="<?= $comment->author()->avatar_url(40, $theme->url("images/avatar.jpg", true)) ?>"
<img src="<?= $comment->author()->avatar_url(40, $theme->theme_url("images/avatar.jpg", true)) ?>"
class="gAvatar"
alt="<?= p::clean($comment->author_name()) ?>"
width="40"

View File

@@ -2,7 +2,7 @@
<li id="gComment-<?= $comment->id; ?>">
<p class="gAuthor">
<a href="#">
<img src="<?= $comment->author()->avatar_url(40, $theme->url("images/avatar.jpg", true)) ?>"
<img src="<?= $comment->author()->avatar_url(40, $theme->theme_url("images/avatar.jpg", true)) ?>"
class="gAvatar"
alt="<?= p::clean($comment->author_name()) ?>"
width="40"

View File

@@ -10,7 +10,7 @@
<li id="gComment-<?= $comment->id ?>">
<p class="gAuthor">
<a href="#">
<img src="<?= $comment->author()->avatar_url(40, $theme->url("images/avatar.jpg", true)) ?>"
<img src="<?= $comment->author()->avatar_url(40, $theme->theme_url("images/avatar.jpg", true)) ?>"
class="gAvatar"
alt="<?= p::clean($comment->author_name()) ?>"
width="40"

View File

@@ -259,7 +259,7 @@ class gallery_installer {
module::set_var("gallery", "show_credits", 1);
// @todo this string needs to be picked up by l10n_scanner
module::set_var("gallery", "credits", "Powered by <a href=\"%url\">Gallery %version</a>");
module::set_version("gallery", 5);
module::set_version("gallery", 6);
}
static function upgrade($version) {

View File

@@ -21,30 +21,12 @@ class gallery_theme_Core {
static function head($theme) {
$session = Session::instance();
$buf = "";
$theme->script("lib/jquery.js");
$theme->script("lib/jquery.form.js");
$theme->script("lib/jquery-ui.js");
$theme->script("lib/gallery.common.js");
$theme->script("lib/gallery.dialog.js");
$theme->script("lib/gallery.form.js");
$theme->script("lib/superfish/js/superfish.js");
if ($theme->page_type == 'photo') {
$theme->script("lib/jquery.scrollTo.js");
$theme->script("lib/jquery.localscroll.js");
$theme->script("lib/gallery.show_full_size.js");
}
if ($theme->page_type == 'movie') {
$theme->script("lib/flowplayer.js");
}
$theme->script($theme->url("js/ui.init.js", false, true));
if ($session->get("debug")) {
$buf .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file("modules/gallery/css/debug.css") . "\" />";
$theme->css("modules/gallery/css/debug.css");
}
if (($theme->page_type == "album" || $theme->page_type == "photo")
&& access::can("edit", $theme->item())) {
$buf .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file("modules/gallery/css/quick.css") . "\" />";
$theme->css("modules/gallery/css/quick.css");
$theme->script("modules/gallery/js/quick.js");
}
@@ -57,8 +39,7 @@ class gallery_theme_Core {
}
if ($session->get("l10n_mode", false)) {
$buf .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file("modules/gallery/css/l10n_client.css") . "\" />";
$theme->css("modules/gallery/css/l10n_client.css");
$theme->script("lib/jquery.cookie.js");
$theme->script("modules/gallery/js/l10n_client.js");
}
@@ -94,28 +75,15 @@ class gallery_theme_Core {
static function admin_head($theme) {
$session = Session::instance();
$buf = "";
$theme->script("lib/jquery.js");
$theme->script("lib/jquery.form.js");
$theme->script("lib/jquery-ui.js");
$theme->script("lib/gallery.common.js");
$theme->script("lib/gallery.dialog.js");
$theme->script("lib/superfish/js/superfish.js");
$theme->script($theme->url("js/jquery.dropshadow.js", false, true));
$theme->script($theme->url("js/ui.init.js", false, true));
if ($session->get("debug")) {
$buf .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file("modules/gallery/css/debug.css") . "\" />";
$theme->css("modules/gallery/css/debug.css");
}
if ($session->get("l10n_mode", false)) {
$buf .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file("modules/gallery/css/l10n_client.css") . "\" />";
$theme->css("modules/gallery/css/l10n_client.css");
$theme->script("lib/jquery.cookie.js");
$theme->script("modules/gallery/js/l10n_client.js");
}
return $buf;
}
static function page_bottom($theme) {

View File

@@ -17,9 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Admin_View_Core extends View {
private $theme_name = null;
class Admin_View_Core extends Gallery_View {
/**
* Attempts to load a view and pre-load view data.
*
@@ -46,15 +44,6 @@ class Admin_View_Core extends View {
$this->set_global("user", user::active());
}
public function url($path, $absolute_url=false) {
$arg = "themes/{$this->theme_name}/$path";
return $absolute_url ? url::abs_file($arg) : url::file($arg);
}
public function display($page_name, $view_class="View") {
return new $view_class($page_name);
}
public function admin_menu() {
$menu = Menu::factory("root");
gallery_menu::admin($menu, $this);
@@ -109,6 +98,10 @@ class Admin_View_Core extends View {
}
}
if ($function == "admin_head") {
array_unshift($blocks, $this->combine_script());
}
if (Session::instance()->get("debug")) {
if ($function != "admin_head") {
array_unshift(

View File

@@ -0,0 +1,124 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2009 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 Gallery_View_Core extends View {
protected $theme_name = null;
protected $scripts = array();
protected $css = array();
/**
* Add a script to the combined scripts list.
* @param $file the relative path to a script from the gallery3 directory
*/
public function script($file, $theme_relative=false) {
$this->scripts[$file] = 1;
}
/**
* Add a script to the combined scripts list.
* @param $file the relative path to a script from the base of the active theme
* @param
*/
public function theme_script($file) {
$file = "themes/{$this->theme_name}/$file";
$this->scripts[$file] = 1;
}
/**
* Provide a url to a resource within the current theme. This allows us to refer to theme
* resources without naming the theme itself which makes themes easier to copy.
*/
public function theme_url($path, $absolute_url=false) {
$arg = "themes/{$this->theme_name}/$path";
return $absolute_url ? url::abs_file($arg) : url::file($arg);
}
/**
* Combine a series of Javascript files into a single one and cache it in the database, then
* return a single <script> element to refer to it.
*/
protected function combine_script() {
$links = array();
$key = "";
foreach (array_keys($this->scripts) as $file) {
$path = DOCROOT . $file;
if (file_exists($path)) {
$stats = stat($path);
$links[] = $path;
// 7 == size, 9 == mtime, see http://php.net/stat
$key = "{$key}$file $stats[7] $stats[9],";
} else {
Kohana::log("alert", "Javascript file missing: " . $file);
}
}
$key = md5($key);
$cache = Cache::instance();
$contents = $cache->get($key);
if (empty($contents)) {
$contents = "";
foreach ($links as $link) {
$contents .= file_get_contents($link);
}
$cache->set($key, $contents, array("javascript"), 30 * 84600);
if (function_exists("gzencode")) {
$cache->set("{$key}_gz", gzencode($contents, 9, FORCE_GZIP),
array("javascript", "gzip"), 30 * 84600);
}
}
// Handcraft the script link because html::script will add a .js extenstion
return "<script type=\"text/javascript\" src=\"" . url::site("combined/javascript/$key") .
"\"></script>";
}
/**
* Add a css file to the combined css list.
* @param $file the relative path to a script from the gallery3 directory
*/
public function css($file, $theme_relative=false) {
$this->css[$file] = 1;
}
/**
* Add a css file to the combined css list.
* @param $file the relative path to a script from the base of the active theme
* @param
*/
public function theme_css($file) {
$file = "themes/{$this->theme_name}/$file";
$this->css[$file] = 1;
}
/**
* Combine a series of Javascript files into a single one and cache it in the database, then
* return a single <script> element to refer to it.
*/
protected function combine_css() {
$links = array();
$key = "";
foreach (array_keys($this->css) as $file) {
$links[] = "<link media=\"screen, projection\" rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file($file) . "\" />";
}
return implode("\n", $links);
}
}

View File

@@ -17,11 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Theme_View_Core extends View {
private $theme_name = null;
private $scripts = array();
private $css = array();
class Theme_View_Core extends Gallery_View {
/**
* Attempts to load a view and pre-load view data.
*
@@ -70,11 +66,6 @@ class Theme_View_Core extends View {
return module::get_var("gallery", "thumb_size", 200) / 200;
}
public function url($path, $absolute_url=false, $no_root=false) {
$arg = "themes/{$this->theme_name}/$path";
return $absolute_url ? url::abs_file($arg) : $no_root ? $arg : url::file($arg);
}
public function item() {
return $this->item;
}
@@ -87,10 +78,6 @@ class Theme_View_Core extends View {
return $this->page_type;
}
public function display($page_name, $view_class="View") {
return new $view_class($page_name);
}
public function site_menu() {
$menu = Menu::factory("root");
if ($this->page_type != "login") {
@@ -169,68 +156,6 @@ class Theme_View_Core extends View {
return message::get();
}
public function script($file) {
$this->scripts[$file] = 1;
}
public function css($file) {
$this->css[$file] = 1;
}
/**
* Combine a series of Javascript files into a single one and cache it in the database, then
* return a single <script> element to refer to it.
*/
private function _combine_script() {
$links = array();
$key = "";
foreach (array_keys($this->scripts) as $file) {
$path = DOCROOT . $file;
if (file_exists($path)) {
$stats = stat($path);
$links[] = $path;
// 7 == size, 9 == mtime, see http://php.net/stat
$key = "{$key}$file $stats[7] $stats[9],";
} else {
Kohana::log("warn", "Javascript file missing: " . $file);
}
}
$key = md5($key);
$cache = Cache::instance();
$contents = $cache->get($key);
if (empty($contents)) {
$contents = "";
foreach ($links as $link) {
$contents .= file_get_contents($link);
}
$cache->set($key, $contents, array("javascript"), 30 * 84600);
if (function_exists("gzencode")) {
$cache->set("{$key}_gz", gzencode($contents, 9, FORCE_GZIP),
array("javascript", "gzip"), 30 * 84600);
}
}
// Handcraft the script link because html::script will add a .js extenstion
return "<script type=\"text/javascript\" src=\"" . url::site("combined/javascript/$key") .
"\"></script>";
}
/**
* Combine a series of Javascript files into a single one and cache it in the database, then
* return a single <script> element to refer to it.
*/
private function _combine_css() {
$links = array();
$key = "";
foreach (array_keys($this->css) as $file) {
$links[] = "<link media=\"screen, projection\" rel=\"stylesheet\" type=\"text/css\" href=\"" .
url::file($file) . "\" />";
}
return implode("\n", $links);
}
/**
* Handle all theme functions that insert module content.
*/
@@ -278,12 +203,6 @@ class Theme_View_Core extends View {
}
}
// Give the theme a chance to add its blocks
$helper_class = "{$this->theme_name}_theme";
$blocks[] = call_user_func_array(
array($helper_class, $function),
array_merge(array($this), $args));
foreach (module::active() as $module) {
if ($module->name == "gallery") {
continue;
@@ -296,9 +215,9 @@ class Theme_View_Core extends View {
}
}
if ($function == "head" || $function == "admin_head") {
array_unshift($blocks, $this->_combine_css());
array_unshift($blocks, $this->_combine_script());
if ($function == "head") {
array_unshift($blocks, $this->combine_css());
array_unshift($blocks, $this->combine_script());
}
if (Session::instance()->get("debug")) {

View File

@@ -1,6 +1,7 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<script type="text/javascript" src="<?= url::file("lib/swfupload/swfupload.js") ?>"></script>
<script type="text/javascript" src="<?= url::file("lib/swfupload/swfupload.queue.js") ?>"></script>
<script type="text/javascript" src="<?= url::file("lib/jquery.scrollTo.js") ?>"></script>
<!-- hack to set the title for the dialog -->
<form id="gAddPhotosForm" action="<?= url::site("simple_uploader/finish?csrf=$csrf") ?>">
@@ -184,6 +185,7 @@
var fp = new File_Progress(file);
fp.title.html(file.name);
fp.set_status("uploading", "<?= t("Uploading...") ?>");
$("#gAddPhotosCanvas").scrollTo(fp.box, 1000);
return true;
// @todo add cancel button to call this.cancelUpload(file.id)
}

View File

@@ -32,4 +32,4 @@
<? endif ?>
</li>
<? endif ?>
</ul>
</ul>

View File

@@ -66,7 +66,7 @@
<? foreach ($users as $i => $user): ?>
<tr id="gUser-<?= $user->id ?>" class="<?= text::alternate("gOddRow", "gEvenRow") ?> user <?= $user->admin ? "admin" : "" ?>">
<td id="user-<?= $user->id ?>" class="core-info gDraggable">
<img src="<?= $user->avatar_url(20, $theme->url("images/avatar.jpg", true)) ?>"
<img src="<?= $user->avatar_url(20, $theme->theme_url("images/avatar.jpg", true)) ?>"
title="<?= t("Drag user onto group below to add as a new member") ?>"
alt="<?= p::clean($user->name) ?>"
width="20"

View File

@@ -6,7 +6,26 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title><?= t("Admin Dashboard") ?></title>
<link rel="shortcut icon" href="<?= url::file("themes/default/images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->admin_head() ?>
<?= $theme->css("lib/yui/reset-fonts-grids.css") ?>
<?= $theme->css("lib/themeroller/ui.base.css") ?>
<?= $theme->css("lib/superfish/css/superfish.css") ?>
<?= $theme->css("themes/default/css/screen.css") ?>
<?= $theme->theme_css("css/screen.css") ?>
<!--[if IE]>
<?= $theme->theme_css("css/fix-ie.css") ?>
<![endif]-->
<?= $theme->script("lib/jquery.js") ?>
<?= $theme->script("lib/jquery.form.js") ?>
<?= $theme->script("lib/jquery-ui.js") ?>
<?= $theme->script("lib/gallery.common.js") ?>
<?= $theme->script("lib/gallery.dialog.js") ?>
<?= $theme->script("lib/superfish/js/superfish.js") ?>
<?= $theme->theme_script("js/jquery.dropshadow.js") ?>
<?= $theme->theme_script("js/ui.init.js") ?>
<?= $theme->admin_head() ?>
</head>
<body <?= $theme->body_attributes() ?>>

View File

@@ -4,7 +4,7 @@
<?= $header_text ?>
<? else: ?>
<a href="<?= url::site("albums/1") ?>">
<img width="107" height="48" id="gLogo" alt="<?= t("Gallery: Your photos on your web site") ?>" src="<?= $theme->url("images/logo.png") ?>" />
<img width="107" height="48" id="gLogo" alt="<?= t("Gallery: Your photos on your web site") ?>" src="<?= $theme->theme_url("images/logo.png") ?>" />
</a>
<? endif ?>

View File

@@ -23,18 +23,13 @@
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= $theme->url("images/favicon.ico") ?>" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="<?= url::file("lib/yui/reset-fonts-grids.css") ?>"
media="screen,print,projection" />
<link rel="stylesheet" type="text/css" href="<?= url::file("lib/superfish/css/superfish.css") ?>"
media="screen" />
<link rel="stylesheet" type="text/css" href="<?= url::file("lib/themeroller/ui.base.css") ?>"
media="screen,print,projection" />
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/screen.css") ?>"
media="screen,print,projection" />
<link rel="shortcut icon" href="<?= $theme->theme_url("images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->css("lib/yui/reset-fonts-grids.css") ?>
<?= $theme->css("lib/themeroller/ui.base.css") ?>
<?= $theme->css("lib/superfish/css/superfish.css") ?>
<?= $theme->theme_css("css/screen.css") ?>
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<?= $theme->theme_css("css/fix-ie.css") ?>
<![endif]-->
<? if ($theme->page_type == 'album'): ?>
<? if ($thumb_proportion != 1): ?>
@@ -49,6 +44,24 @@
</style>
<? endif ?>
<? endif ?>
<?= $theme->script("lib/jquery.js") ?>
<?= $theme->script("lib/jquery.form.js") ?>
<?= $theme->script("lib/jquery-ui.js") ?>
<?= $theme->script("lib/gallery.common.js") ?>
<?= $theme->script("lib/gallery.dialog.js") ?>
<?= $theme->script("lib/gallery.form.js") ?>
<?= $theme->script("lib/superfish/js/superfish.js") ?>
<?= $theme->script("lib/jquery.localscroll.js") ?>
<?= $theme->theme_script("js/ui.init.js") ?>
<? /* These are page specific, but if we put them before $theme->head() they get combined */ ?>
<? if ($theme->page_type == "photo"): ?>
<?= $theme->script("lib/jquery.scrollTo.js") ?>
<?= $theme->script("lib/gallery.show_full_size.js") ?>
<? elseif ($theme->page_type == "movie"): ?>
<?= $theme->script("lib/flowplayer.js") ?>
<? endif ?>
<?= $theme->head() ?>
</head>
@@ -57,7 +70,7 @@
<div id="doc4" class="yui-t5 gView">
<?= $theme->site_status() ?>
<div id="gHeader">
<?= $theme->display("header.html") ?>
<?= new View("header.html") ?>
</div>
<div id="bd">
<div id="yui-main">
@@ -70,12 +83,12 @@
</div>
<div id="gSidebar" class="yui-b">
<? if ($theme->page_type != "login"): ?>
<?= $theme->display("sidebar.html") ?>
<?= new View("sidebar.html") ?>
<? endif ?>
</div>
</div>
<div id="gFooter">
<?= $theme->display("footer.html") ?>
<?= new View("footer.html") ?>
</div>
</div>
<?= $theme->page_bottom() ?>