1
0

Merge branch 'master' of git://github.com/rledisez/gallery3-contrib

This commit is contained in:
Bharat Mediratta 2010-01-27 09:27:39 -08:00
commit 2dff991b59
44 changed files with 2146 additions and 0 deletions

View File

@ -0,0 +1,53 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2009 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class jhead_event_Core {
static function item_created($item) {
// Only works on photos
if ( ! $item->is_photo()) {
return;
}
// Locate jhead
if ( ! is_file($path = exec('which jhead'))) {
// @todo throw an exception ?
Kohana::log('error', 'jhead is not installed');
}
$binary = str_replace('\\', '/', realpath(dirname($path)));
$binary .= '/jhead';
$binary .= (PHP_SHLIB_SUFFIX === 'dll') ? '.exe' : '';
if ( ! is_file($binary)) {
// @todo throw an exception ?
Kohana::log('error', 'Unable to locate jhead binary');
}
// Invoke jhead
if ($error = exec(escapeshellcmd($binary).' -q -autorot '.$item->file_path())) {
// @todo throw an exception ?
Kohana::log('error', 'Error during execution of jhead');
}
// Update item
$image_info = getimagesize($item->file_path());
$item->width = $image_info[0];
$item->height = $image_info[1];
$item->save();
}
}

View File

@ -0,0 +1,33 @@
<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2009 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class jhead_installer {
static function install() {
module::set_version("jhead", 1);
}
static function activate() {
}
static function deactivate() {
}
static function uninstall() {
}
}

View File

@ -0,0 +1,3 @@
name = "jhead Autorotation"
description = "Invoke jhead to rotate images according to Exif orientation tag."
version = 1

View File

@ -0,0 +1,68 @@
/*
-----------------------------------------------
Photos
Author: Douglas Bowman
Version: 9 Nov 2004
----------------------------------------------- */
body {
background:#ccb url("img/bg.jpg") repeat-x 0 0;
}
/* Header
----------------------------------------------- */
#path {
border-color:#bba;
}
h1 {
color:#543;
border-color:#ddc;
}
h1 strong {
color:#234;
}
#title h1 {
width:733px;
}
.galleryinfo fieldset {
border-color:#bba;
}
/* Index
----------------------------------------------- */
#gallerydesc {
margin:-110px 20px 0 398px;
}
/* Individual photo
----------------------------------------------- */
#ind {
background-color:#bba;
}
html>body #ind {
background-color:transparent;
}
#comments-form td, #comments-form th, .commentlist dd, .commentlist li {
border-color:#AAAB9B;
}
/* Count
----------------------------------------------- */
#info p.count {
border-color:#ddc;
}
.galleryinfo .count {
background:#bba;
}
/* Footer
----------------------------------------------- */
#footer p {
border-color:#ddc;
color:#887;
}

View File

@ -0,0 +1,81 @@
/*
-----------------------------------------------
Photo Gallery Templates:
Custom Dimensions
----------------------------------------------- */
/* This file containes isolated measurement values you should change if you'd like
to use different dimensions for the main photo. All measurements are based off main
photos' maximum width. Default "MaxWidth" for photos (per template docs) is 480.
------------------------------------------------------------------------------------- */
/* Sets width of main (center) column.
[value] = MaxWidth + 20
EG: 480 + 20 = 500
----------------------------------------------- */
.main {
width:660px;
}
/* Determines position of prev/next thumbnails.
Measurement is distance from center of main
photo to the nearest edge of slide background
image. */
#prev {
/* [value] = (MaxWidth / 2) + 22 */
right:342px;
}
#next {
/* [value] = (MaxWidth / 2) + 25 */
left:345px;
}
/* Determines offset of prev/next hoverable
regions that overlay the main photo. Measurement
is distance from nearest edge of slide
background image back to center of main photo. */
#prev a strong {
/* [value] = 0 - (MaxWidth / 2) - 22 */
right:-342px;
}
#next a strong {
/* [value] = 0 - (MaxWidth / 2) - 25 */
left:-345px;
}
/* Determines position of title and description.
Measurement is distance from center of main
photo to left edge of content.
Note: Second value for background position
should always be 0. */
#desc h1, #desc p {
/* [value] = (MaxWidth / 2) + 25 */
background-position:345px 0;
padding-left:345px;
}
/* Determines position of meta info such as
Photo x of y, date, & keywords. Measurement is
distance from center of main photo to left
edge of content. */
#meta ul {
/* [value] = (MaxWidth / 2) + 25 */
padding-right:345px;
}
/* If customizing the photo dimensions, one
more value needs to change in the Individual
Photo template (t_photo.php). Search for the
following tag:
<$MTSetVar2 name="padvalue" value="480"$>
and change the value to your new photo MaxWidth.
/* End of custom values
------------------------------------------------------------------------------------- */

