1
0

Initial commit of a themeroller module... not ready for general use

This commit is contained in:
Tim Almdal 2010-07-16 09:42:30 -07:00
parent 1647ab4b27
commit 64332d6688
31 changed files with 1702 additions and 0 deletions

View File

@ -0,0 +1,73 @@
<?php defined("SYSPATH") or die("No direct script access.");/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2010 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_Themeroller_Controller extends Admin_Controller {
public function form_add() {
$v = new View("admin_themeroller.html");
list ($v->form, $v->errors) = $this->_get_theme_form();
$v->is_writable = is_writable(THEMEPATH);
$v->action = "admin/themeroller/upload";
$submit_class = "ui-state-default ui-corner-all submit g-left";
if ($v->not_writable = !is_writable(THEMEPATH)) {
$submit_class .= " ui-state-disabled";
}
$v->submit_class = $submit_class;
$v->script_data = array(
"g3sid" => Session::instance()->id(),
"user_agent" => Input::instance()->server("HTTP_USER_AGENT"),
"csrf" => access::csrf_token());
print json_encode(array("form" => (string) $v));
}
public function upload() {
access::verify_csrf();
list ($v->form, $v->errors) = $this->_get_theme_form();
Kohana_Log::add("error", Kohana::debug($_POST));
Kohana_Log::add("error", Kohana::debug($_FILES));
$validation = new Validation(array_merge($_POST, $_FILES));
$validation->add_rules("name", "required");
$validation->add_rules("display_name", "required");
$validation->add_rules("description", "required");
$validation->add_rules("zip_file", "upload::valid", "upload::required", "upload::type[zip]");
$validation->add_callbacks("name", array($this, "_is_theme_defined"));
if ($validation->validate()) {
print "FILEID: {$v->form['name']}";
} else {
arr::overwrite($form, $validation->as_array());
arr::overwrite($errors, $validation->errors());
}
}
public function _is_theme_defined(Validation $post, $field) {
$theme_name = strtolower(strtr($post[$field], " ", "_"));
if (file_exists(THEMEPATH . "$theme_name/theme.info")) {
$post->add_error($field, "theme_exists");
}
}
private function _get_theme_form() {
$form = array("name" => "", "display_name" => "", "description" => "", "is_admin" => array(),
"zip_file" => "");
$errors = array_fill_keys(array_keys($form), "");
return array($form, $errors);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

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-2010 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 themeroller_event {
static function admin_menu($admin_menu, $theme) {
$admin_menu->get("appearance_menu")
->append(Menu::factory("dialog")
->id("themeroller")
->label(t("Import themeroller"))
->url(url::site("admin/themeroller/form_add")));
}
}

View File

@ -0,0 +1,35 @@
<?php defined("SYSPATH") or die("No direct script access.");/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2010 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 themeroller_installer {
static function install() {
$version = module::get_version("themeroller");
if ($version == 0) {
/* @todo Put database creation here */
module::set_version("themeroller", 1);
}
}
static function upgrade($version) {
}
static function uninstall() {
/* @todo Put database table drops here */
module::delete("themeroller");
}
}

View File

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

View File

@ -0,0 +1,622 @@
/**
* Gallery 3 Admin Redmond Theme Screen Styles
*
* @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) Navigation and menus
* 6) jQuery and jQuery UI
* 7) Module color overrides
* 8) States and interactions
* 9) Right-to-left language styles
*
* @todo Review g-buttonset-vertical
*/
/** *******************************************************************
* 1) Basic HTML elements
**********************************************************************/
html {
color: #2e6e9e; /* fcDefault; */
}
body, html {
background-color: #dfeffc; /* bgColorDefault */
font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; /* ffDefault */
font-size: 13px/1.231; /* fsDefault/ gallery_line_height */
}
p {
margin-bottom: 1em;
}
em {
font-style: oblique;
}
h1, h2, h3, h4, h5, strong, th {
font-weight: bold;
}
h1 {
font-size: 1.7em;
}
#g-dialog h1 {
font-size: 1.1em;
}
h2 {
font-size: 1.4em;
}
#g-sidebar .g-block h2 {
font-size: 1.2em;
}
#g-sidebar .g-block li {
margin-bottom: .6em;
}
h3 {
font-size: 1.2em;
}
/* Links ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
a,
.g-menu a,
#g-dialog a,
.g-button,
.g-button:active {
color: #2e6e9e !important; /* fcDefault; */
text-decoration: none;
-moz-outline-style: none;
}
a:hover,
.g-button:hover,
a.ui-state-hover,
input.ui-state-hover,
button.ui-state-hover {
color: #1d5987 !important; /* fcHover */
text-decoration: none;
-moz-outline-style: none;
}
a:hover,
#g-dialog a:hover {
text-decoration: underline;
}
.g-menu a:hover {
text-decoration: none;
}
/* Forms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
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 {
width: 100%;
}
#g-content table {
margin: .6em 0 2em 0;
}
caption,
th {
text-align: left;
}
th,
td {
border: none;
border-bottom: 1px solid #aaaaaa; /* borderColorContent */
padding: .5em;
vertical-align: middle;
}
th {
vertical-align: bottom;
white-space: nowrap;
}
.g-even {
background-color: #fcfdfd; /* bgColorContent */
}
.g-odd {
background-color: #dfeffc; /* bgColorDefault */
}
/** *******************************************************************
* 2) Reusable content blocks
*********************************************************************/
.g-block,
#g-content #g-admin-dashboard .g-block {
border: 1px solid #aaaaaa; /* borderColorContent */
padding: 1em;
}
.g-block h2 {
padding: .3em .8em;
}
.g-block-content {
margin-top: 1em;
}
#g-content .g-block {
border: none;
padding: 0;
}
#g-sidebar .g-block-content {
padding: 0;
}
#g-content .g-selected,
#g-content .g-available .g-block {
border: 1px solid #aaaaaa; /* borderColorContent */
padding: .8em;
}
.g-selected img,
.g-available .g-block img {
float: left;
margin: 0 1em 1em 0;
}
.g-selected {
background: #f5f8f9 ; /* bgColorActive */
}
.g-available .g-installed-toolkit:hover {
cursor: pointer;
background: #fcfdfd; /* bgColorContent */
}
.g-available .g-button {
width: 96%;
}
.g-selected .g-button {
display: none;
}
.g-unavailable {
border-color: #ffffff; /* fcHeader; */;
opacity: 0.4;
}
.g-info td {
background-color: transparent;
background-image: none;
}
.g-success td {
background-color: transparent;
background-image: none;
}
.g-error td {
background-color: #cd0a0a /* borderColorError */;
color: #cd0a0a /* fcError */;
background-image: none;
}
.g-warning td {
background-color: #fcf9ce;
background-image: none;
}
.g-module-status.g-info,
#g-log-entries .g-info,
.g-module-status.g-success,
#g-log-entries .g-success {
background-color: #fcfdfd /* bgColorContent */;
}
/*** ******************************************************************
* 3) Page layout containers
*********************************************************************/
/* Header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-header #g-login-menu {
margin-top: 1em;
float: right;
}
/* View container ~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-view {
background-color: #fcfdfd; /* bgColorContent */
border: 1px solid #a6c9e2; /* borderColorContent */
border-bottom: none;
min-width: 974px !important;
}
/* Layout containers ~~~~~~~~~~~~~~~~~~~~~ */
#g-header {
background-color: #5c9ccc; /* bgColorHeader */
border-bottom: 1px solid #4297d7; /* borderColorHeader */
color: #ffffff; /* fcHeader */
font-size: .8em;
margin-bottom: 20px;
padding: 0 20px;
position: relative;
}
#g-content {
font-size: 1.1em;
padding: 0 2em;
width: 96%;
}
#g-sidebar {
background-color: #fff;
font-size: .9em;
padding: 0 20px;
width: 220px;
}
#g-footer {
background-color: #5c9ccc; /* bgColorHeader */
border-top: 1px solid #4297d7; /* borderColorHeader */
color: #ffffff; /* fcHeader */
font-size: .8em;
margin-top: 20px;
padding: 10px 20px;
}
/** *******************************************************************
* 4) Content blocks in specific layout containers
*********************************************************************/
/* Header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-header #g-logo {
background: transparent url('../../../lib/images/logo.png') no-repeat 0 .5em;
color: #ffffff /* fcHeader */ !important;
display: block;
height: 65px;
padding-top: 5px;
width: 105px;
}
#g-header #g-logo:hover {
color: #1d5987 !important; /* fcHover */
text-decoration: none;
}
#g-content .g-block h2 {
background-color: transparent;
padding-left: 0;
}
#g-sidebar .g-block-content {
padding-left: 1em;
}
.g-block .ui-dialog-titlebar {
margin: -1em -1em 0;
}
#g-sidebar .g-block h2 {
background: none;
}
/* Photo stream ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-photo-stream {
}
#g-photo-stream .g-block-content ul {
border-right: 1px solid #e8e8e8;
height: 135px;
overflow: auto;
overflow: -moz-scrollbars-horizontal; /* for FF */
overflow-x: scroll; /* scroll horizontal */
overflow-y: hidden; /* Hide vertical*/
}
#g-content #g-photo-stream .g-item {
background-color: #dfeffc; /* bgColorDefault */
border: 1px solid #e8e8e8;
border-right-color: #ccc;
border-bottom-color: #ccc;
float: left;
height: 90px;
overflow: hidden;
text-align: center;
width: 90px;
}
#g-content .g-item {
background-color: #dfeffc; /* bgColorDefault */
border: 1px solid #e8e8e8;
border-right-color: #ccc;
border-bottom-color: #ccc;
height: 90px;
padding: 14px 8px;
text-align: center;
width: 90px;
}
/* Graphics settings ~~~~~~~~~~~~~~~~~~~~~ */
#g-admin-graphics .g-available .g-block {
clear: none;
float: left;
margin-right: 1em;
width: 30%;
}
/* Appearance settings ~~~~~~~~~~~~~~~~~~~ */
#g-site-theme,
#g-admin-theme {
float: left;
width: 48%;
}
#g-site-theme {
margin-right: 1em;
}
/* Block admin ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-admin-blocks-list {
float: left;
margin: 0 2em 2em 0;
width: 30%;
}
.g-admin-blocks-list div:last-child {
border: .1em solid;
height: 100%;
}
.g-admin-blocks-list ul {
height: 98%;
margin: .1em .1em;
padding: .1em;
}
.g-admin-blocks-list ul li.g-draggable {
background-color: #dfeffc; /* bgColorDefault */
margin: .5em;
padding: .3em .8em;
}
/* In-line editing ~~~~~~~~~~~~~~~~~~~~~~ */
#g-in-place-edit-message {
background-color: #fcfdfd; /* bgColorContent */
}
/* Theme options ~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-theme-options-form {
border: 1px solid #aaaaaa; /* borderColorContent */
}
#g-theme-options-form-tabs {
border: none !important;
}
#g-theme-options-form fieldset {
border: none;
}
.ui-tabs .ui-tabs-nav li a {
padding: 0 1em;
}
.ui-tabs .ui-tabs-nav li a.g-error {
background: none no-repeat scroll 0 0 transparent;
color: #cd0a0a !important; /* fcError */
}
/** *******************************************************************
* 5) Navigation and menus
*********************************************************************/
/* Site Menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-site-admin-menu {
bottom: 0;
font-size: 1.2em;
left: 140px;
position: absolute;
}
#g-site-admin-menu ul {
margin-bottom: 0;
}
/** *******************************************************************
* 6) jQuery and jQuery UI
*********************************************************************/
/* Superfish menu overrides ~~~~~~~~~~~~~~ */
.sf-menu a {
border-left:1px solid #a6c9e2; /* borderColorContent */
}
.sf-menu li,
.sf-menu li li,
.sf-menu li li ul li {
background-color: #dfeffc; /* bgColorDefault */
}
.sf-menu li:hover {
background-color: #d0e5f5; /* bgColorHover */
}
.sf-menu li:hover,
.sf-menu li.sfHover,
.sf-menu a:focus,
.sf-menu a:hover,
.sf-menu a:active {
background-color: #d0e5f5 !important; /* bgColorHover */
}
.sf-sub-indicator {
background-image: url("themeroller/images/ui-icons_2e83ff_256x240.png");
height: 16px;
width: 16px;
}
a > .sf-sub-indicator {
background-position: -64px -16px !important;
top: 0.6em;
}
.sf-menu ul a > .sf-sub-indicator {
background-position: -32px -16px !important;
}
/* jQuery UI Dialog ~~~~~~~~~~~~~~~~~~~~~~ */
#g-admin-dashboard .ui-state-highlight,
#g-sidebar .ui-state-highlight {
height: 2em;
margin-bottom: 1em;
}
.g-buttonset-vertical a {
width: 8em !important;
}
#g-admin-dashboard .ui-dialog-titlebar,
#g-admin-dashboard-sidebar .ui-dialog-titlebar {
padding: .2em .4em;
}
/** *******************************************************************
* 7) Module color overrides
*********************************************************************/
/* User admin form ~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-user-admin-list .g-admin {
color: #2e6e9e !important; /* fcDefault; */
font-weight: bold;
}
.g-group {
border: 1px solid #aaaaaa !important; /* borderColorContent */
}
.g-group h4 {
background-color: #dfeffc !important; /* bgColorDefault */
border-bottom: 1px dashed #2e6e9e !important; /* fcDefault; */
}
.g-default-group h4,
.g-default-group .g-user {
color: #2e6e9e !important; /* fcDefault; */
}
/** *******************************************************************
* 8) States and interactions
*********************************************************************/
.g-draggable:hover {
border: 1px dashed #fbec88; /* bgColorHighlight */
}
.ui-sortable .g-target,
.ui-state-highlight {
background-color: #fbec88; /* bgColorHighlight */
border: 2px dotted #fad42e; /* borderColorHighlight */
}
/** *******************************************************************
* 9) Right to left styles
*********************************************************************/
.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;
}
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.rtl .sf-menu a {
border-right:1px solid #fff;
}
.rtl .sf-sub-indicator {
background: url("themeroller/images/ui-icons_2e83ff_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
/*** 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;
}

View File

@ -0,0 +1,79 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<script type="text/javascript" src="<?= url::file("lib/swfobject.js") ?>"></script>
<script type="text/javascript" src="<?= url::file("lib/uploadify/jquery.uploadify.min.js") ?>"></script>
<script type="text/javascript">
$("#g-admin-themeroller").ready(function() {
$("#g-themeroller-zip").uploadify({
'uploader' : '<?= url::file("lib/uploadify/uploadify.swf") ?>',
'script' : '<?= url::site($action) ?>',
'cancelImg' : '<?= url::file("lib/uploadify/cancel.png") ?>',
'fileExt' : '*.zip',
scriptData: <?= json_encode($script_data) ?>,
'fileDesc' : <?= t("Archive file")->for_js() ?>,
'auto' : true,
'multi' : false,
'wmode' : 'transparent',
hideButton: true, /* should be true */
});
$("#g-themeroller-zipUploader").css({height: '25px', width: '70px', position: 'absolute'});
});
</script>
<div id="g-admin-themeroller">
<h1><?= t("Generate theme") ?></h1>
<?= form::open($action, array("method" => "post", "id" => "g-themeroller-form")) ?>
<fieldset>
<ul>
<li><?= access::csrf_form_field() ?></li>
<? if (!$is_writable): ?>
<li class="g-error">
<?= t("The theme directory is not writable. Please ensure that it is writable by the web server") ?>
</li>
<? endif ?>
<li <? if (!empty($errors["name"])): ?> class="g-error"<? endif ?>>
<?= form::label("name", t("Name")) ?>
<?= form::input("name", $form["name"]) ?>
<? if (!empty($errors["name"]) && $errors["name"] == "required"): ?>
<p class="g-error"><?= t("Theme name is required") ?></p>
<? endif ?>
<? if (!empty($errors["name"]) && $errors["name"] == "module_exists"): ?>
<p class="g-error"><?= t("Theme exists") ?></p>
<? endif ?>
</li>
<li <? if (!empty($errors["display_name"])): ?> class="g-error"<? endif ?>>
<?= form::label("display_name", t("Display name")) ?>
<?= form::input("display_name", $form["display_name"]) ?>
<? if (!empty($errors["display_name"]) && $errors["display_name"] == "required"): ?>
<p class="g-error"><?= t("Theme display_name is required")?></p>
<? endif ?>
</li>
<li <? if (!empty($errors["description"])): ?> class="g-error"<? endif ?>>
<?= form::label("description", t("Description")) ?>
<?= form::textarea("description", $form["description"]) ?>
<? if (!empty($errors["description"]) && $errors["description"] == "required"): ?>
<p class="g-error"><?= t("Theme description is required")?></p>
<? endif ?>
</li>
<li>
<?= form::label("is_admin", t("Generate an admin theme")) ?>
<?= form::checkbox("is_admin", "", !empty($form["is_admin"])) ?>
</li>
<li>
<?= form::label("zip_file", t("Upload and generate theme")) ?>
<br />
<?= form::upload(array("name" => "zip_file",
"id" => "g-themeroller-zip",
"accept" => "application/zip, multipart/x-zip")) ?>
<span style="z-index: 1">
<button type="submit"
id="g-generate-theme"
class="<?= $submit_class ?>"
<? if ($not_writable): ?> disabled<? endif ?>>
<?= t("Generate") ?>
</button>
</span>
</li>
</ul>
</fieldset>
</form>
</div>

