1
0

Merge branch 'master' into rawphoto

This commit is contained in:
Chad Parry 2011-07-27 17:49:33 -06:00
commit a7ebe43332
318 changed files with 12363 additions and 3498 deletions

View File

@ -109,7 +109,7 @@ class albumpassword_Controller extends Controller {
// Display a success message and close the dialog.
message::success(t("Password saved."));
print "<html>\n<body>\n<script type=\"text/javascript\">\n$(\"#g-dialog\").dialog(\"close\");\nwindow.location.reload();\n</script>\n</body>\n</html>\n";
json::reply(array("result" => "success"));
}
public function logout() {
@ -139,10 +139,10 @@ class albumpassword_Controller extends Controller {
cookie::delete("g3_albumpassword_id");
cookie::set("g3_albumpassword", $album_password);
message::success(t("Password Accepted."));
print "<html>\n<body>\n<script type=\"text/javascript\">\n$(\"#g-dialog\").dialog(\"close\");\nwindow.location.reload();\n</script>\n</body>\n</html>\n";
json::reply(array("result" => "success"));
} else {
message::error(t("Password Rejected."));
print "<html>\n<body>\n<script type=\"text/javascript\">\n$(\"#g-dialog\").dialog(\"close\");\nwindow.location.reload();\n</script>\n</body>\n</html>\n";
json::reply(array("result" => "success"));
}
}

View File