View File

@ -0,0 +1,113 @@
.ui-widget-overlay {
background: #000;
opacity: 0.7;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.ui-dialog {
background: #e5e5e5;
position: absolute;
/*top: 25px !important;*/
-moz-box-shadow: 10px 10px 5px #fff;
box-shadow: 10px 10px 5px #fff;
}
.ui-dialog-titlebar {
display: none;
}
.ui-dialog-titlebar-close {
display: none;
}
.ui-dialog fieldset {
border: 0;
}
.ui-dialog fieldset legend {
text-align: center;
font-weight: bold;
font-size: 1em;
}
/*#gDialog > form > fieldset {
border: 0;
margin: 0;
padding: 0;
}
#gDialog > form > fieldset > legend {
font-weight: bold;
}
#gDialog > form > fieldset > ul {
list-style-type: none;
margin: 0;
padding: 0;
}
#gDialog > form > fieldset > ul > li > input {
width: 100%;
}
#gPermissions {
}*/
/* Simple uploader ~~~~~~~~~~~~~~~~~~~~~~~ */
#g-add-photos-canvas {
border: 1px solid #ccc;
height: 200px;
margin: .5em 0;
overflow: auto;
width: 469px;
}
#g-add-photos-status {
border: 1px solid #ccc;
height: 125px;
margin: .5em 0;
overflow: auto;
width: 469px;
}
#g-add-photos button {
float: right;
margin-bottom: .5em;
margin-left: .5em;
}
#g-add-photos-status li {
text-align: left;
padding-left: 2em;
}
#g-add-photos-status li.g-success {
background: #d9efc2 url('images/ico-success.png') no-repeat .4em 50%;
width: 429px;
}
#g-add-photos-status li.g-error {
background: #f6cbca url('images/ico-error.png') no-repeat .4em 50%;
width: 429px;
/* color: #f00;*/
}
#g-add-photos-button {
background: #DFEFFC;
border: 1px solid #C5DBEC;
color: #2E6E9E
}
#g-add-photos p {
margin: 0
}
#g-add-photos .g-breadcrumbs li {
padding-top: .5em;
}

View File

@ -0,0 +1,108 @@
body {
background-image: url("../img/bg.jpg");
}
.thumb a strong {
/* MaxWidth / 2 */
width: 320px;
/* MaxHeight */
height: 480px;
}
.vertical .thumb a strong {
/* MaxWidth / 2 */
width: 180px;
/* MaxHeight */
height: 480px;
}
.vertical .main {
width: 380px;
}
.thumb a strong {
margin-top: 11px;
}
.thumb a:hover strong {
background-position:50% 0px !important;
}
.thumb a {
/* thumb size + 31 */
width: 231px !important;
height: 231px !important;
}
#prev, #next {
/* thumb size + 34 */
width: 234px;
}
#prev a, #next a {
/* thumb size + 34 */
width: 231px;
}
#desc, #meta {
/* thumb size + 80 */
top:280px;
}
.slideset .thumb a {
position: relative;
line-height: 234px !important;
text-align: center;
text-indent: 0 !important;
font-size: 12px !important;
}
.slideset .thumb a span {
position: absolute;
line-height: 12px;
bottom: 2px;
width: 100%;
font-size:90%;
line-height:1.4em;
font-family:"Gill Sans","Trebuchet MS",Verdana,Sans-serif;
font-weight:normal;
text-transform:uppercase;
letter-spacing:.2em;
text-align:center;
color:#333;
}
.slideset .thumb a:hover span {
/*background: #ddd;*/
}
.galleryinfo p {
position: relative;
}
.galleryinfo .count {
text-align: center;
}
#next-page {
position: absolute;
right: 0;
clear: both;
}
#footer #credits {
margin: 0;
padding: 0;
list-style-type: none;
}
#footer #credits li {
background: none;
padding: 0;
display: inline;
}
#meta ul#actions {
margin-top: 10px;
}
#meta ul#actions li:first-child {
background:url("../img/divider_l.gif") no-repeat 100% 0;
padding-top:10px;
}
html>body #meta ul#actions li:first-child {
background-image:url("../img/divider_l.png");
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