View File

@ -0,0 +1,863 @@
/**
* Gallery 3 Redmond Theme Screen Styles
*
* @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) Navigation and menus
* 6) jQuery and jQuery UI
* 7) Forms
* 8) States and interactions
* 9) Right-to-left language styles
*/
/** *******************************************************************
* 1) Font sizes, base HTML elements
**********************************************************************/
html {
color: #2e6e9e; /* fcDefault; */
}
body, html {
background-color: #dfeffc; /* bgColorDefault */
font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; /* ffDefault */
font-size: 13px/1.231; /* fsDefault/ gallery_line_height */
}
p {
margin-bottom: 1em;
}
em {
font-style: oblique;
}
h1, h2, h3, h4, h5, strong, th {
font-weight: bold;
}
h1 {
font-size: 1.7em;
}
#g-dialog h1 {
font-size: 1.1em;
}
h2 {
font-size: 1.4em;
}
#g-sidebar .g-block h2 {
font-size: 1.2em;
}
#g-sidebar .g-block li {
margin-bottom: .6em;
}
#g-content,
#g-site-menu,
h3 {
font-size: 1.2em;
}
#g-sidebar,
.g-breadcrumbs {
font-size: .9em;
}
#g-banner,
#g-footer,
.g-message {
font-size: .8em;
}
#g-album-grid .g-item,
#g-item #g-photo,
#g-item #g-movie {
font-size: .7em;
}
/* Links ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
a,
.g-menu a,
#g-dialog a,
.g-button,
.g-button:active {
color: #2e6e9e !important; /* fcDefault; */
cursor: pointer !important;
text-decoration: none;
-moz-outline-style: none;
}
a:hover,
.g-button:hover,
a.ui-state-hover,
input.ui-state-hover,
button.ui-state-hover {
color: #1d5987 !important; /* fcHover */
text-decoration: none;
-moz-outline-style: none;
}
a:hover,
#g-dialog a:hover {
text-decoration: underline;
}
.g-menu a:hover {
text-decoration: none;
}
#g-dialog #g-action-status li {
width: 400px;
white-space: normal;
padding-left: 32px;
}
/* Tables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
table {
width: 100%;
}
#g-content table {
margin: 1em 0;
}
caption,
th {
text-align: left;
}
th,
td {
border: none;
border-bottom: 1px solid #aaaaaa; /* borderColorContent */
padding: .5em;
}
td {
vertical-align: top;
}
.g-even {
background-color: #fcfdfd; /* bgColorContent */
}
.g-odd {
background-color: #dfeffc; /* bgColorDefault */
}
/** *******************************************************************
* 2) Reusable content blocks
*********************************************************************/
.g-block h2 {
background-color: #dfeffc; /* bgColorDefault */
padding: .3em .8em;
}
.g-block-content {
margin-top: 1em;
}
/*** ******************************************************************
* 3) Page layout containers
*********************************************************************/
/* View container ~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-view {
background-color: #fcfdfd; /* bgColorContent */
border: 1px solid #a6c9e2; /* borderColorContent */
border-bottom: none;
}
/* Layout containers ~~~~~~~~~~~~~~~~~~~~~ */
#g-header {
margin-bottom: 1em;
}
#g-banner {
background-color: #5c9ccc; /* bgColorHeader */
border-bottom: 1px solid #4297d7; /* borderColorHeader */
color: #ffffff; /* fcHeader */
min-height: 5em;
padding: 1em 20px;
position: relative;
}
#g-content {
padding-left: 20px;
position: relative;
width: 696px;
}
#g-sidebar {
padding: 0 20px;
width: 220px;
}
#g-footer {
background-color: #5c9ccc; /* bgColorHeader */
border-top: 1px solid #4297d7; /* borderColorHeader */
margin-top: 20px;
padding: 10px 20px;
color: #ffffff; /* fcHeader */
}
/* Status and validation messages ~~~~ */
.g-message-block {
border: 1px solid #a6c9e2; /* borderColorContent */
}
#g-site-status li {
border-bottom: 1px solid #a6c9e2; /* borderColorContent */
}
/* Breadcrumbs ~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-breadcrumbs li {
background: transparent url('../images/ico-separator.gif') no-repeat scroll left center;
}
.g-breadcrumbs .g-first {
background: none;
}
/* Pagination ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator {
}
.g-paginator li {
}
.g-paginator .g-info {
background: none;
}
/* Dialogs and panels ~~~~~~~~~~~~~~~~~~ */
#g-dialog {
text-align: left;
}
#g-dialog legend {
display: none;
}
#g-dialog .g-cancel {
margin: .4em 1em;
}
#g-panel {
display: none;
padding: 1em;
}
/* Inline layout ~~~~~~~~~~ */
.g-inline li {
float: left;
margin-left: 1.8em;
padding-left: 0 !important;
}
.g-inline li.g-first {
margin-left: 0;
}
/** *******************************************************************
* 4) Content blocks in specific layout containers
*********************************************************************/
/* Header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-banner #g-quick-search-form {
clear: right;
float: right;
margin-top: 1em;
}
#g-banner #g-quick-search-form input[type='text'] {
width: 17em;
}
#g-content .g-block h2 {
background-color: transparent;
padding-left: 0;
}
/* Sidebar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-sidebar .g-block-content {
padding-left: 1em;
}
#g-sidebar #g-image-block {
overflow: hidden;
}
/* Album content ~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-content #g-album-grid {
margin: 1em 0;
position: relative;
z-index: 1;
}
#g-content #g-album-grid .g-item {
background-color: #fcfdfd; /* bgColorContent */
border: 1px solid #fcfdfd; /* bgColorContent */
float: left;
padding: .6em 8px;
position: relative;
text-align: center;
width: 213px;
z-index: 1;
}
#g-content #g-album-grid .g-item h2 {
margin: 5px 0;
}
#g-content .g-photo h2,
#g-content .g-item .g-metadata {
display: none;
margin-bottom: .6em;
}
#g-content #g-album-grid .g-album {
background-color: #dfeffc; /* bgColorDefault */
}
#g-content #g-album-grid .g-album h2 span.g-album {
background: transparent url('../images/ico-album.png') no-repeat top left;
display: inline-block;
height: 16px;
margin-right: 5px;
width: 16px;
}
#g-content #g-album-grid .g-hover-item {
border: 1px solid #a6c9e2; /* borderColorContent */
position: absolute !important;
z-index: 1000 !important;
}
#g-content .g-hover-item h2,
#g-content .g-hover-item .g-metadata {
display: block;
}
#g-content #g-album-grid #g-place-holder {
position: relative;
visibility: hidden;
z-index: 1;
}
/* Search results ~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-content #g-search-results {
margin-top: 1em;
padding-top: 1em;
}
/* Individual photo content ~~~~~~~~~~~~~~ */
#g-item {
position: relative;
width: 100%;
}
#g-item #g-photo,
#g-item #g-movie {
padding: 2.2em 0;
position: relative;
}
#g-item img.g-resize,
#g-item a.g-movie {
display: block;
margin: 0 auto;
}
/* Footer content ~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-footer #g-credits li {
padding-right: 1.2em;
}
/* In-line editing ~~~~~~~~~~~~~~~~~~~~~~ */
#g-in-place-edit-message {
background-color: #fcfdfd; /* bgColorContent */
}
/** *******************************************************************
* 5) Navigation and menus
*********************************************************************/
/* Login menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-banner #g-login-menu {
color: #ffffff; /* fcHeader; */
float: right;
}
#g-banner #g-login-menu li {
padding-left: 1.2em;
}
/* Site Menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-site-menu {
bottom: 0;
left: 140px;
position: absolute;
}
#g-site-menu ul {
margin-bottom: 0 !important;
}
/* Context Menu ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-context-menu {
background-color: #fcfdfd; /* bgColorContent */
bottom: 0;
left: 0;
position: absolute;
}
.g-item .g-context-menu {
display: none;
margin-top: 2em;
width: 100%;
}
#g-item .g-context-menu ul {
display: none;
}
.g-context-menu li {
border-left: none;
border-right: none;
border-bottom: none;
}
.g-context-menu li a {
display: block;
line-height: 1.6em;
}
.g-hover-item .g-context-menu {
display: block;
}
.g-hover-item .g-context-menu li {
text-align: left;
}
.g-hover-item .g-context-menu a:hover {
text-decoration: none;
}
/* View Menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#g-view-menu {
margin-bottom: 1em;
}
#g-view-menu a {
background-repeat: no-repeat;
background-position: 50% 50%;
height: 28px !important;
width: 43px !important;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow.png');
}
#g-view-menu .g-fullsize-link {
background-image: url('../images/ico-view-fullsize.png');
}
#g-view-menu #g-comments-link {
background-image: url('../images/ico-view-comments.png');
}
#g-view-menu #g-print-digibug-link {
background-image: url('../images/ico-print.png');
}
/** *******************************************************************
* 6) jQuery and jQuery UI
*********************************************************************/
/* jQuery UI Dialog ~~~~~~~~~~~~~~~~~~~~~~ */
.ui-widget-overlay {
background: #aaaaaa; /* bgColorOverlay */
opacity: .7;
}
/* Rotate icon, ThemeRoller only provides one of these */
.ui-icon-rotate-ccw {
background-position: -192px -64px;
}
.ui-icon-rotate-cw {
background-position: -208px -64px;
}
/* Superfish menu overrides ~~~~~~~~~~~~~~ */
.sf-menu a {
border-left:1px solid #a6c9e2; /* borderColorContent */
}
.sf-menu li,
.sf-menu li li,
.sf-menu li li ul li {
background-color: #dfeffc; /* bgColorDefault */
}
.sf-menu li:hover {
background-color: #d0e5f5; /* bgColorHover */
}
.sf-menu li:hover,
.sf-menu li.sfHover,
.sf-menu a:focus,
.sf-menu a:hover,
.sf-menu a:active {
background-color: #d0e5f5 !important; /* bgColorHover */
}
.sf-sub-indicator {
background-image: url("themeroller/images/ui-icons_2e83ff_256x240.png");
height: 16px;
width: 16px;
}
a > .sf-sub-indicator {
background-position: -64px -16px !important;
top: 0.6em;
}
.sf-menu ul a > .sf-sub-indicator {
background-position: -32px -16px !important;
}
/** *******************************************************************
* 7) Forms
*********************************************************************/
fieldset {
border: 1px solid #a6c9e2; /* borderColorContent */
}
legend {
font-weight: bold;
color: #2e6e9e; /* fcDefault; */
}
input.textbox,
input[type="text"],
input[type="password"],
textarea {
border: 1px solid #79b7e7; /* borderColorActive */
border-top-color: #a6c9e2; /* borderColorContent */
border-left-color: #a6c9e2; /* borderColorContent */
color: #222222; /* fcContent */
}
input:focus,
input.textbox:focus,
input[type=text]:focus,
textarea:focus,
option:focus {
background-color: #f5f8f9 ; /* bgColorActive */
color: #222222; /* fcContent */
}
/* Forms in dialogs and panels ~~~~~~~~~ */
label,
input[readonly] {
background-color: #fcfdfd; /* bgColorContent */
color: #2e6e9e; /* fcDefault; */
}
/* Short forms ~~~~~~~~~~~~~~~~~~~~~~~ */
.g-short-form .textbox,
.g-short-form input[type=text] {
color: #222222; /* fcContent */
}
.g-short-form .textbox.g-error {
border: 1px solid #cd0a0a; /* borderColorError */
color: #cd0a0a; /* fcError */
}
/** *******************************************************************
* 8) States and interactions
*********************************************************************/
.g-active,
.g-enabled,
.g-available,
.g-selected,
.g-highlight {
font-weight: bold;
}
.g-inactive,
.g-disabled,
.g-unavailable,
.g-uneditable,
.g-locked,
.g-deselected,
.g-understate {
color: #a6c9e2; /* borderColorContent */
font-weight: normal;
}
.g-editable:hover {
background-color: #f5f8f9; /* bgColorActive */
}
form li.g-error,
form li.g-info,
form li.g-success,
form li.g-warning {
background-image: none;
}
form.g-error input[type="text"],
li.g-error input[type="text"],
form.g-error input[type="password"],
li.g-error input[type="password"],
form.g-error input[type="checkbox"],
li.g-error input[type="checkbox"],
form.g-error input[type="radio"],
li.g-error input[type="radio"],
form.g-error textarea,
li.g-error textarea,
form.g-error select,
li.g-error select {
border: 2px solid #cd0a0a; /* fcError */;
}
.g-error,
.g-denied,
tr.g-error td.g-error,
#g-add-photos-status .g-error {
background: #cd0a0a /* borderColorError */ url('../images/ico-error.png') no-repeat .4em 50%;
color: #cd0a0a; /* fcError */;;
}
.g-info {
background: #fcfdfd /* bgColorContent */ url('../images/ico-info.png') no-repeat .4em 50%;
}
.g-success,
.g-allowed,
#g-add-photos-status .g-success {
background: #fcfdfd /* bgColorContent */ url('../images/ico-success.png') no-repeat .4em 50%;
}
tr.g-success {
background-image: none;
}
tr.g-success td.g-success {
background-image: url('../images/ico-success.png');
}
.g-warning,
tr.g-warning td.g-warning {
background: #fbec88 /* bgColorHighlight */ url('../images/ico-warning.png') no-repeat .4em 50%;
}
form .g-error {
background-color: #fef1ec; /* bgColorError */
}
.g-default {
background-color: #dfeffc; /* bgColorDefault */
font-weight: bold;
}
.g-draggable:hover {
border: 1px dashed #fbec88; /* bgColorHighlight */
}
.ui-sortable .g-target,
.ui-state-highlight {
background-color: #fbec88; /* bgColorHighlight */
border: 2px dotted #fad42e; /* borderColorHighlight */
}
/* Ajax loading indicator ~~~~~~~~~~~~~~~~ */
.g-loading-large,
.g-dialog-loading-large {
background: #fcfdfd /* bgColorContent */ url('../images/loading-large.gif') no-repeat center center !important;
}
.g-loading-small {
background: #fcfdfd /* bgColorContent */ url('../images/loading-small.gif') no-repeat center center !important;
}
/** *******************************************************************
* 9) Right to left language styles
*********************************************************************/
.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;
}
.rtl .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.gif') no-repeat scroll right center;
}
.rtl .g-breadcrumbs .g-first {
background: none;
}
/* 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-right:1px solid #fad42e; /* borderColorHighlight */
}
.rtl .sf-sub-indicator {
background: url("themeroller/images/ui-icons_2e83ff_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
/*** 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;
}