@ -20,7 +20,7 @@
class albumtree_installer {
static function install() {
module::set_var("albumtree", "style", "select");
module::set_version("albumtree", 2);
module::set_version("albumtree", 3);
}
static function upgrade($version) {

View File

@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class ContactOwner_Controller extends Controller {
static function get_email_form($user_id, $item_id) {
static function get_email_form($user_id, $item_id=null) {
// Determine name of the person the message is going to.
$str_to_name = "";
if ($user_id == -1) {
@ -34,7 +34,7 @@ class ContactOwner_Controller extends Controller {
// If item_id is set, include a link to the item.
$email_body = "";
if ($item_id <> "") {
if (!empty($item_id)) {
$item = ORM::factory("item", $item_id);
$email_body = "This message refers to <a href=\"" . url::abs_site("{$item->type}s/{$item->id}") . "\">this page</a>.";
}
@ -83,10 +83,10 @@ class ContactOwner_Controller extends Controller {
}
// Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $this->get_email_form("-1", $item_id);
print $template;
$view = new View("contactowner_emailform.html");
$view->sendmail_form = $this->get_email_form("-1", $item_id);
print $view;
}
public function emailid($user_id, $item_id) {
@ -98,10 +98,11 @@ class ContactOwner_Controller extends Controller {
}
// Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $this->get_email_form($user_id, $item_id);
print $template;
// Set up and display the actual page.
$view = new View("contactowner_emailform.html");
$view->sendmail_form = $this->get_email_form($user_id, $item_id);
print $view;
}
public function sendemail($user_id) {
@ -154,18 +155,12 @@ class ContactOwner_Controller extends Controller {
->message($str_emailbody)
->send();
// Display a message telling the visitor that their email has been sent.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = t("Your Message Has Been Sent.");
print $template;
message::info(t("Your Message Has Been Sent."));
json::reply(array("result" => "success"));
} else {
// Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form;
print $template;
json::reply(array("result" => "error", "html" => (string) $form));
}
}
}

View File

@ -53,7 +53,7 @@ class contactowner_block_Core {
if ((count($userDetails) > 0) && ($userDetails[0]->email != "") &&
(module::get_var("contactowner", "contact_user_link") == true)) {
$block->content->userLink = "<a href=\"" . url::site("contactowner/emailid/" .
$theme->item->owner_id) . "/" . $theme->item->id . "\">" . t("Contact") . " " .
$theme->item->owner_id) . "/" . $theme->item->id . "\" class='g-dialog-link'>" . t("Contact") . " " .
$userDetails[0]->name . "</a>";
$displayBlock = true;
}
@ -63,10 +63,10 @@ class contactowner_block_Core {
if (module::get_var("contactowner", "contact_owner_link")) {
if ($theme->item()) {
$block->content->ownerLink = "<a href=\"" . url::site("contactowner/emailowner") . "/" . $theme->item->id .
"\">" . t(module::get_var("contactowner", "contact_button_text")) . "</a>";
"\" class='g-dialog-link'>" . t(module::get_var("contactowner", "contact_button_text")) . "</a>";
} else {
$block->content->ownerLink = "<a href=\"" . url::site("contactowner/emailowner") .
"\">" . t(module::get_var("contactowner", "contact_button_text")) . "</a>";
"\" class='g-dialog-link'>" . t(module::get_var("contactowner", "contact_button_text")) . "</a>";
}
$displayBlock = true;
}

View File

@ -0,0 +1,254 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Admin_Custom_Menus_Controller extends Admin_Controller {
public function index() {
// Display the admin page, which contains a list of existing menu items.
$view = new Admin_View("admin.html");
$view->page_title = t("Manage menus");
$view->content = new View("admin_custom_menus.html");
$view->content->menu_list = $this->get_html_list(0);
print $view;
}
public function form_create($id) {
// Display the create new menu form.
print $this->get_new_menu_form($id);
}
public function form_edit($id) {
// Display the edit menu form.
print $this->get_edit_menu_form($id);
}
static function get_new_menu_form($id) {
// Generate the create new menu form.
$form = new Forge("admin/custom_menus/create/$id", "", "post", array("id" => "g-create-menu-form"));
$group = $form->group("create_menu")
->label(t("Add new menu"));
$group->input("menu_title")
->label(t("Title"));
$group->input("menu_url")
->label(t("URL (Leave blank if this menu will have sub-menus)"));
$group->submit("")->value(t("Create menu"));
return $form;
}
static function get_edit_menu_form($id) {
// Generate the edit menu form.
$existing_menu = ORM::factory("custom_menu", $id);
$form = new Forge("admin/custom_menus/edit/$id", "", "post", array("id" => "g-edit-menu-form"));
$group = $form->group("edit_menu")
->label(t("Edit menu"));
$group->input("menu_title")
->label(t("Title"))
->value($existing_menu->title);
$group->input("menu_url")
->label(t("URL (Leave blank if this menu will have sub-menus)"))
->value($existing_menu->url);
$group->submit("")->value(t("Save changes"));
return $form;
}
public function create($id) {
// Save a new menu to the database.
access::verify_csrf();
// Save form variables to the database.
$new_menu = ORM::factory("custom_menu");
$new_menu->title = Input::instance()->post("menu_title");
$new_menu->url = Input::instance()->post("menu_url");
$new_menu->parent_id = $id;
// Set menu's location to the last position.
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $id)
->order_by("order_by", "DESC")
->find_all(1);
if (count($existing_menu) > 0) {
$int_position = $existing_menu[0]->order_by;
$int_position++;
$new_menu->order_by = $int_position;
} else {
$new_menu->order_by = 0;
}
// Save new menu to the database.
$new_menu->save();
message::success(t("Menu %menu_name created", array("menu_name" => $new_menu->title)));
log::success("custom_menus", t("Menu %menu_name created", array("menu_name" => $new_menu->title)));
json::reply(array("result" => "success"));
}
public function edit($id) {
// Save a new menu to the database.
access::verify_csrf();
// Load the existing menu and save changes.
$existing_menu = ORM::factory("custom_menu", $id);
if ($existing_menu->loaded()) {
$existing_menu->title = Input::instance()->post("menu_title");
$existing_menu->url = Input::instance()->post("menu_url");
$existing_menu->save();
message::success(t("Menu %menu_name saved", array("menu_name" => $existing_menu->title)));
log::success("custom_menus", t("Menu %menu_name saved", array("menu_name" => $existing_menu->title)));
json::reply(array("result" => "success"));
} else {
message::error(t("Unable to load menu %menu_id", array("menu_id" => $id)));
log::success("custom_menus", t("Unable to load menu %menu_id", array("menu_id" => $id)));
json::reply(array("result" => "success"));
}
}
function get_html_list($parent_id) {
// Generate an HTML list of existing menu items.
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $parent_id)
->order_by("order_by", "ASC")
->find_all();
$str_html = "";
if (count($existing_menu) > 0) {
$str_html = "<ul style=\"margin-bottom: 0em; margin-left: 2.5em;\">\n";
foreach ($existing_menu as $one_menu) {
$str_html .= "<li style=\"list-style:disc outside none; margin: 1em; line-height: 1em;\">" . $one_menu->title .
" <a href=\"" . url::site("admin/custom_menus/form_create/" . $one_menu->id) .
"\" class=\"g-dialog-link ui-icon-plus g-button ui-icon-left\" title=\"" . t("Add sub menu") .
"\"><span class=\"ui-icon ui-icon-plus\"></span></a>" .
" <a href=\"" . url::site("admin/custom_menus/form_edit/" . $one_menu->id) .
"\" class=\"g-dialog-link ui-icon-pencil g-button ui-icon-left\" title=\"" . t("Edit menu") .
"\"><span class=\"ui-icon ui-icon-pencil\"></span></a>" .
" <a href=\"" . url::site("admin/custom_menus/form_delete/" . $one_menu->id) .
"\" class=\"g-dialog-link ui-icon-trash g-button ui-icon-left\" title=\"" . t("Delete menu") .
"\"><span class=\"ui-icon ui-icon-trash\"></span></a>" .
" <a href=\"" . url::site("admin/custom_menus/move_menu_up/" . $one_menu->id) .
"\" class=\"g-button ui-icon-left\" title=\"" . t("Move menu up") .
"\">^</a>" .
" <a href=\"" . url::site("admin/custom_menus/move_menu_down/" . $one_menu->id) .
"\" class=\"g-button ui-icon-left\" title=\"" . t("Move menu down") .
"\">v</a>" .
"</li>\n";
$str_html .= $this->get_html_list($one_menu->id);
}
$str_html .= "</ul>\n";
}
return $str_html;
}
public function form_delete($id) {
// Display a form asking the user if they want to delete a menu.
$one_menu = ORM::factory("custom_menu", $id);
if ($one_menu->loaded()) {
print $this->get_delete_form($one_menu);
}
}
public function delete($id) {
// Delete the specified menu.
access::verify_csrf();
// Make sure $id belongs to an actual menu.
$one_menu = ORM::factory("custom_menu", $id);
if (!$one_menu->loaded()) {
throw new Kohana_404_Exception();
}
// If the form validates, delete the specified menu.
$form = $this->get_delete_form($one_menu);
if ($form->validate()) {
$name = $one_menu->title;
$this->delete_sub_menus($one_menu->id);
$one_menu->delete();
message::success(t("Deleted menu %menu_name", array("menu_name" => $name)));
log::success("custom_menus", t("Deleted menu %menu_name", array("menu_name" => $name)));
json::reply(array("result" => "success", "location" => url::site("admin/custom_menus")));
} else {
print $form;
}
}
function delete_sub_menus($parent_id) {
// Delete all sub menus associated with $parent_id.
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $parent_id)
->order_by("title", "ASC")
->find_all();
foreach ($existing_menu as $one_menu) {
$this->delete_sub_menus($one_menu->id);
$one_menu->delete();
}
}
static function get_delete_form($one_menu) {
// Generate a new form asking the user if they want to delete a menu.
$form = new Forge("admin/custom_menus/delete/$one_menu->id", "", "post", array("id" => "g-delete-menu-form"));
$group = $form->group("delete_menu")
->label(t("Really delete menu %menu_name & sub-menus?", array("menu_name" => $one_menu->title)));
$group->submit("")->value(t("Delete Menu"));
return $form;
}
public function move_menu_up($id) {
// Move the specified menu item up one position.
$one_menu = ORM::factory("custom_menu", $id);
if ($one_menu->loaded()) {
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $one_menu->parent_id)
->where("order_by", "<", $one_menu->order_by)
->order_by("order_by", "DESC")
->find_all(1);
if (count($existing_menu) > 0) {
$second_menu = ORM::factory("custom_menu", $existing_menu[0]->id);
$temp_position = $one_menu->order_by;
$one_menu->order_by = $second_menu->order_by;
$second_menu->order_by = $temp_position;
$one_menu->save();
$second_menu->save();
message::success(t("Menu %menu_title moved up", array("menu_title" => $one_menu->title)));
log::success("custom_menus", t("Menu %menu_title moved up", array("menu_title" => $one_menu->title)));
}
}
url::redirect("admin/custom_menus");
}
public function move_menu_down($id) {
// Move the specified menu item down one position.
$one_menu = ORM::factory("custom_menu", $id);
if ($one_menu->loaded()) {
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $one_menu->parent_id)
->where("order_by", ">", $one_menu->order_by)
->order_by("order_by", "ASC")
->find_all(1);
if (count($existing_menu) > 0) {
$second_menu = ORM::factory("custom_menu", $existing_menu[0]->id);
$temp_position = $one_menu->order_by;
$one_menu->order_by = $second_menu->order_by;
$second_menu->order_by = $temp_position;
$one_menu->save();
$second_menu->save();
message::success(t("Menu %menu_title moved down", array("menu_title" => $one_menu->title)));
log::success("custom_menus", t("Menu %menu_title moved down", array("menu_title" => $one_menu->title)));
}
}
url::redirect("admin/custom_menus");
}
}

View File

@ -0,0 +1,75 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 custom_menus_event_Core {
static function admin_menu($menu, $theme) {
// Add a settings link to the admin menu.
$menu->get("content_menu")
->append(Menu::factory("link")
->id("custom_menus")
->label(t("Custom Menus Manager"))
->url(url::site("admin/custom_menus")));
}
static function site_menu($menu, $theme) {
// Add user definied menu and sub-menu items to the site menu.
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", "0")
->order_by("order_by", "DESC")
->find_all();
if (count($existing_menu) > 0) {
foreach ($existing_menu as $one_menu) {
if ($one_menu->url == "") {
$menu->add_after("home", $new_menu = Menu::factory("submenu")
->id("custom_menus-" . $one_menu->id)
->label(t($one_menu->title)));
custom_menus_event::add_sub_menus($one_menu->id, $new_menu);
} else {
$menu->add_after("home", Menu::factory("link")
->id("custom_menus-" . $one_menu->id)
->label(t($one_menu->title))
->url($one_menu->url));
}
}
}
}
function add_sub_menus($parent_id, $parent_menu) {
// Populate the menu bar with any sub-menu items on the current menu ($parent_menu).
$existing_menu = ORM::factory("custom_menu")
->where("parent_id", "=", $parent_id)
->order_by("order_by", "ASC")
->find_all();
if (count($existing_menu) > 0) {
foreach ($existing_menu as $one_menu) {
if ($one_menu->url == "") {
$parent_menu->append($new_menu = Menu::factory("submenu")
->id("custom_menus-" . $one_menu->id)
->label(t($one_menu->title)));
custom_menus_event::add_sub_menus($one_menu->id, $new_menu);
} else {
$parent_menu->append(Menu::factory("link")
->id("custom_menus-" . $one_menu->id)
->label(t($one_menu->title))
->url($one_menu->url));
}
}
}
}
}

View File

@ -0,0 +1,37 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 custom_menus_installer {
static function install() {
// Create a table to store menu info in.
$db = Database::instance();
$db->query("CREATE TABLE IF NOT EXISTS {custom_menus} (
`id` int(9) NOT NULL auto_increment,
`title` varchar(255) default NULL,
`url` text default NULL,
`parent_id` int(9) NOT NULL default 0,
`order_by` int(9) NOT NULL default 0,
PRIMARY KEY (`id`),
UNIQUE KEY(`id`))
DEFAULT CHARSET=utf8;");
// Set the module version number.
module::set_version("custom_menus", 1);
}
}

View File

@ -0,0 +1,21 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Custom_Menu_Model extends ORM {
}

View File

@ -0,0 +1,7 @@
name = "Custom Menus"
description = "Allows Gallery admins to create additional menu and sub-menu items."
version = 1
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:custom_menus"
discuss_url = "http://gallery.menalto.com/node/102814"

View File

@ -0,0 +1,8 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<div class="g-block">
<h1> <?= t("Manage menus") ?> </h1>
<div class="g-block-content">
<a href="<?= url::site("admin/custom_menus/form_create/0") ?>" class="g-dialog-link g-create-link"><?= t("Add new menu") ?></a>
<?= $menu_list ?>
</div>
</div>

View File

@ -25,33 +25,58 @@ class Admin_Dynamic_Controller extends Admin_Controller {
access::verify_csrf();
$form = $this->_get_form();
if ($form->validate()) {
foreach (array("updates", "popular") as $album) {
$album_defn = unserialize(module::get_var("dynamic", $album));
$group = $form->inputs[$album];
$album_defn->enabled = $group->inputs["{$album}_enabled"]->value;
$album_defn->description = $group->inputs["{$album}_description"]->value;
$album_defn->limit = $group->inputs["{$album}_limit"] === "" ? null :
$group->inputs["{$album}_limit"]->value;
module::set_var("dynamic", $album, serialize($album_defn));
$errors = array_fill_keys(array_keys($form), "");
if ($_POST) {
$post = new Validation($_POST);
$post->add_rules("updates_enabled", array("valid", "numeric"));
$post->add_rules("popular_enabled", array("valid", "numeric"));
$post->add_rules("updates_limit", array("valid", "numeric"));
$post->add_rules("popular_limit", array("valid", "numeric"));
$post->add_rules("updates_description", "length[0,2048]");
$post->add_rules("popular_description", "length[0,2048]");
if ($post->validate()) {
foreach (array("updates", "popular") as $album) {
$album_defn = unserialize(module::get_var("dynamic", $album));
$album_defn->enabled = $post["{$album}_enabled"];
$album_defn->description = $post["{$album}_description"];
$album_defn->limit = $post["{$album}_limit"] === "" ? null : $post["{$album}_limit"];
module::set_var("dynamic", $album, serialize($album_defn));
}
message::success(t("Dynamic Albums Configured"));
url::redirect("admin/dynamic");
} else {
$form = arr::overwrite($form, $post->as_array());
$errors = arr::overwrite($errors, $post->errors());
}
message::success(t("Dynamic Albums Configured"));
url::redirect("admin/dynamic");
}
print $this->_get_view($form);
print $this->_get_view($form, $errors);
}
private function _get_view($form=null) {
private function _get_view($form=null, $errors=null) {
$v = new Admin_View("admin.html");
$v->content = new View("admin_dynamic.html");
$v->content->form = empty($form) ? $this->_get_form() : $form;
$v->content->tabs = array("updates" => t("Recent changes"), "popular" => t("Most viewed"));
$v->content->errors = $errors;
return $v;
}
private function _get_form() {
$form = array();
foreach (array("updates", "popular") as $album) {
$album_defn = unserialize(module::get_var("dynamic", $album));
$form["{$album}_enabled"] = $album_defn->enabled;
$form["{$album}_limit"] = $album_defn->limit;
$form["{$album}_description"] = $album_defn->description;
}
return $form;
}
private function _get_form2() {
$form = new Forge("admin/dynamic/handler", "", "post",
array("id" => "g-admin-form"));

View File

@ -30,17 +30,17 @@ class Dynamic_Controller extends Controller {
$page = Input::instance()->get("page", "1");
$album_defn = unserialize(module::get_var("dynamic", $album));
$children_count = $album_defn->limit;
if (empty($children_count)) {
$children_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->count_all();
$display_limit = $album_defn->limit;
$children_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->count_all();
if (!empty($display_limit)) {
$children_count = min($children_count, $display_limit);
}
$offset = ($page-1) * $page_size;
$max_pages = ceil($children_count / $page_size);
$offset = ($page - 1) * $page_size;
$max_pages = max(ceil($children_count / $page_size), 1);
// Make sure that the page references a valid offset
if ($page < 1 || ($children_count && $page > ceil($children_count / $page_size))) {

View File

@ -1,8 +1,40 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<script>
$(function() {
$( "#tabs" ).tabs();
});
</script>
<div id="g-dyanmic-block" class="g-block ui-helper-clearfix">
<h1> <?= t("Dynamic Albums") ?> </h1>
<div class="g-block-content">
<?= $form ?>
<?= form::open("admin/dynamic/handler", array("id" => "g-admin-form")) ?>
<?= access::csrf_form_field() ?>
<div id="tabs">
<ul>
<? foreach ($tabs as $album => $label): ?>
<li><a href="#<?= $album ?>"><?= $label ?></a></li>
<? endforeach ?>
</ul>
<? foreach (array("updates", "popular") as $album): ?>
<div id="<?= $album ?>">
<ul>
<li>
<?= form::label("{$album}_enabled", t("Enable")) ?>
<?= form::checkbox("{$album}_enabled", 1, $form["{$album}_enabled"], "style='float: none'") ?>
</li>
<li>
<?= form::label("{$album}_limit", t("Limit (leave empty for unlimited)")) ?>
<?= form::input("{$album}_limit", $form["{$album}_limit"]) ?>
<?= empty($errors["{$album}_limit"]) ? "" : "<span class='g-error'>" . t("Limit must be numeric") ?>
</li>
<li>
<?= form::label("{$album}_description", t("Description")) ?>
<?= form::textarea("{$album}_description", $form["{$album}_description"]) ?>
<?= empty($errors["{$album}_description"]) ? "" : "<span class='g-error'>" . t("Description must be less than 2048 bytes") ?>
</li>
<ul>
</div>
<? endforeach ?>
</div>
<?= form::submit("submit", t("Submit")) ?>
</div>

View File

@ -0,0 +1,58 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 item_links_event_Core {
static function item_edit_form($item, $form) {
// Create fields on the album edit screen to allow the user to link
// the item to another page.
$item_url = ORM::factory("item_link")
->where("item_id", "=", $item->id)
->find_all();
$existing_url = "";
if (count($item_url) > 0) {
$existing_url = $item_url[0]->url;
}
$form->edit_item
->input("item_links_url")
->label(t("Redirect to URL:"))
->value($existing_url);
}
static function item_deleted($item) {
// Whenever an item is deleted, delete any corresponding data.
db::build()->delete("item_links")->where("item_id", "=", $item->id)->execute();
}
static function item_edit_form_completed($item, $form) {
// Update the database with any changes to the item_links field.
$record = ORM::factory("item_link")->where("item_id", "=", $item->id)->find();
if ($form->edit_item->item_links_url->value != "") {
if (!$record->loaded()) {
$record->item_id = $item->id;
}
$record->url = $form->edit_item->item_links_url->value;
$record->save();
} else {
db::build()->delete("item_links")->where("item_id", "=", $item->id)->execute();
}
}
}

View File

@ -0,0 +1,34 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 item_links_installer {
static function install() {
$db = Database::instance();
$db->query("CREATE TABLE IF NOT EXISTS {item_links} (
`id` int(9) NOT NULL auto_increment,
`item_id` int(9) NOT NULL,
`url` text default NULL,
PRIMARY KEY (`id`),
KEY(`item_id`, `id`))
DEFAULT CHARSET=utf8;");
// Set the module's version number.
module::set_version("item_links", 1);
}
}

View File

@ -0,0 +1,34 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 item_links_theme_Core {
static function head($theme) {
// If the current page is an item, and if it's in the item_links table,
// then redirect to the specified web page.
if ($theme->item()) {
$item_url = ORM::factory("item_link")
->where("item_id", "=", $theme->item->id)
->find_all();
if (count($item_url) > 0) {
url::redirect($item_url[0]->url);
}
}
return;
}
}

View File

@ -0,0 +1,21 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Item_Link_Model extends ORM {
}

View File

@ -0,0 +1,7 @@
name = "Item Links"
description = "Allows users to use Gallery items as links to external URLs."
version = 1
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:item_links"
discuss_url = "http://gallery.menalto.com/node/102548"

View File

@ -31,4 +31,10 @@ class metadescription_event_Core {
site_status::clear("metadescription_needs_tag");
}
}
static function pre_deactivate($data) {
if ($data->module == "tag") {
$data->messages["warn"][] = t("The MetaDescription module requires the Tags module.");
}
}
}

View File

@ -28,6 +28,14 @@ class metadescription_installer {
site_status::clear("metadescription_needs_tag");
}
static function can_activate() {
$messages = array();
if (!module::is_active("tag")) {
$messages["warn"][] = t("The MetaDescription module requires the Tags module.");
}
return $messages;
}
static function uninstall() {
module::delete("metadescription");
}

View File

@ -42,7 +42,7 @@ class metadescription_theme_Core {
// Load the meta tags into the top of the page.
// @todo: metadescription_block.html requires an item so for now, don't render it unless we
// have one.
if ($theme->item()) {
if ($theme->item() || $theme->tag()) {
$metaView = new View("metadescription_block.html");
$metaView->tags = $tagsItem;
return $metaView;

View File

@ -1,7 +1,7 @@
name = "MetaDescription"
description = "Automatically generates and inserts KEYWORD and DESCRIPTION meta tags into any theme."
version = 1
author_name = ""
author_url = ""
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:metadescription"
discuss_url = "http://gallery.menalto.com/forum_module_metadescription"
discuss_url = "http://gallery.menalto.com/node/102477"

View File

@ -76,7 +76,6 @@ class Admin_Minislideshow_Controller extends Admin_Controller {
$form = new Forge("admin/minislideshow/saveprefs", "", "post",
array("id" => "g-mini-slideshow-admin-form"));
// Get location of slideshow files.
$group_slideshow_files = $form->group("Minislideshow");
$group_slideshow_files->input("slideshow_url")
@ -124,4 +123,4 @@ class Admin_Minislideshow_Controller extends Admin_Controller {
// Return the newly generated form.
return $form;
}
}
}

View File

@ -1,4 +1,3 @@
#g-view-menu #g-mini-slideshow-link {
background-image: url('../images/ico-view-minislideshow.png');
}

View File

@ -41,6 +41,12 @@ class minislideshow_event_Core {
}
}
static function pre_deactivate($data) {
if ($data->module == "rss") {
$data->messages["warn"][] = t("The MiniSlide Show module requires the RSS module.");
}
}
static function album_menu($menu, $theme) {
// Add an option to access the slideshow from the album view.
$menu

View File

@ -22,4 +22,12 @@ class minislideshow_installer {
static function deactivate() {
site_status::clear("minislideshow_needs_rss");
}
static function can_activate() {
$messages = array();
if (!module::is_active("rss")) {
$messages["warn"][] = t("The MiniSlide Show module requires the RSS module.");
}
return $messages;
}
}

View File

@ -20,10 +20,6 @@
class minislideshow_theme_Core {
static function head($theme) {
if (!$theme->item()) {
return;
}
return new View("minislideshow_header_block.html");
return $theme->css("minislideshow_menu.css");
}
}

View File

@ -1,7 +1,7 @@
name = "MiniSlide Show"
description = "Display MiniSlide Show on your Gallery."
version = 1
author_name = ""
author_url = ""
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:minislideshow"
discuss_url = "http://gallery.menalto.com/forum_module_minislideshow"
discuss_url = "http://gallery.menalto.com/node/90362"

View File

@ -15,4 +15,4 @@ flashvars="xmlUrl=<?= url::site("rss/feed/gallery/album/" . $item_id, "http") ?>
<td>Embed:</td>
<td><input type="text" onclick="this.focus(); this.select();" value="<embed src=&quot;<?= module::get_var("minislideshow", "slideshow_url") ?>&quot; width=&quot;485&quot; height=&quot;300&quot; align=&quot;middle&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; name=&quot;minislide&quot; wmode=&quot;transparent&quot; allowFullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; quality=&quot;high&quot; flashvars=&quot;xmlUrl=<?= url::site("rss/feed/gallery/album/" . $item_id, "http") ?><?=$slideshow_params ?>&quot;></embed>" readonly></td>
</tr></table>
</div>
</div>

View File

@ -1,5 +0,0 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<link rel="stylesheet" type="text/css" href="<?= url::file("modules/minislideshow/css/minislideshow_menu.css") ?>" />

View File

@ -39,6 +39,9 @@ class Admin_Moduleupdates_Controller extends Admin_Controller {
*/
public function index() {
//Start execution timer
$bgtime=time();
$view = new Admin_View("admin.html");
$view->page_title = t("Gallery 3 :: Manage Module Updates");
$view->content = new View("admin_moduleupdates.html");
@ -111,10 +114,12 @@ class Admin_Moduleupdates_Controller extends Admin_Controller {
$font_color_local = $this->get_local_module_version_color ($module_info->version, $module_info->code_version);
list ($core_version, $core_server) = $this->get_remote_module_version($this_module_name, "CORE");
$font_color_core = $this->get_module_version_color ($module_info->version, $module_info->code_version, $core_version);
list ($contrib_version, $contrib_server) = $this->get_remote_module_version($this_module_name, "CONTRIB");
$font_color_contrib = $this->get_module_version_color ($module_info->version, $module_info->code_version, $contrib_version);
list ($gh_version, $gh_server) = $this->get_remote_module_version($this_module_name, "GH");
$font_color_gh = $this->get_module_version_color ($module_info->version, $module_info->code_version, $gh_version);
if(!is_numeric($core_version)) {
list ($contrib_version, $contrib_server) = $this->get_remote_module_version($this_module_name, "CONTRIB");
$font_color_contrib = $this->get_module_version_color ($module_info->version, $module_info->code_version, $contrib_version);
list ($gh_version, $gh_server) = $this->get_remote_module_version($this_module_name, "GH");
$font_color_gh = $this->get_module_version_color ($module_info->version, $module_info->code_version, $gh_version);
}
if($font_color_core == "red" or $font_color_contrib == "red" or $font_color_gh == "red"){
$update_count++;
@ -174,6 +179,20 @@ class Admin_Moduleupdates_Controller extends Admin_Controller {
$view->content->GitHub = $GitHub;
$view->content->Gallery_Version = substr_replace(gallery::VERSION,"",strpos(gallery::VERSION," "));
//End execution timer
$ExecutionTime = (time()-$bgtime);
if ($ExecutionTime < 1) {
$ExecutionTime = '<font color=green>1</font>';
}else if ($ExecutionTime <= 30){
$ExecutionTime = '<font color=green>' . $ExecutionTime . '</font>';
}else if ($ExecutionTime <= 60){
$ExecutionTime = '<font color=orange>' . $ExecutionTime . '</font>';
}else{
$ExecutionTime = '<font color=red>' . $ExecutionTime . '</font>';
}
$view->content->ExecutionTime = $ExecutionTime;
print $view;
}
@ -252,13 +271,24 @@ class Admin_Moduleupdates_Controller extends Admin_Controller {
//Check the Gallery3 Community Contributions GitHub
if ($file == null) {
try {
$thisInstalledVersion = gallery::VERSION;
//Gallery versions prior to 3.0.2 contained the codename in the version string
if (substr_count($thisInstalledVersion, ' ') > 0 ){
$thisInstalledVersion = substr_replace($thisInstalledVersion,"",strpos($thisInstalledVersion," "));
}
//Truncate the minor version number
if (substr_count($thisInstalledVersion, '.') > 1 ){
$thisInstalledVersion = substr_replace($thisInstalledVersion,"",strripos($thisInstalledVersion,"."));
}
$file = fopen ("http://github.com/gallery/gallery3-contrib/raw/master/".
substr_replace(gallery::VERSION,"",strpos(gallery::VERSION," "))."/modules/".$module_name."/module.info", "r");
$thisInstalledVersion ."/modules/".$module_name."/module.info", "r");
if ($file != null) {
$server = '(GCC)';
}
}
catch (Exception $e) {
//echo 'Message: ' .$e->getMessage() . '<br>';
}
}
break;
@ -303,6 +333,9 @@ class Admin_Moduleupdates_Controller extends Admin_Controller {
if($line == "Not entered" or $line == "See git") {
$line = "";
}
if (substr_count($line, '.') > 0) {
$line = str_replace('.','',$line);
}
$version = $line;
break;
} else {

View File

@ -24,7 +24,7 @@ class moduleupdates_installer {
$version = module::get_version("moduleupdates");
if ($version < 1) {
module::set_version("moduleupdates", 7);
module::set_version("moduleupdates", 8);
//Remove the ModuleUpdates cache entry 'JIC'
Cache::instance()->delete("ModuleUpdates");
//create the blank ModuleUpdates cache entry with an expiration of 0 days
@ -34,7 +34,7 @@ class moduleupdates_installer {
}
static function upgrade($version) {
module::set_version("moduleupdates", 7);
module::set_version("moduleupdates", 8);
//Remove the ModuleUpdates cache entry 'JIC'
Cache::instance()->delete("ModuleUpdates");
//Empty the ModuleUpdates cache entry so our new version starts from scratch

View File

@ -1,7 +1,7 @@
name = "Module Updates"
name = "ModuleUpdates"
description = "Compares your installed module version against the ones stored in the GitHub."
version = 7
author_name = ""
author_url = ""
version = 8
author_name = "brentil"
author_url = "http://gallery.menalto.com/user/153736"
info_url = "http://codex.gallery2.org/Gallery3:Modules:moduleupdates"
discuss_url = "http://gallery.menalto.com/forum_module_moduleupdates"
discuss_url = "http://gallery.menalto.com/node/96574"

View File

@ -2,7 +2,7 @@
<div id="g-admin-moduleupdates" class="g-block">
<h1> <?= t("Module Updates v".$mu_version.".0") ?> </h1>
<h1> <?= t("ModuleUpdates v".$mu_version) ?> </h1>
<?= t("Compares your installed module version against the ones stored in the GitHub and GalleryModules.") ?>
<div class="g-block-content">
@ -16,7 +16,7 @@
<li><?= t("<font color=green>Green = Your version is newer than the GitHub</font><br>") ?></li>
<li><?= t("<font color=orange>Orange = Your file version is newer than the installed version</font><br>") ?></li>
<li><?= t("<font color=pink>Pink = Your installed version is newer than file version</font><br>") ?></li>
<li><?= t("Outbound Status: " . $Google . " - GitHub Status: " . $GitHub . "<br>") ?></li>
<li><?= t("Outbound Status: " . $Google . " - GitHub Status: " . $GitHub . " - Execution Time: " . $ExecutionTime . " s <br>") ?></li>
<li><input type="submit" value="<?= t("Check Modules for Updates")?>" class="submit" /> <? if($update_time == ""){ echo "&nbsp;- Last Scan: Unknown";}else{ echo "&nbsp;- Last Scan: ".$update_time;} ?></li>
</ul>
</fieldset>

View File

@ -0,0 +1,271 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Admin_Pages_Controller extends Admin_Controller {
public function index() {
// Display the admin page.
$view = new Admin_View("admin.html");
$view->page_title = t("Manage pages");
$view->content = new View("admin_pages.html");
$query = ORM::factory("static_page");
$view->content->pages = $query->order_by("name", "ASC")->find_all();
$view->content->form = $this->get_prefs_form();
print $view;
}
public function createpage() {
// Display a form for creating a new page.
$view = new Admin_View("admin.html");
$view->page_title = t("Create page");
$view->content = new View("admin_pages_new.html");
$view->content->form = $this->get_new_page_form();
print $view;
}
public function editpage($id) {
// Display a form for editing an existing page.
$existing_page = ORM::factory("static_page", $id);
$view = new Admin_View("admin.html");
$view->page_title = t("Edit page");
$view->content = new View("admin_pages_new.html");
$view->content->form = $this->get_edit_page_form($existing_page);
print $view;
}
public function savepage() {
// Save a page to the database.
access::verify_csrf();
// Store form values into variables.
$page_id = Input::instance()->post("page_id");
$page_name = urlencode(trim(Input::instance()->post("page_name")));
$page_title = Input::instance()->post("page_title");
$page_code = Input::instance()->post("page_code");
$display_menu = Input::instance()->post("display_menu");
// If $page_id is set, update an existing page.
if (isset($page_id)) {
$update_page = ORM::factory("static_page", $page_id);
$update_page->title = $page_title;
$update_page->html_code = $page_code;
$update_page->display_menu = $display_menu;
$update_page->save();
message::success(t("Page %page_name updated", array("page_name" => $update_page->name)));
log::success("pages", t("Page %page_name updated", array("page_name" => $update_page->name)));
url::redirect("admin/pages");
} else {
// If $page_id is not set, we are dealing with a new page.
// Check and make sure a page with the same names doesn't already exist.
$existing_page = ORM::factory("static_page")
->where("name", "=", $page_name)
->find_all();
// If the page doesn't exist, save it to the database.
if (count($existing_page) == 0) {
$new_page = ORM::factory("static_page");
$new_page->name = $page_name;
$new_page->title = $page_title;
$new_page->html_code = $page_code;
$new_page->display_menu = $display_menu;
$new_page->save();
message::success(t("Page %page_name created", array("page_name" => $page_name)));
log::success("pages", t("Page %page_name created", array("page_name" => $page_name)));
url::redirect("admin/pages");
} else {
// If the page does exist, ask the user if they want to overwrite the old page with the new one.
message::error(t("Page %page_name already exists, press Save again to overwrite.", array("page_name" => $page_name)));
$view = new Admin_View("admin.html");
$view->page_title = t("Edit page");
$view->content = new View("admin_pages_new.html");
$view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code, $display_menu);
print $view;
}
}
}
public function form_delete($id) {
// Display a form asking the user if they want to delete a page.
$one_page = ORM::factory("static_page", $id);
if ($one_page->loaded()) {
print $this->get_delete_form($one_page);
}
}
public function delete($id) {
// Delete the specified page.
access::verify_csrf();
// Make sure $id belongs to an actual page.
$one_page = ORM::factory("static_page", $id);
if (!$one_page->loaded()) {
throw new Kohana_404_Exception();
}
// If the form validates, delete the specified page.
$form = $this->get_delete_form($one_page);
if ($form->validate()) {
$name = $one_page->name;
$one_page->delete();
message::success(t("Deleted page %page_name", array("page_name" => $name)));
log::success("pages", t("Deleted page %page_name", array("page_name" => $name)));
json::reply(array("result" => "success", "location" => url::site("admin/pages")));
} else {
print $form;
}
}
public function form_rename($id) {
// Display a form to allow the user to rename a page.
$one_page = ORM::factory("static_page", $id);
if ($one_page->loaded()) {
print InPlaceEdit::factory(urldecode($one_page->name))
->action("admin/pages/rename/$id")
->render();
}
}
public function rename($id) {
// Rename an existing page.
access::verify_csrf();
// Make sure the page specified by $id exists.
$one_page = ORM::factory("static_page", $id);
if (!$one_page->loaded()) {
throw new Kohana_404_Exception();
}
$in_place_edit = InPlaceEdit::factory($one_page->name)
->action("admin/pages/rename/$one_page->id")
->rules(array("required", "length[1,64]"));
// If the form validates, and if the new name doesn't already exist, rename the page.
if ($in_place_edit->validate()) {
$old_name = $one_page->name;
$new_name = urlencode(trim($in_place_edit->value()));
$new_name_exists = ORM::factory("static_page")->where("name", "=", $new_name)->find_all();
if (count($new_name_exists) == 0) {
$one_page->name = $new_name;
$one_page->save();
$message = t("Renamed page <i>%old_name</i> to <i>%new_name</i>",
array("old_name" => $old_name, "new_name" => $new_name));
message::success($message);
log::success("pages", $message);
json::reply(array("result" => "success", "location" => url::site("admin/pages")));
} else {
json::reply(array("result" => "error", "form" => (string)$in_place_edit->render()));
}
} else {
json::reply(array("result" => "error", "form" => (string)$in_place_edit->render()));
}
}
static function get_delete_form($one_page) {
// Generate a new form asking the user if they want to delete a page.
$form = new Forge("admin/pages/delete/$one_page->id", "", "post", array("id" => "g-delete-pages-form"));
$group = $form->group("delete_page")
->label(t("Really delete page %page_name?", array("page_name" => $one_page->name)));
$group->submit("")->value(t("Delete Page"));
return $form;
}
private function get_new_page_form() {
// Generate a form for creating a new page.
$form = new Forge("admin/pages/savepage", "", "post",
array("id" => "g-pages-admin-form"));
$pages_group = $form->group("new_page");
$pages_group->input("page_name")
->label(t("Name"));
$pages_group->input("page_title")
->label(t("Title"));
$pages_group->textarea("page_code")
->label(t("HTML Code"));
$pages_group->checkbox("display_menu")
->label(t("Display in menu?"))
->checked(false);
$pages_group->submit("save_page")
->value(t("Save"));
return $form;
}
private function get_overwrite_page_form($id, $name, $title, $html_code, $display_menu) {
// Generate a form for overwriting an existing page.
$form = new Forge("admin/pages/savepage", "", "post",
array("id" => "g-pages-admin-form"));
$pages_group = $form->group("new_page");
$pages_group->hidden("page_id")
->value($id);
$pages_group->input("page_name")
->label(t("Name"))
->readonly()
->value($name);
$pages_group->input("page_title")
->label(t("Title"))
->value($title);
$pages_group->textarea("page_code")
->label(t("HTML Code"))
->value($html_code);
$pages_group->checkbox("display_menu")
->label(t("Display in menu?"))
->checked($display_menu);
$pages_group->submit("save_page")
->value(t("Save"));
return $form;
}
private function get_edit_page_form($existing_page) {
// Generate a form for editing an existing page. Reuse the overwrite form for as it's basically the same thing.
return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code, $existing_page->display_menu));
}
private function get_prefs_form() {
// Generate a form for global preferences.
$form = new Forge("admin/pages/saveprefs", "", "post",
array("id" => "g-pages-admin-form"));
$pages_group = $form->group("preferences")->label(t("Settings"));
$pages_group->checkbox("display_sidebar")
->label(t("Hide sidebar on Pages?"))
->checked(module::get_var("pages", "show_sidebar"));
$pages_group->submit("save_prefs")
->value(t("Save"));
return $form;
}
public function saveprefs() {
// Save a preferences to the database.
access::verify_csrf();
// Save form variables.
module::set_var("pages", "show_sidebar", Input::instance()->post("display_sidebar"));
// Display message and load main pages admin screen.
message::success(t("Your settings have been saved."));
url::redirect("admin/pages");
}
}

View File

@ -0,0 +1,42 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Pages_Controller extends Controller {
public function show($page_name) {
// Display the page specified by $page_name, or a 404 error if it doesn't exist.
// Run a database search to look up the page.
$existing_page = ORM::factory("static_page")
->where("name", "=", $page_name)
->find_all();
// If it doesn't exist, display a 404 error.
if (count($existing_page) == 0) {
throw new Kohana_404_Exception();
}
// Display the page.
$template = new Theme_View("page.html", "other", "Pages");
$template->page_title = t("Gallery :: ") . t($existing_page[0]->title);
$template->content = new View("pages_display.html");
$template->content->title = $existing_page[0]->title;
$template->content->body = $existing_page[0]->html_code;
print $template;
}
}

View File

@ -0,0 +1,48 @@
div.jHtmlArea { display: inline block; border: solid 1px #ccc; }
div.jHtmlArea div { padding: 0px; margin: 0px; }
div.jHtmlArea .ToolBar { }
div.jHtmlArea .ToolBar ul { border: solid 0px #ccc; margin: 1px; padding: 1px; position:relative; display: inline; background: #fff url(../images/jHtmlArea_Toolbar_Group_BG.png) repeat-x;}
div.jHtmlArea .ToolBar ul li { list-style-type: none; float: left; border: none; padding: 1px; margin: 1px; }
div.jHtmlArea .ToolBar ul li:hover { border: solid 1px #ccc; background: #ddd url(../images/jHtmlArea_Toolbar_Group__Btn_Select_BG.png); padding: 0; }
div.jHtmlArea .ToolBar ul li a { display: block; width: 16px; height: 16px; background: url(../images/jHtmlArea.png) no-repeat -16px -500px; border: none; cursor: pointer; padding: 0px; }
div.jHtmlArea .ToolBar ul li a.highlighted { border: solid 1px #aaa; background-color: #bbb; padding: 0; }
div.jHtmlArea .ToolBar ul li.separator {height: 16px; margin: 0 2px 0 3px; border-left: 1px solid #ccc;}
div.jHtmlArea .ToolBar ul li.separator:hover { padding: 1px; background-color: #fff; border-top:none; border-bottom:none; border-right:none;}
div.jHtmlArea .ToolBar ul li a:hover { }
div.jHtmlArea .ToolBar ul li a.bold { background-position: 0 0; }
div.jHtmlArea .ToolBar ul li a.italic { background-position: -16px 0; }
div.jHtmlArea .ToolBar ul li a.underline { background-position: -32px 0; }
div.jHtmlArea .ToolBar ul li a.strikethrough { background-position: -48px 0; }
div.jHtmlArea .ToolBar ul li a.link { background-position: -64px 0; }
div.jHtmlArea .ToolBar ul li a.unlink { background-position: -80px 0; }
div.jHtmlArea .ToolBar ul li a.orderedlist { background-position: -96px 0; }
div.jHtmlArea .ToolBar ul li a.unorderedlist { background-position: -112px 0; }
div.jHtmlArea .ToolBar ul li a.image { background-position: -128px 0; }
div.jHtmlArea .ToolBar ul li a.cut { background-position: -144px 0; }
div.jHtmlArea .ToolBar ul li a.copy { background-position: -160px 0; }
div.jHtmlArea .ToolBar ul li a.paste { background-position: -176px 0; }
div.jHtmlArea .ToolBar ul li a.html { background-position: -192px 0; opacity:0.6; filter:alpha(opacity=60);}
div.jHtmlArea .ToolBar ul li a.html.highlighted { opacity:1.0; filter:alpha(opacity=100);}
div.jHtmlArea .ToolBar ul li a.h1 { background-position: 0 -16px;}
div.jHtmlArea .ToolBar ul li a.h2 { background-position: -16px -16px;}
div.jHtmlArea .ToolBar ul li a.h3 { background-position: -32px -16px;}
div.jHtmlArea .ToolBar ul li a.h4 { background-position: -48px -16px;}
div.jHtmlArea .ToolBar ul li a.h5 { background-position: -64px -16px;}
div.jHtmlArea .ToolBar ul li a.h6 { background-position: -80px -16px;}
div.jHtmlArea .ToolBar ul li a.subscript { background-position: -96px -16px;}
div.jHtmlArea .ToolBar ul li a.superscript { background-position: -112px -16px;}
div.jHtmlArea .ToolBar ul li a.indent { background-position: -128px -16px;}
div.jHtmlArea .ToolBar ul li a.outdent { background-position: -144px -16px;}
div.jHtmlArea .ToolBar ul li a.horizontalrule { background-position: -160px -16px;}
div.jHtmlArea .ToolBar ul li a.p { background-position: -176px -16px;}
div.jHtmlArea .ToolBar ul li a.justifyleft { background-position: 0 -32px;}
div.jHtmlArea .ToolBar ul li a.justifycenter { background-position: -16px -32px;}
div.jHtmlArea .ToolBar ul li a.justifyright { background-position: -32px -32px;}
div.jHtmlArea .ToolBar ul li a.increasefontsize { background-position: -48px -32px;}
div.jHtmlArea .ToolBar ul li a.decreasefontsize { background-position: -64px -32px;}
div.jHtmlArea .ToolBar ul li a.forecolor { background-position: -80px -32px;}

View File

@ -0,0 +1,57 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 pages_block_Core {
static function get_site_list() {
return array("pages_block" => t("Pages Links"));
}
static function get($block_id, $theme) {
$block = "";
switch ($block_id) {
case "pages_block":
// Create a new block with a list of all Pages and their links.
// Query the database for all existing pages.
// If at least one page exists, display the sidebar block.
$query = ORM::factory("static_page");
$pages = $query->order_by("title", "ASC")->find_all();
if (count($pages) > 0) {
// Loop through each page and generate an HTML list of their links and titles.
$content = "<ul id=\"g-pages-list\">";
foreach ($pages as $one_page) {
$content .= "<li style=\"clear: both;\"><a href=\"" . url::site("pages/show/" . $one_page->name) . "\">" . t($one_page->title) . "</a></li>";
}
$content .= "</ul>";
// Make a new sidebar block.
$block = new Block();
$block->css_id = "g-pages";
$block->title = t("Pages");
$block->content = new View("pages_sidebar.html");
$block->content->links = $content;
}
break;
}
return $block;
}
}

View File

@ -0,0 +1,44 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 pages_event_Core {
static function admin_menu($menu, $theme) {
// Add a settings link to the admin menu.
$menu->get("content_menu")
->append(Menu::factory("link")
->id("pages")
->label(t("Pages Settings"))
->url(url::site("admin/pages")));
}
static function site_menu($menu, $theme) {
$menu_pages = ORM::factory("static_page")
->where("display_menu", "=", true)
->order_by("title", "DESC")
->find_all();
if (count($menu_pages) > 0) {
foreach ($menu_pages as $one_page) {
$menu->add_after("home", Menu::factory("link")
->id("pages-" . $one_page->id)
->label(t($one_page->title))
->url(url::site("pages/show/" . $one_page->name)));
}
}
}
}

View File

@ -0,0 +1,44 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 pages_installer {
static function install() {
// Create a table to store pages in.
$db = Database::instance();
$db->query("CREATE TABLE IF NOT EXISTS {static_pages} (
`id` int(9) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`title` varchar(255) default NULL,
`html_code` text default NULL,
`display_menu` boolean default 0,
PRIMARY KEY (`id`),
UNIQUE KEY(`name`))
DEFAULT CHARSET=utf8;");
// Set the module version number.
module::set_version("pages", 2);
}
static function upgrade($version) {
$db = Database::instance();
if ($version == 1) {
$db->query("ALTER TABLE {static_pages} ADD COLUMN `display_menu` boolean default 0");
module::set_version("pages", $version = 2);
}
}
}

View File

@ -0,0 +1,27 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 pages_theme_Core {
static function admin_head($theme) {
// Load jHtmlArea js and css.
return $theme->script("jHtmlArea-0.7.0.js") .
$theme->css("jHtmlArea.css");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

View File

@ -0,0 +1,403 @@
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(opts) {
if (opts && typeof (opts) === "string") {
var args = [];
for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
var htmlarea = jHtmlArea(this[0]);
var f = htmlarea[opts];
if (f) { return f.apply(htmlarea, args); }
}
return this.each(function() { jHtmlArea(this, opts); });
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
if (elem.jquery) {
return jHtmlArea(elem[0]);
}
if (elem.jhtmlareaObject) {
return elem.jhtmlareaObject;
} else {
return new jHtmlArea.fn.init(elem, options);
}
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
if (elem.nodeName.toLowerCase() === "textarea") {
var opts = $.extend({}, jHtmlArea.defaultOptions, options);
elem.jhtmlareaObject = this;
var textarea = this.textarea = $(elem);
var container = this.container = $("<div/>").addClass("jHtmlArea").width(textarea.width()).insertAfter(textarea);
var toolbar = this.toolbar = $("<div/>").addClass("ToolBar").appendTo(container);
priv.initToolBar.call(this, opts);
var iframe = this.iframe = $("<iframe/>").height(textarea.height());
iframe.width(textarea.width() - ($.browser.msie ? 0 : 4));
var htmlarea = this.htmlarea = $("<div/>").append(iframe);
container.append(htmlarea).append(textarea.hide());
priv.initEditor.call(this, opts);
priv.attachEditorEvents.call(this);
// Fix total height to match TextArea
iframe.height(iframe.height() - toolbar.height());
toolbar.width(textarea.width() - 2);
if (opts.loaded) { opts.loaded.call(this); }
}
},
dispose: function() {
this.textarea.show().insertAfter(this.container);
this.container.remove();
this.textarea[0].jhtmlareaObject = null;
},
execCommand: function(a, b, c) {
this.iframe[0].contentWindow.focus();
this.editor.execCommand(a, b || false, c || null);
this.updateTextArea();
},
ec: function(a, b, c) {
this.execCommand(a, b, c);
},
queryCommandValue: function(a) {
this.iframe[0].contentWindow.focus();
return this.editor.queryCommandValue(a);
},
qc: function(a) {
return this.queryCommandValue(a);
},
getSelectedHTML: function() {
if ($.browser.msie) {
return this.getRange().htmlText;
} else {
var elem = this.getRange().cloneContents();
return $("<p/>").append($(elem)).html();
}
},
getSelection: function() {
if ($.browser.msie) {
//return (this.editor.parentWindow.getSelection) ? this.editor.parentWindow.getSelection() : this.editor.selection;
return this.editor.selection;
} else {
return this.iframe[0].contentDocument.defaultView.getSelection();
}
},
getRange: function() {
var s = this.getSelection();
if (!s) { return null; }
//return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
return (s.getRangeAt) ? s.getRangeAt(0) : s.createRange();
},
html: function(v) {
if (v) {
this.pastHTML(v);
} else {
return toHtmlString();
}
},
pasteHTML: function(html) {
this.iframe[0].contentWindow.focus();
var r = this.getRange();
if ($.browser.msie) {
r.pasteHTML(html);
} else if ($.browser.mozilla) {
r.deleteContents();
r.insertNode($((html.indexOf("<") != 0) ? $("<span/>").append(html) : html)[0]);
} else { // Safari
r.deleteContents();
r.insertNode($(this.iframe[0].contentWindow.document.createElement("span")).append($((html.indexOf("<") != 0) ? "<span>" + html + "</span>" : html))[0]);
}
r.collapse(false);
r.select();
},
cut: function() {
this.ec("cut");
},
copy: function() {
this.ec("copy");
},
paste: function() {
this.ec("paste");
},
bold: function() { this.ec("bold"); },
italic: function() { this.ec("italic"); },
underline: function() { this.ec("underline"); },
strikeThrough: function() { this.ec("strikethrough"); },
image: function(url) {
if ($.browser.msie && !url) {
this.ec("insertImage", true);
} else {
this.ec("insertImage", false, (url || prompt("Image URL:", "http://")));
}
},
removeFormat: function() {
this.ec("removeFormat", false, []);
this.unlink();
},
link: function() {
if ($.browser.msie) {
this.ec("createLink", true);
} else {
this.ec("createLink", false, prompt("Link URL:", "http://"));
}
},
unlink: function() { this.ec("unlink", false, []); },
orderedList: function() { this.ec("insertorderedlist"); },
unorderedList: function() { this.ec("insertunorderedlist"); },
superscript: function() { this.ec("superscript"); },
subscript: function() { this.ec("subscript"); },
p: function() {
this.formatBlock("<p>");
},
h1: function() {
this.heading(1);
},
h2: function() {
this.heading(2);
},
h3: function() {
this.heading(3);
},
h4: function() {
this.heading(4);
},
h5: function() {
this.heading(5);
},
h6: function() {
this.heading(6);
},
heading: function(h) {
this.formatBlock($.browser.msie ? "Heading " + h : "h" + h);
},
indent: function() {
this.ec("indent");
},
outdent: function() {
this.ec("outdent");
},
insertHorizontalRule: function() {
this.ec("insertHorizontalRule", false, "ht");
},
justifyLeft: function() {
this.ec("justifyLeft");
},
justifyCenter: function() {
this.ec("justifyCenter");
},
justifyRight: function() {
this.ec("justifyRight");
},
increaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") + 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "larger")[0]);
} else {
this.ec("increaseFontSize", false, "big");
}
},
decreaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") - 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "smaller")[0]);
} else {
this.ec("decreaseFontSize", false, "small");
}
},
forecolor: function(c) {
this.ec("foreColor", false, c || prompt("Enter HTML Color:", "#"));
},
formatBlock: function(v) {
this.ec("formatblock", false, v || null);
},
showHTMLView: function() {
this.updateTextArea();
this.textarea.show();
this.htmlarea.hide();
$("ul li:not(li:has(a.html))", this.toolbar).hide();
$("ul:not(:has(:visible))", this.toolbar).hide();
$("ul li a.html", this.toolbar).addClass("highlighted");
},
hideHTMLView: function() {
this.updateHtmlArea();
this.textarea.hide();
this.htmlarea.show();
$("ul", this.toolbar).show();
$("ul li", this.toolbar).show().find("a.html").removeClass("highlighted");
},
toggleHTMLView: function() {
(this.textarea.is(":hidden")) ? this.showHTMLView() : this.hideHTMLView();
},
toHtmlString: function() {
return this.editor.body.innerHTML;
},
toString: function() {
return this.editor.body.innerText;
},
updateTextArea: function() {
this.textarea.val(this.toHtmlString());
},
updateHtmlArea: function() {
this.editor.body.innerHTML = this.textarea.val();
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
jHtmlArea.defaultOptions = {
toolbar: [
["html"], ["bold", "italic", "underline", "strikethrough", "|", "subscript", "superscript"],
["increasefontsize", "decreasefontsize"],
["orderedlist", "unorderedlist"],
["indent", "outdent"],
["justifyleft", "justifycenter", "justifyright"],
["link", "unlink", "image", "horizontalrule"],
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
["cut", "copy", "paste"]
],
css: null,
toolbarText: {
bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strike-Through",
cut: "Cut", copy: "Copy", paste: "Paste",
h1: "Heading 1", h2: "Heading 2", h3: "Heading 3", h4: "Heading 4", h5: "Heading 5", h6: "Heading 6", p: "Paragraph",
indent: "Indent", outdent: "Outdent", horizontalrule: "Insert Horizontal Rule",
justifyleft: "Left Justify", justifycenter: "Center Justify", justifyright: "Right Justify",
increasefontsize: "Increase Font Size", decreasefontsize: "Decrease Font Size", forecolor: "Text Color",
link: "Insert Link", unlink: "Remove Link", image: "Insert Image",
orderedlist: "Insert Ordered List", unorderedlist: "Insert Unordered List",
subscript: "Subscript", superscript: "Superscript",
html: "Show/Hide HTML Source View"
}
};
var priv = {
toolbarButtons: {
strikethrough: "strikeThrough", orderedlist: "orderedList", unorderedlist: "unorderedList",
horizontalrule: "insertHorizontalRule",
justifyleft: "justifyLeft", justifycenter: "justifyCenter", justifyright: "justifyRight",
increasefontsize: "increaseFontSize", decreasefontsize: "decreaseFontSize",
html: function(btn) {
this.toggleHTMLView();
}
},
initEditor: function(options) {
var edit = this.editor = this.iframe[0].contentWindow.document;
edit.designMode = 'on';
edit.open();
edit.write(this.textarea.val());
edit.close();
if (options.css) {
var e = edit.createElement('link'); e.rel = 'stylesheet'; e.type = 'text/css'; e.href = options.css; edit.getElementsByTagName('head')[0].appendChild(e);
}
},
initToolBar: function(options) {
var that = this;
var menuItem = function(className, altText, action) {
return $("<li/>").append($("<a href='javascript:void(0);'/>").addClass(className).attr("title", altText).click(function() { action.call(that, $(this)); }));
};
function addButtons(arr) {
var ul = $("<ul/>").appendTo(that.toolbar);
for (var i = 0; i < arr.length; i++) {
var e = arr[i];
if ((typeof (e)).toLowerCase() === "string") {
if (e === "|") {
ul.append($('<li class="separator"/>'));
} else {
var f = (function(e) {
// If button name exists in priv.toolbarButtons then call the "method" defined there, otherwise call the method with the same name
var m = priv.toolbarButtons[e] || e;
if ((typeof (m)).toLowerCase() === "function") {
return function(btn) { m.call(this, btn); };
} else {
return function() { this[m](); this.editor.body.focus(); };
}
})(e.toLowerCase());
var t = options.toolbarText[e.toLowerCase()];
ul.append(menuItem(e.toLowerCase(), t || e, f));
}
} else {
ul.append(menuItem(e.css, e.text, e.action));
}
}
};
if (options.toolbar.length !== 0 && priv.isArray(options.toolbar[0])) {
for (var i = 0; i < options.toolbar.length; i++) {
addButtons(options.toolbar[i]);
}
} else {
addButtons(options.toolbar);
}
},
attachEditorEvents: function() {
var t = this;
var fnHA = function() {
t.updateHtmlArea();
};
this.textarea.click(fnHA).
keyup(fnHA).
keydown(fnHA).
mousedown(fnHA).
blur(fnHA);
var fnTA = function() {
t.updateTextArea();
};
$(this.editor.body).click(fnTA).
keyup(fnTA).
keydown(fnTA).
mousedown(fnTA).
blur(fnTA);
$('form').submit(function() { t.toggleHTMLView(); t.toggleHTMLView(); });
//$(this.textarea[0].form).submit(function() { //this.textarea.closest("form").submit(function() {
// Fix for ASP.NET Postback Model
if (window.__doPostBack) {
var old__doPostBack = __doPostBack;
window.__doPostBack = function() {
if (t) {
if (t.toggleHTMLView) {
t.toggleHTMLView();
t.toggleHTMLView();
}
}
return old__doPostBack.apply(window, arguments);
};
}
},
isArray: function(v) {
return v && typeof v === 'object' && typeof v.length === 'number' && typeof v.splice === 'function' && !(v.propertyIsEnumerable('length'));
}
};
})(jQuery);

View File

@ -0,0 +1,21 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2011 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 Static_Page_Model extends ORM {
}

View File

@ -0,0 +1,7 @@
name = "Pages"
description = "Allows Gallery admins to create static pages."
version = 2
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:Pages"
discuss_url = "http://gallery.menalto.com/node/102534"

View File

@ -0,0 +1,59 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<script type="text/javascript">
$("document").ready(function() {
// using JS for adding link titles to avoid running t() for each tag
$("#g-page-admin .g-page-name").attr("title", <?= t("Click to edit this page")->for_js() ?>);
$("#g-page-admin .g-delete-link").attr("title", $(".g-delete-link:first span").html());
// In-place editing for tag admin
$(".g-editable").gallery_in_place_edit({
form_url: <?= html::js_string(url::site("admin/pages/form_rename/__ID__")) ?>
});
});
</script>
<? $pages_per_column = $pages->count()/5 ?>
<? $column_page_count = 0 ?>
<div class="g-block">
<h1> <?= t("Manage pages") ?> </h1>
<?= $form; ?>
<div class="g-block-content">
<table id="g-page-admin">
<caption>
<?= t2("There is one page", "There are %count pages", $pages->count()) ?><br />
<a href="<?=url::site("admin/pages/createpage") ?>"><?=t("Add new page") ?></a>
</caption>
<tr>
<td>
<? foreach ($pages as $i => $one_page): ?>
<? $current_letter = strtoupper(mb_substr($one_page->name, 0, 1)) ?>
<? if ($i == 0): /* first letter */ ?>
<strong><?= html::clean($current_letter) ?></strong>
<ul>
<? elseif ($last_letter != $current_letter): /* new letter */ ?>
</ul>
<? if ($column_page_count > $pages_per_column): /* new column */ ?>
<? $column_page_count = 0 ?>
</td>
<td>
<? endif ?>
<strong><?= html::clean($current_letter) ?></strong>
<ul>
<? endif ?>
<li>
<span class="g-editable g-page-name" rel="<?= $one_page->id ?>"><?= html::clean($one_page->name) ?></span>
<a href="<?= url::site("admin/pages/editpage/$one_page->id") ?>" class="g-edit-link g-button" title="<?= t("Edit this page") ?>"><span class="ui-icon ui-icon-pencil"><?= t("Edit this page") ?></span></a>
<a href="<?= url::site("pages/show/" . $one_page->name) ?>" class="g-view-link g-button" title="<?= t("View this page") ?>" target="_blank"><span class="ui-icon ui-icon-info"><?= t("View this page") ?></span></a>
<a href="<?= url::site("admin/pages/form_delete/$one_page->id") ?>" class="g-dialog-link g-delete-link g-button"><span class="ui-icon ui-icon-trash"><?= t("Delete this page") ?></span></a>
</li>
<? $column_page_count++ ?>
<? $last_letter = $current_letter ?>
<? endforeach ?>
</ul>
</td>
</tr>
</table>
</div>
</div>

View File

@ -0,0 +1,20 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<body>
<style type="text/css">
textarea {
height: 35em;
width: 97%;
}
</style>
<script type="text/javascript">
$(function() {
$("textarea").htmlarea(); // Initialize all TextArea's as jHtmlArea's with default values
});
</script>
<div class="g-block">
<h1> <?= $theme->page_title ?> </h1>
<div class="g-block-content">
<?=$form ?>
</div>
</div>

View File

@ -0,0 +1,26 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<? if (module::get_var("pages", "show_sidebar")) : ?>
<style type="text/css">
<? if (module::get_var("gallery", "active_site_theme") == "greydragon") : ?>
#g-column-right {
display: none;
}
.g-page-block-content {
width: 99%;
}
<? else: ?>
#g-sidebar {
display: none;
}
#g-content {
width: 950px;
}
<? endif ?>
</style>
<? endif ?>
<div class="g-page-block">
<h1> <?= t($title) ?> </h1>
<div class="g-page-block-content">
<?=t($body) ?>
</div>
</div>

View File

@ -0,0 +1,2 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?= $links ?>

View File

@ -97,12 +97,19 @@ class Sendmail_Core {
// Gallery Sendmail script. Outside of this function,
// no other changes were made.
require(module::get_var("phpmailer", "phpmailer_path"));
// Make sure phpmailer_path is valid.
if(!file_exists(module::get_var("phpmailer", "phpmailer_path"))) {
Kohana_Log::add("error", wordwrap("File Not Found: " . module::get_var("phpmailer", "phpmailer_path")));
return false;
}
require_once(module::get_var("phpmailer", "phpmailer_path"));
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = module::get_var("phpmailer", "smtp_server");
$mail->Port = module::get_var("phpmailer", "smtp_port");
$mail->SMTPDebug = 1;
if (module::get_var("phpmailer", "smtp_login") != "") {
$mail->SMTPAuth = true;
@ -133,6 +140,12 @@ class Sendmail_Core {
$mail->Subject = $subject;
$mail->Body = $message;
return $mail->Send();
// Log any errors.
if (!$mail->Send()) {
Kohana_Log::add("error", wordwrap($mail->ErrorInfo));
return false;
} else {
return true;
}
}
}

View File

@ -68,7 +68,7 @@ class tag_albums_Controller extends Controller {
$index = $this->_get_position($child->$sort_page_field, $child->id, $tag_ids, "items." . $sort_page_field, $sort_page_direction, $album_tags_search_type, true);
if ($index) {
$page = ceil($index / $page_size);
url::redirect("tag_albums/album/" . $id . "?page=$page");
url::redirect("tag_albums/album/" . $id . "/" . urlencode($album->name) . "?page=$page");
}
}
@ -97,7 +97,7 @@ class tag_albums_Controller extends Controller {
$tag_children = $this->_get_records($tag_ids, $page_size, $offset, "items." . $sort_page_field, $sort_page_direction, $album_tags_search_type, true);
$children = Array();
foreach ($tag_children as $one_child) {
$child_tag = new Tag_Albums_Item($one_child->title, url::site("tag_albums/show/" . $one_child->id . "/0/" . $id), $one_child->type);
$child_tag = new Tag_Albums_Item($one_child->title, url::site("tag_albums/show/" . $one_child->id . "/0/" . $id . "/" . urlencode($one_child->name)), $one_child->type);
$child_tag->id = $one_child->id;
$child_tag->view_count = $one_child->view_count;
$child_tag->owner = identity::lookup_user($one_child->owner_id);
@ -132,7 +132,7 @@ class tag_albums_Controller extends Controller {
// Set up and display the actual page.
$parent_album = ORM::factory("item", $album->parent_id);
$template = new Theme_View("calpage.html", "collection", "Tag Albums");
$template = new Theme_View("calpage.html", "other", "Tag Albums");
$template->page_title = $page_title;
$template->set_global("page", $page);
$template->set_global("page_size", $page_size);
@ -161,10 +161,18 @@ class tag_albums_Controller extends Controller {
if ((module::get_var("tag_albums", "tag_index_scope", "false")) || ($id == "")) {
$tag_album_index_type = module::get_var("tag_albums", "tag_index", "default");
if (($tag_album_index_type == "tagcloudpage") && (module::is_active("tag_cloud_page"))) {
url::redirect("tag_cloud_page/");
$redirect_url = "tag_cloud_page/";
if ($id) {
$redirect_url .= "?album={$id}";
}
url::redirect($redirect_url);
return;
} elseif (($tag_album_index_type == "alltags") && (module::is_active("all_tags"))) {
url::redirect("all_tags/");
$redirect_url = "all_tags/";
if ($id) {
$redirect_url .= "?album={$id}";
}
url::redirect($redirect_url);
return;
}
}
@ -228,7 +236,7 @@ class tag_albums_Controller extends Controller {
if ($id == "") {
url::redirect("tag_albums/?page=$page");
} else {
url::redirect("tag_albums/album/" . $id . "?page=$page");
url::redirect("tag_albums/album/" . $id . "/" . urlencode($album->title) . "?page=$page");
}
}
}
@ -307,7 +315,7 @@ class tag_albums_Controller extends Controller {
->where("items_tags.tag_id", "=", $one_tag->id)
->order_by("items.id", "DESC")
->find_all(1, 0);
$child_tag = new Tag_Albums_Item($one_tag->name, url::site("tag_albums/tag/" . $one_tag->id . "/" . $id), "album");
$child_tag = new Tag_Albums_Item($one_tag->name, url::site("tag_albums/tag/" . $one_tag->id . "/" . $id . "/" . urlencode($one_tag->name)), "album");
if (count($tag_item) > 0) {
if ($tag_item[0]->has_thumb()) {
$child_tag->set_thumb($tag_item[0]->thumb_url(), $tag_item[0]->thumb_width, $tag_item[0]->thumb_height);
@ -338,7 +346,7 @@ class tag_albums_Controller extends Controller {
}
// Set up and display the actual page.
$template = new Theme_View("calpage.html", "collection", "Tag Albums");
$template = new Theme_View("calpage.html", "other", "Tag Albums");
$template->page_title = $page_title;
$template->set_global("page", $page);
$template->set_global("page_size", $page_size);
@ -414,7 +422,7 @@ class tag_albums_Controller extends Controller {
// Create an array of "fake" items to display on the page.
$children = Array();
foreach ($tag_children as $one_child) {
$child_tag = new Tag_Albums_Item($one_child->title, url::site("tag_albums/show/" . $one_child->id . "/" . $id . "/" . $album_id), $one_child->type);
$child_tag = new Tag_Albums_Item($one_child->title, url::site("tag_albums/show/" . $one_child->id . "/" . $id . "/" . $album_id . "/" . urlencode($one_child->name)), $one_child->type);
$child_tag->id = $one_child->id;
$child_tag->view_count = $one_child->view_count;
$child_tag->owner = identity::lookup_user($one_child->owner_id);
@ -453,10 +461,11 @@ class tag_albums_Controller extends Controller {
$parent_item = ORM::factory("item", $parent_item->parent_id);
}
$tag_album_breadcrumbs[$counter++] = new Tag_Albums_Breadcrumb($parent_item->title, $parent_item->url());
$parent_item = ORM::factory("item", $album_tags[0]->album_id);
if ((module::get_var("tag_albums", "tag_index_scope", "false")) && (module::get_var("tag_albums", "tag_index", "default") != "default")) {
$tag_album_breadcrumbs[1]->url = url::site("tag_albums/album/" . $album_id);
$tag_album_breadcrumbs[1]->url = url::site("tag_albums/album/" . $album_id . "/" . urlencode($parent_item->name));
} else {
$tag_album_breadcrumbs[1]->url = url::site("tag_albums/album/" . $album_id) . "?show=" . $id;
$tag_album_breadcrumbs[1]->url = url::site("tag_albums/album/" . $album_id . "/" . urlencode($parent_item->name)) . "?show=" . $id;
}
$tag_album_breadcrumbs = array_reverse($tag_album_breadcrumbs, true);
} else {
@ -471,7 +480,7 @@ class tag_albums_Controller extends Controller {
}
// Set up and display the actual page.
$template = new Theme_View("calpage.html", "collection", "Tag Albums");
$template = new Theme_View("calpage.html", "other", "Tag Albums");
$template->page_title = $display_tag->name;
$template->set_global("page", $page);
$template->set_global("page_size", $page_size);

View File

@ -26,7 +26,7 @@ class tag_albums_theme_Core {
->where("album_id", "=", $theme->item->id)
->find_all();
if (count($album_tags) > 0) {
url::redirect(url::abs_site("tag_albums/album/" . $album_tags[0]->id));
url::redirect(url::abs_site("tag_albums/album/" . $album_tags[0]->id . "/" . urlencode($theme->item->name)));
}
}
return;

View File

@ -132,7 +132,11 @@ class Tag_Model_Core extends ORM {
* @param string $query the query string (eg "page=3")
*/
public function url($query=null) {
$url = url::site("/tag_albums/tag/{$this->id}/" . urlencode($this->name));
$album_id = Input::instance()->get("album");
if (!($album_id)) {
$album_id = 0;
}
$url = url::site("/tag_albums/tag/{$this->id}/{$album_id}/" . urlencode($this->name));
if ($query) {
$url .= "?$query";
}

View File

@ -29,12 +29,26 @@ class tagsinalbum_block_Core {
case "tagsinalbum":
if (($theme->item) && ($theme->item->is_album())) {
$item = $theme->item;
$all_tags = ORM::factory("tag")
// Create an ORM query for finding one instance of each tag
// used by children in the current album.
$tags_model = ORM::factory("tag")
->join("items_tags", "items_tags.tag_id", "tags.id")
->join("items", "items.id", "items_tags.item_id", "LEFT")
->where("items.parent_id", "=", $item->id)
->order_by("tags.id", "ASC")
->find_all();
->order_by("tags.name", "ASC")
->group_by("tags.id");
// Limit $all_tags to the first X tags if max_display_tags is set,
// else populate it with all tags used by this album's children.
$all_tags = "";
if (module::get_var("tagsinalbum", "max_display_tags") > 0) {
$all_tags = $tags_model->find_all(module::get_var("tagsinalbum", "max_display_tags"));
} else {
$all_tags = $tags_model->find_all();
}
// If this album has children that are tagged, display those tags.
if (count($all_tags) > 0) {
$block = new Block();
$block->css_id = "g-tags-in-album-block";

View File

@ -1,7 +1,7 @@
name = "Tags In Album"
description = "Creates a sidebar block to display tags used by photos and videos in the current album."
version = 2
author_name = ""
author_url = ""
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:tagsinalbum"
discuss_url = "http://gallery.menalto.com/forum_module_tagsinalbum"
discuss_url = "http://gallery.menalto.com/node/99171"

View File

@ -1,33 +1,11 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?
// Create an array to store the tag names and urls in.
$display_tags = array();
// Loop through all tags in the album, copying their
// names and urls into the array and skipping duplicates.
$last_tagid = "";
foreach ($all_tags as $one_tag) {
if ($last_tagid != $one_tag->id) {
$tag = ORM::factory("tag", $one_tag->id);
$display_tags[] = array(html::clean($tag->name), $tag->url());
$last_tagid = $one_tag->id;
}
if (module::get_var("tagsinalbum", "max_display_tags") > 0) {
if (count($display_tags) == module::get_var("tagsinalbum", "max_display_tags")) {
break;
}
}
}
// Sort the array.
asort($display_tags);
// Print out the list of tags as clickable links.
// Loop through each tag in $all_tags, and display it as a link.
$not_first = 0;
foreach ($display_tags as $one_tag) {
foreach ($all_tags as $one_tag) {
if ($not_first++ > 0) {
print ", ";
}
print "<a href=\"" . $one_tag[1] . "\">" . $one_tag[0] . "</a>";
print "<a href=\"" . $one_tag->url() . "\">" . html::clean($one_tag->name) . "</a>";
}
?>

View File

@ -32,6 +32,12 @@ class tagsmap_event_Core {
}
}
static function pre_deactivate($data) {
if ($data->module == "tag") {
$data->messages["warn"][] = t("The TagsMap module requires the Tags module.");
}
}
static function admin_menu($menu, $theme) {
// Add a link to the TagsMap admin page to the Content menu.
$menu->get("content_menu")

View File

@ -43,6 +43,14 @@ class tagsmap_installer {
site_status::clear("tagsmap_needs_tag");
}
static function can_activate() {
$messages = array();
if (!module::is_active("tag")) {
$messages["warn"][] = t("The TagsMap module requires the Tags module.");
}
return $messages;
}
static function uninstall() {
// Delete the GPS table before uninstalling.
$db = Database::instance();

View File

@ -84,12 +84,16 @@ class Admin_Themeroller_Controller extends Admin_Controller {
->name(t("Generate theme"));
$v->task = task::create($task_def,
array("path" => $extract_path,
"original_name" => $form->theme->original->value,
"theme_name" => $form->theme->theme_name->value,
"display_name" => $form->theme->display_name->value,
"description" => $form->theme->description->value,
"is_admin" => $session->get("themeroller_is_admin")));
array("path" => $extract_path,
"user_name" => SafeString::purify(identity::active_user()->name),
"original_name" => SafeString::purify($form->theme->original->value),
"theme_name" => SafeString::purify($form->theme->theme_name->value),
"display_name" => SafeString::purify($form->theme->display_name->value),
"description" => SafeString::purify($form->theme->description->value),
"author_url" => SafeString::purify($form->theme->author_url->value),
"info_url" => SafeString::purify($form->theme->info_url->value),
"discuss_url" => SafeString::purify($form->theme->discuss_url->value),
"is_admin" => $session->get("themeroller_is_admin")));
json::reply(array("html" => (string) $v));
} else {
@ -169,9 +173,13 @@ class Admin_Themeroller_Controller extends Admin_Controller {
}
$form_group->textarea("description")->label(t("Description"))
->id("g-description")
->value(t("A generated theme based on the ui themeroller '%name' styling", array("name" => str_replace("admin_", "", $theme_name))))
->value(t("A generated theme based on the ui themeroller '%name' styling",
array("name" => str_replace("admin_", "", $theme_name))))
->rules("required")
->error_messages("required", t("You must enter a theme description name"));
$form_group->input("author_url")->label(t("Author url"))->id("g-author-url");
$form_group->input("info_url")->label(t("Info url"))->id("g-info-url");
$form_group->input("discuss_url")->label(t("Theme Name"))->id("g-discuss-url");
$form_group->submit("")->value(t("Create"));
return $form;

View File

@ -4,47 +4,40 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<? $theme->start_combining("script,css") ?>
<title>
<? if ($page_title): ?>
<?= $page_title ?>
<? else: ?>
<? if ($theme->item()): ?>
<? if ($theme->item()->is_album()): ?>
<?= t("Browse Album :: %album_title", array("album_title" => $theme->item()->title)) ?>
<? elseif ($theme->item()->is_photo()): ?>
<?= t("Photo :: %photo_title", array("photo_title" => $theme->item()->title)) ?>
<? else: ?>
<?= t("Movie :: %movie_title", array("movie_title" => $theme->item()->title)) ?>
<? endif ?>
<?= $theme->item()->title ?>
<? elseif ($theme->tag()): ?>
<?= t("Browse Tag :: %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<?= t("Photos tagged with %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<? else: /* Not an item, not a tag, no page_title specified. Help! */ ?>
<?= t("Gallery") ?>
<?= item::root()->title ?>
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file("lib/images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<link rel="shortcut icon"
href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>"
type="image/x-icon" />
<link rel="apple-touch-icon-precomposed"
href="<?= url::file(module::get_var("gallery", "apple_touch_icon_url")) ?>" />
<? if ($theme->page_type == "collection"): ?>
<? if ($thumb_proportion != 1): ?>
<? $new_width = round($thumb_proportion * 213) ?>
<? $new_height = round($thumb_proportion * 240) ?>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? endif ?>
<? endif ?>
<?= $theme->script("json2-min.js") ?>
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
@ -57,7 +50,6 @@
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("jquery.localscroll.js") ?>
<?= $theme->script("ui.init.js") ?>
<? /* These are page specific, but if we put them before $theme->head() they get combined */ ?>
<? if ($theme->page_subtype == "photo"): ?>
@ -68,6 +60,26 @@
<? endif ?>
<?= $theme->head() ?>
<? /* Theme specific CSS/JS goes last so that it can override module CSS/JS */ ?>
<?= $theme->script("ui.init.js") ?>
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<? if (locales::is_rtl()): ?>
<?= $theme->css("screen-rtl.css") ?>
<? endif; ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<!-- LOOKING FOR YOUR CSS? It's all been combined into the link below -->
<?= $theme->get_combined("css") ?>
<!-- LOOKING FOR YOUR JAVASCRIPT? It's all been combined into the link below -->
<?= $theme->get_combined("script") ?>
</head>
<body <?= $theme->body_attributes() ?>>
@ -100,19 +112,22 @@
<? $i = 0 ?>
<? foreach ($parents as $parent): ?>
<li<? if ($i == 0) print " class=\"g-first\"" ?>>
<!-- Adding ?show=<id> causes Gallery3 to display the page
containing that photo. For now, we just do it for
the immediate parent so that when you go back up a
level you're on the right page. -->
<? // Adding ?show=<id> causes Gallery3 to display the page
// containing that photo. For now, we just do it for
// the immediate parent so that when you go back up a
// level you're on the right page. ?>
<a href="<?= $parent->url($parent == $theme->item()->parent() ?
"show={$theme->item()->id}" : null) ?>">
<?= html::purify(text::limit_chars($parent->title, 15)) ?>
<? // limit the title length to something reasonable (defaults to 15) ?>
<?= html::purify(text::limit_chars($parent->title,
module::get_var("gallery", "visible_title_length"))) ?>
</a>
</li>
<? $i++ ?>
<? endforeach ?>
<li class="g-active<? if ($i == 0) print " g-first" ?>">
<?= html::purify(text::limit_chars($theme->item()->title, 15)) ?>
<?= html::purify(text::limit_chars($theme->item()->title,
module::get_var("gallery", "visible_title_length"))) ?>
</li>
</ul>
<? endif ?>

View File

@ -208,15 +208,18 @@ class themeroller_task_Core {
break;
case "generate_screen_css":
$file = "{$theme_path}/css/screen.css";
$v = new View(($is_admin ? "admin" : "site") . "_screen.css");
$v->display_name = $task->get("display_name");
foreach ($parameters["colors"] as $color => $value) {
$v->$color = $value;
foreach (array("screen", "screen-rtl") as $file) {
$css_file = "{$theme_path}/css/$file.css";
$v = new View(($is_admin ? "admin" : "site") . "_{$file}.css");
$v->display_name = $task->get("display_name");
foreach ($parameters["colors"] as $color => $value) {
$v->$color = $value;
}
ob_start();
print $v->render();
file_put_contents($css_file, ob_get_contents());
ob_end_clean();
}
ob_start();
print $v->render();
file_put_contents($file, ob_get_contents());
ob_end_clean();
$completed++;
$task->log(t("Generated screen css: %path", array("path" => $file)));
$task->status = t("Screen css generated");
@ -229,14 +232,18 @@ class themeroller_task_Core {
$task->status = t("Thumbnail generated");
$task->set("mode", "generate_theme_info");
$completed++;
$task->log(t("Generated theme thumbnail: %path", array("path" => "{$theme_path}thumbnail.png")));
$task->log(t("Generated theme thumbnail: %path",
array("path" => "{$theme_path}thumbnail.png")));
break;
case "generate_theme_info":
$file = "{$theme_path}/theme.info";
$v = new View("theme.info");
$v->display_name = $task->get("display_name");
$v->description = $task->get("description");
$v->user_name = identity::active_user()->name;
$v->user_name = $task->get("user_name");
$v->author_url = $task->get("author_url");
$v->info_url = $task->get("info_url");
$v->discuss_url = $task->get("discuss_url");
$v->is_admin = $is_admin;
$v->definition = json_encode($parameters["colors"]);
ob_start();

View File

@ -1,4 +1,4 @@
name = "Theme generator"
name = "Theme Roller"
description = "Use a JQuery UI theme to create a Gallery3 Theme"
version = 1
author_name = ""

View File

@ -0,0 +1,375 @@
/**
* Gallery 3 Admin Right to left language styles
*/
.rtl {
direction: rtl;
}
#g-header,
#g-content,
#g-sidebar,
#g-footer,
caption,
th,
#g-dialog,
.g-context-menu li a,
.g-message-box li,
#g-site-status li {
text-align: right;
}
.g-text-right {
text-align: left;
}
.g-error,
.g-info,
.g-success,
.g-warning,
#g-add-photos-status .g-success,
#g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
form li.g-error,
form li.g-info,
form li.g-success,
form li.g-warning {
padding-right: 0 !important;
}
.g-left,
.g-inline li,
#g-content #g-album-grid .g-item,
.sf-menu li,
.g-breadcrumbs li,
.g-paginator li,
.g-buttonset li,
.ui-icon-left .ui-icon,
.g-short-form li,
form ul ul li,
input[type="submit"],
input[type="reset"],
input.checkbox,
input[type=checkbox],
input.radio,
input[type=radio] {
float: right;
}
.g-right,
.ui-icon-right .ui-icon {
float: left;
}
.g-inline li {
margin-right: 1em;
}
.g-inline li.g-first {
margin-right: 0;
}
.g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
input.checkbox,
input[type="checkbox"],
input.radio,
input[type="radio"] {
margin-right: 0;
margin-left: .4em;
}
#g-add-comment {
right: inherit;
left: 0;
}
.ui-icon-left .ui-icon {
margin-left: .2em;
}
.ui-icon-right .ui-icon {
margin-right: .2em;
}
.g-group h4 {
padding: .5em .5em .5em 0;
}
.g-group .g-user {
padding: .2em .5em 0 0;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-right,
.ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-left,
.ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.sf-menu a {
border-left: none;
border-right:1px solid #<?= $borderColorContent ?>;
}
.sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.sf-sub-indicator {
background: url("themeroller/images/ui-icons_<?= $fcDefault ?>_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */
left: .75em !important;
right: auto;
}
a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
right: 0;
left: auto;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.sf-shadow ul {
background: url('../images/superfish-shadow.png') no-repeat bottom left;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.ui-dialog .ui-dialog-title {
float: right;
}
.ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
.ui-tabs .ui-tabs-nav li {
float: right;
}
#g-content #g-album-grid .g-item,
#g-site-theme,
#g-admin-theme,
.g-selected img,
.g-available .g-block img,
#g-content #g-photo-stream .g-item,
li.g-group,
#g-server-add-admin {
float: right;
}
#g-admin-graphics .g-available .g-block {
float: right;
margin-left: 1em;
margin-right: 0em;
}
#g-site-admin-menu {
left: auto;
right: 150px;
}
#g-header #g-login-menu {
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
.g-selected img,
.g-available .g-block img {
margin: 0 0 1em 1em;
}
.g-button {
margin: 0 0 0 4px;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator .g-info {
width: 35%;
}
.g-paginator .g-text-right {
margin-left: 0;
}
.g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
#g-header #g-login-menu,
#g-header #g-quick-search-form {
clear: left;
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-site-menu {
left: auto;
right: 240px;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
#g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
#g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}

View File

@ -13,7 +13,6 @@
* 7) Navigation and menus
* 8) jQuery and jQuery UI
* 9) Module color overrides
* 10) Right-to-left language styles
*
* @todo Review g-buttonset-vertical
*/
@ -98,7 +97,16 @@ a:hover,
text-decoration: none;
}
/* Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
ul.g-text li,
.g-text ul li {
list-style-type: disc;
margin-left: 1em;
}
/* Forms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
form {
margin: 0;
}
@ -415,11 +423,6 @@ th {
background-color: #<?= $bgColorContent ?>;
}
ul.enumeration li {
list-style-type: disc;
margin-left: 20px;
}
/*** ******************************************************************
* 3) Page layout containers
*********************************************************************/
@ -1126,303 +1129,3 @@ a > .sf-sub-indicator {
.g-default-group .g-user {
color: #<?= $fcDefault ?> !important;
}
/** *******************************************************************
* 10) Right to left styles
*********************************************************************/
.rtl {
direction: rtl;
}
.rtl #g-header,
.rtl #g-content,
.rtl #g-sidebar,
.rtl #g-footer,
.rtl caption,
.rtl th,
.rtl #g-dialog,
.rtl .g-context-menu li a,
.rtl .g-message-box li,
.rtl #g-site-status li {
text-align: right;
}
.rtl .g-text-right {
text-align: left;
}
.rtl .g-error,
.rtl .g-info,
.rtl .g-success,
.rtl .g-warning,
.rtl #g-add-photos-status .g-success,
.rtl #g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
.rtl form li.g-error,
.rtl form li.g-info,
.rtl form li.g-success,
.rtl form li.g-warning {
padding-right: 0 !important;
}
.rtl .g-left,
.rtl .g-inline li,
.rtl #g-content #g-album-grid .g-item,
.rtl .sf-menu li,
.rtl .g-breadcrumbs li,
.rtl .g-paginator li,
.rtl .g-buttonset li,
.rtl .ui-icon-left .ui-icon,
.rtl .g-short-form li,
.rtl form ul ul li,
.rtl input[type="submit"],
.rtl input[type="reset"],
.rtl input.checkbox,
.rtl input[type=checkbox],
.rtl input.radio,
.rtl input[type=radio] {
float: right;
}
.rtl .g-right,
.rtl .ui-icon-right .ui-icon {
float: left;
}
.rtl .g-inline li {
margin-right: 1em;
}
.rtl .g-inline li.g-first {
margin-right: 0;
}
.rtl .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.rtl .g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
.rtl input.checkbox {
margin-left: .4em;
}
.rtl #g-add-comment {
right: inherit;
left: 0;
}
.rtl .ui-icon-left .ui-icon {
margin-left: .2em;
}
.rtl .ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-right,
.rtl .ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-left,
.rtl .ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .sf-menu a {
border-left: none;
border-right:1px solid #<?= $borderColorContent ?>;
}
.rtl .sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.rtl .sf-sub-indicator {
background: url("themeroller/images/ui-icons_<?= $fcDefault ?>_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */
left: .75em !important;
right: auto;
}
.rtl a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
.rtl a:focus > .sf-sub-indicator,
.rtl a:hover > .sf-sub-indicator,
.rtl a:active > .sf-sub-indicator,
.rtl li:hover > a > .sf-sub-indicator,
.rtl li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.rtl .sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.rtl .sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.rtl .sf-menu ul a:focus > .sf-sub-indicator,
.rtl .sf-menu ul a:hover > .sf-sub-indicator,
.rtl .sf-menu ul a:active > .sf-sub-indicator,
.rtl .sf-menu ul li:hover > a > .sf-sub-indicator,
.rtl .sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.rtl .sf-menu li:hover ul,
.rtl .sf-menu li.sfHover ul {
right: 0;
left: auto;
}
.rtl ul.sf-menu li li:hover ul,
.rtl ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
.rtl ul.sf-menu li li li:hover ul,
.rtl ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.rtl .sf-shadow ul {
background: url('../images/superfish-shadow.png') no-repeat bottom left;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.rtl .ui-dialog .ui-dialog-title {
float: right;
}
.rtl .ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
.rtl #g-content #g-album-grid .g-item,
.rtl #g-site-theme,
.rtl #g-admin-theme,
.rtl .g-selected img,
.rtl .g-available .g-block img,
.rtl #g-content #g-photo-stream .g-item,
.rtl li.g-group,
.rtl #g-server-add-admin {
float: right;
}
.rtl #g-admin-graphics .g-available .g-block {
float: right;
margin-left: 1em;
margin-right: 0em;
}
.rtl #g-site-admin-menu {
left: auto;
right: 150px;
}
.rtl #g-header #g-login-menu {
float: left;
}
.rtl #g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
.rtl .g-selected img,
.rtl .g-available .g-block img {
margin: 0 0 1em 1em;
}

View File

@ -0,0 +1,320 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
/**
* Gallery 3 <?= $display_name ?> right to left language styles
*/
.rtl {
direction: rtl;
}
#g-header,
#g-content,
#g-sidebar,
#g-footer,
caption,
th,
#g-dialog,
.g-context-menu li a,
.g-message-box li,
#g-site-status li {
text-align: right;
}
.g-text-right {
text-align: left;
}
.g-error,
.g-info,
.g-success,
.g-warning,
#g-add-photos-status .g-success,
#g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
form li.g-error,
form li.g-info,
form li.g-success,
form li.g-warning {
padding-right: 0 !important;
}
.g-left,
.g-inline li,
#g-content #g-album-grid .g-item,
.sf-menu li,
.g-breadcrumbs li,
.g-paginator li,
.g-buttonset li,
.ui-icon-left .ui-icon,
.g-short-form li,
form ul ul li,
input[type="submit"],
input[type="reset"],
input.checkbox,
input[type=checkbox],
input.radio,
input[type=radio] {
float: right;
}
.g-right,
.ui-icon-right .ui-icon {
float: left;
}
.g-inline li {
margin-right: 1em;
}
.g-inline li.g-first {
margin-right: 0;
}
.g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
input.checkbox {
margin-left: .4em;
}
#g-add-comment {
right: inherit;
left: 0;
}
.ui-icon-left .ui-icon {
margin-left: .2em;
}
.ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-right,
.ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-left,
.ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.sf-menu a {
border-left: none;
border-right:1px solid #<?= $borderColorHighlight ?>;
}
.sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.sf-sub-indicator {
left: .75em !important;
right: auto;
background: url("themeroller/images/ui-icons_<?= $iconColorHighlight ?>_256x240.png") no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
right: 0;
left: auto;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.ui-dialog .ui-dialog-title {
float: right;
}
.ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator .g-info {
width: 35%;
}
.g-paginator .g-text-right {
margin-left: 0;
}
.g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
#g-header #g-login-menu,
#g-header #g-quick-search-form {
clear: left;
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-site-menu {
left: auto;
right: 150px;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
#g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
#g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}

View File

@ -15,7 +15,6 @@
* 8) jQuery and jQuery UI
* 9) Organize module style
* 10) Tag module styles
* 11) Right-to-left language styles
*/
/** *******************************************************************
@ -1217,323 +1216,3 @@ div#g-action-status {
color: #f30;
text-decoration: underline;
}
/** *******************************************************************
* 11) Right to left language styles
*********************************************************************/
.rtl {
direction: rtl;
}
.rtl #g-header,
.rtl #g-content,
.rtl #g-sidebar,
.rtl #g-footer,
.rtl caption,
.rtl th,
.rtl #g-dialog,
.rtl .g-context-menu li a,
.rtl .g-message-box li,
.rtl #g-site-status li {
text-align: right;
}
.rtl .g-text-right {
text-align: left;
}
.rtl .g-error,
.rtl .g-info,
.rtl .g-success,
.rtl .g-warning,
.rtl #g-add-photos-status .g-success,
.rtl #g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
.rtl form li.g-error,
.rtl form li.g-info,
.rtl form li.g-success,
.rtl form li.g-warning {
padding-right: 0 !important;
}
.rtl .g-left,
.rtl .g-inline li,
.rtl #g-content #g-album-grid .g-item,
.rtl .sf-menu li,
.rtl .g-breadcrumbs li,
.rtl .g-paginator li,
.rtl .g-buttonset li,
.rtl .ui-icon-left .ui-icon,
.rtl .g-short-form li,
.rtl form ul ul li,
.rtl input[type="submit"],
.rtl input[type="reset"],
.rtl input.checkbox,
.rtl input[type=checkbox],
.rtl input.radio,
.rtl input[type=radio] {
float: right;
}
.rtl .g-right,
.rtl .ui-icon-right .ui-icon {
float: left;
}
.rtl .g-inline li {
margin-right: 1em;
}
.rtl .g-inline li.g-first {
margin-right: 0;
}
.rtl .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.rtl .g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
.rtl input.checkbox {
margin-left: .4em;
}
.rtl #g-add-comment {
right: inherit;
left: 0;
}
.rtl .ui-icon-left .ui-icon {
margin-left: .2em;
}
.rtl .ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-right,
.rtl .ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-left,
.rtl .ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .sf-menu a {
border-left: none;
border-right:1px solid #<?= $borderColorHighlight ?>;
}
.rtl .sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.rtl .sf-sub-indicator {
left: .75em !important;
right: auto;
background: url("themeroller/images/ui-icons_<?= $iconColorHighlight ?>_256x240.png") no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
.rtl a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
.rtl a:focus > .sf-sub-indicator,
.rtl a:hover > .sf-sub-indicator,
.rtl a:active > .sf-sub-indicator,
.rtl li:hover > a > .sf-sub-indicator,
.rtl li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.rtl .sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.rtl .sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.rtl .sf-menu ul a:focus > .sf-sub-indicator,
.rtl .sf-menu ul a:hover > .sf-sub-indicator,
.rtl .sf-menu ul a:active > .sf-sub-indicator,
.rtl .sf-menu ul li:hover > a > .sf-sub-indicator,
.rtl .sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.rtl .sf-menu li:hover ul,
.rtl .sf-menu li.sfHover ul {
right: 0;
left: auto;
}
.rtl ul.sf-menu li li:hover ul,
.rtl ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
.rtl ul.sf-menu li li li:hover ul,
.rtl ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.rtl .sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.rtl .ui-dialog .ui-dialog-title {
float: right;
}
.rtl .ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-paginator .g-info {
width: 35%;
}
.rtl .g-paginator .g-text-right {
margin-left: 0;
}
.rtl .g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.rtl .g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.rtl .g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.rtl .g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
.rtl #g-header #g-login-menu,
.rtl #g-header #g-quick-search-form {
clear: left;
float: left;
}
.rtl #g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
.rtl #g-site-menu {
left: auto;
right: 150px;
}
.rtl #g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
.rtl #g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
.rtl #g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}

View File

@ -1,9 +1,12 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
name = "<?= $display_name ?>"
description = "<?= $description ?>"
name = <?= $display_name->for_js() . "\n" ?>
description = <?= $description->for_js() . "\n" ?>
version = 1
author = "<?= $user_name ?>"
site = "<?= !$is_admin ? 1 : 0?>"
admin = "<?= $is_admin ? 1 : 0?>"
author = <?= $user_name->for_js() . "\n" ?>
site = <?= (!$is_admin ? 1 : 0) . "\n"?>
admin = <?= ($is_admin ? 1 : 0) . "\n"?>
author_url = <?= $user_name->for_js() . "\n" ?>
info_url = <?= $info_url->for_js() . "\n" ?>
discuss_url = <?= $discuss_url->for_js() . "\n" ?>
; definition = <?= $definition ?>

View File

@ -0,0 +1,7 @@
name = "Win Platform"
description = "An alternate version of Gallery's admin dashboard platform information block for unsupported configurations."
version = 1
author_name = "rWatcher"
author_url = "http://codex.gallery2.org/User:RWatcher"
info_url = "http://codex.gallery2.org/Gallery3:Modules:win_platform"
discuss_url = "http://gallery.menalto.com/node/102809"

View File

@ -0,0 +1,28 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<ul>
<li>
<?= t("Host name: %host_name", array("host_name" => php_uname("n"))) ?>
</li>
<li>
<?= t("Operating system: %os %version", array("os" => php_uname("s"), "version" => php_uname("r"))) ?>
</li>
<li>
<?php if (function_exists("apache_get_version")): ?>
<?= t("Apache: %apache_version", array("apache_version" => function_exists("apache_get_version") ? apache_get_version() : t("Unknown"))) ?>
<?php else: ?>
<?= t("Server software: %apache_version", array("apache_version" => getenv("SERVER_SOFTWARE") != "" ? getenv("SERVER_SOFTWARE") : t("Unknown"))) ?>
<?php endif; ?>
</li>
<li>
<?= t("PHP: %php_version", array("php_version" => phpversion())) ?>
</li>
<li>
<?= t("MySQL: %mysql_version", array("mysql_version" => Database::instance()->query("SELECT version() as v")->current()->v)) ?>
</li>
<li>
<?= t("Server load: %load_average", array("load_average" => function_exists("sys_getloadavg") ? sys_getloadavg() : t("Unknown"))) ?>
</li>
<li>
<?= t("Graphics toolkit: %toolkit", array("toolkit" => module::get_var("gallery", "graphics_toolkit"))) ?>
</li>
</ul>

View File

@ -0,0 +1,401 @@
/**
* Gallery 3 Browny Admin Wind Theme Right-to-Left Screen Styles
*/
.rtl {
direction: rtl;
}
#g-header,
#g-content,
#g-sidebar,
#g-footer,
caption,
th,
#g-dialog,
.g-context-menu li a,
.g-message-box li,
#g-site-status li {
text-align: right;
}
.g-text-right {
text-align: left;
}
/* Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-text li,
.g-text li {
margin-left: 0;
margin-right: 1em;
}
/* Messages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-error,
.g-info,
.g-success,
.g-warning,
#g-add-photos-status .g-success,
#g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
form li.g-error,
form li.g-info,
form li.g-success,
form li.g-warning {
padding-right: 0 !important;
}
.g-left,
.g-inline li,
#g-content #g-album-grid .g-item,
.sf-menu li,
.g-breadcrumbs li,
.g-paginator li,
.g-buttonset li,
.ui-icon-left .ui-icon,
.g-short-form li,
form ul ul li,
input[type="submit"],
input[type="reset"],
input.checkbox,
input[type=checkbox],
input.radio,
input[type=radio] {
float: right;
}
.g-right,
.ui-icon-right .ui-icon {
float: left;
}
.g-inline li {
margin-right: 1em;
}
.g-inline li.g-first {
margin-right: 0;
}
.g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.gif') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
input.checkbox,
input[type="checkbox"],
input.radio,
input[type="radio"] {
margin-right: 0;
margin-left: .4em;
}
#g-add-comment {
right: inherit;
left: 0;
}
.ui-icon-left .ui-icon {
margin-left: .2em;
}
.ui-icon-right .ui-icon {
margin-right: .2em;
}
.g-group h4 {
padding: .5em .5em .5em 0;
}
.g-group .g-user {
padding: .2em .5em 0 0;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-right,
.ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-left,
.ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.sf-menu a {
border-left: none;
border-right:1px solid #fff;
}
.sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.sf-sub-indicator {
left: .75em !important;
right: auto;
background: url('../../../lib/superfish/images/arrows-ffffff-rtl.png') no-repeat -10px -100px;
}
a > .sf-sub-indicator {
top: .8em;
background-position: -10px -100px;
}
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px;
}
.sf-menu ul .sf-sub-indicator {
background-position: 0 0;
}
.sf-menu ul a > .sf-sub-indicator {
background-position: -10px 0;
}
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0;
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
right: 0;
left: auto;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
right: 12em;
left: auto;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
right: 12em;
left: auto;
}
.sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.ui-dialog .ui-dialog-title {
float: right;
}
.ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
.ui-tabs .ui-tabs-nav li {
float: right;
}
#g-content #g-album-grid .g-item,
#g-site-theme,
#g-admin-theme,
.g-selected img,
.g-available .g-block img,
#g-content #g-photo-stream .g-item,
li.g-group,
#g-server-add-admin {
float: right;
}
#g-site-theme {
margin-right: 0;
margin-left: 1em;
}
#g-admin-graphics .g-available .g-block {
float: right;
margin-left: 1em;
margin-right: 0em;
}
#g-site-admin-menu {
left: auto;
right: 240px;
}
#g-header #g-login-menu {
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-sidebar .g-block-content {
padding-left: 0em;
padding-right: 1em;
}
.g-selected img,
.g-available .g-block img {
margin: 0 0 1em 1em;
}
.g-button {
margin: 0 0 0 4px;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator .g-info {
width: 35%;
}
.g-paginator .g-text-right {
margin-left: 0;
}
.g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
#g-header #g-login-menu,
#g-header #g-quick-search-form {
clear: left;
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-site-menu {
left: auto;
right: 240px;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
#g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
#g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}

View File

@ -4,23 +4,30 @@
* @requires YUI reset, font, grids CSS
*
* Sheet organization:
* 1) Basic HTML elements
* 2) Reusable content blocks
* 3) Page layout containers
* 4) Content blocks in specific layout containers
* 5) States and interactions
* 6) Positioning and order
* 7) Navigation and menus
* 8) ThemeRoller
* 9) jQuery and jQuery UI
* 10) Right-to-left language styles
* 11) More Browny
* 0) Pre Overrides
* 1) Basic HTML elements
* 2) Reusable content blocks
* 3) Page layout containers
* 4) Content blocks in specific layout containers
* 5) States and interactions
* 6) Positioning and order
* 7) Navigation and menus
* 8) jQuery and jQuery UI
* 9) More Browny
*
* @todo Review g-buttonset-vertical
*/
/** *******************************************************************
* 1) Basic HTML elements
* 0) Pre Overrides
**********************************************************************/
/* ThemeRoller overrides ~~~~~~~~~~~~~~ */
@import "themeroller/ui.tabs.css";
/** *******************************************************************
* 1) Basic HTML elements
**********************************************************************/
/* ~browny~ */
@ -29,6 +36,21 @@ body, html {
font-family: 'Century gothic', Verdana, 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
.ui-widget {
font-family: 'Century gothic', Verdana, 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
font-family: 'Century gothic', Verdana, 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
select,
input,
button,
textarea {
font: 99% 'Century gothic', Verdana, Arial, Helvetica, Clean, sans-serif;
}
p {
margin-bottom: 1em;
text-shadow: 0px 1px 1px #F7F5F0;
@ -67,13 +89,6 @@ h3 {
font-size: 1.2em;
}
select,
input,
button,
textarea {
font: 99% 'Century gothic', Verdana, Arial, Helvetica, Clean, sans-serif;
}
#l10n-client h2 {
text-shadow: none;
}
@ -104,7 +119,25 @@ a:hover,
text-decoration: none;
}
/* Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
ul.g-text li,
.g-text ul li {
list-style-type: disc;
}
ol.g-text li,
.g-text ol li {
list-style-type: decimal;
}
.g-text li,
.g-text li {
margin-left: 1em;
}
/* Forms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
form {
margin: 0;
}
@ -284,22 +317,6 @@ fieldset {
margin-bottom: 0;
}
fieldset {
margin-bottom: 1em;
}
#g-content form ul li {
padding: .4em 0;
}
#g-dialog form {
width: 270px;
}
#g-dialog fieldset {
margin-bottom: 0;
}
/* Tables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
table {
@ -328,8 +345,22 @@ th {
white-space: nowrap;
}
/* Text ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-text-small {
font-size: .8em;
}
.g-text-big {
font-size: 1.2em;
}
.g-text-right {
text-align: right;
}
/** *******************************************************************
* 2) Reusable content blocks
* 2) Reusable content blocks
*********************************************************************/
.g-block,
@ -393,7 +424,8 @@ th {
.g-unavailable {
border-color: #999;
opacity: 0.4;
color: black;
opacity: .6;
}
.g-info td {
@ -401,10 +433,6 @@ th {
background-image: none;
}
#g-maintenance-mode ul.g-message-block {
margin-top: .5em;
}
.g-success td {
background-color: transparent;
background-image: none;
@ -427,15 +455,12 @@ th {
background-color: #fff;
}
ul.enumeration li {
list-style-type: disc;
margin-left: 20px;
}
/*** ******************************************************************
* 3) Page layout containers
* 3) Page layout containers
*********************************************************************/
/* Dimension and scale ~~~~~~~~~~~~~~~~~~~ */
.g-one-quarter {
width: 25%;
}
@ -512,7 +537,7 @@ ul.enumeration li {
}
/** *******************************************************************
* 4) Content blocks in specific layout containers
* 4) Content blocks in specific layout containers
*********************************************************************/
/* Header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@ -607,7 +632,7 @@ ul.enumeration li {
margin-right: 1em;
}
/* Block admin ~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* Block admin ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-admin-blocks-list {
float: left;
@ -633,12 +658,14 @@ ul.enumeration li {
padding: .3em .8em;
}
/* In-line editing ~~~~~~~~~~~~~~~~~~~~ */
/* In-line editing ~~~~~~~~~~~~~~~~~~~~~~ */
#g-in-place-edit-message {
background-color: #FFF;
}
/* Language options ~~~~~~~~~~~~~~~~~~~~~~~~ */
/* Language options ~~~~~~~~~~~~~~~~~~~~~ */
#g-share-translations-form fieldset {
border: 0px;
margin: 0px;
@ -823,7 +850,7 @@ form .g-error {
}
/** *******************************************************************
* 7) Navigation and menus
* 7) Navigation and menus
*********************************************************************/
/* Site Menu ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@ -840,16 +867,9 @@ form .g-error {
}
/** *******************************************************************
* 8) ThemeRoller Theme
**********************************************************************/
/* ~browny~ */
/* ThemeRoller overrides ~~~~~~~~~~~~~~ */
@import "themeroller/ui.tabs.css";
/** *******************************************************************
* 9) jQuery and jQuery UI
* 8) jQuery and jQuery UI
*********************************************************************/
/* Generic block container ~~~~~~~~~~~~~~~ */
.g-block {
@ -923,16 +943,16 @@ button {
display: inline-block;
}
/* Status and validation messages ~~~~ */
/* Status and validation messages ~~~~~~~~~ */
.g-message-block {
background-position: .4em .3em;
border: 1px solid #ccc;
padding: 0;
margin-bottom: 1em;
}
#g-action-status {
margin-bottom: 1em;
}
#g-action-status li,
@ -1002,7 +1022,7 @@ div#g-action-status {
width: 40%;
}
/* Dialogs and panels ~~~~~~~~~~~~~~~~~~ */
/* Dialogs and panels ~~~~~~~~~~~~~~~~~~~~ */
#g-dialog {
text-align: left;
@ -1021,7 +1041,7 @@ div#g-action-status {
padding: 1em;
}
/* Inline layout ~~~~~~~~~~ */
/* Inline layout ~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-inline li {
float: left;
@ -1033,19 +1053,20 @@ div#g-action-status {
margin-left: 0;
}
/* Superfish menu overrides ~~~~~~~~~~~ */
/* Superfish menu overrides ~~~~~~~~~~~~~~ */
.sf-menu ul {
width: 12em;
width: 12em;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
left: 12em;
left: 12em;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
left: 12em;
left: 12em;
}
/* ~browny~ */
@ -1061,13 +1082,13 @@ ul.sf-menu li li li.sfHover ul {
/* ~browny~ */
.sf-menu a {
border-top: 1px solid #e0cbae;
border-top: 1px solid #e0cbae;
}
/* ~browny~ */
.sf-menu li {
background: #d3b07e url('../images/ui-bg_highlight-soft_45_d3b07e_1x100.png') 50% 50% repeat-x;
text-shadow: 0px 1px 1px #fff;
background: #d3b07e url('../images/ui-bg_highlight-soft_45_d3b07e_1x100.png') 50% 50% repeat-x;
text-shadow: 0px 1px 1px #fff;
}
/* ~browny~ */
@ -1076,11 +1097,16 @@ ul.sf-menu li li li.sfHover ul {
.sf-menu a:focus,
.sf-menu a:hover,
.sf-menu a:active {
background: #e0cbae;
background: #e0cbae;
}
/* jQuery UI Dialog ~~~~~~~~~~~~~~~~~~~ */
.ui-widget-overlay {
background: #000;
opacity: .7;
}
#g-admin-dashboard .ui-state-highlight,
#g-sidebar .ui-state-highlight {
height: 2em;
@ -1100,326 +1126,18 @@ ul.sf-menu li li li.sfHover ul {
text-shadow: 0px 1px 1px #fff;
}
.ui-widget {
font-family: 'Century gothic', Verdana, 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
font-family: 'Century gothic', Verdana, 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
}
/** *******************************************************************
* 10) Right to left styles
*********************************************************************/
.rtl {
direction: rtl;
}
.rtl #g-header,
.rtl #g-content,
.rtl #g-sidebar,
.rtl #g-footer,
.rtl caption,
.rtl th,
.rtl #g-dialog,
.rtl .g-context-menu li a,
.rtl .g-message-box li,
.rtl #g-site-status li {
text-align: right;
}
.rtl .g-text-right {
text-align: left;
}
.rtl .g-error,
.rtl .g-info,
.rtl .g-success,
.rtl .g-warning,
.rtl #g-add-photos-status .g-success,
.rtl #g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
.rtl form li.g-error,
.rtl form li.g-info,
.rtl form li.g-success,
.rtl form li.g-warning {
padding-right: 0 !important;
}
.rtl .g-left,
.rtl .g-inline li,
.rtl #g-content #g-album-grid .g-item,
.rtl .sf-menu li,
.rtl .g-breadcrumbs li,
.rtl .g-paginator li,
.rtl .g-buttonset li,
.rtl .ui-icon-left .ui-icon,
.rtl .g-short-form li,
.rtl form ul ul li,
.rtl input[type="submit"],
.rtl input[type="reset"],
.rtl input.checkbox,
.rtl input[type=checkbox],
.rtl input.radio,
.rtl input[type=radio] {
float: right;
}
.rtl .g-right,
.rtl .ui-icon-right .ui-icon {
float: left;
}
.rtl .g-inline li {
margin-right: 1em;
}
.rtl .g-inline li.g-first {
margin-right: 0;
}
.rtl .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.gif') no-repeat scroll right center;
padding: 1em 18px 1em 8px;
}
.rtl .g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
.rtl input.checkbox {
margin-left: .4em;
}
.rtl #g-add-comment {
right: inherit;
left: 0;
}
.rtl .ui-icon-left .ui-icon {
margin-left: .2em;
}
.rtl .ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-right,
.rtl .ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-left,
.rtl .ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .sf-menu a {
border-left: none;
border-right:1px solid #fff;
}
.rtl .sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.rtl .sf-sub-indicator {
left: .75em !important;
right: auto;
background: url('../../../lib/superfish/images/arrows-ffffff-rtl.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
.rtl a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
.rtl a:focus > .sf-sub-indicator,
.rtl a:hover > .sf-sub-indicator,
.rtl a:active > .sf-sub-indicator,
.rtl li:hover > a > .sf-sub-indicator,
.rtl li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.rtl .sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.rtl .sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.rtl .sf-menu ul a:focus > .sf-sub-indicator,
.rtl .sf-menu ul a:hover > .sf-sub-indicator,
.rtl .sf-menu ul a:active > .sf-sub-indicator,
.rtl .sf-menu ul li:hover > a > .sf-sub-indicator,
.rtl .sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.rtl .sf-menu li:hover ul,
.rtl .sf-menu li.sfHover ul {
right: 0;
left: auto;
}
.rtl ul.sf-menu li li:hover ul,
.rtl ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
.rtl ul.sf-menu li li li:hover ul,
.rtl ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.rtl .sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.rtl .ui-dialog .ui-dialog-title {
float: right;
}
.rtl .ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
.rtl #g-content #g-album-grid .g-item,
.rtl #g-site-theme,
.rtl #g-admin-theme,
.rtl .g-selected img,
.rtl .g-available .g-block img,
.rtl #g-content #g-photo-stream .g-item,
.rtl li.g-group,
.rtl #g-server-add-admin {
float: right;
}
.rtl #g-admin-graphics .g-available .g-block {
float: right;
margin-left: 1em;
margin-right: 0em;
}
.rtl #g-site-admin-menu {
left: auto;
right: 240px;
}
.rtl #g-header #g-login-menu {
float: left;
}
.rtl #g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
/* ~browny~ */
.rtl .g-selected img,
.rtl .g-available .g-block img {
margin: 0 0 1em 1em;
}
/** *******************************************************************
* 11) More Browny (Extra overrides for better Browny look)
* 9) More Browny (Extra overrides for better Browny look)
*********************************************************************/
/* /lib/gallery.common.css ~~~~~~~~~~~~ */
.g-success {
background: #fcf9ce url('../images/ico-success.png') no-repeat .4em 50%
background: #fcf9ce url('../images/ico-success.png') no-repeat .4em 50%
}
.g-even {
background: transparent;
background: transparent;
}
.g-odd {

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -1,10 +1,10 @@
name = "Browny Wind"
description = "The default Wind Admin theme with a browny style."
version = 1
author = "Ma'moun M. Diraneyya"
author = "Mamouneyya"
admin = 1
site = 0
author_name = ""
author_name = "Ma'moun Diraneyya"
author_url = ""
info_url = "http://codex.gallery2.org/Gallery3:Themes:browny_admin_wind"
discuss_url = "http://gallery.menalto.com/forum_theme_browny_admin_wind"
discuss_url = "http://gallery.menalto.com/node/95007"

View File

@ -1,9 +1,10 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" <?= $theme->html_attributes() ?> xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<? $theme->start_combining("script,css") ?>
<title>
<? if ($page_title): ?>
<?= t("Gallery Admin: %page_title", array("page_title" => $page_title)) ?>
@ -11,31 +12,46 @@
<?= t("Admin dashboard") ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>" type="image/x-icon" />
<link rel="shortcut icon"
href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>"
type="image/x-icon" />
<link rel="apple-touch-icon-precomposed"
href="<?= url::file(module::get_var("gallery", "apple_touch_icon_url")) ?>" />
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
<?= $theme->script("gallery.common.js") ?>
<? /* MSG_CANCEL is required by gallery.dialog.js */ ?>
<script type="text/javascript">
var MSG_CANCEL = <?= t("Cancel")->for_js() ?>;
</script>
<?= $theme->script("gallery.ajax.js") ?>
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("jquery.scrollTo.js") ?>
<?= $theme->admin_head() ?>
<? /* Theme specific CSS/JS goes last so that it can override module CSS/JS */ ?>
<?= $theme->script("ui.init.js") ?>
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("screen.css") ?>
<? if (locales::is_rtl()): ?>
<?= $theme->css("screen-rtl.css") ?>
<? endif; ?>
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("fix-ie.css") ?>"
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
<?= $theme->script("gallery.common.js") ?>
<? /* MSG_CANCEL is required by gallery.dialog.js */ ?>
<script type="text/javascript">
var MSG_CANCEL = <?= t("Cancel")->for_js() ?>;
</script>
<?= $theme->script("gallery.ajax.js") ?>
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("ui.init.js") ?>
<!-- LOOKING FOR YOUR CSS? It's all been combined into the link below -->
<?= $theme->get_combined("css") ?>
<?= $theme->admin_head() ?>
<!-- LOOKING FOR YOUR JAVASCRIPT? It's all been combined into the link below -->
<?= $theme->get_combined("script") ?>
</head>
<body <?= $theme->body_attributes() ?>>

View File

@ -1,44 +0,0 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<? // See http://docs.kohanaphp.com/libraries/pagination ?>
<ul class="g-paginator">
<? /* @todo This message isn't easily localizable */
$from_to_msg = t2("Item %from_number of %count",
"Items %from_number - %to_number of %count",
$total_items,
array("from_number" => $current_first_item,
"to_number" => $current_last_item,
"count" => $total_items)) ?>
<li>
<? if ($first_page): ?>
<a href="<?= str_replace('{page}', 1, $url) ?>" class="g-button ui-icon-left ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-first"></span><?= t("First") ?></a>
<? else: ?>
<a class="g-button ui-icon-left ui-state-disabled ui-corner-all">
<span class="ui-icon ui-icon-seek-first"></span><?= t("First") ?></a>
<? endif ?>
<? if ($previous_page): ?>
<a href="<?= str_replace('{page}', $previous_page, $url) ?>" class="g-button ui-icon-left ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-prev"></span><?= t("Previous") ?></a>
<? else: ?>
<a class="g-button ui-icon-left ui-state-disabled ui-corner-all">
<span class="ui-icon ui-icon-seek-prev"></span><?= t("Previous") ?></a>
<? endif ?>
</li>
<li class="g-info"><?= $from_to_msg ?></li>
<li class="g-text-right">
<? if ($next_page): ?>
<a href="<?= str_replace('{page}', $next_page, $url) ?>" class="g-button ui-icon-right ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-next"></span><?= t("Next") ?></a>
<? else: ?>
<a class="g-button ui-state-disabled ui-icon-right ui-corner-all">
<span class="ui-icon ui-icon-seek-next"></span><?= t("Next") ?></a>
<? endif ?>
<? if ($last_page): ?>
<a href="<?= str_replace('{page}', $last_page, $url) ?>" class="g-button ui-icon-right ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-end"></span><?= t("Last") ?></a>
<? else: ?>
<a class="g-button ui-state-disabled ui-icon-right ui-corner-all">
<span class="ui-icon ui-icon-seek-end"></span><?= t("Last") ?></a>
<? endif ?>
</li>
</ul>

View File

@ -0,0 +1,88 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?
// This is a generic paginator for admin collections. Depending on the page type, there are
// different sets of variables available. With this data, you can make a paginator that
// lets you say "You're viewing photo 5 of 35", or "You're viewing photos 10 - 18 of 37"
// for album views.
//
// Available variables for all page types:
// $page_type - "collection", "item", or "other"
// $page_subtype - "album", "movie", "photo", "tag", etc.
// $previous_page_url - the url to the previous page, if there is one
// $next_page_url - the url to the next page, if there is one
// $total - the total number of photos in this album
//
// Available for the "collection" page types:
// $page - what page number we're on
// $max_pages - the maximum page number
// $page_size - the page size
// $first_page_url - the url to the first page, or null if we're on the first page
// $last_page_url - the url to the last page, or null if we're on the last page
// $first_visible_position - the position number of the first visible photo on this page
// $last_visible_position - the position number of the last visible photo on this page
//
// Available for "item" page types:
// $position - the position number of this photo
//
?>
<? if ($total): ?>
<ul class="g-paginator ui-helper-clearfix">
<li class="g-first">
<? if ($page_type == "collection"): ?>
<? if (isset($first_page_url)): ?>
<a href="<?= $first_page_url ?>" class="g-button ui-icon-left ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-first"></span><?= t("First") ?></a>
<? else: ?>
<a class="g-button ui-icon-left ui-state-disabled ui-corner-all">
<span class="ui-icon ui-icon-seek-first"></span><?= t("First") ?></a>
<? endif ?>
<? endif ?>
<? if (isset($previous_page_url)): ?>
<a href="<?= $previous_page_url ?>" class="g-button ui-icon-left ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-prev"></span><?= t("Previous") ?></a>
<? else: ?>
<a class="g-button ui-icon-left ui-state-disabled ui-corner-all">
<span class="ui-icon ui-icon-seek-prev"></span><?= t("Previous") ?></a>
<? endif ?>
</li>
<li class="g-info">
<? if ($total): ?>
<? if ($page_type == "collection"): ?>
<?= /* @todo This message isn't easily localizable */
t2("Viewing %from_number of %count",
"Viewing %from_number - %to_number of %count",
$total,
array("from_number" => $first_visible_position,
"to_number" => $last_visible_position,
"count" => $total)) ?>
<? else: ?>
<?= t("%position of %total", array("position" => $position, "total" => $total)) ?>
<? endif ?>
<? endif ?>
</li>
<li class="g-text-right">
<? if (isset($next_page_url)): ?>
<a href="<?= $next_page_url ?>" class="g-button ui-icon-right ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-next"></span><?= t("Next") ?></a>
<? else: ?>
<a class="g-button ui-state-disabled ui-icon-right ui-corner-all">
<span class="ui-icon ui-icon-seek-next"></span><?= t("Next") ?></a>
<? endif ?>
<? if ($page_type == "collection"): ?>
<? if (isset($last_page_url)): ?>
<a href="<?= $last_page_url ?>" class="g-button ui-icon-right ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-seek-end"></span><?= t("Last") ?></a>
<? else: ?>
<a class="g-button ui-state-disabled ui-icon-right ui-corner-all">
<span class="ui-icon ui-icon-seek-end"></span><?= t("Last") ?></a>
<? endif ?>
<? endif ?>
</li>
</ul>
<? endif ?>

View File

@ -0,0 +1,393 @@
/**
* Gallery 3 Browny Wind Theme Right-to-Left Screen Styles
*/
.rtl {
direction: rtl;
}
#g-header,
#g-content,
#g-sidebar,
#g-footer,
caption,
th,
#g-dialog,
.g-context-menu li a,
.g-message-box li,
#g-site-status li {
text-align: right;
}
.g-text-right {
text-align: left;
}
/* Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-text li,
.g-text li {
margin-left: 0;
margin-right: 1em;
}
/* Messages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-error,
.g-info,
.g-success,
.g-warning,
#g-add-photos-status .g-success,
#g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
form li.g-error,
form li.g-info,
form li.g-success,
form li.g-warning {
padding-right: 0 !important;
}
.g-left,
.g-inline li,
#g-content #g-album-grid .g-item,
.sf-menu li,
.g-breadcrumbs li,
.g-paginator li,
.g-buttonset li,
.ui-icon-left .ui-icon,
.g-short-form li,
form ul ul li,
input[type="submit"],
input[type="reset"],
input.checkbox,
input[type=checkbox],
input.radio,
input[type=radio] {
float: right;
}
.g-right,
.ui-icon-right .ui-icon {
float: left;
}
.g-inline li {
margin-right: 1em;
}
.g-inline li.g-first {
margin-right: 0;
}
/* ~browny~ */
.g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.gif') no-repeat scroll right center;
padding: .5em 18px .5em 8px;
}
.g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
input.checkbox {
margin-left: .4em;
}
#g-add-comment {
right: inherit;
left: 0;
}
.ui-icon-left .ui-icon {
margin-left: .2em;
}
.ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-right,
.ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.g-buttonset .ui-corner-left,
.ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.sf-menu a {
border-left: none;
border-right:1px solid #fff;
}
.sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.sf-sub-indicator {
left: .75em !important;
right: auto;
background: url('../../../lib/superfish/images/arrows-ffffff-rtl.png') no-repeat -10px -100px;
}
a > .sf-sub-indicator {
top: .8em;
background-position: -10px -100px;
}
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px;
}
.sf-menu ul .sf-sub-indicator {
background-position: 0 0;
}
.sf-menu ul a > .sf-sub-indicator {
background-position: -10px 0;
}
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0;
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
right: 0;
left: auto;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
right: 12em;
left: auto;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
right: 12em;
left: auto;
}
.sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.ui-dialog .ui-dialog-title {
float: right;
}
.ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
.ui-tabs .ui-tabs-nav li {
float: right;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator .g-info {
width: 35%;
}
.g-paginator .g-text-right {
margin-left: 0;
}
.g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
#g-header #g-login-menu,
#g-header #g-quick-search-form {
clear: left;
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-site-menu {
left: auto;
right: 240px;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
#g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
#g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}
/* Browny ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-even {
text-align: left;
}
.g-odd {
text-align: right;
}
.uploadifyQueueItem .cancel {
float: left;
}
#g-user-profile .g-block h2 {
padding-right: .8em;
padding-left: auto;
}
#g-user-profile .g-avatar {
float: right;
right: 0em;
left: auto;
margin: 0em .6em 0em 0em;
}
#g-user-profile #g-comment-detail .g-author a {
float: right;
right: 0em;
left: auto;
margin-left: .6em;
margin-right: 0em;
}
#g-user-profile #g-comment-detail div {
margin-right: 5em;
margin-left: 0em;
}
#g-user-profile h1 {
margin: 1.25em 4.4em 2em 0em;
}
#g-content #g-comments .g-avatar {
float: right;
margin-left: .4em;
margin-right: 0;
}
#g-calendar-grid {
padding-right: 8px;
padding-left: 0px;
}

View File

@ -4,21 +4,28 @@
* @requires YUI reset, font, grids CSS
*
* Sheet organization:
* 1) Font sizes, base HTML elements
* 2) Reusable content blocks
* 3) Page layout containers
* 4) Content blocks in specific layout containers
* 5) States and interactions
* 6) Positioning and order
* 7) Navigation and menus
* 8) ThemeRoller
* 9) jQuery and jQuery UI
* 10) Right-to-left language styles
* 11) More Browny
* 0) Pre Overrides
* 1) Font sizes, base HTML elements
* 2) Reusable content blocks
* 3) Page layout containers
* 4) Content blocks in specific layout containers
* 5) States and interactions
* 6) Positioning and order
* 7) Navigation and menus
* 8) jQuery and jQuery UI
* 9) More Browny
*/
/** *******************************************************************
* 1) Font sizes, base HTML elements
* 0) Pre Overrides
**********************************************************************/
/* ThemeRoller overrides ~~~~~~~~~~~~~~ */
@import "themeroller/ui.tabs.css";
/** *******************************************************************
* 1) Font sizes, base HTML elements
**********************************************************************/
/* ~browny~ */
@ -39,6 +46,13 @@ body, html {
font-family: Cursive, Serif;
}
select,
input,
button,
textarea {
font: 99% 'Century gothic', Verdana, Arial, Helvetica, Clean, sans-serif;
}
p {
margin-bottom: 1em;
text-shadow: 0px 1px 1px #F7F5F0;
@ -100,13 +114,6 @@ h3 {
font-size: .7em;
}
select,
input,
button,
textarea {
font: 99% 'Century gothic', Verdana, Arial, Helvetica, Clean, sans-serif;
}
#l10n-client h2 {
text-shadow: none;
}
@ -144,7 +151,25 @@ a:hover,
padding-left: 32px;
}
/* Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
ul.g-text li,
.g-text ul li {
list-style-type: disc;
}
ol.g-text li,
.g-text ol li {
list-style-type: decimal;
}
.g-text li,
.g-text li {
margin-left: 1em;
}
/* Forms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
form {
margin: 0;
}
@ -335,6 +360,7 @@ td {
}
/* Text ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-text-small {
font-size: .8em;
}
@ -348,7 +374,7 @@ td {
}
/** *******************************************************************
* 2) Reusable content blocks
* 2) Reusable content blocks
*********************************************************************/
/* ~browny~ */
@ -362,10 +388,11 @@ td {
}
/*** ******************************************************************
* 3) Page layout containers
* 3) Page layout containers
*********************************************************************/
/* Dimension and scale ~~~~~~~~~~~~~~~~~~~ */
.g-one-quarter {
width: 25%;
}
@ -434,7 +461,7 @@ td {
}
/** *******************************************************************
* 4) Content blocks in specific layout containers
* 4) Content blocks in specific layout containers
*********************************************************************/
/* Header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@ -562,7 +589,8 @@ td {
background-color: #fff;
}
/* Permissions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* Permissions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-edit-permissions-form td {
background-image: none;
}
@ -675,11 +703,11 @@ tr.g-error td.g-error,
}
tr.g-success {
background-image: none;
background-image: none;
}
tr.g-success td.g-success {
background-image: url('../images/ico-success.png');
background-image: url('../images/ico-success.png');
}
.g-warning,
@ -767,7 +795,7 @@ form .g-error {
}
/** *******************************************************************
* 7) Navigation and menus
* 7) Navigation and menus
*********************************************************************/
/* Login menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@ -869,16 +897,7 @@ form .g-error {
}
/** *******************************************************************
* 8) ThemeRoller Theme
**********************************************************************/
/* ~browny~ */
/* ThemeRoller overrides ~~~~~~~~~~~~~~~~~ */
@import "themeroller/ui.tabs.css";
/** *******************************************************************
* 9) jQuery and jQuery UI
* 8) jQuery and jQuery UI
*********************************************************************/
/* Generic block container ~~~~~~~~~~~~~~~ */
@ -893,18 +912,19 @@ form .g-error {
}
/* Superfish menu overrides ~~~~~~~~~~~~~~ */
.sf-menu ul {
width: 12em;
width: 12em;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
left: 12em;
left: 12em;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
left: 12em;
left: 12em;
}
/* ~browny~ */
@ -915,13 +935,13 @@ ul.sf-menu li li li.sfHover ul {
/* ~browny~ */
.sf-menu li {
background: #d3b07e url('../images/ui-bg_highlight-soft_45_d3b07e_1x100.png') 50% 50% repeat-x;
text-shadow: 0px 1px 1px #fff;
background: #d3b07e url('../images/ui-bg_highlight-soft_45_d3b07e_1x100.png') 50% 50% repeat-x;
text-shadow: 0px 1px 1px #fff;
}
/* ~browny~ */
.sf-menu a {
border-top: 1px solid #e0cbae;
border-top: 1px solid #e0cbae;
}
/* ~browny~ */
@ -932,7 +952,7 @@ ul.sf-menu li li li.sfHover ul {
/* ~browny~ */
.sf-menu li:hover, .sf-menu li.sfHover,
.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
background: #e0cbae;
background: #e0cbae;
}
/* jQuery UI Dialog ~~~~~~~~~~~~~~~~~~~~~~ */
@ -1005,11 +1025,11 @@ button {
.g-progress-bar {
height: 1em;
width: 100%;
margin-top: .5em;
margin: .5em 0;
display: inline-block;
}
/* Status and validation messages ~~~~ */
/* Status and validation messages ~~~~~~~~ */
.g-message-block {
background-position: .4em .3em;
@ -1089,7 +1109,7 @@ div#g-action-status {
width: 40%;
}
/* Dialogs and panels ~~~~~~~~~~~~~~~~~~ */
/* Dialogs and panels ~~~~~~~~~~~~~~~~~~~~ */
#g-dialog {
text-align: left;
@ -1108,7 +1128,7 @@ div#g-action-status {
padding: 1em;
}
/* Inline layout ~~~~~~~~~~ */
/* Inline layout ~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-inline li {
float: left;
@ -1120,338 +1140,13 @@ div#g-action-status {
margin-left: 0;
}
/** *******************************************************************
* 10) Right to left language styles
*********************************************************************/
.rtl {
direction: rtl;
}
.rtl #g-header,
.rtl #g-content,
.rtl #g-sidebar,
.rtl #g-footer,
.rtl caption,
.rtl th,
.rtl #g-dialog,
.rtl .g-context-menu li a,
.rtl .g-message-box li,
.rtl #g-site-status li {
text-align: right;
}
.rtl .g-text-right {
text-align: left;
}
.rtl .g-error,
.rtl .g-info,
.rtl .g-success,
.rtl .g-warning,
.rtl #g-add-photos-status .g-success,
.rtl #g-add-photos-status .g-error {
background-position: center right;
padding-right: 30px !important;
}
.rtl form li.g-error,
.rtl form li.g-info,
.rtl form li.g-success,
.rtl form li.g-warning {
padding-right: 0 !important;
}
.rtl .g-left,
.rtl .g-inline li,
.rtl #g-content #g-album-grid .g-item,
.rtl .sf-menu li,
.rtl .g-breadcrumbs li,
.rtl .g-paginator li,
.rtl .g-buttonset li,
.rtl .ui-icon-left .ui-icon,
.rtl .g-short-form li,
.rtl form ul ul li,
.rtl input[type="submit"],
.rtl input[type="reset"],
.rtl input.checkbox,
.rtl input[type=checkbox],
.rtl input.radio,
.rtl input[type=radio] {
float: right;
}
.rtl .g-right,
.rtl .ui-icon-right .ui-icon {
float: left;
}
.rtl .g-inline li {
margin-right: 1em;
}
.rtl .g-inline li.g-first {
margin-right: 0;
}
/* ~browny~ */
.rtl .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.gif') no-repeat scroll right center;
padding: .5em 18px .5em 8px;
}
.rtl .g-breadcrumbs .g-first {
background: none;
padding-right: 0;
}
.rtl input.checkbox {
margin-left: .4em;
}
.rtl #g-add-comment {
right: inherit;
left: 0;
}
.rtl .ui-icon-left .ui-icon {
margin-left: .2em;
}
.rtl .ui-icon-right .ui-icon {
margin-right: .2em;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-right,
.rtl .ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0;
border-top-right-radius: 0;
-moz-border-radius-topleft: 5px !important;
-webkit-border-top-left-radius: 5px !important;
border-top-left-radius: 5px !important;
-moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 5px !important;
-webkit-border-bottom-left-radius: 5px !important;
border-bottom-left-radius: 5px !important;
}
.rtl .g-buttonset .ui-corner-left,
.rtl .ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0;
border-top-left-radius: 0;
-moz-border-radius-topright: 5px !important;
-webkit-border-top-right-radius: 5px !important;
border-top-right-radius: 5px !important;
-moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-bottomright: 5px !important;
-webkit-border-bottom-right-radius: 5px !important;
border-bottom-right-radius: 5px !important;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .sf-menu a {
border-left: none;
border-right:1px solid #fff;
}
.rtl .sf-menu a.sf-with-ul {
padding-left: 2.25em;
padding-right: 1em;
}
.rtl .sf-sub-indicator {
left: .75em !important;
right: auto;
background: url('../../../lib/superfish/images/arrows-ffffff-rtl.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
.rtl a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
.rtl a:focus > .sf-sub-indicator,
.rtl a:hover > .sf-sub-indicator,
.rtl a:active > .sf-sub-indicator,
.rtl li:hover > a > .sf-sub-indicator,
.rtl li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.rtl .sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.rtl .sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */
.rtl .sf-menu ul a:focus > .sf-sub-indicator,
.rtl .sf-menu ul a:hover > .sf-sub-indicator,
.rtl .sf-menu ul a:active > .sf-sub-indicator,
.rtl .sf-menu ul li:hover > a > .sf-sub-indicator,
.rtl .sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/
}
.rtl .sf-menu li:hover ul,
.rtl .sf-menu li.sfHover ul {
right: 0;
left: auto;
}
.rtl ul.sf-menu li li:hover ul,
.rtl ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
.rtl ul.sf-menu li li li:hover ul,
.rtl ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */
left: auto;
}
/*** shadows for all but IE6 ***/
.rtl .sf-shadow ul {
background: url('../../../lib/superfish/images/shadow.png') no-repeat bottom left;
padding: 0 0 9px 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
-moz-border-radius-topright: 0;
-moz-border-radius-bottomleft: 0;
-webkit-border-top-right-radius: 0;
-webkit-border-bottom-left-radius: 0;
-moz-border-radius-topleft: 17px;
-moz-border-radius-bottomright: 17px;
-webkit-border-top-left-radius: 17px;
-webkit-border-bottom-right-radius: 17px;
border-top-left-radius: 17px;
border-bottom-right-radius: 17px;
}
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em;
}
.rtl .ui-dialog .ui-dialog-title {
float: right;
}
.rtl .ui-dialog .ui-dialog-titlebar-close {
left: 0.3em;
right: auto;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .g-paginator .g-info {
width: 35%;
}
.rtl .g-paginator .g-text-right {
margin-left: 0;
}
.rtl .g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.rtl .g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.rtl .g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.rtl .g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
.rtl #g-header #g-login-menu,
.rtl #g-header #g-quick-search-form {
clear: left;
float: left;
}
.rtl #g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
.rtl #g-site-menu {
left: auto;
right: 240px;
}
.rtl #g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
.rtl #g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
.rtl #g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}
/* ~browny~ */
.rtl .g-even {
text-align: left;
}
/* ~browny~ */
.rtl .g-odd {
text-align: right;
/* Autocomplete ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.ac_loading {
background: white url('../images/loading-small.gif') right center no-repeat !important;
}
/** *******************************************************************
* 11) More Browny (Extra overrides for better Browny look)
* 9) More Browny (Extra overrides for better Browny look)
*********************************************************************/
/* ~browny~ */
@ -1478,10 +1173,6 @@ div#g-action-status {
background-color: #FAFAEB !important;
}
.rtl .uploadifyQueueItem .cancel {
float: left;
}
.uploadifyQueue {
margin-top: 1em;
}
@ -1533,35 +1224,6 @@ div#g-action-status {
margin-bottom: .5em;
}
.rtl #g-user-profile .g-block h2 {
padding-right: .8em;
padding-left: auto;
}
.rtl #g-user-profile .g-avatar {
float: right;
right: 0em;
left: auto;
margin: 0em .6em 0em 0em;
}
.rtl #g-user-profile #g-comment-detail .g-author a {
float: right;
right: 0em;
left: auto;
margin-left: .6em;
margin-right: 0em;
}
.rtl #g-user-profile #g-comment-detail div {
margin-right: 5em;
margin-left: 0em;
}
.rtl #g-user-profile h1 {
margin: 1.25em 4.4em 2em 0em;
}
/* Comments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-content #g-comments .g-avatar {
@ -1570,12 +1232,6 @@ div#g-action-status {
margin-left: 0;
}
.rtl #g-content #g-comments .g-avatar {
float: right;
margin-left: .4em;
margin-right: 0;
}
/* Organize ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-organize {
@ -1609,11 +1265,6 @@ table.calendar td:hover {
background: #EDE4D5 !important;
}
.rtl #g-calendar-grid {
padding-right: 8px;
padding-left: 0px;
}
#g-view-menu #g-calendarview-link {
background-image: url('../images/ico-view-calendarview.png') !important;
}

View File

@ -82,7 +82,7 @@ $(document).ready(function() {
} else {
var sib_height = $(this).prev().height();
}
if ($.browser.msie && $.browser.version >= 8) {
if ($.browser.msie && $.browser.version <= 8) {
sib_height = sib_height + 1;
}
$(this).css("height", sib_height);

View File

@ -1,10 +1,10 @@
name = "Browny Wind"
description = "The default Wind theme with a browny style."
version = 1
author = "Ma'moun M. Diraneyya"
author = "Mamouneyya"
site = 1
admin = 0
author_name = ""
author_name = "Ma'moun Diraneyya"
author_url = ""
info_url = "http://codex.gallery2.org/Gallery3:Themes:browny_wind"
discuss_url = "http://gallery.menalto.com/forum_theme_browny_wind"
discuss_url = "http://gallery.menalto.com/node/95007"

View File

@ -1,6 +1,11 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<ul class="g-message-block">
<li class="g-warning"><?= t("No active sidebar blocks.") ?>
<br/><a href="<?= url::site("admin/sidebar") ?>"><?= t("Add blocks") ?></a>
<li class="g-warning">
<? if (block_manager::get_active("site_sidebar")): ?>
<?= t("Active sidebar blocks have no content.") ?>
<? else: ?>
<?= t("No active sidebar blocks.") ?>
<? endif ?>
<a href="<?= url::site("admin/sidebar") ?>"><?= t("configure blocks") ?></a>
</li>
</ul>

View File

@ -1,50 +1,43 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" <?= $theme->html_attributes() ?> xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<? $theme->start_combining("script,css") ?>
<title>
<? if ($page_title): ?>
<?= $page_title ?>
<? else: ?>
<? if ($theme->item()): ?>
<? if ($theme->item()->is_album()): ?>
<?= t("Browse Album :: %album_title", array("album_title" => $theme->item()->title)) ?>
<? elseif ($theme->item()->is_photo()): ?>
<?= t("Photo :: %photo_title", array("photo_title" => $theme->item()->title)) ?>
<? else: ?>
<?= t("Movie :: %movie_title", array("movie_title" => $theme->item()->title)) ?>
<? endif ?>
<?= $theme->item()->title ?>
<? elseif ($theme->tag()): ?>
<?= t("Browse Tag :: %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<?= t("Photos tagged with %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<? else: /* Not an item, not a tag, no page_title specified. Help! */ ?>
<?= t("Gallery") ?>
<?= item::root()->title ?>
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>" type="image/x-icon" />
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<link rel="shortcut icon"
href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>"
type="image/x-icon" />
<link rel="apple-touch-icon-precomposed"
href="<?= url::file(module::get_var("gallery", "apple_touch_icon_url")) ?>" />
<? if ($theme->page_type == "collection"): ?>
<? if ($thumb_proportion != 1): ?>
<? $new_width = round($thumb_proportion * 213) ?>
<? $new_height = round($thumb_proportion * 240) ?>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? endif ?>
<? endif ?>
<?= $theme->script("json2-min.js") ?>
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
@ -57,9 +50,8 @@
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("jquery.localscroll.js") ?>
<?= $theme->script("ui.init.js") ?>
<? /* These are page specific, but if we put them before $theme->head() they get combined */ ?>
<? /* These are page specific but they get combined */ ?>
<? if ($theme->page_subtype == "photo"): ?>
<?= $theme->script("jquery.scrollTo.js") ?>
<?= $theme->script("gallery.show_full_size.js") ?>
@ -68,6 +60,26 @@
<? endif ?>
<?= $theme->head() ?>
<? /* Theme specific CSS/JS goes last so that it can override module CSS/JS */ ?>
<?= $theme->script("ui.init.js") ?>
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<? if (locales::is_rtl()): ?>
<?= $theme->css("screen-rtl.css") ?>
<? endif; ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<!-- LOOKING FOR YOUR CSS? It's all been combined into the link below -->
<?= $theme->get_combined("css") ?>
<!-- LOOKING FOR YOUR JAVASCRIPT? It's all been combined into the link below -->
<?= $theme->get_combined("script") ?>
</head>
<body <?= $theme->body_attributes() ?>>
@ -80,7 +92,7 @@
<?= $header_text ?>
<? else: ?>
<a id="g-logo" class="g-left" href="<?= item::root()->url() ?>" title="<?= t("go back to the Gallery home")->for_html_attr() ?>">
<img alt="<?= t("Gallery logo: Your photos on your web site")->for_html_attr() ?>" src="<?= $theme->url("images/logo.png") ?>" />
<img alt="<?= t("Gallery logo: Your photos on your web site")->for_html_attr() ?>" src="<?= url::file("lib/images/logo.png") ?>" />
</a>
<? endif ?>
<?= $theme->user_menu() ?>