View File

@ -0,0 +1,73 @@
<!--
/*
The hide/show code is based on an example from the article "Unobtrusive show/hide behavior reloaded" by Bobby van der Sluis
URL: http://www.bobbyvandersluis.com/articles/unobtrusiveshowhide.php
*/
if (document.getElementById) {
if (getCookie('showcomments') != 1) {
document.write('<link rel="stylesheet" type="text/css" href="' + blogrelurl + 'meta/css/comments-hide.css" />');
} else {
document.write('<link rel="stylesheet" type="text/css" href="' + blogrelurl + 'meta/css/comments-show.css" />');
}
window.onload = initCommentState;
}
// Hide all toggleable sections with JavaScript for the highly improbable case that CSS is disabled
// Note that in this case the 'flash of visible content' still will occur
function initCommentState() {
var showBtn = document.getElementById('showcomments');
var hideBtn = document.getElementById('hidecomments');
if ((showBtn) && (hideBtn)) {
if (getCookie('showcomments') != 1) {
document.getElementById('comments').style.display = 'none';
document.getElementById('hidecomments').style.display = 'none';
document.getElementById('showcomments').style.display = 'inline';
} else {
document.getElementById('showcomments').style.display = 'none';
document.getElementById('hidecomments').style.display = 'inline';
}
showBtn.onclick = function() {
showComments();
return false;
}
hideBtn.onclick = function() {
hideComments();
return false;
}
}
var addComment = document.getElementById('addcomment');
var addCommentButton = document.getElementById('addcommentbutton');
addComment.style.display = 'none';
addCommentButton.style.display = 'block';
addCommentButton.onclick = function() {
addComment.style.display = 'block';
addCommentButton.style.display = 'none';
}
}
function hideComments() {
var now = createExpires();
document.getElementById('comments').style.display = 'none';
document.getElementById('showcomments').style.display = 'inline';
document.getElementById('hidecomments').style.display = 'none';
setCookie('showcomments', 0, now, '/', '', '');
}
function showComments() {
var now = createExpires();
document.getElementById('comments').style.display = 'block';
document.getElementById('showcomments').style.display = 'none';
document.getElementById('hidecomments').style.display = 'inline';
setCookie('showcomments', 1, now, '/', '', '');
}
function createExpires() {
var now = new Date();
fixDate(now);
now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
now = now.toGMTString();
return now;
}
//-->

View File

@ -0,0 +1,60 @@
<!--
// Copyright (c) 1996-1997 Athenia Associates.
// http://www.webreference.com/js/
// License is granted if and only if this entire
// copyright notice is included. By Tomer Shiran.
function setCookie (name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) + (expires ? "; expires=" + expires : "") + (path ? "; path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "secure" : "");
document.cookie = curCookie;
}
function getCookie (name) {
var prefix = name + '=';
var c = document.cookie;
var nullstring = '';
var cookieStartIndex = c.indexOf(prefix);
if (cookieStartIndex == -1)
return nullstring;
var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1)
cookieEndIndex = c.length;
return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
function deleteCookie (name, path, domain) {
if (getCookie(name))
document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
function fixDate (date) {
var base = new Date(0);
var skew = base.getTime();
if (skew > 0)
date.setTime(date.getTime() - skew);
}
function rememberMe (f) {
var now = new Date();
fixDate(now);
now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
now = now.toGMTString();
if (f.author != undefined)
setCookie('mtcmtauth', f.author.value, now, '/', '', '');
if (f.email != undefined)
setCookie('mtcmtmail', f.email.value, now, '/', '', '');
if (f.url != undefined)
setCookie('mtcmthome', f.url.value, now, '/', '', '');
}
function forgetMe (f) {
deleteCookie('mtcmtmail', '/', '');
deleteCookie('mtcmthome', '/', '');
deleteCookie('mtcmtauth', '/', '');
f.email.value = '';
f.author.value = '';
f.url.value = '';
}
//-->

View File

@ -0,0 +1,9 @@
/**
* Initialize jQuery UI and Gallery Plugin elements
*/
$(document).ready(function() {
$(".g-dialog-link").gallery_dialog('option', 'position', 'top');
$(".g-dialog-link").gallery_dialog('option', 'draggable', false);
$(".g-ajax-link").gallery_ajax();
});

View File

@ -0,0 +1,111 @@
/**
* Initialize jQuery UI and Gallery Plugins
*/
$(document).ready(function() {
// Initialize Superfish menus (hidden, then shown to address IE issue)
/*$("#g-site-menu .g-menu").hide().addClass("sf-menu");
$("#g-site-menu .g-menu").superfish({
delay: 500,
animation: {
opacity:'show',
height:'show'
},
pathClass: "g-selected",
speed: 'fast'
}).show();*/
// Initialize status message effects
/*$("#g-action-status li").gallery_show_message();*/
// Initialize dialogs
$(".g-dialog-link").gallery_dialog();
// Initialize short forms
/*$(".g-short-form").gallery_short_form();*/
// Apply jQuery UI icon, hover, and rounded corner styles
/*$("input[type=submit]:not(.g-short-form input)").addClass("ui-state-default ui-corner-all");
if ($("#g-view-menu").length) {
$("#g-view-menu ul").removeClass("g-menu").removeClass("sf-menu");
$("#g-view-menu a").addClass("ui-icon");
}*/
// Apply jQuery UI icon and hover styles to context menus
/*if ($(".g-context-menu").length) {
$(".g-context-menu li").addClass("ui-state-default");
$(".g-context-menu a").addClass("g-button ui-icon-left");
$(".g-context-menu a").prepend("<span class=\"ui-icon\"></span>");
$(".g-context-menu a span").each(function() {
var iconClass = $(this).parent().attr("class").match(/ui-icon-.[^\s]+/).toString();
$(this).addClass(iconClass);
});
}*/
// Album view only
/*if ($("#g-album-grid").length) {
// Set equal height for album items and vertically align thumbnails/metadata
$('.g-item').equal_heights().gallery_valign();
// Initialize thumbnail hover effect
$(".g-item").hover(
function() {
// Insert a placeholder to hold the item's position in the grid
var placeHolder = $(this).clone().attr("id", "g-place-holder");
$(this).after($(placeHolder));
// Style and position the hover item
var position = $(this).position();
$(this).css("top", position.top).css("left", position.left);
$(this).addClass("g-hover-item");
// Initialize the contextual menu
$(this).gallery_context_menu();
// Set the hover item's height
$(this).height("auto");
var context_menu = $(this).find(".g-context-menu");
var adj_height = $(this).height() + context_menu.height();
$(this).height(adj_height);
},
function() {
// Reset item height and position
if ($(this).next().height()) {
var sib_height = $(this).next().height();
} else {
var sib_height = $(this).prev().height();
}
if ($.browser.msie && $.browser.version >= 8) {
sib_height = sib_height + 1;
}
$(this).css("height", sib_height);
$(this).css("position", "relative");
$(this).css("top", 0).css("left", 0);
// Remove the placeholder and hover class from the item
$(this).removeClass("g-hover-item");
$("#g-place-holder").remove();
}
);
}*/
// Photo/Item item view
/*if ($("#g-photo,#g-movie").length) {
// Ensure the resized image fits within its container
$("#g-photo,#g-movie").gallery_fit_photo();
// Initialize context menus
var resize = $("#g-photo,#g-movie").gallery_get_photo();
$(resize).hover(function(){
$(this).gallery_context_menu();
});
// Add scroll effect for links to named anchors
$.localScroll({
queue: true,
duration: 1000,
hash: true
});
}*/
// Initialize button hover effect
/*$.fn.gallery_hover_init();*/
});

View File

@ -0,0 +1,6 @@
name = "Stop Design"
description = "A clean and sober theme from <a href="http://stopdesign.com/templates/photos/">stopdesign.com</a>, by Douglas Bowman."
version = 1
author = "Romain LE DISEZ"
site = 1
admin = 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,61 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<? // @todo Set hover on AlbumGrid list items for guest users ?>
<div class="galleryinfo">
<h1><?= html::purify($item->title) ?></h1>
<p class="desc"><?= nl2br(html::purify($item->description)) ?></p>
</div>
<ul class="slideset">
<? if (count($children)): ?>
<!-- Albums first -->
<? foreach ($children as $i => $child): ?>
<? if( $child->is_album() ): ?>
<li class="thumb"><em style="background-image: url('<?= $child->thumb_url() ?>');"><a href="<?= $child->url() ?>"><span><?= html::purify($child->title) ?></span></a></em></li>
<? endif; ?>
<? endforeach ?>
<? foreach ($children as $i => $child): ?>
<? if( !$child->is_album() ): ?>
<li class="thumb"><em style="background-image: url('<?= $child->thumb_url() ?>');"><a href="<?= $child->url() ?>"><span><?= html::purify($child->title) ?></span></a></em></li>
<? endif; ?>
<? endforeach ?>
<? endif; ?>
</ul>
<div class="galleryinfo">
<p>
<em class="count"><?= /* @todo This message isn't easily localizable */
t2("Photo %from_number of %count",
"Photos %from_number - %to_number of %count",
$children_count,
array("from_number" => ($page - 1) * $page_size + 1,
"to_number" => min($page * $page_size, $children_count),
"count" => $children_count)) ?>
</em>
<? if ($page != 1): ?>
<a href="<?= url::site(url::merge(array("page" => $page - 1))) ?>" accesskey="z">&laquo; <?= t("Previous") ?></a>
<? endif; ?>
&nbsp;
<? if ($page != $max_pages): ?>
<a id="next-page" href="<?= url::site(url::merge(array("page" => $page + 1))) ?>" accesskey="x"><?= t("Next") ?> &raquo;</a>
<? endif; ?>
</p>
<? if( access::can("add", $item) || access::can("edit", $item) ): ?>
<p><em class="count">Actions</em></p>
<ul>
<? if( access::can("add", $item) ): ?>
<li><a class="g-dialog-link" href="<?= url::site("simple_uploader/app/$item->id") ?>"><?= t("Add photos") ?></a></li>
<li><a class="g-dialog-link" href="<?= url::site("form/add/albums/$item->id?type=album") ?>"><?= t("Add an album") ?></a></li>
<? endif; ?>
<? if( access::can("edit", $item) ): ?>
<li><a class="g-dialog-link" href="<?= url::site("form/edit/{$item->type}s/$item->id") ?>"><?= t("Edit album") ?></a></li>
<li><a class="g-dialog-link" href="<?= url::site("move/browse/$item->id") ?>"><?= t("Move to another album") ?></a></li>
<li><a class="g-dialog-link" href="<?= url::site("quick/form_delete/$item->id?csrf=$csrf&from_id=$theme_item->id") ?>"><?= t("Delete this album") ?></a></li>
<? endif; ?>
<? if( identity::active_user()->admin ): ?>
<li><a class="g-dialog-link" href="<?= url::site("permissions/browse/$item->id") ?>"><?= t("Edit permissions") ?></a></li>
<? endif; ?>
</ul>
<? endif; ?>
</div>

View File

@ -0,0 +1,10 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<? if ($anchor): ?>
<a name="<?= $anchor ?>"></a>
<? endif ?>
<div id="<?= $css_id ?>" class="g-block">
<h2><?= $title ?></h2>
<div class="g-block-content">
<?= $content ?>
</div>
</div>

View File

@ -0,0 +1,29 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<div id="g-album-header">
<div id="g-album-header-buttons">
<?= $theme->dynamic_top() ?>
</div>
<h1><?= html::clean($title) ?></h1>
</div>
<ul id="g-album-grid" class="ui-helper-clearfix">
<? foreach ($children as $i => $child): ?>
<li class="g-item <?= $child->is_album() ? "g-album" : "" ?>">
<?= $theme->thumb_top($child) ?>
<a href="<?= $child->url() ?>">
<img id="g-photo-id-<?= $child->id ?>" class="g-thumbnail"
alt="photo" src="<?= $child->thumb_url() ?>"
width="<?= $child->thumb_width ?>"
height="<?= $child->thumb_height ?>" />
</a>
<h2><?= html::purify($child->title) ?></h2>
<?= $theme->thumb_bottom($child) ?>
<ul class="g-metadata">
<?= $theme->thumb_info($child) ?>
</ul>
</li>
<? endforeach ?>
</ul>
<?= $theme->dynamic_bottom() ?>
<?= $theme->paginator() ?>

View File

@ -0,0 +1,18 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<div id="g-item">
<?= $theme->photo_top() ?>
<?= $theme->paginator() ?>
<div id="g-movie" class="ui-helper-clearfix">
<?= $item->movie_img(array("class" => "g-movie", "id" => "g-movie-id-{$item->id}")) ?>
<?= $theme->context_menu($item, "#g-movie-id-{$item->id}") ?>
</div>
<div id="g-info">
<h1><?= html::purify($item->title) ?></h1>
<div><?= nl2br(html::purify($item->description)) ?></div>
</div>
<?= $theme->photo_bottom() ?>
</div>

View File

@ -0,0 +1,6 @@
<?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\">Add blocks</a>",
array("url" => html::mark_clean(url::site("admin/sidebar")))) ?></li>
</ul>