2
3.0/themes/pear4gallery3/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
icons/depricated
temp/

View File

@ -0,0 +1,327 @@
<?php defined("SYSPATH") or die("No direct script access.");
/*
*/
?>
<?
class Admin_Theme_Options_Controller extends Admin_Controller {
protected $min_gallery_ver = 46;
private function load_theme_info() {
$theme_id = module::get_var("gallery", "active_site_theme");
$file = THEMEPATH . "$theme_id/theme.info";
$theme_info = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS);
return $theme_info;
}
private function get_theme_version() {
$theme_info = $this->load_theme_info();
return ($theme_info->version);
}
private function get_theme_name() {
$theme_info = $this->load_theme_info();
return ($theme_info->name);
}
private function prerequisite_check($group, $id, $is_ok, $caption, $caption_ok, $caption_failed, $iswarning, $msg_error) {
$confirmation_caption = ($is_ok)? $caption_ok : $caption_failed;
$checkbox = $group->checkbox($id)
->label($caption . " " . $confirmation_caption)
->checked($is_ok)
->disabled(true);
if ($is_ok):
$checkbox->class("g-success");
elseif ($iswarning):
$checkbox->class("g-prerequisite g-warning")->error_messages("failed", $msg_error)->add_error("failed", 1);
else:
$checkbox->class("g-error")->error_messages("failed", $msg_error)->add_error("failed", 1);
endif;
}
/* Convert old values ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
protected function upgrade_settings() {
if (module::get_var("th_pear4gallery3", "show_logo")):
module::clear_var("th_pear4gallery3", "show_logo");
module::set_var("th_pear4gallery3", "hide_logo", FALSE);
endif;
}
protected function get_edit_form_admin() {
$this->upgrade_settings();
$form = new Forge("admin/theme_options/save/", "", null, array("id" =>"g-theme-options-form"));
// Just commenting out, we might want rssmodule in future versions.
// $rssmodulecheck = (module::is_active("rss") && module::info("rss"));
/* Prerequisites ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
$group = $form->group("requirements")->label(t("Prerequisites"));
$gallery_ver = module::get_version("gallery");
$this->prerequisite_check($group, "vercheck", $gallery_ver >= $this->min_gallery_ver,
t("Gallery 3 Core v.") . $this->min_gallery_ver . "+", t("Installed"), t("Required"), FALSE, sprintf(t("Check Failed. Minimum Required Version is %s. Found %s."), $this->min_gallery_ver, $gallery_ver));
$this->prerequisite_check($group, "square_thumbs", (module::is_active("square_thumbs") and module::info("square_thumbs")),
t("Square Thumbnails"), t("Found"), t("Required"), FALSE, t("Install <a href=\"http://codex.gallery2.org/Gallery3:Modules:square_thumbs\">Square Thumbnails</a> to display Thumbs correctly."));
if (!module::get_var("th_pear4gallery3", "hide_thumbmeta")):
$this->prerequisite_check($group, "info", (module::is_active("info") and module::info("info")),
t("Info Module"), t("Found"), t("Required"), FALSE, t("Check Failed. Module is required to display Thumb metadata."));
endif;
/* General Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
$group = $form->group("edit_theme")->label(t("General Settings"));
$group->input("favicon")
->label(t("URL (or relative path) to your favicon.ico"))
->value(module::get_var("gallery", "favicon_url"));
$group->input("appletouchicon")
->label(t("URL (or relative path) to your apple-touch-icon.png"))
->value(module::get_var("gallery", "appletouchicon_url"));
/* Advanced Options - General ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
$group = $form->group("edit_theme_adv_main")->label(t("Advanced Options - General"));
$group->checkbox("hide_logo")
->label(t("Hide Bottom Pear Logo"))
->checked(module::get_var("th_pear4gallery3", "hide_logo"));
$group->dropdown("mainmenu_view")
->label(t("Main page View"))
->options(array("grid" => t("Grid (Default)"), "mosaic" => t("Mosaic")))
->selected(module::get_var("th_pear4gallery3", "mainmenu_view"));
$group->checkbox("show_guest_menu")
->label(t("Show Main Menu for Guest Users"))
->checked(module::get_var("th_pear4gallery3", "show_guest_menu"));
$group->dropdown("background")
->label(t("Background color"))
->options(array("black" => t("Black (Default)"), "dkgrey" => t("Dark-Grey"), "ltgrey" => t("Light-Grey"), "white" => t("White")))
->selected(module::get_var("th_pear4gallery3", "background"));
$group->input("ga_code")
->label(t("<a href=\"http://www.google.com/analytics/\">Google analytics</a> code."))
->value(module::get_var("th_pear4gallery3", "ga_code"));
/* Advanced Options - Photo page ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/*
$group = $form->group("edit_theme_adv_photo")->label(t("Advanced Options - Photo Page"));
$group->dropdown("photo_popupbox")
->label(t($sb_fb_caption) . " " . t("Mode"))
->options(array("default" => t("Default (Slideshow/Preview)"), "preview" => t("Preview Only"), "none" => t("Disable")))
->selected(module::get_var("th_pear4gallery3", "photo_popupbox"));
$group->dropdown("photo_descmode")
->label(t("Description Display Mode"))
->options(array("overlay_top" => t("Overlay Top"), "overlay_bottom" => t("Overlay Bottom"), "bottom" => t("Bottom"), "top" => t("Top"), "hide" => t("Hide")))
->selected(module::get_var("th_pear4gallery3", "photo_descmode"));
$group->checkbox("thumb_inpage")
->label(t("Keep Thumb Nav Block on the side"))
->checked(module::get_var("th_pear4gallery3", "thumb_inpage"));
if (!$thumbnavcheck):
$group->thumb_inpage->disabled(true);
endif;
$group->checkbox("hide_photometa")
->label(t("Hide Item Meta Data"))
->checked(module::get_var("th_pear4gallery3", "hide_photometa", TRUE));
$group->checkbox("desc_allowbbcode")
->label(t("Allow BBCode/HTML in Descriptions"))
->checked(module::get_var("th_pear4gallery3", "desc_allowbbcode"));
*/
/* Maintenance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
$group = $form->group("maintenance")->label(t("Maintenance"));
$group->checkbox("build_resize")->label(t("Mark all Image Resizes for Rebuild"))->checked(false);
$group->checkbox("build_thumbs")->label(t("Mark all Thumbnails for Rebuild"))->checked(false);
$group->checkbox("build_exif")->label(t("Mark Exif Info data for reload"))->checked(false);
if ($iptccheck):
$group->checkbox("build_iptc")->label(t("Mark IPTC Info data for reload"))->checked(false);
endif;
$group->checkbox("purge_cache")->label(t("Purge cache data"))->checked(false);
$group->checkbox("reset_theme")->label(t("Reset Theme to a Default State"))->checked(false);
module::event("theme_edit_form", $form);
$form->submit("g-theme-options-save")->value(t("Save Changes"));
return $form;
}
protected function get_edit_form_help() {
$help = '<fieldset>';
$help .= '<legend>Help</legend><ul>';
$help .= '<li><h3>Prerequisites</h3>
<p style="color: red;">Requirements need to be met for theme to function properly.
</li>';
$help .= '<li><h3>General Settings</h3>
</li>';
$help .= '<li><h3>Advanced Options - General</h3>
</li>';
$help .= '<li><h3>Advanced Options - Photo Page</h3>
</li>';
$help .= '<li><h3>Maintenance</h3>
<p>Without changing image size, you can <b>Mark all Resizes for Rebuild</b>.
Then you need to visit Admin\Maintenance to initiate the process.
<p>Same can be done for image thumbs with <b>Mark all Thumbnails for Rebuild</b>.
<p><b>Mark Exif/IPTC Info for reload</b> would mark all Exif or IPTC records as "Dirty" allowing it to be repopulated.
<p>And just in case you think that something is not right, you can always <b>Reset Theme to a Default State</b>.
</li>';
$help .= '</ul></fieldset>';
return t($help);
}
private function save_item_state($statename, $state, $value) {
if ($state):
module::set_var("th_pear4gallery3", $statename, $value);
else:
module::clear_var("th_pear4gallery3", $statename);
endif;
}
protected function legacy() {
module::clear_var("th_pear4gallery3", "hide_logo");
module::clear_var("th_pear4gallery3", "mainmenu_view");
module::clear_var("th_pear4gallery3", "show_guest_menu");
module::clear_var("th_pear4gallery3", "background");
module::clear_var("th_pear4gallery3", "ga_code");
}
protected function reset_theme() {
// Default core theme settings
module::set_var("gallery", "page_size", 9);
module::set_var("gallery", "resize_size", 640);
module::set_var("gallery", "thumb_size", 200);
module::set_var("gallery", "header_text", "");
module::set_var("gallery", "footer_text", "");
module::set_var("gallery", "show_credits", FALSE);
module::clear_all_vars("th_pear4gallery3");
module::clear_var("th_pear4gallery3", "hide_logo");
}
public function save() {
site_status::clear("gd_init_configuration");
access::verify_csrf();
$form = self::get_edit_form_admin();
if ($form->validate()):
$this->legacy();
if ($form->maintenance->reset_theme->value):
$this->reset_theme();
module::event("theme_edit_form_completed", $form);
message::success(t("Theme details are reset"));
else:
// * General Settings ****************************************************
$resize_size = 800;
$build_resize = $form->maintenance->build_resize->value;
$build_thumbs = $form->maintenance->build_thumbs->value;
$build_exif = $form->maintenance->build_exif->value;
if (module::is_active("iptc") and module::info("iptc")):
$build_iptc = $form->maintenance->build_iptc->value;
else:
$build_iptc = FALSE;
endif;
$purge_cache = $form->maintenance->purge_cache->value;
$thumb_descmode_a = $form->edit_theme_adv_thumb->thumb_descmode_a->value;
$thumb_descmode = $form->edit_theme_adv_thumb->thumb_descmode->value;
$thumb_metamode = $form->edit_theme_adv_thumb->thumb_metamode->value;
$photo_descmode = $form->edit_theme_adv_photo->photo_descmode->value;
$photo_popupbox = $form->edit_theme_adv_photo->photo_popupbox->value;
if ($build_resize):
graphics::remove_rule("gallery", "resize", "gallery_graphics::resize");
graphics::add_rule("gallery", "resize", "gallery_graphics::resize",
array("width" => $resize_size, "height" => $resize_size, "master" => Image::AUTO), 100);
endif;
if (module::get_var("gallery", "resize_size") != $resize_size):
module::set_var("gallery", "resize_size", $resize_size);
endif;
$thumb_size = 200;
$rule = Image::AUTO;
if ($build_thumbs):
graphics::remove_rule("gallery", "thumb", "gallery_graphics::resize");
graphics::add_rule("gallery", "thumb", "gallery_graphics::resize",
array("width" => $thumb_size, "height" => $thumb_size, "master" => $rule), 100);
endif;
if (module::get_var("gallery", "thumb_size") != $thumb_size):
module::set_var("gallery", "thumb_size", $thumb_size);
endif;
module::set_var("gallery", "page_size", 50);
module::set_var("gallery", "favicon_url", $form->edit_theme->favicon->value);
module::set_var("gallery", "appletouchicon_url", $form->edit_theme->appletouchicon->value);
$this->save_item_state("logo_path", $form->edit_theme->logo_path->value, $form->edit_theme->logo_path->value);
// * Advanced Options - General ******************************************
$this->save_item_state("hide_logo", $form->edit_theme_adv_main->hide_logo->value, TRUE);
$this->save_item_state("mainmenu_view", $form->edit_theme_adv_main->mainmenu_view->value != "grid", $form->edit_theme_adv_main->mainmenu_view->value);
$this->save_item_state("show_guest_menu",$form->edit_theme_adv_main->show_guest_menu->value, TRUE);
$this->save_item_state("background", $form->edit_theme_adv_main->background->value != "black", $form->edit_theme_adv_main->background->value);
$this->save_item_state("ga_code", $form->edit_theme_adv_main->ga_code->value, $form->edit_theme_adv_main->ga_code->value);
// * Advanced Options - Photo page ***************************************
/*
$this->save_item_state("photo_descmode", $photo_descmode != "overlay_top", $photo_descmode);
$this->save_item_state("photo_popupbox", $photo_popupbox != "default", $photo_popupbox);
$this->save_item_state("thumb_inpage", $form->edit_theme_adv_photo->thumb_inpage->value, TRUE);
$this->save_item_state("hide_photometa", !$form->edit_theme_adv_photo->hide_photometa->value, FALSE);
$this->save_item_state("desc_allowbbcode", $form->edit_theme_adv_photo->desc_allowbbcode->value, TRUE);
*/
module::event("theme_edit_form_completed", $form);
if ($_priorratio != $thumb_ratio):
message::warning(t("Thumb aspect ratio has been changed. Consider rebuilding thumbs if needed."));
endif;
message::success(t("Updated theme details"));
if ($build_exif):
db::update('exif_records')
->set(array('dirty'=>'1'))
->execute();
endif;
if ($build_iptc):
db::update('iptc_records')
->set(array('dirty'=>'1'))
->execute();
endif;
if ($purge_cache):
db::build()
->delete("caches")
->execute();
endif;
endif;
url::redirect("admin/theme_options");
else:
print $this->get_admin_view();
endif;
}
protected function get_admin_view() {
$view = new Admin_View("admin.html");
$view->page_title = t(".Pear Theme");
$view->content = new View("admin_theme_options.html");
$view->content->name = self::get_theme_name();
$view->content->version = self::get_theme_version();
$view->content->form = self::get_edit_form_admin();
$view->content->help = self::get_edit_form_help();
return $view;
}
public function index() {
site_status::clear("gd_init_configuration");
print $this->get_admin_view();
}
}
?>

View File

@ -0,0 +1,90 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Grey Dragon Theme - a custom theme for Gallery 3
* This theme was designed and built by Serguei Dosyukov, whose blog you will find at http://blog.dragonsoft.us
* Copyright (C) 2009-2011 Serguei Dosyukov
*
* 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.
*/
?>
<style>
#g-header { margin-bottom: 10px; }
#gd-admin { position: relative; font-size: 0.9em; }
#gd-admin legend { width: 99.5%; padding: 0.4em 0.8em; margin-left: -11px; background: url(/themes/greydragon/images/blue-grad.png) #d5e6f2 repeat-x left top; border: #dfdfdf 1px solid;}
.g-admin-left { float: left; width: 53%; }
.g-admin-right { float: left; width: 46%; margin-left: 1%; margin-top: 1em; }
.g-admin-right h3 { border-bottom: #a2bdbf 1px solid; margin-top: 0.3em; margin-bottom: 0.3em; }
#gd-admin-head { position: relative; height: auto; clear: both; display: block; overflow: auto; font-size: 11px; padding: 0.4em 0.8em; background-color: #b7c9d6; border: #a2bdbf 1px solid; }
#gd-admin-title { float: left; color: #333v42; font-weight: bold; font-size: 1.6em; text-shadow: #deeefa 0 1px 0; }
#gd-admin-hlinks ul { float: right; margin-top: 0.4em; font-size: 11px; }
#gd-admin-hlinks li { list-style-type: none; float: left; color: #618299; display: inline; }
#gd-admin-hlinks a { font-weight: bold; font-size: 13px; }
#gd-admin form { border: none; }
#gd-admin fieldset { border: #ccc 1px solid; }
#gd-admin input.g-error { padding-left: 30px; border: none; }
#gd-admin input.g-success { background-color: transparent; }
#gd-admin input.g-warning { background-color: transparent; border: none; }
#gd-admin p.g-error { padding-left: 30px; border: none; margin-bottom: 0; background-image: none; }
#g-content { padding: 0 1em; width: 97%; font-size: 1em; }
#g-content form ul li input { display: inline; float: left; margin-right: 0.8em; }
#g-content form ul li select { display: inline; float: left; margin-right: 0.8em; width: 50.6%; padding: 0 0 0 .2em; }
#g-content form ul li input[type='text'] { width: 50%; }
#g-content form ul li textarea { height: 6em; }
#g-content form input[type="submit"] { border: #5b86ab 2px solid; padding: 0.3em; color: #fff; background: url(/themes/greydragon/images/button-grad-vs.png) #5580a6 repeat-x left top; }
#g-content form input[type="submit"]:hover,
input.ui-state-hover { background-image: url(/themes/greydragon/images/button-grad-active-vs.png); border-color: #2e5475; color: #eaf2fa !important; }
#g-content form #vercheck, #g-content form #shadowbox, #g-content form #organizecheck { display: none; }
</style>
<script>
$(document).ready( function() {
$('form').submit( function() {
$('input[type=submit]', this).attr('disabled', 'disabled');
});
});
</script>
<?
if ($is_module):
$admin_info = new ArrayObject(parse_ini_file(MODPATH . $name . "/module.info"), ArrayObject::ARRAY_AS_PROPS);
$version = number_format($admin_info->version / 10, 1, '.', '');
else:
$admin_info = new ArrayObject(parse_ini_file(THEMEPATH . $name . "/theme.info"), ArrayObject::ARRAY_AS_PROPS);
$version = $admin_info->version;
endif;
?>
<div id="gd-admin" class="g-block">
<div id="gd-admin-head">
<div id="gd-admin-title"><?= t($admin_info->name) ?> - <?= $version ?></div>
<div id="gd-admin-hlinks">
<ul><li><a href="http://codex.gallery2.org/Gallery3:Themes:pear4gallery3" target="_blank"><?= t("Home") ?></a>&nbsp;|&nbsp;</li>
<? if (isset($admin_info->support)): ?>
<li><a href="<?= $admin_info->support; ?>" target="_blank"><?= t("Support") ?></a>&nbsp;|&nbsp;</li>
<? endif; ?>
<? if (isset($admin_info->download)): ?>
<li><a href="<?= $admin_info->download; ?>" target="_blank"><?= t("Download") ?></a>&nbsp;|&nbsp;</li>
<? endif; ?>
</ul>
</div>
</div>
<div class="g-block-content g-admin-left">
<?= $form ?>
</div>
<div class="g-admin-right">
<?= $help ?>
</div>
</div>

View File

@ -0,0 +1,14 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
*/
?>
<?
$view = new View("admin_include.html");
$view->is_module = FALSE;
$view->name = module::get_var("gallery", "active_site_theme");
$view->form = $form;
$view->help = $help;
print $view;
?>

View File

@ -0,0 +1,59 @@
/**
* Fix display in IE 6, 7, and 8
*/
#g-banner {
z-index: 2;
zoom: 1;
}
#g-sidebar {
overflow: hidden;
}
#g-photo,
#g-movie {
zoom: 1;
}
#g-photo .g-context-menu,
#g-movie .g-context-menu {
width: 240px;
}
input.submit {
clear: none !important;
display: inline !important;
}
.g-short-form input.text,
.g-short-form input.submit {
font-size: 1em;
line-height: 1em;
padding: .38em .3em;
}
#g-search-form input#q {
width: 300px;
}
#g-add-tag-form input.textbox {
width: 110px !important;
}
#g-add-tag-form input[type='submit'] {
padding: .3em 0 !important;
}
#g-dialog .g-cancel {
display: inline-block !important;
float: none !important;
}
.g-paginator .g-text-right {
width: 29%;
}
.g-paginator .ui-icon-right {
width: 60px;
}