View File

@ -0,0 +1,96 @@
<?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">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<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 ?>
<? elseif ($theme->tag()): ?>
<?= t("Browse Tag :: %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<? else: /* Not an item, not a tag, no page_title specified. Help! */ ?>
<?= t("Gallery") ?>
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file("lib/images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->css("_DISABLED_yui/reset-fonts-grids.css") ?>
<?= $theme->css("_DISABLED_superfish/css/superfish.css") ?>
<?= $theme->css("_DISABLED_themeroller/ui.base.css") ?>
<?= $theme->css("_DISABLED_gallery.common.css") ?>
<?= $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.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"): ?>
<?= $theme->script("jquery.scrollTo.js") ?>
<?= $theme->script("gallery.show_full_size.js") ?>
<? elseif ($theme->page_subtype == "movie"): ?>
<?= $theme->script("flowplayer.js") ?>
<? endif ?>
<?= $theme->css("photos.css") ?>
<?= $theme->css("aus04.css") ?>
<?= $theme->css("custom.css") ?>
<?= $theme->css("custom.gallery3.css") ?>
<?= $theme->css("custom.gallery3-dialog.css") ?>
<?= $theme->script("_DISABLED_rememberMe.js") ?>
<?= $theme->script("_DISABLED_comments.js") ?>
<?= $theme->script("stopdesign.ui.init.js") ?>
<?= $theme->head() ?>
</head>
<body>
<div id="content">
<?= $content ?>
</div>
<? if ($theme->item() && !empty($parents)): ?>
<p id="path">
<? $i = 0 ?>
<? foreach ($parents as $parent): ?>
<a href="<?= $parent->url($parent == $theme->item()->parent() ? "show={$theme->item()->id}" : null) ?>">
<?= html::purify($parent->title) ?>
</a> »
<? $i++ ?>
<? endforeach ?>
<?= html::purify($theme->item()->title) ?>
</p>
<? endif ?>
<div id="footer">
<hr />
<p></p>
<ul id="credits">
<li><a href="http://stopdesign.com/templates/photos/">Photo Templates</a> from Stopdesign.</li>
<?= $theme->credits() ?>.
<? if( identity::active_user()->admin ): ?>
<li><a href="<?= url::site("admin") ?>"><?= t("Admin") ?></a></li>
<? endif; ?>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,87 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?
// This is a generic paginator for album, photo and movie pages. 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
//
?>
<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("Photo %from_number of %count",
"Photos %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 ?>
<? else: ?>
<?= t("No photos") ?>
<? 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>

View File

@ -0,0 +1,49 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<div class="<?php if($item->height > $item->width): ?>vertical<?php endif; ?>">
<div id="desc">
<h1><?= html::purify($item->title) ?></h1>
<p><?= nl2br(html::purify($item->description)) ?></p>
</div>
<div class="main">
<p id="photo" style="padding:0 0px"><strong><?= $item->resize_img(array()) ?></strong></p>
</div>
<div id="meta">
<ul>
<li class="count">Photo <?= t("%position of %total", array("position" => $position, "total" => $sibling_count)) ?></li>
<?php if($item->captured): ?><li class="date"><?= strftime("%e %B %Y", $item->captured); ?></li><?php endif; ?>
<li class="tags"><$MTEntryKeywords$></li>
</ul>
<? if( access::can("edit", $item) ): ?>
<ul id="actions">
<li><a class="g-dialog-link" href="<?= url::site("form/edit/{$item->type}s/$item->id") ?>"><?= t($item->type == 'movie' ? "Edit movie" : "Edit photo") ?></a></li>
<li><a class="g-dialog-link" href="<?= url::site("move/browse/$item->id") ?>"><?= t("Move to another album") ?></a></li>
<? if( $item->is_photo() && graphics::can("rotate") ): ?>
<li><a class="g-ajax-link" href="<?= url::site("quick/rotate/$item->id/ccw?csrf=$csrf&from_id=$theme_item->id") ?>" ajax_handler="function() { location.reload(); }"><?= t("Rotate 90° counter clockwise") ?></a></li>
<li><a class="g-ajax-link" href="<?= url::site("quick/rotate/$item->id/cw?csrf=$csrf&from_id=$theme_item->id") ?>" ajax_handler="function() { location.reload(); }"><?= t("Rotate 90° clockwise") ?></a></li>
<? endif; ?>
<li><a class="g-dialog-link" href="<?= url::site("quick/form_delete/$item->id?csrf=$csrf&from_id=$theme_item->id") ?>"><?= t($item->type == 'movie' ? "Delete this movie": "Delete this photo") ?></a></li>
</ul>
<? endif; ?>
</div>
<div class="main"></div>
<div id="prevnext">
<?php if($previous_item): ?>
<div id="prev">
<span class="thumb"><em style="background-image: url('<?= $previous_item->thumb_url() ?>');"><a href="<?= $previous_item->url() ?>" accesskey="z"><strong>Previous: </strong><?= html::purify($previous_item->title) ?></a></em></span>
</div>
<?php endif; ?>
<?php if($next_item): ?>
<div id="next">
<span class="thumb"><em style="background-image: url('<?= $next_item->thumb_url() ?>');"><a href="<?= $next_item->url() ?>" accesskey="z"><strong>Next: </strong><?= html::purify($next_item->title) ?></a></em></span>
</div>
<?php endif; ?>
</div>
</div>
<?= $theme->photo_bottom() ?>

View File

@ -0,0 +1,16 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?= $theme->sidebar_top() ?>
<div id="g-view-menu" class="g-buttonset ui-helper-clearfix">
<? if ($page_subtype == "album"):?>
<?= $theme->album_menu() ?>
<? elseif ($page_subtype == "photo") : ?>
<?= $theme->photo_menu() ?>
<? elseif ($page_subtype == "movie") : ?>
<?= $theme->movie_menu() ?>
<? elseif ($page_subtype == "tag") : ?>
<?= $theme->tag_menu() ?>
<? endif ?>
</div>
<?= $theme->sidebar_blocks() ?>
<?= $theme->sidebar_bottom() ?>