View File

@ -0,0 +1 @@
@charset "utf-8"; @media screen, projection{.imageflow{overflow:hidden; position:relative; text-align:left; visibility:hidden; width:100%}.imageflow img{border:none; position:absolute; top:0px; visibility:hidden; -ms-interpolation-mode:bicubic}.imageflow p{margin:0 auto; text-align:center}.imageflow .loading{border:1px solid white; height:15px; left:50%; margin-left:-106px; padding:5px; position:relative; visibility:visible; width:200px}.imageflow .loading_bar{background:#fff; height:15px; visibility:visible; width:1%}.imageflow .navigation{z-index:10000}.imageflow .caption{font-weight:bold; position:relative; text-align:center; z-index:10001}.imageflow .scrollbar{border-bottom:1px solid #b3b3b3; position:relative; visibility:hidden; z-index:10002; height:1px}.imageflow .slider{background:url(../icons/slider.png) no-repeat; height:14px; margin:-6px 0 0 -7px; position:absolute; width:14px; z-index:10003}.imageflow .slideshow{cursor:pointer; height:14px; margin:20px 0 0 20px; position:absolute; width:14px; z-index:10003}.imageflow .slideshow.pause{background:url(../icons/button_pause.png) no-repeat}.imageflow .slideshow.play{background:url(../icons/button_play.png) no-repeat}.imageflow .images{overflow:hidden; white-space:nowrap}.imageflow .button{cursor:pointer; height:17px; position:relative; width:17px}.imageflow .previous{background:url(../icons/button_left.png) top left no-repeat; float:left; margin:-7px 0 0 -30px}.imageflow .next{background:url(../icons/button_right.png) top left no-repeat; float:right; margin:-7px -30px 0 30px}}

View File

@ -0,0 +1,145 @@
.gallery-thumb {
float: left;
margin-bottom: 5px;
margin-left: 5px;
margin-right: 5px;
position: relative;
text-align: center;
cursor: pointer;
}
.gallery-album {
display: block;
height: 400px;
overflow: auto;
padding-bottom: 10px;
padding-top: 10px;
}
th, td {
padding: 0;
border-width: 0;
}
.giInfo {
color: #888888;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
height: 11px;
margin-bottom: 0px;
margin-left: 12px;
margin-right: 0px;
text-align: left;
}
.pear {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #999 !important;
background-color: #000;
}
.giTitle {
font-size: 1.1em;
font-weight: bold;
margin: 3px 10px !important;
padding: 0 0;
text-align: left;
}
#gsNavBar div {
font-weight: bold;
}
h2 {
font-size: 1.1em;
font-weight: bold;
}
.center {
text-align: center !important;
}
#g-header {
margin-top: -2px;
position: fixed;
top: 44px;
width: 100%;
z-index: 50;
}
/*Menu*/
.sf-menu li:hover, .sf-menu li.sfHover, .sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
background: none repeat scroll 0 0 #333333;
outline: 0 none;
}
.sf-menu li {
background: none repeat scroll 0 0 #000000;
float: left;
position: relative;
}
.sf-menu li li, .sf-menu li li ul li {
background-color: #000;
}
.sf-menu ul {
background: none repeat scroll 0 0 #000000;
}
.sf-menu, .sf-menu * {
list-style: none outside none;
margin: 0;
padding: 0;
}
a, .g-menu a, #g-dialog a, .g-button, .g-button:hover, .g-button:active, a.ui-state-hover, input.ui-state-hover, button.ui-state-hover {
color: #777777 !important;
cursor: pointer !important;
text-decoration: none;
}
.sf-menu a, .sf-menu a:visited {
color: #555555;
}
.sf-menu a {
border-left: 1px solid #333;
border-top: 1px solid #222;
padding: 0.75em 1em;
text-decoration: none;
display: block;
position: relative;
}
.ui-state-default, .ui-widget-content .ui-state-default {
background: #ccc;
border: 1px solid #C5DBEC;
color: #555
font-weight: bold;
outline: medium none;
}
#g-banner {
background-color: #555;
border-bottom: 1px solid #333333;
min-height: 5em;
padding: 1em 20px;
position: relative;
}
.g-paginator {
margin-bottom: 5px;
margin-left: 15px;
margin-right: 15px;
padding-top: 6px;
}
a.buttonFirst { background-position: 0px 0px !important; }
a.buttonFirst:hover { background-position: -15px 0px !important; }
a.buttonPrev { background-position: 0px -15px !important; }
a.buttonPrev:hover { background-position: -15px -15px !important; }
a.buttonNext { background-position: 0px -30px !important;}
a.buttonNext:hover { background-position: -15px -30px !important;}
a.buttonLast { background-position: 0px -45px !important; }
a.buttonLast:hover { background-position: -15px -45px !important; }
a.buttonNext, a.buttonLast { float: right; }
a.buttonFirst, a.buttonPrev { float: left; }
.g-paginator .buttonAction {
background: url("../icons/paginator.gif") no-repeat 0 0;
height: 15px;
width: 15px;
margin-left: 0;
display: block;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 B

Some files were not shown because too many files have changed in this diff Show More