Problem with comparison.
/photogallery/secret.ini.php
0,0 → 1,23
; singapore secret configuration file <http://singapore.sourceforge.net>
;
; <?php die("The contents of this file are hidden"); ?>
;
; these options are hidden from web users
 
[SQL]
;
; settings relevant to all the SQL backends.
; You may ignore these if you are not using this backend.
;
 
sql_user = "gallery"
sql_pass = ""
 
[FTP]
;
; settings used by the safe_mode hack.
; You may ignore these if your server is not running in safe_mode.
;
 
ftp_user = ""
ftp_pass = ""
/photogallery/galleries/Readme.txt
0,0 → 1,0
This directory is used to store galleries and images. It must be writable (CHMOD 777).
/photogallery/galleries/index.php
0,0 → 1,0
<?php header("Location: ../") ?>
/photogallery/singapore.ini
0,0 → 1,272
; singapore main configuration file <http://singapore.sourceforge.net>
;
; Split into sections (Basic, Paths, Functionality, SQL & Advanced)
; for ease of reading. Sections are ignored by the script.
;
; Any of these settings can be overridden in gallery.ini or
; template.ini files. See the readme for more information.
;
; Template specific settings may be found in the template.ini
; file located in the template's root directory.
 
 
[Basic]
;
; settings that most users will want to look at and possibly change
;
 
thumbnail_software = "gd2"
;the software to use to generate the thumbnails
; gd1 = GD v1.x
; gd2 = GD v2.x
; im = ImageMagick v5.x
; im6 = ImageMagick v6.x
gallery_name = "MLAB"
;this is the text that will appear in the title bar of all
;generated pages and also the root node of the crumb line
default_template = "modern"
;the name of the template to use when none is specified
default_language = "en"
;the language code for the language that you would like to use.
;you must have the appropriate language file in the locale directory.
 
gallery_sort_order = "x"
;the order in which galleries will be displayed. Can take the following values:
; p = sort by directory name (ascending)
; P = sort by directory name (descending)
; n = sort by gallery name (ascending)
; N = sort by gallery name (descending)
; i = sort by gallery name (case insensitive, ascending)
; I = sort by gallery name (case insensitive, descending)
; a = sort by artist name (ascending)
; A = sort by artist name (descending)
; d = sort by date (ascending)
; D = sort by date (descending)
; note: date comparison is done as a string comparison on the 'date' database
; field. So for example "2003-10-22" comes before "22 October 2003"
; x = do not sort (default)
image_sort_order = "x"
;the order in which images will be displayed. Can take the following values:
; f = sort by file name (ascending)
; F = sort by file name (descending)
; n = sort by image name (ascending)
; N = sort by image name (descending)
; i = sort by image name (case insensitive, ascending)
; I = sort by image name (case insensitive, descending)
; a = sort by artist name (ascending)
; A = sort by artist name (descending)
; d = sort by date (ascending)
; D = sort by date (descending)
; note: date comparison is done as a string comparison on the 'date' database
; field. So for example "2003-10-22" comes before "22 October 2003"
; l = sort by location (ascending)
; L = sort by location (descending)
; x = do not sort (default)
upload_overwrite = 2
;what to do when uploading an image or gallery that already exists:
; 0 do not overwrite, raise an error (default)
; 1 overwrite without prompting
; 2 attempt to generate a new unique name
 
[Functionality]
;
; some features are turned off by default. Try them out by turning them on here.
;
 
language_flipper = on
;turn on to display a select box which allows users to select a language
 
template_flipper = on
;turn on to display a select box which allows users to select a template
 
full_image_resize = off
;turn on to force all full-size images to be resized to the size specified
;in the current template's template.ini
imagemap_navigation = off
;turns full-size images into image maps so that clicking on
;them takes you forward/backward/up
track_views = on
;whether to keep track of how many times images and
;galleries have been viewed
 
show_views = on
;whether to display how many times images and galleries
;have been viewed
 
show_execution_time = on
;display script execution time in milliseconds
 
enable_iifn = on
;enables parsing of directory and file names of the form
;'artist_name - image_name' into metadata information
obfuscate_email = on
;tries to conceal email addresses from spambots by
;replacing '.' with ' dot ' and '@' with ' at '
enable_clickable_urls = on
;makes the script detect URLs in image & gallery descriptions
;and make them 'clickable' by adding the appropriate HTML
 
remove_jpeg_profile = off
;true to tell ImageMagick to remove any profile information
;from generated thumbnails. This has been known to cause some
;problems hence it being disabled by default
progressive_thumbs = on
;generate progressive JPEG and interlaced GIF & PNG images.
use_mod_rewrite = off
;format generated URLs for use with Apache mod_rewrite
;you need to enable mod_rewrite and create an appropriate .htaccess file
detect_language = off
;attempt to detect user language from browser information
;if this fails the default_language will be used
 
[Paths]
;
; The default paths will be fine for most people.
;
 
pathto_templates = "templates/"
;path to directory containing templates
;must be specified relative to singapore root
pathto_data_dir = "data/"
;path to writable data directory
;must be specified relative to singapore root
pathto_galleries = "galleries/"
;path to galleries directory
;must be specified relative to singapore root
pathto_locale = "locale/"
;path to directory containing internationalisation files (singapore.LANG.pmo)
;must be specified relative to singapore root
 
pathto_convert = "convert"
;full path to ImageMagick convert utility if it is not in your PATH
pathto_unzip = "unzip"
;full path to Info-Zip unzip utility or equivalent if it is not in your PATH
 
;base_path option is in the [Advanced] section below
 
[SQL]
;
; settings relevant to all the SQL backends (except SQLite).
; You may ignore these if you are not using one of these backends.
; For security reasons username and password are stored in secret.ini.php
;
 
sql_host = "localhost"
;name of computer running MySQL server (usually localhost)
;a port number may be included as in "example.com:1234"
sql_database = "singapore"
;database in which information will be stored. this must already exist.
 
sql_prefix = "sg_"
;this will be prefixed to the names of the tables created (galleries, images & users).
;each singapore installation running on same database should have a different prefix.
 
[FTP]
;
; The safe_mode hack uses FTP to create galleries.
; You may ignore these settings if your server is not runing in safe_mode.
; For security reasons username and password are stored in secret.ini.php
;
 
safe_mode_hack = off
;set to on to enable the hack
 
ftp_server = ""
;the hostname you use to login to your website
;a port number may be included as in "example.com:1234"
ftp_base_path = ""
;path from ftp root to singapore root
[Advanced]
;
; settings most users will not need to change
;
 
io_handler = "mysql"
;the type of database to use. recognised values are:
; csv = flat file, no database needed (default)
; mysql = MySQL database (configure sql_* settings above and in secret.ini.php)
; sqlite = SQLite database (does not require any further configuration)
allow_dir_upload = 0
;allow uploading archives containing arbitrary files.
; 0 = allow no one
; 1 = allow all registered users
; 2 = allow only administrators
admin_template_name = "admin_default"
;the name of the admin template to use
thumbnail_quality = 75
;the JPEG quality of generated thumbnails
;100 is the highest quality 0 is the lowest
session_name = "PHPSESSID"
;the name of the admin session. each independent singapore
;installation on the same domain should have a different name
default_charset = "utf-8"
;the character encoding to use for generated pages if none
;is specified in the current language file
index_file_url = "index.php?"
;filename of index file plus any query-string
;if a path is specified it must be absolute
base_path = ""
;file-system-view absolute or relative path to installation
;can usually be left blank
base_url = ""
;web-view absolute or relative url of installation.
;can usually be left blank
recognised_extensions = "jpeg|jpg|jpe|png|gif|bmp|tif|tiff"
;list of file extensions that will be recognised as images
;this forms part of a pcre hence the vertical bars (meaning OR)
 
allowed_tags = "<a><b><i><u><em><strong><strike>"
;list of HTML tags which will be allowed in multiline database entries
;such as description and summary
directory_mode = 0777
;the permissions to set on directories
;(i.e. galleries) created by the script
 
file_mode = 0666
;the permissions to set on files (thumbnails, logs,
;images & metadata files) created by the script.
[GET variable names]
;
; names of variables used to pass information in URLs
; you will only need to change these if there is a conflict with
; already existing variables and the installation is being integrated.
;
 
url_gallery = "gallery"
url_image = "image"
url_startat = "startat"
url_action = "action"
url_lang = "lang"
url_template = "template"
/photogallery/Readme.txt
0,0 → 1,21
 
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
* singapore - Copyright 2003 Tamlyn Rhodes <tam@zenology.org> *
* *
* singapore 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. *
* *
* singapore 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; if not, write to the Free Software Foundation, *
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 
See docs/ or http://singapore.sourceforge.net/ for more information.
/photogallery/index.php
0,0 → 1,37
<?php
 
/**
* Main file drives the gallery.
*
* Do not include this file into another page; include external.php instead.
*
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: index.php,v 1.21 2006/08/05 19:56:32 thepavian Exp $
*/
 
//include main class
require_once "includes/singapore.class.php";
 
//create a wrapper
$sg = new Singapore();
 
//set session arg separator to be xml compliant
ini_set("arg_separator.output", "&amp;");
 
//only start session if session is already registered
if(isset($_REQUEST[$sg->config->session_name])) {
//start session
session_name($sg->config->session_name);
@session_start();
}
 
//send content-type and character encoding header
@header("Content-type: text/html; charset=".$sg->character_set);
 
//pass control over to template
@include $sg->config->base_path.$sg->config->pathto_current_template."index.tpl.php";
 
?>
/photogallery/external.php
0,0 → 1,54
<?php
 
/**
* Alternate file to drive the gallery designed to be included within another
* page.
*
* This page will only send content-type headers if they have not already
* been sent. Placing a call to ob_start() within the including page before any
* content has been output will allow singapore to use non-default charsets.
*
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: external.php,v 1.4 2006/08/07 10:04:28 thepavian Exp $
*/
 
//you may leave this blank as it will be automatically detected
$relativePath = "";
 
//check whether this file has been included by another and if
//so calculate the relative path and instantiate $sg with it
if(isset($_SERVER["SCRIPT_FILENAME"]) && realpath(__FILE__) != realpath($_SERVER["SCRIPT_FILENAME"])) {
//split each path into chunks
$you = explode(DIRECTORY_SEPARATOR,dirname(realpath($_SERVER["SCRIPT_FILENAME"])));
$me = explode(DIRECTORY_SEPARATOR,dirname(realpath(__FILE__)));
$i=0;
//find at what level paths first differ
while($i<count($you) && $i<count($me) && $you[$i] == $me[$i]) $i++;
//travel up appropriate number of directories
for($j=$i;$j<count($you);$j++) $relativePath .= "../";
//travel down appropriate directories
for($j=$i;$j<count($me); $j++) $relativePath .= $me[$j]."/";
 
//otherwise print an error as this is not how external.php is supposed to work.
} else {
die("This file is not intended to be used in this way. Please see the singapore integration guide.");
}
 
//include main class
require_once $relativePath."includes/singapore.class.php";
 
//create a wrapper
$sg = new Singapore($relativePath);
 
//send content-type and character encoding header
if(!headers_sent())
header("Content-type: text/html; charset=".$sg->character_set);
 
//pass control over to template
@include $sg->config->base_path.$sg->config->pathto_current_template."index.tpl.php";
 
?>
/photogallery/admin.php
0,0 → 1,43
<?php
 
/**
* Admin interface file.
*
* Checks the selected 'action', checks user permissions, calls the appropriate
* methods and sets the required include file. Finally it includes the admin
* template's index file.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @package singapore
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: admin.php,v 1.36 2006/01/27 13:31:24 tamlyn Exp $
*/
 
//include admin class
require_once "includes/admin.class.php";
 
//create the admin object
$sg = new sgAdmin();
 
//set session arg separator to be xml compliant
ini_set("arg_separator.output", "&amp;");
 
//start session
session_name($sg->config->session_name);
@session_start();
 
//load user details (must be done after session_start)
$sg->loadUser();
 
//send content-type and character encoding header
@header("Content-type: text/html; charset=".$sg->character_set);
 
//perform admin action
$sg->doAction();
 
//pass control over to template
include $sg->config->pathto_admin_template."index.tpl.php";
 
 
?>
/photogallery/tools/cleanup.php
0,0 → 1,59
<?php
 
/**
* This file attempts to recursively make all files in the parent directory
* (i.e. the singapore root directory) writable. This will, in general, only
* succeed on server-owned content hence making it deletable by FTP users.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2004 Tamlyn Rhodes
* @version $Id: cleanup.php,v 1.4 2006/03/02 16:14:03 tamlyn Exp $
*/
 
/**
* Recursively attempts to make all files and directories in $dir writable
*
* @param string full directory name (must end with /)
*/
function makeWritable($dir)
{
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
//ignore current and parent dirs and php files
if ($file == '.' || $file == '..' || substr($file, strlen($file)-4)=='.php') continue;
$fullfile = $d->path . $file;
if(@chmod($fullfile,0777))
echo "Made $fullfile writable.<br />";
if (is_dir($fullfile))
makeWritable($fullfile."/");
}
}
}
 
 
 
?>
<!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">
<head>
<title>cleanup script</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>Fixing file permissions</h1>
 
<p><?php
//start with parent directory (singapore root)
makeWritable("../");
?></p>
 
<p>All done! <a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/tools/compile.php
0,0 → 1,215
<?php
/**
* This file merges the two PO template files (singapore.pot and singapore.admin.pot)
* with all existing language files (singapore.LANG.po)
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: compile.php,v 1.9 2006/04/29 16:18:52 tamlyn Exp $
*/
 
// Programs to call (insert path to them if necessary)
$GETTEXT_MERGE = "msgmerge";
$BASEPATH = realpath("..")."/";
 
 
//require config class
require_once $BASEPATH."includes/config.class.php";
 
//get config object
$config = sgConfig::getInstance();
$config->loadConfig($BASEPATH."singapore.ini");
 
$OUTPUTPATH = $BASEPATH.$config->pathto_locale;
$standardPot = $OUTPUTPATH."singapore.pot";
$adminPot = $OUTPUTPATH."singapore.admin.pot";
$createbackups = true;
 
/**
* Parses a directory and returns full path to all the files
* matching the filter (file name suffix)
*
* @param string $dir full directory name (must end with /)
* @param string $filter file name suffixes separated by | (optional, default don't filter)
* @return array an array with all files
**/
function parseDirectory ($dir, $filter = 'php|html|tpl|inc')
{
$ret = array();
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$fullfile = $d->path . $file;
if (is_dir($fullfile)) $ret = array_merge($ret,parseDirectory($fullfile."/"));
else if (!$filter || preg_match("/\.({$filter})$/i", $file)) $ret[] = $fullfile;
}
}
return $ret;
}
 
 
/**
* Parses a PO file and writes a file with
* serialized strings for PHP
*
* @param string $input file to read from
* @param string $output file to write to
* @return bool success
**/
function parsePO ($input, $output)
{
// Open PO-file
file_exists($input) or die("The file {$input} doesn't exit.\n");
$fp = @fopen($input, "r") or die("Couldn't open {$input}.\n");
 
$type = 0;
$strings = array();
$escape = "\n";
$string = "";
$plural = 0;
$header = "";
while (!feof($fp)) {
$line = trim(fgets($fp,1024));
if ($line == "" || $line[0] == "#") continue;
// New (msgid "text")
if (preg_match("/msgid[[:space:]]+\"(.+)\"$/i", $line, $m)) {
$type = 1;
$string = stripcslashes($m[1]);
// New id on several rows (msgid "") or header
} elseif (preg_match("/msgid[[:space:]]+\"\"$/i", $line, $m)) {
$type = 2;
$string = "";
// Add to id on several rows ("")
} elseif (preg_match("/^\"(.*)\"$/i", $line, $m) && ($type == 1 || $type == 2 || $type == 3)) {
$type = 3;
$string .= stripcslashes($m[1]);
// New string (msgstr "text")
} elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $m) && ($type == 1 || $type == 3) && $string) {
$strings[$string] = stripcslashes($m[1]);
$type = 4;
// New string on several rows (msgstr "")
} elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $m) && ($type == 1 || $type == 3) && $string) {
$type = 4;
$strings[$string] = "";
// Add to string on several rows ("")
} elseif (preg_match("/^\"(.*)\"$/i", $line, $m) && $type == 4 && $string) {
$strings[$string] .= stripcslashes($m[1]);
/////Plural forms/////
// New plural id (msgid_plural "text")
} elseif (preg_match("/msgid_plural[[:space:]]+\".*\"$/i", $line, $m)) {
$type = 6;
// New plural string (msgstr[N] "text")
} elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"(.+)\"$/i", $line, $m) && ($type == 6) && $string) {
$plural = $m[1];
$strings[$string][$plural] = stripcslashes($m[2]);
$type = 6;
// New plural string on several rows (msgstr[N] "")
} elseif (preg_match("/msgstr\[(\d+)\][[:space:]]+\"\"$/i", $line, $m) && ($type == 6) && $string) {
$plural = $m[1];
$strings[$string][$plural] = "";
$type = 6;
// Add to plural string on several rows ("")
} elseif (preg_match("/^\"(.*)\"$/i", $line, $m) && $type == 6 && $string) {
$strings[$string][$plural] .= stripcslashes($m[1]);
/////Header section/////
// Start header section
} elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"$/i", $line, $m) && $type == 2 && !$string) {
$header = stripcslashes($m[1]);
$type = 5;
// Start header section
} elseif (preg_match("/msgstr[[:space:]]+\"\"$/i", $line, $m) && !$string) {
$header = "";
$type = 5;
// Add to header section
} elseif (preg_match("/^\"(.*)\"$/i", $line, $m) && $type == 5) {
$header .= stripcslashes($m[1]);
// Reset
} else {
unset($strings[$string]);
$type = 0;
$string = "";
$plural = 0;
}
}
 
// Close PO-file
fclose($fp);
// Extract plural forms from header
if(preg_match("/Plural-Forms:[[:space:]]+(.+)/i", $header, $m)) {
$pluralString = str_replace("n","\$n",$m[1]);
$pluralString = str_replace(" plural","\$plural",$pluralString);
} else {
$pluralString = "\$nplurals=1; \$plural=\$n==1?0:1;";
}
// Extract character set from header
if(preg_match("/Content-Type:(.+)charset=(.+)/i", $header, $m))
$charset = $m[2];
else
$charset = "";
// Extract language name from header
if(preg_match("/Language-Team:[[:space:]]+([^<\n]+)/i", $header, $m))
$language = $m[1];
else
$language = "Unknown";
$strings[0]["charset"] = $charset;
$strings[0]["language"] = $language;
$strings[0]["plural"] = $pluralString;
// Open data file for writing
$fp = @fopen($output, "wb") or die("Couldn't open file ({$output}).\n");
fwrite($fp, serialize($strings));
fclose($fp);
//set permissions on new PMO file
@chmod($output, octdec($GLOBALS['config']->file_mode));
 
// Return
return true;
}
 
 
?>
<!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">
<head>
<title>i18n po compiler</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>i18n po compiler</h1>
 
<p><?php
$files = parseDirectory($OUTPUTPATH, 'po');
foreach ($files as $file) {
if (!preg_match("/singapore\.(admin\.)?[\w]+\.po$/i", $file)) continue;
$outfile = preg_replace("/\.[^\.]+$/", ".pmo", $file);
if(parsePO($file, $outfile))
echo "Parsed $file to $outfile<br />";
else
echo "Could not parse $file<br />";
}
 
?>
</p>
 
<p>All operations complete. <a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/tools/convertdb.php
0,0 → 1,278
<?php
 
//permissions bit flags
define("SG_GRP_READ", 1);
define("SG_GRP_EDIT", 2);
define("SG_GRP_ADD", 4);
define("SG_GRP_DELETE", 8);
define("SG_WLD_READ", 16);
define("SG_WLD_EDIT", 32);
define("SG_WLD_ADD", 64);
define("SG_WLD_DELETE", 128);
 
 
function getGallery($path)
{
$gal = new sgGallery('.');
 
$fp = @fopen($path."/metadata.csv","r");
if($fp) {
 
while($temp[] = fgetcsv($fp,2048));
fclose($fp);
@list(
$gal->filename,
,
$gal->owner,
$gal->groups,
$gal->permissions,
$gal->categories,
$gal->name,
$gal->artist,
$gal->email,
$gal->copyright,
$gal->desc,
$gal->summary,
$gal->date
) = $temp[1];
for($i=0;$i<count($temp)-3;$i++) {
$gal->images[$i] = new sgImage();
list(
$gal->images[$i]->filename,
$gal->images[$i]->thumbnail,
$gal->images[$i]->owner,
$gal->images[$i]->groups,
$gal->images[$i]->permissions,
$gal->images[$i]->categories,
$gal->images[$i]->name,
$gal->images[$i]->artist,
$gal->images[$i]->email,
$gal->images[$i]->copyright,
$gal->images[$i]->desc,
$gal->images[$i]->location,
$gal->images[$i]->date,
$gal->images[$i]->camera,
$gal->images[$i]->lens,
$gal->images[$i]->film,
$gal->images[$i]->darkroom,
$gal->images[$i]->digital
) = $temp[$i+2];
//don't get image size and type
}
} else {
//selected gallery does not exist or no metadata
return null;
}
return $gal;
}
 
function putGallery($gallery, $path) {
//backup data file
copy($path."/metadata.csv", $path."/metadata.bak");
$fp = fopen($path."/metadata.csv","w");
if(!$fp) return false;
$success = true;
 
$success &= (bool) fwrite($fp,"filename,thumbnail,owner,group(s),permissions,catergories,image name,artist name,artist email,copyright,image description,image location,date taken,camera info,lens info,film info,darkroom manipulation,digital manipulation");
$success &= (bool) fwrite($fp,"\n\"".
$gallery->filename."\",,".
$gallery->owner.",".
$gallery->groups.",".
$gallery->permissions.",".
$gallery->categories.',"'.
str_replace('"','""',$gallery->name).'","'.
str_replace('"','""',$gallery->artist).'","'.
str_replace('"','""',$gallery->email).'","'.
str_replace('"','""',$gallery->copyright).'","'.
str_replace('"','""',$gallery->desc).'","'.
str_replace('"','""',$gallery->summary).'","'.
str_replace('"','""',$gallery->date).'"'
);
for($i=0;$i<count($gallery->images);$i++)
$success &= (bool) fwrite($fp,"\n\"".
$gallery->images[$i]->filename."\",".
$gallery->images[$i]->thumbnail.",".
$gallery->images[$i]->owner.",".
$gallery->images[$i]->groups.",".
$gallery->images[$i]->permissions.",".
$gallery->images[$i]->categories.',"'.
str_replace('"','""',$gallery->images[$i]->name).'","'.
str_replace('"','""',$gallery->images[$i]->artist).'","'.
str_replace('"','""',$gallery->images[$i]->email).'","'.
str_replace('"','""',$gallery->images[$i]->copyright).'","'.
str_replace('"','""',$gallery->images[$i]->desc).'","'.
str_replace('"','""',$gallery->images[$i]->location).'","'.
str_replace('"','""',$gallery->images[$i]->date).'","'.
str_replace('"','""',$gallery->images[$i]->camera).'","'.
str_replace('"','""',$gallery->images[$i]->lens).'","'.
str_replace('"','""',$gallery->images[$i]->film).'","'.
str_replace('"','""',$gallery->images[$i]->darkroom).'","'.
str_replace('"','""',$gallery->images[$i]->digital).'"'
);
$success &= (bool) fclose($fp);
 
return $success;
}
 
function setPerms($obj) {
$obj->permissions = 0;
if(!empty($_POST["sgGrpRead"])) $obj->permissions |= SG_GRP_READ;
if(!empty($_POST["sgGrpEdit"])) $obj->permissions |= SG_GRP_EDIT;
if(!empty($_POST["sgGrpAdd"])) $obj->permissions |= SG_GRP_ADD;
if(!empty($_POST["sgGrpDelete"])) $obj->permissions |= SG_GRP_DELETE;
if(!empty($_POST["sgWldRead"])) $obj->permissions |= SG_WLD_READ;
if(!empty($_POST["sgWldEdit"])) $obj->permissions |= SG_WLD_EDIT;
if(!empty($_POST["sgWldAdd"])) $obj->permissions |= SG_WLD_ADD;
if(!empty($_POST["sgWldDelete"])) $obj->permissions |= SG_WLD_DELETE;
$obj->groups = $_REQUEST["sgGroups"];
$obj->owner = $_REQUEST["sgOwner"];
return $obj;
}
 
 
function convertDirectory ($path)
{
if (is_dir($path)) {
$gallery = getGallery($path);
echo "<ul><li>Checking $path<br />\n";
if($gallery) {
if($gallery->summary != "" && empty($_REQUEST["convertOverwrite"]))
echo "Did NOT overwrite non-empty summary in $path<br />\n";
else {
if($_REQUEST["convertType"]!='none')
$gallery->summary = $gallery->desc;
if($_REQUEST["convertType"]=='move')
$gallery->desc = "";
}
 
$gallery = setPerms($gallery);
for($i=0; $i<count($gallery->images); $i++)
$gallery->images[$i] = setPerms($gallery->images[$i]);
if(putGallery($gallery,$path))
echo "Successfully converted $path<br />\n";
else
echo "Problem saving data file for $path<br />\n";
} else
echo "Skipping $path<br />\n";
$d = dir($path);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$path = $d->path."/".$file;
if (is_dir($path)) {
convertDirectory($path);
}
}
echo "</li></ul>\n";
}
}
 
?>
<!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">
<head>
<title>database converter</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>database converter</h1>
 
<?php
if(isset($_REQUEST["convertType"])) {
 
include "../includes/config.class.php";
include "../includes/gallery.class.php";
include "../includes/image.class.php";
$config = new sgConfig("../singapore.ini");
$config->base_path = "../";
//echo "<ul>\n";
convertDirectory($config->base_path.$config->pathto_galleries);
//echo "</ul>\n";
echo "<p>All operations complete.</p>\n";
 
} else { ?>
<p>This will convert all your metadata files from singapore 0.9.6, 0.9.7, 0.9.8 or 0.9.9 to 0.9.10.</p>
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<h3>summary field</h3>
<p>There is a new gallery summary field that is displayed instead of the
description in the parent gallery. You can choose to either copy or move the
old description field to the summary field or leave both untouched:</p>
 
<p><input type="radio" class="radio" name="convertType" value="copy" checked="true" /> Copy<br />
<input type="radio" class="radio" name="convertType" value="move" /> Move<br />
<input type="radio" class="radio" name="convertType" value="none" /> Neither<br />
 
<p>By default only empty summary fields will be written to. Check this option to
allow the summary field to be overwritten <input type="checkbox" class="checkbox" name="convertOverwrite" /></p>
 
<h3>permissions</h3>
 
<p>This version introduces multiple authorised users and image &amp; gallery
permissions. Please choose the default permissions that you would like all
objects to be set to. The default permissions selected below are recommended as
they will make all images &amp; galleries readable by everyone but only
modifiable by administrators. See the readme for more information on the
permissions model used by singapore.</p>
<table>
<tr>
<td>Owner</td>
<td><input type="text" name="sgOwner" value="__nobody__" /></td>
</tr>
<tr>
<td>Groups</td>
<td><input type="text" name="sgGroups" value="" /></td>
</tr>
<tr>
<td>Group permissions</td>
<td><div class="inputbox">
<input type="checkbox" class="checkbox" name="sgGrpRead" checked="true"/> Read
<input type="checkbox" class="checkbox" name="sgGrpEdit" /> Edit
<input type="checkbox" class="checkbox" name="sgGrpAdd" /> Add
<input type="checkbox" class="checkbox" name="sgGrpDelete" /> Delete
</div></td>
</tr>
<tr>
<td>World permissions</td>
<td><div class="inputbox">
<input type="checkbox" class="checkbox" name="sgWldRead" checked="true"/> Read
<input type="checkbox" class="checkbox" name="sgWldEdit" /> Edit
<input type="checkbox" class="checkbox" name="sgWldAdd" /> Add
<input type="checkbox" class="checkbox" name="sgWldDelete" /> Delete
</div></td>
</tr>
</table>
 
 
<p>Please note that while the script will create backups of your metadata files
it is highly recommended that you create your own backups for added security.</p>
 
<input type="submit" class="button" value="Go" /></p>
</form>
<?php } ?>
 
<p><a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/tools/extract.php
0,0 → 1,133
<?php
 
/**
* This file searches for strings in all project files matching the filter and
* creates two PO template files (singapore.pot and singapore.admin.pot)
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: extract.php,v 1.14 2006/06/24 22:36:15 tamlyn Exp $
*/
 
// Programs to call (insert path to them if necessary)
$GETTEXT_EXTRACT = "xgettext";
$BASEPATH = realpath("..")."/";
 
 
//require config class
require_once $BASEPATH."includes/config.class.php";
 
//get config object
$config = sgConfig::getInstance();
$config->loadConfig($BASEPATH."singapore.ini");
 
$OUTPUTPATH = $BASEPATH.$config->pathto_locale;
$standardPot = $OUTPUTPATH."singapore.pot";
$adminPot = $OUTPUTPATH."singapore.admin.pot";
 
 
/**
* Parses a directory and returns full path to all the files
* matching the filter (file name suffix)
*
* @param string $dir full directory name (must end with /)
* @param string $filter file name suffixes separated by | (optional, default don't filter)
* @return array an array with all files
**/
function parseDirectory ($dir, $filter = "php|html|tpl|inc")
{
$ret = array();
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$fullfile = $d->path . $file;
if (is_dir($fullfile)) $ret = array_merge($ret,parseDirectory($fullfile."/"));
else if (!$filter || preg_match("/\.({$filter})$/i", $file)) $ret[] = $fullfile;
}
}
return $ret;
}
 
 
?>
<!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">
<head>
<title>i18n string extractor</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>i18n string extractor</h1>
 
<p><?php
// Create tempfile
$temp = $OUTPUTPATH."/".'~tempfile';
$fp = fopen($temp, 'wb') or die("Couldn't open tempfile {$temp} for writing.\n");
// Get all files matching pattern in current template
$files = parseDirectory("../".$config->pathto_templates.$config->default_template.'/');
$files[] = "../includes/image.class.php";
$files[] = "../includes/item.class.php";
$files[] = "../includes/gallery.class.php";
$files[] = "../includes/singapore.class.php";
$files[] = "../includes/user.class.php";
fwrite($fp, implode("\n", $files));
// Close tempfile
fclose($fp);
// Call gettext
$res = shell_exec("{$GETTEXT_EXTRACT} --debug --keyword=_g --keyword=_ng:1,2 --keyword=__g -C -F --output=\"" . $standardPot . "\" --files-from=\"" . $temp . "\"");
if (trim($res)) die("Something seemed to go wrong with gettext:\n" . $res . "\n");
else echo "Standard strings extracted $standardPot<br />";
// Remove tempfile
unlink($temp);
//set permissions on new POT file
@chmod($standardPot, octdec($config->file_mode));
///////admin///////////
 
// Create tempfile
$temp = $OUTPUTPATH."/".'~tempfile';
$fp = fopen($temp, 'w') or die("Couldn't open tempfile {$temp} for writing.\n");
// Get all files matching pattern in current template
$files = parseDirectory("../".$config->pathto_templates.$config->admin_template_name.'/');
$files[] = "../includes/admin.class.php";
$files[] = "../admin.php";
fwrite($fp, implode("\n", $files));
// Close tempfile
fclose($fp);
// Call gettext
$res = shell_exec("{$GETTEXT_EXTRACT} --debug --keyword=_g --keyword=_ng:1,2 -C -F -x \"" . $standardPot . "\" --output=\"" . $adminPot . "\" --files-from=\"" . $temp . "\"");
if (trim($res)) die("Something seemed to go wrong with gettext:\n" . $res . "\n");
else echo "Admin strings extracted to $adminPot<br />";
// Remove tempfile
unlink($temp);
 
//set permissions on new POT file
@chmod($adminPot, octdec($config->file_mode));
?>
</p>
 
<p>You may now <a href="merge.php">merge</a> the strings into all previously
translated PO files.</p>
 
</body>
</html>
/photogallery/tools/generate.php
0,0 → 1,68
<?php
 
/**
* Use this script to batch generate all main and preview thumbnails for all
* galleries. Galleries which contain sub-galleries are skipped as are hidden
* galleries.
*
* Currently this is a bit of a hack. Hopefully a later version of the script
* will be built more robustly using the singapore class to greater advantage.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2004-2005 Tamlyn Rhodes
* @version 0.1
*/
 
//relative path to the singapore base installation
$basePath = '../';
 
//remove the built in time limit
set_time_limit(0);
 
// require main class
require_once $basePath."includes/singapore.class.php";
 
//create singapore object
$sg = new Singapore($basePath);
 
function showAllThumbnails(&$sg, &$gal)
{
echo "<li>Entering <code>".$gal->name()."</code></li>\n";
echo "<ul>\n";
echo "<li>".$gal->thumbnailHTML()."</li>\n";
if($gal->isGallery()) {
foreach($gal->galleries as $subgal)
showAllThumbnails($sg, $sg->io->getGallery($subgal->id, $gal));
} else
foreach($gal->images as $img)
echo "<li>".$img->thumbnailHTML().$img->thumbnailHTML("","preview")."</li>\n";
 
echo "</ul>\n";
}
 
?>
<!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">
<head>
<title>batch thumbnail generator</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>Generating thumbnails</h1>
 
<?php
//start recursive thumbnail generation
showAllThumbnails($sg, $sg->gallery);
?>
 
<p>All done! <a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/tools/index.html
0,0 → 1,58
<!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">
<head>
<title>singapore tools</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>singapore tools</h1>
 
<p>This is a collection of tools for use with the singapore image gallery. They
must be located in a child directory of the main singapore directory
(<code>tools/</code> by default). Since they are PHP scripts they must be run
on a PHP enabled web server</p>
 
<h1>language tools</h1>
 
<p>These tools are to aid translators. They require GNU Gettext to be available
on the host system but do not require the Gettext PHP extension. Please
see the <a href="../docs/Translation.html">translation</a> readme for more
information.</p>
 
<ol>
<li><a href="extract.php">Extractor</a> - for developers. Extracts
translatable strings from singapore files and current template and creates
PO template files. Unless you have edited text in the sources you do not need
to execute this.</li>
<li><a href="merge.php">Merger</a> - for translators. Merges new strings from
the PO templates with all currently available PO files.</li>
<li><a href="compile.php">Compiler</a> - for translators. Compiles all
currently available PO files into PHP serialized objects for use with singapore.</li>
<li><a href="localecache.php">Cache updater</a> - for anyone. Caches the names
of all installed languages for use with the language flipper.</li>
</ol>
 
<h1>misc tools</h1>
 
<ul>
<!--<li><a href="convertdb.php">Database converter</a> - copies or moves the
gallery description field of pre v0.9.10 to the summary field of v0.9.10.</li>-->
<li><a href="generate.php">Batch thumbnail generator</a> - use to generate all
album and preview thumbnails for all galleries in one go. Particularly useful
on slow servers to run overnight.</li>
<li><a href="cleanup.php">Cleanup script</a> - use this script to make all
server generated content world readable allowing you to delete it. Since this
script does not actually delete anything it is safe to be run by anyone.</li>
<li><a href="mod_rewrite.htaccess">mod_rewrite</a> - The .htaccess file you
need for use with Apache mod_rewrite. See readme for more info.</li>
</ul>
 
 
<p><a href="../">Return</a> to singapore.</p>
 
</body>
</html>
/photogallery/tools/localecache.php
0,0 → 1,98
<?php
/**
* This file merges the two PO template files (singapore.pot and singapore.admin.pot)
* with all existing language files (singapore.LANG.po)
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: localecache.php,v 1.5 2005/12/15 17:18:47 tamlyn Exp $
*/
 
//require config class
$BASEPATH = "../";
require_once $BASEPATH."includes/config.class.php";
require_once $BASEPATH."includes/translator.class.php";
 
//get config object
$sgConfig = sgConfig::getInstance();
$sgConfig->loadConfig($BASEPATH."singapore.ini");
$sgConfig->base_path = $BASEPATH;
 
$OUTPUTPATH = $sgConfig->base_path.$sgConfig->pathto_locale;
$OUTPUTFILE = $sgConfig->base_path.$sgConfig->pathto_data_dir."languages.cache";
/**
* Parses a directory and returns full path to all the files
* matching the filter (file name suffix)
*
* @param string $dir full directory name (must end with /)
* @param string $filter file name suffixes separated by | (optional, default don't filter)
* @return array an array with all files
**/
function parseDirectory ($dir, $filter = 'php|html|tpl|inc')
{
$ret = array();
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$fullfile = $d->path . $file;
if (is_dir($fullfile)) $ret = array_merge($ret,parseDirectory($fullfile."/"));
else if (!$filter || preg_match("/\.({$filter})$/i", $file)) $ret[] = $fullfile;
}
}
return $ret;
}
 
function saveCache($availableLanguages, $output)
{
// Open data file for writing
$fp = @fopen($output, "wb") or die("Couldn't open file ({$output}).\n");
fwrite($fp, serialize($availableLanguages));
return fclose($fp);
}
 
?>
<!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">
<head>
<title>language cache updater</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>language cache updater</h1>
 
<p><?php
$files = parseDirectory($OUTPUTPATH, 'pmo');
$availableLanguages = array();
foreach ($files as $file) {
if (!preg_match("/singapore\.([\w]+)\.pmo$/i", $file, $matches)) continue;
$i18n = Translator::getInstance($matches[1]);
$i18n->readLanguageFile($sgConfig->base_path.$sgConfig->pathto_locale."singapore.".$i18n->language.".pmo");
$availableLanguages[$matches[1]] = $i18n->languageStrings[0]['language'];
echo "Added $matches[1] => ".$i18n->languageStrings[0]['language']." to available languages.<br />\n";
}
//add english which has no translation files
$availableLanguages["en"] = "English";
ksort($availableLanguages);
if(saveCache($availableLanguages, $OUTPUTFILE))
echo "Cache file saved as ".$OUTPUTFILE;
else
echo "Could not save cache file as ".$OUTPUTFILE;
?>
</p>
 
<p>All operations complete. <a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/tools/merge.php
0,0 → 1,115
<?php
 
/**
* This file merges the two PO template files (singapore.pot and singapore.admin.pot)
* with all existing language files (singapore.LANG.po)
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: merge.php,v 1.8 2006/05/08 09:40:02 thepavian Exp $
*/
 
// Programs to call (insert path to them if necessary)
$GETTEXT_MERGE = "msgmerge";
$BASEPATH = realpath("..")."/";
 
//require config class
require_once $BASEPATH."includes/config.class.php";
 
//get config object
$config = sgConfig::getInstance();
$config->loadConfig($BASEPATH."singapore.ini");
 
$OUTPUTPATH = $BASEPATH.$config->pathto_locale;
$standardPot = $OUTPUTPATH."singapore.pot";
$adminPot = $OUTPUTPATH."singapore.admin.pot";
$createbackups = true;
 
/**
* Parses a directory and returns full path to all the files
* matching the filter (file name suffix)
*
* @param string $dir full directory name (must end with /)
* @param string $filter file name suffixes separated by | (optional, default don't filter)
* @return array an array with all files
**/
function parseDirectory ($dir, $filter = 'php|html|tpl|inc')
{
$ret = array();
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$fullfile = $d->path . $file;
if (is_dir($fullfile)) $ret = array_merge($ret,parseDirectory($fullfile."/"));
else if (!$filter || preg_match("/\.({$filter})$/i", $file)) $ret[] = $fullfile;
}
}
return $ret;
}
 
 
?>
<!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">
<head>
<title>i18n string merger</title>
<link rel="stylesheet" type="text/css" href="tools.css" />
</head>
 
<body>
 
<h1>i18n string merger</h1>
 
<p><?php
$files = parseDirectory($OUTPUTPATH, 'po');
foreach ($files as $file) {
if (!preg_match("/singapore\.[\w]+\.po$/i", $file)) continue;
$backup = $file . '.bak';
if (file_exists($backup)) @unlink($backup);
@rename($file, $backup);
$res = shell_exec("{$GETTEXT_MERGE} --strict \"{$backup}\" \"" . $standardPot . "\" > \"{$file}\"");
if (trim($res)) echo "Something seemed to go wrong with msgmerge:\n" . $res . "\n";
else echo "$standardPot merged with $file<br />";
// Remove backup?
if (!@$createbackups) @unlink($backup);
//set permissions on new POT file
@chmod($standardPot, octdec($config->file_mode));
}
 
///////admin///////////
 
$files = parseDirectory($OUTPUTPATH, 'po');
foreach ($files as $file) {
if (!preg_match("/singapore\.admin\.[\w]+\.po$/i", $file)) continue;
$backup = $file . '.bak';
if (file_exists($backup)) @unlink($backup);
@rename($file, $backup);
$res = shell_exec("{$GETTEXT_MERGE} --strict \"{$backup}\" \"" . $adminPot . "\" > \"{$file}\"");
if (trim($res)) echo "Something seemed to go wrong with msgmerge:\n" . $res . "\n";
else echo "$adminPot merged with $file<br />";
// Remove backup?
if (!@$createbackups) @unlink($backup);
//set permissions on new POT file
@chmod($adminPot, octdec($config->file_mode));
}
 
?>
</p>
 
<p>Once you have translated the updated PO files you may
<a href="compile.php">compile</a> them into PHP serialized objects for use with
singapore.</p>
 
</body>
</html>
/photogallery/tools/mod_rewrite.htaccess
0,0 → 1,33
# WHAT YOU NEED TO EDIT
#
# There are just two things you need to edit to make this file work on your
# installation. On each of the two lines below starting 'RewriteRule' about
# half way along the line there is a '/singapore/'. Change this to the full
# path to your installation (e.g. the bit after the .com, .org or whatever)
# then rename this file to .htaccess and put it in the singapore root
# directory (the one containing thumb.php). Finally don't forget to turn on
# use_mod_rewrite and update the base_path in singapore.ini. Voila!
 
 
Options +FollowSymlinks
RewriteEngine On
 
# rewrite galleries
# url must end in / and gallery names must not contain commas (,)
# example: /singapore/gallery/subgallery,20/
# becomes: /singapore/index.php?gallery=gallery/subgallery&startat=20
RewriteRule ^([^,]+)(,([0-9]+))?/$ /singapore/index.php?gallery=$1&startat=$3&%{QUERY_STRING} [ne]
 
# rewrite images
# do not rewrite requests to files and directories that really exist
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 
# example: /singapore/gallery/subgallery/myphoto.jpeg
# becomes: /singapore/index.php?gallery=gallery/subgallery&image=myphoto.jpeg
RewriteRule ^((.*)/)?([^/]+\.(jpeg|jpg|jpe|png|gif|bmp|tif|tiff))$ /singapore/index.php?gallery=$2&image=$3&%{QUERY_STRING} [ne,nc]
 
# rewrite feed.xml to the rss template
# example: /singapore/gallery/feed.xml
# becomes: /singapore/index.php?gallery=gallery&template=rss
RewriteRule ^((.*)/)?feed.xml$ /singapore/index.php?gallery=$2&template=rss&%{QUERY_STRING} [ne]
/photogallery/tools/tools.css
0,0 → 1,82
body {
margin: 1em;
font: small sans-serif;
color: #000;
background-color: #fff;
}
 
p, td, th, li, dd, dt {
font: small sans-serif;
}
 
h1, h2, h3, h4{
color: #f60;
}
 
h1, h2 {
font-size: medium;
border-bottom: 1px solid #ccc;
letter-spacing: 0.3em;
text-transform: uppercase;
}
 
code, pre {
color: #444;
}
 
p, td, th, li, dt, h3, h4, pre {
margin-left: 2em;
}
 
dd {
margin-left: 3em;
}
 
dt {
margin-top: 0.5em;
}
 
a:link {
color: #09f;
text-decoration: underline;
}
 
a:visited {
color: #05a;
text-decoration: underline;
}
 
a:hover {
text-decoration: none;
}
 
input, textarea, select, .inputbox {
border: 1px solid #f60;
color: #000;
background-color: #fff;
}
 
input.radio {
border: none;
background-color: #fff;
}
 
input.button {
font-weight: bold;
border: 1px outset #fff;
color: #fff;
background-color: #f60;
}
 
ul.things > li {
margin-top: 0.75em;
}
 
.note {
color: #d00;
}
 
.boxed, .note {
border: 1px dashed #ccc;
padding: 0.5em;
}
/photogallery/templates/admin_default/admin.ini
0,0 → 1,88
; singapore admin configuration file <http://singapore.sourceforge.net>
;
; This is a special case of a template.ini file
;
 
[Functionality]
;
; these settings should not be changed
;
 
track_views = false
show_views = true
use_mod_rewrite = off
;mod rewrite doesn't work in admin mode
 
 
[Advanced]
;
; these settings must not be changed
;
 
index_file_url = "admin.php?action=view&amp;"
 
[GET variable names]
;
; these settings must not be changed
;
 
url_gallery = "gallery"
url_image = "image"
url_startat = "startat"
url_action = "action"
url_lang = "lang"
url_template = "template"
 
[Template]
 
;Option descriptions have been grouped together here.
;Do not uncomment the following lines, they are for illustration only.
;
;thumb_width_*
; Width in pixels of thumbnails generated by the script.
; This option is affected by the thumb_crop_* option (see below).
;
;thumb_height_*
; Height in pixels of thumbnails generated by the script.
; This option is affected by the thumb_crop_* option (see below).
;
;thumb_crop_*
; By default, width and height are maximum dimensions and images will be
; resized, maintaining the same aspect ratio, to fit within these limits.
; Turn force_size on to make the script crop images to the specified size.
;
;*_gallery
; These options affect gallery pages (those that contain sub-galleries).
;
;*_album
; These options affect album pages (those that contain only images).
;
;*_preview
; These options affect the preview thumbnails displayed on image pages.
;
;*_image
; These options affect full size display images and are only used if
; full_image_resize is on in singapore.ini
 
thumb_width_gallery = 50
thumb_height_gallery = 50
thumb_crop_gallery = off
thumb_number_gallery = 10
;Maximum number of galleries to show on one gallery page.
 
thumb_width_album = 100
thumb_height_album = 100
thumb_crop_album = off
thumb_number_album = 20
;Maximum number of image thumbnails to show on one album page.
 
thumb_width_preview = 50
thumb_height_preview = 50
thumb_crop_preview = off
thumb_number_preview = 5
;Maximum number of preview thumbnails to display before and
;after current image in image view (eg a value of 2 here
;will result in 5 thumbnails (2 before + current + 2 after)
thumb_width_image = 700
thumb_height_image = 500
/photogallery/templates/admin_default/changethumbnail.tpl.php
0,0 → 1,32
<h1><?php echo $sg->translator->_g("Choose Thumbnail") ?></h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="changethumbnail" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
<p><?php echo $sg->translator->_g("Choose the filename of the image used to represent this gallery.") ?></p>
 
<?php /*<p><select name="sgThumbName">
<option value="__none__"<?php if($sg->gallery->filename == "__none__") echo ' selected="true"'; ?>><?php echo $sg->translator->_g("thumbnail|None") ?></option>
<option value="__random__"<?php if($sg->gallery->filename == "__random__") echo ' selected="true"'; ?>><?php echo $sg->translator->_g("thumbnail|Random") ?></option>
<?php
foreach($sg->gallery->images as $img) {
echo '<option value="'.$img->idEntities().'"';
if($sg->gallery->filename == $img->id) echo ' selected="true"';
echo '>'.$img->name().' ('.$img->idEntities().")</option>\n ";
}
?>
</select></p> */ ?>
<p>
<label><input type="radio" name="sgThumbName" value="__none__"<?php if($sg->gallery->filename == "__none__") echo ' checked="true"'; ?>><?php echo $sg->translator->_g("thumbnail|None") ?></label>
<label><input type="radio" name="sgThumbName" value="__random__"<?php if($sg->gallery->filename == "__random__") echo ' checked="true"'; ?>><?php echo $sg->translator->_g("thumbnail|Random") ?></label>
<?php
foreach($sg->gallery->images as $img) {
echo '<label><input type="radio" name="sgThumbName" value="'.$img->idEntities().'"';
if($sg->gallery->filename == $img->id) echo ' checked="true"';
echo '>'.$img->thumbnailHTML("", "preview")."</label>\n ";
}
?>
</p>
<p><input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|OK") ?>">
<input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|Cancel") ?>"></p>
</form>
/photogallery/templates/admin_default/confirm.tpl.php
0,0 → 1,15
<h1><?php echo $confirmTitle ?></h1>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<?php
foreach($_REQUEST as $name => $value)
if(is_array($value))
foreach($value as $subname => $subvalue)
echo "<input type=\"hidden\" name=\"{$name}[{$subname}]\" value=\"$subvalue\" />\n";
else
echo "<input type=\"hidden\" name=\"$name\" value=\"$value\" />\n";
?>
<p><?php echo $confirmMessage ?></p>
<p><input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|OK") ?>">
<input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|Cancel") ?>"></p>
</form>
/photogallery/templates/admin_default/editgallery.tpl.php
0,0 → 1,57
<h1><?php echo $sg->translator->_g("Edit Gallery") ?></h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="savegallery" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
<input type="hidden" name="sgCategories" value="<?php echo $sg->gallery->categories ?>" />
 
<table class="formTable">
<tr>
<td><?php echo $sg->translator->_g("Thumbnail") ?></td>
<td><div class="inputbox sgImageInput">
<?php
if($sg->gallery->filename == "__random__")
echo nl2br($sg->translator->_g("Random\nthumbnail"));
else
echo $sg->gallery->thumbnailHTML();
?>
<br />
<a href="<?php echo $sg->formatAdminURL("changethumbnail",$sg->gallery->idEncoded()) ?>"><?php echo $sg->translator->_g("thumbnail|Change...") ?></a>
</div></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Gallery name") ?></td>
<td><input type="text" name="sgGalleryName" value="<?php echo $sg->gallery->name ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Artist name") ?></td>
<td><input type="text" name="sgArtistName" value="<?php echo $sg->gallery->artist ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Email") ?></td>
<td><input type="text" name="sgArtistEmail" value="<?php echo $sg->gallery->email ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Date") ?></td>
<td><input type="text" name="sgDate" value="<?php echo $sg->gallery->date ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Copyright") ?></td>
<td><input type="text" name="sgCopyright" value="<?php echo $sg->gallery->copyright ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Summary") ?></td>
<td><textarea name="sgSummary" cols="70" rows="3"><?php echo $sg->gallery->summaryStripped() ?></textarea></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Description") ?></td>
<td><textarea name="sgGalleryDesc" cols="70" rows="8"><?php echo $sg->gallery->descriptionStripped() ?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/editimage.tpl.php
0,0 → 1,67
<h1><?php echo $sg->translator->_g("Edit Image") ?></h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="saveimage" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
<input type="hidden" name="image" value="<?php echo $sg->image->idEntities() ?>" />
<input type="hidden" name="sgThumbnail" value="<?php echo $sg->image->thumbnail ?>" />
<input type="hidden" name="sgCategories" value="<?php echo $sg->image->categories ?>" />
<table class="formTable">
<tr>
<td><?php echo $sg->translator->_g("Image") ?></td>
<td><div class="inputbox sgImageInput"><?php echo $sg->image->thumbnailHTML() ?></div></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Image name") ?></td>
<td><input type="text" name="sgImageName" value="<?php echo $sg->image->name ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Artist name") ?></td>
<td><input type="text" name="sgArtistName" value="<?php echo $sg->image->artist ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Email") ?></td>
<td><input type="text" name="sgArtistEmail" value="<?php echo $sg->image->email ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Location") ?></td>
<td><input type="text" name="sgLocation" value="<?php echo $sg->image->location ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Date") ?></td>
<td><input type="text" name="sgDate" value="<?php echo $sg->image->date ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Copyright") ?></td>
<td><input type="text" name="sgCopyright" value="<?php echo $sg->image->copyright ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Description") ?></td>
<td><textarea name="sgImageDesc" cols="70" rows="8"><?php echo $sg->image->descriptionStripped() ?></textarea></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Camera") ?></td>
<td><input type="text" name="sgField01" value="<?php echo $sg->image->camera ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Lens") ?></td>
<td><input type="text" name="sgField02" value="<?php echo $sg->image->lens ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Film") ?></td>
<td><input type="text" name="sgField03" value="<?php echo $sg->image->film ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Darkroom manipulation") ?></td>
<td><input type="text" name="sgField04" value="<?php echo $sg->image->darkroom ?>" size="40" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Digital manipulation") ?></td>
<td><input type="text" name="sgField05" value="<?php echo $sg->image->digital ?>" size="40" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/editpass.tpl.php
0,0 → 1,25
<h1><?php echo $sg->translator->_g("Change Password") ?></h1>
<p><?php echo $sg->translator->_g("Please choose a new password between 6 and 16 characters in length.") ?></p>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="savepass" />
<input type="hidden" name="sgUsername" value="<?php echo $sg->user->username ?>" />
<table>
<tr>
<td><?php echo $sg->translator->_g("Current password:") ?></td>
<td><input type="password" name="sgOldPass" size="23" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("New password:") ?></td>
<td><input type="password" name="sgNewPass1" size="23" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Confirm password:") ?></td>
<td><input type="password" name="sgNewPass2" size="23" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/editpermissions.tpl.php
0,0 → 1,95
<h1><?php echo $sg->translator->_g("Access Control") ?></h1>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="savepermissions" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
 
<table class="formTable">
<tr>
<td><?php echo $sg->translator->_g("Owner") ?></td>
<td><?php
if($sg->user->isAdmin())
echo '<input type="text" name="sgOwner" value="'.$sg->gallery->owner.'" />';
else
echo '<strong>'.$sg->gallery->owner.'</strong>';
?></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Groups") ?></td>
<td><input type="text" name="sgGroups" value="<?php echo $sg->gallery->groups ?>" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("access control|Read") ?></td>
<td><div class="inputbox">
<?php
if(($sg->gallery->permissions & SG_IHR_READ) == SG_IHR_READ) $checked = 0;
elseif($sg->gallery->permissions & SG_GRP_READ) $checked = 1;
elseif($sg->gallery->permissions & SG_WLD_READ) $checked = 2;
else $checked = 3;
?>
<label for="sgOwnRead"><input type="radio" class="radio" id="sgOwnRead" name="sgRead" value="owner" <?php if($checked == 3) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Owner") ?></label>
<label for="sgGrpRead"><input type="radio" class="radio" id="sgGrpRead" name="sgRead" value="group" <?php if($checked == 1) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Group") ?></label>
<label for="sgWldRead"><input type="radio" class="radio" id="sgWldRead" name="sgRead" value="world" <?php if($checked == 2) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|World") ?></label>
<?php if(!$sg->gallery->isRoot()): ?>
<label for="sgIhrRead"><input type="radio" class="radio" id="sgIhrRead" name="sgRead" value="inherit" <?php if($checked == 0) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Inherit") ?></label>
<?php endif; ?>
</div></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("access control|Edit") ?></td>
<td><div class="inputbox">
<?php
if(($sg->gallery->permissions & SG_IHR_EDIT) == SG_IHR_EDIT) $checked = 0;
elseif($sg->gallery->permissions & SG_GRP_EDIT) $checked = 1;
elseif($sg->gallery->permissions & SG_WLD_EDIT) $checked = 2;
else $checked = 3;
?>
<label for="sgOwnEdit"><input type="radio" class="radio" id="sgOwnEdit" name="sgEdit" value="owner" <?php if($checked == 3) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Owner") ?></label>
<label for="sgGrpEdit"><input type="radio" class="radio" id="sgGrpEdit" name="sgEdit" value="group" <?php if($checked == 1) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Group") ?></label>
<label for="sgWldEdit"><input type="radio" class="radio" id="sgWldEdit" name="sgEdit" value="world" <?php if($checked == 2) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|World") ?></label>
<?php if(!$sg->gallery->isRoot()): ?>
<label for="sgIhrEdit"><input type="radio" class="radio" id="sgIhrEdit" name="sgEdit" value="inherit" <?php if($checked == 0) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Inherit") ?></label>
<?php endif; ?>
</div></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("access control|Add") ?></td>
<td><div class="inputbox">
<?php
if(($sg->gallery->permissions & SG_IHR_ADD) == SG_IHR_ADD) $checked = 0;
elseif($sg->gallery->permissions & SG_GRP_ADD) $checked = 1;
elseif($sg->gallery->permissions & SG_WLD_ADD) $checked = 2;
else $checked = 3;
?>
<label for="sgOwnAdd"><input type="radio" class="radio" id="sgOwnAdd" name="sgAdd" value="owner" <?php if($checked == 3) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Owner") ?></label>
<label for="sgGrpAdd"><input type="radio" class="radio" id="sgGrpAdd" name="sgAdd" value="group" <?php if($checked == 1) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Group") ?></label>
<label for="sgWldAdd"><input type="radio" class="radio" id="sgWldAdd" name="sgAdd" value="world" <?php if($checked == 2) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|World") ?></label>
<?php if(!$sg->gallery->isRoot()): ?>
<label for="sgIhrAdd"><input type="radio" class="radio" id="sgIhrAdd" name="sgAdd" value="inherit" <?php if($checked == 0) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Inherit") ?></label>
<?php endif; ?>
</div></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("access control|Delete") ?></td>
<td><div class="inputbox">
<?php
if(($sg->gallery->permissions & SG_IHR_DELETE) == SG_IHR_DELETE) $checked = 0;
elseif($sg->gallery->permissions & SG_GRP_DELETE) $checked = 1;
elseif($sg->gallery->permissions & SG_WLD_DELETE) $checked = 2;
else $checked = 3;
?>
<label for="sgOwnDelete"><input type="radio" class="radio" id="sgOwnDelete" name="sgDelete" value="owner" <?php if($checked == 3) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Owner") ?></label>
<label for="sgGrpDelete"><input type="radio" class="radio" id="sgGrpDelete" name="sgDelete" value="group" <?php if($checked == 1) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Group") ?></label>
<label for="sgWldDelete"><input type="radio" class="radio" id="sgWldDelete" name="sgDelete" value="world" <?php if($checked == 2) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|World") ?></label>
<?php if(!$sg->gallery->isRoot()): ?>
<label for="sgIhrDelete"><input type="radio" class="radio" id="sgIhrDelete" name="sgDelete" value="inherit" <?php if($checked == 0) echo 'checked="true" '; ?>/> <?php echo $sg->translator->_g("permissions|Inherit") ?></label>
<?php endif; ?>
</div></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/editprofile.tpl.php
0,0 → 1,27
<h1><?php echo $sg->translator->_g("Edit Profile"); ?></h1>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<table class="formTable">
<input type="hidden" name="action" value="saveprofile" />
<input type="hidden" name="user" value="<?php echo $sg->user->username; ?>" />
<tr>
<td><?php echo $sg->translator->_g("Username"); ?></td>
<td><strong><?php echo $sg->user->username; ?></strong></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Email"); ?></td>
<td><input type="input" name="sgEmail" value="<?php echo $sg->user->email; ?>" /></td>
</tr>
<tr>
<td><?php echo $sg->translator->_g("Full name"); ?></td>
<td><input type="input" name="sgFullname" value="<?php echo $sg->user->fullname; ?>" /></td>
</tr>
<tr><td><?php echo $sg->translator->_g("Description"); ?></td>
<td><input type="input" name="sgDescription" value="<?php echo $sg->user->description; ?>" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/edituser.tpl.php
0,0 → 1,34
<h1><?php echo $sg->translator->_g("User Management"); ?></h1>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<table class="formTable">
<input type="hidden" name="action" value="saveuser" />
<input type="hidden" name="user" value="<?php echo $_REQUEST["user"]; ?>" />
<?php
$users = $sg->io->getUsers();
for($i=0; $i<count($users); $i++)
if($users[$i]->username == $_REQUEST["user"]) {
$usr = $users[$i];
break;
}
echo "<tr><td>".$sg->translator->_g("Username")."</td><td><strong>".$usr->username."</strong></td></tr>\n";
if($sg->user->isAdmin())
echo "<tr><td>".$sg->translator->_g("Type").'</td><td>'.
'<label for="sgTypeAdmin"><input type="radio" class="radio" id="sgTypeAdmin" name="sgType" value="admin"'.($usr->permissions & SG_ADMIN ? ' checked="true"' : "").' />'.$sg->translator->_g("Administrator")."</label><br />\n".
'<label for="sgTypeUser"><input type="radio" class="radio" id="sgTypeUser" name="sgType" value="user"'. ($usr->permissions & SG_ADMIN ? "" : ' checked="true"').' />'.$sg->translator->_g("User")."</label></td></tr>\n";
if($sg->user->isAdmin())
echo "<tr><td>".$sg->translator->_g("Groups").'</td><td><input type="input" name="sgGroups" value="'.$usr->groups."\" /></td></tr>\n";
echo "<tr><td>".$sg->translator->_g("Email").'</td><td><input type="input" name="sgEmail" value="'.$usr->email."\" /></td></tr>\n";
echo "<tr><td>".$sg->translator->_g("Full name").'</td><td><input type="input" name="sgFullname" value="'.$usr->fullname."\" /></td></tr>\n";
echo "<tr><td>".$sg->translator->_g("Description").'</td><td><input type="input" name="sgDescription" value="'.$usr->description."\" /></td></tr>\n";
if($sg->user->isAdmin() && !$usr->isGuest())
echo "<tr><td>".$sg->translator->_g("Password").'</td><td><input type="input" name="sgPassword" value="**********" /></td></tr>'."\n";
?>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Save Changes") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/footer.tpl.php
0,0 → 1,10
 
<div id="footer"><p>
<?php echo $sg->allRightsReserved() ?>
<br />
<?php echo $sg->poweredByText() ?>
<?php echo $sg->scriptExecTimeText() ?>
</p></div>
 
</body>
</html>
/photogallery/templates/admin_default/galleryhits.tpl.php
0,0 → 1,25
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink("showgalleryhits")." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink("showgalleryhits"); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink("showgalleryhits"); ?>
</p>
 
<h1><?php echo $sg->gallery->name(); ?></h1>
 
<div class="sgContainer">
<div class="sgContent">
<table class="sgList">
<tr><th><?php echo $sg->translator->_g("Gallery name") ?></th><th><?php echo $sg->translator->_g("hits table|Hits") ?></th><th><?php echo $sg->translator->_g("hits table|Last hit") ?></th><th><?php echo $sg->translator->_g("hits table|Graph") ?></th></tr>
<?php $maxhits = $sg->getMaxHits($sg->gallery->galleries); ?>
<?php foreach($sg->gallery->galleries as $index => $gal): ?>
<tr class="sgRow<?php echo $index%2 ?>">
<td><?php echo $gal->nameLink($gal->isGallery()?"showgalleryhits":"showimagehits"); ?> (<?php echo $gal->idEntities() ?>)</td>
<td align="right"><?php echo $gal->hits; ?></td>
<td align="right" title="<?php echo $gal->lasthit==0 ? "n/a" : date("Y-m-d H:i:s",$gal->lasthit) ?>"><?php echo $gal->lasthit==0 ? "n/a" : date("D j H:i",$gal->lasthit) ?></td>
<td><img src="<?php echo $sg->config->base_url.$sg->config->pathto_admin_template ?>images/graph.gif" height="8" width="<?php echo $maxhits==0 ? "0" : floor(($gal->hits/$maxhits)*300) ?>" alt="" /></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
/photogallery/templates/admin_default/header.tpl.php
0,0 → 1,39
<!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">
<head>
<title><?php echo $sg->pageTitle() ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $sg->config->base_url.$sg->config->pathto_admin_template ?>main.css" />
<!--
This page was generated by singapore <http://singapore.sourceforge.net>
singapore is free software licensed under the terms of the GNU GPL.
-->
</head>
 
<body>
 
<div id="crumb">
<?php echo $sg->crumbLine() ?>
</div>
 
<div id="header"><img src="<?php echo $sg->config->base_url.$sg->config->pathto_admin_template ?>images/header.gif" alt="<?php echo $sg->config->gallery_name ?>" /></div>
 
<div id="sgAdminBar">
<?php
$sections = $sg->adminLinksArray();
foreach($sections[0] as $text => $url): ?>
<a href="<?php echo $url ?>"><?php echo $text ?></a>
<?php endforeach; ?>
<?php for($i=1;$i<count($sections);$i++): ?>
<span class="sgAdminBarSeparator"></span>
<?php foreach($sections[$i] as $text => $url): ?>
<a href="<?php echo $url ?>"><?php echo $text ?></a>
<?php endforeach; ?>
<?php endfor; ?>
</div>
 
<?php echo $sg->showMessages(); ?>
 
<!-- start of generated content -->
 
/photogallery/templates/admin_default/imagehits.tpl.php
0,0 → 1,24
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink("showimagehits")." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink("showimagehits"); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink("showimagehits"); ?>
</p>
 
<h1><?php echo $sg->gallery->name(); ?></h1>
 
<div class="sgContainer">
<div class="sgContent">
<table class="sgList">
<tr><th><?php echo $sg->translator->_g("Image name") ?></th><th><?php echo $sg->translator->_g("hits table|Hits") ?></th><th><?php echo $sg->translator->_g("hits table|Last hit") ?></th><th><?php echo $sg->translator->_g("hits table|Graph") ?></th></tr>
<?php $maxhits = $sg->getMaxHits($sg->gallery->images); ?>
<?php foreach($sg->gallery->images as $index => $img): ?>
<tr class="sgRow<?php echo $index%2 ?>">
<td><?php echo $img->nameLink(); ?> (<?php echo $img->id ?>)</td>
<td align="right"><?php echo empty($img->hits) ? "0" : $img->hits ?></td>
<td align="right" title="<?php echo empty($img->lasthit) ? "n/a" : date("Y-m-d H:i:s",$img->lasthit) ?>"><?php echo empty($img->lasthit) ? "n/a" : date("D j H:i",$img->lasthit) ?></td>
<td><img src="<?php echo $sg->config->base_url.$sg->config->pathto_admin_template ?>images/graph.gif" height="8" width="<?php echo $maxhits==0 ? "0" : floor(($img->hits/$maxhits)*300) ?>" /></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
/photogallery/templates/admin_default/images/blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/admin_default/images/graph.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/admin_default/images/header.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/admin_default/index.tpl.php
0,0 → 1,21
<?php
 
/**
* Default singapore admin template.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version 1.0
*/
 
 
//include header file
include $sg->config->base_path.$sg->config->pathto_admin_template."header.tpl.php";
 
//include selected file
include $sg->config->base_path.$sg->config->pathto_admin_template.$sg->includeFile.".tpl.php";
 
//include footer file
include $sg->config->base_path.$sg->config->pathto_admin_template."footer.tpl.php";
 
?>
/photogallery/templates/admin_default/login.tpl.php
0,0 → 1,22
<h1><?php echo $sg->translator->_g("Log In") ?></h1>
 
<p><?php echo $sg->translator->_g("Please enter your admin username and password below.") ?></p>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="login" />
<p>
<?php echo $sg->translator->_g("Username:") ?> <input type="text" name="sgUsername" />
<?php echo $sg->translator->_g("Password:") ?> <input type="password" name="sgPassword" />
<input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Go") ?>" />
</p>
</form>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="login" />
<input type="hidden" name="sgUsername" value="guest" />
<input type="hidden" name="sgPassword" value="password" />
<p>
<?php echo $sg->translator->_g("If you do not have a username then you may log in as a guest."); ?>
<input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Log in as guest"); ?>" />
</p>
</form>
/photogallery/templates/admin_default/main.css
0,0 → 1,231
body {
margin: 1em;
font: small sans-serif;
color: #000;
background-color: #fff;
}
 
p, td, th, li, h4 {
font: small sans-serif;
}
 
h1, h2, h3 {
color: #f60;
}
 
h1 {
font-size: large;
}
 
a:link, a:visited {
color: #09f;
text-decoration: underline;
}
 
a:hover {
text-decoration: none;
}
 
input, textarea, select, .inputbox {
border: 1px solid #f60;
color: #000;
background-color: #fff;
}
 
input.radio, input.checkbox {
border: none;
background-color: #fff;
}
 
input.button {
font-weight: bold;
border: 1px outset #fff;
color: #fff;
background-color: #f60;
}
 
label {
cursor: default;
}
 
 
#header {
}
 
#crumb {
}
 
#footer {
text-align: center;
}
 
a img {
border: 0;
}
 
/* image or gallery name header */
.sgTitle {
margin-bottom: 0;
}
 
/* image or gallery artist subheader */
.sgSubTitle {
margin-top: 0;
}
 
table.sgList {
background-color: #fff;
border: 1px solid #888;
width: 100%
}
 
tr.sgRow0 {
background-color: #f0f0f0;
margin: 1px;
}
 
tr.sgRow1 {
background-color: #e0e0e0;
margin: 1px;
}
 
table.formTable input, table.formTable textarea, table.formTable .inputbox {
width: 500px;
}
 
table.formTable td {
vertical-align: top;
}
 
table.formTable input.radio, table.formTable input.checkbox {
width: auto;
height: auto;
}
 
.sgImageInput {
text-align: center;
padding: 2px;
}
 
#sgAdminMessages {
background-color: #fff;
border: 1px dashed #000;
margin: 1em 0;
padding: 5px;
font-size: x-small;
}
 
#sgAdminMessages li.adminError {
list-style-image: url(images/error.gif);
margin-left: 20px;
}
 
#sgAdminMessages li.adminMessage {
list-style-image: url(images/message.gif);
margin-left: 20px;
}
 
#sgAdminBar {
background-color: #f0f0f0;
border: 1px solid #000;
margin: 1em 0 1em 0;
padding: 5px;
font-size: x-small;
}
 
#sgAdminBar a:link, #sgAdminBar a:visited, #sgAdminBar a:active {
color: #000;
font: x-small Verdana, sans-serif;
position: relative;
left: 1px;
top: 1px;
border: 1px solid #f0f0f0;
text-decoration: none;
padding: 2px;
}
 
#sgAdminBar a:hover {
position: relative;
left: 0px;
top: 0px;
border: 1px solid #000;
color: #000;
background-color: #fff;
}
 
span.sgAdminBarSeparator {
border-left: 1px solid #888;
width: 0px;
margin-right: 4px;
}
 
div.sgNavBar, p.sgNavBar {
text-align: center;
float: right;
}
 
 
div.sgContainer {
clear: both;
text-align: center;
}
 
div.sgTab {
padding: 0.25em;
text-align: left;
}
 
div.sgContent {
background-color: #f0f0f0;
border: 1px solid #000;
padding: 1em;
text-align: left;
}
 
table.sgContent {
margin-left: auto;
margin-right: auto;
}
 
div.sgGallery, div.sgThumbnail {
margin: 0.5em;
padding: 0.5em;
border: 1px solid #888;
background-color: #fff;
}
 
td.sgGalleryThumbnail {
width: 60px;
text-align: center;
}
 
p.sgGalleryTitle a {
font-weight: bold;
}
 
div.sgThumbnail {
float: left;
}
 
div.sgThumbnail table {
width: 110px;
height: 110px;
text-align: center;
vertical-align: middle;
}
 
div.stretcher {
clear: both;
}
 
img.sgImage {
border: 1px solid #000;
}
 
input.sgImageCheckbox {
position: absolute;
float: left;
z-index: 10;
}
/photogallery/templates/admin_default/manageusers.tpl.php
0,0 → 1,34
<h1><?php echo $sg->translator->_g("User Management"); ?></h1>
 
<?php if(!$sg->user->isAdmin()) echo '<p>'.$sg->translator->_g("You must be an administrator to access this area.").'</p>'; ?>
 
<table>
<?php
$users = $sg->io->getUsers();
foreach($users as $usr) {
echo "<tr>\n ";
echo "<td><strong>".$sg->translator->_g("Username")."</strong> ";
if($usr->permissions & SG_SUSPENDED) echo "<strike>";
if($usr->permissions & SG_ADMIN) echo "<u>";
echo $usr->username;
if($usr->permissions & SG_ADMIN) echo "</u>";
if($usr->permissions & SG_SUSPENDED) echo "</strike>";
echo "</td>\n ";
echo "<td><strong>".$sg->translator->_g("Email")."</strong> ".$usr->email."</td>\n ";
echo "<td><strong>".$sg->translator->_g("Full name")."</strong> ".$usr->fullname."</td>\n ";
echo '<td><a href="'.$sg->formatAdminURL("edituser", null, null, null, "&amp;user=".$usr->username).'">'.$sg->translator->_g("edit")."</a></td>\n ";
echo '<td><a href="'.$sg->formatAdminURL("deleteuser", null, null, null, "&amp;user=".$usr->username).'">'.$sg->translator->_g("delete")."</a></td>\n ";
echo '<td><a href="'.$sg->formatAdminURL("suspenduser", null, null, null, "&amp;user=".$usr->username).'">'.($usr->permissions & SG_SUSPENDED ? $sg->translator->_g("unsuspend") : $sg->translator->_g("suspend"))."</a></td>\n";
echo "</tr>\n";
}
 
?>
</table>
 
<h2><?php echo $sg->translator->_g("Create New User"); ?></h2>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"><p>
<?php echo $sg->translator->_g("Username"); ?>
<input type="hidden" name="action" value="newuser" />
<input type="input" name="user" />
<input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Create"); ?>" />
</p></form>
/photogallery/templates/admin_default/menu.tpl.php
0,0 → 1,15
<p><?php echo $sg->translator->_g("Please choose an option:") ?></p>
 
<ul>
<li><a href="<?php echo $sg->formatAdminURL("view") ?>"><?php echo $sg->translator->_g("Manage galleries and images") ?></a></li>
<li><a href="<?php echo $sg->formatAdminURL("showgalleryhits") ?>"><?php echo $sg->translator->_g("View gallery hits") ?></a></li>
<?php if(!$sg->user->isGuest()): ?>
<li><a href="<?php echo $sg->formatAdminURL("editpass") ?>"><?php echo $sg->translator->_g("Change password") ?></a></li>
<li><a href="<?php echo $sg->formatAdminURL("editprofile") ?>"><?php echo $sg->translator->_g("My profile") ?></a></li>
<?php endif; ?>
<?php if($sg->user->isAdmin()): ?>
<li><a href="<?php echo $sg->formatAdminURL("manageusers") ?>"><?php echo $sg->translator->_g("Manage users") ?></a></li>
<?php /*<li><a href="<?php echo $sg->formatAdminURL("purgecache") ?>"><?php echo $sg->translator->_g("Purge cached thumbnails") ?></a></li>*/ ?>
<?php endif; ?>
<li><a href="<?php echo $sg->formatAdminURL("logout") ?>"><?php echo $sg->translator->_g("Log out of admin") ?></a></li>
</ul>
/photogallery/templates/admin_default/multimove.tpl.php
0,0 → 1,29
<h1><?php echo $sg->translator->_g("Move or Copy Items") ?></h1>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="multimove" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
<?php
if(isset($_REQUEST["sgGalleries"]))
foreach($_REQUEST["sgGalleries"] as $name => $value)
echo "<input type=\"hidden\" name=\"sgGalleries[$name]\" value=\"$value\" />\n";
elseif(isset($_REQUEST["sgImages"]))
foreach($_REQUEST["sgImages"] as $name => $value)
echo "<input type=\"hidden\" name=\"sgImages[$name]\" value=\"$value\" />\n";
?>
<p>Select the gallery to which you wish to move or copy the selected items.</p>
 
<p><select name="sgMoveTarget">
<?php
foreach($sg->allGalleriesArray() as $gal)
//if(strpos($gal->id, $sg->gallery->id) !== 0)
echo '<option value="'.$gal->idEntities().'">'.$gal->idEntities()." (".$gal->name().")</option>\n";
?>
</select></p>
<p>
<label><input type="radio" name="sgMoveType" value="copy" checked="true" /> <?php /*"*/ echo $sg->translator->_g("Copy") ?></label>
<label><input type="radio" name="sgMoveType" value="move" /> <?php /*"*/ echo $sg->translator->_g("Move") ?></label>
</p>
<p><input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|OK") ?>">
<input type="submit" class="button" name="confirmed" value="<?php /*"*/ echo $sg->translator->_g("confirm|Cancel") ?>"></p>
</form>
/photogallery/templates/admin_default/newgallery.tpl.php
0,0 → 1,18
<h1><?php echo $sg->translator->_g("New Gallery") ?></h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="action" value="addgallery" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
 
<table class="formTable">
<tr>
<td><?php echo $sg->translator->_g("Identifier") ?></td>
<td><input type="text" name="newgallery" value="" size="40" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Create") ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/newimage.tpl.php
0,0 → 1,52
<h1><?php echo $sg->translator->_g("New Image") ?></h1>
 
<?php if($sg->gallery->hasChildGalleries()) echo "<p>".$sg->translator->_g("This image will not be visible because this gallery is not an album: it contains child galleries.")."</p>"; ?>
 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post">
<input type="hidden" name="action" value="addimage" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities() ?>" />
 
<table class="formTable">
<tr>
<td><input type="radio" class="radio" id="sgLocationChoiceSingle" name="sgLocationChoice" value="single" checked="true" /></td>
<td colspan="2"><label for="sgLocationChoiceSingle"><?php echo $sg->translator->_g("Upload single file") ?></label></td>
<tr>
<tr>
<td></td>
<td><?php echo $sg->translator->_g("Image file to upload:") ?></td>
<td><input type="file" name="sgImageFile" value="" size="40" /></td>
</tr>
<tr>
<td></td>
<td><?php echo $sg->translator->_g("Identifier:") ?></td>
<td>
<label for="sgNameChoiceSame"><input type="radio" class="radio" id="sgNameChoiceSame" name="sgNameChoice" value="same" checked="true" /> <?php echo $sg->translator->_g("Use filename of uploaded file.") ?></label><br />
<label for="sgNameChoiceNew"><input type="radio" class="radio" id="sgNameChoiceNew" name="sgNameChoice" value="new" /> <?php echo $sg->translator->_g("Specify different filename:") ?></label><br />
<input type="text" name="sgFileName" value="" size="40" /></td>
</tr>
<tr>
<td><input type="radio" class="radio" id="sgLocationChoiceMulti" name="sgLocationChoice" value="multi" /></td>
<td colspan="2"><label for="sgLocationChoiceMulti"><?php echo $sg->translator->_g("Upload multiple files") ?></label></td>
<tr>
<tr>
<td></td>
<td><?php echo $sg->translator->_g("ZIP file to upload:") ?></td>
<td><input type="file" name="sgArchiveFile" value="" size="40" /></td>
</tr>
<tr>
<td><input type="radio" class="radio" id="sgLocationChoiceRemote" name="sgLocationChoice" value="remote"></td>
<td colspan="2"><label for="sgLocationChoiceRemote"><?php echo $sg->translator->_g("Add remote file") ?></label></td>
<tr>
<tr>
<td></td>
<td><?php echo $sg->translator->_g("URL of image:") ?></td>
<td><input type="text" name="sgImageURL" value="http://" size="40" /></td>
</tr>
<tr>
<td colspan="2"></td>
<td><input type="submit" class="button" value="<?php /*"*/ echo $sg->translator->_g("Create"); ?>" /></td>
</tr>
</table>
</form>
/photogallery/templates/admin_default/view.tpl.php
0,0 → 1,9
<?php
if($sg->isImagePage()) {
include $sg->config->base_path.$sg->config->pathto_admin_template."viewimage.tpl.php";
} elseif($sg->isAlbumPage()) {
include $sg->config->base_path.$sg->config->pathto_admin_template."viewalbum.tpl.php";
} else {
include $sg->config->base_path.$sg->config->pathto_admin_template."viewgallery.tpl.php";
}
?>
/photogallery/templates/admin_default/viewalbum.tpl.php
0,0 → 1,37
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink()." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink(); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink(); ?>
</p>
 
<h2 class="sgTitle"><?php echo $sg->gallery->name(); ?></h2>
 
<div class="sgContainer">
<div class="sgTab"><?php echo $sg->galleryTab()?></div>
<div class="sgContent">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="action" value="multi" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEntities(); ?>" />
<div class="sgGallery">
<?php echo $sg->translator->_g("With selected:"); ?>
<?php /* <input type="submit" class="button" name="subaction" value="<?php echo $sg->translator->_g("Copy or move"); ?>" /> */ ?>
<input type="submit" class="button" name="subaction" value="<?php echo $sg->translator->_g("Delete"); ?>" />
</div>
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->imageCountSelected()+$sg->gallery->startat; $index++): ?>
<div class="sgThumbnail">
<input type="checkbox" class="sgImageCheckbox checkbox" name="sgImages[]" value="<?php echo $sg->gallery->images[$index]->idEntities(); ?>" />
<table><tr><td>
<?php echo $sg->gallery->images[$index]->thumbnailLink() ?>
</td></tr></table>
</div>
<?php endfor; ?>
<div class="stretcher"></div>
</div>
</form>
</div>
<p>
<?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
<strong><?php echo $key ?>:</strong> <?php echo $value ?><br />
<?php endforeach; ?>
</p>
/photogallery/templates/admin_default/viewgallery.tpl.php
0,0 → 1,51
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink()." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink(); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink(); ?>
</p>
 
<h2 class="sgTitle"><?php echo $sg->gallery->name(); ?></h2>
 
<div class="sgContainer">
<div class="sgTab"><?php echo $sg->galleryTab()?></div>
<div class="sgContent">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="action" value="multi" />
<input type="hidden" name="gallery" value="<?php echo $sg->gallery->idEncoded(); ?>" />
<div class="sgGallery">
<?php echo $sg->translator->_g("With selected:"); ?>
<input type="submit" class="button" name="subaction" value="<?php echo $sg->translator->_g("Copy or move"); ?>" />
<input type="submit" class="button" name="subaction" value="<?php echo $sg->translator->_g("Delete"); ?>" />
<input type="submit" class="button" name="subaction" value="<?php echo $sg->translator->_g("Re-index"); ?>" />
</div>
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->galleryCountSelected()+$sg->gallery->startat; $index++): ?>
<div class="sgGallery"><table>
<tr valign="top">
<td><input type="checkbox" class="checkbox" name="sgGalleries[]" value="<?php echo $sg->gallery->galleries[$index]->idEntities(); ?>" /></td>
<td class="sgGalleryThumbnail"><?php echo $sg->gallery->galleries[$index]->thumbnailHTML() ?></td>
<td>
<?php echo $sg->gallery->galleries[$index]->name() ?> - <?php echo $sg->gallery->galleries[$index]->itemCountText() ?><br />
<?php
echo '<a href="'.$sg->formatAdminURL("view",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|View gallery")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("editgallery",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|Edit gallery")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("editpermissions",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|Access control")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("deletegallery",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|Delete gallery")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("newgallery",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|New subgallery")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("reindex",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|Re-index gallery")."</a> |\n";
//echo '<a href="'.$sg->formatAdminURL("newimage",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|New image")."</a> |\n";
echo '<a href="'.$sg->formatAdminURL("changethumbnail",$sg->gallery->galleries[$index]->idEncoded()).'">'.$sg->translator->_g("admin bar|Change thumbnail")."</a>\n";
?>
</td>
</tr>
</table></div>
<?php endfor; ?>
</form>
</div>
</div>
<p>
<?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
<strong><?php echo $key ?>:</strong> <?php echo $value ?><br />
<?php endforeach; ?>
</p>
/photogallery/templates/admin_default/viewimage.tpl.php
0,0 → 1,30
<p class="sgNavBar sgTopNavBar">
<?php echo $sg->previewThumbnails();?>
<br />
<?php if($sg->image->hasPrev()) echo $sg->image->prevLink()." | "; ?>
<?php echo $sg->image->parentLink(); ?>
<?php if($sg->image->hasNext()) echo " | ".$sg->image->nextLink(); ?>
</p>
<h2 class="sgTitle"><?php echo $sg->image->name(); ?></h2>
<div class="sgContainer">
<table class="sgContent"><tr><td><div class="sgContent">
<?php echo $sg->image->imageHTML() ?>
</div></td></tr></table>
</div>
<div class="sgNavBar sgTopNavBar"><p>
<?php if($sg->image->hasPrev()) echo $sg->image->prevLink()." | "; ?>
<?php echo $sg->image->parentLink(); ?>
<?php if($sg->image->hasNext()) echo " | ".$sg->image->nextLink(); ?>
</p></div>
 
<p><em><?php echo $sg->image->name() ?></em><?php echo $sg->image->byArtistText() ?></p>
<p>
<?php foreach($sg->image->detailsArray() as $key => $value): ?>
<strong><?php echo $key ?>:</strong> <?php echo $value ?><br />
<?php endforeach; ?>
</p>
 
<?php echo $sg->imageMap() ?>
/photogallery/templates/default/album.tpl.php
0,0 → 1,60
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink()." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink(); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink(); ?>
</p>
 
<h2 class="sgTitle"><?php echo $sg->gallery->name(); ?></h2>
<h4 class="sgSubTitle"><?php echo $sg->gallery->byArtistText(); ?></h4>
 
<div class="sgShadow"><table class="sgShadow" cellspacing="0">
<tr>
<td class="tabl"></td>
<td class="tabm">
<div><?php echo $sg->galleryTab(); ?></div>
</td>
<td class="tabr"></td>
</tr>
<tr>
<td class="tl"></td>
<td class="tm"></td>
<td class="tr"></td>
</tr>
<tr>
<td class="ml"></td>
<td class="mm">
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->imageCountSelected()+$sg->gallery->startat; $index++): ?>
<div class="sgThumbnail">
<div class="sgThumbnailContent">
<img class="borderTL" src="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>images/slide-tl.gif" alt="" />
<img class="borderTR" src="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>images/slide-tr.gif" alt="" />
<table><tr><td>
<?php echo $sg->gallery->images[$index]->thumbnailLink(); ?>
</td></tr></table>
<div class="roundedCornerSpacer">&nbsp;</div>
</div>
<div class="bottomCorners">
<img class="borderBL" src="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>images/slide-bl.gif" alt="" />
<img class="borderBR" src="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>images/slide-br.gif" alt="" />
</div>
</div>
<?php endfor; ?>
</td>
<td class="mr"></td>
</tr>
<tr>
<td class="bl"></td>
<td class="bm"></td>
<td class="br"></td>
</tr>
</table></div>
<p class="sgDetailsList">
<?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
<strong><?php echo $key; ?>:</strong> <?php echo $value; ?><br />
<?php endforeach; ?>
</p>
/photogallery/templates/default/footer.tpl.php
0,0 → 1,12
 
<div id="footer"><p>
<?php echo $sg->allRightsReserved(); ?>
<?php echo $sg->licenseText(); ?>
<br />
<?php echo $sg->poweredByText(); ?>
<?php echo $sg->scriptExecTimeText(); ?> |
<?php echo $sg->adminLink(); ?>
</p></div>
 
</body>
</html>
/photogallery/templates/default/gallery.tpl.php
0,0 → 1,56
<p class="sgNavBar sgTopNavBar">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink()." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink(); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink(); ?>
</p>
 
<h2 class="sgTitle"><?php echo $sg->gallery->name(); ?></h2>
<h4 class="sgSubTitle"><?php echo $sg->gallery->byArtistText(); ?></h4>
 
<div class="sgShadow"><table class="sgShadow" cellspacing="0">
<tr>
<td class="tabl"></td>
<td class="tabm">
<div><?php echo $sg->galleryTab(); ?></div>
</td>
<td class="tabr"></td>
</tr>
<tr>
<td class="tl"></td>
<td class="tm"></td>
<td class="tr"></td>
</tr>
<tr>
<td class="ml"></td>
<td class="mm">
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->galleryCountSelected()+$sg->gallery->startat; $index++): ?>
<div class="sgGallery"><table class="sgGallery"><tr valign="top">
<td class="sgGalleryThumb">
<?php echo $sg->gallery->galleries[$index]->thumbnailLink(); ?>
</td>
<td>
<p><strong><?php echo $sg->gallery->galleries[$index]->nameLink(); ?></strong></p>
<p><?php echo $sg->gallery->galleries[$index]->summary(); ?></p>
<p>[<?php echo $sg->gallery->galleries[$index]->itemCountText(); ?>]</p>
</td>
</tr></table></div>
<?php endfor; ?>
 
</td>
<td class="mr"></td>
</tr>
<tr>
<td class="bl"></td>
<td class="bm"></td>
<td class="br"></td>
</tr>
</table></div>
 
<p class="sgDetailsList">
<?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
<strong><?php echo $key; ?>:</strong> <?php echo $value; ?><br />
<?php endforeach; ?>
</p>
/photogallery/templates/default/header.tpl.php
0,0 → 1,25
<!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">
<head>
<title><?php echo $sg->pageTitle(); ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>main.css" />
<?php echo $sg->navigationLinks(); ?>
<!--
This page was generated by singapore <http://singapore.sourceforge.net>
singapore is free software licensed under the terms of the GNU GPL.
-->
</head>
 
<body>
 
<?php echo $sg->languageFlipper(); ?>
<?php echo $sg->templateFlipper(); ?>
 
<div id="crumb"><?php echo $sg->crumbLine(); ?></div>
 
<div id="header"><img src="<?php echo $sg->config->base_url.$sg->config->pathto_current_template ?>images/header.gif" alt="<?php echo$sg->config->gallery_name ?>" /></div>
 
<!-- start of generated content -->
 
/photogallery/templates/default/image.tpl.php
0,0 → 1,45
<p class="sgNavBar sgTopNavBar">
<?php echo $sg->previewThumbnails(); ?>
<br />
<?php if($sg->image->hasPrev()) echo $sg->image->prevLink()." | "; ?>
<?php echo $sg->image->parentLink(); ?>
<?php if($sg->image->hasNext()) echo " | ".$sg->image->nextLink(); ?>
</p>
<h2 class="sgTitle"><?php echo $sg->image->name(); ?></h2>
<h4 class="sgSubTitle"><?php echo $sg->image->byArtistText(); ?></h4>
<div class="sgShadow"><table class="sgShadow" cellspacing="0">
<tr>
<td class="tl"></td>
<td class="tm"></td>
<td class="tr"></td>
</tr>
<tr>
<td class="ml"></td>
<td class="mm">
<?php echo $sg->image->imageHTML() ?>
</td>
<td class="mr"></td>
</tr>
<tr>
<td class="bl"></td>
<td class="bm"></td>
<td class="br"></td>
</tr>
</table></div>
<p class="sgNavBar sgBottomNavBar">
<?php if($sg->image->hasPrev()) echo $sg->image->prevLink()." | "; ?>
<?php echo $sg->image->parentLink(); ?>
<?php if($sg->image->hasNext()) echo " | ".$sg->image->nextLink(); ?>
</p>
 
<h4 class="sgNameByArtist"><em><?php echo $sg->image->name() ?></em><?php echo $sg->image->byArtistText() ?></h4>
<p class="sgDetailsList">
<?php foreach($sg->image->detailsArray() as $key => $value): ?>
<strong><?php echo $key ?>:</strong> <?php echo $value ?><br />
<?php endforeach; ?>
</p>
 
<?php echo $sg->imageMap() ?>
/photogallery/templates/default/images/blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/header.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-bl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-bm.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-br.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-ml.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-mr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tabl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tabm.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tabr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tm.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/shadow-tr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/slide-bl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/slide-br.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/slide-tl.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/images/slide-tr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/default/index.tpl.php
0,0 → 1,32
<?php
 
/**
* Default singapore template.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version 1.0
*/
 
//include header file
include $sg->config->base_path.$sg->config->pathto_current_template."header.tpl.php";
 
switch($sg->action) {
case "addcomment" :
include $sg->config->base_path.$sg->config->pathto_current_template."addcomment.tpl.php";
default :
if($sg->isImagePage()) {
//this is an 'image' page so include the 'image' template file
include $sg->config->base_path.$sg->config->pathto_current_template."image.tpl.php";
} elseif($sg->isAlbumPage()) {
//this is an 'album' page so include the 'album' template file
include $sg->config->base_path.$sg->config->pathto_current_template."album.tpl.php";
} else {
//this is a 'gallery' page so include the 'gallery' template file
include $sg->config->base_path.$sg->config->pathto_current_template."gallery.tpl.php";
}
}
//include footer file
include $sg->config->base_path.$sg->config->pathto_current_template."footer.tpl.php";
 
?>
/photogallery/templates/default/main.css
0,0 → 1,232
/* * * * * * * * * * */
/* Generic elements */
/* * * * * * * * * * */
 
body {
margin: 1em;
font: small sans-serif;
color: #000;
background-color: #fff;
}
 
p, td, th, li, h4 {
font: small sans-serif;
}
 
h1, h2, h3 {
color: #f60;
}
 
h1 {
font-size: large;
}
 
a:link, a:visited {
color: #09f;
text-decoration: underline;
}
 
a:hover {
text-decoration: none;
}
 
input, textarea, select, .inputbox {
border: 1px solid #f60;
color: #000;
background-color: #fff;
}
 
input.radio {
border: none;
background-color: #fff;
}
 
input.button {
font-weight: bold;
border: 1px outset #fff;
color: #fff;
background-color: #f60;
}
 
a img {
border: 0;
}
 
 
/* * * * * * * * * * */
/* Elements with IDs */
/* * * * * * * * * * */
 
 
/* header: image and/or title */
#header { }
 
/* crumb line: (You are here: ...) */
#crumb { }
 
/* footer: copyright notices */
#footer {
text-align: center;
}
 
 
/* * * * * * * * * */
/* Custom classes */
/* * * * * * * * * */
 
 
/* image or gallery name header */
.sgTitle {
margin-bottom: 0;
}
 
/* image or gallery artist subheader */
.sgSubTitle {
margin-top: 0;
}
 
/* image and artist name displayed beneath image */
p.sgNameByArtist { }
 
/* image and gallery details such as date, location, camera model, hits etc. */
p.sgDetailsList { }
 
/* language select box and template select box respectively */
div.sgLanguageFlipper, div.sgTemplateFlipper {
float: right;
clear: right;
}
 
div.sgClear {
clear: both;
}
 
/* wraps the drop-shadow table to allow IE to center it */
div.sgShadow {
text-align: center;
padding: 1em;
}
 
/* the main content table that does the drop-shadow effect */
table.sgShadow {
margin-left: auto;
margin-right: auto;
clear: both;
}
 
table.sgShadow {
background-color: #f0f0f0;
padding: 0;
text-align: left;
}
 
table.sgShadow td {
padding: 0;
margin: 0;
}
 
/* div containing each gallery sub-gallery on a gallery page */
div.sgGallery {
margin: 5px;
padding: 5px;
border: 1px solid #ccc;
background-color: #fff;
}
 
/* the table cell containing the gallery thumbnail */
td.sgGalleryThumb {
width: 100px;
text-align: center;
}
 
/* the gallery thumbnail itself */
img.sgGalleryThumb {
border: 1px solid #000;
}
 
/* the descriptive text (title, summary, contents) */
div.sgGallery p {
margin-top: 0;
margin-bottom: 2px;
}
 
 
/* full size image on an image page*/
img.sgImage {
border: none;
}
 
/* the preview thumbnails and previous, thumbnails, next links */
p.sgTopNavBar, p.sgBottomNavBar {
text-align: center;
float: right;
}
 
/* wraps the thumbnail and rounded-corner code on an album page */
div.sgThumbnail {
width: 124px;
height: 124px;
margin: 10px 5px;
float: left;
padding: 0px;
text-align: center;
}
 
div.sgThumbnail table {
width: 114px;
height: 114px;
margin: 0px;
text-align: center;
vertical-align: middle;
}
 
.sgThumbnailContent {
background: #fff;
margin: 0px;
padding: 0px;
border: 1px solid #ccc;
}
 
 
/* the following code does the rounded corners of the 35mm slide effect on
the album pages. Taken from http://www.albin.net/CSS/roundedCorners/ */
.roundedCornerSpacer {
margin: 0px; padding: 0px; border: 0px;
clear: both;
font-size: 1px; line-height: 1px;
}
.borderTL, .borderTR, .borderBL, .borderBR {
width: 5px; height: 5px;
padding: 0px; border: 0px;
z-index: 99;
}
.borderTL, .borderBL { float: left; clear: both; }
.borderTR, .borderBR { float: right; clear: right; }
.borderTL { margin: -1px 0px 0px -1px; }
.borderTR { margin: -1px -1px 0px 0px; }
.borderBL { margin: -5px 0px 0px 0px; }
.borderBR { margin: -5px 0px 0px 0px; }
 
 
/* appropriate background images for drop-shadow effect */
table.sgShadow td.tabl { background-image: url('images/shadow-tabl.gif'); width: 16px; height: 16px; }
table.sgShadow td.tabm { background-color: #fff; }
table.sgShadow td.tabr { background-color: #fff; }
 
table.sgShadow td.tl { background-image: url('images/shadow-tl.gif'); width: 32px; height: 16px; }
table.sgShadow td.tm { background-image: url('images/shadow-tm.gif');}
table.sgShadow td.tr { background-image: url('images/shadow-tr.gif');}
table.sgShadow td.ml { background-image: url('images/shadow-ml.gif');}
table.sgShadow td.mm { padding: 10px;} /* cell containing image */
table.sgShadow td.mr { background-image: url('images/shadow-mr.gif');}
table.sgShadow td.bl { background-image: url('images/shadow-bl.gif');}
table.sgShadow td.bm { background-image: url('images/shadow-bm.gif');}
table.sgShadow td.br { background-image: url('images/shadow-br.gif'); width: 32px; height: 32px; }
 
/* the bit with previous, next */
table.sgShadow td.tabm div {
font-size: 13px;
background: #f0f0f0 url('images/shadow-tabm.gif') top right;
padding-right: 30px;
float: left;
}
/photogallery/templates/default/template.ini
0,0 → 1,50
;Option descriptions have been grouped together here.
;Do not uncomment the following lines, they are for illustration only.
;
;thumb_width_*
; Width in pixels of thumbnails generated by the script.
; This option is affected by the thumb_crop_* option (see below).
;
;thumb_height_*
; Height in pixels of thumbnails generated by the script.
; This option is affected by the thumb_crop_* option (see below).
;
;thumb_crop_*
; By default, width and height are maximum dimensions and images will be
; resized, maintaining the same aspect ratio, to fit within these limits.
; Turn force_size on to make the script crop images to the specified size.
;
;*_gallery
; These options affect gallery pages (those that contain sub-galleries).
;
;*_album
; These options affect album pages (those that contain only images).
;
;*_preview
; These options affect the preview thumbnails displayed on image pages.
;
;*_image
; These options affect full size display images and are only used if
; full_image_resize is on in singapore.ini
 
thumb_width_gallery = 80
thumb_height_gallery = 80
thumb_crop_gallery = off
thumb_number_gallery = 10
;Maximum number of galleries to show on one gallery page.
 
thumb_width_album = 100
thumb_height_album = 100
thumb_crop_album = off
thumb_number_album = 20
;Maximum number of image thumbnails to show on one album page.
 
thumb_width_preview = 50
thumb_height_preview = 50
thumb_crop_preview = off
thumb_number_preview = 5
;Maximum number of preview thumbnails to display (including
;current image). An odd number is usually preferred.
thumb_width_image = 700
thumb_height_image = 500
/photogallery/templates/index.php
0,0 → 1,0
<?php header("Location: ../") ?>
/photogallery/templates/modern/admin.tpl.php
--- templates/modern/album.tpl.php (nonexistent)
+++ templates/modern/album.tpl.php (revision 250)
@@ -0,0 +1,29 @@
+ <h2><?php echo $sg->gallery->name(); ?></h2>
+ <h4><?php echo $sg->gallery->byArtistText(); ?></h4>
+</div>
+
+<div id="sgMain-nav">
+</div>
+
+<div id="sgContent">
+ <p class="sgTab"><?php echo $sg->galleryTab(); ?></p>
+
+ <div class="sgAlbum">
+ <?php for($index = $sg->gallery->startat; $index < $sg->gallery->imageCountSelected()+$sg->gallery->startat; $index++): ?>
+ <?php echo $sg->gallery->images[$index]->thumbnailLink(); ?>
+ <?php endfor; ?>
+ <div class="sgFoot"></div>
+ </div>
+
+ <p class="sgTab"><?php echo $sg->galleryTab(); ?></p>
+
+ <div class="sgDetailsList">
+ <dl>
+ <?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
+ <dt><?php echo $key; ?>:</dt><dd><?php echo $value; ?></dd>
+ <?php endforeach; ?>
+ </dl>
+ </div>
+
+</div>
+
/photogallery/templates/modern/css/color_bob.css
0,0 → 1,173
/*
Black on Black CSS for Modern - Singapore Template v1.3 (www.sgal.org)
by Ross Howard (www.abitcloser.com)
*/
 
/* Structure */
body {
background-color: #111;
}
 
#sgContainer {
border-right-color: #0A0A0A;
border-left-color: #222;
border-top-color: #222;
border-bottom-color: #0A0A0A;
background-color: #1A1A1A;
}
 
#sgHeader {
border-right-color:#111;
}
 
#sgMain-nav {
border-right-color: #111;
color: #444;
}
 
#sgContent {
border-right-color: #111;
border-bottom-color: #111;
border-top-color: #1A1A1A;
}
 
#sgUpdate {
background-color: #222;
border-bottom-color: #111;
color: #666;
}
 
/* Page Elements */
 
.sgCrumb {
color: #444;
}
 
.sgGallery {
border-color: #1E1E1E;
background-color: #111;
}
 
.sgAlbum {
border-color:#1E1E1E;
background-color: #111;
}
 
.sgImageBox {
background-color: #111;
border-color: #222;
border-right-color: #111;
border-bottom-color: #111;
}
 
img.sgImage {
background: #111 url(../img/loader_b.gif) center bottom no-repeat;
}
 
/* Typography */
 
h2 {
color: #DDD;
}
 
h4 {
color: #666;
}
 
p {
color: #666;
}
 
.sgGallery p.sgCount {
color: #AAA;
}
 
.sgPreview p {
color: #999;
}
 
#sgFooter p {
color: #333;
}
 
a {
color: #22628D;
}
 
#sgFooter a {
color: #22628D;
}
 
/* Links and Thumbnails */
 
.sgAlbum a img {
background-color: #181818;
border-color: #222;
}
 
.sgGallery a img {
background-color: #181818;
border-color: #222;
}
 
a:hover img.sgThumbnailAlbum, a:hover img.sgThumbGallery {
border-color: #333;
}
 
.sgPreview a img {
border-color: #333;
color: #CCC;
}
 
.sgPreview a:hover img, .sgPreview a:hover img.sgThumbnailPreviewCurrent{
border-color: #666;
}
 
/* Details */
 
dl {
color: #999;
}
 
dt {
color: #666;
}
 
/* Forms */
 
select{
color: #666;
}
 
/* In-Image Rollovers */
 
.sgImageBox a {
background-color: #111;
}
 
.sgImageBox a.prev {
border-right-color: #111;
}
 
.sgImageBox a.thumb {
border-bottom-color: #111;
}
 
.sgImageBox a.next {
border-left-color: #111;
}
 
.sgImageBox a.control {
border-top-color: #111;
}
 
/* Slideshow */
 
body#slideshow {
background-color: #000;
}
 
#slideshow div.sgImageBox {
background-color: #000;
}
/photogallery/templates/modern/css/color_wob.css
0,0 → 1,173
/*
White on Black CSS for Modern - Singapore Template v1.3 (www.sgal.org)
by Ross Howard (www.abitcloser.com)
*/
 
/* Structure */
body {
background-color: #111;
}
 
#sgContainer {
border-right-color: #0A0A0A;
border-left-color: #222;
border-top-color: #222;
border-bottom-color: #0A0A0A;
background-color: #FFF;
}
 
#sgHeader {
border-right-color: #C3C3C3;
}
 
#sgMain-nav {
border-right-color: #C3C3C3;
color: #999;
}
 
#sgContent {
border-right-color: #C3C3C3;
border-bottom-color: #C3C3C3;
border-top-color: #FFF;
}
 
#sgUpdate {
background-color: #222;
border-bottom-color: #111;
color: #666;
}
 
/* Page Elements */
 
.sgCrumb {
color: #999;
}
 
.sgGallery {
border-color: #CCC;
background-color: #EEE;
}
 
.sgAlbum {
border-color: #CCC;
background-color: #EEE;
}
 
.sgImageBox {
background-color: #EEE;
border-color: #DDD;
border-right-color: #AAA;
border-bottom-color: #AAA;
}
 
img.sgImage {
background: #EEE url(../img/loader_w.gif) center bottom no-repeat;
}
 
/* Typography */
 
h2 {
color: #555;
}
 
h4 {
color: #666;
}
 
p {
color: #666;
}
 
.sgGallery p.sgCount {
color: #AAA;
}
 
.sgPreview p {
color: #999;
}
 
#sgFooter p {
color: #333;
}
 
a {
color: #29A9FF;
}
 
#sgFooter a {
color: #22628D;
}
 
/* Links and Thumbnails */
 
.sgAlbum a img {
background-color: #FFF;
border-color: #DDD;
}
 
.sgGallery a img {
background-color: #FFF;
border-color: #DDD;
}
 
a:hover img.sgThumbnailAlbum, a:hover img.sgThumbGallery {
border-color: #BBB;
}
 
.sgPreview a img {
border-color: #CCC;
color: #CCC;
}
 
.sgPreview a:hover img, .sgPreview a:hover img.sgThumbnailPreviewCurrent{
border-color: #29A9FF;
}
 
/* Details */
 
dl {
color: #999;
}
 
dt {
color: #666;
}
 
/* Forms */
 
select{
color: #666;
}
 
/* In-Image Rollovers */
 
.sgImageBox a {
background-color: #222;
}
 
.sgImageBox a.prev {
border-right-color: #111;
}
 
.sgImageBox a.thumb {
border-bottom-color: #111;
}
 
.sgImageBox a.next {
border-left-color: #111;
}
 
.sgImageBox a.control {
border-top-color: #111;
}
 
/* Slideshow */
 
body#slideshow {
background-color: #000;
}
 
#slideshow div.sgImageBox {
background-color: #000;
}
/photogallery/templates/modern/css/color_wow.css
0,0 → 1,173
/*
White on White CSS for Modern - Singapore Template v1.3 (www.sgal.org)
by Ross Howard (www.abitcloser.com)
*/
 
/* Structure */
body {
background-color: #E5E5E5;
}
 
#sgContainer {
border-right-color: #DEDEDE;
border-left-color: #DEDEDE;
border-top-color: #DEDEDE;
border-bottom-color: #DEDEDE;
background-color: #FFF;
}
 
#sgHeader {
border-right-color: #C3C3C3;
}
 
#sgMain-nav {
border-right-color: #C3C3C3;
color: #999;
}
 
#sgContent {
border-right-color: #C3C3C3;
border-bottom-color: #C3C3C3;
border-top-color: #FFF;
}
 
#sgUpdate {
background-color: #FFF;
border-bottom-color: #DEDEDE;
color: #666;
}
 
/* Page Elements */
 
.sgCrumb {
color: #999;
}
 
.sgGallery {
border-color: #CCC;
background-color: #EEE;
}
 
.sgAlbum {
border-color: #CCC;
background-color: #EEE;
}
 
.sgImageBox {
background-color: #EEE;
border-color: #DDD;
border-right-color: #AAA;
border-bottom-color: #AAA;
}
 
img.sgImage {
background: #EEE url(../img/loader_w.gif) center bottom no-repeat;
}
 
/* Typography */
 
h2 {
color: #555;
}
 
h4 {
color: #666;
}
 
p {
color: #666;
}
 
.sgGallery p.sgCount {
color: #AAA;
}
 
.sgPreview p {
color: #999;
}
 
#sgFooter p {
color: #AAA;
}
 
a {
color: #29A9FF;
}
 
#sgFooter a {
color: #29A9FF;
}
 
/* Links and Thumbnails */
 
.sgAlbum a img {
background-color: #FFF;
border-color: #DDD;
}
 
.sgGallery a img {
background-color: #FFF;
border-color: #DDD;
}
 
a:hover img.sgThumbnailAlbum, a:hover img.sgThumbGallery {
border-color: #BBB;
}
 
.sgPreview a img {
border-color: #CCC;
color: #CCC;
}
 
.sgPreview a:hover img, .sgPreview a:hover img.sgThumbnailPreviewCurrent{
border-color: #29A9FF;
}
 
/* Details */
 
dl {
color: #999;
}
 
dt {
color: #666;
}
 
/* Forms */
 
select{
color: #666;
}
 
/* In-Image Rollovers */
 
.sgImageBox a {
background-color: #222;
}
 
.sgImageBox a.prev {
border-right-color: #111;
}
 
.sgImageBox a.thumb {
border-bottom-color: #111;
}
 
.sgImageBox a.next {
border-left-color: #111;
}
 
.sgImageBox a.control {
border-top-color: #111;
}
 
/* Slideshow */
 
body#slideshow {
background-color: #000;
}
 
#slideshow div.sgImageBox {
background-color: #000;
}
/photogallery/templates/modern/css/ie.css
0,0 → 1,46
/* IE Hacks */
body {
text-align: center;
}
 
.sgAlbum, #sgContent, h3, .sgGallery p {
height: 1%;
}
 
#sgContent div.sgImageWrapper {
text-align: center;
}
 
p.sgTab {
position: relative;
margin-top: 0px;
}
 
#sgContainer {
text-align: left;
}
 
.sgAlbum a {
display: inline;
margin: 0 18px 20px 19px;
}
 
.sgPreview a:hover img, a:hover img.sgThumbnailAlbum, a:hover img.sgThumbGallery {
filter: alpha(opacity=100);
}
 
img.sgThumbnailPreviewCurrent {
filter: alpha(opacity=60);
}
 
.sgImageBox a {
filter: alpha(opacity=0);
}
 
.sgImageBox a:hover {
filter: alpha(opacity=90);
}
 
.sgGalleryFloat {
display: inline;
}
/photogallery/templates/modern/css/layout.css
0,0 → 1,348
/*
Layout CSS for Modern - Singapore Template v1.3 (www.sgal.org)
by Ross Howard (www.abitcloser.com)
*/
 
/* Structure */
/* For editing and customisation read these notes */
body {
padding: 0;
margin: 0;
font-family: Arial, Helvetica, sans-serif; /* Set the font here to effect entire template */
}
 
#sgContainer {
width: 740px; /* This is the page width, if you want a full-screen/liquid layout use 'auto' */
border-right: 4px solid; /* If you use full-screen/liquid layout you probably want to set all borders to 'none' */
border-left: 1px solid;
border-top: 1px solid;
border-bottom: 4px solid;
margin: 24px auto 0 auto;
}
 
#sgHeader {
border-right: 1px solid;
}
 
#sgOptions {
text-align: right;
float: right;
margin: 6px 0 0 0;
}
 
#sgMain-nav {
border-right: 1px solid;
padding-top: 12px;
margin: 0 0 0 26px;
font-size: 11px;
}
 
#sgContent {
border-right: 1px solid;
border-bottom: 1px solid;
border-top: 1px solid;
}
 
#sgFooter {
width: 760px;
margin: 16px auto 0 auto;
padding: 0 0 16px 0;
text-align: center;
}
 
#sgUpdate {
font-size: 11px;
padding: 8px 0 8px 0;
text-align: center;
border-bottom: 1px solid;
}
 
 
/* Page Elements */
 
.sgCrumb {
font-size: 11px;
line-height: 16px;
padding: 20px 0 16px 26px;
}
 
.sgGallery {
border: 1px solid;
margin: 18px 24px 24px 24px;
padding: 12px 12px 10px 12px;
}
 
.sgGalleryFloat {
margin: 18px 4px 12px 24px;
float: left;
width: 304px;
}
 
.sgAlbum {
border: 1px solid;
margin: 18px 24px 32px 24px;
padding: 22px 0 0 0;
clear: both;
}
 
.sgImageBox {
margin: 24px auto 24px auto;
position: relative;
font-size: 11px;
padding: 5px;
border: 1px solid;
border-right: 1px solid;
border-bottom: 1px solid;
}
 
img.sgImage {
display: block;
}
 
.sgPreview {
text-align: center;
margin: 28px 0 24px 0;
}
 
.sgFoot {
clear: both;
}
 
 
/* Typography */
 
h2 {
font-size: 32px;
line-height: 32px;
font-weight: normal;
margin: 0 200px 0 24px;
padding: 0;
}
 
h3 {
font-size: 16px;
line-height: 18px;
font-weight: normal;
margin: 0px 0 6px 130px;
padding: 0;
}
 
h4 {
font-size: 11px;
line-height: 12px;
font-weight: normal;
margin: 0 0 0 26px;
padding: 0;
}
 
p {
font-size: 11px;
line-height: 16px;
margin: 6px 16px 4px 16px;
}
 
.sgGallery p {
border: none;
margin: 0 0 4px 130px;
}
 
#sgFooter p {
text-align: center;
}
 
p.sgLinks {
margin: 24px 0 -38px 24px;
padding: 0 0 6px 0;
}
 
p.sgTab {
line-height: 16px;
text-align: right;
margin: -16px 32px 0 24px;
padding: 0 0 0 0;
clear: both;
}
 
p.sgTab a{
margin-right: 0px;
}
 
p.sgFullsize {
text-align: center;
margin: 0;
padding: 0;
}
 
a {
text-decoration: none;
}
 
a:hover {
text-decoration: underline;
}
 
/* Links and Thumbnails */
 
.sgAlbum a {
width: 134px; /* This equals template.ini 'thumb_width_album' + padding and borders of inside img */
height: 134px; /* This equals template.ini 'thumb_height_album' + padding and borders of inside img */
float: left;
text-align: center;
margin: 0 19px 20px 19px;
}
 
.sgAlbum a img {
padding: 16px; /* 16px x 2 = 32px */
border: 1px solid ; /* 1px x 2 = 2px = 34px */
}
 
.sgGallery a img {
padding: 16px;
border: 1px solid;
float: left;
margin: 0 -150px 0 0;
}
 
a:hover img.sgThumbnailAlbum, a:hover img.sgThumbGallery {
border: 1px solid;
}
 
.sgPreview a {
border: none;
}
 
.sgPreview a img {
border: 1px solid;
margin: 0 4px 0 4px;
padding: 2px;
}
 
img.sgThumbnailPreviewCurrent {
opacity: .6;
}
 
.sgPreview a:hover img, .sgPreview a:hover img.sgThumbnailPreviewCurrent{
border: 1px solid;
opacity: 1;
}
 
/* Details */
 
dl {
font-size: 11px;
line-height: 16px;
margin: 12px 64px 24px 64px;
padding: 0;
text-align: center;
}
 
dt {
display: inline;
margin: 0 4px 0 0;
padding: 0;
}
 
dd {
display: inline;
margin: 0;
padding: 0;
}
 
/* Forms */
 
#sgOptions form{
border: none;
margin: 0 0 0 12px;
padding: 0 12px 0 0;
font-size: 10px;
display: inline;
}
 
input {
font-size: 10px;
margin: 12px 0 0 0;
}
 
select{
font-size: 10px;
}
 
/* Utility */
 
.clear {
display: block;
clear:both;
float: none;
}
 
/* In-Image Rollovers */
 
.sgImageBox a {
display: block;
position: absolute;
text-indent: -3000px;
font-size: 15px;
opacity: .0;
width: 80px;
text-align: center;
}
 
.sgImageBox a:hover {
opacity: .9;
text-indent: 0px;
text-decoration: none;
}
 
.sgImageBox a span{
display: block;
}
 
.sgImageBox a.thumb span, .sgImageBox a.control span{
margin-top: 22px;
}
 
.sgImageBox a.prev {
top: 5px;
left: 5px;
border-right: 1px solid;
}
 
.sgImageBox a.thumb {
top: 5px;
left: 5px;
height: 60px;
border-bottom: 1px solid;
}
 
.sgImageBox a.next {
top: 5px;
right: 5px;
border-left: 1px solid;
}
 
.sgImageBox a.control {
left: 5px;
bottom: 4px;
height: 60px;
border-top: 1px solid;
}
 
/* Slideshow */
 
body#slideshow div.sgImageWrapper{
position: absolute;
top: 50%;
left: 0px;
width: 100%;
}
 
#slideshow div.sgImageBox {
margin: 0 auto 0 auto;
font-size: 11px;
padding: 5px;
border: none;
}
 
body#slideshow div img{
margin: 0px auto 0px;
}
/photogallery/templates/modern/footer.tpl.php
0,0 → 1,17
<!-- start of footer.tpl.php -->
</div>
<div id="sgFooter">
<p>
<?php echo $sg->allRightsReserved(); ?>
<?php echo $sg->licenseText(); ?>
<br />
<?php echo $sg->poweredByText(); ?>
<?php echo $sg->scriptExecTimeText(); ?> |
<?php echo $sg->adminLink(); ?>
</p>
</div>
<?php
if (!defined('EXTERNAL')) {
echo '</body>
</html>';
}
/photogallery/templates/modern/gallery.tpl.php
0,0 → 1,41
<h2><?php echo $sg->gallery->name(); ?></h2>
<h4><?php echo $sg->gallery->byArtistText(); ?></h4>
</div>
 
<div id="sgMain-nav">
<?php if($sg->gallery->hasPrev()) echo $sg->gallery->prevLink()." | "; ?>
<?php if(!$sg->gallery->isRoot()) echo $sg->gallery->parentLink(); ?>
<?php if($sg->gallery->hasNext()) echo " | ".$sg->gallery->nextLink(); ?>
</div>
 
<div id="sgContent">
<p class="sgTab"><?php echo $sg->galleryTab(); ?></p>
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->galleryCountSelected()+$sg->gallery->startat; $index++): ?>
<div class="sgGallery <?php if ($sg->config->thumb_float_gallery == 1) { echo 'sgGalleryFloat';} ?>">
<?php echo $sg->gallery->galleries[$index]->thumbnailLink(); ?>
<h3 title="View Gallery"><?php echo $sg->gallery->galleries[$index]->nameLink(); ?></h3>
<p><?php echo $sg->gallery->galleries[$index]->summary(); ?></p>
<p class="sgCount"><?php echo $sg->gallery->galleries[$index]->itemCountText(); ?></p>
<?php if ($sg->config->show_slideshowURL == 1) { ?>
<?php if ($sg->gallery->galleries[$index]->hasImages() && !$sg->gallery->galleries[$index]->hasChildGalleries()) { ?>
<p><a href="<?php echo $sg->gallery->galleries[$index]->images[0]->URL(); if (!strstr($sg->gallery->galleries[$index]->images[0]->URL(), '?')) { echo '?'; } else { echo '&'; } ?>action=slideshow">View Slideshow</a></p>
<?php } ?>
<?php } ?>
<div class="sgFoot"></div>
</div>
<?php // The number below equals the number of boxes before a new line starts. 1 will never echo the clear
if($index % 2) {echo '<div class="clear"></div>';} ?>
<?php endfor; ?>
 
<p class="sgTab"><?php echo $sg->galleryTab(); ?></p>
<div class="sgDetailsList">
<dl>
<?php foreach($sg->gallery->detailsArray() as $key => $value): ?>
<dt><?php echo $key; ?>:</dt><dd><?php echo $value; ?></dd>
<?php endforeach; ?>
</dl>
</div>
 
</div>
/photogallery/templates/modern/header.tpl.php
0,0 → 1,36
<?php
if (!defined('EXTERNAL')) {
echo '<!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">
<head>
<title>'.$sg->config->gallery_name.' - '.$sg->pageTitle().'</title>
<style type="text/css">@import url('.$sg->config->base_url.$sg->config->pathto_current_template.'css/layout.css);</style>
<style type="text/css">@import url('.$sg->config->base_url.$sg->config->pathto_current_template.'css/color_'.$sg->config->template_scheme.'.css);</style>
<!--[if IE]><link rel="stylesheet" type="text/css" media="all" href="'.$sg->config->base_url.$sg->config->pathto_current_template.'css/ie.css"><![endif]-->
<link rel="alternate" type="application/rss+xml" title="'.$sg->pageTitle().'" href="'.$_SERVER["PHP_SELF"]; if (isset($_GET["gallery"])) { echo '?gallery='.$_GET["gallery"];} echo '&template=rss" />
'.$sg->navigationLinks().'</head>
<body>
';
}
if (!isset($_GET["gallery"]) && $sg->config->update_check == 1 && $sg->isLoggedIn()) {
$handle = fopen($sg->config->update_url."update.php", "r");
$buffer = fgets($handle);
$thisBuffer = str_replace(' ', '', $buffer);
if ($thisBuffer != $sg->config->current_version) { echo '<div id="sgUpdate">There is a new version of Modern ('.$thisBuffer.') - <a href="'.$sg->config->update_url.$thisBuffer.'.zip">Download</a> - <a href="http://www.abitcloser.com/projects/singapore/">Read More</a></div>'; };
fclose($handle);
}
?>
 
<!--
This page was generated by singapore <http://singapore.sourceforge.net>
singapore is free software licensed under the terms of the GNU GPL.
 
Modern Template <? echo $sg->config->current_version ?> by Ross Howard
http://www.abitcloser.com/projects/singapore
-->
<div id="sgContainer">
<div id="sgHeader">
<div id="sgOptions"><?php echo $sg->languageFlipper(); ?><?php echo $sg->templateFlipper(); ?></div>
<div class="sgCrumb"><?php echo $sg->crumbLine(); ?></div>
<!-- end of header.tpl.php -->
/photogallery/templates/modern/image.tpl.php
0,0 → 1,36
<h2><?php echo $sg->image->name(); ?></h2>
<h4><?php echo $sg->image->byArtistText(); ?></h4>
</div>
<div id="sgContent">
 
<div class="sgImageWrapper">
<div class="sgImageBox" style="width: <?php echo $sg->image->width(); ?>px; ">
<?php echo $sg->image->imageHTML() ?>
<a class="thumb" style="width: <?php echo $sg->image->width().'px;" href="'.$sg->image->parent->URL().'"><span>'.$sg->translator->_g("image|Thumbnails").'</span></a>'; ?>
<?php if($sg->image->hasPrev()) {echo '<a class="prev" style="height:'.$sg->image->height().'px;" href="'.$sg->image->prevURL().'"><span style="margin-top:'.floor(($sg->image->height())/2).'px;">'.$sg->translator->_g("image|Previous").'</span></a>'; } ?>
<?php if($sg->image->hasNext()) {echo '<a class="next" style="height:'.$sg->image->height().'px;" href="'.$sg->image->nextURL().'"><span style="margin-top:'.floor(($sg->image->height())/2).'px;">'.$sg->translator->_g("image|Next").'</span></a>'; } ?>
</div>
</div>
 
<?php if ($sg->config->show_fullsizeURL == 1) { ?>
<p class="sgFullsize"><a href="<?php echo $sg->image->realURL(); ?>"><?php echo $sg->translator->_g("image|View Full Size Image"); ?></a> <a href="<?php echo $sg->image->realURL(); ?>" target="_new">[+]</a></p>
<?php } ?>
 
<div class="sgDetailsList">
<dl>
<?php foreach($sg->image->detailsArray() as $key => $value): ?>
<dt><?php echo $key; ?>:</dt><dd><?php echo $value; ?></dd>
<?php endforeach; ?>
</dl>
</div>
 
<div class="sgPreview">
<?php echo $sg->previewThumbnails(); ?>
<p>
<?php if($sg->image->hasPrev()) echo "&#8249; ".$sg->image->prevLink()." &nbsp;&nbsp; "; ?>
<?php echo $sg->image->parentLink(); ?>
<?php if($sg->image->hasNext()) echo " &nbsp;&nbsp; ".$sg->image->nextLink()." &#8250;"; ?>
</p>
</div>
</div>
<?php echo $sg->imageMap() ?>
/photogallery/templates/modern/img/loader_b.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/modern/img/loader_w.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/photogallery/templates/modern/index.tpl.php
0,0 → 1,49
<?php
 
/**
* Modern Template by Ross Howard
* http://www.abitcloser.com/projects/singapore
*/
 
//debugging code
//error_reporting(E_ALL);
 
// set embed to false
$embed = false;
 
//load user details (must be done after session_start)
$sg->loadUser();
 
//if slideshow then set external
if($sg->action == 'slideshow') {$embed = true;}
 
//include header file
if ($embed == false) {
include $sg->config->base_path.$sg->config->pathto_current_template."header.tpl.php";
}
 
//watch actions and pagetypes
switch($sg->action) {
case "addcomment" :
include $sg->config->base_path.$sg->config->pathto_current_template."addcomment.tpl.php";
default :
if($sg->action == 'slideshow') {
//this is an 'slideshow' page so include the 'slideshow' template file
include $sg->config->base_path.$sg->config->pathto_current_template."slideshow.tpl.php";
} elseif($sg->isImagePage()) {
//this is an 'image' page so include the 'image' template file
include $sg->config->base_path.$sg->config->pathto_current_template."image.tpl.php";
} elseif($sg->isAlbumPage()) {
//this is an 'album' page so include the 'album' template file
include $sg->config->base_path.$sg->config->pathto_current_template."album.tpl.php";
} else {
//this is a 'gallery' page so include the 'gallery' template file
include $sg->config->base_path.$sg->config->pathto_current_template."gallery.tpl.php";
}
}
//include footer file
if ($embed == false) {
include $sg->config->base_path.$sg->config->pathto_current_template."footer.tpl.php";
}
?>
/photogallery/templates/modern/readme.txt
0,0 → 1,60
Modern - singapore template v1.3.2
by Ross Howard (www.abitcloser.com/projects/singapore)
 
Modern is a lightweight xHTML/CSS template for singapore.
 
It includes gallery, album and image pages, and also has
a built-in slideshow, and full-size image pop-up ability.
 
It uses common naming conventions (albeit with an sg prefix)
and a clean div structure to allow you to easily and simply customise
it to suit your needs.
 
It supports both fixed-width, and scaling page sizes, and is intended to
be web standard compliant and render correctly on a wide range of browsers.
These include Mozilla/Firefox 1.5, Safari, Opera and IE6.
 
Modern comes standard with a default 'black on black' colour scheme, but also
includes CSS files for 'white on black' and 'white on white'.
 
By default, Modern uses the 'Arial, Helvetica, sans-serif;' font family, as
declared for the body CSS. Simply changing this one line will effect the
entire template.
 
If you make any changes to template.ini please make sure to check the CSS file
too, in case you need to adjust page or thumbnail block widths.
 
TODO - Future Versions
 
Add Javascript UI library
Add AJAX Slideshow
 
CHANGELOG
 
1.3.2 - NEW RSS included as <link> in each page - Uses RSS template
1.3.2 - NEW Update check system checks for new version of Modern when logged in and viewing root public page
1.3.2 - NEW versioning number system
 
1.3 - FIX stop slideshow link for galleries with child galleries
1.3 - FIX template.ini thumb_force_size renamed to thumb_crop_
1.3 - FIX CSS image urls
1.3 - FIX Slideshow rollovers wrong size with resized images
1.3 - FIX slideshow links for galleries with no images
1.3 - Rewrote CSS to separate structure from colour
 
1.2 - Added 'Loading' GIF
1.2 - Added Play/Pause for Slideshow
1.2 - All text now utilised translator
1.2 - Added ability to use old image map in image page (not in slideshow) but have set it as off in template.ini which overwrites singapore.ini
1.2 - Rewrite URL coding to work without mod_rewrite and handles variable stack detection in URL
1.2 - Set colour scheme to 'black on black' by default, can be set via template.ini
1.2 - Added ability to float galleries next to each other via template.ini
1.2 - Added simple HTML slideshow that can be enabled via template.ini
1.2 - Added link to full size image when current image is resized, can enabled via template.ini
1.2 - Added rollover behaviour for image navigation which replaces imagemap
 
1.1 - Added support for external.php and prefixed selectors with sg
 
1.0 - Added IE conditional comments
 
0.9 - Original working build
/photogallery/templates/modern/slideshow.tpl.php
0,0 → 1,34
<!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">
<head>
<title><?php echo $sg->translator->_g("image|Slideshow").' - '.$sg->pageTitle(); ?></title>
<style type="text/css">@import url("<?php echo $sg->config->base_url.$sg->config->pathto_current_template.'css/layout.css");</style>'; ?>
<style type="text/css">@import url("<?php echo $sg->config->base_url.$sg->config->pathto_current_template.'css/color_'.$sg->config->template_scheme.'.css");</style>'; ?>
<!--[if IE]><link rel="stylesheet" type="text/css" media="all" href="<?php echo $sg->config->base_url.$sg->config->pathto_current_template; ?>css/ie.css"><![endif]-->
<?php if($sg->image->hasNext() && !isset($control)) {
echo '<meta http-equiv="refresh" content="5;url='.$sg->image->nextURL('slideshow').'" />';
} ?>
</head>
<body id="slideshow">
<!--
This page was generated by singapore <http://singapore.sourceforge.net>
singapore is free software licensed under the terms of the GNU GPL.
-->
<div class="sgImageWrapper">
<div class="sgImageBox" style="width: <?php echo $sg->image->width(); ?>px; margin-top:-<?php echo floor($sg->image->height()/2); ?>px;" title="<?php foreach($sg->image->detailsArray() as $key => $value): ?><?php echo $key; ?>: <?php echo $value; ?><?php endforeach; ?>">
<?php echo $sg->image->imageHTML() ?>
<a class="thumb" style="width: <?php echo $sg->image->width(); ?>px;" href="<?php echo $sg->image->parent->URL().'"><span>'.$sg->translator->_g("image|Thumbnails").'</span></a>'; ?>
<?php if($sg->image->hasPrev()) {echo '<a class="prev" style="height:'.$sg->image->height().'px;" href="'.$sg->image->prevURL(); if (!strstr($sg->image->prevURL(), '?')) { echo '?'; } else { echo '&'; } echo 'action=slideshow"><span style="margin-top:'.floor(($sg->image->height())/2).'px;">'.$sg->translator->_g("image|Previous").'</span></a>';}?>
<?php if($sg->image->hasNext()) {echo '<a class="next" style="height:'.$sg->image->height().'px;" href="'.$sg->image->nextURL(); if (!strstr($sg->image->nextURL(), '?')) { echo '?'; } else { echo '&'; } echo 'action=slideshow"><span style="margin-top:'.floor(($sg->image->height())/2).'px;">'.$sg->translator->_g("image|Next").'</span></a>';}?>
<?php if (!isset($control)) {
echo '<a class="control" style="width:'.$sg->image->width().'px;" href="'.$sg->image->URL(); if (!strstr($sg->image->URL(), '?')) { echo '?'; } else { echo '&'; } echo 'action=slideshow&control=pause"><span>'.$sg->translator->_g("image|Pause").'</span></a>';
}
else {
echo '<a class="control" style="width:'.$sg->image->width().'px;" href="'.$sg->image->URL(); if (!strstr($sg->image->URL(), '?')) { echo '?'; } else { echo '&'; } echo 'action=slideshow"><span>'.$sg->translator->_g("image|Play").'</span></a>';
}
?>
</div>
</div>
</body>
</html>
/photogallery/templates/modern/template.ini
0,0 → 1,69
;Option descriptions have been grouped together here.
;Do not uncomment the following lines, they are for illustration only.
;
;thumb_width_*
; Width in pixels of thumbnails generated by the script.
; This option is affected by the thumb_force_size_* option (see below).
;
;thumb_height_*
; Height in pixels of thumbnails generated by the script.
; This option is affected by the thumb_force_size_* option (see below).
;
;thumb_force_size_*
; By default, width and height are maximum dimensions and images will be
; resized, maintaining the same aspect ratio, to fit within these limits.
; Turn force_size on to make the script crop images to the specified size.
;
;*_gallery
; These options affect gallery pages (those that contain sub-galleries).
;
;*_album
; These options affect album pages (those that contain only images).
;
;*_preview
; These options affect the preview thumbnails displayed on image pages.
;
;*_image
; These options affect full size display images and are only used if
; full_image_resize is on in singapore.ini
 
template_scheme = bob
;bob - black on black, wob - white on black, wow - white on white
imagemap_navigation = off
; typically set in singapore.ini but set here to stop cursor behaviour
 
thumb_width_gallery = 80
thumb_height_gallery = 80
thumb_force_size_gallery = off
thumb_number_gallery = 10
;Maximum number of galleries to show on one gallery page.
thumb_float_gallery = on
;Float gallery blocks side-by-side
 
thumb_width_album = 100
thumb_height_album = 100
thumb_force_size_album = off
thumb_number_album = 20
;Maximum number of image thumbnails to show on one album page.
 
thumb_width_preview = 50
thumb_height_preview = 50
thumb_force_size_preview = off
thumb_number_preview = 3
;Maximum number of preview thumbnails to display (including
;current image). An odd number is usually preferred.
 
show_fullsizeURL = on
;Turn this on to display link to the full size image
 
show_slideshowURL = on
;Turn this on to show a link to slideshow on gallery page
 
thumb_width_image = 700
thumb_height_image = 500
 
;Modern Update Checker - Connects to my site to check for new version
update_check = yes
update_url = http://www.abitcloser.com/files/
current_version = modern-v1.3.2
/photogallery/templates/rss/index.tpl.php
0,0 → 1,56
<?php
 
/**
* RSS 2.0 output for singapore.
*
* @author Ross Howard <abitcloser.com
* @copyright (c)2006 Tamlyn Rhodes
* @version 0.8
*/
 
if(headers_sent())
die("ERROR: Unable to send XML content-type header.");
else
header("Content-type: application/rss+xml; charset=".$sg->character_set);
 
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'; ?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><?php echo $sg->gallery->name(); ?></title>
<link><?php echo "http://".$_SERVER['HTTP_HOST'].($sg->config->use_mod_rewrite ? '' : dirname($_SERVER['PHP_SELF']).'/').str_replace("template=rss", "", $sg->gallery->URL()); ?></link>
<description><?php echo $sg->gallery->name(); ?> Feed</description>
<?php if(($timestamp = @strtotime($sg->gallery->date())) !== false && $timestamp != -1)
echo '<pubDate>'.date('r', $timestamp).'</pubDate>'; ?>
<generator>http://www.sgal.org/</generator>
<?php if($sg->isAlbumPage()) { ?>
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->imageCountSelected()+$sg->gallery->startat; $index++): ?>
<item>
<title><?php echo $sg->gallery->images[$index]->name; ?></title>
<link><?php echo "http://".$_SERVER['HTTP_HOST'].str_replace("?template=rss", "", $sg->gallery->images[$index]->url()); ?></link>
<?php if(($timestamp = @strtotime($sg->gallery->images[$index]->date())) !== false && $timestamp != -1)
echo '<pubDate>'.date('r', $timestamp).'</pubDate>'; ?>
<dc:creator><?php echo $sg->gallery->images[$index]->artist(); ?></dc:creator>
<description>
<![CDATA[ <?php echo $sg->gallery->images[$index]->description(); ?> ]]>
</description>
</item>
<?php endfor; ?>
<?php } elseif($sg->isGalleryPage()) { ?>
<?php for($index = $sg->gallery->startat; $index < $sg->gallery->galleryCountSelected()+$sg->gallery->startat; $index++): ?>
<item>
<title><![CDATA[<?php echo $sg->gallery->galleries[$index]->name(); ?> ]]></title>
<link><?php echo "http://".$_SERVER['HTTP_HOST'].str_replace("?template=rss", "", $sg->gallery->galleries[$index]->url()); ?></link>
<?php if(($timestamp = @strtotime($sg->gallery->date())) !== false && $timestamp != -1)
echo '<pubDate>'.date('r', $timestamp).'</pubDate>'; ?>
<dc:creator><?php echo $sg->gallery->galleries[$index]->artist(); ?></dc:creator>
<description>
<![CDATA[ <?php echo $sg->gallery->galleries[$index]->description(); ?>]]>
</description>
</item>
<?php endfor; ?>
<?php } ?>
</channel>
</rss>
/photogallery/templates/rss/template.ini
0,0 → 1,10
 
thumb_number_gallery = 100
;Maximum number of gallery items to show in one feed.
 
thumb_number_album = 100
;Maximum number of image items to show in one feed.
track_views = false
;Turn off hit logging as we don't want to count every hit
;to the RSS feed
/photogallery/locale/index.php
0,0 → 1,0
<?php header("Location: ../") ?>
/photogallery/locale/singapore.admin.bg.pmo
0,0 → 1,0
a:2:{s:13:"URL of image:";s:36:"URL на изображението:";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:9:"Bulgarian";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.ca.pmo
0,0 → 1,7
a:92:{s:27:"Welcome to singapore admin!";s:41:"Benvingut a l'administració de singapore!";s:18:"An error occurred:";s:20:"Hi ha hagut un error";s:22:"Thank you and goodbye!";s:21:"Gràcies i fins aviat!";s:14:"Password saved";s:20:"Contrasenya guardada";s:13:"Gallery added";s:15:"Galería afegida";s:18:"Gallery info saved";s:33:"Informació de la galería guardada";s:10:"confirm|OK";s:8:"Acceptar";s:15:"Gallery deleted";s:15:"Galería borrada";s:14:"confirm|Cancel";s:8:"Cancelar";s:14:"delete gallery";s:14:"borrar galería";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:125:"La galería %s no està buida
Estàs segur que vols eliminarla permanentment junt amb todas les subgaleríes i imatges que conté?";s:17:"Thumbnail changed";s:18:"Miniatura canviada";s:11:"Image added";s:14:"Imatge afegida";s:24:"Image saved successfully";s:27:"Imatge guardada exitosament";s:13:"Image deleted";s:14:"Imagen borrada";s:12:"delete image";s:13:"Borrar imatge";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:74:"Estàs segur que vols borrar la imatge %s de la galería %s permanentement?";s:22:"Thumbnail cache purged";s:37:"Memòria cau de vistes prèvies buidada";s:23:"purge cached thumbnails";s:39:"Buidar vistes prèvies de la memòria cau";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:65:"Estàs segur que vols buidar %s vistes prèvies de la memòria cau?";s:14:"admin bar|Back";s:9:"Endarrere";s:15:"admin bar|Admin";s:11:"Administrar";s:19:"admin bar|Galleries";s:8:"Galeries";s:17:"admin bar|Log out";s:6:"Sortir";s:22:"admin bar|Edit gallery";s:14:"Editar galería";s:24:"admin bar|Delete gallery";s:14:"Borrar galería";s:24:"admin bar|New subgallery";s:15:"Nova subgalería";s:20:"admin bar|Edit image";s:13:"Editar imatge";s:22:"admin bar|Delete image";s:13:"Borrar imatge";s:19:"admin bar|New image";s:11:"Nova imatge";s:43:"There was an error saving the new password.";s:52:"Hi ha hagut un error al guardar la nova contrasenya.";s:54:"New password must be between 6 and 16 characters long.";s:55:"La nova contrasenya ha de tenir entre 6 i 16 caràcters.";s:43:"The new passwords you entered do not match.";s:39:"Les noves contrasenyes no coincideixen.";s:72:"The current password you entered does not match the one in the database.";s:70:"La contrsenya actual no coincideix amb la que està a la base de dades.";s:53:"The username specified was not found in the database.";s:62:"El nom d'usuari especificat no s'ha trobat a la base de dades.";s:34:"Username and/or password incorrect";s:34:"Usuari i/o contrasenya incorrectes";s:38:"You must enter a username and password";s:45:"Has d'escriure un nom d'usuari i contrasenya.";s:22:"Gallery already exists";s:22:"La galería ja existeix";s:26:"Could not create directory";s:32:"No s'ha pogut crear el directori";s:27:"Could not save gallery info";s:44:"No es pot guardar l'informació de la galeria";s:37:"Cannot delete the top level directory";s:39:"No es pot borrar el directroi principal";s:19:"File already exists";s:19:"L'arxiu ja existeix";s:21:"Could not upload file";s:29:"No es pot carregar la imatge.";s:23:"Invalid location choice";s:21:"Localització invàlida";s:30:"Could not add image to gallery";s:42:"No s'ha pogut afegir l'imatge a la galería";s:32:"Could not save image information";s:48:"No s'ha pogut grabar la informació de la imatge.";s:22:"Could not delete image";s:31:"No s'ha pogut borrar la imatge.";s:16:"choose thumbnail";s:20:"Escull una miniatura";s:64:"Choose the filename of the image used to represent this gallery.";s:48:"Escull l'imatge per representar aquesta galería.";s:14:"thumbnail|None";s:3:"Cap";s:6:"Random";s:9:"Aleatoria";s:12:"edit gallery";s:14:"editar galería";s:18:"Gallery thumbnail:";s:27:"Vista prèvia de la galería:";s:16:"Random
thumbnail";s:23:"Vista prèvia aleatòria
";s:19:"thumbnail|Change...";s:10:"Canviar...";s:12:"Gallery name";s:17:"Nom de la galería";s:11:"Artist name";s:16:"Nom de l'artista";s:10:"edit image";s:13:"editar imatge";s:5:"Image";s:6:"Imatge";s:10:"Image name";s:16:"Nom de la imatge";s:15:"change password";s:19:"canviar contrasenya";s:67:"Please choose a new password between 6 and 16 characters in length.";s:62:"Siusplau escull una nova contrasenya d'entre 6 i 16 caràcters.";s:17:"Current password:";s:19:"Contrasenya actual:";s:13:"New password:";s:17:"Nova contrasenya:";s:17:"Confirm password:";s:22:"Confirmar contrasenya:";s:20:"singapore|Powered by";s:10:"Powered by";s:16:"hits table|Graph";s:6:"Gràfic";s:15:"hits table|Hits";s:7:"Visites";s:19:"hits table|Last hit";s:13:"Última visita";s:14:"Admin message:";s:28:"Missatge de l'administrador:";s:20:"Return to galleries.";s:22:"Tornar a les galeríes.";s:6:"log in";s:25:"Entrar a la Administració";s:110:"Only authorised users are allowed into the admin section.
Please enter your admin username and password below.";s:120:"Només es permeten usuaris autoritzats a aquesta secció
Siusplau entreu el nom d'usuari i la contrasenya d'administració.";s:9:"Username:";s:13:"Nom d'usuari:";s:9:"Password:";s:12:"Contrasenya:";s:24:"Please choose an option:";s:21:"Seleccioni una opció:";s:27:"Manage galleries and images";s:30:"Administrar galeríes d'imatges";s:17:"View gallery hits";s:26:"Veure visites a la galería";s:23:"Purge cached thumbnails";s:41:"Eliminar vistes prèvies de la memòria cau";s:15:"Change password";s:19:"Canviar contrasenya";s:16:"Log out of admin";s:25:"Sortir de l'administració";s:11:"new gallery";s:12:"nova galería";s:11:"Identifier:";s:14:"Identificador:";s:9:"new image";s:11:"nova imatge";s:74:"This image will not be visible because this gallery contains subgalleries.";s:70:"Aquesta imatge no és visible perquè aquesta galeria conté subgaleries.";s:11:"Remote file";s:11:"Arxiu remot";s:13:"URL of image:";s:28:"Ubicació (URL) de la imatge:";s:10:"Local file";s:11:"Arxiu local";s:21:"Image file to upload:";s:20:"Imatge per carregar:";s:30:"Use filename of uploaded file.";s:35:"Fer servir el nom d'arxiu carregat.";s:27:"Specify different filename:";s:36:"Especificar un nom d'arxiu diferent.";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:16:"Catalan (Català)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.cs.pmo
0,0 → 1,5
a:142:{s:53:"You do not have permission to perform this operation.";s:42:"Nemáte oprávnìní k provedení této operace.";s:13:"Gallery added";s:15:"Galerie pøidána";s:18:"An error occurred:";s:6:"Chyba:";s:11:"Image added";s:14:"Obrázek pøidán";s:22:"Archive contents added";s:20:"Obsah archivu pøidán";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:13:"Náhled zmìnìn";s:14:"confirm|Cancel";s:6:"Zru¹it";s:15:"Gallery deleted";s:15:"Galerie smazána";s:14:"delete gallery";s:14:"Smazat galerii";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:122:"Galerie %s není prázdná.
Jste si naprosto jistý, ¾e chcete nenávratnì smazat tuto galerii a v¹echny v ní obsa¾ené obrázky?";s:13:"Image deleted";s:14:"Obrázek smazán";s:12:"delete image";s:14:"Smazat obrázek";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:74:"Jste si naprosto jistý, ¾e chcete nenávratnì smazat obrázek %s galerie %s?";s:12:"User deleted";s:18:"U¾ivatel odstranìn";s:11:"delete user";s:16:"Smazat u¾ivatele";s:52:"Are you sure you want to permanently delete user %s?";s:56:"Jste si naprosto jistý, ¾e chtee odstranit u¾ivatele %s?";s:27:"Welcome to singapore admin!";s:23:"Vítejte v administraci!";s:22:"Thank you and goodbye!";s:23:"Dìkujeme a nashledanou!";s:22:"Thumbnail cache purged";s:23:"Cache náhledù vyèi¹tìna";s:23:"purge cached thumbnails";s:22:"Vyèistit cache náhledù";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:55:"Jste si naprosto jistý, ¾e chcete smazat v¹ech náhledy?";s:36:"Gallery re-indexed. %s images added.";s:45:"Gallery znovu indexována. Pøidáno %s obrázkù.";s:18:"Gallery info saved";s:27:"Informace o galerii ulo¾eny";s:16:"Image info saved";s:27:"Informace o obrázku ulo¾eny";s:14:"Password saved";s:13:"Heslo ulo¾eno";s:17:"Permissions saved";s:17:"Oprávnìní ulo¾eno";s:15:"User info saved";s:29:"Informace o u¾ivateli ulo¾eny";s:14:"admin bar|Back";s:4:"Zpìt";s:15:"admin bar|Admin";s:12:"Administrace";s:19:"admin bar|Galleries";s:7:"Galerie";s:17:"admin bar|Log out";s:11:"Odhlásit se";s:22:"admin bar|Edit gallery";s:15:"Editace galerie";s:26:"admin bar|Edit permissions";s:17:"Editace oprávnìní";s:24:"admin bar|Delete gallery";s:14:"Smazat galerii";s:24:"admin bar|New subgallery";s:20:"Nová vnoøená galerie";s:26:"admin bar|Re-index gallery";s:23:"Znovu indexovat galerii";s:20:"admin bar|Edit image";s:16:"Editovat obrázek";s:22:"admin bar|Delete image";s:14:"Smazat obrázek";s:19:"admin bar|New image";s:12:"Nový obrázek";s:24:"Could not save user info";s:35:"Nemù¾u ulo¾it informace o u¾ivateli";s:54:"New password must be between 6 and 16 characters long.";s:41:"Nové heslo musí být 6 a¾ 16 znakù dlouhé.";s:43:"The new passwords you entered do not match.";s:43:"Nové heslo, které jste vlo¾il se neshoduje.";s:72:"The current password you entered does not match the one in the database.";s:63:"Souèasné heslo, které jste vlo¾il, neodpovídá heslo v databázi.";s:53:"The username specified was not found in the database.";s:59:"Specifikované u¾ivatelské jméno nebylo nalezeno v databázi.";s:31:"Your account has been suspended";s:25:"Vá¹ ú¹et byl suspendován.";s:34:"Username and/or password incorrect";s:53:"U¾ivatelské jméno a/nebo heslo bylo nesprávnì zadáno.";s:38:"You must enter a username and password";s:39:"Musíte vlo¾it u¾ivatelské jméno a heslo";s:27:"Could not save gallery info";s:33:"Nemù¾u ulo¾it informace o galerii";s:23:"Username already exists";s:30:"U¾ivatelské jméno ji¾ existuje";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:35:"U¾ivatelské jméno nebylo rozpoznáno";s:22:"Gallery already exists";s:20:"Galerie ji¾ existuje";s:26:"Could not create directory";s:23:"Nemù¾u vytvoøit adresáø";s:37:"Cannot delete the top level directory";s:37:"Nemù¾u smazat adresáø nejvy¹¹í úrovnì";s:19:"File already exists";s:19:"Soubor ji¾ existuje";s:21:"Could not upload file";s:20:"Nemù¾u nahrát soubor";s:30:"Could not add image to gallery";s:32:"Nemù¾u pøidat obrázek do galerie";s:38:"Could not find temporary storage space";s:48:"Nemù¾u najít prostor pro doèasné ulo¾ení souborù";s:28:"Could not decompress archive";s:27:"Nemù¾u dekomprimovat archiv";s:40:"Some archive contents could not be added";s:44:"Nìkteré souèásti archivu nemohly být pøidány";s:32:"Could not save image information";s:33:"Nemù¾u ulo¾it informace o obrázku";s:22:"Could not delete image";s:21:"Nemù¾u smazat obrázek";s:16:"choose thumbnail";s:13:"zvolte náhled";s:64:"Choose the filename of the image used to represent this gallery.";s:54:"Zvolte obrázek, který bude reprezentovat tuto galerii.";s:14:"thumbnail|None";s:5:"®ádný";s:16:"thumbnail|Random";s:7:"Náhodný";s:12:"edit gallery";s:16:"Editovat galerii";s:9:"Thumbnail";s:6:"Náhled";s:16:"Random
thumbnail";s:14:"Náhodný
náhléd";s:19:"thumbnail|Change...";s:10:"Zmìnit ...";s:12:"Gallery name";s:13:"Jméno galerie";s:11:"Artist name";s:12:"Jméno autora";s:7:"Summary";s:6:"Souhrn";s:12:"Save Changes";s:12:"Ulo¾it zmìny";s:10:"edit image";s:16:"Editovat obrázek";s:5:"Image";s:7:"Obrázek";s:10:"Image name";s:13:"Jméno obrázku";s:15:"change password";s:11:"Zmìna heslo";s:67:"Please choose a new password between 6 and 16 characters in length.";s:53:"Prosím, zvolte nové heslo o délce mezi 6 a¾ 16 znakù.";s:17:"Current password:";s:15:"Souèasné heslo:";s:13:"New password:";s:11:"Nové heslo:";s:17:"Confirm password:";s:16:"Potvrzení hesla:";s:16:"edit permissions";s:15:"Zmìna oprávnìní";s:5:"Owner";s:8:"Vlastník";s:6:"Groups";s:7:"Skupiny";s:17:"Group permissions";s:17:"Oprávnìní skupiny";s:16:"permissions|Read";s:5:"Ètení";s:16:"permissions|Edit";s:7:"Editace";s:15:"permissions|Add";s:9:"Pøidávání";s:18:"permissions|Delete";s:6:"Mazání";s:17:"World permissions";s:18:"Globální oprávnìní";s:10:"my profile";s:10:"mùj profil";s:8:"Username";s:17:"U¾ivatelské jméno";s:9:"Full name";s:10:"Celé jméno";s:15:"user management";s:16:"Správa u¾ivatelù";s:4:"Type";s:3:"Typ";s:13:"Administrator";s:13:"Administrátor";s:4:"User";s:8:"U¾ivatel";s:8:"Password";s:5:"Heslo";s:22:"admin bar|View gallery";s:16:"Zobrazit galerii";s:26:"admin bar|Change thumbnail";s:13:"Zmìnit náhled";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:8:"Pøístupy";s:19:"hits table|Last hit";s:16:"Poslední pøístup";s:14:"Admin message:";s:22:"Zpráva administrátora:";s:6:"log in";s:12:"Pøihlásit se";s:52:"Please enter your admin username and password below.";s:63:"Prosím, vlo¾te administrátorské u¾ivatelské jméno a heslo ní¾e.";s:9:"Username:";s:18:"U¾ivatelské jméno:";s:9:"Password:";s:6:"Heslo:";s:61:"If you do not have a username then you may log in as a guest.";s:70:"Pokud nemáte u¾ivatelské jméno a heslo, mù¾ete se pøihlásit jako host.";s:15:"Log in as guest";s:22:"Pøihlásit se jako host";s:49:"You must be an administrator to access this area.";s:66:"Musíte být administrátor, aby jste mohli vstoupit do této oblasti.";s:6:"Email:";s:7:"E-mail:";s:10:"Full name:";s:11:"Celé jméno:";s:4:"edit";s:8:"editovat";s:6:"delete";s:6:"smazat";s:7:"suspend";s:11:"suspendovat";s:9:"unsuspend";s:7:"pový¹it";s:15:"create new user";s:25:"vytvoøit nového u¾ivatele";s:6:"Create";s:8:"Vytvoøit";s:24:"Please choose an option:";s:32:"Prosím, zvolte jednu z mo¾ností:";s:27:"Manage galleries and images";s:27:"Spravovat galerie a obrázky";s:17:"View gallery hits";s:25:"Zobrazit pøístupy galerií";s:15:"Change password";s:12:"Zmìnit heslo";s:10:"My profile";s:10:"Mùj profil";s:12:"Manage users";s:19:"Spravoavt u¾ivatele";s:23:"Purge cached thumbnails";s:27:"Odstranit cachované náhledy";s:16:"Log out of admin";s:26:"Odhlásit se z administrace";s:11:"new gallery";s:12:"nová galerie";s:11:"Identifier:";s:14:"Identifikátor:";s:9:"new image";s:12:"nový obrázek";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:81:"Tento obrázek nebude dostupný, proto¾e tato galerie není albem: obsahuje galerie.";s:18:"Upload single file";s:19:"Nahrát jeden soubor";s:21:"Image file to upload:";s:25:"Soubor obrázku k nahrátí:";s:30:"Use filename of uploaded file.";s:31:"Pou¾ít jméno nahraného souboru.";s:27:"Specify different filename:";s:22:"Specifikuj jiné jméno:";s:21:"Upload multiple files";s:19:"Nahrát více souborù";s:19:"ZIP file to upload:";s:21:"Soubor ZIP k nahrátí:";s:15:"Add remote file";s:22:"Pøidat vzdálený soubor";s:13:"URL of image:";s:12:"URL obrázku:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:6:"Czech ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.cs_utf8.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:43:"Nemáte oprávnění provést tuto operaci.";s:13:"Gallery added";s:17:"Galerie přidána";s:18:"An error occurred:";s:14:"Nastala chyba:";s:11:"Image added";s:17:"Obrázek přidán";s:22:"Archive contents added";s:22:"Přidán obsah archivu";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:16:"Náhled změněn";s:14:"confirm|Cancel";s:7:"Zrušit";s:15:"Gallery deleted";s:16:"Galerie smazána";s:14:"delete gallery";s:14:"Smazat galerii";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:131:"Galerie %s není prázdná.
Jste si jist(a), že chcete ji, všechny její subgalerie a obrázky co obsahují, nenávratně smazat?";s:13:"Image deleted";s:16:"Obrázek smazán";s:12:"delete image";s:15:"Smazat obrázek";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:73:"Jste si jist(a), že chcete nenávratně smazat obrázek %s z galerie %s?";s:12:"User deleted";s:17:"Uživatel smazán";s:11:"delete user";s:17:"Smazat uživatele";s:52:"Are you sure you want to permanently delete user %s?";s:58:"Jste si jist(a), že chcete trvale odstranit uživatee %s?";s:27:"Welcome to singapore admin!";s:50:"Vítejte v administrační sekci sinapore galerie!";s:22:"Thank you and goodbye!";s:29:"Děkujeme vám a nashledanou!";s:22:"Thumbnail cache purged";s:29:"Cache náhledů vyčištěna.";s:23:"purge cached thumbnails";s:25:"Vyčistit cache náhledů";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:74:"Jste si jist(a), že chcete odstranit všech %s nacacheovaných náhledů?";s:36:"Gallery re-indexed. %s images added.";s:47:"Galerie přeindexována. %s obrázů přidáno.";s:18:"Gallery info saved";s:23:"Uloženo info o galerii";s:24:"Image saved successfully";s:28:"Obrázek uložen úspěšně";s:14:"Password saved";s:14:"Heslo uloženo";s:17:"Permissions saved";s:15:"Práva uložena";s:15:"User info saved";s:32:"Uživatelské informace uloženy";s:14:"admin bar|Back";s:5:"Zpět";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:7:"Galerie";s:17:"admin bar|Log out";s:9:"Odhlásit";s:22:"admin bar|Edit gallery";s:16:"Editovat galerii";s:26:"admin bar|Edit permissions";s:15:"Editovat práva";s:24:"admin bar|Delete gallery";s:14:"Smazat galerii";s:24:"admin bar|New subgallery";s:16:"Nová podgalerie";s:26:"admin bar|Re-index gallery";s:21:"Přeindexovat galerii";s:20:"admin bar|Edit image";s:17:"Editovat obrázek";s:22:"admin bar|Delete image";s:15:"Smazat obrázek";s:19:"admin bar|New image";s:14:"Nový obrázek";s:24:"Could not save user info";s:37:"Nelze uložit uživatelské informace";s:54:"New password must be between 6 and 16 characters long.";s:45:"Nové heslo musí mít mezi 6ti a 16ti znaky.";s:43:"The new passwords you entered do not match.";s:33:"Nově zadané heslo se neshoduje.";s:72:"The current password you entered does not match the one in the database.";s:63:"Současné heslo vámi zadané se neshoduje s tím z databáze.";s:53:"The username specified was not found in the database.";s:56:"Zadané uživatelské jméno se nenachází v databázi.";s:31:"Your account has been suspended";s:38:"Váš účet byl dočasně pozastaven.";s:34:"Username and/or password incorrect";s:48:"Uživatelské jméno a/nebo heslo je nesprávné";s:38:"You must enter a username and password";s:42:"Musíte zadat uživatelské jméno a heslo";s:27:"Could not save gallery info";s:33:"Nelze uložit informace o galerii";s:23:"Username already exists";s:34:"Uživatelské jméno již existuje";s:31:"Cannot delete built in accounts";s:31:"Nelze smazat vestavěné účty";s:23:"Username not recognised";s:39:"Uživatelské jméno nebylo rozpoznáno";s:22:"Gallery already exists";s:21:"Galerie již existuje";s:26:"Could not create directory";s:25:"Nelze vytvořit adresář";s:37:"Cannot delete the top level directory";s:34:"Nelze smazat nejvyšší adresář";s:19:"File already exists";s:20:"Soubor již existuje";s:21:"Could not upload file";s:20:"Nelze nahrát soubor";s:30:"Could not add image to gallery";s:33:"Nelze přidat obrázek do galerie";s:38:"Could not find temporary storage space";s:35:"Nelze najít dočasné úložiště";s:28:"Could not decompress archive";s:21:"Nelze rozbalit archiv";s:40:"Some archive contents could not be added";s:42:"Část obsahu archivu se nepovedlo přidat";s:32:"Could not save image information";s:34:"Nelze uložit informace o obrázku";s:22:"Could not delete image";s:21:"Nelze smazat obrázek";s:17:"Select gallery...";s:18:"Vyberte galerii...";s:16:"choose thumbnail";s:14:"Zvolte náhled";s:64:"Choose the filename of the image used to represent this gallery.";s:54:"Zvolte jméno souboru, který bude zastupovat galerii.";s:14:"thumbnail|None";s:8:"Žádné";s:16:"thumbnail|Random";s:9:"Náhodné";s:12:"edit gallery";s:16:"Editovat galerii";s:9:"Thumbnail";s:7:"Náhled";s:16:"Random
thumbnail";s:17:"Náhodný
náhled";s:19:"thumbnail|Change...";s:10:"Změnit...";s:12:"Gallery name";s:14:"Jméno galerie";s:11:"Artist name";s:13:"Jméno autora";s:7:"Summary";s:8:"Shrnutí";s:10:"edit image";s:17:"Editovat obrázek";s:5:"Image";s:8:"Obrázek";s:10:"Image name";s:15:"Jméno obrázku";s:15:"change password";s:13:"Změnit heslo";s:67:"Please choose a new password between 6 and 16 characters in length.";s:52:"Zvolte, prosím, nové heslo délky 6 až 16 znaků.";s:17:"Current password:";s:17:"Současné heslo:";s:13:"New password:";s:12:"Nové heslo:";s:17:"Confirm password:";s:17:"Potvrzení heslo:";s:16:"edit permissions";s:15:"Editovat práva";s:5:"Owner";s:9:"Vlastník";s:6:"Groups";s:7:"Skupiny";s:17:"Group permissions";s:13:"Práva skupin";s:16:"permissions|Read";s:7:"Čtení";s:16:"permissions|Edit";s:7:"Editace";s:15:"permissions|Add";s:10:"Přidání";s:18:"permissions|Delete";s:8:"Mazání";s:17:"World permissions";s:17:"Globální práva";s:15:"user management";s:19:"Správa uživatelů";s:8:"Username";s:20:"Uživatelské jméno";s:4:"Type";s:3:"Typ";s:13:"Administrator";s:14:"Administrátor";s:4:"User";s:9:"Uživatel";s:9:"Full name";s:12:"Celé jméno";s:8:"Password";s:5:"Heslo";s:22:"admin bar|View gallery";s:16:"Zobrazit galerii";s:26:"admin bar|Change thumbnail";s:15:"Změnit náhled";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:10:"Zobrazení";s:19:"hits table|Last hit";s:20:"Poslední zobrazení";s:14:"Admin message:";s:15:"Zpráva admina:";s:6:"log in";s:14:"Přihlášení";s:52:"Please enter your admin username and password below.";s:72:"Zadejte, prosím, vaše administrátorské uživatelské jméno a heslo.";s:9:"Username:";s:21:"Uživatelské jméno:";s:9:"Password:";s:6:"Heslo:";s:61:"If you do not have a username then you may log in as a guest.";s:70:"Pokud nemáte uživatelské jméno, můžete se přihlásit jako host.";s:49:"You must be an administrator to access this area.";s:57:"Musíte být administrátor pro přístup do této sekce.";s:6:"Email:";s:6:"Email:";s:10:"Full name:";s:13:"Celé jméno:";s:4:"edit";s:8:"Editovat";s:6:"delete";s:6:"Smazat";s:7:"suspend";s:10:"Pozastavit";s:9:"unsuspend";s:12:"Odpozastavit";s:15:"create new user";s:28:"Vytvořit nového uživatele";s:24:"Please choose an option:";s:30:"Prosím vyberte jednu z voleb:";s:27:"Manage galleries and images";s:28:"Spravovat galerie a obrázky";s:17:"View gallery hits";s:30:"Statistiky zobrazení galerií";s:15:"Change password";s:12:"Změna hesla";s:10:"My profile";s:11:"Můj profil";s:12:"Manage users";s:20:"Spravovat uživatele";s:23:"Purge cached thumbnails";s:32:"Vyčistit nacacheované náhledy";s:16:"Log out of admin";s:26:"Odhlásit se z admin sekce";s:11:"new gallery";s:13:"Nová galerie";s:11:"Identifier:";s:15:"Identifikátor:";s:9:"new image";s:14:"Nový obrázek";s:74:"This image will not be visible because this gallery contains subgalleries.";s:72:"Tento obrázek nebude vidět, protože tato galerie obsahuje subgalerie.";s:18:"Upload single file";s:20:"Nahrát jeden soubor";s:21:"Image file to upload:";s:28:"Soubor obrázku k nahrání:";s:30:"Use filename of uploaded file.";s:33:"Použij název nahraného souboru";s:27:"Specify different filename:";s:26:"Zadej jiné název souboru";s:21:"Upload multiple files";s:22:"Nahrát více souborů";s:19:"ZIP file to upload:";s:23:"ZIP archiv k nahrání:";s:15:"Add remote file";s:25:"Přidat vzdálený soubor";s:13:"URL of image:";s:13:"URL obrázku:";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:13:"Czech (UTF-8)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.de.pmo
0,0 → 1,4
a:139:{s:53:"You do not have permission to perform this operation.";s:55:"Sie haben keine Berechtigung diesen Befehl auszuführen.";s:13:"Gallery added";s:19:"Galerie hinzugefügt";s:18:"An error occurred:";s:27:"Ein Fehler ist aufgetreten.";s:11:"Image added";s:22:"Bild wurde hinzugefügt";s:22:"Archive contents added";s:33:"Archiv Inhalte wurden hinzugefügt";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:27:"Miniaturbild wurde geändert";s:14:"confirm|Cancel";s:9:"Abbrechen";s:15:"Gallery deleted";s:16:"Galerie gelöscht";s:14:"delete gallery";s:15:"Galerie löschen";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:108:"Galerie %s is nicht leer.
Soll die Galerie und alle Unter-Galerien wirklich unwiederruflich gelöscht werden?";s:13:"Image deleted";s:19:"Bild wurde gelöscht";s:12:"delete image";s:12:"Bild löschen";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:77:"Soll das Bild %s wirklich unwiederruflich aus der Galerie %s gelöscht werden?";s:12:"User deleted";s:16:"Galerie gelöscht";s:11:"delete user";s:15:"Galerie löschen";s:52:"Are you sure you want to permanently delete user %s?";s:77:"Soll das Bild %s wirklich unwiederruflich aus der Galerie %s gelöscht werden?";s:27:"Welcome to singapore admin!";s:46:"Willkomen im singapore Administrationsbereich.";s:22:"Thank you and goodbye!";s:32:"Danke schön und auf Wiedersehen.";s:22:"Thumbnail cache purged";s:36:"Miniaturvorschau-Cache wurde geleert";s:23:"purge cached thumbnails";s:29:"Miniaturvorschau-Cache leeren";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:63:"Wirklich alle %s Miniaturvorschau-Bilder aus dem Cache löschen?";s:36:"Gallery re-indexed. %s images added.";s:53:"Galerie neu indexieren. %S Bilder wurden hinzugefügt.";s:18:"Gallery info saved";s:32:"Galerie-Beschreibung gespeichert";s:24:"Image saved successfully";s:22:"Bild wurde gespeichert";s:14:"Password saved";s:20:"Passwort gespeichert";s:17:"Permissions saved";s:20:"Passwort gespeichert";s:15:"User info saved";s:32:"Galerie-Beschreibung gespeichert";s:14:"admin bar|Back";s:6:"Zurück";s:15:"admin bar|Admin";s:13:"Einstellungen";s:19:"admin bar|Galleries";s:8:"Galerien";s:17:"admin bar|Log out";s:8:"Abmelden";s:22:"admin bar|Edit gallery";s:18:"Galerie bearbeiten";s:26:"admin bar|Edit permissions";s:18:"Galerie bearbeiten";s:24:"admin bar|Delete gallery";s:15:"Galerie löschen";s:24:"admin bar|New subgallery";s:18:"Neue Unter-Galerie";s:26:"admin bar|Re-index gallery";s:15:"Galerie löschen";s:20:"admin bar|Edit image";s:15:"Bild bearbeiten";s:22:"admin bar|Delete image";s:12:"Bild löschen";s:19:"admin bar|New image";s:15:"Bild hinzufügen";s:24:"Could not save user info";s:43:"Konnte Galerie-Beschreibung nicht speichern";s:54:"New password must be between 6 and 16 characters long.";s:60:"Ein neues Passwort muss zwischen 6 und 16 Zeichen lang sein.";s:43:"The new passwords you entered do not match.";s:52:"Die neu eingebenen Passwörter stimmen nicht überein.";s:72:"The current password you entered does not match the one in the database.";s:74:"Das aktuelle Passwort stimmt nicht mit dem gespeicherten Passwort überein.";s:53:"The username specified was not found in the database.";s:47:"Der angegebene Nutzername wurde nicht gefunden.";s:31:"Your account has been suspended";s:26:"Ihr Zugang wurde gelöscht.";s:34:"Username and/or password incorrect";s:39:"Nutzername und/oder Passwort inkorrekt.";s:38:"You must enter a username and password";s:55:"Sie müssen einen Nutzernamen und ein Passwort eingeben.";s:27:"Could not save gallery info";s:43:"Konnte Galerie-Beschreibung nicht speichern";s:23:"Username already exists";s:28:"Nutzername existiert bereits";s:31:"Cannot delete built in accounts";s:46:"Das Nutzer-Konto konnte nicht gelöscht werden.";s:23:"Username not recognised";s:25:"Nutzername nicht gefunden";s:22:"Gallery already exists";s:26:"Galerie existiert bereits.";s:26:"Could not create directory";s:40:"Der Ordner konnte nicht erstellt werden.";s:37:"Cannot delete the top level directory";s:50:"Das Basis-Verzeichniss kann nicht gelöscht werden.";s:19:"File already exists";s:23:"Datei existiert bereits";s:21:"Could not upload file";s:29:"Konnte Datei nicht hochladen.";s:30:"Could not add image to gallery";s:40:"Konnte Bild nicht zur Galerie hinzufügen";s:38:"Could not find temporary storage space";s:37:"Zwischenspeicher wurde nicht gefunden";s:28:"Could not decompress archive";s:35:"Archiv konnte nicht entpackt werden";s:40:"Some archive contents could not be added";s:45:"Archiv-Teile konnten nicht hinzugefügt werden";s:32:"Could not save image information";s:40:"Konnte Bild-Beschreibung nicht speichern";s:22:"Could not delete image";s:25:"Konnte Bild nicht löschen";s:17:"Select gallery...";s:15:"Galerie löschen";s:16:"choose thumbnail";s:30:"Miniaturvorschaubild auswählen";s:64:"Choose the filename of the image used to represent this gallery.";s:68:"Wählen Sie ein Miniaturvorschau-Bild, als Vorschau für diese Galerie";s:14:"thumbnail|None";s:5:"Keins";s:16:"thumbnail|Random";s:8:"Zufällig";s:12:"edit gallery";s:18:"Galerie bearbeiten";s:9:"Thumbnail";s:5:"Keins";s:16:"Random
thumbnail";s:32:"Zufälliges Miniaturvorschau-Bild";s:19:"thumbnail|Change...";s:9:"Ändern...";s:12:"Gallery name";s:12:"Galerie-Name";s:11:"Artist name";s:15:"Fotografen-Name";s:7:"Summary";s:9:"Übersicht";s:10:"edit image";s:15:"Bild bearbeiten";s:5:"Image";s:4:"Bild";s:10:"Image name";s:10:"Bilde-Name";s:15:"change password";s:15:"Passwort ändern";s:67:"Please choose a new password between 6 and 16 characters in length.";s:72:"Bitte wählen Sie ein Passwort mit einer Länge zwischen 6 und 16 Zeichen.";s:17:"Current password:";s:19:"Aktuelles Passwort:";s:13:"New password:";s:15:"Neues Passwort:";s:17:"Confirm password:";s:20:"Passwort bestätigen:";s:16:"edit permissions";s:18:"Bearbeitungsrechte";s:5:"Owner";s:8:"Besitzer";s:6:"Groups";s:6:"Gruppe";s:17:"Group permissions";s:14:"Gruppen-Rechte";s:16:"permissions|Read";s:5:"Lesen";s:16:"permissions|Edit";s:10:"Bearbeiten";s:15:"permissions|Add";s:10:"Hinzufügen";s:18:"permissions|Delete";s:7:"Löschen";s:17:"World permissions";s:14:"Globale Rechte";s:15:"user management";s:18:"Benutzerverwaltung";s:8:"Username";s:11:"Nutzername:";s:4:"Type";s:3:"Typ";s:13:"Administrator";s:13:"Administrator";s:4:"User";s:11:"Nutzername:";s:9:"Full name";s:12:"Galerie-Name";s:8:"Password";s:9:"Passwort:";s:22:"admin bar|View gallery";s:15:"Galerie ansehen";s:26:"admin bar|Change thumbnail";s:16:"Thumbnail ändern";s:16:"hits table|Graph";s:8:"Diagramm";s:15:"hits table|Hits";s:8:"Zugriffe";s:19:"hits table|Last hit";s:15:"Letzter Zugriff";s:14:"Admin message:";s:32:"Nachricht für den Administrator:";s:6:"log in";s:8:"anmelden";s:52:"Please enter your admin username and password below.";s:55:"Bitte geben Sie Ihren Nutzernamen und Ihr Passwort ein.";s:9:"Username:";s:11:"Nutzername:";s:9:"Password:";s:9:"Passwort:";s:61:"If you do not have a username then you may log in as a guest.";s:74:"Wenn Sie noch keinen Nutzernamen haben, können Sie sich als Gast anmelden.";s:49:"You must be an administrator to access this area.";s:85:"Um auf diesen Bereich zugreifen zu können, müssen Sie Administrator des Systems sein.";s:6:"Email:";s:5:"Email";s:10:"Full name:";s:12:"Galerie-Name";s:4:"edit";s:10:"bearbeiten";s:6:"delete";s:7:"löschen";s:7:"suspend";s:11:"deaktiviert";s:9:"unsuspend";s:9:"aktiviert";s:15:"create new user";s:20:"Neuen Nutzer anlegen";s:24:"Please choose an option:";s:17:"Bitte wählen Sie:";s:27:"Manage galleries and images";s:29:"Galerien und Bilder verwalten";s:17:"View gallery hits";s:40:"Zugriffszahlen für die Galerien anzeigen";s:15:"Change password";s:15:"Passwort ändern";s:10:"My profile";s:11:"Mein Profil";s:12:"Manage users";s:16:"Nutzer verwalten";s:23:"Purge cached thumbnails";s:45:"Miniaturvorschau-Bilder aus dem Cache löschen";s:16:"Log out of admin";s:33:"Administrations-Bereich verlassen";s:11:"new gallery";s:12:"Neue Galerie";s:11:"Identifier:";s:11:"Bezeichner:";s:9:"new image";s:10:"Neues Bild";s:74:"This image will not be visible because this gallery contains subgalleries.";s:76:"Dieses Bild wird nicht sichtbar sein, da die Galerie Unter-Galerien enthält.";s:18:"Upload single file";s:24:"Einzelne Datei hochladen";s:21:"Image file to upload:";s:24:"Bild-Datei zum hochladen";s:30:"Use filename of uploaded file.";s:45:"Dateinamen der hochgeladenen Datei verwenden-";s:27:"Specify different filename:";s:27:"Anderen Dateinamen angeben:";s:21:"Upload multiple files";s:25:"Mehrere Dateien hochladen";s:19:"ZIP file to upload:";s:20:"ZIP-Archiv hochladen";s:15:"Add remote file";s:59:"Datei die sich auf einem anderen Server befindet hinzufügen";s:13:"URL of image:";s:15:"URL des Bildes:";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:16:"German (Deutsch)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.es.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:15:"Galería añadida";s:18:"An error occurred:";s:21:"Ha ocurrido un error:";s:11:"Image added";s:14:"Imagen añadida";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:21:"Vista previa cambiada";s:14:"confirm|Cancel";s:8:"Cancelar";s:15:"Gallery deleted";s:15:"Galería borrada";s:14:"delete gallery";s:14:"borrar galería";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:137:"La galería %s no está vacía
¿Estás seguro que quieres eliminarla permanentemente junto con todas las subgalerías e imagenes que contiene?";s:13:"Image deleted";s:16:"Imagen eliminada";s:12:"delete image";s:15:"Eliminar imagen";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:76:"Estás seguro que quieres borrar imagen %s de la galería %s permanentemente?";s:12:"User deleted";s:15:"Galería borrada";s:11:"delete user";s:14:"borrar galería";s:52:"Are you sure you want to permanently delete user %s?";s:76:"Estás seguro que quieres borrar imagen %s de la galería %s permanentemente?";s:27:"Welcome to singapore admin!";s:0:"";s:22:"Thank you and goodbye!";s:23:"¡Gracias y hasta luego!";s:22:"Thumbnail cache purged";s:31:"Cache de vistas previas vaciado";s:23:"purge cached thumbnails";s:31:"Vaciar vistas previas del cache";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:61:"Estas seguro que quieres vaciar %s vistas previas del cache?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:34:"Información de la galería guardada";s:24:"Image saved successfully";s:28:"Imagen guardada exitosamente";s:14:"Password saved";s:19:"Contraseña guardada";s:17:"Permissions saved";s:19:"Contraseña guardada";s:15:"User info saved";s:34:"Información de la galería guardada";s:14:"admin bar|Back";s:5:"Atrás";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:8:"Galerías";s:17:"admin bar|Log out";s:5:"Salir";s:22:"admin bar|Edit gallery";s:14:"Editar galería";s:26:"admin bar|Edit permissions";s:14:"Editar galería";s:24:"admin bar|Delete gallery";s:16:"Eliminar galería";s:24:"admin bar|New subgallery";s:16:"Nueva subgalería";s:26:"admin bar|Re-index gallery";s:16:"Eliminar galería";s:20:"admin bar|Edit image";s:13:"Editar imagen";s:22:"admin bar|Delete image";s:15:"Eliminar imagen";s:19:"admin bar|New image";s:12:"Nueva imagen";s:24:"Could not save user info";s:48:"No se pudo guardar la información de la galería.";s:54:"New password must be between 6 and 16 characters long.";s:58:"La nueva contraseña debe de tener entre 6 y 16 caracteres.";s:43:"The new passwords you entered do not match.";s:36:"Las nuevas contraseñas no coinciden.";s:72:"The current password you entered does not match the one in the database.";s:69:"La contraseña actual no coincide con la que está en la base de datos.";s:53:"The username specified was not found in the database.";s:69:"El nombre de usuario especificado no se encontró en la base de datos.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:34:"Usuario y/o contraseña incorrectos";s:38:"You must enter a username and password";s:49:"Debes escribir un nombre de usuario y contraseña.";s:27:"Could not save gallery info";s:48:"No se pudo guardar la información de la galería.";s:23:"Username already exists";s:20:"El archivo ya existe";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:20:"La galería ya existe";s:26:"Could not create directory";s:30:"No se pudo crear el directorio";s:37:"Cannot delete the top level directory";s:42:"No se puede borrar el directorio principal";s:19:"File already exists";s:20:"El archivo ya existe";s:21:"Could not upload file";s:28:"No se pudo borrar la imagen.";s:30:"Could not add image to gallery";s:40:"No se pudo añadir la imagen a la galería";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:28:"No se pudo borrar la imagen.";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:47:"No se pudo guardar la información de la imagen.";s:22:"Could not delete image";s:28:"No se pudo borrar la imagen.";s:17:"Select gallery...";s:14:"borrar galería";s:16:"choose thumbnail";s:23:"Escoge una vista previa";s:64:"Choose the filename of the image used to represent this gallery.";s:61:"Escoge el archivo de la imagen para representar esta galería.";s:14:"thumbnail|None";s:7:"Ninguna";s:16:"thumbnail|Random";s:7:"Ninguna";s:12:"edit gallery";s:14:"editar galería";s:9:"Thumbnail";s:7:"Ninguna";s:16:"Random
thumbnail";s:23:"Vista previa aleatoria
";s:19:"thumbnail|Change...";s:10:"Cambiar...";s:12:"Gallery name";s:15:"Galería añadida";s:11:"Artist name";s:0:"";s:7:"Summary";s:0:"";s:10:"edit image";s:13:"editar imagen";s:5:"Image";s:14:"Imagen añadida";s:10:"Image name";s:14:"Imagen añadida";s:15:"change password";s:18:"cambiar contraseña";s:67:"Please choose a new password between 6 and 16 characters in length.";s:65:"Por favor escoja una nueva contraseña de entre 6 y 16 caracteres.";s:17:"Current password:";s:18:"Contraseña actual:";s:13:"New password:";s:17:"Nueva contraseña:";s:17:"Confirm password:";s:21:"Confirmar contraseña:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:8:"Usuario:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:8:"Usuario:";s:9:"Full name";s:15:"Galería añadida";s:8:"Password";s:11:"Contraseña:";s:22:"admin bar|View gallery";s:16:"Nueva subgalería";s:26:"admin bar|Change thumbnail";s:16:"Nueva subgalería";s:16:"hits table|Graph";s:0:"";s:15:"hits table|Hits";s:0:"";s:19:"hits table|Last hit";s:0:"";s:14:"Admin message:";s:0:"";s:6:"log in";s:26:"Entrar a la Administración";s:52:"Please enter your admin username and password below.";s:49:"Debes escribir un nombre de usuario y contraseña.";s:9:"Username:";s:8:"Usuario:";s:9:"Password:";s:11:"Contraseña:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:15:"Galería añadida";s:4:"edit";s:0:"";s:6:"delete";s:15:"Eliminar imagen";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:22:"Seleccione una opción:";s:27:"Manage galleries and images";s:31:"Administrar galerías e imagenes";s:17:"View gallery hits";s:20:"Ver hits a galerías";s:15:"Change password";s:18:"Cambiar contraseña";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:33:"Eliminar vistas previas del cache";s:16:"Log out of admin";s:14:"Salir de admin";s:11:"new gallery";s:13:"nueva galería";s:11:"Identifier:";s:14:"Identificador:";s:9:"new image";s:12:"nueva imagen";s:74:"This image will not be visible because this gallery contains subgalleries.";s:0:"";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:26:"Archivo de imagen a subir:";s:30:"Use filename of uploaded file.";s:34:"Usar el nombre del archivo subido.";s:27:"Specify different filename:";s:42:"Especificar un nombre de archivo distinto:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:26:"Archivo de imagen a subir:";s:15:"Add remote file";s:14:"Archivo remoto";s:13:"URL of image:";s:17:"URL de la imagen:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:9:"LANGUAGE ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.et.pmo
0,0 → 1,5
a:138:{s:53:"You do not have permission to perform this operation.";s:36:"Puuduvad õigused selleks tegevuseks.";s:13:"Gallery added";s:15:"Galerii lisatud";s:18:"An error occurred:";s:12:"Tekkis viga:";s:11:"Image added";s:12:"Pilt lisatud";s:22:"Archive contents added";s:20:"Arhiivi sisu lisatud";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:17:"Pisipilt muudetud";s:14:"confirm|Cancel";s:5:"Loobu";s:15:"Gallery deleted";s:18:"Galerii kustutatud";s:14:"delete gallery";s:15:"kustuta galerii";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:109:"Galerii %s ei ole tühi.
Oled kindel, et soovid igaveseks kustutada selle, kõik alamgaleriid ja pildid nendes?";s:13:"Image deleted";s:15:"Pilt kustutatud";s:12:"delete image";s:12:"kustuta pilt";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:66:"Oled kindel, et soovid igaveseks kustutadad pildi %s galeriist %s?";s:12:"User deleted";s:19:"Kasutaja kustutatud";s:11:"delete user";s:16:"kustuta kasutaja";s:52:"Are you sure you want to permanently delete user %s?";s:55:"Oled kindel, et soovid lõplikult kustutada kasutaja %s?";s:27:"Welcome to singapore admin!";s:35:"Tere tulemast singapore haldusesse!";s:22:"Thank you and goodbye!";s:23:"Tänan sind ja nägemist!";s:22:"Thumbnail cache purged";s:32:"Pisipiltide vahemälu tühjendatud";s:23:"purge cached thumbnails";s:31:"Tühjenda vahemälu pisipiltidest";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:61:"Oled kindel, et soovid kustutada kõik %s vahemälu pisipildid?";s:36:"Gallery re-indexed. %s images added.";s:45:"Galerii on reindekseeritud. %s pilti lisatud.";s:18:"Gallery info saved";s:24:"Galerii info salvestatud";s:24:"Image saved successfully";s:28:"Pildid salvestamine õnnestus";s:14:"Password saved";s:18:"Parool salvestatud";s:17:"Permissions saved";s:19:"Õigused salvestatud";s:15:"User info saved";s:25:"Kasutaja info salvestatud";s:14:"admin bar|Back";s:6:"Tagasi";s:15:"admin bar|Admin";s:5:"Halda";s:19:"admin bar|Galleries";s:9:"Galleriid";s:17:"admin bar|Log out";s:10:"Logi välja";s:22:"admin bar|Edit gallery";s:15:"Muuda galleriid";s:26:"admin bar|Edit permissions";s:12:"Muuda õigusi";s:24:"admin bar|Delete gallery";s:15:"Kustuta galerii";s:24:"admin bar|New subgallery";s:15:"Uus alamgalerii";s:26:"admin bar|Re-index gallery";s:20:"Reindekseeri galerii";s:20:"admin bar|Edit image";s:11:"Muuda pilti";s:22:"admin bar|Delete image";s:12:"Kustuta pilt";s:19:"admin bar|New image";s:8:"Uus pilt";s:24:"Could not save user info";s:37:"Kasutajainfo salvestamine ebaõnnestus";s:54:"New password must be between 6 and 16 characters long.";s:41:"Uus parool peab olema 6 kuni 16 sümbolit.";s:43:"The new passwords you entered do not match.";s:45:"Sisestatud uued parool ei kattu teineteisega.";s:72:"The current password you entered does not match the one in the database.";s:56:"Sisestatud praegune parool ei kattu andmebaasis olevaga.";s:53:"The username specified was not found in the database.";s:42:"Antud kasutajanimi ei leitud andmebaasist.";s:31:"Your account has been suspended";s:24:"Kasutajanimi on peatatud";s:34:"Username and/or password incorrect";s:34:"Kasutajanimi ja/või parool on vale";s:38:"You must enter a username and password";s:38:"Pead sisestama kasutajanime ja parooli";s:27:"Could not save gallery info";s:37:"Galerii info salvestamine ebaõnnestus";s:23:"Username already exists";s:27:"Kasutajanimi on juba olemas";s:31:"Cannot delete built in accounts";s:42:"Vaikimisi kasutajanimesid ei saa kustutada";s:23:"Username not recognised";s:24:"Kasutajanimi on tundmatu";s:22:"Gallery already exists";s:22:"Galerii on juba olemas";s:26:"Could not create directory";s:29:"Kataloogi loomine ebaõnnestus";s:37:"Cannot delete the top level directory";s:37:"Tipptaseme kataloogi ei saa kustutada";s:19:"File already exists";s:19:"Fail on juba olemas";s:21:"Could not upload file";s:31:"Faili üleslaadimine ebaõnnestus";s:30:"Could not add image to gallery";s:37:"Pildi lisamine galeriisse ebaõnnestus";s:38:"Could not find temporary storage space";s:39:"Ajutuse kettapinna leidmine ebaõnnestus";s:28:"Could not decompress archive";s:35:"Arhiivi lahti pakkimine ebaõnnestus";s:40:"Some archive contents could not be added";s:32:"Osa arhiivi sisust ei saa lisada";s:32:"Could not save image information";s:45:"Pildi informatsiooni salvestamine ebaõnnestus";s:22:"Could not delete image";s:29:"Pildi kustutamine ebaõnnestus";s:16:"choose thumbnail";s:13:"vali pisipilt";s:64:"Choose the filename of the image used to represent this gallery.";s:65:"Vali pildi faili nimi millist kasutada selle galerii esitlemisel.";s:14:"thumbnail|None";s:6:"Puudub";s:16:"thumbnail|Random";s:8:"Juhuslik";s:12:"edit gallery";s:14:"muuda galeriid";s:9:"Thumbnail";s:8:"Pisipilt";s:16:"Random
thumbnail";s:17:"Juhuslik
pisipilt";s:19:"thumbnail|Change...";s:8:"Muuda...";s:12:"Gallery name";s:12:"Galerii nimi";s:11:"Artist name";s:11:"Autori nimi";s:7:"Summary";s:9:"Kokkuvõte";s:10:"edit image";s:11:"muuda pilti";s:5:"Image";s:4:"Pilt";s:10:"Image name";s:10:"Pildi nimi";s:15:"change password";s:12:"muuda parool";s:67:"Please choose a new password between 6 and 16 characters in length.";s:51:"Palun vali uus parool vahemikus 6 kuni 16 sümbolit.";s:17:"Current password:";s:16:"Praegune parool:";s:13:"New password:";s:11:"Uus parool:";s:17:"Confirm password:";s:15:"Kinnita parool:";s:16:"edit permissions";s:12:"muuda õigusi";s:5:"Owner";s:6:"Omanik";s:6:"Groups";s:6:"Grupid";s:17:"Group permissions";s:13:"Grupi õigused";s:16:"permissions|Read";s:8:"Lugemine";s:16:"permissions|Edit";s:8:"Muutmine";s:15:"permissions|Add";s:8:"Lisamine";s:18:"permissions|Delete";s:11:"Kustutamine";s:17:"World permissions";s:13:"Kõigi õigused";s:15:"user management";s:18:"kasutaja haldamine";s:8:"Username";s:12:"Kasutajanimi";s:4:"Type";s:4:"Tüüp";s:13:"Administrator";s:14:"Administraator";s:4:"User";s:8:"Kasutaja";s:9:"Full name";s:12:"Täielik nimi";s:8:"Password";s:6:"Parool";s:22:"admin bar|View gallery";s:14:"Vaata galeriid";s:26:"admin bar|Change thumbnail";s:15:"Muuda pisipilti";s:16:"hits table|Graph";s:7:"Graafik";s:15:"hits table|Hits";s:9:"Päringuid";s:19:"hits table|Last hit";s:14:"Viimane päring";s:14:"Admin message:";s:22:"Administraatori teade:";s:6:"log in";s:10:"logi sisse";s:52:"Please enter your admin username and password below.";s:60:"Palun sisesta haldamiseks kasutajanimi ja parool järgnevalt.";s:9:"Username:";s:13:"Kasutajanimi:";s:9:"Password:";s:7:"Parool:";s:61:"If you do not have a username then you may log in as a guest.";s:60:"Kui sul pole kasutajanime siis võid logida sisse külalisena.";s:49:"You must be an administrator to access this area.";s:58:"Pead olema administraator saamaks ligipääsu sellele alale.";s:6:"Email:";s:16:"E-posti aadress:";s:10:"Full name:";s:13:"Täielik nimi:";s:4:"edit";s:5:"muuda";s:6:"delete";s:7:"kustuta";s:7:"suspend";s:9:"passiivne";s:9:"unsuspend";s:8:"aktiivne";s:15:"create new user";s:16:"loo uus kasutaja";s:24:"Please choose an option:";s:16:"Palun tee valik:";s:27:"Manage galleries and images";s:25:"Halda galeriisid ja pilte";s:17:"View gallery hits";s:23:"Vaata galerii päringuid";s:15:"Change password";s:12:"Muuda parool";s:10:"My profile";s:12:"Minu profiil";s:12:"Manage users";s:16:"Halda kasutajaid";s:23:"Purge cached thumbnails";s:31:"Tühjenda vahemälu pisipiltidest";s:16:"Log out of admin";s:20:"Logi välja haldusest";s:11:"new gallery";s:11:"uus galerii";s:11:"Identifier:";s:15:"Identifikaator:";s:9:"new image";s:8:"uus pilt";s:74:"This image will not be visible because this gallery contains subgalleries.";s:60:"See pilt ei ole nähtav kuna galerii sisaldab alamgaleriisid.";s:18:"Upload single file";s:19:"Lae üles üksik fail";s:21:"Image file to upload:";s:28:"Pildi fail üles laadimiseks:";s:30:"Use filename of uploaded file.";s:39:"Kasuta faili nime üles laetud failidel.";s:27:"Specify different filename:";s:23:"Määra erinev failinimi:";s:21:"Upload multiple files";s:21:"Laadi üles mitu faili";s:19:"ZIP file to upload:";s:26:"ZIP fail üles laadimiseks:";s:15:"Add remote file";s:17:"Lisa fail võrgust";s:13:"URL of image:";s:10:"Pildi URL:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:16:"Estonian (Eesti)";s:6:"plural";s:30:"$nplurals=2;$plural=($n != 1);";}}
/photogallery/locale/singapore.admin.fr.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:14:"Galerie ajouté";s:18:"An error occurred:";s:7:"Erreur:";s:11:"Image added";s:12:"Image ajouté";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:15:"Vignette changé";s:14:"confirm|Cancel";s:7:"Annuler";s:15:"Gallery deleted";s:15:"Galerie suprimé";s:14:"delete gallery";s:19:"suprimer la galerie";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:93:"Gallerie %s n'est pas vide.
Êtes vous sûr que vous voulez la suprimer avec tout son contenu ?";s:13:"Image deleted";s:13:"Image suprimé";s:12:"delete image";s:17:"supprimer l'image";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:68:"Êtes vous sûr que vous voulez suprimer l'image %s de la galerie %s ?";s:12:"User deleted";s:15:"Galerie suprimé";s:11:"delete user";s:19:"suprimer la galerie";s:52:"Are you sure you want to permanently delete user %s?";s:68:"Êtes vous sûr que vous voulez suprimer l'image %s de la galerie %s ?";s:27:"Welcome to singapore admin!";s:29:"Bienvenue à singapore admin !";s:22:"Thank you and goodbye!";s:20:"Merci et au revoir !";s:22:"Thumbnail cache purged";s:24:"Cache de vignette purger";s:23:"purge cached thumbnails";s:47:"Purger les vignettes enregistrées dans le cache";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:90:"Êtes vous sûr que vous voulez suprimer toutes les %s vignettes enregistrer dans le cache ?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:17:"Galerie sauvgardé";s:24:"Image saved successfully";s:15:"Image sauvgardé";s:14:"Password saved";s:22:"Mot de passe sauvgardé";s:17:"Permissions saved";s:22:"Mot de passe sauvgardé";s:15:"User info saved";s:17:"Galerie sauvgardé";s:14:"admin bar|Back";s:6:"Retour";s:15:"admin bar|Admin";s:14:"Administration";s:19:"admin bar|Galleries";s:8:"Galeries";s:17:"admin bar|Log out";s:11:"Déconnexion";s:22:"admin bar|Edit gallery";s:14:"Editer Galerie";s:26:"admin bar|Edit permissions";s:14:"Editer Galerie";s:24:"admin bar|Delete gallery";s:15:"Effacer Galerie";s:24:"admin bar|New subgallery";s:21:"Nouvelle Sous-Galerie";s:26:"admin bar|Re-index gallery";s:15:"Effacer Galerie";s:20:"admin bar|Edit image";s:12:"Editer Image";s:22:"admin bar|Delete image";s:13:"Effacer Image";s:19:"admin bar|New image";s:14:"Nouvelle Image";s:24:"Could not save user info";s:50:"Impossible de sauvegarder les infos sur la Galerie";s:54:"New password must be between 6 and 16 characters long.";s:59:"Le nouveau mot de passe doit contenir de 6 à 16 caractères.";s:43:"The new passwords you entered do not match.";s:48:"Le nouveau mot de passe entré ne correspond pas.";s:72:"The current password you entered does not match the one in the database.";s:72:"Le mot de passe entré ne correspond pas à celui enregistré dans la base.";s:53:"The username specified was not found in the database.";s:51:"L'identifiant spécifié est introuvable dans la base";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:41:"Identifiant et/ou mot de passe incorrects";s:38:"You must enter a username and password";s:51:"Vous devez entrer un identifiant et un mot de passe";s:27:"Could not save gallery info";s:50:"Impossible de sauvegarder les infos sur la Galerie";s:23:"Username already exists";s:22:"Le fichier existe déjà";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:22:"La galerie existe déjà";s:26:"Could not create directory";s:30:"Impossible de créer un dossier";s:37:"Cannot delete the top level directory";s:41:"Impossible d'effacer le dossier principal";s:19:"File already exists";s:22:"Le fichier existe déjà";s:21:"Could not upload file";s:28:"Impossible d'effacer l'image";s:30:"Could not add image to gallery";s:41:"Impossible d'ajouter l'image à la galerie";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:28:"Impossible d'effacer l'image";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:54:"Impossible de sauvegarder les informations sur l'image";s:22:"Could not delete image";s:28:"Impossible d'effacer l'image";s:17:"Select gallery...";s:19:"suprimer la galerie";s:16:"choose thumbnail";s:20:"Choisir une vignette";s:64:"Choose the filename of the image used to represent this gallery.";s:53:"Choisir le fichier image pour représenter la galerie.";s:14:"thumbnail|None";s:8:"Aucun(e)";s:16:"thumbnail|Random";s:9:"Aléatoire";s:12:"edit gallery";s:17:"Editer la Galerie";s:9:"Thumbnail";s:8:"Aucun(e)";s:16:"Random
thumbnail";s:18:"Vignette
aléatoire";s:19:"thumbnail|Change...";s:10:"Changer...";s:12:"Gallery name";s:5:"Titre";s:11:"Artist name";s:16:"Nom de l'artiste";s:7:"Summary";s:0:"";s:10:"edit image";s:14:"Editer l'image";s:5:"Image";s:5:"Image";s:10:"Image name";s:5:"Titre";s:15:"change password";s:23:"Changer le mot de passe";s:67:"Please choose a new password between 6 and 16 characters in length.";s:59:"Choisissez un mot de passe comprenant de 6 à 16 caractères.";s:17:"Current password:";s:20:"Mot de passe actuel:";s:13:"New password:";s:21:"Nouveau mot de passe:";s:17:"Confirm password:";s:26:"Confirmer le mot de passe:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:12:"Identifiant:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:12:"Identifiant:";s:9:"Full name";s:5:"Titre";s:8:"Password";s:13:"Mot de passe:";s:22:"admin bar|View gallery";s:21:"Nouvelle Sous-Galerie";s:26:"admin bar|Change thumbnail";s:21:"Nouvelle Sous-Galerie";s:16:"hits table|Graph";s:0:"";s:15:"hits table|Hits";s:0:"";s:19:"hits table|Last hit";s:0:"";s:14:"Admin message:";s:15:"Message admin :";s:6:"log in";s:9:"Connexion";s:52:"Please enter your admin username and password below.";s:51:"Vous devez entrer un identifiant et un mot de passe";s:9:"Username:";s:12:"Identifiant:";s:9:"Password:";s:13:"Mot de passe:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:5:"Titre";s:4:"edit";s:0:"";s:6:"delete";s:17:"supprimer l'image";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:21:"Choisissez une option";s:27:"Manage galleries and images";s:30:"Gestion des galeries et Images";s:17:"View gallery hits";s:35:"Voir le nombre de hits des galeries";s:15:"Change password";s:23:"Changer le mot de passe";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:47:"Purger les vignettes enregistrées dans le cache";s:16:"Log out of admin";s:26:"Déconnexion administration";s:11:"new gallery";s:16:"Nouvelle galerie";s:11:"Identifier:";s:8:"Nommage:";s:9:"new image";s:14:"Nouvelle image";s:74:"This image will not be visible because this gallery contains subgalleries.";s:80:"Cette image ne sera pas visible parce que la galerie contient des sous-galeries.";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:28:"Fichier Image à télécharger:";s:30:"Use filename of uploaded file.";s:38:"Utiliser le nom du fichier téléchargé.";s:27:"Specify different filename:";s:35:"Choisissez un autre nom de fichier:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:28:"Fichier Image à télécharger:";s:15:"Add remote file";s:15:"Fichier distant";s:13:"URL of image:";s:25:"Adresse (URL) de l'image:";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:7:"French ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.hr.pmo
0,0 → 1,5
a:142:{s:53:"You do not have permission to perform this operation.";s:32:"Nemate pravo pokrenuti operaciju";s:13:"Gallery added";s:15:"Galerija dodana";s:18:"An error occurred:";s:6:"Greška";s:11:"Image added";s:12:"Slika dodana";s:22:"Archive contents added";s:20:"Dodan sadržaj arhive";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:17:"Ikona promjenjena";s:14:"confirm|Cancel";s:8:"Odustani";s:15:"Gallery deleted";s:17:"Galerija obrisana";s:14:"delete gallery";s:15:"obriši galeriju";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:110:"Galerija %s nije prazna.
Da li ste sigurni da želite nepovratno obrisati cijeli sadržaj - podgalerije i slike";s:13:"Image deleted";s:14:"Slika obrisana";s:12:"delete image";s:12:"obriši sliku";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:72:"Da li ste sigurni da želite nepovratno obrisati sliku %s iz galerije %s?";s:12:"User deleted";s:16:"Korisnik obrisan";s:11:"delete user";s:16:"obriši korisnika";s:52:"Are you sure you want to permanently delete user %s?";s:60:"Da li ste sigurni da želite nepovratno obrisati korisnika %s";s:27:"Welcome to singapore admin!";s:47:"Dobrodošli u administratorsko su?elje galerije!";s:22:"Thank you and goodbye!";s:22:"Hvala i lijep pozdrav!";s:22:"Thumbnail cache purged";s:19:"Obrisan cache ikona";s:23:"purge cached thumbnails";s:22:"obriši ikone u cache-u";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:55:"Da li ste sigurni da želite obrisati cache-irane ikone?";s:36:"Gallery re-indexed. %s images added.";s:43:"Galerija je reindeksirana. %s slika dodano.";s:18:"Gallery info saved";s:35:"Informacije o galeriji su snimljene";s:16:"Image info saved";s:30:"Informacije slike su snimljene";s:14:"Password saved";s:17:"Lozinka snimljena";s:17:"Permissions saved";s:17:"Dozvole snimljene";s:15:"User info saved";s:32:"Korisni?ke informacije snimljene";s:14:"admin bar|Back";s:5:"Nazad";s:15:"admin bar|Admin";s:13:"Administrator";s:19:"admin bar|Galleries";s:8:"Galerije";s:17:"admin bar|Log out";s:17:"Odjava sa sustava";s:22:"admin bar|Edit gallery";s:14:"Uredi galeriju";s:26:"admin bar|Edit permissions";s:13:"Uredi dozvole";s:24:"admin bar|Delete gallery";s:15:"Obriši galeriju";s:24:"admin bar|New subgallery";s:16:"Nova podgalerija";s:26:"admin bar|Re-index gallery";s:21:"Reindeksiraj galeriju";s:20:"admin bar|Edit image";s:11:"Uredi sliku";s:22:"admin bar|Delete image";s:12:"Obriši sliku";s:19:"admin bar|New image";s:10:"Nova slika";s:24:"Could not save user info";s:43:"Nemogu?nost pohrane korisni?kih informacija";s:54:"New password must be between 6 and 16 characters long.";s:50:"Nova lozinka mora biti duga izmežu 6 i 16 znakova.";s:43:"The new passwords you entered do not match.";s:46:"Nove lozinke koje ste upisali se ne poklapaju.";s:72:"The current password you entered does not match the one in the database.";s:50:"Upisana lozinka se ne poklapa sa lozinkom iz baze.";s:53:"The username specified was not found in the database.";s:41:"Upisano korisni?ko ime ne postoji u bazi.";s:31:"Your account has been suspended";s:45:"Vaš korisni?ki ra?un je privremeno onemogu?en";s:34:"Username and/or password incorrect";s:35:"Korisni?ko ime/ili lozinka pogrešno";s:38:"You must enter a username and password";s:39:"Morate upisati korisni?ko ime i lozinku";s:27:"Could not save gallery info";s:42:"Nemogu?nost pohrane informacija o galeriji";s:23:"Username already exists";s:26:"Korisni?ko ime ve? postoji";s:31:"Cannot delete built in accounts";s:48:"Nemogu?nost brisanja ugra?enih korisni?kih imena";s:23:"Username not recognised";s:30:"Korisni?ko ime nije prepoznato";s:22:"Gallery already exists";s:20:"Galerija ve? postoji";s:26:"Could not create directory";s:40:"Nemogu?nost kreiranja mape (direktorija)";s:37:"Cannot delete the top level directory";s:45:"Nemogu?nost brisanja vršne mape (direktorija)";s:19:"File already exists";s:20:"Datoteka ve? postoji";s:21:"Could not upload file";s:43:"Nemogu?nost preuzimanja datoteke (upload-a)";s:30:"Could not add image to gallery";s:38:"Nemogu?nost dodavanja slike u galeriju";s:38:"Could not find temporary storage space";s:35:"Nema prostora za privremenu pohranu";s:28:"Could not decompress archive";s:31:"Nemogu?nost dekompresije arhive";s:40:"Some archive contents could not be added";s:44:"Neki od sadržaja iz arhive se ne može dodati";s:32:"Could not save image information";s:39:"Nemogu?nost pohrane informacija o slici";s:22:"Could not delete image";s:26:"Nemogu?nost brisanja slike";s:16:"choose thumbnail";s:13:"odaberi ikonu";s:64:"Choose the filename of the image used to represent this gallery.";s:59:"Odaberi ime datoteke od slike koja ?e prezentirati galeriju";s:14:"thumbnail|None";s:7:"Nijedan";s:16:"thumbnail|Random";s:8:"Slu?ajan";s:12:"edit gallery";s:14:"uredi galeriju";s:9:"Thumbnail";s:5:"Ikona";s:16:"Random
thumbnail";s:15:"Slu?ajna
ikona";s:19:"thumbnail|Change...";s:11:"Promjeni...";s:12:"Gallery name";s:12:"Ime galerije";s:11:"Artist name";s:13:"Ime umjetnika";s:7:"Summary";s:7:"Sažetak";s:12:"Save Changes";s:14:"Snimi promjene";s:10:"edit image";s:11:"uredi sliku";s:5:"Image";s:5:"Slika";s:10:"Image name";s:9:"Ime slike";s:15:"change password";s:16:"promjeni lozinku";s:67:"Please choose a new password between 6 and 16 characters in length.";s:60:"Molimo odaberite novu lozinku duljine izme?u 6 i 16 znakova.";s:17:"Current password:";s:17:"Sadašnja lozinka:";s:13:"New password:";s:13:"Nova lozinka:";s:17:"Confirm password:";s:21:"Potvrda nove lozinke:";s:16:"edit permissions";s:13:"uredi dozvole";s:5:"Owner";s:7:"Vlasnik";s:6:"Groups";s:5:"Grupe";s:17:"Group permissions";s:13:"Dozvole grupe";s:16:"permissions|Read";s:7:"?itanje";s:16:"permissions|Edit";s:10:"Ure?ivanje";s:15:"permissions|Add";s:9:"Dodavanje";s:18:"permissions|Delete";s:8:"Brisanje";s:17:"World permissions";s:13:"Javne dozvole";s:10:"my profile";s:10:"moj profil";s:8:"Username";s:14:"Korisni?ko ime";s:9:"Full name";s:13:"Ime i prezime";s:15:"user management";s:20:"ure?ivanje korisnika";s:4:"Type";s:3:"Tip";s:13:"Administrator";s:13:"Administrator";s:4:"User";s:8:"Korisnik";s:8:"Password";s:7:"Lozinka";s:22:"admin bar|View gallery";s:16:"Pregled galerije";s:26:"admin bar|Change thumbnail";s:14:"Promjeni ikonu";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:8:"Zahtjevi";s:19:"hits table|Last hit";s:14:"Zadnji zahtjev";s:14:"Admin message:";s:22:"Poruka administratora:";s:6:"log in";s:16:"prijava u sustav";s:52:"Please enter your admin username and password below.";s:53:"Unesite vaše administratorko korisni?ko ime i lozinku";s:9:"Username:";s:15:"Korisni?ko ime:";s:9:"Password:";s:8:"Lozinka:";s:61:"If you do not have a username then you may log in as a guest.";s:63:"Ako nemate korisni?ko ime, možete se prijaviti kao gost (guest)";s:15:"Log in as guest";s:24:"Prijava kao gost (guest)";s:49:"You must be an administrator to access this area.";s:45:"Morate biti administrator za pristup sadržaju";s:6:"Email:";s:6:"Email:";s:10:"Full name:";s:14:"Ime i prezime:";s:4:"edit";s:5:"uredi";s:6:"delete";s:6:"obriši";s:7:"suspend";s:20:"privremeno onemogu?i";s:9:"unsuspend";s:7:"omogu?i";s:15:"create new user";s:25:"kreiranje novog korisnika";s:6:"Create";s:7:"Kreiraj";s:24:"Please choose an option:";s:17:"Odaberite opciju:";s:27:"Manage galleries and images";s:27:"Ure?ivanje galerija i slika";s:17:"View gallery hits";s:16:"Pregled zahtjeva";s:15:"Change password";s:16:"Promjena lozinke";s:10:"My profile";s:10:"Moj profil";s:12:"Manage users";s:20:"Ure?ivanje korisnika";s:23:"Purge cached thumbnails";s:24:"Obriši cache-irane ikone";s:16:"Log out of admin";s:21:"Odjava administratora";s:11:"new gallery";s:13:"nova galerija";s:11:"Identifier:";s:23:"Identifikacijska oznaka";s:9:"new image";s:10:"nova slika";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:61:"Slika ne?e biti vidljiva jer ova galerija sadrži podgalerije.";s:18:"Upload single file";s:23:"Prijenos jedne datoteke";s:21:"Image file to upload:";s:18:"Slika za transfer:";s:30:"Use filename of uploaded file.";s:35:"Koristi ime transferirane datoteke.";s:27:"Specify different filename:";s:23:"Promjena imena datoteke";s:21:"Upload multiple files";s:22:"Prijenos više datoteka";s:19:"ZIP file to upload:";s:23:"ZIP arhiva za prijenos:";s:15:"Add remote file";s:37:"Dodaj datoteku sa drugog poslužitelja";s:13:"URL of image:";s:10:"URL slike:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:19:"Croatian (Hrvatski)";s:6:"plural";s:107:"$nplurals=3;$plural=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;";}}
/photogallery/locale/singapore.admin.hu.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:17:"Galéria hozzáadva";s:18:"An error occurred:";s:16:"Hiba lépett fel:";s:11:"Image added";s:13:"Kép hozzáadva";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:7:"Rendben";s:17:"Thumbnail changed";s:21:"Elõnézet megváltozott";s:14:"confirm|Cancel";s:6:"Mégsem";s:15:"Gallery deleted";s:15:"Galéria törölve";s:14:"delete gallery";s:15:"Galéria törlése";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:107:"A galéria nem üres.
Biztos, hogy visszavonhatatlanul törlöd a benne levõ al-galériákkal és képekkel együtt?";s:13:"Image deleted";s:11:"Kép törölve";s:12:"delete image";s:11:"Kép törlése";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:79:"Biztos, hogy visszavonhatatlanul törlöd a %2$s galériában található %1$s képet?";s:12:"User deleted";s:15:"Galéria törölve";s:11:"delete user";s:15:"Galéria törlése";s:52:"Are you sure you want to permanently delete user %s?";s:79:"Biztos, hogy visszavonhatatlanul törlöd a %2$s galériában található %1$s képet?";s:27:"Welcome to singapore admin!";s:51:"Isten hozott a singapore adminisztrációs felületen!";s:22:"Thank you and goodbye!";s:15:"Kösz és viszlát";s:22:"Thumbnail cache purged";s:20:"Elõnézet tár törölve";s:23:"purge cached thumbnails";s:25:"Tárolt elõnézetek törlése";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:53:"Biztos, hogy törlöd az összes (%s) tárolt elõnézetet?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:28:"Galéria-információk elmentve";s:24:"Image saved successfully";s:19:"Kép sikeres mentése";s:14:"Password saved";s:13:"Jelszó mentve";s:17:"Permissions saved";s:13:"Jelszó mentve";s:15:"User info saved";s:28:"Galéria-információk elmentve";s:14:"admin bar|Back";s:6:"Vissza";s:15:"admin bar|Admin";s:14:"Adminisztráció";s:19:"admin bar|Galleries";s:8:"Galériák";s:17:"admin bar|Log out";s:13:"Kijelentkezés";s:22:"admin bar|Edit gallery";s:20:"Galéria szerkesztése";s:26:"admin bar|Edit permissions";s:20:"Galéria szerkesztése";s:24:"admin bar|Delete gallery";s:15:"Galéria törlése";s:24:"admin bar|New subgallery";s:13:"Új al-galéria";s:26:"admin bar|Re-index gallery";s:15:"Galéria törlése";s:20:"admin bar|Edit image";s:16:"Kép szerkesztése";s:22:"admin bar|Delete image";s:11:"Kép törlése";s:19:"admin bar|New image";s:6:"Új kép";s:24:"Could not save user info";s:35:"Nem menthetõk a galéria-információk";s:54:"New password must be between 6 and 16 characters long.";s:60:"Az új jelszó hosszúságának 6 és 16 karakter közé kell esnie.";s:43:"The new passwords you entered do not match.";s:34:"A megadott jelszavak nem egyeznek.";s:72:"The current password you entered does not match the one in the database.";s:54:"A megadott jelszó nem egyezik az adatbázisban levõvel.";s:53:"The username specified was not found in the database.";s:55:"A megadott felhasználónév nem szerepel az adatbázisban.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:41:"Érvénytelen felhasználónév és/vagy jelszó";s:38:"You must enter a username and password";s:46:"Meg kell adnod a felhasználónevet és a jelszót";s:27:"Could not save gallery info";s:35:"Nem menthetõk a galéria-információk";s:23:"Username already exists";s:15:"Már létezõ fájl";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:21:"A galéria már létezik";s:26:"Could not create directory";s:28:"A könyvtár nem hozható létre";s:37:"Cannot delete the top level directory";s:41:"A legelsõbb szintû könyvtár nem törölhetõ";s:19:"File already exists";s:15:"Már létezõ fájl";s:21:"Could not upload file";s:20:"Fájl-feltöltési hiba";s:30:"Could not add image to gallery";s:29:"A kép nem adható a galériához";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:19:"A kép nem törölhetõ";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:29:"A kép-információ nem menthetõ";s:22:"Could not delete image";s:19:"A kép nem törölhetõ";s:17:"Select gallery...";s:15:"Galéria törlése";s:16:"choose thumbnail";s:18:"Válassz elõnézetet";s:64:"Choose the filename of the image used to represent this gallery.";s:49:"A galéria ábrázolásához használt kép kiválasztása";s:14:"thumbnail|None";s:5:"Nincs";s:16:"thumbnail|Random";s:8:"Véletlen";s:12:"edit gallery";s:20:"Galéria szerkesztése";s:9:"Thumbnail";s:5:"Nincs";s:16:"Random
thumbnail";s:17:"Véletlen
elõnézet";s:19:"thumbnail|Change...";s:12:"Változtat...";s:12:"Gallery name";s:12:"Galéria neve";s:11:"Artist name";s:11:"Szerzõ neve";s:7:"Summary";s:0:"";s:10:"edit image";s:16:"Kép szerkesztése";s:5:"Image";s:3:"Kép";s:10:"Image name";s:8:"Kép neve";s:15:"change password";s:22:"Jelszó megváltoztatása";s:67:"Please choose a new password between 6 and 16 characters in length.";s:64:"Új jelszó megadása. (Hosszúsága 6 és 16 karakter között legyen.)";s:17:"Current password:";s:17:"Jelenlegi jelszó:";s:13:"New password:";s:10:"Új jelszó:";s:17:"Confirm password:";s:20:"Jelszó megerõsítése:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:15:"Felhasználónév:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:15:"Felhasználónév:";s:9:"Full name";s:12:"Galéria neve";s:8:"Password";s:15:"Felhasználónév:";s:22:"admin bar|View gallery";s:13:"Új al-galéria";s:26:"admin bar|Change thumbnail";s:13:"Új al-galéria";s:16:"hits table|Graph";s:0:"";s:15:"hits table|Hits";s:0:"";s:19:"hits table|Last hit";s:0:"";s:14:"Admin message:";s:0:"";s:6:"log in";s:14:"Adminisztráció";s:52:"Please enter your admin username and password below.";s:46:"Meg kell adnod a felhasználónevet és a jelszót";s:9:"Username:";s:15:"Felhasználónév:";s:9:"Password:";s:15:"Felhasználónév:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:12:"Galéria neve";s:4:"edit";s:0:"";s:6:"delete";s:11:"Kép törlése";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:17:"Opció választása:";s:27:"Manage galleries and images";s:30:"Galériák és képek szerkesztése";s:17:"View gallery hits";s:22:"Galéria látogatottsága";s:15:"Change password";s:22:"Jelszó megváltoztatása";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:25:"Tárolt elõnézetek törlése";s:16:"Log out of admin";s:29:"Adminisztrátori kijelentkezés";s:11:"new gallery";s:10:"Új galéria";s:11:"Identifier:";s:10:"Azonosító:";s:9:"new image";s:6:"Új kép";s:74:"This image will not be visible because this gallery contains subgalleries.";s:0:"";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:21:"Feltöltendõ állomány:";s:30:"Use filename of uploaded file.";s:37:"A feltöltött fájl nevének megtartása.";s:27:"Specify different filename:";s:26:"Eltérõ fájlnév használata:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:21:"Feltöltendõ állomány:";s:15:"Add remote file";s:11:"Távoli fájl";s:13:"URL of image:";s:11:"Kép URL-je:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:10:"Hungarian ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.is.pmo
0,0 → 1,5
a:142:{s:53:"You do not have permission to perform this operation.";s:60:"Þú hefur ekki réttindi til að framkvæma þess aðgerð.";s:13:"Gallery added";s:21:"Myndasafni bætt við";s:18:"An error occurred:";s:14:"Villa kom upp:";s:11:"Image added";s:19:"Mynd var bætt við";s:22:"Archive contents added";s:45:"Innihaldi safnskráar hefur verið bætt við";s:10:"confirm|OK";s:7:"Í lagi";s:17:"Thumbnail changed";s:15:"Smámynd breytt";s:14:"confirm|Cancel";s:11:"Hætta við";s:15:"Gallery deleted";s:15:"Myndasafni eytt";s:14:"delete gallery";s:16:"eyða myndasafni";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:134:"Myndasafnið '%s' er ekki tómt.
Ertu viss um að þú viljir eyða því og öllum undir-myndasöfnum og myndum sem það inniheldur?";s:13:"Image deleted";s:9:"Mynd eytt";s:12:"delete image";s:10:"eyða mynd";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:91:"Ertu viss um að þú viljir eyða myndinni '%s' úr myndasafninu '%s' fyrir fullt og allt?";s:12:"User deleted";s:12:"Notanda eytt";s:11:"delete user";s:13:"eyða notanda";s:52:"Are you sure you want to permanently delete user %s?";s:69:"Ertu viss um að þú viljir eyða notandanum %s fyrir fullt og allt?";s:27:"Welcome to singapore admin!";s:41:"Velkomin(n) í kerfisstjórnun Singapore!";s:22:"Thank you and goodbye!";s:21:"Takk fyrir og bleble!";s:22:"Thumbnail cache purged";s:37:"Flýtiminni fyrir smámyndir var eytt";s:23:"purge cached thumbnails";s:34:"eyða flýtiminni fyrir smámyndir";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:73:"Ertu viss um að þú viljir eyða öllum %s flýtivistuðu smámyndunum?";s:36:"Gallery re-indexed. %s images added.";s:70:"Vísar myndasafns hafa verið endurbyggðir. %s myndum var bætt við.";s:18:"Gallery info saved";s:35:"Upplýsingar um myndasafn vistaðar";s:16:"Image info saved";s:30:"Upplýsingar um mynd vistaðar";s:14:"Password saved";s:17:"Lykilorð vistað";s:17:"Permissions saved";s:19:"Heimildir vistaðar";s:15:"User info saved";s:33:"Upplýsingar um notanda vistaðar";s:14:"admin bar|Back";s:8:"Til baka";s:15:"admin bar|Admin";s:13:"Kerfisstjóri";s:19:"admin bar|Galleries";s:10:"Myndasöfn";s:17:"admin bar|Log out";s:8:"Útskrá";s:22:"admin bar|Edit gallery";s:17:"Breyta myndasafni";s:26:"admin bar|Edit permissions";s:16:"Breyta heimildum";s:24:"admin bar|Delete gallery";s:16:"Eyða myndasafni";s:24:"admin bar|New subgallery";s:21:"Nýtt undir-myndasafn";s:26:"admin bar|Re-index gallery";s:20:"Endurvísa myndasafn";s:20:"admin bar|Edit image";s:11:"Breyta mynd";s:22:"admin bar|Delete image";s:10:"Eyða mynd";s:19:"admin bar|New image";s:8:"Ný mynd";s:24:"Could not save user info";s:40:"Gat ekki vistað upplýsingar um notanda";s:54:"New password must be between 6 and 16 characters long.";s:65:"Nýja lykilorðið verður að vera á milli 6 og 16 stafa langt.";s:43:"The new passwords you entered do not match.";s:50:"Nýju lykilorðin sem þú slóst inn stemma ekki.";s:72:"The current password you entered does not match the one in the database.";s:85:"Lykilorðið sem þú slóst inn stemmir ekki við það sem geymt er í gagnagrunni.";s:53:"The username specified was not found in the database.";s:62:"Notandanafnið sem slegið var inn fannst ekki í gagnagrunni.";s:31:"Your account has been suspended";s:45:"Aðgangsreikningi þínum hefur verið lokað";s:34:"Username and/or password incorrect";s:40:"Notandanafn og/eða lykilorð ekki rétt";s:38:"You must enter a username and password";s:50:"Þú verður að slá inn notandanafn og lykilorð";s:27:"Could not save gallery info";s:42:"Gat ekki vistað upplýsingar um myndasafn";s:23:"Username already exists";s:24:"Notandanafn er til fyrir";s:31:"Cannot delete built in accounts";s:44:"Get ekki eytt innbyggðum aðgangsreikningum";s:23:"Username not recognised";s:20:"Notandanafn óþekkt";s:22:"Gallery already exists";s:23:"Myndasafn er þegar til";s:26:"Could not create directory";s:31:"Gat ekki búið til skráarsafn";s:37:"Cannot delete the top level directory";s:32:"Gat ekki eytt rótarskráarsafni";s:19:"File already exists";s:18:"Skrá er til fyrir";s:21:"Could not upload file";s:19:"Gat ekki sent skrá";s:30:"Could not add image to gallery";s:34:"Gat ekki bætt mynd við myndasafn";s:38:"Could not find temporary storage space";s:37:"Fann ekki tímabundið geymslusvæði";s:28:"Could not decompress archive";s:30:"Gat ekki afþjappað safnskrá";s:40:"Some archive contents could not be added";s:59:"Sumum hlutum safnskráarinnar var ekki hægt að bæta við";s:32:"Could not save image information";s:37:"Gat ekki vistað upplýsingar um mynd";s:22:"Could not delete image";s:18:"Gat ekki eytt mynd";s:16:"choose thumbnail";s:14:"veldu smámynd";s:64:"Choose the filename of the image used to represent this gallery.";s:71:"Veldu skráarnafn myndarinnar sem á að standa fyrir þetta myndasafn.";s:14:"thumbnail|None";s:5:"Engin";s:16:"thumbnail|Random";s:15:"Handahófskennd";s:12:"edit gallery";s:17:"breyta myndasafni";s:9:"Thumbnail";s:8:"Smámynd";s:16:"Random
thumbnail";s:22:"Smámynd af
handahófi";s:19:"thumbnail|Change...";s:9:"Breyta...";s:12:"Gallery name";s:15:"Nafn myndasafns";s:11:"Artist name";s:15:"Nafn listamanns";s:7:"Summary";s:9:"Samantekt";s:12:"Save Changes";s:16:"Vista breytingar";s:10:"edit image";s:11:"breyta mynd";s:5:"Image";s:4:"Mynd";s:10:"Image name";s:11:"Nafn myndar";s:15:"change password";s:17:"breyta lykilorði";s:67:"Please choose a new password between 6 and 16 characters in length.";s:69:"Vinsamlega veldu nýtt lykilorð sem er á milli 6 og 16 stafa langt.";s:17:"Current password:";s:21:"Núverandi lykilorð:";s:13:"New password:";s:16:"Nýtt lykilorð:";s:17:"Confirm password:";s:21:"Staðfestu lykilorð:";s:16:"edit permissions";s:16:"breyta heimildum";s:5:"Owner";s:7:"Eigandi";s:6:"Groups";s:6:"Hópar";s:17:"Group permissions";s:15:"Heimildir hópa";s:16:"permissions|Read";s:4:"Lesa";s:16:"permissions|Edit";s:6:"Breyta";s:15:"permissions|Add";s:10:"Bæta við";s:18:"permissions|Delete";s:5:"Eyða";s:17:"World permissions";s:15:"Heims-heimildir";s:10:"my profile";s:17:"Mínar stillingar";s:8:"Username";s:11:"Notandanafn";s:9:"Full name";s:10:"Fullt nafn";s:15:"user management";s:16:"notendastjórnun";s:4:"Type";s:6:"Tegund";s:13:"Administrator";s:15:"Umsjónarmaður";s:4:"User";s:7:"Notandi";s:8:"Password";s:9:"Lykilorð";s:22:"admin bar|View gallery";s:16:"Skoða myndasafn";s:26:"admin bar|Change thumbnail";s:15:"Breyta smámynd";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:11:"Heimsóknir";s:19:"hits table|Last hit";s:19:"Síðasta heimsókn";s:14:"Admin message:";s:29:"Skilaboð frá kerfisstjóra:";s:6:"log in";s:8:"innskrá";s:52:"Please enter your admin username and password below.";s:64:"Vinsamlega sláðu inn notandanafn og lykilorð hér að neðan.";s:9:"Username:";s:12:"Notandanafn:";s:9:"Password:";s:10:"Lykilorð:";s:61:"If you do not have a username then you may log in as a guest.";s:70:"Ef þú hefur ekki notandanafn getur þú skráð þig inn sem gestur.";s:15:"Log in as guest";s:19:"Innskrá sem gestur";s:49:"You must be an administrator to access this area.";s:75:"Þú verður að vera umsjónarmaður til að komast inn á þetta svæði.";s:6:"Email:";s:16:"Tölvupóstfang:";s:10:"Full name:";s:11:"Fullt nafn:";s:4:"edit";s:6:"breyta";s:6:"delete";s:5:"eyða";s:7:"suspend";s:4:"loka";s:9:"unsuspend";s:4:"opna";s:15:"create new user";s:23:"búa til nýjan notanda";s:6:"Create";s:8:"Búa til";s:24:"Please choose an option:";s:25:"Vinsamlega veldu valkost:";s:27:"Manage galleries and images";s:27:"Umsjón mynda og myndasafna";s:17:"View gallery hits";s:32:"Skoða heimsóknir í myndasöfn";s:15:"Change password";s:17:"Breyta lykilorði";s:10:"My profile";s:17:"Mínar stillingar";s:12:"Manage users";s:20:"Sýsla með notendur";s:23:"Purge cached thumbnails";s:32:"Eyða flýtivistuðum smámyndum";s:16:"Log out of admin";s:22:"Útskrá kerfisstjóra";s:11:"new gallery";s:15:"nýtt myndasafn";s:11:"Identifier:";s:9:"Einkenni:";s:9:"new image";s:8:"ný mynd";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:91:"Þessi mynd mun ekki verða sýnileg þar eð þetta myndasafn inniheldur undir-myndasöfn.";s:18:"Upload single file";s:22:"Hlaða upp einni skrá";s:21:"Image file to upload:";s:33:"Myndaskrá sem á að hlaða upp:";s:30:"Use filename of uploaded file.";s:38:"Nota skráarnafn upphlaðinnar skrár.";s:27:"Specify different filename:";s:29:"Tilgreina annað skráarnafn:";s:21:"Upload multiple files";s:25:"Hlaða upp mörgum skrám";s:19:"ZIP file to upload:";s:34:"Safnskrá (ZIP) sem hlaða á upp:";s:15:"Add remote file";s:28:"Bæta við fjarstaddri skrá";s:13:"URL of image:";s:10:"URL myndar";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:10:"Icelandic ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.it.pmo
0,0 → 1,4
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:22:"La galleria esiste già";s:18:"An error occurred:";s:0:"";s:11:"Image added";s:0:"";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:0:"";s:17:"Thumbnail changed";s:11:"Modifica...";s:14:"confirm|Cancel";s:0:"";s:15:"Gallery deleted";s:16:"Su di un livello";s:14:"delete gallery";s:20:"modifica la galleria";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:0:"";s:13:"Image deleted";s:5:"Data:";s:12:"delete image";s:19:"modifica l'immagine";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:0:"";s:12:"User deleted";s:16:"Su di un livello";s:11:"delete user";s:20:"modifica la galleria";s:52:"Are you sure you want to permanently delete user %s?";s:0:"";s:27:"Welcome to singapore admin!";s:0:"";s:22:"Thank you and goodbye!";s:0:"";s:22:"Thumbnail cache purged";s:0:"";s:23:"purge cached thumbnails";s:30:"Svuota la cache dei thumbnails";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:0:"";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:0:"";s:24:"Image saved successfully";s:0:"";s:14:"Password saved";s:9:"Password:";s:17:"Permissions saved";s:9:"Password:";s:15:"User info saved";s:0:"";s:14:"admin bar|Back";s:8:"Indietro";s:15:"admin bar|Admin";s:10:"Amministra";s:19:"admin bar|Galleries";s:8:"Gallerie";s:17:"admin bar|Log out";s:13:"Esegui Logout";s:22:"admin bar|Edit gallery";s:20:"Modifica la galleria";s:26:"admin bar|Edit permissions";s:20:"Modifica la galleria";s:24:"admin bar|Delete gallery";s:20:"Cancella la galleria";s:24:"admin bar|New subgallery";s:19:"Nuova sottogalleria";s:26:"admin bar|Re-index gallery";s:20:"Cancella la galleria";s:20:"admin bar|Edit image";s:19:"Modifica l'immagine";s:22:"admin bar|Delete image";s:18:"Elimina l'immagine";s:19:"admin bar|New image";s:14:"Nuova immagine";s:24:"Could not save user info";s:50:"Impossibile salvare le informazioni della galleria";s:54:"New password must be between 6 and 16 characters long.";s:76:"La lunghezza della nuova password deve essere compresa tra 6 e 16 caratteri.";s:43:"The new passwords you entered do not match.";s:50:"Le nuove passwords da te inserite sono differenti.";s:72:"The current password you entered does not match the one in the database.";s:83:"La password corrente da te inserita non corrisponde a quella presente nel database.";s:53:"The username specified was not found in the database.";s:66:"Il nome utente da te specificato non è stato trovato nel database.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:31:"Nome utente e/o password errati";s:38:"You must enter a username and password";s:43:"Devi inserire un nome utente e una password";s:27:"Could not save gallery info";s:50:"Impossibile salvare le informazioni della galleria";s:23:"Username already exists";s:18:"Il file esiste già";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:22:"La galleria esiste già";s:26:"Could not create directory";s:30:"Impossibile creare la cartella";s:37:"Cannot delete the top level directory";s:44:"Impossibile eliminare la cartella principale";s:19:"File already exists";s:18:"Il file esiste già";s:21:"Could not upload file";s:33:"Impossibile cancellare l'immagine";s:30:"Could not add image to gallery";s:47:"Impossibile aggiungere l'immagine alla galleria";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:33:"Impossibile cancellare l'immagine";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:49:"Impossibile salvare le informazioni dell'immagine";s:22:"Could not delete image";s:33:"Impossibile cancellare l'immagine";s:17:"Select gallery...";s:20:"modifica la galleria";s:16:"choose thumbnail";s:24:"selezionare il thumbnail";s:64:"Choose the filename of the image used to represent this gallery.";s:80:"Seleziona il nome dell'immagine da utilizzare per rappresentare questa galleria.";s:14:"thumbnail|None";s:7:"Nessuno";s:16:"thumbnail|Random";s:7:"Casuale";s:12:"edit gallery";s:20:"modifica la galleria";s:9:"Thumbnail";s:7:"Nessuno";s:16:"Random
thumbnail";s:17:"Thumbnail
casuale";s:19:"thumbnail|Change...";s:11:"Modifica...";s:12:"Gallery name";s:22:"La galleria esiste già";s:11:"Artist name";s:0:"";s:7:"Summary";s:0:"";s:10:"edit image";s:19:"modifica l'immagine";s:5:"Image";s:0:"";s:10:"Image name";s:5:"Data:";s:15:"change password";s:17:"modifica password";s:67:"Please choose a new password between 6 and 16 characters in length.";s:72:"Seleziona una nuova password di lunghezza compresa tra 6 e 16 caratteri.";s:17:"Current password:";s:18:"Password corrente:";s:13:"New password:";s:15:"Nuova password:";s:17:"Confirm password:";s:18:"Conferma password:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:12:"Nome utente:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:12:"Nome utente:";s:9:"Full name";s:22:"La galleria esiste già";s:8:"Password";s:9:"Password:";s:22:"admin bar|View gallery";s:19:"Nuova sottogalleria";s:26:"admin bar|Change thumbnail";s:19:"Nuova sottogalleria";s:16:"hits table|Graph";s:0:"";s:15:"hits table|Hits";s:0:"";s:19:"hits table|Last hit";s:0:"";s:14:"Admin message:";s:0:"";s:6:"log in";s:12:"esegui login";s:52:"Please enter your admin username and password below.";s:43:"Devi inserire un nome utente e una password";s:9:"Username:";s:12:"Nome utente:";s:9:"Password:";s:9:"Password:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:22:"La galleria esiste già";s:4:"edit";s:0:"";s:6:"delete";s:19:"modifica l'immagine";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:19:"Seleziona una voce:";s:27:"Manage galleries and images";s:30:"Amministra gallerie e immagini";s:17:"View gallery hits";s:24:"Visualizza hits gallerie";s:15:"Change password";s:20:"Modifica la password";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:30:"Svuota la cache dei thumbnails";s:16:"Log out of admin";s:31:"Logout amministrazione gallerie";s:11:"new gallery";s:14:"nuova galleria";s:11:"Identifier:";s:24:"Identificativo immagine:";s:9:"new image";s:14:"nuova immagine";s:74:"This image will not be visible because this gallery contains subgalleries.";s:0:"";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:24:"Immagine da trasmettere:";s:30:"Use filename of uploaded file.";s:36:"Utilizza il nome del file trasmesso.";s:27:"Specify different filename:";s:34:"Specifica un nome file differente:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:24:"Immagine da trasmettere:";s:15:"Add remote file";s:11:"File remoto";s:13:"URL of image:";s:18:"URL dell'immagine:";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:8:"Italian ";s:6:"plural";s:33:"$nplurals=2;$plural=$n>1 ? 0 : 1;";}}
/photogallery/locale/singapore.admin.ja.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:26:"¥®¥ã¥é¥ê¡¼¤¬Äɲ䵤ì¤Þ¤·¤¿";s:18:"An error occurred:";s:21:"¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:";s:11:"Image added";s:20:"²èÁü¤¬Äɲ䵤ì¤Þ¤·¤¿";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:26:"¥µ¥à¥Í¥¤¥ë¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿";s:14:"confirm|Cancel";s:10:"¥­¥ã¥ó¥»¥ë";s:15:"Gallery deleted";s:26:"¥®¥ã¥é¥ê¡¼¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿";s:14:"delete gallery";s:16:"¥®¥ã¥é¥ê¡¼¤Îºï½ü";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:116:"¥®¥ã¥é¥ê¡¼ %s ¤Ï¶õ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
ËÜÅö¤Ë¥®¥ã¥é¥ê¡¼µÚ¤Ó¥µ¥Ö¥®¥ã¥é¥ê¡¼¤Ë´Þ¤Þ¤ì¤ë²èÁü¤ò´°Á´¤Ëºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?";s:13:"Image deleted";s:20:"²èÁü¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿";s:12:"delete image";s:10:"²èÁü¤Îºï½ü";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:65:"ËÜÅö¤Ë²èÁü %s ¤ò¥®¥ã¥é¥ê¡¼ %s ¤è¤ê´°Á´¤Ëºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?";s:12:"User deleted";s:26:"¥®¥ã¥é¥ê¡¼¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿";s:11:"delete user";s:16:"¥®¥ã¥é¥ê¡¼¤Îºï½ü";s:52:"Are you sure you want to permanently delete user %s?";s:65:"ËÜÅö¤Ë²èÁü %s ¤ò¥®¥ã¥é¥ê¡¼ %s ¤è¤ê´°Á´¤Ëºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?";s:27:"Welcome to singapore admin!";s:28:"singapore´ÉÍý²èÌ̤ؤ褦¤³¤½!";s:22:"Thank you and goodbye!";s:22:"Thank you and goodbye!";s:22:"Thumbnail cache purged";s:36:"¥µ¥à¥Í¥¤¥ë¥­¥ã¥Ã¥·¥å¤¬¾Ãµî¤µ¤ì¤Þ¤·¤¿";s:23:"purge cached thumbnails";s:26:"¥µ¥à¥Í¥¤¥ë¥­¥ã¥Ã¥·¥å¤Î¾Ãµî";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:59:"ËÜÅö¤Ë %s ¤Î¥µ¥à¥Í¥¤¥ë¥­¥ã¥Ã¥·¥å¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:30:"¥®¥ã¥é¥ê¡¼¾ðÊó¤¬Êݸ¤µ¤ì¤Þ¤·¤¿";s:24:"Image saved successfully";s:26:"²èÁü¤¬Àµ¾ï¤ËÊݸ¤µ¤ì¤Þ¤·¤¿";s:14:"Password saved";s:26:"¥Ñ¥¹¥ï¡¼¥É¤¬Êݸ¤µ¤ì¤Þ¤·¤¿";s:17:"Permissions saved";s:26:"¥Ñ¥¹¥ï¡¼¥É¤¬Êݸ¤µ¤ì¤Þ¤·¤¿";s:15:"User info saved";s:30:"¥®¥ã¥é¥ê¡¼¾ðÊó¤¬Êݸ¤µ¤ì¤Þ¤·¤¿";s:14:"admin bar|Back";s:4:"Ìá¤ë";s:15:"admin bar|Admin";s:8:"´ÉÍý²èÌÌ";s:19:"admin bar|Galleries";s:10:"¥®¥ã¥é¥ê¡¼";s:17:"admin bar|Log out";s:10:"¥í¥°¥¢¥¦¥È";s:22:"admin bar|Edit gallery";s:16:"¥®¥ã¥é¥ê¡¼¤ÎÊÔ½¸";s:26:"admin bar|Edit permissions";s:16:"¥®¥ã¥é¥ê¡¼¤ÎÊÔ½¸";s:24:"admin bar|Delete gallery";s:16:"¥®¥ã¥é¥ê¡¼¤Îºï½ü";s:24:"admin bar|New subgallery";s:20:"¥µ¥Ö¥®¥ã¥é¥ê¡¼¤ÎºîÀ®";s:26:"admin bar|Re-index gallery";s:16:"¥®¥ã¥é¥ê¡¼¤Îºï½ü";s:20:"admin bar|Edit image";s:20:"admin bar|²èÁü¤ÎÊÔ½¸";s:22:"admin bar|Delete image";s:10:"²èÁü¤Îºï½ü";s:19:"admin bar|New image";s:10:"²èÁü¤ÎÅÐÏ¿";s:24:"Could not save user info";s:36:"¥®¥ã¥é¥ê¡¼¾ðÊó¤òÊݸ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:54:"New password must be between 6 and 16 characters long.";s:53:"¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤ÏȾ³Ñ6¡Á16ʸ»ú¤ÎŤµ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£";s:43:"The new passwords you entered do not match.";s:32:"¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤¬¹çÃפ·¤Þ¤»¤ó¡£";s:72:"The current password you entered does not match the one in the database.";s:62:"ÆþÎϤµ¤ì¤¿¸½ºß¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÆâÍƤȰìÃפ·¤Þ¤»¤ó¡£";s:53:"The username specified was not found in the database.";s:54:"»ØÄꤵ¤ì¤¿¥æ¡¼¥¶Ì¾¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:42:"¥æ¡¼¥¶Ì¾¤Þ¤¿¤Ï¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó";s:38:"You must enter a username and password";s:38:"¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤";s:27:"Could not save gallery info";s:36:"¥®¥ã¥é¥ê¡¼¾ðÊó¤òÊݸ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:23:"Username already exists";s:24:"¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Þ¤¹";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:26:"¥®¥ã¥é¥ê¡¼¤¬´û¤Ë¸ºß¤·¤Þ¤¹";s:26:"Could not create directory";s:34:"¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:37:"Cannot delete the top level directory";s:42:"¥È¥Ã¥×¥ì¥Ù¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ïºï½ü½ÐÍè¤Þ¤»¤ó";s:19:"File already exists";s:24:"¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Þ¤¹";s:21:"Could not upload file";s:38:"¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:30:"Could not add image to gallery";s:38:"¥®¥ã¥é¥ê¡¼¤Ë²èÁü¤òÄɲýÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:26:"²èÁü¤òºï½ü½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:30:"²èÁü¾ðÊó¤òÊݸ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿";s:22:"Could not delete image";s:26:"²èÁü¤òºï½ü½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿";s:17:"Select gallery...";s:16:"¥®¥ã¥é¥ê¡¼¤Îºï½ü";s:16:"choose thumbnail";s:16:"¥µ¥à¥Í¥¤¥ë¤ÎÁªÂò";s:64:"Choose the filename of the image used to represent this gallery.";s:50:"¤³¤Î¥®¥ã¥é¥ê¡¼¤òɽ¸½¤¹¤ë²èÁü̾¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£";s:14:"thumbnail|None";s:4:"̵¤·";s:16:"thumbnail|Random";s:8:"¥é¥ó¥À¥à";s:12:"edit gallery";s:16:"¥®¥ã¥é¥ê¡¼¤ÎÊÔ½¸";s:9:"Thumbnail";s:4:"̵¤·";s:16:"Random
thumbnail";s:19:"¥é¥ó¥À¥à
¥µ¥à¥Í¥¤¥ë";s:19:"thumbnail|Change...";s:4:"Êѹ¹";s:12:"Gallery name";s:12:"¥®¥ã¥é¥ê¡¼Ì¾";s:11:"Artist name";s:14:"¥¢¡¼¥Æ¥£¥¹¥È̾";s:7:"Summary";s:0:"";s:10:"edit image";s:10:"²èÁü¤ÎÊÔ½¸";s:5:"Image";s:4:"²èÁü";s:10:"Image name";s:6:"²èÁü̾";s:15:"change password";s:16:"¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹";s:67:"Please choose a new password between 6 and 16 characters in length.";s:51:"¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤òȾ³Ñ6¡Á16ʸ»ú¤ÇÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£";s:17:"Current password:";s:17:"¸½ºß¤Î¥Ñ¥¹¥ï¡¼¥É:";s:13:"New password:";s:17:"¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É:";s:17:"Confirm password:";s:21:"¥Ñ¥¹¥ï¡¼¥É¤ò¤â¤¦°ìÅÙ:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:9:"¥æ¡¼¥¶Ì¾:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:9:"¥æ¡¼¥¶Ì¾:";s:9:"Full name";s:12:"¥®¥ã¥é¥ê¡¼Ì¾";s:8:"Password";s:11:"¥Ñ¥¹¥ï¡¼¥É:";s:22:"admin bar|View gallery";s:20:"¥µ¥Ö¥®¥ã¥é¥ê¡¼¤ÎºîÀ®";s:26:"admin bar|Change thumbnail";s:20:"¥µ¥Ö¥®¥ã¥é¥ê¡¼¤ÎºîÀ®";s:16:"hits table|Graph";s:6:"¥°¥é¥Õ";s:15:"hits table|Hits";s:6:"¥Ò¥Ã¥È";s:19:"hits table|Last hit";s:10:"ºÇ¿·¥Ò¥Ã¥È";s:14:"Admin message:";s:19:"´ÉÍý²èÌÌ¥á¥Ã¥»¡¼¥¸:";s:6:"log in";s:8:"¥í¥°¥¤¥ó";s:52:"Please enter your admin username and password below.";s:38:"¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤";s:9:"Username:";s:9:"¥æ¡¼¥¶Ì¾:";s:9:"Password:";s:11:"¥Ñ¥¹¥ï¡¼¥É:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:12:"¥®¥ã¥é¥ê¡¼Ì¾";s:4:"edit";s:0:"";s:6:"delete";s:10:"²èÁü¤Îºï½ü";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:29:"¥ª¥×¥·¥ç¥ó¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤:";s:27:"Manage galleries and images";s:22:"¥®¥ã¥é¥ê¡¼¤È²èÁü¤Î´ÉÍý";s:17:"View gallery hits";s:26:"¥®¥ã¥é¥ê¡¼¤Î¥Ò¥Ã¥È¿ô¤òɽ¼¨";s:15:"Change password";s:16:"¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:26:"¥µ¥à¥Í¥¤¥ë¥­¥ã¥Ã¥·¥å¤Î¾Ãµî";s:16:"Log out of admin";s:26:"´ÉÍý²èÌ̤è¤ê¥í¥°¥¢¥¦¥È¤¹¤ë";s:11:"new gallery";s:14:"¿·µ¬¥®¥ã¥é¥ê¡¼";s:11:"Identifier:";s:11:"¥Õ¥¡¥¤¥ë̾:";s:9:"new image";s:8:"¿·µ¬²èÁü";s:74:"This image will not be visible because this gallery contains subgalleries.";s:58:"¥µ¥Ö¥®¥ã¥é¥ê¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë°Ù¡¢¤³¤Î²èÁü¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:17:"¥¢¥Ã¥×¥í¡¼¥É²èÁü:";s:30:"Use filename of uploaded file.";s:49:"¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¥Õ¥¡¥¤¥ë̾¤ò»ÈÍѤ¹¤ë(Ⱦ³Ñ±Ñ¿ô»ú):";s:27:"Specify different filename:";s:37:"¾¤Î¥Õ¥¡¥¤¥ë̾¤òÀßÄꤹ¤ë(Ⱦ³Ñ±Ñ¿ô»ú):";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:17:"¥¢¥Ã¥×¥í¡¼¥É²èÁü:";s:15:"Add remote file";s:16:"¥ê¥â¡¼¥È¥Õ¥¡¥¤¥ë";s:13:"URL of image:";s:10:"²èÁü¤ÎURL:";i:0;a:3:{s:7:"charset";s:6:"EUC-JP";s:8:"language";s:9:"Japanese ";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.admin.ja_utf8.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:39:"ギャラリーが追加されました";s:18:"An error occurred:";s:31:"エラーが発生しました:";s:11:"Image added";s:30:"画像が追加されました";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:39:"サムネイルが変更されました";s:14:"confirm|Cancel";s:15:"キャンセル";s:15:"Gallery deleted";s:39:"ギャラリーが削除されました";s:14:"delete gallery";s:24:"ギャラリーの削除";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:171:"ギャラリー %s は空ではありません。
本当にギャラリー及びサブギャラリーに含まれる画像を完全に削除してもよろしいですか?";s:13:"Image deleted";s:30:"画像が削除されました";s:12:"delete image";s:15:"画像の削除";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:93:"本当に画像 %s をギャラリー %s より完全に削除してもよろしいですか?";s:12:"User deleted";s:39:"ギャラリーが削除されました";s:11:"delete user";s:24:"ギャラリーの削除";s:52:"Are you sure you want to permanently delete user %s?";s:93:"本当に画像 %s をギャラリー %s より完全に削除してもよろしいですか?";s:27:"Welcome to singapore admin!";s:37:"singapore管理画面へようこそ!";s:22:"Thank you and goodbye!";s:22:"Thank you and goodbye!";s:22:"Thumbnail cache purged";s:54:"サムネイルキャッシュが消去されました";s:23:"purge cached thumbnails";s:39:"サムネイルキャッシュの消去";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:86:"本当に %s のサムネイルキャッシュを削除してもよろしいですか?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:45:"ギャラリー情報が保存されました";s:24:"Image saved successfully";s:39:"画像が正常に保存されました";s:14:"Password saved";s:39:"パスワードが保存されました";s:17:"Permissions saved";s:39:"パスワードが保存されました";s:15:"User info saved";s:45:"ギャラリー情報が保存されました";s:14:"admin bar|Back";s:6:"戻る";s:15:"admin bar|Admin";s:12:"管理画面";s:19:"admin bar|Galleries";s:15:"ギャラリー";s:17:"admin bar|Log out";s:15:"ログアウト";s:22:"admin bar|Edit gallery";s:24:"ギャラリーの編集";s:26:"admin bar|Edit permissions";s:24:"ギャラリーの編集";s:24:"admin bar|Delete gallery";s:24:"ギャラリーの削除";s:24:"admin bar|New subgallery";s:30:"サブギャラリーの作成";s:26:"admin bar|Re-index gallery";s:24:"ギャラリーの削除";s:20:"admin bar|Edit image";s:25:"admin bar|画像の編集";s:22:"admin bar|Delete image";s:15:"画像の削除";s:19:"admin bar|New image";s:15:"画像の登録";s:24:"Could not save user info";s:54:"ギャラリー情報を保存出来ませんでした";s:54:"New password must be between 6 and 16 characters long.";s:78:"新しいパスワードは半角6~16文字の長さにしてください。";s:43:"The new passwords you entered do not match.";s:48:"新しいパスワードが合致しません。";s:72:"The current password you entered does not match the one in the database.";s:93:"入力された現在のパスワードがデータベースの内容と一致しません。";s:53:"The username specified was not found in the database.";s:81:"指定されたユーザ名はデータベースに登録されていません。";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:63:"ユーザ名またはパスワードが正しくありません";s:38:"You must enter a username and password";s:57:"ユーザ名とパスワードを入力してください";s:27:"Could not save gallery info";s:54:"ギャラリー情報を保存出来ませんでした";s:23:"Username already exists";s:36:"ファイルが既に存在します";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:39:"ギャラリーが既に存在します";s:26:"Could not create directory";s:51:"ディレクトリを作成出来ませんでした";s:37:"Cannot delete the top level directory";s:63:"トップレベルのディレクトリは削除出来ません";s:19:"File already exists";s:36:"ファイルが既に存在します";s:21:"Could not upload file";s:57:"ファイルをアップロード出来ませんでした";s:30:"Could not add image to gallery";s:57:"ギャラリーに画像を追加出来ませんでした";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:39:"画像を削除出来ませんでした";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:45:"画像情報を保存できませんでした";s:22:"Could not delete image";s:39:"画像を削除出来ませんでした";s:17:"Select gallery...";s:24:"ギャラリーの削除";s:16:"choose thumbnail";s:24:"サムネイルの選択";s:64:"Choose the filename of the image used to represent this gallery.";s:75:"このギャラリーを表現する画像名を選択してください。";s:14:"thumbnail|None";s:6:"無し";s:16:"thumbnail|Random";s:12:"ランダム";s:12:"edit gallery";s:24:"ギャラリーの編集";s:9:"Thumbnail";s:6:"無し";s:16:"Random
thumbnail";s:28:"ランダム
サムネイル";s:19:"thumbnail|Change...";s:6:"変更";s:12:"Gallery name";s:18:"ギャラリー名";s:11:"Artist name";s:21:"アーティスト名";s:7:"Summary";s:0:"";s:10:"edit image";s:15:"画像の編集";s:5:"Image";s:6:"画像";s:10:"Image name";s:9:"画像名";s:15:"change password";s:24:"パスワードの変更";s:67:"Please choose a new password between 6 and 16 characters in length.";s:75:"新しいパスワードを半角6~16文字で入力してください。";s:17:"Current password:";s:25:"現在のパスワード:";s:13:"New password:";s:25:"新しいパスワード:";s:17:"Confirm password:";s:31:"パスワードをもう一度:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:13:"ユーザ名:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:13:"ユーザ名:";s:9:"Full name";s:18:"ギャラリー名";s:8:"Password";s:16:"パスワード:";s:22:"admin bar|View gallery";s:30:"サブギャラリーの作成";s:26:"admin bar|Change thumbnail";s:30:"サブギャラリーの作成";s:16:"hits table|Graph";s:9:"グラフ";s:15:"hits table|Hits";s:9:"ヒット";s:19:"hits table|Last hit";s:15:"最新ヒット";s:14:"Admin message:";s:28:"管理画面メッセージ:";s:6:"log in";s:12:"ログイン";s:52:"Please enter your admin username and password below.";s:57:"ユーザ名とパスワードを入力してください";s:9:"Username:";s:13:"ユーザ名:";s:9:"Password:";s:16:"パスワード:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:18:"ギャラリー名";s:4:"edit";s:0:"";s:6:"delete";s:15:"画像の削除";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:43:"オプションを選択してください:";s:27:"Manage galleries and images";s:33:"ギャラリーと画像の管理";s:17:"View gallery hits";s:39:"ギャラリーのヒット数を表示";s:15:"Change password";s:24:"パスワードの変更";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:39:"サムネイルキャッシュの消去";s:16:"Log out of admin";s:39:"管理画面よりログアウトする";s:11:"new gallery";s:21:"新規ギャラリー";s:11:"Identifier:";s:16:"ファイル名:";s:9:"new image";s:12:"新規画像";s:74:"This image will not be visible because this gallery contains subgalleries.";s:87:"サブギャラリーが含まれている為、この画像は表示されません。";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:25:"アップロード画像:";s:30:"Use filename of uploaded file.";s:72:"アップロードするファイル名を使用する(半角英数字):";s:27:"Specify different filename:";s:54:"他のファイル名を設定する(半角英数字):";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:25:"アップロード画像:";s:15:"Add remote file";s:24:"リモートファイル";s:13:"URL of image:";s:13:"画像のURL:";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:9:"Japanese ";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.admin.ko.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:21:"°¶·¯¸®°¡ ´õÇØÁ³½À´Ï´Ù";s:18:"An error occurred:";s:20:"¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù:";s:11:"Image added";s:19:"±×¸²ÀÌ ´õÇØÁ³½À´Ï´Ù";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:4:"È®ÀÎ";s:17:"Thumbnail changed";s:23:"¸ñ·Ïº¸±â°¡ ¹Ù²î¾ú½À´Ï´Ù";s:14:"confirm|Cancel";s:4:"Ãë¼Ò";s:15:"Gallery deleted";s:21:"°¶·¯¸®°¡ Áö¿öÁ³½À´Ï´Ù";s:14:"delete gallery";s:13:"°¶·¯¸® Áö¿ì±â";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:95:"°¶·¯¸® %sÀº(´Â) ºñ¾îÀÖÁö ¾Ê½À´Ï´Ù
¸ðµç ÇÏÀ§ °¶·¯¸®¿Í ±× ¾È¿¡ Æ÷ÇÔµÈ ±×¸²À» ¿ÏÀüÈ÷ Áö¿ì°Ú½À´Ï±î?";s:13:"Image deleted";s:19:"±×¸²ÀÌ Áö¿öÁ³½À´Ï´Ù";s:12:"delete image";s:11:"±×¸² Áö¿ì±â";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:50:"%2$s °¶·¯¸®ÀÇ ±×¸² %1$sÀ»(¸¦) Á¤¸»·Î Áö¿ì°Ú½À´Ï±î?";s:12:"User deleted";s:21:"°¶·¯¸®°¡ Áö¿öÁ³½À´Ï´Ù";s:11:"delete user";s:13:"°¶·¯¸® Áö¿ì±â";s:52:"Are you sure you want to permanently delete user %s?";s:50:"%2$s °¶·¯¸®ÀÇ ±×¸² %1$sÀ»(¸¦) Á¤¸»·Î Áö¿ì°Ú½À´Ï±î?";s:27:"Welcome to singapore admin!";s:44:"Singapore °ü¸®ÀÚ ¸ðµå¿¡ ¿À½Å°ÍÀ» ȯ¿µÇÕ´Ï´Ù!";s:22:"Thank you and goodbye!";s:19:"°¨»çÇÕ´Ï´Ù. ¾È³çÈ÷!";s:22:"Thumbnail cache purged";s:28:"¸ñ·Ïº¸±â ij½Ã°¡ Áö¿öÁ³½À´Ï´Ù";s:23:"purge cached thumbnails";s:22:"ij½ÃµÈ ¸ñ·Ïº¸±â Áö¿ì±â";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:50:"¸ðµÎ %s°³ÀÇ Ä³½ÃµÈ ¸ñ·Ïº¸±â¸¦ Á¤¸»·Î Áö¿ì°Ú½À´Ï±î?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:28:"°¶·¯¸® Á¤º¸°¡ ÀúÀåµÇ¾ú½À´Ï´Ù";s:24:"Image saved successfully";s:21:"±×¸²ÀÌ ÀúÀåµÇ¾ú½À´Ï´Ù";s:14:"Password saved";s:23:"¿­¼è±ÛÀÌ ÀúÀåµÇ¾ú½À´Ï´Ù";s:17:"Permissions saved";s:23:"¿­¼è±ÛÀÌ ÀúÀåµÇ¾ú½À´Ï´Ù";s:15:"User info saved";s:28:"°¶·¯¸® Á¤º¸°¡ ÀúÀåµÇ¾ú½À´Ï´Ù";s:14:"admin bar|Back";s:4:"µÚ·Î";s:15:"admin bar|Admin";s:6:"°ü¸®ÀÚ";s:19:"admin bar|Galleries";s:6:"°¶·¯¸®";s:17:"admin bar|Log out";s:8:"·Î±×¾Æ¿ô";s:22:"admin bar|Edit gallery";s:11:"°¶·¯¸® ÆíÁý";s:26:"admin bar|Edit permissions";s:11:"°¶·¯¸® ÆíÁý";s:24:"admin bar|Delete gallery";s:13:"°¶·¯¸® Áö¿ì±â";s:24:"admin bar|New subgallery";s:18:"ÇÏÀ§ °¶·¯¸® ¸¸µé±â";s:26:"admin bar|Re-index gallery";s:13:"°¶·¯¸® Áö¿ì±â";s:20:"admin bar|Edit image";s:9:"±×¸² ÆíÁý";s:22:"admin bar|Delete image";s:11:"±×¸² Áö¿ì±â";s:19:"admin bar|New image";s:7:"»õ ±×¸²";s:24:"Could not save user info";s:32:"°¶·¯¸® Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù";s:54:"New password must be between 6 and 16 characters long.";s:41:"»õ ¿­¼è±ÛÀº 6ÀÚ¿¡¼­ 16ÀÚ ±æÀÌ¿©¾ß ÇÕ´Ï´Ù.";s:43:"The new passwords you entered do not match.";s:35:"»õ ¿­¼è±ÛÀÌ ¼­·Î ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.";s:72:"The current password you entered does not match the one in the database.";s:57:"ÇöÀç ¿­¼è±ÛÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â °Í°ú ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.";s:53:"The username specified was not found in the database.";s:45:"ÁöÁ¤ÇÑ »ç¿ëÀÚ À̸§ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ¾ø½À´Ï´Ù.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:34:"»ç¿ëÀÚ À̸§ ¶Ç´Â ¿­¼è±ÛÀÌ Æ²¸³´Ï´Ù";s:38:"You must enter a username and password";s:40:"»ç¿ëÀÚ À̸§°ú ¿­¼è±ÛÀ» ÀÔ·ÂÇÏ¿©¾ß ÇÕ´Ï´Ù";s:27:"Could not save gallery info";s:32:"°¶·¯¸® Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù";s:23:"Username already exists";s:20:"ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖ½À´Ï´Ù";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:29:"±×·¯ÇÑ °¶·¯¸®°¡ ÀÌ¹Ì ÀÖ½À´Ï´Ù";s:26:"Could not create directory";s:27:"µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù";s:37:"Cannot delete the top level directory";s:34:"ÃÖ»óÀ§ µð·ºÅ丮¸¦ Áö¿ï ¼ö ¾ø½À´Ï´Ù";s:19:"File already exists";s:20:"ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖ½À´Ï´Ù";s:21:"Could not upload file";s:23:"ÆÄÀÏÀ» ¿Ã¸± ¼ö ¾ø½À´Ï´Ù";s:30:"Could not add image to gallery";s:32:"°¶·¯¸®¿¡ ±×¸²À» ´õÇÒ ¼ö ¾ø½À´Ï´Ù";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:23:"±×¸²À» Áö¿ï ¼ö ¾ø½À´Ï´Ù";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:30:"±×¸² Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù";s:22:"Could not delete image";s:23:"±×¸²À» Áö¿ï ¼ö ¾ø½À´Ï´Ù";s:17:"Select gallery...";s:13:"°¶·¯¸® Áö¿ì±â";s:16:"choose thumbnail";s:13:"¸ñ·Ïº¸±â ¼±ÅÃ";s:64:"Choose the filename of the image used to represent this gallery.";s:50:"ÀÌ °¶·¯¸®¸¦ ³ªÅ¸³¾ ±×¸²ÀÇ ÆÄÀÏÀ̸§À» ¼±ÅÃÇϽʽÿÀ.";s:14:"thumbnail|None";s:4:"¾øÀ½";s:16:"thumbnail|Random";s:8:"¾Æ¹«°Å³ª";s:12:"edit gallery";s:11:"°¶·¯¸® ÆíÁý";s:9:"Thumbnail";s:4:"¾øÀ½";s:16:"Random
thumbnail";s:17:"¾Æ¹«°Å³ª
¸ñ·Ïº¸±â";s:19:"thumbnail|Change...";s:9:"¹Ù²Ù±â...";s:12:"Gallery name";s:11:"°¶·¯¸® À̸§";s:11:"Artist name";s:9:"ÀÛ°¡ À̸§";s:7:"Summary";s:0:"";s:10:"edit image";s:9:"±×¸² ÆíÁý";s:5:"Image";s:4:"±×¸²";s:10:"Image name";s:9:"±×¸² À̸§";s:15:"change password";s:13:"¿­¼è±Û ¹Ù²Ù±â";s:67:"Please choose a new password between 6 and 16 characters in length.";s:45:"6ÀÚ¿¡¼­ 16ÀÚ »çÀÌÀÇ »õ ¿­¼è±ÛÀ» ¼±ÅÃÇϽʽÿÀ.";s:17:"Current password:";s:12:"ÇöÀç ¿­¼è±Û:";s:13:"New password:";s:10:"»õ ¿­¼è±Û:";s:17:"Confirm password:";s:12:"¿­¼è±Û È®ÀÎ:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:12:"»ç¿ëÀÚ À̸§:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:12:"»ç¿ëÀÚ À̸§:";s:9:"Full name";s:11:"°¶·¯¸® À̸§";s:8:"Password";s:7:"¿­¼è±Û:";s:22:"admin bar|View gallery";s:18:"ÇÏÀ§ °¶·¯¸® ¸¸µé±â";s:26:"admin bar|Change thumbnail";s:18:"ÇÏÀ§ °¶·¯¸® ¸¸µé±â";s:16:"hits table|Graph";s:11:"¹æ¹® ±×·¡ÇÁ";s:15:"hits table|Hits";s:9:"¹æ¹® ȸ¼ö";s:19:"hits table|Last hit";s:14:"ÃÖ±Ù ¹æ¹® ³¯Â¥";s:14:"Admin message:";s:14:"°ü¸®ÀÚ ¸Þ¼¼Áö:";s:6:"log in";s:6:"·Î±×ÀÎ";s:52:"Please enter your admin username and password below.";s:40:"»ç¿ëÀÚ À̸§°ú ¿­¼è±ÛÀ» ÀÔ·ÂÇÏ¿©¾ß ÇÕ´Ï´Ù";s:9:"Username:";s:12:"»ç¿ëÀÚ À̸§:";s:9:"Password:";s:7:"¿­¼è±Û:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:11:"°¶·¯¸® À̸§";s:4:"edit";s:0:"";s:6:"delete";s:11:"±×¸² Áö¿ì±â";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:20:"ÀÛ¾÷À» ¼±ÅÃÇϽʽÿÀ:";s:27:"Manage galleries and images";s:18:"°¶·¯¸®¿Í ±×¸² °ü¸®";s:17:"View gallery hits";s:21:"°¶·¯¸® ¹æ¹® Åë°è º¸±â";s:15:"Change password";s:13:"¿­¼è±Û ¹Ù²Ù±â";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:22:"ij½ÃµÈ ¸ñ·Ïº¸±â ºñ¿ì±â";s:16:"Log out of admin";s:15:"°ü¸®ÀÚ ·Î±×¾Æ¿ô";s:11:"new gallery";s:9:"»õ °¶·¯¸®";s:11:"Identifier:";s:7:"ÀνÄÀÚ:";s:9:"new image";s:7:"»õ ±×¸²";s:74:"This image will not be visible because this gallery contains subgalleries.";s:71:"ÀÌ °¶·¯¸®°¡ ÇÏÀ§ °¶·¯¸®¸¦ Æ÷ÇÔÇϱ⠶§¹®¿¡ ÀÌ ±×¸²À» º¸¿©ÁÙ ¼ö ¾ø½À´Ï´Ù.";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:17:"¿Ã·ÁÁú ±×¸² ÆÄÀÏ:";s:30:"Use filename of uploaded file.";s:28:"¿Ã·ÁÁø ÆÄÀÏÀÇ À̸§À» ¾¹´Ï´Ù.";s:27:"Specify different filename:";s:27:"´Ù¸¥ ÆÄÀÏÀ̸§À» ÁöÁ¤ÇÕ´Ï´Ù:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:17:"¿Ã·ÁÁú ±×¸² ÆÄÀÏ:";s:15:"Add remote file";s:9:"¿ø°Ý ÆÄÀÏ";s:13:"URL of image:";s:11:"±×¸²ÀÇ URL:";i:0;a:3:{s:7:"charset";s:6:"euc-kr";s:8:"language";s:7:"korean ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.nl.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:60:"U heeft geen permissie voor het uitvoeren van deze operatie.";s:13:"Gallery added";s:16:"Album toegevoegd";s:18:"An error occurred:";s:26:"Er is een fout opgetreden:";s:11:"Image added";s:21:"Afbeelding toegevoegd";s:22:"Archive contents added";s:25:"Archief inhoud toegevoegd";s:10:"confirm|OK";s:2:"Ok";s:17:"Thumbnail changed";s:19:"Thumbnail veranderd";s:14:"confirm|Cancel";s:8:"Annuleer";s:15:"Gallery deleted";s:16:"Album verwijderd";s:14:"delete gallery";s:15:"verwijder album";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:104:"Album %s is niet leeg.
Weet u zeker dat u het samen met de gehele inhoud onherstelbaar wilt verwijderen?";s:13:"Image deleted";s:21:"Afbeelding verwijderd";s:12:"delete image";s:20:"verwijder afbeelding";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:77:"Weet u zeker dat u afbeelding %s onherstelbaar wilt verwijderen uit album %s?";s:12:"User deleted";s:20:"Gebruiker verwijderd";s:11:"delete user";s:19:"verwijder gebruiker";s:52:"Are you sure you want to permanently delete user %s?";s:63:"Weet u zeker dat u gebruiker %s onherstelbaar wilt verwijderen?";s:27:"Welcome to singapore admin!";s:51:"Welkom bij het administratiegedeelte van Singapore!";s:22:"Thank you and goodbye!";s:21:"Bedankt en tot ziens!";s:22:"Thumbnail cache purged";s:25:"Thumbnail-geheugen gewist";s:23:"purge cached thumbnails";s:28:"verwijder thumbnail-geheugen";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:71:"Weet u zeker dat u alle %s thumbnails in het geheugen wilt verwijderen?";s:36:"Gallery re-indexed. %s images added.";s:54:"Album opnieuw geindexeerd. %s afbeeldingen toegevoegd.";s:18:"Gallery info saved";s:33:"Gegevens van het album opgeslagen";s:24:"Image saved successfully";s:32:"Afbeelding met succes opgeslagen";s:14:"Password saved";s:21:"Wachtwoord opgeslagen";s:17:"Permissions saved";s:21:"Permissies opgeslagen";s:15:"User info saved";s:36:"Gegevens van de gebruiker opgeslagen";s:14:"admin bar|Back";s:5:"Terug";s:15:"admin bar|Admin";s:13:"Administratie";s:19:"admin bar|Galleries";s:6:"Albums";s:17:"admin bar|Log out";s:8:"Afmelden";s:22:"admin bar|Edit gallery";s:12:"Bewerk album";s:26:"admin bar|Edit permissions";s:17:"Wijzig permissies";s:24:"admin bar|Delete gallery";s:15:"Verwijder album";s:24:"admin bar|New subgallery";s:14:"Nieuw subalbum";s:26:"admin bar|Re-index gallery";s:17:"Herindexeer album";s:20:"admin bar|Edit image";s:17:"Bewerk afbeelding";s:22:"admin bar|Delete image";s:20:"Verwijder afbeelding";s:19:"admin bar|New image";s:17:"Nieuwe afbeelding";s:24:"Could not save user info";s:58:"De gegevens van de gebruiker konden niet opgeslagen worden";s:54:"New password must be between 6 and 16 characters long.";s:64:"Het nieuwe wachtwoord moet moet tussen 6 en 16 tekens lang zijn.";s:43:"The new passwords you entered do not match.";s:50:"De nieuw ingevoerde wachtwoorden zijn niet gelijk.";s:72:"The current password you entered does not match the one in the database.";s:73:"Het huidig ingevoerd wachtwoord komt niet overeen met dat in de database.";s:53:"The username specified was not found in the database.";s:59:"De ingevoerde gebruikersnaam komt niet voor in de database.";s:31:"Your account has been suspended";s:28:"Uw account is gedeactiveerd.";s:34:"Username and/or password incorrect";s:40:"Gebruikersnaam en/of wachtwoord onjuist.";s:38:"You must enter a username and password";s:48:"U moet een gebruikersnaam en wachtwoord opgeven.";s:27:"Could not save gallery info";s:46:"De albumgegevens konden niet opgeslagen worden";s:23:"Username already exists";s:28:"De gebruikersnaam bestaat al";s:31:"Cannot delete built in accounts";s:40:"Kan ingebouwde accounts niet verwijderen";s:23:"Username not recognised";s:27:"Gebruikersnaam niet herkend";s:22:"Gallery already exists";s:16:"Album bestaat al";s:26:"Could not create directory";s:33:"De map kon niet aangemaakt worden";s:37:"Cannot delete the top level directory";s:38:"De hoofdmap kon niet verwijderd worden";s:19:"File already exists";s:22:"Dit bestand bestaat al";s:21:"Could not upload file";s:37:"Het bestand kon niet ge-upload worden";s:30:"Could not add image to gallery";s:46:"Kon de afbeelding niet aan het album toevoegen";s:38:"Could not find temporary storage space";s:40:"Geen tijdelijke opslagruimte beschikbaar";s:28:"Could not decompress archive";s:34:"Kon het archief niet decomprimeren";s:40:"Some archive contents could not be added";s:63:"Enkele onderdelen van het archief konden niet toegevoegd worden";s:32:"Could not save image information";s:38:"Kon de afbeeldinggegevens niet opslaan";s:22:"Could not delete image";s:34:"Kon de afbeelding niet verwijderen";s:17:"Select gallery...";s:15:"Selecteer album";s:16:"choose thumbnail";s:14:"kies thumbnail";s:64:"Choose the filename of the image used to represent this gallery.";s:74:"Kies de bestandsnaam van de afbeelding welke dit album moet representeren.";s:14:"thumbnail|None";s:4:"Geen";s:16:"thumbnail|Random";s:11:"Willekeurig";s:12:"edit gallery";s:12:"bewerk album";s:9:"Thumbnail";s:9:"Thumbnail";s:16:"Random
thumbnail";s:22:"Willekeurige
thumbnail";s:19:"thumbnail|Change...";s:9:"Wijzig...";s:12:"Gallery name";s:9:"Albumnaam";s:11:"Artist name";s:19:"Gefotografeerd door";s:7:"Summary";s:12:"Samenvatting";s:10:"edit image";s:17:"bewerk afbeelding";s:5:"Image";s:10:"Afbeelding";s:10:"Image name";s:15:"Afbeeldingsnaam";s:15:"change password";s:19:"verander wachtwoord";s:67:"Please choose a new password between 6 and 16 characters in length.";s:60:"Kies a.u.b. een nieuw wachtwoord tussen 6 en 16 tekens lang.";s:17:"Current password:";s:18:"Huidig wachtwoord:";s:13:"New password:";s:17:"Nieuw wachtwoord:";s:17:"Confirm password:";s:20:"Bevestig wachtwoord:";s:16:"edit permissions";s:17:"Wijzig permissies";s:5:"Owner";s:8:"Eigenaar";s:6:"Groups";s:7:"Groepen";s:17:"Group permissions";s:15:"Groeppermissies";s:16:"permissions|Read";s:5:"Lezen";s:16:"permissions|Edit";s:8:"Wijzigen";s:15:"permissions|Add";s:9:"Toevoegen";s:18:"permissions|Delete";s:11:"Verwijderen";s:17:"World permissions";s:19:"'Wereld' permissies";s:15:"user management";s:17:"Gebruikers-beheer";s:8:"Username";s:14:"Gebruikersnaam";s:4:"Type";s:4:"Type";s:13:"Administrator";s:9:"Beheerder";s:4:"User";s:9:"Gebruiker";s:9:"Full name";s:14:"Volledige naam";s:8:"Password";s:10:"Wachtwoord";s:22:"admin bar|View gallery";s:12:"Bekijk album";s:26:"admin bar|Change thumbnail";s:16:"Wijzig thumbnail";s:16:"hits table|Graph";s:7:"Grafiek";s:15:"hits table|Hits";s:4:"Hits";s:19:"hits table|Last hit";s:11:"Laatste hit";s:14:"Admin message:";s:18:"Beheerder bericht:";s:6:"log in";s:9:"aanmelden";s:52:"Please enter your admin username and password below.";s:47:"Geef uw beheerder gebruikersnaam en wachtwoord.";s:9:"Username:";s:15:"Gebruikersnaam:";s:9:"Password:";s:11:"Wachtwoord:";s:61:"If you do not have a username then you may log in as a guest.";s:66:"Indien u geen gebruikersnaam heeft kunt u zich als gast aanmelden.";s:49:"You must be an administrator to access this area.";s:59:"U dient beheerder te zijn om dit gebied te kunnen betreden.";s:6:"Email:";s:7:"E-mail:";s:10:"Full name:";s:15:"Volledige naam:";s:4:"edit";s:6:"wijzig";s:6:"delete";s:9:"verwijder";s:7:"suspend";s:10:"deactiveer";s:9:"unsuspend";s:8:"activeer";s:15:"create new user";s:25:"Maak nieuwe gebruiker aan";s:24:"Please choose an option:";s:15:"Maak een keuze:";s:27:"Manage galleries and images";s:28:"Album- en afbeeldingenbeheer";s:17:"View gallery hits";s:16:"Bekijk albumhits";s:15:"Change password";s:17:"Wijzig wachtwoord";s:10:"My profile";s:12:"Mijn profiel";s:12:"Manage users";s:17:"Beheer gebruikers";s:23:"Purge cached thumbnails";s:33:"Verwijder thumbnails uit geheugen";s:16:"Log out of admin";s:34:"Afmelden uit administratiegedeelte";s:11:"new gallery";s:11:"nieuw album";s:11:"Identifier:";s:10:"Albumnaam:";s:9:"new image";s:17:"nieuwe afbeelding";s:74:"This image will not be visible because this gallery contains subgalleries.";s:69:"Deze afbeelding wordt niet zichtbaar omdat dit album subalbums bevat.";s:18:"Upload single file";s:20:"Voeg een bestand toe";s:21:"Image file to upload:";s:25:"Toe te voegen afbeelding:";s:30:"Use filename of uploaded file.";s:54:"Gebruik de bestandsnaam van de toegevoegde afbeelding.";s:27:"Specify different filename:";s:31:"Vul een andere bestandsnaam in:";s:21:"Upload multiple files";s:27:"Voeg meerdere bestanden toe";s:19:"ZIP file to upload:";s:34:"Toe te voegen ZIP-bestandsarchief:";s:15:"Add remote file";s:19:"Niet-lokaal bestand";s:13:"URL of image:";s:22:"URL van de afbeelding:";i:0;a:3:{s:7:"charset";s:11:"iso-8859-15";s:8:"language";s:18:"Dutch (Nederlands)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.no_nb.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:55:"Du har ikke rettigheter til å utføre denne operasjonen.";s:13:"Gallery added";s:16:"Galleri lagt til";s:18:"An error occurred:";s:5:"Feil:";s:11:"Image added";s:14:"Bilde lagt til";s:22:"Archive contents added";s:30:"Inneholdet av arkivet lagt til";s:10:"confirm|OK";s:5:"Godta";s:17:"Thumbnail changed";s:20:"Miniatyrbilde byttet";s:14:"confirm|Cancel";s:6:"Avbryt";s:15:"Gallery deleted";s:15:"Galleri slettet";s:14:"delete gallery";s:13:"slett galleri";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:116:"Galleriet %s er ikke tomt.
Er du sikker på at du vil slette det og alle undergallerier med bildene disse inneholder?";s:13:"Image deleted";s:13:"Bilde slettet";s:12:"delete image";s:11:"slett bilde";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:75:"Er du sikker pÃ¥ at du vil slette bilde '%s' fra galleriet '%s' for alltid?";s:12:"User deleted";s:14:"Bruker slettet";s:11:"delete user";s:12:"slett bruker";s:52:"Are you sure you want to permanently delete user %s?";s:46:"Er du sikker pÃ¥ at du vil fjerne brukeren %s?";s:27:"Welcome to singapore admin!";s:45:"Velkommen til Singapore administrasjonsmodus!";s:22:"Thank you and goodbye!";s:12:"Takk og adjø";s:22:"Thumbnail cache purged";s:41:"Mellomlager for miniatyrbilder er slettet";s:23:"purge cached thumbnails";s:36:"Slett mellomlager for miniatyrbilder";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:70:"Er du sikker pÃ¥ at du vil slette alle %s mellomlagrede minityrbilder?";s:36:"Gallery re-indexed. %s images added.";s:47:"Galleriet er re-registrert. Bilder %s lagt til.";s:18:"Gallery info saved";s:19:"Galleri-info lagret";s:24:"Image saved successfully";s:12:"Bilde lagret";s:14:"Password saved";s:14:"Passord lagret";s:17:"Permissions saved";s:18:"Rettigheter lagret";s:15:"User info saved";s:17:"Brukerinfo lagret";s:14:"admin bar|Back";s:7:"Tilbake";s:15:"admin bar|Admin";s:13:"Administrator";s:19:"admin bar|Galleries";s:9:"Gallerier";s:17:"admin bar|Log out";s:7:"Logg ut";s:22:"admin bar|Edit gallery";s:15:"Rediger galleri";s:26:"admin bar|Edit permissions";s:19:"Rediger rettigheter";s:24:"admin bar|Delete gallery";s:13:"Slett galleri";s:24:"admin bar|New subgallery";s:17:"Nytt undergalleri";s:26:"admin bar|Re-index gallery";s:20:"Re-registrer galleri";s:20:"admin bar|Edit image";s:13:"Rediger bilde";s:22:"admin bar|Delete image";s:11:"Slett bilde";s:19:"admin bar|New image";s:10:"Nytt bilde";s:24:"Could not save user info";s:35:"Kunne ikke lagre bruker informasjon";s:54:"New password must be between 6 and 16 characters long.";s:43:"Nytt passord mÃ¥ være mellom 6 og 16 tegn.";s:43:"The new passwords you entered do not match.";s:38:"De nye passordene dine samsvarer ikke.";s:72:"The current password you entered does not match the one in the database.";s:61:"Passordet du skrev inn er ikke i samsvar med det i databasen.";s:53:"The username specified was not found in the database.";s:53:"Brukernavnet du skrev inn ble ikke funnet i databasen";s:31:"Your account has been suspended";s:24:"Din bruker er suspendert";s:34:"Username and/or password incorrect";s:35:"Brukernavn og/eller passord er feil";s:38:"You must enter a username and password";s:41:"Du må skrive inn et brukernavn og passord";s:27:"Could not save gallery info";s:36:"Kunne ikke lagre galleri-informasjon";s:23:"Username already exists";s:23:"Brukernavnet eksisterer";s:31:"Cannot delete built in accounts";s:41:"Kan ikke slette forhåndsdefinerte brukere";s:23:"Username not recognised";s:31:"Brukernavnet ble ikke gjenkjent";s:22:"Gallery already exists";s:29:"Galleriet eksisterer allerede";s:26:"Could not create directory";s:25:"Kunne ikke opprette mappe";s:37:"Cannot delete the top level directory";s:29:"Kan ikke slette toppnivåmappe";s:19:"File already exists";s:25:"Filen eksisterer allerede";s:21:"Could not upload file";s:23:"Kunne ikke overføre fil";s:30:"Could not add image to gallery";s:40:"Kunne ikke legge til bilde til galleriet";s:38:"Could not find temporary storage space";s:42:"Kunne ikke finne midlertidig lagringsplass";s:28:"Could not decompress archive";s:28:"Kunne ikke pakke opp arkivet";s:40:"Some archive contents could not be added";s:36:"Noe av arkivet kunne ikke legges til";s:32:"Could not save image information";s:33:"Kunne ikke lagre bildeinformasjon";s:22:"Could not delete image";s:23:"Kunne ikke slette bilde";s:17:"Select gallery...";s:15:"Velg galleri...";s:16:"choose thumbnail";s:18:"velg miniatyrbilde";s:64:"Choose the filename of the image used to represent this gallery.";s:71:"Velg bildefilnavnet som skal brukes for å representere dette galleriet.";s:14:"thumbnail|None";s:5:"Ingen";s:16:"thumbnail|Random";s:9:"Tilfeldig";s:12:"edit gallery";s:15:"Rediger galleri";s:9:"Thumbnail";s:12:"Minityrbilde";s:16:"Random
thumbnail";s:23:"Tilfeldig
miniatyrbilde";s:19:"thumbnail|Change...";s:7:"Bytt...";s:12:"Gallery name";s:12:"Galleri navn";s:11:"Artist name";s:11:"Artist navn";s:7:"Summary";s:10:"Sammendrag";s:10:"edit image";s:13:"rediger bilde";s:5:"Image";s:5:"Bilde";s:10:"Image name";s:10:"Bilde navn";s:15:"change password";s:12:"bytt passord";s:67:"Please choose a new password between 6 and 16 characters in length.";s:56:"Velg et nytt passord som inneholder mellom 6 og 16 tegn.";s:17:"Current password:";s:18:"Nåværende passord:";s:13:"New password:";s:13:"Nytt passord:";s:17:"Confirm password:";s:16:"Bekreft passord:";s:16:"edit permissions";s:19:"rediger rettigheter";s:5:"Owner";s:4:"Eier";s:6:"Groups";s:7:"Grupper";s:17:"Group permissions";s:17:"Grupperettigheter";s:16:"permissions|Read";s:4:"Lese";s:16:"permissions|Edit";s:7:"Rediger";s:15:"permissions|Add";s:8:"Legg til";s:18:"permissions|Delete";s:5:"Slett";s:17:"World permissions";s:16:"Alle rettigheter";s:15:"user management";s:20:"brukeradministrasjon";s:8:"Username";s:10:"Brukernavn";s:4:"Type";s:4:"Type";s:13:"Administrator";s:13:"Administrator";s:4:"User";s:6:"Bruker";s:9:"Full name";s:10:"Fullt navn";s:8:"Password";s:7:"Passord";s:22:"admin bar|View gallery";s:10:"Se galleri";s:26:"admin bar|Change thumbnail";s:18:"Bytt miniatyrbilde";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:5:"Treff";s:19:"hits table|Last hit";s:11:"Siste treff";s:14:"Admin message:";s:26:"Melding fra administrator:";s:6:"log in";s:8:"Logg inn";s:52:"Please enter your admin username and password below.";s:46:"Skriv inn ditt brukernavn og passord nedenfor:";s:9:"Username:";s:11:"Brukernavn:";s:9:"Password:";s:8:"Passord:";s:61:"If you do not have a username then you may log in as a guest.";s:58:"Hvis du ikke har et brukernavn kan du logge inn som gjest.";s:49:"You must be an administrator to access this area.";s:53:"Du mÃ¥ være administrator for Ã¥ nÃ¥ dette omrÃ¥det.";s:6:"Email:";s:7:"E-post:";s:10:"Full name:";s:11:"Fullt navn:";s:4:"edit";s:7:"rediger";s:6:"delete";s:5:"slett";s:7:"suspend";s:9:"suspender";s:9:"unsuspend";s:4:"åpne";s:15:"create new user";s:13:"lag ny bruker";s:24:"Please choose an option:";s:11:"Ta et valg:";s:27:"Manage galleries and images";s:27:"Rediger gallerier og bilder";s:17:"View gallery hits";s:16:"Se galleri treff";s:15:"Change password";s:12:"Bytt passord";s:10:"My profile";s:18:"Mine innstillinger";s:12:"Manage users";s:19:"Administrer brukere";s:23:"Purge cached thumbnails";s:36:"Slett mellomlager for miniatyrbilder";s:16:"Log out of admin";s:30:"Logg ut fra administratormodus";s:11:"new gallery";s:12:"Nytt galleri";s:11:"Identifier:";s:5:"Navn:";s:9:"new image";s:10:"Nytt bilde";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:81:"Dette bilde vil ikke være synlig fordi dette galleriet inneholder undergallerier.";s:18:"Upload single file";s:15:"Last opp en fil";s:21:"Image file to upload:";s:26:"Bildefil du vil laste opp:";s:30:"Use filename of uploaded file.";s:33:"Bruk filnavnet til opplastet fil.";s:27:"Specify different filename:";s:22:"Bruk et annet filnavn:";s:21:"Upload multiple files";s:20:"Last opp flere filer";s:19:"ZIP file to upload:";s:25:"Zip-fil du vil laste opp:";s:15:"Add remote file";s:20:"Legg til ekstern fil";s:13:"URL of image:";s:14:"URL til bilde:";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:10:"Icelandic ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.pl.pmo
0,0 → 1,5
a:175:{s:10:"confirm|OK";s:2:"OK";s:14:"confirm|Cancel";s:6:"Anuluj";s:53:"You do not have permission to perform this operation.";s:42:"Nie masz uprawnieñ aby wykonaæ t± operacje";s:13:"Gallery added";s:22:"Galeria zosta³a dodana";s:18:"An error occurred:";s:14:"Wyst±pi³ b³±d:";s:11:"Image added";s:19:"Obraz zosta³ dodany";s:22:"Archive contents added";s:16:"Zawarto¶æ dodano";s:17:"Thumbnail changed";s:27:"Miniatura zosta³a zmieniona";s:15:"Gallery deleted";s:24:"Galeria zosta³a usuniêta";s:14:"delete gallery";s:12:"Usuñ galeriê";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:126:"Galeria %s nie jest pusta.
Czy jeste¶ pewien, ¿e chcesz bezpowrotnie usun±æ j± oraz wszystkie galerie i obrazy w niej zawarte?";s:13:"Image deleted";s:21:"Obraz zosta³ usuniêty";s:12:"delete image";s:10:"Usuñ obraz";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:71:"Czy jeste¶ pewien, ¿e chcesz bezpowrotnie usun±æ obraz %s z galerii %s?";s:12:"User deleted";s:26:"U¿ytkownik zosta³ usuniêty";s:11:"delete user";s:16:"Usuñ u¿ytkownika";s:52:"Are you sure you want to permanently delete user %s?";s:51:"Czy jeste¶ pewien, ¿e chcesz usun±æ u¿ytkownika %s?";s:27:"Welcome to singapore admin!";s:43:"Witamy w panelu administracyjnym Singapore!";s:22:"Thank you and goodbye!";s:23:"Dziêkujê i do widzenia!";s:32:"Please select one or more items.";s:31:"Proszê wybraæ jeden lub wiêcej.";s:12:"Copy or move";s:19:"Kopiuj lub przenie¶";s:6:"Delete";s:4:"Usuñ";s:18:"%s images deleted.";s:20:"%s obrazów usuniêto.";s:21:"%s galleries deleted.";s:20:"%s galerii usuniêto.";s:13:"Delete Images";s:11:"Usuñ obrazy";s:54:"Are you sure you want to permanently delete %s images?";s:60:"Czy jeste¶ pewien, ¿e chcesz bezpowrotnie usun±æ %s obrazów?";s:16:"Delete Galleries";s:12:"Usuñ galerie";s:57:"Are you sure you want to permanently delete %s galleries?";s:60:"Czy jeste¶ pewien, ¿e chcesz bezpowrotnie usun±æ %s galerii?";s:8:"Re-index";s:8:"Indeksuj";s:44:"Galleries re-indexed. %s total images added.";s:38:"Galeria zindeksowana. %s zdjêæ dodano.";s:19:"%s galleries moved.";s:24:"%s galerii przeniesiono.";s:22:"Thumbnail cache purged";s:32:"Bufor miniatur zosta³ opró¿niony";s:23:"purge cached thumbnails";s:23:"Opró¿nij bufor miniatur";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:81:"Czy jeste¶ pewien, ¿e chcesz usun±æ wszystkie buforowane miniatury? (jest ich %s)";s:36:"Gallery re-indexed. %s images added.";s:38:"Galeria zindeksowana. %s zdjêæ dodano.";s:18:"Gallery info saved";s:38:"Informacja o galerii zosta³a zachowana";s:16:"Image info saved";s:38:"Informacja o galerii zosta³a zachowana";s:14:"Password saved";s:22:"Has³o zosta³o zapisane";s:17:"Permissions saved";s:20:"Uprawnienia zapisane";s:15:"User info saved";s:41:"Informacja o u¿ytkowniku zosta³y zapisane";s:27:"admin bar|Back to galleries";s:17:"Powrót do galerii";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:7:"Galerie";s:17:"admin bar|Log out";s:11:"Wyloguj siê";s:22:"admin bar|Edit gallery";s:14:"Edytuj galeriê";s:24:"admin bar|Access control";s:16:"Kontrola dostêpu";s:24:"admin bar|Delete gallery";s:12:"Usuñ galeriê";s:24:"admin bar|New subgallery";s:15:"Nowa podgaleria";s:26:"admin bar|Re-index gallery";s:16:"Indeksuj galeriê";s:20:"admin bar|Edit image";s:12:"Edytuj obraz";s:22:"admin bar|Delete image";s:10:"Usuñ obraz";s:19:"admin bar|New image";s:10:"Nowy obraz";s:24:"Could not save user info";s:46:"Nie uda³o siê zapisaæ informacji o u¿ytkowniku";s:54:"New password must be between 6 and 16 characters long.";s:66:"Haslo musi sk³adaæ siê z co najmniej 6 i nie wiêcej ni¿ 16 znaków.";s:43:"The new passwords you entered do not match.";s:44:"Podane przez Ciebie nowe has³a s± niezgodne.";s:72:"The current password you entered does not match the one in the database.";s:73:"Podane przez Ciebie bie¿±ce has³o nie zgadza siê z has³em w bazie danych.";s:53:"The username specified was not found in the database.";s:56:"Nazwa u¿ytkownika nie zosta³a znaleziona w bazie danych.";s:31:"Your account has been suspended";s:30:"Twoje konto zosta³o zawieszone";s:34:"Username and/or password incorrect";s:41:"Nieprawid³owe has³o lub nazwa u¿ytkownika";s:38:"You must enter a username and password";s:38:"Musisz podaæ nazwê u¿ytkownika i has³o";s:27:"Could not save gallery info";s:42:"Nie uda³o siê zapisaæ informacji o galerii";s:23:"Username already exists";s:23:"U¿ytkownik ju¿ istnieje";s:84:"Username must be at least 3 characters long and contain only alphanumeric characters";s:86:"Nazwa u¿ytkownika musi mieæ conajmniej 3 znaki i zawieraæ musi conajmniej jedn± cyfre.";s:31:"Cannot delete built in accounts";s:36:"Nie mo¿na wykonaæ operacji kasowania";s:23:"Username not recognised";s:31:"Nazwa u¿ytkownika nierozpoznana";s:44:"One or more galleries could not be reindexed";s:43:"Niektóre sk³adniki nie zosta³y zindeksowane";s:40:"One or more galleries could not be moved";s:41:"Niektóre galerie nie zosta³y przeniesione";s:22:"Gallery already exists";s:20:"Galeria ju¿ istnieje";s:26:"Could not create directory";s:31:"Nie uda³o siê utworzyæ katalogu";s:16:"Object not found";s:20:"Obiekt nieznaleziony";s:37:"Cannot delete the top level directory";s:34:"Nie mo¿na usun±æ katalogu g³ównego";s:42:"One or more galleries could not be deleted";s:38:"Niektóre galerie nie zosta³y skasowane";s:19:"File already exists";s:17:"Plik ju¿ istnieje";s:21:"Could not upload file";s:25:"Nie uda³o siê wgraæ pliku";s:30:"Could not add image to gallery";s:37:"Nie uda³o siê dodaæ obrazu do galerii";s:38:"Could not find temporary storage space";s:24:"Za ma³o miejsca na dysku";s:28:"Could not decompress archive";s:33:"Nie uda³o siê rozpakowaæ archiwum";s:40:"Some archive contents could not be added";s:37:"Niektóre sk³adniki nie zosta³y dodane";s:32:"Could not save image information";s:42:"Nie uda³o siê zapisaæ informacji o obrazie";s:22:"Could not delete image";s:27:"Nie uda³o siê usun±æ obrazu";s:39:"One or more images could not be deleted";s:40:"Niektóre sk³adniki nie zosta³y skasowane";s:16:"Choose Thumbnail";s:17:"Wybierz miniaturê";s:64:"Choose the filename of the image used to represent this gallery.";s:66:"Wybierz nazwê pliku obrazu, który bêdzie reprezentowa³ tê galeriê.";s:14:"thumbnail|None";s:4:"Brak";s:16:"thumbnail|Random";s:6:"Losowo";s:12:"Edit Gallery";s:14:"Edytuj galeriê";s:9:"Thumbnail";s:10:"Miniaturka";s:16:"Random
thumbnail";s:18:"Miniatura
losowana";s:19:"thumbnail|Change...";s:8:"Zmieñ...";s:12:"Gallery name";s:13:"Nazwa galerii";s:11:"Artist name";s:5:"Autor";s:5:"Email";s:6:"e-mail";s:4:"Date";s:4:"Data";s:9:"Copyright";s:17:"Prawa zastrze¿one";s:7:"Summary";s:12:"Podsumowanie";s:11:"Description";s:4:"Opis";s:12:"Save Changes";s:13:"Zapisz zmiany";s:10:"Edit Image";s:12:"Edytuj obraz";s:5:"Image";s:5:"Obraz";s:10:"Image name";s:12:"Nazwa obrazu";s:8:"Location";s:11:"Lokalizacja";s:6:"Camera";s:6:"Aparat";s:4:"Lens";s:8:"Soczewki";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:16:"Obróbka w ciemni";s:20:"Digital manipulation";s:15:"Obróbka cyfrowa";s:15:"Change Password";s:17:"Zmieñ swoje has³o";s:67:"Please choose a new password between 6 and 16 characters in length.";s:75:"Wybierz proszê nowe has³o, maj±ce co najmniej 6 i nie wiêcej ni¿ 16 znaków.";s:17:"Current password:";s:13:"Obecne has³o:";s:13:"New password:";s:11:"Nowe has³o:";s:17:"Confirm password:";s:16:"Potwierd¼ has³o:";s:14:"Access Control";s:16:"Kontrola dostêpu";s:5:"Owner";s:10:"W³a¶ciciel";s:6:"Groups";s:5:"Grupa";s:19:"access control|Read";s:6:"Czytaj";s:17:"permissions|Owner";s:10:"W³a¶ciciel";s:17:"permissions|Group";s:5:"Grupa";s:17:"permissions|World";s:7:"Wszyscy";s:19:"permissions|Inherit";s:6:"Edytuj";s:19:"access control|Edit";s:6:"Edytuj";s:18:"access control|Add";s:5:"Dodaj";s:21:"access control|Delete";s:5:"Kasuj";s:12:"Edit Profile";s:10:"Mój profil";s:8:"Username";s:17:"Nazwa u¿ytkownika";s:9:"Full name";s:13:"Nazwa galerii";s:15:"User Management";s:23:"ustawienia u¿ytkowników";s:4:"Type";s:3:"Typ";s:13:"Administrator";s:13:"Administrator";s:4:"User";s:10:"U¿ytkownik";s:8:"Password";s:6:"Has³o:";s:16:"hits table|Graph";s:6:"Wykres";s:15:"hits table|Hits";s:12:"Ilo¶æ ods³on";s:19:"hits table|Last hit";s:15:"Ostatnia wizyta";s:14:"Admin message:";s:17:"Komunikat admina:";s:6:"Log In";s:11:"Zaloguj siê";s:52:"Please enter your admin username and password below.";s:38:"Musisz podaæ nazwê u¿ytkownika i has³o";s:9:"Username:";s:18:"Nazwa u¿ytkownika:";s:9:"Password:";s:6:"Has³o:";s:61:"If you do not have a username then you may log in as a guest.";s:66:"Je¿eli nie masz za³o¿onego konta, mo¿esz zalogowaæ siê jako guest.";s:15:"Log in as guest";s:19:"Loguj siê jako go¶æ";s:49:"You must be an administrator to access this area.";s:39:"Musisz mieæ uprawnienia administratora.";s:4:"edit";s:6:"Edytuj";s:6:"delete";s:4:"Usuñ";s:7:"suspend";s:6:"Wy³±cz";s:9:"unsuspend";s:5:"W³±cz";s:15:"Create New User";s:15:"nowy u¿ytkownik";s:6:"Create";s:6:"Stwórz";s:24:"Please choose an option:";s:33:"Wybierz proszê, co chcesz zrobiæ:";s:27:"Manage galleries and images";s:30:"Zarz±dzaæ galeriami i obrazami";s:17:"View gallery hits";s:31:"Wy¶wietliæ statystykê odwiedzin";s:15:"Change password";s:19:"Zmieniæ swoje has³o";s:10:"My profile";s:10:"Mój profil";s:12:"Manage users";s:23:"Zarz±dzaj u¿ytkownikami";s:23:"Purge cached thumbnails";s:23:"Opró¿niæ bufor miniatur";s:16:"Log out of admin";s:13:"Wylogowaæ siê";s:18:"Move or Copy Items";s:18:"Przesuñ lub kopiuj";s:4:"Copy";s:6:"Kopiuj";s:4:"Move";s:7:"Przesuñ";s:11:"New Gallery";s:12:"Nowa galeria";s:10:"Identifier";s:14:"Identyfikator:";s:9:"New Image";s:10:"Nowy obraz";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:70:"Ten obrazej nie bedzie widoczny, poniewa¿ galeria zawiera pod-galerie.";s:18:"Upload single file";s:16:"Wgraj jeden plik";s:21:"Image file to upload:";s:29:"Wybierz plik do umieszczenia:";s:11:"Identifier:";s:14:"Identyfikator:";s:30:"Use filename of uploaded file.";s:28:"U¿yj oryginalnej nazwy pliku";s:27:"Specify different filename:";s:23:"Podaj inn± nazwê pliku:";s:21:"Upload multiple files";s:18:"Wgraj kikla plików";s:19:"ZIP file to upload:";s:33:"Wybierz plik ZIP do umieszczenia:";s:15:"Add remote file";s:11:"Plik zdalny";s:13:"URL of image:";s:17:"Adres URL obrazu:";s:14:"With selected:";s:11:"Zaznaczone:";s:22:"admin bar|View gallery";s:18:"Ogl±daj podgalerie";s:26:"admin bar|Change thumbnail";s:16:"Zmieñ podgalerie";i:0;a:3:{s:7:"charset";s:10:"iso-8859-2";s:8:"language";s:15:"Polish (Polski)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.pot
0,0 → 1,776
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2006-05-20 20:17+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
 
#: ../includes/admin.class.php:153
msgid "ERROR"
msgstr ""
 
#: ../includes/admin.class.php:211
#: ../templates/admin_default/changethumbnail.tpl.php:30
#: ../templates/admin_default/confirm.tpl.php:13
#: ../templates/admin_default/multimove.tpl.php:27
msgid "confirm|OK"
msgstr ""
 
#: ../includes/admin.class.php:219
#: ../templates/admin_default/changethumbnail.tpl.php:31
#: ../templates/admin_default/confirm.tpl.php:14
#: ../templates/admin_default/multimove.tpl.php:28
msgid "confirm|Cancel"
msgstr ""
 
#: ../includes/admin.class.php:237 ../includes/admin.class.php:250
#: ../includes/admin.class.php:276 ../includes/admin.class.php:290
#: ../includes/admin.class.php:307 ../includes/admin.class.php:322
#: ../includes/admin.class.php:339 ../includes/admin.class.php:347
#: ../includes/admin.class.php:354 ../includes/admin.class.php:362
#: ../includes/admin.class.php:369 ../includes/admin.class.php:376
#: ../includes/admin.class.php:393 ../includes/admin.class.php:407
#: ../includes/admin.class.php:454 ../includes/admin.class.php:462
#: ../includes/admin.class.php:469 ../includes/admin.class.php:478
#: ../includes/admin.class.php:496 ../includes/admin.class.php:507
#: ../includes/admin.class.php:518 ../includes/admin.class.php:529
#: ../includes/admin.class.php:541 ../includes/admin.class.php:552
#: ../includes/admin.class.php:563 ../includes/admin.class.php:593
msgid "You do not have permission to perform this operation."
msgstr ""
 
#: ../includes/admin.class.php:241
msgid "Gallery added"
msgstr ""
 
#: ../includes/admin.class.php:299
msgid "Delete Gallery"
msgstr ""
 
#: ../includes/admin.class.php:300
#, possible-c-format
msgid ""
"Gallery %s is not empty.\n"
"Are you sure you want to irretrievably delete it and all subgalleries and "
"images it contains?"
msgstr ""
 
#: ../includes/admin.class.php:315
msgid "delete image"
msgstr ""
 
#: ../includes/admin.class.php:316
#, possible-c-format
msgid "Are you sure you want to irretrievably delete image %s from gallery %s?"
msgstr ""
 
#: ../includes/admin.class.php:326
msgid "User deleted"
msgstr ""
 
#: ../includes/admin.class.php:331
msgid "delete user"
msgstr ""
 
#: ../includes/admin.class.php:332
#, possible-c-format
msgid "Are you sure you want to permanently delete user %s?"
msgstr ""
 
#: ../includes/admin.class.php:401
msgid "Please select one or more items."
msgstr ""
 
#: ../includes/admin.class.php:403
msgid "Copy or move"
msgstr ""
 
#: ../includes/admin.class.php:405
msgid "Delete"
msgstr ""
 
#: ../includes/admin.class.php:412
#, possible-c-format
msgid "%s images deleted."
msgstr ""
 
#: ../includes/admin.class.php:415
#, possible-c-format
msgid "%s galleries deleted."
msgstr ""
 
#: ../includes/admin.class.php:422
msgid "Delete Images"
msgstr ""
 
#: ../includes/admin.class.php:423
#, possible-c-format
msgid "Are you sure you want to permanently delete %s images?"
msgstr ""
 
#: ../includes/admin.class.php:425
msgid "Delete Galleries"
msgstr ""
 
#: ../includes/admin.class.php:426
#, possible-c-format
msgid "Are you sure you want to permanently delete %s galleries?"
msgstr ""
 
#: ../includes/admin.class.php:430
msgid "Re-index"
msgstr ""
 
#: ../includes/admin.class.php:432
#, possible-c-format
msgid "Galleries re-indexed. %s total images added."
msgstr ""
 
#: ../includes/admin.class.php:446
#, possible-c-format
msgid "%s galleries moved."
msgstr ""
 
#: ../includes/admin.class.php:482
msgid "Thumbnail cache purged"
msgstr ""
 
#: ../includes/admin.class.php:488
msgid "purge cached thumbnails"
msgstr ""
 
#: ../includes/admin.class.php:489
#, possible-c-format
msgid "Are you sure you want to delete all %s cached thumbnails?"
msgstr ""
 
#: ../includes/admin.class.php:500
#, possible-c-format
msgid "Gallery re-indexed. %s images added."
msgstr ""
 
#: ../includes/admin.class.php:521
msgid "Image info saved"
msgstr ""
 
#: ../includes/admin.class.php:532
msgid "Password saved"
msgstr ""
 
#: ../includes/admin.class.php:544
msgid "Permissions saved"
msgstr ""
 
#: ../includes/admin.class.php:555 ../includes/admin.class.php:596
#: ../includes/admin.class.php:841
msgid "User info saved"
msgstr ""
 
#: ../includes/admin.class.php:641
msgid "admin bar|Back to galleries"
msgstr ""
 
#: ../includes/admin.class.php:643
msgid "admin bar|Admin"
msgstr ""
 
#: ../includes/admin.class.php:644
msgid "admin bar|Galleries"
msgstr ""
 
#: ../includes/admin.class.php:645
msgid "admin bar|Log out"
msgstr ""
 
#: ../includes/admin.class.php:647
#: ../templates/admin_default/viewgallery.tpl.php:30
msgid "admin bar|Edit gallery"
msgstr ""
 
#: ../includes/admin.class.php:648
#: ../templates/admin_default/viewgallery.tpl.php:31
msgid "admin bar|Access control"
msgstr ""
 
#: ../includes/admin.class.php:649
#: ../templates/admin_default/viewgallery.tpl.php:32
msgid "admin bar|Delete gallery"
msgstr ""
 
#: ../includes/admin.class.php:650
#: ../templates/admin_default/viewgallery.tpl.php:33
msgid "admin bar|New subgallery"
msgstr ""
 
#: ../includes/admin.class.php:651
#: ../templates/admin_default/viewgallery.tpl.php:34
msgid "admin bar|Re-index gallery"
msgstr ""
 
#: ../includes/admin.class.php:653
msgid "admin bar|Edit image"
msgstr ""
 
#: ../includes/admin.class.php:654
msgid "admin bar|Delete image"
msgstr ""
 
#: ../includes/admin.class.php:656
msgid "admin bar|New image"
msgstr ""
 
#: ../includes/admin.class.php:680 ../includes/admin.class.php:843
#: ../includes/admin.class.php:869 ../includes/admin.class.php:895
#: ../includes/admin.class.php:913
msgid "Could not save user info"
msgstr ""
 
#: ../includes/admin.class.php:683
msgid "New password must be between 6 and 16 characters long."
msgstr ""
 
#: ../includes/admin.class.php:685
msgid "The new passwords you entered do not match."
msgstr ""
 
#: ../includes/admin.class.php:687
msgid ""
"The current password you entered does not match the one in the database."
msgstr ""
 
#: ../includes/admin.class.php:690
msgid "The username specified was not found in the database."
msgstr ""
 
#: ../includes/admin.class.php:708
msgid "Your account has been suspended"
msgstr ""
 
#: ../includes/admin.class.php:713
msgid "Welcome to singapore admin!"
msgstr ""
 
#: ../includes/admin.class.php:717
msgid "Username and/or password incorrect"
msgstr ""
 
#: ../includes/admin.class.php:719
msgid "You must enter a username and password"
msgstr ""
 
#: ../includes/admin.class.php:730
msgid "Thank you and goodbye!"
msgstr ""
 
#: ../includes/admin.class.php:818
msgid "Gallery info saved"
msgstr ""
 
#: ../includes/admin.class.php:820 ../includes/admin.class.php:956
#: ../includes/admin.class.php:1130
msgid "Could not save gallery info"
msgstr ""
 
#: ../includes/admin.class.php:833
msgid "Username already exists"
msgstr ""
 
#: ../includes/admin.class.php:836
msgid ""
"Username must be at least 3 characters long and contain only alphanumeric "
"characters"
msgstr ""
 
#: ../includes/admin.class.php:857
msgid "Cannot delete built in accounts"
msgstr ""
 
#: ../includes/admin.class.php:872 ../includes/admin.class.php:897
#: ../includes/admin.class.php:915
msgid "Username not recognised"
msgstr ""
 
#: ../includes/admin.class.php:969
#, possible-c-format
msgid "Gallery '%s' could not be reindexed"
msgstr ""
 
#: ../includes/admin.class.php:970
#, possible-c-format
msgid "Gallery '%s' reindexed: %s images added"
msgstr ""
 
#: ../includes/admin.class.php:994
#, possible-c-format
msgid ""
"Unable to copy/move gallery '%s' because the target gallery already exists."
msgstr ""
 
#: ../includes/admin.class.php:996
#, possible-c-format
msgid ""
"Unable to copy/move gallery '%s' because the target is a child of the source."
msgstr ""
 
#: ../includes/admin.class.php:1005
#, possible-c-format
msgid "Unable to copy/move gallery '%s' because the operation failed."
msgstr ""
 
#: ../includes/admin.class.php:1066
msgid "Gallery already exists."
msgstr ""
 
#: ../includes/admin.class.php:1070
#, possible-c-format
msgid "Unable to create directory '%s'"
msgstr ""
 
#: ../includes/admin.class.php:1089 ../includes/admin.class.php:1188
#: ../includes/admin.class.php:1266 ../includes/admin.class.php:1397
#: ../includes/admin.class.php:1438 ../includes/admin.class.php:1467
msgid "Unable to save metadata."
msgstr ""
 
#: ../includes/admin.class.php:1145
#, possible-c-format
msgid "Requested item '%s' appears to be outside the galleries directory"
msgstr ""
 
#: ../includes/admin.class.php:1149
msgid "Cannot delete the root gallery."
msgstr ""
 
#: ../includes/admin.class.php:1153
#, possible-c-format
msgid "Gallery '%s' deleted."
msgstr ""
 
#: ../includes/admin.class.php:1155
#, possible-c-format
msgid "Unable to delete gallery '%s'."
msgstr ""
 
#: ../includes/admin.class.php:1186
msgid "Thumbnail changed."
msgstr ""
 
#: ../includes/admin.class.php:1218 ../includes/admin.class.php:1321
#, possible-c-format
msgid ""
"Uploaded image '%s' has unrecognised extension and image type could not be "
"determined from file contents."
msgstr ""
 
#: ../includes/admin.class.php:1239
msgid "File already exists."
msgstr ""
 
#: ../includes/admin.class.php:1243 ../includes/admin.class.php:1287
msgid "Could not upload file."
msgstr ""
 
#: ../includes/admin.class.php:1263
msgid "Image added"
msgstr ""
 
#: ../includes/admin.class.php:1279
msgid "Unable to find temporary storage space."
msgstr ""
 
#: ../includes/admin.class.php:1295
msgid "Could not decompress archive."
msgstr ""
 
#: ../includes/admin.class.php:1343 ../includes/admin.class.php:1382
#, possible-c-format
msgid "File '%s' already exists."
msgstr ""
 
#: ../includes/admin.class.php:1407
msgid "Archive contents added."
msgstr ""
 
#: ../includes/admin.class.php:1409
msgid "Some archive contents could not be added."
msgstr ""
 
#: ../includes/admin.class.php:1454
#, possible-c-format
msgid "Requested item '%s' appears to be outside the galleries directory."
msgstr ""
 
#: ../includes/admin.class.php:1465
#, possible-c-format
msgid "Image '%s' deleted"
msgstr ""
 
#: ../templates/admin_default/changethumbnail.tpl.php:1
msgid "Choose Thumbnail"
msgstr ""
 
#: ../templates/admin_default/changethumbnail.tpl.php:6
msgid "Choose the filename of the image used to represent this gallery."
msgstr ""
 
#: ../templates/admin_default/changethumbnail.tpl.php:20
msgid "thumbnail|None"
msgstr ""
 
#: ../templates/admin_default/changethumbnail.tpl.php:21
msgid "thumbnail|Random"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:1
msgid "Edit Gallery"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:11
msgid "Thumbnail"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:15
msgid ""
"Random\n"
"thumbnail"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:20
msgid "thumbnail|Change..."
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:24
#: ../templates/admin_default/galleryhits.tpl.php:12
msgid "Gallery name"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:28
#: ../templates/admin_default/editimage.tpl.php:19
msgid "Artist name"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:44
msgid "Summary"
msgstr ""
 
#: ../templates/admin_default/editgallery.tpl.php:53
#: ../templates/admin_default/editimage.tpl.php:64
#: ../templates/admin_default/editpass.tpl.php:22
#: ../templates/admin_default/editpermissions.tpl.php:91
#: ../templates/admin_default/editprofile.tpl.php:24
#: ../templates/admin_default/edituser.tpl.php:31
msgid "Save Changes"
msgstr ""
 
#: ../templates/admin_default/editimage.tpl.php:1
msgid "Edit Image"
msgstr ""
 
#: ../templates/admin_default/editimage.tpl.php:11
msgid "Image"
msgstr ""
 
#: ../templates/admin_default/editimage.tpl.php:15
#: ../templates/admin_default/imagehits.tpl.php:12
msgid "Image name"
msgstr ""
 
#: ../templates/admin_default/editpass.tpl.php:1
msgid "Change Password"
msgstr ""
 
#: ../templates/admin_default/editpass.tpl.php:2
msgid "Please choose a new password between 6 and 16 characters in length."
msgstr ""
 
#: ../templates/admin_default/editpass.tpl.php:9
msgid "Current password:"
msgstr ""
 
#: ../templates/admin_default/editpass.tpl.php:13
msgid "New password:"
msgstr ""
 
#: ../templates/admin_default/editpass.tpl.php:17
msgid "Confirm password:"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:1
msgid "Access Control"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:9
msgid "Owner"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:18
#: ../templates/admin_default/edituser.tpl.php:21
msgid "Groups"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:22
msgid "access control|Read"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:30
#: ../templates/admin_default/editpermissions.tpl.php:47
#: ../templates/admin_default/editpermissions.tpl.php:64
#: ../templates/admin_default/editpermissions.tpl.php:81
msgid "permissions|Owner"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:31
#: ../templates/admin_default/editpermissions.tpl.php:48
#: ../templates/admin_default/editpermissions.tpl.php:65
#: ../templates/admin_default/editpermissions.tpl.php:82
msgid "permissions|Group"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:32
#: ../templates/admin_default/editpermissions.tpl.php:49
#: ../templates/admin_default/editpermissions.tpl.php:66
#: ../templates/admin_default/editpermissions.tpl.php:83
msgid "permissions|World"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:34
#: ../templates/admin_default/editpermissions.tpl.php:51
#: ../templates/admin_default/editpermissions.tpl.php:68
#: ../templates/admin_default/editpermissions.tpl.php:85
msgid "permissions|Inherit"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:39
msgid "access control|Edit"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:56
msgid "access control|Add"
msgstr ""
 
#: ../templates/admin_default/editpermissions.tpl.php:73
msgid "access control|Delete"
msgstr ""
 
#: ../templates/admin_default/editprofile.tpl.php:1
msgid "Edit Profile"
msgstr ""
 
#: ../templates/admin_default/editprofile.tpl.php:8
#: ../templates/admin_default/edituser.tpl.php:15
#: ../templates/admin_default/manageusers.tpl.php:10
#: ../templates/admin_default/manageusers.tpl.php:30
msgid "Username"
msgstr ""
 
#: ../templates/admin_default/editprofile.tpl.php:16
#: ../templates/admin_default/edituser.tpl.php:23
#: ../templates/admin_default/manageusers.tpl.php:18
msgid "Full name"
msgstr ""
 
#: ../templates/admin_default/edituser.tpl.php:1
#: ../templates/admin_default/manageusers.tpl.php:1
msgid "User Management"
msgstr ""
 
#: ../templates/admin_default/edituser.tpl.php:17
msgid "Type"
msgstr ""
 
#: ../templates/admin_default/edituser.tpl.php:18
msgid "Administrator"
msgstr ""
 
#: ../templates/admin_default/edituser.tpl.php:19
msgid "User"
msgstr ""
 
#: ../templates/admin_default/edituser.tpl.php:26
msgid "Password"
msgstr ""
 
#: ../templates/admin_default/galleryhits.tpl.php:12
#: ../templates/admin_default/imagehits.tpl.php:12
msgid "hits table|Graph"
msgstr ""
 
#: ../templates/admin_default/galleryhits.tpl.php:12
#: ../templates/admin_default/imagehits.tpl.php:12
msgid "hits table|Hits"
msgstr ""
 
#: ../templates/admin_default/galleryhits.tpl.php:12
#: ../templates/admin_default/imagehits.tpl.php:12
msgid "hits table|Last hit"
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:1
msgid "Log In"
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:3
msgid "Please enter your admin username and password below."
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:8
msgid "Username:"
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:9
msgid "Password:"
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:19
msgid "If you do not have a username then you may log in as a guest."
msgstr ""
 
#: ../templates/admin_default/login.tpl.php:20
msgid "Log in as guest"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:3
msgid "You must be an administrator to access this area."
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:19
msgid "edit"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:20
msgid "delete"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:21
msgid "suspend"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:21
msgid "unsuspend"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:28
msgid "Create New User"
msgstr ""
 
#: ../templates/admin_default/manageusers.tpl.php:33
#: ../templates/admin_default/newgallery.tpl.php:14
#: ../templates/admin_default/newimage.tpl.php:48
msgid "Create"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:1
msgid "Please choose an option:"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:4
msgid "Manage galleries and images"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:5
msgid "View gallery hits"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:7
msgid "Change password"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:8
msgid "My profile"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:11
msgid "Manage users"
msgstr ""
 
#: ../templates/admin_default/menu.tpl.php:14
msgid "Log out of admin"
msgstr ""
 
#: ../templates/admin_default/multimove.tpl.php:1
msgid "Move or Copy Items"
msgstr ""
 
#: ../templates/admin_default/multimove.tpl.php:24
msgid "Copy"
msgstr ""
 
#: ../templates/admin_default/multimove.tpl.php:25
msgid "Move"
msgstr ""
 
#: ../templates/admin_default/newgallery.tpl.php:1
msgid "New Gallery"
msgstr ""
 
#: ../templates/admin_default/newgallery.tpl.php:9
msgid "Identifier"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:1
msgid "New Image"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:3
msgid ""
"This image will not be visible because this gallery is not an album: it "
"contains child galleries."
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:13
msgid "Upload single file"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:17
msgid "Image file to upload:"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:22
msgid "Identifier:"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:24
msgid "Use filename of uploaded file."
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:25
msgid "Specify different filename:"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:30
msgid "Upload multiple files"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:34
msgid "ZIP file to upload:"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:39
msgid "Add remote file"
msgstr ""
 
#: ../templates/admin_default/newimage.tpl.php:43
msgid "URL of image:"
msgstr ""
 
#: ../templates/admin_default/viewalbum.tpl.php:16
#: ../templates/admin_default/viewgallery.tpl.php:16
msgid "With selected:"
msgstr ""
 
#: ../templates/admin_default/viewgallery.tpl.php:29
msgid "admin bar|View gallery"
msgstr ""
 
#: ../templates/admin_default/viewgallery.tpl.php:36
msgid "admin bar|Change thumbnail"
msgstr ""
/photogallery/locale/singapore.admin.pt_br.pmo
0,0 → 1,5
a:138:{s:53:"You do not have permission to perform this operation.";s:85:"Voc&ecirc; n&atilde;o tem permiss&atilde;o para executar essa opera&ccedil;&atilde;o.";s:13:"Gallery added";s:18:"Galeria adicionada";s:18:"An error occurred:";s:14:"Erro ocorrido:";s:11:"Image added";s:17:"Imagem adicionada";s:22:"Archive contents added";s:48:"Informa&ccedil;&otilde;es do arquivo adicionadas";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:18:"Miniatura alterada";s:14:"confirm|Cancel";s:8:"Cancelar";s:15:"Gallery deleted";s:16:"Galeria removida";s:14:"delete gallery";s:15:"remover galeria";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:128:"Galeria %s n&atilde;o est&aacute; vazia.
Voc&ecirc; realmente deseja remov&ecirc;-la junto com todas suas subgalerias e imagens?";s:13:"Image deleted";s:15:"Imagem removida";s:12:"delete image";s:14:"remover imagem";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:62:"Voc&ecirc; realmente deseja remover a imagem %s da galeria %s?";s:12:"User deleted";s:23:"Usu&aacute;rio removido";s:11:"delete user";s:22:"remover usu&aacute;rio";s:52:"Are you sure you want to permanently delete user %s?";s:72:"Voc&ecirc; realmente deseja remover permanentemente o usu&aacute;rio %s?";s:27:"Welcome to singapore admin!";s:60:"Bem vindo &agrave; administra&ccedil;&atilde;o do singapore!";s:22:"Thank you and goodbye!";s:20:"Obrigado e até logo!";s:22:"Thumbnail cache purged";s:25:"Cache de miniaturas limpo";s:23:"purge cached thumbnails";s:26:"limpar cache de miniaturas";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:67:"Voc&ecirc; realmente deseja limpar todas as %s miniaturas em cache?";s:36:"Gallery re-indexed. %s images added.";s:43:"Galeria reindexada. %s imagens adicionadas.";s:18:"Gallery info saved";s:53:"Informa&ccedil;&otilde;es da galeria salvas com exito";s:24:"Image saved successfully";s:24:"Imagem salva com sucesso";s:14:"Password saved";s:11:"Senha salva";s:17:"Permissions saved";s:34:"Permiss&otilde;es salvas com exito";s:15:"User info saved";s:60:"Informa&ccedil;&otilde;es do usu&aacute;rio salvas com exito";s:14:"admin bar|Back";s:6:"Voltar";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:8:"Galerias";s:17:"admin bar|Log out";s:7:"Log out";s:22:"admin bar|Edit gallery";s:14:"Editar galeria";s:26:"admin bar|Edit permissions";s:24:"Editar permiss&otilde;es";s:24:"admin bar|Delete gallery";s:15:"Remover galeria";s:24:"admin bar|New subgallery";s:15:"Nova subgaleria";s:26:"admin bar|Re-index gallery";s:17:"Reindexar galeria";s:20:"admin bar|Edit image";s:13:"Editar imagem";s:22:"admin bar|Delete image";s:14:"Remover imagem";s:19:"admin bar|New image";s:11:"Nova imagem";s:24:"Could not save user info";s:84:"N&atilde;o foi poss&iacute;vel salvar as informa&ccedil;&otilde;es do usu&aacute;rio";s:54:"New password must be between 6 and 16 characters long.";s:46:"A nova senha deve ter entre 6 e 16 caracteres.";s:43:"The new passwords you entered do not match.";s:55:"As novas senhas digitadas n&atilde;o s&atilde;o iguais.";s:72:"The current password you entered does not match the one in the database.";s:86:"A senha atual digitada n&atilde;o correspodente &agrave; encontrada no banco de dados.";s:53:"The username specified was not found in the database.";s:71:"O usu&aacute;rio informado n&atilde;o foi encontrado no banco de dados.";s:31:"Your account has been suspended";s:30:"Sua conta est&aacute; suspensa";s:34:"Username and/or password incorrect";s:35:"Usu&aacute;rio e/ou senha incorreta";s:38:"You must enter a username and password";s:49:"Voc&ecirc; deve entrar com usu&aacute;rio e senha";s:27:"Could not save gallery info";s:77:"N&atilde;o foi poss&iacute;vel salvar as informa&ccedil;&otilde;es da galeria";s:23:"Username already exists";s:34:"Usu&aacute;rio j&aacute; existente";s:31:"Cannot delete built in accounts";s:53:"N&atilde; &eacute; possivel remover contas do sistema";s:23:"Username not recognised";s:37:"Usu&aacute;rio n&atilde;o reconhecido";s:22:"Gallery already exists";s:27:"Galeria j&aacute; existente";s:26:"Could not create directory";s:55:"N&atilde;o foi poss&iacute;vel criar o diret&oacute;rio";s:37:"Cannot delete the top level directory";s:67:"N&atilde;o &eacute; poss&iacute;vel deletar o diret&oacute;rio raiz";s:19:"File already exists";s:27:"Arquivo j&aacute; existente";s:21:"Could not upload file";s:54:"N&atilde;o foi poss&iacute;vel fazer upload do arquivo";s:30:"Could not add image to gallery";s:66:"N&atilde;o foi poss&iacute;vel adicionar a imagem &agrave; galeria";s:38:"Could not find temporary storage space";s:84:"N&atilde;o foi possivel encontrar o espa&ccedil;o tempor&aacute;rio de amarzenamento";s:28:"Could not decompress archive";s:46:"N&atilde;o foi possivel descompactar o arquivo";s:40:"Some archive contents could not be added";s:73:"Algumas informa&ccedil;&otilde;es do arquivo n&atilde;o foram adicionadas";s:32:"Could not save image information";s:79:"N&atilde;o foi poss&iacute;vel salvar as informa&ccedil;&otilde;es desta imagem";s:22:"Could not delete image";s:50:"N&atilde;o foi poss&iacute;vel remover esta imagem";s:16:"choose thumbnail";s:21:"escolha uma miniatura";s:64:"Choose the filename of the image used to represent this gallery.";s:57:"Informe a imagem utilizada para representar esta galeria.";s:14:"thumbnail|None";s:7:"Nenhuma";s:16:"thumbnail|Random";s:16:"Aleat&oacute;ria";s:12:"edit gallery";s:14:"editar galeria";s:9:"Thumbnail";s:9:"Miniatura";s:16:"Random
thumbnail";s:28:"Miniaturas
aleat&oacute;rias";s:19:"thumbnail|Change...";s:10:"Alterar...";s:12:"Gallery name";s:15:"Nome da galeria";s:11:"Artist name";s:15:"Nome do artista";s:7:"Summary";s:14:"Sum&aacute;rio";s:10:"edit image";s:13:"editar imagem";s:5:"Image";s:6:"Imagem";s:10:"Image name";s:14:"Nome da imagem";s:15:"change password";s:13:"alterar senha";s:67:"Please choose a new password between 6 and 16 characters in length.";s:58:"Por favor, informe uma nova senha entre 6 e 16 caracteres.";s:17:"Current password:";s:12:"Senha atual:";s:13:"New password:";s:11:"Nova senha:";s:17:"Confirm password:";s:16:"Confirmar senha:";s:16:"edit permissions";s:24:"editar permiss&otilde;es";s:5:"Owner";s:4:"Dono";s:6:"Groups";s:6:"Grupos";s:17:"Group permissions";s:26:"Permiss&otilde;es do grupo";s:16:"permissions|Read";s:3:"Ler";s:16:"permissions|Edit";s:6:"Editar";s:15:"permissions|Add";s:9:"Adicionar";s:18:"permissions|Delete";s:7:"Remover";s:17:"World permissions";s:26:"Permiss&otilde;es de todos";s:15:"user management";s:27:"controle de usu&aacute;rios";s:8:"Username";s:14:"Usu&aacute;rio";s:4:"Type";s:4:"Tipo";s:13:"Administrator";s:13:"Administrador";s:4:"User";s:14:"Usu&aacute;rio";s:9:"Full name";s:13:"Nome completo";s:8:"Password";s:5:"Senha";s:22:"admin bar|View gallery";s:11:"Ver galeria";s:26:"admin bar|Change thumbnail";s:17:"Alterar miniatura";s:16:"hits table|Graph";s:14:"Gr&aacute;fico";s:15:"hits table|Hits";s:4:"Hits";s:19:"hits table|Last hit";s:17:"&Uacute;ltimo hit";s:14:"Admin message:";s:15:"Admin mensagem:";s:6:"log in";s:6:"log In";s:52:"Please enter your admin username and password below.";s:72:"Por favor, entre abaixo com o seu usu&aacute;rio e senha administrativa.";s:9:"Username:";s:15:"Usu&aacute;rio:";s:9:"Password:";s:6:"Senha:";s:61:"If you do not have a username then you may log in as a guest.";s:76:"Se voc&ecirc; n&atilde;o tem um usu&aacute;rio deve-se logar como convidado.";s:49:"You must be an administrator to access this area.";s:64:"Voc&ecirc; deve ser administrador para acessar essa &aacute;rea.";s:6:"Email:";s:6:"Email:";s:10:"Full name:";s:14:"Nome completo:";s:4:"edit";s:6:"editar";s:6:"delete";s:7:"remover";s:7:"suspend";s:9:"desativar";s:9:"unsuspend";s:6:"ativar";s:15:"create new user";s:25:"criar novo usu&aacute;rio";s:24:"Please choose an option:";s:43:"Por favor, escolha uma op&ccedil;&atilde;o:";s:27:"Manage galleries and images";s:30:"Controle de galerias e imagens";s:17:"View gallery hits";s:40:"Veja as estat&iacute;sticas das galerias";s:15:"Change password";s:13:"Alterar senha";s:10:"My profile";s:10:"Meu perfil";s:12:"Manage users";s:27:"Controle de usu&aacute;rios";s:23:"Purge cached thumbnails";s:26:"Limpar cache de miniaturas";s:16:"Log out of admin";s:16:"Log out do admin";s:11:"new gallery";s:12:"nova galeria";s:11:"Identifier:";s:14:"Identificador:";s:9:"new image";s:11:"nova imagem";s:74:"This image will not be visible because this gallery contains subgalleries.";s:86:"Essa imagem n&atilde;o pode ser exibida porque essa galeria cont&eacute;m subgalerias.";s:18:"Upload single file";s:27:"Enviar arquivo &uacute;nico";s:21:"Image file to upload:";s:21:"Imagem a ser enviada:";s:30:"Use filename of uploaded fil.";s:34:"Utilizar o nome da imagem enviada.";s:27:"Specify different filename:";s:27:"Informar um nome diferente:";s:21:"Upload multiple files";s:29:"Enviar v&aacute;rios arquivos";s:19:"ZIP file to upload:";s:19:"Enviar arquivo ZIP:";s:15:"Add remote file";s:24:"Adicionar arquivo remoto";s:13:"URL of image:";s:14:"URL da imagem:";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:19:"Portuguese (Brazil)";s:6:"plural";s:25:"$nplurals=2;$plural=$n>1;";}}
/photogallery/locale/singapore.admin.ro.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:16:"Galerie adaugata";s:18:"An error occurred:";s:7:"Eroare:";s:11:"Image added";s:16:"Imagina adaugata";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:19:"Miniaturi schimbate";s:14:"confirm|Cancel";s:7:"Renunta";s:15:"Gallery deleted";s:15:"Galerie stearsa";s:14:"delete gallery";s:14:"sterge galerie";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:78:"Galeria %s nu e goala.
Vrei sa stergi si imaginile si subgaleriile continute?";s:13:"Image deleted";s:15:"Imagine stearsa";s:12:"delete image";s:14:"sterge imagine";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:67:"Esti sigur ca vrei sa stergi irevocabil imaginea %s din galeria %s?";s:12:"User deleted";s:15:"Galerie stearsa";s:11:"delete user";s:14:"sterge galerie";s:52:"Are you sure you want to permanently delete user %s?";s:67:"Esti sigur ca vrei sa stergi irevocabil imaginea %s din galeria %s?";s:27:"Welcome to singapore admin!";s:40:"Bine ai venit in panoul de administrare!";s:22:"Thank you and goodbye!";s:12:"La revedere!";s:22:"Thumbnail cache purged";s:28:"Miniaturile din cache sterse";s:23:"purge cached thumbnails";s:28:"sterge miniaturile din cache";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:52:"Sigur vrei sa stergi toate %s miniaturile din cache?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:18:"Informatie salvata";s:24:"Image saved successfully";s:25:"Imagine salvata cu succes";s:14:"Password saved";s:14:"Parola salvata";s:17:"Permissions saved";s:14:"Parola salvata";s:15:"User info saved";s:18:"Informatie salvata";s:14:"admin bar|Back";s:6:"Inapoi";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:7:"Galerii";s:17:"admin bar|Log out";s:6:"Iesire";s:22:"admin bar|Edit gallery";s:16:"Editeaza galerie";s:26:"admin bar|Edit permissions";s:16:"Editeaza galerie";s:24:"admin bar|Delete gallery";s:14:"Sterge galerie";s:24:"admin bar|New subgallery";s:15:"subgalerie noua";s:26:"admin bar|Re-index gallery";s:14:"Sterge galerie";s:20:"admin bar|Edit image";s:16:"Editeaza imagine";s:22:"admin bar|Delete image";s:14:"Sterge imagine";s:19:"admin bar|New image";s:12:"Imagine noua";s:24:"Could not save user info";s:38:"Nu pot salva informatia despre galerie";s:54:"New password must be between 6 and 16 characters long.";s:47:"Parola trebuie sa aiba intre 6 si 16 caractere.";s:43:"The new passwords you entered do not match.";s:35:"Parolele introduse nu se potrivesc.";s:72:"The current password you entered does not match the one in the database.";s:58:"Parola introdusa nu se potriveste cu cea din baza de date.";s:53:"The username specified was not found in the database.";s:44:"Utilizatorul nu a fost gasit in baza de date";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:34:"Utilizator si/sau parola incorecta";s:38:"You must enter a username and password";s:54:"Trebuie sa introduci un nume de utilizator si o parola";s:27:"Could not save gallery info";s:38:"Nu pot salva informatia despre galerie";s:23:"Username already exists";s:20:"Fisierul exista deja";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:19:"Galeria deja exista";s:26:"Could not create directory";s:19:"Nu pot crea galeria";s:37:"Cannot delete the top level directory";s:24:"Nu pot sterge directorul";s:19:"File already exists";s:20:"Fisierul exista deja";s:21:"Could not upload file";s:0:"";s:30:"Could not add image to gallery";s:33:"Nu pot adauga imaginea la galerie";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:22:"Nu pot sterge imaginea";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:38:"Nu pot salva informatia despre imagine";s:22:"Could not delete image";s:22:"Nu pot sterge imaginea";s:17:"Select gallery...";s:14:"sterge galerie";s:16:"choose thumbnail";s:15:"alege miniatura";s:64:"Choose the filename of the image used to represent this gallery.";s:66:"Alege numele de fisier al imaginii care vrei sa reprezinte galeria";s:14:"thumbnail|None";s:8:"Niciunul";s:16:"thumbnail|Random";s:7:"Aleator";s:12:"edit gallery";s:15:"diteaza galeria";s:9:"Thumbnail";s:8:"Niciunul";s:16:"Random
thumbnail";s:20:"Miniatura
aleatoare";s:19:"thumbnail|Change...";s:10:"Schimba...";s:12:"Gallery name";s:15:"Numele galeriei";s:11:"Artist name";s:17:"Numele artistului";s:7:"Summary";s:0:"";s:10:"edit image";s:16:"editeaza imagine";s:5:"Image";s:7:"Imagine";s:10:"Image name";s:15:"Numele imaginii";s:15:"change password";s:14:"schimba parola";s:67:"Please choose a new password between 6 and 16 characters in length.";s:63:"Te rog alege o parola noua cu o lungime intre 6 si 16 caractere";s:17:"Current password:";s:15:"Parola curenta:";s:13:"New password:";s:12:"Parola noua:";s:17:"Confirm password:";s:16:"Confirma parola:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:5:"User:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:5:"User:";s:9:"Full name";s:15:"Numele galeriei";s:8:"Password";s:7:"Parola:";s:22:"admin bar|View gallery";s:15:"subgalerie noua";s:26:"admin bar|Change thumbnail";s:15:"subgalerie noua";s:16:"hits table|Graph";s:6:"Grafic";s:15:"hits table|Hits";s:7:"Hit-uri";s:19:"hits table|Last hit";s:11:"Ultimul hit";s:14:"Admin message:";s:26:"Mesajul administratorului:";s:6:"log in";s:12:"Administrare";s:52:"Please enter your admin username and password below.";s:54:"Trebuie sa introduci un nume de utilizator si o parola";s:9:"Username:";s:5:"User:";s:9:"Password:";s:7:"Parola:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:15:"Numele galeriei";s:4:"edit";s:0:"";s:6:"delete";s:14:"sterge imagine";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:16:"Alege o optiune:";s:27:"Manage galleries and images";s:36:"Administreaza galeriile si imaginile";s:17:"View gallery hits";s:25:"Vezi hit-urile galeriilor";s:15:"Change password";s:14:"Schimba parola";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:28:"Sterge miniaturile din cache";s:16:"Log out of admin";s:6:"Iesire";s:11:"new gallery";s:12:"galerie noua";s:11:"Identifier:";s:14:"Identificator:";s:9:"new image";s:12:"imagine noua";s:74:"This image will not be visible because this gallery contains subgalleries.";s:57:"Imaginea nu e vizibila, pentru ca galeria are subgalerii.";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:18:"Fisier de uploadat";s:30:"Use filename of uploaded file.";s:36:"Foloseste numele fisierlui uploadat.";s:27:"Specify different filename:";s:29:"Specifica alt nume de fisier:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:18:"Fisier de uploadat";s:15:"Add remote file";s:13:"Fisier remote";s:13:"URL of image:";s:15:"Link la imagine";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:9:"Romanian ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.sk.pmo
0,0 → 1,5
a:166:{s:5:"ERROR";s:5:"CHYBA";s:10:"confirm|OK";s:2:"OK";s:14:"confirm|Cancel";s:8:"Zrušiť";s:53:"You do not have permission to perform this operation.";s:49:"Na vykonanie tejto operácie nemáte oprávnenie.";s:13:"Gallery added";s:17:"Galéria pridaná";s:14:"Delete Gallery";s:16:"Zmazať galériu";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:136:"Galéria %s nie je prázdna.
Naozaj ju chcete nenávratne vymazať vrátane všetkých vnorených galérií a obrázkov ktoré obsahuje?";s:12:"delete image";s:16:"zmazať obrázok";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:61:"Naozaj chcete nenávratne vymazať obrázok %s z galérie %s?";s:12:"User deleted";s:21:"Užívateľ vymazaný";s:11:"delete user";s:20:"zmazať užívateľa";s:52:"Are you sure you want to permanently delete user %s?";s:48:"Naozaj chcete natrvalo vymazať užívateľa %s?";s:32:"Please select one or more items.";s:46:"Zvoľte prosím jednu alebo viacero položiek.";s:12:"Copy or move";s:26:"Kopírovať alebo vymazať";s:6:"Delete";s:8:"Vymazať";s:18:"%s images deleted.";s:25:"%s obrázkov vymazaných.";s:21:"%s galleries deleted.";s:25:"%s galérií vymazaných.";s:13:"Delete Images";s:16:"Zmazať obrázky";s:54:"Are you sure you want to permanently delete %s images?";s:45:"Naozaj chcete natrvalo vymazať %s obrázkov?";s:16:"Delete Galleries";s:16:"Zmazať galérie";s:57:"Are you sure you want to permanently delete %s galleries?";s:45:"Naozaj chcete natrvalo vymazať %s galérií?";s:8:"Re-index";s:13:"Re-indexovať";s:44:"Galleries re-indexed. %s total images added.";s:54:"Galérie reindexované. Spolu pridaných %s obrázkov.";s:19:"%s galleries moved.";s:26:"%s galérií presunutých.";s:22:"Thumbnail cache purged";s:27:"Cache náhľadov vymazaná.";s:23:"purge cached thumbnails";s:25:"vymazať cache náhľadov";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:56:"Naozaj chcete z cache vymazať všetkých %s náhľadov?";s:36:"Gallery re-indexed. %s images added.";s:48:"Galéria reindexovaná. Pridaných %s obrázkov.";s:16:"Image info saved";s:32:"Informácie o obrázku uložené";s:14:"Password saved";s:15:"Heslo uložené";s:17:"Permissions saved";s:21:"Oprávnenia uložené";s:15:"User info saved";s:38:"Informácie o užívateľovi uložené";s:27:"admin bar|Back to galleries";s:18:"Späť na galérie";s:15:"admin bar|Admin";s:5:"Admin";s:19:"admin bar|Galleries";s:8:"Galérie";s:17:"admin bar|Log out";s:13:"Odhlásiť sa";s:22:"admin bar|Edit gallery";s:17:"Upraviť galériu";s:24:"admin bar|Access control";s:18:"Správa prístupov";s:24:"admin bar|Delete gallery";s:17:"Vymazať galériu";s:24:"admin bar|New subgallery";s:23:"Nová vnorená galéria";s:26:"admin bar|Re-index gallery";s:22:"Re-indexovať galériu";s:20:"admin bar|Edit image";s:17:"Upraviť obrázok";s:22:"admin bar|Delete image";s:17:"Vymazať obrázok";s:19:"admin bar|New image";s:14:"Nový obrázok";s:24:"Could not save user info";s:51:"Nepodarilo sa uložiť informácie o užívateľovi";s:54:"New password must be between 6 and 16 characters long.";s:47:"Nové heslo musí byť dlhé od 6 do 16 znakov.";s:43:"The new passwords you entered do not match.";s:45:"Nové heslá ktoré ste zadali sa nezhodujú.";s:72:"The current password you entered does not match the one in the database.";s:68:"Aktuálne heslo ktoré ste zadali sa nezhoduje s heslom v databáze.";s:53:"The username specified was not found in the database.";s:61:"Dané užívateľské meno sa v databáze nepodarilo nájsť.";s:31:"Your account has been suspended";s:30:"Váš účet bol pozastavený.";s:27:"Welcome to singapore admin!";s:37:"Vitajte v správe systému singapore!";s:34:"Username and/or password incorrect";s:49:"Užívateľské meno a/alebo heslo sú nesprávne";s:38:"You must enter a username and password";s:43:"Musíte zadať užívateľské meno a heslo";s:22:"Thank you and goodbye!";s:22:"Ďakujeme a dovidenia!";s:18:"Gallery info saved";s:32:"Informácie o galérii uložené";s:27:"Could not save gallery info";s:45:"Nepodarilo sa uložiť informácie o galérii";s:23:"Username already exists";s:33:"Užívateľské meno už existuje";s:84:"Username must be at least 3 characters long and contain only alphanumeric characters";s:21:"Užívateľské meno ";s:31:"Cannot delete built in accounts";s:36:"Zabudované účty nemožno vymazať";s:23:"Username not recognised";s:45:"Nepodarilo sa rozpoznať užívateľské meno";s:35:"Gallery '%s' could not be reindexed";s:41:"Galériu '%s' sa nepodarilo re-indexovať";s:39:"Gallery '%s' reindexed: %s images added";s:53:"Galéria '%s' re-indexovaná: pridaných %s obrázkov";s:75:"Unable to copy/move gallery '%s' because the target gallery already exists.";s:93:"Galériu '%s' sa nepodarilo skopírovať/presunúť pretože cieľová galéria už existuje.";s:77:"Unable to copy/move gallery '%s' because the target is a child of the source.";s:94:"Galériu '%s' sa nepodarilo skopírovať/presunúť pretože cieľom je jej vnorená galéria.";s:62:"Unable to copy/move gallery '%s' because the operation failed.";s:79:"Galériu '%s' sa nepodarilo skopírovať/presunúť pretože operácia zlihala.";s:23:"Gallery already exists.";s:22:"Galéria už existuje.";s:31:"Unable to create directory '%s'";s:37:"Nepodarilo sa vytvoriť adresár '%s'";s:24:"Unable to save metadata.";s:32:"Nepodarilo sa uložiť metadata.";s:65:"Requested item '%s' appears to be outside the galleries directory";s:68:"Požadovaná položka '%s' je pravdepodobne mimo adresára galérií";s:31:"Cannot delete the root gallery.";s:37:"Kmeňovú galériu nemožno vymazať.";s:21:"Gallery '%s' deleted.";s:24:"Galéria '%s' vymazaná.";s:30:"Unable to delete gallery '%s'.";s:37:"Galériu '%s' sa nepodarilo vymazať.";s:18:"Thumbnail changed.";s:18:"Náhľad zmenený.";s:105:"Uploaded image '%s' has unrecognised extension and image type could not be determined from file contents.";s:104:"Nahratý obrázok '%s' má nerozpoznanú príponu a typ obrázku sa nepodarilo určiť z obsahu súboru.";s:20:"File already exists.";s:20:"Súbor už existuje.";s:22:"Could not upload file.";s:29:"Súbor sa nepodarilo nahrať.";s:11:"Image added";s:17:"Obrázok pridaný";s:39:"Unable to find temporary storage space.";s:59:"Nepodarilo sa nájsť prístor na dočasné uloženie dát.";s:29:"Could not decompress archive.";s:37:"Archív sa nepodarilo dekomprimovať.";s:25:"File '%s' already exists.";s:25:"Súbor '%s' už existuje.";s:23:"Archive contents added.";s:24:"Obsah archívu pridaný.";s:41:"Some archive contents could not be added.";s:45:"Časť obsahu archívu sa nepodarilo pridať.";s:66:"Requested item '%s' appears to be outside the galleries directory.";s:69:"Požadovaná položka '%s' je pravdepodobne mimo adresára galérií.";s:18:"Image '%s' deleted";s:23:"Obrázok '%s' vymazaný";s:16:"Choose Thumbnail";s:16:"Zvoľte náhľad";s:64:"Choose the filename of the image used to represent this gallery.";s:74:"Zvoľte názov súboru obrázku, ktorý má reprezentovať túto galériu.";s:14:"thumbnail|None";s:7:"Žiaden";s:16:"thumbnail|Random";s:9:"Náhodný";s:12:"Edit Gallery";s:17:"Upraviť galériu";s:9:"Thumbnail";s:8:"Náhľad";s:16:"Random
thumbnail";s:18:"Náhodný
náhľad";s:19:"thumbnail|Change...";s:10:"Zmeniť...";s:12:"Gallery name";s:15:"Názov galérie";s:11:"Artist name";s:11:"Meno autora";s:7:"Summary";s:6:"Súhrn";s:12:"Save Changes";s:14:"Uložiť zmeny";s:10:"Edit Image";s:17:"Upraviť obrázok";s:5:"Image";s:8:"Obrázok";s:10:"Image name";s:15:"Názov obrázku";s:15:"Change Password";s:13:"Zmeniť heslo";s:67:"Please choose a new password between 6 and 16 characters in length.";s:52:"Zvoľte prosím nové heslo dlhé od 6 do 16 znakov.";s:17:"Current password:";s:17:"Súčasné heslo:";s:13:"New password:";s:12:"Nové heslo:";s:17:"Confirm password:";s:16:"Potvrdiť heslo:";s:14:"Access Control";s:18:"Správa prístupov";s:5:"Owner";s:8:"Majiteľ";s:6:"Groups";s:7:"Skupiny";s:19:"access control|Read";s:8:"Čítať";s:17:"permissions|Owner";s:8:"Majiteľ";s:17:"permissions|Group";s:7:"Skupina";s:17:"permissions|World";s:4:"Svet";s:19:"permissions|Inherit";s:8:"Zdedené";s:19:"access control|Edit";s:8:"Upraviť";s:18:"access control|Add";s:7:"Pridať";s:21:"access control|Delete";s:8:"Vymazať";s:12:"Edit Profile";s:15:"Upraviť profil";s:8:"Username";s:20:"Užívateľské meno";s:9:"Full name";s:10:"Celé meno";s:15:"User Management";s:21:"Správa užívateľov";s:4:"Type";s:3:"Typ";s:13:"Administrator";s:14:"Administrátor";s:4:"User";s:11:"Užívateľ";s:8:"Password";s:5:"Heslo";s:16:"hits table|Graph";s:4:"Graf";s:15:"hits table|Hits";s:10:"Návštevy";s:19:"hits table|Last hit";s:20:"Posledná návšteva";s:6:"Log In";s:11:"Prihlásiť";s:52:"Please enter your admin username and password below.";s:98:"Zadajte prosím svoje užívateľské meno a heslo pre prihlásenie do správy systému singapore.";s:9:"Username:";s:21:"Užívateľské meno:";s:9:"Password:";s:6:"Heslo:";s:61:"If you do not have a username then you may log in as a guest.";s:67:"Ak nemáte užívateľské meno, môžete sa prihlásiť ako hosť.";s:15:"Log in as guest";s:21:"Prihlásiť ako hosť";s:49:"You must be an administrator to access this area.";s:56:"Na prístup do tejto časti musíte byť administrátor.";s:4:"edit";s:8:"upraviť";s:6:"delete";s:8:"vymazať";s:7:"suspend";s:11:"pozastaviť";s:9:"unsuspend";s:21:"zrušiť pozastavenie";s:15:"Create New User";s:30:"Vytvoriť nového užívateľa";s:6:"Create";s:9:"Vytvoriť";s:24:"Please choose an option:";s:26:"Zvoľte prosím možnosť:";s:27:"Manage galleries and images";s:30:"Spravovať galérie a obrázky";s:17:"View gallery hits";s:29:"Zobraziť návštevy galérie";s:15:"Change password";s:13:"Zmeniť heslo";s:10:"My profile";s:11:"Môj profil";s:12:"Manage users";s:24:"Spravovať užívateľov";s:16:"Log out of admin";s:30:"Odhlásiť zo správy systému";s:18:"Move or Copy Items";s:37:"Presunúť alebo kopírovať položky";s:4:"Copy";s:11:"Kopírovať";s:4:"Move";s:10:"Presunúť";s:11:"New Gallery";s:14:"Nová galéria";s:10:"Identifier";s:14:"Identifikátor";s:9:"New Image";s:14:"Nový obrázok";s:97:"This image will not be visible because this gallery is not an album: it contains child galleries.";s:102:"Tento obrázok nebude viditeľný, pretože táto galéria nie je albumom: obsahuje vnorené galérie.";s:18:"Upload single file";s:20:"Nahrať jeden súbor";s:21:"Image file to upload:";s:28:"Súbor ubrázku na nahratie:";s:11:"Identifier:";s:15:"Identifikátor:";s:30:"Use filename of uploaded file.";s:35:"Použiť názov nahratého súboru.";s:27:"Specify different filename:";s:27:"Zadať iný názov súboru:";s:21:"Upload multiple files";s:24:"Nahrať viacero súborov";s:19:"ZIP file to upload:";s:23:"Súbor ZIP na nahratie:";s:15:"Add remote file";s:25:"Pridať vzdialený súbor";s:13:"URL of image:";s:13:"URL obrázku:";s:14:"With selected:";s:14:"S označeným:";s:22:"admin bar|View gallery";s:18:"Zobraziť galériu";s:26:"admin bar|Change thumbnail";s:16:"Zmeniť náhľad";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:20:"Slovak (Slovenský) ";s:6:"plural";s:107:"$nplurals=3;$plural=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;";}}
/photogallery/locale/singapore.admin.sv.pmo
0,0 → 1,4
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:21:"Bildarkiv finns redan";s:18:"An error occurred:";s:0:"";s:11:"Image added";s:0:"";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:0:"";s:17:"Thumbnail changed";s:8:"Ändra...";s:14:"confirm|Cancel";s:0:"";s:15:"Gallery deleted";s:11:"Upp en nivå";s:14:"delete gallery";s:15:"ändra bildarkiv";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:0:"";s:13:"Image deleted";s:6:"Datum:";s:12:"delete image";s:10:"ändra bild";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:0:"";s:12:"User deleted";s:11:"Upp en nivå";s:11:"delete user";s:15:"ändra bildarkiv";s:52:"Are you sure you want to permanently delete user %s?";s:0:"";s:27:"Welcome to singapore admin!";s:0:"";s:22:"Thank you and goodbye!";s:0:"";s:22:"Thumbnail cache purged";s:0:"";s:23:"purge cached thumbnails";s:24:"Släng sparade minibilder";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:0:"";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:0:"";s:24:"Image saved successfully";s:0:"";s:14:"Password saved";s:9:"Lösenord:";s:17:"Permissions saved";s:9:"Lösenord:";s:15:"User info saved";s:0:"";s:14:"admin bar|Back";s:8:"Tillbaka";s:15:"admin bar|Admin";s:13:"Administratör";s:19:"admin bar|Galleries";s:9:"Bildarkiv";s:17:"admin bar|Log out";s:8:"Logga ut";s:22:"admin bar|Edit gallery";s:15:"Ändra bildarkiv";s:26:"admin bar|Edit permissions";s:15:"Ändra bildarkiv";s:24:"admin bar|Delete gallery";s:16:"Radera bildarkiv";s:24:"admin bar|New subgallery";s:15:"Nytt underarkiv";s:26:"admin bar|Re-index gallery";s:16:"Radera bildarkiv";s:20:"admin bar|Edit image";s:10:"Ändra bild";s:22:"admin bar|Delete image";s:11:"Radera bild";s:19:"admin bar|New image";s:7:"Ny bild";s:24:"Could not save user info";s:30:"Kunde inte spara informationen";s:54:"New password must be between 6 and 16 characters long.";s:44:"Nytt lösenord måste innehålla 6 - 16 tecken.";s:43:"The new passwords you entered do not match.";s:32:"Det nya lösenordet matcher inte.";s:72:"The current password you entered does not match the one in the database.";s:40:"Lösenordet matchar inte det i databasen.";s:53:"The username specified was not found in the database.";s:41:"Ditt användarnamn finns inte i databasen.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:35:"Fel användarnamn och/eller lösenord";s:38:"You must enter a username and password";s:30:"Ange användarnamn och lösenord";s:27:"Could not save gallery info";s:30:"Kunde inte spara informationen";s:23:"Username already exists";s:18:"Bilden finns redan";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:21:"Bildarkiv finns redan";s:26:"Could not create directory";s:34:"Det gick inte att skapa en katalog";s:37:"Cannot delete the top level directory";s:37:"Kunde inte att radera översta arkivet";s:19:"File already exists";s:18:"Bilden finns redan";s:21:"Could not upload file";s:24:"Kunde inte radera bilden";s:30:"Could not add image to gallery";s:33:"Kunde inte spara bilden i arkivet";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:24:"Kunde inte radera bilden";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:33:"Kunde inte spara bild information";s:22:"Could not delete image";s:24:"Kunde inte radera bilden";s:17:"Select gallery...";s:15:"ändra bildarkiv";s:16:"choose thumbnail";s:13:"Välj minibild";s:64:"Choose the filename of the image used to represent this gallery.";s:52:"Välj en bild som skall representera detta bildarkiv.";s:14:"thumbnail|None";s:5:"Ingen";s:16:"thumbnail|Random";s:16:"Slumpmässigt val";s:12:"edit gallery";s:15:"ändra bildarkiv";s:9:"Thumbnail";s:5:"Ingen";s:16:"Random
thumbnail";s:34:"Slumpmässigt val
av minibild gjord";s:19:"thumbnail|Change...";s:8:"Ändra...";s:12:"Gallery name";s:21:"Bildarkiv finns redan";s:11:"Artist name";s:0:"";s:7:"Summary";s:0:"";s:10:"edit image";s:10:"ändra bild";s:5:"Image";s:0:"";s:10:"Image name";s:6:"Datum:";s:15:"change password";s:14:"ändra lösenord";s:67:"Please choose a new password between 6 and 16 characters in length.";s:55:"Vänligen välj nytt lösenord innehållande 6 - 16 tecken.";s:17:"Current password:";s:19:"Nuvarande lösenord:";s:13:"New password:";s:14:"Nytt lösenord:";s:17:"Confirm password:";s:18:"Bekräfta lösenord:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:13:"Användarnamn:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:13:"Användarnamn:";s:9:"Full name";s:21:"Bildarkiv finns redan";s:8:"Password";s:9:"Lösenord:";s:22:"admin bar|View gallery";s:15:"Nytt underarkiv";s:26:"admin bar|Change thumbnail";s:15:"Nytt underarkiv";s:16:"hits table|Graph";s:0:"";s:15:"hits table|Hits";s:0:"";s:19:"hits table|Last hit";s:0:"";s:14:"Admin message:";s:0:"";s:6:"log in";s:8:"Logga in";s:52:"Please enter your admin username and password below.";s:30:"Ange användarnamn och lösenord";s:9:"Username:";s:13:"Användarnamn:";s:9:"Password:";s:9:"Lösenord:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:21:"Bildarkiv finns redan";s:4:"edit";s:0:"";s:6:"delete";s:10:"ändra bild";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:5:"Välj:";s:27:"Manage galleries and images";s:28:"Hantera bildarkiv och bilder";s:17:"View gallery hits";s:15:"Besöksstatistik";s:15:"Change password";s:14:"Ändra lösenord";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:24:"Släng sparade minibilder";s:16:"Log out of admin";s:36:"Logga ut från administratorsektionen";s:11:"new gallery";s:14:"nytt bildarkiv";s:11:"Identifier:";s:14:"Identifiering:";s:9:"new image";s:7:"Ny bild";s:74:"This image will not be visible because this gallery contains subgalleries.";s:0:"";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:24:"Bild som ska laddas upp:";s:30:"Use filename of uploaded file.";s:27:"Använd filnamnet på bilden.";s:27:"Specify different filename:";s:19:"Skriv nytt filnamn:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:24:"Bild som ska laddas upp:";s:15:"Add remote file";s:9:"Fjärrbild";s:13:"URL of image:";s:12:"Bildens URL:";i:0;a:3:{s:7:"charset";s:7:"CHARSET";s:8:"language";s:8:"SWEDISH ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.tr.pmo
0,0 → 1,7
a:92:{s:27:"Welcome to singapore admin!";s:37:"Singapore admin menüsüne hoþgeldiniz!";s:18:"An error occurred:";s:23:"Bir hata meydana geldi.";s:22:"Thank you and goodbye!";s:30:"Teþekkürler ve görüþmek üzere!";s:14:"Password saved";s:21:"Þifreniz kayýt edildi";s:13:"Gallery added";s:14:"Galeri eklendi";s:18:"Gallery info saved";s:34:"Galeri açýklamasý kayýt edilmiþtir";s:10:"confirm|OK";s:5:"Tamam";s:15:"Gallery deleted";s:14:"Galeri silindi";s:14:"confirm|Cancel";s:5:"Ýptal";s:14:"delete gallery";s:12:"Galeriyi sil";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:77:"Galeri %s halen resim içermekte
Galerinin tamamen silinmesini istiyormusunuz?";s:17:"Thumbnail changed";s:26:"Öngörüntü deðiþtirilmiþtir";s:11:"Image added";s:13:"Resim eklendi";s:24:"Image saved successfully";s:29:"Resim baþarýyla kayýt edildi.";s:13:"Image deleted";s:12:"Resim silidi";s:12:"delete image";s:9:"Resim sil";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:55:"Resim (%s) tamamen galeri %s'den silmek istiyormusunuz?";s:22:"Thumbnail cache purged";s:34:"Resim öngörüntü Cache'i boþaltýldý";s:23:"purge cached thumbnails";s:33:"Resim öngörüntü Cache'ini boþalt.";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:63:"Bütün %s resim öngörüntülerini Cache'den silmek istiyormusunuz?";s:14:"admin bar|Back";s:6:"Geriye";s:15:"admin bar|Admin";s:7:"Ayarlar";s:19:"admin bar|Galleries";s:9:"Galeriler";s:17:"admin bar|Log out";s:3:"Çýk";s:22:"admin bar|Edit gallery";s:16:"Galeriyi düzenle";s:24:"admin bar|Delete gallery";s:12:"Galeriyi sil";s:24:"admin bar|New subgallery";s:15:"Yeni alt-galeri";s:20:"admin bar|Edit image";s:14:"Resimi düzenle";s:22:"admin bar|Delete image";s:10:"Resimi sil";s:19:"admin bar|New image";s:10:"Yeni resim";s:43:"There was an error saving the new password.";s:40:"Yeni þifre kayýtýnda hata meydana geldi.";s:54:"New password must be between 6 and 16 characters long.";s:36:"Þifre 6 - 16 karater içermesi lazým.";s:43:"The new passwords you entered do not match.";s:37:"Verdýðýnz þifreler býrbýrýne uymuyor.";s:72:"The current password you entered does not match the one in the database.";s:23:"Verdýðýnz þifre yanlýþ.";s:53:"The username specified was not found in the database.";s:33:"Verdiðiniz kullanýcý ismi yoktur.";s:34:"Username and/or password incorrect";s:32:"Ýsminiz ve/veya þifreniz yanlýþ.";s:38:"You must enter a username and password";s:30:"Ýsminizi ve þifrenizý veriniz.";s:22:"Gallery already exists";s:16:"Galeri mevcuttur";s:26:"Could not create directory";s:22:"Dizin oluþturalanamadý";s:27:"Could not save gallery info";s:36:"Galeri açýklamasý kayýt edilenemedi.";s:37:"Cannot delete the top level directory";s:20:"Anadizin silinemedi.";s:19:"File already exists";s:15:"Kütük mevcuttur";s:21:"Could not upload file";s:21:"Resim gönderilenemedi";s:23:"Invalid location choice";s:21:"Yanlýþ hedef seçeneði";s:30:"Could not add image to gallery";s:25:"Resim galeriye eklenemedi";s:32:"Could not save image information";s:32:"Resim açýklamasý kayýt edilemedi";s:22:"Could not delete image";s:16:"Resim silinemedi";s:16:"choose thumbnail";s:20:"Lütfen resim seçiniz";s:64:"Choose the filename of the image used to represent this gallery.";s:47:"Galeriyi sembole edecek resimin ismini seçiniz.";s:14:"thumbnail|None";s:3:"Hiç";s:16:"thumbnail|Random";s:7:"Rasgele";s:12:"edit gallery";s:16:"Galeriyi düzenle";s:18:"Gallery thumbnail:";s:16:"Galeri öngörüntü";s:16:"Random
thumbnail";s:19:"Rasgele
Öngörünütü";s:19:"thumbnail|Change...";s:21:"Baþka öngörünütü seç.";s:12:"Gallery name";s:11:"Galeri ismi";s:11:"Artist name";s:18:"Resim çekenýn ismi";s:10:"edit image";s:14:"Resimi düzenle";s:5:"Image";s:5:"Resim";s:10:"Image name";s:10:"Resim ismi";s:15:"change password";s:17:"Þifreyi deðiiþtir";s:67:"Please choose a new password between 6 and 16 characters in length.";s:45:"Lütfen 6-16 karakter uzunlukta þifre seçiniz.";s:17:"Current password:";s:17:"Þu anký þifreniz:";s:13:"New password:";s:14:"Yeni þifreniz:";s:17:"Confirm password:";s:17:"Þifreyi tekrarla:";s:20:"singapore|Powered by";s:0:"";s:16:"hits table|Graph";s:6:"Grafik";s:15:"hits table|Hits";s:7:"Hitsler";s:19:"hits table|Last hit";s:7:"Son hit";s:14:"Admin message:";s:13:"Admin mesajý:";s:20:"Return to galleries.";s:20:"Galerilere geri dön.";s:6:"log in";s:3:"Gir";s:110:"Only authorised users are allowed into the admin section.
Please enter your admin username and password below.";s:98:"Sadece ototesi olan kullanýcýlar ayarlarý deðiþtirebilir.
Lütfen admin ismini ve þifresini veriniz";s:9:"Username:";s:15:"Kullanýcý ismi:";s:9:"Password:";s:6:"Þifre:";s:24:"Please choose an option:";s:15:"Lütfen seçiniz:";s:27:"Manage galleries and images";s:27:"Galeri ve resimleri düzenle";s:17:"View gallery hits";s:32:"Galeri ziyaretçi sayýsýný göster";s:23:"Purge cached thumbnails";s:33:"Resim öngörüntüsünü cacheden sil.";s:15:"Change password";s:14:"Þifre deðiþtir";s:16:"Log out of admin";s:14:"Ayarlardan çýk";s:11:"new gallery";s:11:"yeni galeri";s:11:"Identifier:";s:12:"Belirteyici:";s:9:"new image";s:10:"yeni resim";s:74:"This image will not be visible because this gallery contains subgalleries.";s:68:"Bu resim gösterilebilenemez çünkü bu galeri alt-galerilere sahiptir.";s:11:"Remote file";s:20:"Resim baþka serverde";s:13:"URL of image:";s:13:"Resimin URLu:";s:10:"Local file";s:11:"Lokal resim";s:21:"Image file to upload:";s:17:"Yüklenecek resim:";s:30:"Use filename of uploaded file.";s:31:"Yüklenmiþ resimin ismini kullan";s:27:"Specify different filename:";s:18:"Baþka isim kullan:";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-9";s:8:"language";s:16:"Turkish (Türkçe)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.vi.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:27:"Gallery đã được thêm";s:18:"An error occurred:";s:10:"Có lỗi:";s:11:"Image added";s:31:"Hình ảnh đã được thêm";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:2:"OK";s:17:"Thumbnail changed";s:36:"Thumbnail đã được thay đổi";s:14:"confirm|Cancel";s:5:"Hủy";s:15:"Gallery deleted";s:26:"Gallery đã được xóa";s:14:"delete gallery";s:12:"xóa gallery";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:158:"Gallery %s không phải là rỗng.
Bạn có chắc chắn muốn xóa gallery đó cùng với tất cả các gallery con và các hình ảnh trong đó?";s:13:"Image deleted";s:30:"Hình ảnh đã được xóa";s:12:"delete image";s:16:"xóa hình ảnh";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:68:"Bạn có chắc chắn muốn xóa hình ảnh %s của gallery %s?";s:12:"User deleted";s:26:"Gallery đã được xóa";s:11:"delete user";s:12:"xóa gallery";s:52:"Are you sure you want to permanently delete user %s?";s:68:"Bạn có chắc chắn muốn xóa hình ảnh %s của gallery %s?";s:27:"Welcome to singapore admin!";s:57:"Xin chào đến với trình quản lý của singapore!";s:22:"Thank you and goodbye!";s:33:"Cảm ơn và chào tạm biệt!";s:22:"Thumbnail cache purged";s:39:"Các thumbnail cache đã được xóa";s:23:"purge cached thumbnails";s:22:"Xóa cached thumbnails";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:68:"Bạn có chắc chắn muốn xóa tất cả %s cached thumbnails?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:43:"Thông tin của gallery đã được mưu";s:24:"Image saved successfully";s:43:"Hình ảnh đã được lưu thành công";s:14:"Password saved";s:28:"Mật mã đã được lưu";s:17:"Permissions saved";s:28:"Mật mã đã được lưu";s:15:"User info saved";s:43:"Thông tin của gallery đã được mưu";s:14:"admin bar|Back";s:11:"Trở lại";s:15:"admin bar|Admin";s:12:"Quản trị";s:19:"admin bar|Galleries";s:7:"Gallery";s:17:"admin bar|Log out";s:6:"Thoát";s:22:"admin bar|Edit gallery";s:19:"Thay đổi gallery";s:26:"admin bar|Edit permissions";s:19:"Thay đổi gallery";s:24:"admin bar|Delete gallery";s:12:"Xóa gallery";s:24:"admin bar|New subgallery";s:16:"Thêm subgallery";s:26:"admin bar|Re-index gallery";s:12:"Xóa gallery";s:20:"admin bar|Edit image";s:23:"Thay đổi hình ảnh";s:22:"admin bar|Delete image";s:16:"Xóa hình ảnh";s:19:"admin bar|New image";s:23:"Thêm hình ảnh mới";s:24:"Could not save user info";s:47:"Không thể lưu các thông tin của gallery";s:54:"New password must be between 6 and 16 characters long.";s:47:"Mật mã phải có từ 6 đến 16 kí tự.";s:43:"The new passwords you entered do not match.";s:30:"Mật mã không trùng khớp";s:72:"The current password you entered does not match the one in the database.";s:83:"Mật mã vào không trùng khớp với mật mã có trong cơ sở dữ liệu.";s:53:"The username specified was not found in the database.";s:66:"Tên đăng nhập không tìm thấy trong cơ sở dữ liệu.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:58:"Tên đăng nhập và/hoặc mật mã không hợp lệ";s:38:"You must enter a username and password";s:57:"Bạn phải nhập vào tên đăng nhập và mật mã";s:27:"Could not save gallery info";s:47:"Không thể lưu các thông tin của gallery";s:23:"Username already exists";s:13:"File đã có";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:16:"Gallery đã có";s:26:"Could not create directory";s:29:"Không thể tạo thư mục";s:37:"Cannot delete the top level directory";s:34:"Không thể xóa thư mục gốc";s:19:"File already exists";s:13:"File đã có";s:21:"Could not upload file";s:24:"Không thể upload file";s:30:"Could not add image to gallery";s:43:"Không thể thêm hình ảnh vào gallery";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:29:"Không thể xóa hình ảnh";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:51:"Không thể lưu các thông tin của hình ảnh";s:22:"Could not delete image";s:29:"Không thể xóa hình ảnh";s:17:"Select gallery...";s:12:"xóa gallery";s:16:"choose thumbnail";s:16:"chọn thumbnail";s:64:"Choose the filename of the image used to represent this gallery.";s:64:"Chọn tên file cho hành ảnh dùng để trình bày gallery";s:14:"thumbnail|None";s:22:"Không dùng thumbnail";s:16:"thumbnail|Random";s:35:"thumbnail thay đổi ngẫu nhiên";s:12:"edit gallery";s:19:"Thay đổi gallery";s:9:"Thumbnail";s:22:"Không dùng thumbnail";s:16:"Random
thumbnail";s:23:"thumbnail
Ngẫu nhiên";s:19:"thumbnail|Change...";s:14:"Thay đổi...";s:12:"Gallery name";s:12:"Tên gallery";s:11:"Artist name";s:15:"Tên tác giả";s:7:"Summary";s:0:"";s:10:"edit image";s:23:"thay đổi hình ảnh";s:5:"Image";s:11:"Hình ảnh";s:10:"Image name";s:16:"Tên hình ảnh";s:15:"change password";s:21:"thay đổi mật mã";s:67:"Please choose a new password between 6 and 16 characters in length.";s:51:"Xin chọn mật mã có từ 6 đến 16 kí tự.";s:17:"Current password:";s:23:"Mật mã hiện tại:";s:13:"New password:";s:16:"Mật mã mới:";s:17:"Confirm password:";s:22:"Xác nhận mật mã:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:19:"Tên đăng nhập:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:19:"Tên đăng nhập:";s:9:"Full name";s:12:"Tên gallery";s:8:"Password";s:10:"Mật mã:";s:22:"admin bar|View gallery";s:16:"Thêm subgallery";s:26:"admin bar|Change thumbnail";s:16:"Thêm subgallery";s:16:"hits table|Graph";s:12:"Biểu đồ";s:15:"hits table|Hits";s:21:"Số lần truy cập";s:19:"hits table|Last hit";s:25:"Các truy cập sau cùng";s:14:"Admin message:";s:25:"Thông điệp cho Admin:";s:6:"log in";s:13:"đăng nhập";s:52:"Please enter your admin username and password below.";s:57:"Bạn phải nhập vào tên đăng nhập và mật mã";s:9:"Username:";s:19:"Tên đăng nhập:";s:9:"Password:";s:10:"Mật mã:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:12:"Tên gallery";s:4:"edit";s:0:"";s:6:"delete";s:16:"xóa hình ảnh";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:26:"Xin chọn một menu sau:";s:27:"Manage galleries and images";s:34:"Quản lý gallery và hình ảnh";s:17:"View gallery hits";s:37:"Xem các truy cập của hình ảnh";s:15:"Change password";s:21:"Thay đổi mật mã";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:26:"Xóa cache của thumbnail";s:16:"Log out of admin";s:22:"Thoát ra khỏi admin";s:11:"new gallery";s:13:"gallery mới";s:11:"Identifier:";s:14:"Nhận dạng:";s:9:"new image";s:23:"Thêm hình ảnh mới";s:74:"This image will not be visible because this gallery contains subgalleries.";s:69:"Hình ảnh này sẽ không xem được vì gallery có subgallery.";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:29:"Hình ảnh để tải lên:";s:30:"Use filename of uploaded file.";s:53:"Dùng tên file của hình ảnh sau khi tải lên.";s:27:"Specify different filename:";s:30:"Chỉ định tên file khác:";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:29:"Hình ảnh để tải lên:";s:15:"Add remote file";s:33:"File hình ảnh trên máy khác";s:13:"URL of image:";s:22:"URL của hình ảnh:";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:9:"LANGUAGE ";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.zh_cn.pmo
0,0 → 1,7
a:92:{s:27:"Welcome to singapore admin!";s:27:"»¶Ó­½øÈësingapore¹ÜÀí½çÃ棡";s:18:"An error occurred:";s:14:"·¢ÉúÒ»´¦´íÎó£º";s:22:"Thank you and goodbye!";s:18:"¶àлʹÓÃÏ´ÎÔÙ¼û£¡";s:14:"Password saved";s:12:"¿ÚÁî±£´æ³É¹¦";s:13:"Gallery added";s:12:"Ìí¼ÓÏà²á³É¹¦";s:18:"Gallery info saved";s:16:"Ïà²áÐÅÏ¢±£´æ³É¹¦";s:10:"confirm|OK";s:4:"È·ÈÏ";s:15:"Gallery deleted";s:12:"Ïà²áɾ³ý³É¹¦";s:14:"confirm|Cancel";s:4:"È¡Ïû";s:14:"delete gallery";s:8:"ɾ³ýÏàƒÔ";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:85:"%sÕâ¸öÏà²áÀïÃæÉÐÓÐÄÚÈÝ¡£
ÄãȷʵÏëÓÀ¾ÃÐÔɾ³ýÕâ¸öÏà²á¼°ÀïÃæ°üº¬µÄËùÓÐ×ÓÏà²á»òÕßͼƬÂð£¿";s:17:"Thumbnail changed";s:14:"ËõÂÔͼ±ä¸üÍê³É";s:11:"Image added";s:12:"ͼƬÌí¼Ó³É¹¦";s:24:"Image saved successfully";s:12:"ͼƬ±£´æ³É¹¦";s:13:"Image deleted";s:12:"ͼƬɾ³ýÍê³É";s:12:"delete image";s:8:"ɾ³ýͼƬ";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:40:"ÄãȷʵÏëÓÀ¾ÃÐÔɾ³ýͼƬ %s ´ÓÏàƒÔ %S Âð£¿";s:22:"Thumbnail cache purged";s:18:"ËõÂÔͼԤ´æɾ³ý³É¹¦";s:23:"purge cached thumbnails";s:16:"ɾ³ýÔ¤´æµÄËõÂÔͼ";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:34:"ÄãȷʵÏëɾ³ýÕâ%sÕÅÔ¤´æµÄËõÂÔͼÂð£¿";s:14:"admin bar|Back";s:4:"·µ»Ø";s:15:"admin bar|Admin";s:8:"¹ÜÀí²Ëµ¥";s:19:"admin bar|Galleries";s:8:"Ïà²áÁбí";s:17:"admin bar|Log out";s:4:"Í˳ö";s:22:"admin bar|Edit gallery";s:12:"±à¼­Ïà²áÐÅÏ¢";s:24:"admin bar|Delete gallery";s:8:"ɾ³ýÏà²á";s:24:"admin bar|New subgallery";s:10:"н¨×ÓÏà²á";s:20:"admin bar|Edit image";s:12:"±à¼­Í¼Æ¬ÐÅÏ¢";s:22:"admin bar|Delete image";s:8:"ɾ³ýͼƬ";s:19:"admin bar|New image";s:8:"н¨Í¼Æ¬";s:43:"There was an error saving the new password.";s:20:"±£´æ¿ÚÁîʱ²úÉú´íÎó¡£";s:54:"New password must be between 6 and 16 characters long.";s:33:"пÚÁ¶È±ØÐèÔÚ6µ½16¸ö×Ö·ûÖ®¼ä¡£";s:43:"The new passwords you entered do not match.";s:24:"Á½´ÎÊäÈëµÄпÚÁƥÅä¡£";s:72:"The current password you entered does not match the one in the database.";s:36:"ÄãÊäÈëµÄ¿ÚÁîºÍÊý¾Ý¿âÖеĿÚÁƥÅä¡£";s:53:"The username specified was not found in the database.";s:32:"ûÓÐÔÚÊý¾Ý¿âÖÐÕÒµ½Ö¸¶¨µÄÓû§Ãû¡£";s:34:"Username and/or password incorrect";s:16:"Óû§Ãû»ò¿ÚÁî´íÎó";s:38:"You must enter a username and password";s:22:"ÄãÐèÒªÊäÈëÓû§ÃûºÍ¿ÚÁî";s:22:"Gallery already exists";s:12:"Ïà²áÒѾ­´æÔÚ";s:26:"Could not create directory";s:12:"ÎÞ·¨½¨Á¢Ä¿Â¼";s:27:"Could not save gallery info";s:16:"ÎÞ·¨±£´æÏà²áÐÅÏ¢";s:37:"Cannot delete the top level directory";s:16:"ÎÞ·¨É¾³ý¶¥¼¶Ä¿Â¼";s:19:"File already exists";s:12:"ÎļþÒѾ­´æÔÚ";s:21:"Could not upload file";s:12:"ÎÞ·¨ÉÏ´«Îļþ";s:23:"Invalid location choice";s:16:"ÄãÑ¡ÔñµÄλÖÃÎÞЧ";s:30:"Could not add image to gallery";s:22:"ÎÞ·¨½«Í¼Æ¬¼ÓÈëµ½Ïà²áÖÐ";s:32:"Could not save image information";s:16:"ÎÞ·¨±£´æͼƬÐÅÏ¢";s:22:"Could not delete image";s:12:"ÎÞ·¨É¾³ýͼƬ";s:16:"choose thumbnail";s:12:"ÇëÑ¡ÔñËõÂÔͼ";s:64:"Choose the filename of the image used to represent this gallery.";s:30:"ÇëÑ¡Ôñ´ú±í±¾Ïà²áµÄͼƬÎļþÃû¡£";s:14:"thumbnail|None";s:12:"²»Ê¹ÓÃËõÂÔͼ";s:16:"thumbnail|Random";s:8:"Ëæ»úÑ¡Ôñ";s:12:"edit gallery";s:12:"±à¼­Ïà²áÊôÐÔ";s:18:"Gallery thumbnail:";s:12:"Ïà²áËõÂÔͼ£º";s:16:"Random
thumbnail";s:15:"Ëæ»úÑ¡Ôñ
ËõÂÔͼ";s:19:"thumbnail|Change...";s:4:"ÐÞ¸Ä";s:12:"Gallery name";s:8:"Ïà²áÃû³Æ";s:11:"Artist name";s:8:"×÷ÕßÐÕÃû";s:10:"edit image";s:12:"±à¼­Í¼Æ¬ÐÅÏ¢";s:5:"Image";s:4:"ͼƬ";s:10:"Image name";s:8:"ͼƬÃû³Æ";s:15:"change password";s:8:"Ð޸ĿÚÁî";s:67:"Please choose a new password between 6 and 16 characters in length.";s:41:"ÐÂÑ¡ÔñÒ»¸ö³¤¶ÈÔÚ6µ½16¸ö×Ö·ûÖ®¼äµÄпÚÁî¡£";s:17:"Current password:";s:10:"µ±Ç°¿ÚÁ";s:13:"New password:";s:8:"пÚÁ";s:17:"Confirm password:";s:18:"ÇëÔÙÊäÈëÒ»´Î¿ÚÁ";s:20:"singapore|Powered by";s:16:"±¾ÍøÕ¾²ÉÓü¼Êõ£º";s:16:"hits table|Graph";s:4:"ͼʾ";s:15:"hits table|Hits";s:6:"µã»÷Êý";s:19:"hits table|Last hit";s:12:"×îºóÒ»´Îµã»÷";s:14:"Admin message:";s:12:"¹ÜÀíÔ±ÐÅÏ¢£º";s:20:"Return to galleries.";s:12:"·µ»ØÏà²áÁбí";s:6:"log in";s:4:"µÇ¼";s:110:"Only authorised users are allowed into the admin section.
Please enter your admin username and password below.";s:59:"Ö»ÔÊÐíÊÚȨÓû§Ê¹ÓùÜÀí½çÃ沿·Ö¡£
ÇëÔÚÏ·½ÊäÈëÓû§ÃûºÍ¿ÚÁî¡£";s:9:"Username:";s:8:"Óû§Ãû£º";s:9:"Password:";s:6:"¿ÚÁ";s:24:"Please choose an option:";s:8:"ÇëÑ¡Ôñ£º";s:27:"Manage galleries and images";s:14:"¹ÜÀíÏà²áºÍͼƬ";s:17:"View gallery hits";s:16:"²é¿´Ïà²áµã»÷Çé¿ö";s:23:"Purge cached thumbnails";s:16:"ɾ³ýÔ¤´æµÄËõÂÔͼ";s:15:"Change password";s:8:"¸ü¸Ä¿ÚÁî";s:16:"Log out of admin";s:14:"´Ó¹ÜÀí½çÃæÍ˳ö";s:11:"new gallery";s:14:"´´½¨Ò»¸öÐÂÏà²á";s:11:"Identifier:";s:16:"ÐÂÏà²áĿ¼Ãû³Æ£º";s:9:"new image";s:10:"Ìí¼ÓÐÂͼƬ";s:74:"This image will not be visible because this gallery contains subgalleries.";s:48:"ÓÉÓÚ±¾Ïà²á°üº¬×ÓÏà²á£¬ËùÒÔÕâÕÅͼƬ½«ÊDz»¿É¼ûµÄ¡£";s:11:"Remote file";s:8:"Ô¶³ÌÎļþ";s:13:"URL of image:";s:15:"ͼƬµÄURLµØÖ·£º";s:10:"Local file";s:8:"±¾µØÎļþ";s:21:"Image file to upload:";s:18:"ÇëÑ¡Ôñ´ýÉÏ´«Îļþ£º";s:30:"Use filename of uploaded file.";s:22:"ʹÓÃÉÏ´«ÎļþµÄÎļþÃû¡£";s:27:"Specify different filename:";s:16:"×ÔÐÐÖ¸¶¨ÎļþÃû£º";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:7:"Chinese";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.zh_cn_utf8.pmo
0,0 → 1,7
a:92:{s:27:"Welcome to singapore admin!";s:18:"????singapore?????";s:18:"An error occurred:";s:7:"???????";s:22:"Thank you and goodbye!";s:9:"?????????";s:14:"Password saved";s:6:"??????";s:13:"Gallery added";s:6:"??????";s:18:"Gallery info saved";s:8:"????????";s:10:"confirm|OK";s:2:"??";s:15:"Gallery deleted";s:6:"??????";s:14:"confirm|Cancel";s:2:"??";s:14:"delete gallery";s:4:"????";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:44:"%s???????????
??????????????????????????????";s:17:"Thumbnail changed";s:7:"???????";s:11:"Image added";s:6:"??????";s:24:"Image saved successfully";s:6:"??????";s:13:"Image deleted";s:6:"??????";s:12:"delete image";s:4:"????";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:24:"??????????? %s ??? %S ??";s:22:"Thumbnail cache purged";s:9:"?????????";s:23:"purge cached thumbnails";s:8:"????????";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:18:"???????%s?????????";s:14:"admin bar|Back";s:2:"??";s:15:"admin bar|Admin";s:4:"????";s:19:"admin bar|Galleries";s:4:"????";s:17:"admin bar|Log out";s:2:"??";s:22:"admin bar|Edit gallery";s:6:"??????";s:24:"admin bar|Delete gallery";s:4:"????";s:24:"admin bar|New subgallery";s:5:"?????";s:20:"admin bar|Edit image";s:6:"??????";s:22:"admin bar|Delete image";s:4:"????";s:19:"admin bar|New image";s:4:"????";s:43:"There was an error saving the new password.";s:10:"??????????";s:54:"New password must be between 6 and 16 characters long.";s:18:"????????6?16??????";s:43:"The new passwords you entered do not match.";s:12:"????????????";s:72:"The current password you entered does not match the one in the database.";s:18:"??????????????????";s:53:"The username specified was not found in the database.";s:16:"????????????????";s:34:"Username and/or password incorrect";s:8:"????????";s:38:"You must enter a username and password";s:11:"???????????";s:22:"Gallery already exists";s:6:"??????";s:26:"Could not create directory";s:6:"??????";s:27:"Could not save gallery info";s:8:"????????";s:37:"Cannot delete the top level directory";s:8:"????????";s:19:"File already exists";s:6:"??????";s:21:"Could not upload file";s:6:"??????";s:23:"Invalid location choice";s:8:"????????";s:30:"Could not add image to gallery";s:11:"???????????";s:32:"Could not save image information";s:8:"????????";s:22:"Could not delete image";s:6:"??????";s:16:"choose thumbnail";s:6:"??????";s:64:"Choose the filename of the image used to represent this gallery.";s:15:"???????????????";s:14:"thumbnail|None";s:6:"??????";s:16:"thumbnail|Random";s:4:"????";s:12:"edit gallery";s:6:"??????";s:18:"Gallery thumbnail:";s:6:"??????";s:16:"Random
thumbnail";s:8:"????
???";s:19:"thumbnail|Change...";s:2:"??";s:12:"Gallery name";s:4:"????";s:11:"Artist name";s:4:"????";s:10:"edit image";s:6:"??????";s:5:"Image";s:2:"??";s:10:"Image name";s:4:"????";s:15:"change password";s:4:"????";s:67:"Please choose a new password between 6 and 16 characters in length.";s:22:"????????6?16??????????";s:17:"Current password:";s:5:"?????";s:13:"New password:";s:4:"????";s:17:"Confirm password:";s:9:"?????????";s:20:"singapore|Powered by";s:8:"????????";s:16:"hits table|Graph";s:2:"??";s:15:"hits table|Hits";s:3:"???";s:19:"hits table|Last hit";s:6:"??????";s:14:"Admin message:";s:6:"??????";s:20:"Return to galleries.";s:6:"??????";s:6:"log in";s:2:"??";s:110:"Only authorised users are allowed into the admin section.
Please enter your admin username and password below.";s:30:"????????????????
?????????????";s:9:"Username:";s:4:"????";s:9:"Password:";s:3:"???";s:24:"Please choose an option:";s:4:"????";s:27:"Manage galleries and images";s:7:"???????";s:17:"View gallery hits";s:8:"????????";s:23:"Purge cached thumbnails";s:8:"????????";s:15:"Change password";s:4:"????";s:16:"Log out of admin";s:7:"???????";s:11:"new gallery";s:7:"???????";s:11:"Identifier:";s:8:"????????";s:9:"new image";s:5:"?????";s:74:"This image will not be visible because this gallery contains subgalleries.";s:24:"????????????????????????";s:11:"Remote file";s:4:"????";s:13:"URL of image:";s:9:"???URL???";s:10:"Local file";s:4:"????";s:21:"Image file to upload:";s:9:"?????????";s:30:"Use filename of uploaded file.";s:11:"???????????";s:27:"Specify different filename:";s:8:"????????";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:7:"Chinese";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.zh_tw.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:25:"±z¥Ø«e¨S¦³Åv­­°õ¦æ¦¹°Ê§@.";s:13:"Gallery added";s:12:"§¹¦¨·s¼W¬Ûï";s:18:"An error occurred:";s:9:"¥X²{¿ù»~:";s:11:"Image added";s:10:"·Ó¤ù¤w¥[¤J";s:22:"Archive contents added";s:14:"¤w§ó·sÀɮפº®e";s:10:"confirm|OK";s:4:"½T©w";s:17:"Thumbnail changed";s:12:"¹wÄý¹Ï¤wÅܧó";s:14:"confirm|Cancel";s:4:"¨ú®ø";s:15:"Gallery deleted";s:10:"¬Ûï¤w§R°£";s:14:"delete gallery";s:8:"§R°£¬Ûï";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:54:"¬Ûï %s ¤º¤´¦³·Ó¤ù¦s¦b.
½T©w§R°£¦¹¬Ûï¤Î©Ò¦³¤º§t·Ó¤ù?";s:13:"Image deleted";s:10:"·Ó¤ù¤w§R°£";s:12:"delete image";s:8:"§R°£·Ó¤ù";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:31:"½T©w§R°£·Ó¤ù %s (¦ì©ó¬Ûï %s )?";s:12:"User deleted";s:10:"¥Î¤á¤w§R°£";s:11:"delete user";s:8:"§R°£¥Î¤á";s:52:"Are you sure you want to permanently delete user %s?";s:17:"½T©w§R°£¥Î¤á %s ?";s:27:"Welcome to singapore admin!";s:26:"Åwªï¶i¤JsingaporeºÞ²z­¶­±!";s:22:"Thank you and goodbye!";s:5:"¯¬¦n!";s:22:"Thumbnail cache purged";s:18:"²M°£¹wÄý¹Ï§Ö¨ú§¹¦¨";s:23:"purge cached thumbnails";s:14:"²M°£¹wÄý¹Ï§Ö¨ú";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:31:"½T©w²M°£©Ò¦³ %s ±iªº¹wÄý¹Ï§Ö¨ú?";s:36:"Gallery re-indexed. %s images added.";s:31:"¬Ûï¤w­«·s¾ã²z. ·s¼W %s ±i·Ó¤ù.";s:18:"Gallery info saved";s:10:"°T®§¤wÀx¦s";s:24:"Image saved successfully";s:10:"·Ó¤ù¤wÀx¦s";s:14:"Password saved";s:10:"±K½X¤wÀx¦s";s:17:"Permissions saved";s:14:"Åv­­³]©w¤wÀx¦s";s:15:"User info saved";s:14:"¥Î¤á°T®§¤wÀx¦s";s:14:"admin bar|Back";s:8:"ªð¦^¬Ûï";s:15:"admin bar|Admin";s:8:"ºÞ²z¤¤¤ß";s:19:"admin bar|Galleries";s:4:"¬Ûï";s:17:"admin bar|Log out";s:4:"µn¥X";s:22:"admin bar|Edit gallery";s:8:"½s¿è¬Ûï";s:26:"admin bar|Edit permissions";s:8:"½s¿èÅv­­";s:24:"admin bar|Delete gallery";s:8:"§R°£¬Ûï";s:24:"admin bar|New subgallery";s:10:"·s¼W¤l¬Ûï";s:26:"admin bar|Re-index gallery";s:12:"­«·s¾ã²z¬Ûï";s:20:"admin bar|Edit image";s:8:"½s¿è·Ó¤ù";s:22:"admin bar|Delete image";s:8:"§R°£·Ó¤ù";s:19:"admin bar|New image";s:8:"·s¼W·Ó¤ù";s:24:"Could not save user info";s:16:"µLªkÀx¦s¥Î¤á°T®§";s:54:"New password must be between 6 and 16 characters long.";s:30:"±K½Xªø«×¥²¶·¦b6¦Ü16­Ó¦r¤¸¤§¶¡.";s:43:"The new passwords you entered do not match.";s:21:"¨â¦¸¿é¤Jªº±K½X¤£¬Û²Å.";s:72:"The current password you entered does not match the one in the database.";s:27:"¿é¤J±K½X»P²{¦³ªº¸ê®Æ®w¤£²Å.";s:53:"The username specified was not found in the database.";s:11:"µL¦¹¨Ï¥ÎªÌ.";s:31:"Your account has been suspended";s:18:"±zªº±b¸¹¤w¼È°±¨Ï¥Î";s:34:"Username and/or password incorrect";s:20:"¨Ï¥ÎªÌ¦WºÙ©Î±K½X¿ù»~";s:38:"You must enter a username and password";s:22:"½Ð¿é¤J¨Ï¥ÎªÌ¦WºÙ»P±K½X";s:27:"Could not save gallery info";s:16:"µLªkÀx¦s¬Ûï°T®§";s:23:"Username already exists";s:12:"¥Î¤á¦W¤w¦s¦b";s:31:"Cannot delete built in accounts";s:16:"µLªk§R°£¤º´O±b¸¹";s:23:"Username not recognised";s:14:"¥¼ÃѧOªº¨Ï¥ÎªÌ";s:22:"Gallery already exists";s:10:"¬Ûï¤w¦s¦b";s:26:"Could not create directory";s:12:"µLªk«Ø¥ß¥Ø¿ý";s:37:"Cannot delete the top level directory";s:14:"µLªk§R°£®a¥Ø¿ý";s:19:"File already exists";s:10:"Àɮפw¦s¦b";s:21:"Could not upload file";s:12:"µLªk¤W¶ÇÀÉ®×";s:30:"Could not add image to gallery";s:20:"µLªk±N·Ó¤ù¥[¤J¬Û襤";s:38:"Could not find temporary storage space";s:16:"µLªk¨ú±o¼È¦sªÅ¶¡";s:28:"Could not decompress archive";s:14:"µLªk¸ÑÀ£ÁYÀÉ®×";s:40:"Some archive contents could not be added";s:20:"µLªk§ó·s¬Y¨ÇÀɮפº®e";s:32:"Could not save image information";s:16:"µLªkÀx¦s·Ó¤ù°T®§";s:22:"Could not delete image";s:12:"µLªk§R°£·Ó¤ù";s:17:"Select gallery...";s:11:"¿ï¾Ü¬Ûï...";s:16:"choose thumbnail";s:12:"½Ð¿ï¾Ü¹wÄý¹Ï";s:64:"Choose the filename of the image used to represent this gallery.";s:23:"½Ð¿ï¾Ü¥Nªí¦¹¬Û蠟·Ó¤ù.";s:14:"thumbnail|None";s:6:"¤£¨Ï¥Î";s:16:"thumbnail|Random";s:8:"ÀH¾÷¥X²{";s:12:"edit gallery";s:8:"½s¿è¬Ûï";s:9:"Thumbnail";s:6:"¹wÄý¹Ï";s:16:"Random
thumbnail";s:15:"ÀH¾÷¥X²{
¹wÄý¹Ï";s:19:"thumbnail|Change...";s:4:"­×§ï";s:12:"Gallery name";s:8:"¬Ûï¦WºÙ";s:11:"Artist name";s:6:"Äá¼vªÌ";s:7:"Summary";s:4:"ºK­n";s:10:"edit image";s:8:"½s¿è·Ó¤ù";s:5:"Image";s:4:"·Ó¤ù";s:10:"Image name";s:8:"·Ó¤ù¦WºÙ";s:15:"change password";s:8:"­×§ï±K½X";s:67:"Please choose a new password between 6 and 16 characters in length.";s:28:"½Ð¿é¤Jªø«×6¦Ü16¦r¤¸ªº·s±K½X.";s:17:"Current password:";s:9:"¥Ø«e±K½X:";s:13:"New password:";s:7:"·s±K½X:";s:17:"Confirm password:";s:9:"½T»{±K½X:";s:16:"edit permissions";s:12:"³]¸m¨Ï¥ÎÅv­­";s:5:"Owner";s:6:"©Ò¦³¤H";s:6:"Groups";s:4:"¸s²Õ";s:17:"Group permissions";s:8:"¸s²ÕÅv­­";s:16:"permissions|Read";s:4:"Ū¨ú";s:16:"permissions|Edit";s:4:"½s¿è";s:15:"permissions|Add";s:4:"·s¼W";s:18:"permissions|Delete";s:4:"§R°£";s:17:"World permissions";s:8:"¥þ§½Åv­­";s:15:"user management";s:8:"ºÞ²z¥Î¤á";s:8:"Username";s:8:"¥Î¤á¦WºÙ";s:4:"Type";s:4:"Ãþ«¬";s:13:"Administrator";s:6:"ºÞ²z­û";s:4:"User";s:4:"¥Î¤á";s:9:"Full name";s:4:"¥þ¦W";s:8:"Password";s:4:"±K½X";s:22:"admin bar|View gallery";s:8:"Æ[¬Ý¬Ûï";s:26:"admin bar|Change thumbnail";s:10:"§ó§ï¹wÄý¹Ï";s:16:"hits table|Graph";s:4:"¹Ïªí";s:15:"hits table|Hits";s:6:"ÂsÄý¼Æ";s:19:"hits table|Last hit";s:12:"³Ì«á¤@¦¸ÂsÄý";s:14:"Admin message:";s:11:"ºÞ²z­û°T®§:";s:6:"log in";s:4:"µn¤J";s:52:"Please enter your admin username and password below.";s:22:"½Ð¿é¤JºÞ²z­û¦WºÙ»P±K½X";s:9:"Username:";s:9:"¥Î¤á¦WºÙ:";s:9:"Password:";s:5:"±K½X:";s:61:"If you do not have a username then you may log in as a guest.";s:41:"¦pªG±z¨S¦³¨Ï¥ÎªÌ±b¸¹, ¥i¥ý¥H¨Ó»«¨­¥÷µn¤J.";s:49:"You must be an administrator to access this area.";s:30:"ºÞ²z¤¤¤ß. «DºÞ²z­û¤£¯à¶i¨Ó³á^^";s:6:"Email:";s:5:"«H½c:";s:10:"Full name:";s:5:"¥þ¦W:";s:4:"edit";s:4:"½s¿è";s:6:"delete";s:4:"§R°£";s:7:"suspend";s:8:"ÀÁ¸m¥Î¤á";s:9:"unsuspend";s:8:"¨ú®øÀÁ¸m";s:15:"create new user";s:10:"·s¼W¨Ï¥ÎªÌ";s:24:"Please choose an option:";s:15:"½Ð¿ï¾Ü¤@­Ó¿ï¶µ:";s:27:"Manage galleries and images";s:14:"ºÞ²z¬Ûï©M·Ó¤ù";s:17:"View gallery hits";s:10:"¬d¬ÝÂsÄý¼Æ";s:15:"Change password";s:8:"­×§ï±K½X";s:10:"My profile";s:6:"Ãö©ó§Ú";s:12:"Manage users";s:10:"ºÞ²z¨Ï¥ÎªÌ";s:23:"Purge cached thumbnails";s:14:"²M°£¹wÄý¹Ï§Ö¨ú";s:16:"Log out of admin";s:12:"µn¥XºÞ²z­¶­±";s:11:"new gallery";s:10:"«Ø¥ß·s¬Ûï";s:11:"Identifier:";s:9:"ÃѧO¦WºÙ:";s:9:"new image";s:8:"·s¼W·Ó¤ù";s:74:"This image will not be visible because this gallery contains subgalleries.";s:45:"¥Ñ©ó¬Û襤¥]§t¦³¤l¬Û¥», ©Ò¥H¦¹·Ó¤ù±N¤£³QÅã¥Ü.";s:18:"Upload single file";s:12:"¤W¶Ç³æ¤@ÀÉ®×";s:21:"Image file to upload:";s:19:"½Ð¿ï¾Ü±ý¤W¶Çªº·Ó¤ù:";s:30:"Use filename of uploaded file.";s:13:"¨Ï¥Î­ì¦³ÀɦW.";s:27:"Specify different filename:";s:13:"«ü©w¨ä¥LÀɦW:";s:21:"Upload multiple files";s:12:"¤W¶Ç¦h­ÓÀÉ®×";s:19:"ZIP file to upload:";s:21:"½Ð¿ï¾Ü±ý¤W¶ÇªºÀ£ÁYÀÉ:";s:15:"Add remote file";s:12:"·s¼W»·ºÝÀÉ®×";s:13:"URL of image:";s:9:"·Ó¤ù³sµ²:";i:0;a:3:{s:7:"charset";s:4:"big5";s:8:"language";s:26:"Traditional Chinese (Big5)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.admin.zh_tw_utf8.pmo
0,0 → 1,5
a:139:{s:53:"You do not have permission to perform this operation.";s:0:"";s:13:"Gallery added";s:15:"相本已加入";s:18:"An error occurred:";s:13:"錯誤發生:";s:11:"Image added";s:15:"照片已加入";s:22:"Archive contents added";s:0:"";s:10:"confirm|OK";s:6:"確定";s:17:"Thumbnail changed";s:18:"預覽圖已變更";s:14:"confirm|Cancel";s:6:"取消";s:15:"Gallery deleted";s:15:"相本已刪除";s:14:"delete gallery";s:12:"刪除相本";s:118:"Gallery %s is not empty.
Are you sure you want to irretrievably delete it and all subgalleries and images it contains?";s:77:"相本 %s 內仍有照片存在.
確定刪除此相本及所有內含照片?";s:13:"Image deleted";s:15:"照片已刪除";s:12:"delete image";s:12:"刪除照片";s:71:"Are you sure you want to irretrievably delete image %s from gallery %s?";s:41:"確定刪除照片 %s (位於相本 %s )?";s:12:"User deleted";s:15:"相本已刪除";s:11:"delete user";s:12:"刪除相本";s:52:"Are you sure you want to permanently delete user %s?";s:41:"確定刪除照片 %s (位於相本 %s )?";s:27:"Welcome to singapore admin!";s:34:"歡迎進入singapore管理頁面!";s:22:"Thank you and goodbye!";s:13:"歡迎使用!";s:22:"Thumbnail cache purged";s:27:"預覽圖快取刪除完成";s:23:"purge cached thumbnails";s:21:"刪除預覽圖快取";s:57:"Are you sure you want to delete all %s cached thumbnails?";s:41:"確定刪除所有 %s 的預覽圖快取?";s:36:"Gallery re-indexed. %s images added.";s:0:"";s:18:"Gallery info saved";s:15:"訊息已儲存";s:24:"Image saved successfully";s:15:"照片已儲存";s:14:"Password saved";s:15:"密碼已儲存";s:17:"Permissions saved";s:15:"密碼已儲存";s:15:"User info saved";s:15:"訊息已儲存";s:14:"admin bar|Back";s:6:"返回";s:15:"admin bar|Admin";s:12:"管理頁面";s:19:"admin bar|Galleries";s:12:"相本列表";s:17:"admin bar|Log out";s:6:"登出";s:22:"admin bar|Edit gallery";s:12:"編輯相本";s:26:"admin bar|Edit permissions";s:12:"編輯相本";s:24:"admin bar|Delete gallery";s:12:"刪除相本";s:24:"admin bar|New subgallery";s:15:"新增子相本";s:26:"admin bar|Re-index gallery";s:12:"刪除相本";s:20:"admin bar|Edit image";s:12:"編輯照片";s:22:"admin bar|Delete image";s:12:"刪除照片";s:19:"admin bar|New image";s:12:"新增照片";s:24:"Could not save user info";s:24:"無法儲存相本訊息";s:54:"New password must be between 6 and 16 characters long.";s:43:"密碼長度必須在6至16個字元之間.";s:43:"The new passwords you entered do not match.";s:31:"兩次輸入的密碼不相符.";s:72:"The current password you entered does not match the one in the database.";s:31:"輸入密碼與資料庫不符.";s:53:"The username specified was not found in the database.";s:19:"使用者不存在.";s:31:"Your account has been suspended";s:0:"";s:34:"Username and/or password incorrect";s:30:"使用者名稱或密碼錯誤";s:38:"You must enter a username and password";s:33:"請輸入使用者名稱與密碼";s:27:"Could not save gallery info";s:24:"無法儲存相本訊息";s:23:"Username already exists";s:15:"檔案已存在";s:31:"Cannot delete built in accounts";s:0:"";s:23:"Username not recognised";s:0:"";s:22:"Gallery already exists";s:15:"相本已存在";s:26:"Could not create directory";s:18:"無法建立目錄";s:37:"Cannot delete the top level directory";s:21:"無法刪除家目錄";s:19:"File already exists";s:15:"檔案已存在";s:21:"Could not upload file";s:18:"無法上傳檔案";s:30:"Could not add image to gallery";s:30:"無法將照片加入相本中";s:38:"Could not find temporary storage space";s:0:"";s:28:"Could not decompress archive";s:18:"無法刪除照片";s:40:"Some archive contents could not be added";s:0:"";s:32:"Could not save image information";s:24:"無法儲存照片訊息";s:22:"Could not delete image";s:18:"無法刪除照片";s:17:"Select gallery...";s:12:"刪除相本";s:16:"choose thumbnail";s:18:"請選擇預覽圖";s:64:"Choose the filename of the image used to represent this gallery.";s:34:"請選擇代表此相本之照片.";s:14:"thumbnail|None";s:18:"不使用預覽圖";s:16:"thumbnail|Random";s:12:"隨機出現";s:12:"edit gallery";s:12:"編輯相本";s:9:"Thumbnail";s:18:"不使用預覽圖";s:16:"Random
thumbnail";s:22:"隨機出現
預覽圖";s:19:"thumbnail|Change...";s:6:"修改";s:12:"Gallery name";s:12:"相本名稱";s:11:"Artist name";s:6:"作者";s:7:"Summary";s:0:"";s:10:"edit image";s:12:"編輯照片";s:5:"Image";s:6:"照片";s:10:"Image name";s:12:"照片名稱";s:15:"change password";s:12:"修改密碼";s:67:"Please choose a new password between 6 and 16 characters in length.";s:40:"請輸入長度6至16字元的新密碼.";s:17:"Current password:";s:13:"目前密碼:";s:13:"New password:";s:10:"新密碼:";s:17:"Confirm password:";s:13:"確認密碼:";s:16:"edit permissions";s:0:"";s:5:"Owner";s:0:"";s:6:"Groups";s:0:"";s:17:"Group permissions";s:0:"";s:16:"permissions|Read";s:0:"";s:16:"permissions|Edit";s:0:"";s:15:"permissions|Add";s:0:"";s:18:"permissions|Delete";s:0:"";s:17:"World permissions";s:0:"";s:15:"user management";s:0:"";s:8:"Username";s:16:"使用者名稱:";s:4:"Type";s:0:"";s:13:"Administrator";s:0:"";s:4:"User";s:16:"使用者名稱:";s:9:"Full name";s:12:"相本名稱";s:8:"Password";s:7:"密碼:";s:22:"admin bar|View gallery";s:15:"新增子相本";s:26:"admin bar|Change thumbnail";s:15:"新增子相本";s:16:"hits table|Graph";s:6:"圖片";s:15:"hits table|Hits";s:9:"瀏覽數";s:19:"hits table|Last hit";s:18:"最後一次瀏覽";s:14:"Admin message:";s:16:"管理員訊息:";s:6:"log in";s:6:"登入";s:52:"Please enter your admin username and password below.";s:33:"請輸入使用者名稱與密碼";s:9:"Username:";s:16:"使用者名稱:";s:9:"Password:";s:7:"密碼:";s:61:"If you do not have a username then you may log in as a guest.";s:0:"";s:49:"You must be an administrator to access this area.";s:0:"";s:6:"Email:";s:0:"";s:10:"Full name:";s:12:"相本名稱";s:4:"edit";s:0:"";s:6:"delete";s:12:"刪除照片";s:7:"suspend";s:0:"";s:9:"unsuspend";s:0:"";s:15:"create new user";s:0:"";s:24:"Please choose an option:";s:22:"請選擇一個選項:";s:27:"Manage galleries and images";s:21:"管理相本和照片";s:17:"View gallery hits";s:15:"查看瀏覽數";s:15:"Change password";s:12:"修改密碼";s:10:"My profile";s:0:"";s:12:"Manage users";s:0:"";s:23:"Purge cached thumbnails";s:21:"刪除預覽圖快取";s:16:"Log out of admin";s:18:"登出管理頁面";s:11:"new gallery";s:15:"建立新相本";s:11:"Identifier:";s:13:"檔案名稱:";s:9:"new image";s:12:"新增照片";s:74:"This image will not be visible because this gallery contains subgalleries.";s:63:"由於此相本包含有子相本, 所以此照片無法瀏覽.";s:18:"Upload single file";s:0:"";s:21:"Image file to upload:";s:28:"請選擇欲上傳的照片:";s:30:"Use filename of uploaded file.";s:19:"使用原有檔名.";s:27:"Specify different filename:";s:19:"自行指定檔名.";s:21:"Upload multiple files";s:0:"";s:19:"ZIP file to upload:";s:28:"請選擇欲上傳的照片:";s:15:"Add remote file";s:12:"遠端檔案";s:13:"URL of image:";s:10:"照片URL:";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:7:"Chinese";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.bg.pmo
0,0 → 1,0
a:2:{s:20:"Digital manipulation";s:37:"Софтуерна обработка";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:9:"Bulgarian";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.ca.pmo
0,0 → 1,3
a:37:{s:26:"Page created in %s seconds";s:26:"Pàgina creada en %s segons";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:25:"Tots els drets reservats.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:119:"Les imatges no poden ser reproduïdes de cap manera sense el consentiment exprés i per escrit del propietari dels drets.";s:6:"Log in";s:11:"Administrar";s:24:"crumb line|You are here:";s:11:"Estàs aquí:";s:10:"%s gallery";a:2:{i:0;s:10:"%s galería";i:1;s:11:"%s galeríes";}s:8:"%s image";a:2:{i:0;s:9:"%s imatge";i:1;s:10:"%s imatges";}s:25:"Sample image from gallery";s:30:"Imatge de mostra de la galería";s:12:"No
thumbnail";s:18:"Sense
vista previa";s:19:"Showing %s-%s of %s";s:20:"Mostrant %s-%s de %s";s:10:"gallery|Up";s:5:"Pujar";s:20:"gallery|Up one level";s:15:"Pujar un nivell";s:16:"gallery|Previous";s:8:"Anterior";s:13:"gallery|First";s:7:"Primera";s:12:"gallery|Next";s:7:"Següent";s:12:"gallery|Last";s:6:"Última";s:17:"artist name|by %s";s:6:"per %s";s:5:"Email";s:17:"Correu electrònic";s:11:"Description";s:10:"Descripció";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:8:"Visitada";s:14:"viewed|%s time";a:2:{i:0;s:10:"%s vegades";i:1;s:8:"%s veces";}s:13:"Add a comment";s:21:"Insertar un comentari";s:14:"image|Previous";s:8:"Anterior";s:11:"image|First";s:7:"primera";s:16:"image|Thumbnails";s:10:"Miniatures";s:10:"image|Next";s:7:"Següent";s:10:"image|Last";s:6:"Última";s:8:"Location";s:12:"Localització";s:4:"Date";s:4:"Data";s:6:"Camera";s:6:"Càmera";s:4:"Lens";s:5:"Lents";s:4:"Film";s:8:"Película";s:21:"Darkroom manipulation";s:31:"Manipulació a l'habitació fosca";s:20:"Digital manipulation";s:19:"Manipulació digital";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:16:"Catalan (Català)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.cs.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:23:"Galerie nenalezena '%s'";s:20:"Image not found '%s'";s:22:"Obrázek nenalezen '%s'";s:8:"email|at";s:1:"@";s:9:"email|dot";s:1:".";s:26:"Page created in %s seconds";s:33:"Stránka vygenerována za %s vteøin";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:24:"V¹echna práva vyhrazena.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:97:"Obrázky nesmí být ¾ádným zpùsobem reprodukovány bez písemného souhlasu vlastníka autorských práv.";s:6:"Log in";s:12:"Pøihla¹te se";s:24:"crumb line|You are here:";s:9:"Jste zde:";s:10:"image|Next";s:5:"Dal¹í";s:16:"image|Thumbnails";s:7:"Náhledy";s:14:"image|Previous";s:9:"Pøedchozí";s:18:"Select language...";s:13:"Vyberte jazyk";s:2:"Go";s:8:"Do toho!";s:18:"Select template...";s:18:"Vyberte ¹ablonu...";s:10:"%s gallery";a:2:{i:0;s:10:"%s galerie";i:1;s:10:"%s galerií";}s:8:"%s image";a:2:{i:0;s:10:"%s obrázek";i:1;s:10:"%s obrázkù";}s:12:"No
thumbnail";s:11:"Bez
náhledu";s:25:"Sample image from gallery";s:26:"Ukázkový obrázek z galerie";s:19:"Showing %s-%s of %s";s:20:"Zobrazeno %s-%s z %s";s:10:"gallery|Up";s:6:"Nahoru";s:20:"gallery|Up one level";s:15:"Nahoru o úroveò";s:16:"gallery|Previous";s:9:"Pøedchozí";s:13:"gallery|First";s:5:"První";s:12:"gallery|Next";s:5:"Dal¹í";s:12:"gallery|Last";s:8:"Poslední";s:17:"artist name|by %s";s:5:"od %s";s:5:"Email";s:5:"Email";s:11:"Description";s:5:"Popis";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:9:"Zobrazeno";s:14:"viewed|%s time";a:2:{i:0;s:7:"%s krát";i:1;s:7:"%s krát";}s:13:"Add a comment";s:15:"Pøidat komentáø";s:11:"image|First";s:5:"První";s:10:"image|Last";s:8:"Poslední";s:8:"Location";s:8:"Umístìní";s:4:"Date";s:5:"Datum";s:6:"Camera";s:5:"Fo»ák";s:4:"Lens";s:5:"Èoèka";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:21:"Úpravy pøi vyvolávání";s:20:"Digital manipulation";s:17:"Digitálnáí úpravy";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:5:"Czech";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.cs_utf8.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:23:"Galerie '%s' nenalezena";s:20:"Image not found '%s'";s:23:"Obrázek '%s' nenalezen";s:8:"email|at";s:9:"zavináč";s:9:"email|dot";s:6:"tečka";s:26:"Page created in %s seconds";s:35:"Stránka vygenerována za %s sekund";s:23:"singapore|Powered by %s";s:18:"Provozováno na %s";s:20:"All rights reserved.";s:26:"Všechna práva vyhrazena.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:113:"Obrázky nesmí být jakkoli reprodukovány či kopírovány bez písemného souhlasu autora či držitele práv.";s:6:"Log in";s:14:"Přihlášení";s:24:"crumb line|You are here:";s:18:"Nacházíte se v: ";s:10:"image|Next";s:7:"Další";s:16:"image|Thumbnails";s:8:"Náhledy";s:14:"image|Previous";s:11:"Předchozí";s:18:"Select language...";s:16:"Vyberte jazyk...";s:2:"Go";s:5:"Vstup";s:18:"Select template...";s:19:"Vyberte šablonu...";s:10:"%s gallery";a:2:{i:0;s:10:"%s galerie";i:1;s:11:"%s galerií";}s:8:"%s image";a:2:{i:0;s:11:"%s obrázek";i:1;s:12:"%s obrázků";}s:12:"No
thumbnail";s:13:"Není
náhled";s:25:"Sample image from gallery";s:27:"Vzorový obrázek z galerie";s:19:"Showing %s-%s of %s";s:20:"Zobrazuji %s-%s z %s";s:10:"gallery|Up";s:6:"Nahoru";s:20:"gallery|Up one level";s:23:"Nahoru o jednu úroveň";s:16:"gallery|Previous";s:11:"Předchozí";s:13:"gallery|First";s:6:"První";s:12:"gallery|Next";s:7:"Další";s:12:"gallery|Last";s:9:"Poslední";s:17:"artist name|by %s";s:5:"od %s";s:5:"Email";s:5:"Email";s:11:"Description";s:5:"Popis";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:9:"Zobrazeno";s:14:"viewed|%s time";a:2:{i:0;s:8:"%s krát";i:1;s:8:"%s krát";}s:13:"Add a comment";s:18:"Přidat komentář";s:11:"image|First";s:6:"První";s:10:"image|Last";s:9:"Poslední";s:8:"Location";s:6:"Místo";s:4:"Date";s:5:"Datum";s:6:"Camera";s:11:"Fotoaparát";s:4:"Lens";s:7:"Čočka";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:22:"Zpracování v komoře";s:20:"Digital manipulation";s:24:"Digitální zpracování";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:13:"Czech (UTF-8)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.da.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:6:"E-mail";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:27:"Siden lavet på; %s sekunder";s:23:"singapore|Powered by %s";s:12:"Lavet med %s";s:20:"All rights reserved.";s:23:"Alle rettigheder haves.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:95:"Billeder må ikke reproduceres i nogen form uden skriftlig tilladelse af rettighedsindehaveren. ";s:6:"Log in";s:7:"Log ind";s:24:"crumb line|You are here:";s:10:"Du er her:";s:10:"image|Next";s:5:"Næste";s:16:"image|Thumbnails";s:10:"Miniaturer";s:14:"image|Previous";s:7:"Forrige";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:10:"%s galleri";i:1;s:12:"%s gallerier";}s:8:"%s image";a:2:{i:0;s:10:"%s billede";i:1;s:11:"%s billeder";}s:12:"No
thumbnail";s:15:"Ingen
miniature";s:25:"Sample image from gallery";s:28:"Eksempel billede fra galleri";s:19:"Showing %s-%s of %s";s:17:"Viser %s-%s af %s";s:10:"gallery|Up";s:2:"Op";s:20:"gallery|Up one level";s:12:"Et niveau op";s:16:"gallery|Previous";s:7:"Forrige";s:13:"gallery|First";s:6:"Første";s:12:"gallery|Next";s:5:"Næste";s:12:"gallery|Last";s:6:"Sidste";s:17:"artist name|by %s";s:5:"af %s";s:5:"Email";s:6:"E-mail";s:11:"Description";s:11:"Beskrivelse";s:9:"Copyright";s:0:"";s:6:"Viewed";s:3:"Set";s:14:"viewed|%s time";a:2:{i:0;s:7:"%s gang";i:1;s:8:"%s gange";}s:13:"Add a comment";s:16:"Tilføj kommentar";s:11:"image|First";s:6:"Første";s:10:"image|Last";s:6:"Sidste";s:8:"Location";s:9:"Placering";s:4:"Date";s:4:"Dato";s:6:"Camera";s:6:"Kamera";s:4:"Lens";s:5:"Optik";s:4:"Film";s:0:"";s:21:"Darkroom manipulation";s:22:"Mørkerums manupulation";s:20:"Digital manipulation";s:20:"Digital manipulation";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:14:"Danish (Dansk)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.de.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:25:"Galerie %s nicht gefunden";s:20:"Image not found '%s'";s:22:"Bild %s nicht gefunden";s:8:"email|at";s:2:"at";s:9:"email|dot";s:5:"punkt";s:26:"Page created in %s seconds";s:30:"Seite in %s Sekunden erstellt.";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:24:"Alle Rechte vorbehalten.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:96:"Die Bilder dürfen nicht ohne ausdrückliche schriftliche Genehmigung des Urhebers kopiert werden.";s:6:"Log in";s:9:"Anmeldung";s:24:"crumb line|You are here:";s:14:"Sie sind hier:";s:10:"image|Next";s:8:"Nächstes";s:16:"image|Thumbnails";s:9:"Übersicht";s:14:"image|Previous";s:10:"Vorheriges";s:18:"Select language...";s:17:"Sprache wählen...";s:2:"Go";s:5:"Start";s:18:"Select template...";s:18:"Template wählen...";s:10:"%s gallery";a:2:{i:0;s:10:"%s Galerie";i:1;s:11:"%s Galerien";}s:8:"%s image";a:2:{i:0;s:7:"%s Bild";i:1;s:9:"%s Bilder";}s:12:"No
thumbnail";s:24:"Keine Vorschau
verfügbar";s:25:"Sample image from gallery";s:28:"Vorschaubild für die Galerie";s:19:"Showing %s-%s of %s";s:22:"Zeige %s bis %s von %s";s:10:"gallery|Up";s:9:"nach oben";s:20:"gallery|Up one level";s:21:"Eine Ebene nach oben.";s:16:"gallery|Previous";s:9:"Vorherige";s:13:"gallery|First";s:5:"Erste";s:12:"gallery|Next";s:7:"Nächste";s:12:"gallery|Last";s:6:"Letzte";s:17:"artist name|by %s";s:6:"von %s";s:5:"Email";s:6:"E-Mail";s:11:"Description";s:12:"Beschreibung";s:9:"Copyright";s:12:"Urheberrecht";s:6:"Viewed";s:9:"Angezeigt";s:14:"viewed|%s time";a:2:{i:0;s:14:"%s mal besucht";i:1;s:14:"%s mal besucht";}s:13:"Add a comment";s:20:"Kommentar hinzufügen";s:11:"image|First";s:6:"Erstes";s:10:"image|Last";s:7:"Letztes";s:8:"Location";s:3:"Ort";s:4:"Date";s:5:"Datum";s:6:"Camera";s:6:"Kamera";s:4:"Lens";s:8:"Objektiv";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:16:"Analog verändert";s:20:"Digital manipulation";s:16:"Digtal verändert";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:16:"German (Deutsch)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.es.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:5:"Email";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:29:"Pagina creada en %s segundos";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:30:"Todos los derechos reservados.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:128:"Las imagenes no pueden ser reproducidas en ninguna forma sin el consentimiento expreso y por escrito del dueño de los derechos.";s:6:"Log in";s:5:"Admin";s:24:"crumb line|You are here:";s:11:"Estás aquí:";s:10:"image|Next";s:9:"Siguiente";s:16:"image|Thumbnails";s:14:"Vistas previas";s:14:"image|Previous";s:6:"Previa";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:10:"%s galería";i:1;s:11:"%s galerías";}s:8:"%s image";a:2:{i:0;s:9:"%s imágen";i:1;s:11:"%s imágenes";}s:12:"No
thumbnail";s:16:"Sin
vista previa";s:25:"Sample image from gallery";s:28:"Imagen muestra de la galería";s:19:"Showing %s-%s of %s";s:21:"Mostrando %s-%s de %s";s:10:"gallery|Up";s:6:"Arriba";s:20:"gallery|Up one level";s:14:"Subir un nivel";s:16:"gallery|Previous";s:6:"Previa";s:13:"gallery|First";s:9:"Siguiente";s:12:"gallery|Next";s:9:"Siguiente";s:12:"gallery|Last";s:9:"Siguiente";s:17:"artist name|by %s";s:6:"por %s";s:5:"Email";s:5:"Email";s:11:"Description";s:11:"Descripción";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:8:"Visitada";s:14:"viewed|%s time";a:2:{i:0;s:6:"%s vez";i:1;s:8:"%s veces";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:0:"";s:10:"image|Last";s:0:"";s:8:"Location";s:8:"Locación";s:4:"Date";s:5:"Fecha";s:6:"Camera";s:6:"Cámara";s:4:"Lens";s:5:"Lente";s:4:"Film";s:8:"Película";s:21:"Darkroom manipulation";s:33:"Manipulación en el cuarto obscuro";s:20:"Digital manipulation";s:20:"Manipulación digital";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:17:"Spanish (Español)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.et.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:23:"Galeriid ei leitud '%s'";s:20:"Image not found '%s'";s:20:"Pilti ei leitud '%s'";s:8:"email|at";s:2:"at";s:9:"email|dot";s:5:"punkt";s:26:"Page created in %s seconds";s:28:"Lehekülg loodud %s sekundiga";s:23:"singapore|Powered by %s";s:22:"Kasutatav tarkvara: %s";s:20:"All rights reserved.";s:22:"Kõik õigused kaitstud.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:75:"Pilte ei või reprodutseerida mingil moel ilma nende autori kirjaliku loata.";s:6:"Log in";s:10:"Logi sisse";s:24:"crumb line|You are here:";s:14:"Asukoht lehel:";s:10:"image|Next";s:8:"Järgmine";s:16:"image|Thumbnails";s:10:"Pisipildid";s:14:"image|Previous";s:7:"Eelmine";s:18:"Select language...";s:12:"Vali keel...";s:2:"Go";s:4:"Mine";s:18:"Select template...";s:12:"Vali mall...";s:10:"%s gallery";a:2:{i:0;s:10:"%s galerii";i:1;s:11:"%s galeriid";}s:8:"%s image";a:2:{i:0;s:7:"%s pilt";i:1;s:8:"%s pilti";}s:12:"No
thumbnail";s:14:"Pisipilti
pole";s:25:"Sample image from gallery";s:21:"Näidis pilt galeriist";s:19:"Showing %s-%s of %s";s:20:"Nähtaval %s-%s %s'st";s:10:"gallery|Up";s:4:"Üles";s:20:"gallery|Up one level";s:13:"Üles üks tase";s:16:"gallery|Previous";s:7:"Eelmine";s:13:"gallery|First";s:7:"Esimene";s:12:"gallery|Next";s:8:"Järgmine";s:12:"gallery|Last";s:7:"Viimane";s:17:"artist name|by %s";s:9:"Autor: %s";s:5:"Email";s:16:"E-posti aadress:";s:11:"Description";s:9:"Kirjeldus";s:9:"Copyright";s:11:"Autoriõigus";s:6:"Viewed";s:8:"Vaadatud";s:14:"viewed|%s time";a:2:{i:0;s:7:"%s kord";i:1;s:8:"%s korda";}s:13:"Add a comment";s:15:"Lisa kommentaar";s:11:"image|First";s:7:"Esimene";s:10:"image|Last";s:7:"Viimane";s:8:"Location";s:7:"Asukoht";s:4:"Date";s:7:"Kuupäev";s:6:"Camera";s:7:"Kaamera";s:4:"Lens";s:9:"Objektiiv";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:21:"Pimiku manipulatsioon";s:20:"Digital manipulation";s:25:"Digitaalne manipulatsioon";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:16:"Estonian (Eesti)";s:6:"plural";s:30:"$nplurals=2;$plural=($n != 1);";}}
/photogallery/locale/singapore.fr.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:5:"Email";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:25:"Page créée en %s secondes";s:23:"singapore|Powered by %s";s:12:"Créé avec %s";s:20:"All rights reserved.";s:21:"Tous droits réservés.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:104:"Reproduction interdite sous toute forme que ce soit sans l'accord écrit de l'auteur ou des ayants droit.";s:6:"Log in";s:9:"Connexion";s:24:"crumb line|You are here:";s:14:"Vous êtes ici:";s:10:"image|Next";s:8:"Suivante";s:16:"image|Thumbnails";s:9:"Vignettes";s:14:"image|Previous";s:10:"Précédente";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:10:"%s galerie";i:1;s:11:"%s galeries";}s:8:"%s image";a:2:{i:0;s:8:"%s image";i:1;s:9:"%s images";}s:12:"No
thumbnail";s:15:"Pas de
vignette";s:25:"Sample image from gallery";s:25:"Echantillon de la Galerie";s:19:"Showing %s-%s of %s";s:21:"Images %s à %s sur %s";s:10:"gallery|Up";s:16:"Niveau Précedent";s:20:"gallery|Up one level";s:16:"Niveau Précedent";s:16:"gallery|Previous";s:10:"Précédente";s:13:"gallery|First";s:8:"Suivante";s:12:"gallery|Next";s:8:"Suivante";s:12:"gallery|Last";s:8:"Suivante";s:17:"artist name|by %s";s:6:"par %s";s:5:"Email";s:5:"Email";s:11:"Description";s:11:"Description";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:9:"Affichage";s:14:"viewed|%s time";a:2:{i:0;s:6:"%s foi";i:1;s:7:"%s fois";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:8:"Suivante";s:10:"image|Last";s:8:"Suivante";s:8:"Location";s:4:"Lieu";s:4:"Date";s:4:"Date";s:6:"Camera";s:8:"Appareil";s:4:"Lens";s:8:"Objectif";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:13:"Retouche Labo";s:20:"Digital manipulation";s:18:"Retouche Numérique";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:17:"French (Français)";s:6:"plural";s:29:"$nplurals=2;$plural=$n>1?1:0;";}}
/photogallery/locale/singapore.hr.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:25:"Galerija nije na?ena '%s'";s:20:"Image not found '%s'";s:22:"Slika nije na?ena '%s'";s:8:"email|at";s:2:"at";s:9:"email|dot";s:3:"dot";s:26:"Page created in %s seconds";s:30:"Stranica kreirana u %s sekundi";s:23:"singapore|Powered by %s";s:15:"Pogonjeno sa %s";s:20:"All rights reserved.";s:19:"Sva prava zadržana.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:86:"Slike se ne mogu reproducirati u niti jednoj formi bez pismene dozvole vlasnika prava.";s:6:"Log in";s:7:"Prijava";s:24:"crumb line|You are here:";s:9:"Lokacija:";s:10:"image|Next";s:9:"Slijede?a";s:16:"image|Thumbnails";s:5:"Ikone";s:14:"image|Previous";s:9:"Prijašnja";s:18:"Select language...";s:18:"Odaberite jezik...";s:2:"Go";s:5:"Kreni";s:18:"Select template...";s:17:"Odaberi izgled...";s:10:"%s gallery";a:2:{i:0;s:11:"%s galerija";i:1;s:11:"%s galerije";}s:8:"%s image";a:2:{i:0;s:8:"%s slika";i:1;s:8:"%s slike";}s:12:"No
thumbnail";s:11:"Nema
ikone";s:25:"Sample image from gallery";s:27:"Primjerak slike iz galerije";s:19:"Showing %s-%s of %s";s:18:"Prikaz %s-%s od %s";s:10:"gallery|Up";s:5:"Iznad";s:20:"gallery|Up one level";s:16:"Jedan nivo iznad";s:16:"gallery|Previous";s:9:"Prijašnja";s:13:"gallery|First";s:4:"Prva";s:12:"gallery|Next";s:9:"Slijede?a";s:12:"gallery|Last";s:6:"Zadnja";s:17:"artist name|by %s";s:5:" - %s";s:5:"Email";s:5:"Email";s:11:"Description";s:4:"Opis";s:9:"Copyright";s:5:"Prava";s:6:"Viewed";s:7:"Gledano";s:14:"viewed|%s time";a:2:{i:0;s:6:"%s put";i:1;s:7:"%s puta";}s:13:"Add a comment";s:14:"Dodaj komentar";s:11:"image|First";s:4:"Prva";s:10:"image|Last";s:6:"Zadnja";s:8:"Location";s:8:"Lokacija";s:4:"Date";s:5:"Datum";s:6:"Camera";s:6:"Kamera";s:4:"Lens";s:4:"Le?e";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:21:"Manipulacija darkroom";s:20:"Digital manipulation";s:22:"Manipulacija digitalna";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:19:"Croatian (Hrvatski)";s:6:"plural";s:107:"$nplurals=3;$plural=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;";}}
/photogallery/locale/singapore.hu.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:6:"E-mail";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:41:"Az oldal %s másodperc alatt töldtõdött le";s:23:"singapore|Powered by %s";s:14:"Fejlesztve: %s";s:20:"All rights reserved.";s:22:"Minden jog fenntartva.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:99:"A képek semmilyen formában nem másolhatók a jogtulajdonosok elõzetes írásbeli hozzájárulása nélkül.";s:6:"Log in";s:14:"Adminisztráció";s:24:"crumb line|You are here:";s:15:"Itt vagy most: ";s:10:"image|Next";s:9:"Következõ";s:16:"image|Thumbnails";s:10:"Elõnézetek";s:14:"image|Previous";s:5:"Elõzõ";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:1:{i:0;s:10:"%s galéria";}s:8:"%s image";a:1:{i:0;s:6:"%s kép";}s:12:"No
thumbnail";s:14:"Nincs
elõnézet";s:25:"Sample image from gallery";s:21:"Mintakép a galériából";s:19:"Showing %s-%s of %s";s:25:"Megjelenítve %s - %s / %s";s:10:"gallery|Up";s:3:"Fel";s:20:"gallery|Up one level";s:20:"Egy szinttel feljebb";s:16:"gallery|Previous";s:5:"Elõzõ";s:13:"gallery|First";s:9:"Következõ";s:12:"gallery|Next";s:9:"Következõ";s:12:"gallery|Last";s:9:"Következõ";s:17:"artist name|by %s";s:8:"%s által";s:5:"Email";s:6:"E-mail";s:11:"Description";s:6:"Leírás";s:9:"Copyright";s:9:"Jogvédett";s:6:"Viewed";s:12:"Megjelenítve";s:14:"viewed|%s time";a:1:{i:0;s:13:"%s alkalommal";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:9:"Következõ";s:10:"image|Last";s:9:"Következõ";s:8:"Location";s:4:"Hely";s:4:"Date";s:5:"Dátum";s:6:"Camera";s:6:"Kamera";s:4:"Lens";s:6:"Lencse";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:25:"Szerkesztés sötétkamrában";s:20:"Digital manipulation";s:20:"Digitális átalakítás";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:18:"Hungarian (Magyar)";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.is.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:24:"Fann ekki myndasafn '%s'";s:20:"Image not found '%s'";s:19:"Fann ekki mynd '%s'";s:8:"email|at";s:3:"að";s:9:"email|dot";s:7:"punktur";s:26:"Page created in %s seconds";s:32:"Síða búin til á %s sekúndum";s:23:"singapore|Powered by %s";s:11:"Keyrt á %s";s:20:"All rights reserved.";s:24:"Allur réttur áskilinn.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:100:"Óleyfilegt er að afrita myndir á neinn hátt nema með skriflegu leyfi handhafa höfundarréttar.";s:6:"Log in";s:8:"Innskrá";s:24:"crumb line|You are here:";s:14:"Þú ert hér:";s:10:"image|Next";s:6:"Næsta";s:16:"image|Thumbnails";s:10:"Smámyndir";s:14:"image|Previous";s:5:"Fyrri";s:18:"Select language...";s:18:"Veldu tungumál...";s:2:"Go";s:4:"Fara";s:18:"Select template...";s:18:"Veldu sniðmát...";s:10:"%s gallery";a:2:{i:0;s:12:"%s myndasafn";i:1;s:13:"%s myndasöfn";}s:8:"%s image";a:2:{i:0;s:7:"%s mynd";i:1;s:9:"%s myndir";}s:12:"No
thumbnail";s:14:"Engin
smámynd";s:25:"Sample image from gallery";s:28:"Dæmi um mynd úr myndasafni";s:19:"Showing %s-%s of %s";s:17:"Sýni %s-%s af %s";s:10:"gallery|Up";s:3:"Upp";s:20:"gallery|Up one level";s:16:"Upp um eitt stig";s:16:"gallery|Previous";s:5:"Fyrri";s:13:"gallery|First";s:6:"Fyrsta";s:12:"gallery|Next";s:6:"Næsta";s:12:"gallery|Last";s:9:"Síðasta";s:17:"artist name|by %s";s:8:"eftir %s";s:5:"Email";s:15:"Tölvupóstfang";s:11:"Description";s:7:"Lýsing";s:9:"Copyright";s:15:"Höfundaréttur";s:6:"Viewed";s:8:"Skoðuð";s:14:"viewed|%s time";a:2:{i:0;s:8:"%s sinni";i:1;s:9:"%s sinnum";}s:13:"Add a comment";s:21:"Bæta við athugasemd";s:11:"image|First";s:6:"Fyrsta";s:10:"image|Last";s:9:"Síðasta";s:8:"Location";s:12:"Staðsetning";s:4:"Date";s:10:"Dagsetning";s:6:"Camera";s:9:"Myndavél";s:4:"Lens";s:5:"Linsa";s:4:"Film";s:5:"Filma";s:21:"Darkroom manipulation";s:30:"Meðhöndlun í myrkraherbergi";s:20:"Digital manipulation";s:21:"Stafræn meðhöndlun";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:21:"Icelandic (Íslenska)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.it.pmo
0,0 → 1,4
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:6:"E-mail";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:29:"Pagina generata in %s secondi";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:26:"Tutti i diritti riservati.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:120:"Le immagini non possono essere riprodotte in nessuna forma senza il permesso scritto del detentore dei diritti d'autore.";s:6:"Log in";s:12:"Esegui login";s:24:"crumb line|You are here:";s:15:"Vi trovate qui:";s:10:"image|Next";s:8:"Prossima";s:16:"image|Thumbnails";s:9:"Anteprima";s:14:"image|Previous";s:10:"Precedente";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:11:"%s galleria";i:1;s:11:"%s gallerie";}s:8:"%s image";a:2:{i:0;s:11:"%s immagine";i:1;s:11:"%s immagini";}s:12:"No
thumbnail";s:30:"Nessuna
antemprima
disponibile";s:25:"Sample image from gallery";s:32:"Imagine d'esempio della galleria";s:19:"Showing %s-%s of %s";s:11:"%s-%s di %s";s:10:"gallery|Up";s:17:"Livello superiore";s:20:"gallery|Up one level";s:16:"Su di un livello";s:16:"gallery|Previous";s:10:"Precedente";s:13:"gallery|First";s:8:"Prossimo";s:12:"gallery|Next";s:8:"Prossimo";s:12:"gallery|Last";s:8:"Prossimo";s:17:"artist name|by %s";s:16:"realizzata da %s";s:5:"Email";s:6:"E-mail";s:11:"Description";s:11:"Descrizione";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:12:"Visualizzata";s:14:"viewed|%s time";a:1:{i:0;s:8:"%s volte";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:8:"Prossima";s:10:"image|Last";s:8:"Prossima";s:8:"Location";s:8:"Località";s:4:"Date";s:4:"Data";s:6:"Camera";s:10:"Fotocamera";s:4:"Lens";s:5:"Lenti";s:4:"Film";s:9:"Pellicola";s:21:"Darkroom manipulation";s:26:"Modifiche in camera oscura";s:20:"Digital manipulation";s:18:"Modifiche digitali";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:18:"Italian (Italiano)";s:6:"plural";s:33:"$nplurals=2;$plural=$n>1 ? 0 : 1;";}}
/photogallery/locale/singapore.ja.pmo
0,0 → 1,2
a:37:{s:26:"Page created in %s seconds";s:20:"¥Ú¡¼¥¸À¸À®»þ´Ö %s ÉÃ";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:38:"Ãøºî¸¢¤ÏÅö¥µ¥¤¥È¤Î´ÉÍý¼Ô¤Ëµ¢Â°¤·¤Þ¤¹¡£";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:68:"Ãøºî¸¢¼Ô¤Î½ñÌ̤ˤè¤ëµöÂú̵¤·¤Ë²èÁü¤ÎÊ£À½¡¦ºÆÍøÍѤ¹¤ë¤³¤È¤ò¶Ø¤¸¤Þ¤¹¡£";s:6:"Log in";s:8:"¥í¥°¥¤¥ó";s:24:"crumb line|You are here:";s:9:"¸½ºß°ÌÃÖ:";s:25:"Sample image from gallery";s:22:"¥®¥ã¥é¥ê¡¼¥µ¥ó¥×¥ë²èÁü";s:12:"No
thumbnail";s:14:"¥µ¥à¥Í¥¤¥ë̵¤·";s:19:"Showing %s-%s of %s";s:25:"%s-%s ¤òɽ¼¨Ãæ ( %s ËçÃæ)";s:10:"gallery|Up";s:4:"¾å¤Ø";s:20:"gallery|Up one level";s:11:"1¥ì¥Ù¥ë¾å¤Ø";s:16:"gallery|Previous";s:4:"Á°¤Ø";s:13:"gallery|First";s:6:"ºÇ½é¤Ø";s:12:"gallery|Next";s:4:"¼¡¤Ø";s:12:"gallery|Last";s:6:"ºÇ¸å¤Ø";s:17:"artist name|by %s";s:5:"by %s";s:5:"Email";s:14:"¥á¡¼¥ë¥¢¥É¥ì¥¹";s:11:"Description";s:4:"ÀâÌÀ";s:9:"Copyright";s:6:"Ãøºî¸¢";s:6:"Viewed";s:8:"±ÜÍ÷²ó¿ô";s:13:"Add a comment";s:18:"¥³¥á¥ó¥È¤òÄɲ乤ë";s:14:"image|Previous";s:4:"Á°¤Ø";s:11:"image|First";s:6:"ºÇ½é¤Ø";s:16:"image|Thumbnails";s:10:"¥µ¥à¥Í¥¤¥ë";s:10:"image|Next";s:4:"¼¡¤Ø";s:10:"image|Last";s:6:"ºÇ¸å¤Ø";s:8:"Location";s:8:"»£±Æ¾ì½ê";s:4:"Date";s:6:"»£±ÆÆü";s:6:"Camera";s:6:"¥«¥á¥é";s:4:"Lens";s:6:"¥ì¥ó¥º";s:4:"Film";s:8:"¥Õ¥£¥ë¥à";s:21:"Darkroom manipulation";s:8:"°Å¼¼½èÍý";s:20:"Digital manipulation";s:12:"ÅŻҰż¼½èÍý";s:10:"%s gallery";a:2:{i:0;s:15:"¥®¥ã¥é¥ê¡¼¿ô %s";i:1;s:15:"¥®¥ã¥é¥ê¡¼¿ô %s";}s:8:"%s image";a:2:{i:0;s:9:"²èÁü¿ô %s";i:1;s:11:""²èÁü¿ô %s"";}s:14:"viewed|%s time";a:2:{i:0;s:5:"%s ²ó";i:1;s:5:"%s ²ó";}i:0;a:3:{s:7:"charset";s:6:"EUC-JP";s:8:"language";s:17:"Japanese (EUC-JP)";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.ja_utf8.pmo
0,0 → 1,2
a:37:{s:26:"Page created in %s seconds";s:28:"ページ生成時間 %s 秒";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:57:"著作権は当サイトの管理者に帰属します。";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:102:"著作権者の書面による許諾無しに画像の複製・再利用することを禁じます。";s:6:"Log in";s:12:"ログイン";s:24:"crumb line|You are here:";s:13:"現在位置:";s:25:"Sample image from gallery";s:33:"ギャラリーサンプル画像";s:12:"No
thumbnail";s:21:"サムネイル無し";s:19:"Showing %s-%s of %s";s:31:"%s-%s を表示中 ( %s 枚中)";s:10:"gallery|Up";s:6:"上へ";s:20:"gallery|Up one level";s:16:"1レベル上へ";s:16:"gallery|Previous";s:6:"前へ";s:13:"gallery|First";s:9:"最初へ";s:12:"gallery|Next";s:6:"次へ";s:12:"gallery|Last";s:9:"最後へ";s:17:"artist name|by %s";s:5:"by %s";s:5:"Email";s:21:"メールアドレス";s:11:"Description";s:6:"説明";s:9:"Copyright";s:9:"著作権";s:6:"Viewed";s:12:"閲覧回数";s:13:"Add a comment";s:27:"コメントを追加する";s:14:"image|Previous";s:6:"前へ";s:11:"image|First";s:9:"最初へ";s:16:"image|Thumbnails";s:15:"サムネイル";s:10:"image|Next";s:6:"次へ";s:10:"image|Last";s:9:"最後へ";s:8:"Location";s:12:"撮影場所";s:4:"Date";s:9:"撮影日";s:6:"Camera";s:9:"カメラ";s:4:"Lens";s:9:"レンズ";s:4:"Film";s:12:"フィルム";s:21:"Darkroom manipulation";s:12:"暗室処理";s:20:"Digital manipulation";s:18:"電子暗室処理";s:10:"%s gallery";a:2:{i:0;s:21:"ギャラリー数 %s";i:1;s:21:"ギャラリー数 %s";}s:8:"%s image";a:2:{i:0;s:12:"画像数 %s";i:1;s:14:""画像数 %s"";}s:14:"viewed|%s time";a:2:{i:0;s:6:"%s 回";i:1;s:6:"%s 回";}i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:16:"Japanese (UTF-8)";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.ko.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:4:"¸ÞÀÏ";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:34:"%sÃÊ ¸¸¿¡ ÆäÀÌÁö°¡ ¸¸µé¾î Á³½À´Ï´Ù";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:20:"All rights reserved.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:6:"Log in";s:6:"·Î±×ÀÎ";s:24:"crumb line|You are here:";s:10:"ÇöÀç À§Ä¡:";s:10:"image|Next";s:4:"´ÙÀ½";s:16:"image|Thumbnails";s:8:"¸ñ·Ïº¸±â";s:14:"image|Previous";s:4:"ÀÌÀü";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:1:{i:0;s:11:"%s°³ °¶·¯¸®";}s:8:"%s image";a:1:{i:0;s:9:"%s°³ ±×¸²";}s:12:"No
thumbnail";s:13:"¸ñ·Ïº¸±â
¾øÀ½";s:25:"Sample image from gallery";s:18:"°¶·¯¸®ÀÇ »ùÇà ±×¸²";s:19:"Showing %s-%s of %s";s:38:"Àüü %3$s°³ Áß %1$sºÎÅÍ %2$s ±îÁö º¸±â";s:10:"gallery|Up";s:4:"À§·Î";s:20:"gallery|Up one level";s:11:"ÇÑ´Ü°è À§·Î";s:16:"gallery|Previous";s:4:"ÀÌÀü";s:13:"gallery|First";s:4:"¸Ç¾Õ";s:12:"gallery|Next";s:4:"´ÙÀ½";s:12:"gallery|Last";s:13:"°¶·¯¸®|¸¶Áö¸·";s:17:"artist name|by %s";s:15:"ÀÛ°¡ À̸§|%s ¼ø";s:5:"Email";s:4:"¸ÞÀÏ";s:11:"Description";s:4:"¼³¸í";s:9:"Copyright";s:6:"ÀúÀÛ±Ç";s:6:"Viewed";s:8:"¹æ¹®È¸¼ö";s:14:"viewed|%s time";a:1:{i:0;s:12:"%s ¹ø° º¸ÀÓ";}s:13:"Add a comment";s:9:"¼³¸í ´Þ±â";s:11:"image|First";s:5:"¸Ç ¾Õ";s:10:"image|Last";s:6:"¸¶Áö¸·";s:8:"Location";s:4:"À§Ä¡";s:4:"Date";s:4:"³¯Â¥";s:6:"Camera";s:6:"Ä«¸Þ¶ó";s:4:"Lens";s:4:"·»Áî";s:4:"Film";s:4:"Çʸ§";s:21:"Darkroom manipulation";s:9:"¾Ï½Ç ó¸®";s:20:"Digital manipulation";s:11:"µðÁöÅРó¸®";i:0;a:3:{s:7:"charset";s:6:"euc-kr";s:8:"language";s:15:"Korean (EUC-KR)";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.nl.pmo
0,0 → 1,2
a:44:{s:22:"Gallery not found '%s'";s:24:"Album niet gevonden '%s'";s:20:"Image not found '%s'";s:29:"Afbeelding niet gevonden '%s'";s:8:"email|at";s:11:"apestaartje";s:9:"email|dot";s:4:"punt";s:26:"Page created in %s seconds";s:31:"Pagina opgebouwd in %s seconden";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:26:"Alle rechten voorbehouden.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:132:"Afbeeldingen mogen op geen enkele wijze gereproduceerd worden zonder voorafgaande schriftelijke toestemming van de copyrighthouder. ";s:6:"Log in";s:9:"Aanmelden";s:24:"crumb line|You are here:";s:12:"U bent hier:";s:10:"image|Next";s:8:"Volgende";s:16:"image|Thumbnails";s:10:"Thumbnails";s:14:"image|Previous";s:6:"Vorige";s:18:"Select language...";s:17:"Selecteer taal...";s:2:"Go";s:9:"Aanmelden";s:18:"Select template...";s:21:"Selecteer template...";s:10:"%s gallery";a:2:{i:0;s:8:"%s album";i:1;s:9:"%s albums";}s:8:"%s image";a:2:{i:0;s:13:"%s afbeelding";i:1;s:15:"%s afbeeldingen";}s:12:"No
thumbnail";s:26:"Geen thumbnail beschikbaar";s:25:"Sample image from gallery";s:23:"Thumbnail van het album";s:19:"Showing %s-%s of %s";s:21:"Vertoont %s-%s van %s";s:10:"gallery|Up";s:10:"Naar boven";s:20:"gallery|Up one level";s:21:"Een niveau naar boven";s:16:"gallery|Previous";s:6:"Vorige";s:13:"gallery|First";s:6:"Eerste";s:12:"gallery|Next";s:8:"Volgende";s:12:"gallery|Last";s:7:"Laatste";s:17:"artist name|by %s";s:7:"door %s";s:5:"Email";s:6:"E-mail";s:11:"Description";s:12:"Beschrijving";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:7:"Bekeken";s:14:"viewed|%s time";a:2:{i:0;s:15:"%s keer bekeken";i:1;s:15:"%s keer bekeken";}s:13:"Add a comment";s:19:"Voeg commentaar toe";s:11:"image|First";s:6:"Eerste";s:10:"image|Last";s:7:"Laatste";s:8:"Location";s:7:"Locatie";s:4:"Date";s:5:"Datum";s:6:"Camera";s:6:"Camera";s:4:"Lens";s:4:"Lens";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:13:"Dokabewerking";s:20:"Digital manipulation";s:17:"Computerbewerking";i:0;a:3:{s:7:"charset";s:11:"iso-8859-15";s:8:"language";s:18:"Dutch (Nederlands)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.no_nb.pmo
0,0 → 1,3
a:39:{s:22:"Gallery not found '%s'";s:30:"Galleriet '%s' ble ikke funnet";s:20:"Image not found '%s'";s:26:"Bilde '%s' ble ikke funnet";s:8:"email|at";s:2:"at";s:9:"email|dot";s:3:"dot";s:23:"singapore|Powered by %s";s:12:"Laget med %s";s:20:"All rights reserved.";s:27:"Alle rettigheter reservert.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:76:"Bilder må ikke reproduseres uten skriftlig samtykke fra rettighetsinnehaver.";s:6:"Log in";s:8:"Logg inn";s:24:"crumb line|You are here:";s:10:"Du er her:";s:10:"image|Next";s:5:"Neste";s:16:"image|Thumbnails";s:10:"Miniatyrer";s:14:"image|Previous";s:7:"Forrige";s:18:"Select language...";s:13:"Velg språk...";s:2:"Go";s:4:"Velg";s:18:"Select template...";s:16:"Velg utseende...";s:10:"%s gallery";a:2:{i:0;s:10:"%s galleri";i:1;s:12:"%s gallerier";}s:8:"%s image";a:2:{i:0;s:8:"%s bilde";i:1;s:9:"%s bilder";}s:12:"No
thumbnail";s:20:"Ingen
miniatyrbilder";s:25:"Sample image from gallery";s:25:"Eksempelbilde fra galleri";s:19:"Showing %s-%s of %s";s:17:"Viser %s-%s av %s";s:10:"gallery|Up";s:3:"Opp";s:16:"gallery|Previous";s:7:"Forrige";s:12:"gallery|Next";s:5:"Neste";s:12:"gallery|Last";s:5:"Siste";s:17:"artist name|by %s";s:5:"av %s";s:5:"Email";s:6:"E-post";s:11:"Description";s:11:"Beskrivelse";s:9:"Copyright";s:7:"Enerett";s:6:"Viewed";s:4:"Sett";s:14:"viewed|%s time";a:2:{i:0;s:7:"%s gang";i:1;s:9:"%s ganger";}s:10:"image|Last";s:5:"Siste";s:8:"Location";s:9:"Plasering";s:4:"Date";s:4:"Dato";s:6:"Camera";s:6:"Kamera";s:4:"Lens";s:6:"Optikk";s:4:"Film";s:4:"Film";s:20:"Digital manipulation";s:20:"Digital manipulering";s:21:"Darkroom manipulation";s:21:"Mørkeromsmanipulering";i:0;a:3:{s:7:"charset";s:10:"iso-8859-1";s:8:"language";s:24:"Norwegian (Norsk bokmål)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.pl.pmo
0,0 → 1,3
a:50:{s:22:"Gallery not found '%s'";s:26:"Nieznaleziono galerii '%s'";s:20:"Image not found '%s'";s:25:"Nieznaleziono obrazu '%s'";s:8:"email|at";s:6:"e-mail";s:9:"email|dot";s:6:"e-mail";s:26:"Page created in %s seconds";s:29:"Czas generowania strony: %s s";s:23:"singapore|Powered by %s";s:20:"Obs³ugiwane przez %s";s:20:"All rights reserved.";s:27:"Wszelkie prawa zastrze¿one.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:118:"Obrazy nie mog± byæ reprodukowane w ¿adnej formie bez wyra¼nej zgody w³a¶ciciela praw autorskich, wyra¿onej na pi¶mie.";s:6:"Log in";s:11:"Zaloguj siê";s:24:"crumb line|You are here:";s:9:"Jeste¶ w:";s:10:"image|Next";s:5:"Dalej";s:16:"image|Thumbnails";s:9:"Miniatury";s:14:"image|Previous";s:6:"Wstecz";s:18:"Select language...";s:16:"Wybierz jêzyk...";s:2:"Go";s:3:"Id¼";s:18:"Select template...";s:17:"Wybierz skórkê...";s:10:"%s gallery";a:2:{i:0;s:13:"Jedna galeria";i:1;s:11:"Galerii: %s";}s:8:"%s image";a:2:{i:0;s:13:"Jedno zdjêcie";i:1;s:9:"Zdjêæ: %s";}s:12:"No
thumbnail";s:11:"Brak
próbki";s:25:"Sample image from gallery";s:27:"Przyk³adowy obraz z galerii";s:19:"Showing %s-%s of %s";s:16:"Od %s do %s z %s";s:10:"gallery|Up";s:6:"W górê";s:20:"gallery|Up one level";s:13:"Poziom w górê";s:16:"gallery|Previous";s:6:"Wstecz";s:13:"gallery|First";s:8:"Pierwszy";s:12:"gallery|Next";s:5:"Dalej";s:12:"gallery|Last";s:7:"Ostatni";s:17:"artist name|by %s";s:9:"Autor: %s";s:5:"Email";s:6:"e-mail";s:11:"Description";s:4:"Opis";s:9:"Copyright";s:15:"Prawa autorskie";s:6:"Viewed";s:8:"Ogl±dane";s:14:"viewed|%s time";a:2:{i:0;s:6:"%s raz";i:1;s:7:"%s razy";}s:13:"Add a comment";s:15:"Dodaj komentarz";s:11:"image|First";s:8:"Pierwszy";s:10:"image|Last";s:7:"Ostatni";s:8:"Location";s:9:"Po³o¿enie";s:4:"Date";s:4:"Data";s:6:"Camera";s:6:"Aparat";s:4:"Lens";s:8:"Obiektyw";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:16:"Obróbka w ciemni";s:20:"Digital manipulation";s:15:"Obróbka cyfrowa";s:8:"First %s";s:11:"Pierwsze %s";s:11:"Previous %s";s:13:"Poprzednie %s";s:7:"Next %s";s:11:"Nastêpne %s";s:7:"Last %s";s:11:"Ostatnie %s";s:16:"Previous gallery";s:18:"Poprzednia galeria";s:12:"Next gallery";s:16:"Nastêpna galeria";i:0;a:3:{s:7:"charset";s:10:"iso-8859-2";s:8:"language";s:15:"Polish (Polski)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.pot
0,0 → 1,221
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2006-05-20 20:17+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
 
#: ../includes/gallery.class.php:82
#, possible-c-format
msgid "%s image"
msgid_plural "%s images"
msgstr[0] ""
msgstr[1] ""
 
#: ../includes/gallery.class.php:83
#, possible-c-format
msgid "%s gallery"
msgid_plural "%s galleries"
msgstr[0] ""
msgstr[1] ""
 
#: ../includes/gallery.class.php:180
msgid ""
"No\n"
"thumbnail"
msgstr ""
 
#: ../includes/gallery.class.php:185
msgid "Sample image from gallery"
msgstr ""
 
#: ../includes/image.class.php:164
msgid "image|First"
msgstr ""
 
#: ../includes/image.class.php:165
msgid "image|Previous"
msgstr ""
 
#: ../includes/image.class.php:166
msgid "image|Next"
msgstr ""
 
#: ../includes/image.class.php:167
msgid "image|Last"
msgstr ""
 
#: ../includes/image.class.php:168
msgid "image|Thumbnails"
msgstr ""
 
#: ../includes/item.class.php:182
#, possible-c-format
msgid "artist name|by %s"
msgstr ""
 
#: ../includes/item.class.php:193 ../includes/singapore.class.php:290
msgid "email|at"
msgstr ""
 
#: ../includes/item.class.php:193 ../includes/singapore.class.php:290
msgid "email|dot"
msgstr ""
 
#: ../includes/item.class.php:216
msgid "gallery|Up"
msgstr ""
 
#: ../includes/item.class.php:227
msgid "Date"
msgstr ""
 
#: ../includes/item.class.php:228
msgid "Location"
msgstr ""
 
#: ../includes/item.class.php:229
msgid "Description"
msgstr ""
 
#: ../includes/item.class.php:230
msgid "Email"
msgstr ""
 
#: ../includes/item.class.php:233
msgid "Camera"
msgstr ""
 
#: ../includes/item.class.php:234
msgid "Lens"
msgstr ""
 
#: ../includes/item.class.php:235
msgid "Film"
msgstr ""
 
#: ../includes/item.class.php:236
msgid "Darkroom manipulation"
msgstr ""
 
#: ../includes/item.class.php:237
msgid "Digital manipulation"
msgstr ""
 
#: ../includes/item.class.php:240 ../includes/item.class.php:241
msgid "Copyright"
msgstr ""
 
#: ../includes/item.class.php:243
msgid "Viewed"
msgstr ""
 
#: ../includes/item.class.php:243
#, possible-c-format
msgid "viewed|%s time"
msgid_plural "viewed|%s times"
msgstr[0] ""
msgstr[1] ""
 
#: ../includes/singapore.class.php:222
#, possible-c-format
msgid "Gallery not found '%s'"
msgstr ""
 
#: ../includes/singapore.class.php:276
#, possible-c-format
msgid "Image not found '%s'"
msgstr ""
 
#: ../includes/singapore.class.php:361
#, possible-c-format
msgid "Page created in %s seconds"
msgstr ""
 
#: ../includes/singapore.class.php:368
msgid "Powered by"
msgstr ""
 
#: ../includes/singapore.class.php:373
msgid "All rights reserved."
msgstr ""
 
#: ../includes/singapore.class.php:378
msgid ""
"Images may not be reproduced in any form without the express written "
"permission of the copyright holder."
msgstr ""
 
#: ../includes/singapore.class.php:388
msgid "Log in"
msgstr ""
 
#: ../includes/singapore.class.php:459
msgid "crumb line|You are here:"
msgstr ""
 
#: ../includes/singapore.class.php:518
msgid "Select language..."
msgstr ""
 
#: ../includes/singapore.class.php:526 ../includes/singapore.class.php:558
msgid "Go"
msgstr ""
 
#: ../includes/singapore.class.php:548
msgid "Select template..."
msgstr ""
 
#: ../includes/singapore.class.php:591
#, possible-c-format
msgid "Showing %s-%s of %s"
msgstr ""
 
#: ../includes/singapore.class.php:637
msgid "gallery|Previous"
msgstr ""
 
#: ../includes/singapore.class.php:638
msgid "gallery|First"
msgstr ""
 
#: ../includes/singapore.class.php:641
msgid "gallery|Next"
msgstr ""
 
#: ../includes/singapore.class.php:642
msgid "gallery|Last"
msgstr ""
 
#: ../includes/singapore.class.php:695
#, possible-c-format
msgid "First %s"
msgstr ""
 
#: ../includes/singapore.class.php:706
#, possible-c-format
msgid "Previous %s"
msgstr ""
 
#: ../includes/singapore.class.php:717
#, possible-c-format
msgid "Next %s"
msgstr ""
 
#: ../includes/singapore.class.php:726
#, possible-c-format
msgid "Last %s"
msgstr ""
 
#: ../includes/singapore.class.php:741
msgid "Add a comment"
msgstr ""
/photogallery/locale/singapore.pt_br.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:34:"Galeria '%s' n&atilde;o encontrada";s:20:"Image not found '%s'";s:33:"Imagem '%s' n&atilde;o encontrada";s:8:"email|at";s:2:"at";s:9:"email|dot";s:3:"dot";s:26:"Page created in %s seconds";s:35:"P&aacute;gina criada em %s segundos";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:29:"Todos os direitos reservados.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:125:"As imagens n&atilde;o podem ser reproduzidas de qualquer modo sem o consentimento expresso do propriet&aacute;rio das mesmas.";s:6:"Log in";s:6:"Log in";s:24:"crumb line|You are here:";s:26:"Voc&ecirc; est&aacute; em:";s:10:"image|Next";s:14:"Pr&oacute;xima";s:16:"image|Thumbnails";s:10:"Miniaturas";s:14:"image|Previous";s:8:"Anterior";s:18:"Select language...";s:20:"Selecionar idioma...";s:2:"Go";s:2:"Ir";s:18:"Select template...";s:22:"Selecionar template...";s:10:"%s gallery";a:2:{i:0;s:10:"%s galeria";i:1;s:11:"%s galerias";}s:8:"%s image";a:2:{i:0;s:9:"%s imagem";i:1;s:10:"%s imagens";}s:12:"No
thumbnail";s:13:"Sem
Miniatura";s:25:"Sample image from gallery";s:28:"Exemplo de imagem da galeria";s:19:"Showing %s-%s of %s";s:20:"Exibindo %s-%s de %s";s:10:"gallery|Up";s:6:"Voltar";s:20:"gallery|Up one level";s:22:"Voltar um n&iacute;vel";s:16:"gallery|Previous";s:8:"Anterior";s:13:"gallery|First";s:8:"Primeira";s:12:"gallery|Next";s:14:"Pr&oacute;xima";s:12:"gallery|Last";s:13:"&Uacute;ltima";s:17:"artist name|by %s";s:6:"por %s";s:5:"Email";s:5:"Email";s:11:"Description";s:23:"Descri&ccedil;&atilde;o";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:11:"Visualizada";s:14:"viewed|%s time";a:2:{i:0;s:6:"%s vez";i:1;s:8:"%s vezes";}s:13:"Add a comment";s:26:"Adicionar coment&acute;rio";s:11:"image|First";s:8:"Primeira";s:10:"image|Last";s:13:"&Uacute;ltima";s:8:"Location";s:5:"Local";s:4:"Date";s:4:"Data";s:6:"Camera";s:12:"C&acirc;mera";s:4:"Lens";s:5:"Lente";s:4:"Film";s:5:"Filme";s:21:"Darkroom manipulation";s:32:"Manipulao de c&acirc;mara escura";s:20:"Digital manipulation";s:33:"Manipula&ccedil;&atilde;o digital";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:19:"Portuguese (Brazil)";s:6:"plural";s:25:"$nplurals=2;$plural=$n>1;";}}
/photogallery/locale/singapore.ro.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:5:"Email";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:27:"Pagina creata in %s secunde";s:23:"singapore|Powered by %s";s:11:"Creat de %s";s:20:"All rights reserved.";s:27:"Toate drepturile rezervate.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:62:"Imaginile nu pot fi reproduse fara permisiunea proprietarului.";s:6:"Log in";s:12:"Administrare";s:24:"crumb line|You are here:";s:6:"Calea:";s:10:"image|Next";s:10:"Urmatoarea";s:16:"image|Thumbnails";s:9:"Miniaturi";s:14:"image|Previous";s:6:"Inapoi";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:10:"%s galerie";i:1;s:10:"%s galerii";}s:8:"%s image";a:2:{i:0;s:10:"%s imagine";i:1;s:10:"%s imagini";}s:12:"No
thumbnail";s:16:"Fara
thumbnail";s:25:"Sample image from gallery";s:28:"Imagine de proba din galerie";s:19:"Showing %s-%s of %s";s:12:"%s-%s din %s";s:10:"gallery|Up";s:6:"Inapoi";s:20:"gallery|Up one level";s:18:"Inapoi cu un nivel";s:16:"gallery|Previous";s:6:"Inapoi";s:13:"gallery|First";s:5:"Prima";s:12:"gallery|Next";s:10:"Urmatoarea";s:12:"gallery|Last";s:6:"Ultima";s:17:"artist name|by %s";s:5:"de %s";s:5:"Email";s:5:"Email";s:11:"Description";s:9:"Descriere";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:11:"Vizualizari";s:14:"viewed|%s time";a:2:{i:0;s:2:"%s";i:1;s:2:"%s";}s:13:"Add a comment";s:20:"Adauga un comentariu";s:11:"image|First";s:5:"Prima";s:10:"image|Last";s:6:"Ultima";s:8:"Location";s:7:"Locatia";s:4:"Date";s:4:"Data";s:6:"Camera";s:6:"Camera";s:4:"Lens";s:7:"Lentile";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:31:"Manipulare in camera intunecata";s:20:"Digital manipulation";s:19:"Manipulare digitala";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-2";s:8:"language";s:17:"Romanian (Romåna)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.ru.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:6:"E-mail";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:18:"óÔÒÁÎÉÃÁ ÓÏÚÄÁÎÁ ×";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:25:"á×ÔÏÒÓËÉÅ ÐÒÁ×Á ÚÁÝÉÝÅÎÙ.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:111:"÷ÓÅ ÉÚÏÂÒÁÖÅÎÉÑ Ñ×ÌÑÀÔÓÑ ÓÏÂÓÔ×ÅÎÎÏÓÔØÀ ÆÏÔÏÇÒÁÆÏ×, ÉÈ ÐÒÅÄÏÓÔÁ×É×ÛÉÈ É ÏÈÒÁÎÑÀÔÓÑ ÚÁËÏÎÏÍ Ï Á×ÔÏÒÓËÉÈ ÐÒÁ×ÁÈ.";s:6:"Log in";s:11:"÷ÈÏÄ ÁÄÍÉÎ.";s:24:"crumb line|You are here:";s:8:"÷Ù ÚÄÅÓØ";s:10:"image|Next";s:5:"óÌÅÄ.";s:16:"image|Thumbnails";s:10:"Thumbnails";s:14:"image|Previous";s:5:"ðÒÅÄ.";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:1:{i:0;s:5:"ðÒÅÄ.";}s:8:"%s image";a:2:{i:0;s:0:"";i:1;s:0:"";}s:12:"No
thumbnail";s:12:"No
thumbnail";s:25:"Sample image from gallery";s:8:"ïÂÒÁÚÅà ";s:19:"Showing %s-%s of %s";s:18:"ÐÏËÁÚ. %s-%s ÉÚ %s";s:10:"gallery|Up";s:5:"ðÒÅÄ.";s:20:"gallery|Up one level";s:13:"ðÒÅÄ. çÁÌÅÒÅÑ";s:16:"gallery|Previous";s:5:"ðÒÅÄ.";s:13:"gallery|First";s:5:"óÌÅÄ.";s:12:"gallery|Next";s:5:"óÌÅÄ.";s:12:"gallery|Last";s:5:"óÌÅÄ.";s:17:"artist name|by %s";s:10:"Á×ÔÏÒ : %s";s:5:"Email";s:6:"E-mail";s:11:"Description";s:8:"ïÐÉÓÁÎÉÅ";s:9:"Copyright";s:15:"á×ÔÏÒÓËÏÅ ÐÒÁ×Ï";s:6:"Viewed";s:5:"÷ÉÄÎÁ";s:14:"viewed|%s time";a:1:{i:0;s:9:"%s ÒÁÚ(Á)";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:5:"óÌÅÄ.";s:10:"image|Last";s:5:"óÌÅÄ.";s:8:"Location";s:5:"íÅÓÔÏ";s:4:"Date";s:6:"äÁÔÁ ";s:6:"Camera";s:11:"æÏÔÏËÁÍÅÒÁ ";s:4:"Lens";s:9:"ïÂßÅËÔÉ× ";s:4:"Film";s:6:"ðÌ£ÎËÁ";s:21:"Darkroom manipulation";s:24:"óÔÕÄÉÊÎÁÑ ÐÅÒÅÒÁÂÏÔËÁ ";s:20:"Digital manipulation";s:20:"ãÉÆÒÏ×ÁÑ ÐÅÒÅÒÁÂÏÔËÁ";i:0;a:3:{s:7:"charset";s:6:"KOI8-R";s:8:"language";s:16:"Russian (KOI8-R)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.sk.pmo
0,0 → 1,3
a:49:{s:8:"%s image";a:3:{i:0;s:11:"%s obrázok";i:1;s:11:"%s obrázky";i:2;s:12:"%s obrázkov";}s:10:"%s gallery";a:3:{i:0;s:11:"%s galéria";i:1;s:11:"%s galérie";i:2;s:12:"%s galérií";}s:12:"No
thumbnail";s:13:"Bez
náhľadu";s:25:"Sample image from gallery";s:31:"Ukážkový obrázok z galérie";s:16:"Previous gallery";s:25:"Predchádzajúca galéria";s:12:"Next gallery";s:21:"Nasledujúca galéria";s:11:"image|First";s:5:"Prvý";s:14:"image|Previous";s:16:"Predchádzajúci";s:10:"image|Next";s:12:"Nasledujúci";s:10:"image|Last";s:9:"Posledný";s:16:"image|Thumbnails";s:9:"Náhľady";s:17:"artist name|by %s";s:5:"od %s";s:8:"email|at";s:2:"na";s:9:"email|dot";s:5:"bodka";s:10:"gallery|Up";s:4:"Hore";s:4:"Date";s:6:"Dátum";s:8:"Location";s:8:"Lokalita";s:11:"Description";s:5:"Popis";s:5:"Email";s:6:"E-mail";s:6:"Camera";s:11:"Fotoaparát";s:4:"Lens";s:9:"Objektív";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:23:"Úpravy v tmavej komore";s:20:"Digital manipulation";s:18:"Digitálne úpravy";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:10:"Zobrazené";s:14:"viewed|%s time";a:3:{i:0;s:8:"%s krát";i:1;s:8:"%s krát";i:2;s:8:"%s krát";}s:22:"Gallery not found '%s'";s:25:"Galéria nenájdená '%s'";s:20:"Image not found '%s'";s:25:"Obrázok nenájdený '%s'";s:26:"Page created in %s seconds";s:36:"Stránka vygenerovaná za %s sekundy";s:10:"Powered by";s:10:"Powered by";s:20:"All rights reserved.";s:26:"Všetky práva vyhradené.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:129:"Obrázky nesmú byť bez predchádzajúceho písomného súhlasu vlastníka autorských práv reprodukované v akejkoľvek forme.";s:6:"Log in";s:12:"Prihlásenie";s:24:"crumb line|You are here:";s:18:"Nachádzate sa tu:";s:18:"Select language...";s:16:"Zvoľte jazyk...";s:2:"Go";s:7:"Potvrď";s:18:"Select template...";s:20:"Zvoľte šablónu...";s:19:"Showing %s-%s of %s";s:23:"Zobrazených %s-%s z %s";s:16:"gallery|Previous";s:16:"Predchádzajúca";s:13:"gallery|First";s:5:"Prvá";s:12:"gallery|Next";s:12:"Nasledujúca";s:12:"gallery|Last";s:9:"Posledná";s:8:"First %s";s:10:"Prvých %s";s:11:"Previous %s";s:21:"Predchádzajúcich %s";s:7:"Next %s";s:17:"Nasledujúcich %s";s:7:"Last %s";s:14:"Posledných %s";s:13:"Add a comment";s:17:"Pridať komentár";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:19:"Slovak (Sloveský) ";s:6:"plural";s:107:"$nplurals=3;$plural=$n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2;";}}
/photogallery/locale/singapore.sl.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:23:"Ne najdem galerije '%s'";s:20:"Image not found '%s'";s:20:"Ne najdem slike '%s'";s:8:"email|at";s:2:"at";s:9:"email|dot";s:4:"pika";s:26:"Page created in %s seconds";s:28:"Stran narejena v %s sekundah";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:22:"Vse pravice pridr¾ane.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:68:"Prepovedana kakr¹nakoli uporaba fotografije brez dovoljenja avtorja.";s:6:"Log in";s:7:"Prijava";s:24:"crumb line|You are here:";s:9:"Tukaj si:";s:10:"image|Next";s:9:"Naslednja";s:16:"image|Thumbnails";s:7:"Slièice";s:14:"image|Previous";s:8:"Prej¹nja";s:18:"Select language...";s:16:"Izberi jezik ...";s:2:"Go";s:6:"Potrdi";s:18:"Select template...";s:19:"Izberi predlogo ...";s:10:"%s gallery";a:2:{i:0;s:11:"%s galerija";i:1;s:11:"%s galerije";}s:8:"%s image";a:2:{i:0;s:8:"%s slika";i:1;s:8:"%s slike";}s:12:"No
thumbnail";s:10:"Ni
slièica";s:25:"Sample image from gallery";s:25:"Vzorèna slika iz galerije";s:19:"Showing %s-%s of %s";s:21:"Prikazuje %s-%s af %s";s:10:"gallery|Up";s:3:"Gor";s:20:"gallery|Up one level";s:14:"Na gornji nivo";s:16:"gallery|Previous";s:8:"Prej¹nja";s:13:"gallery|First";s:4:"Prva";s:12:"gallery|Next";s:9:"Naslednja";s:12:"gallery|Last";s:6:"Zadnja";s:17:"artist name|by %s";s:8:"Avtor %s";s:5:"Email";s:7:"E-po¹ta";s:11:"Description";s:4:"Opis";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:6:"Videno";s:14:"viewed|%s time";a:2:{i:0;s:8:"%s -krat";i:1;s:8:"%s -krat";}s:13:"Add a comment";s:14:"Dodaj komentar";s:11:"image|First";s:4:"Prva";s:10:"image|Last";s:6:"Zadnja";s:8:"Location";s:5:"Mesto";s:4:"Date";s:5:"Datum";s:6:"Camera";s:10:"Fotoaparat";s:4:"Lens";s:8:"Objektiv";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:18:"Postopek v temnici";s:20:"Digital manipulation";s:21:"Raèunalni¹ka obdelava";i:0;a:3:{s:7:"charset";s:10:"iso-8859-2";s:8:"language";s:21:"Slovenian (Slovensko)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.sv.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:13:"Artist e-mail";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:27:"Sidan skapad på %s sekunder";s:23:"singapore|Powered by %s";s:13:"Skapat med %s";s:20:"All rights reserved.";s:20:"All rights reserved.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:75:"Bilder får inte användas i någon form utan tillåtelse från copyrightägaren.";s:6:"Log in";s:8:"Logga in";s:24:"crumb line|You are here:";s:10:"Du är här:";s:10:"image|Next";s:5:"Nästa";s:16:"image|Thumbnails";s:10:"Minibilder";s:14:"image|Previous";s:10:"Föregående";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:12:"%s bildarkiv";i:1;s:12:"%s bildarkiv";}s:8:"%s image";a:2:{i:0;s:7:"%s bild";i:1;s:9:"%s bilder";}s:12:"No
thumbnail";s:14:"Ingen
minibild";s:25:"Sample image from gallery";s:26:"Slumpa bild från galleriet";s:19:"Showing %s-%s of %s";s:17:"Visar %s-%s av %s";s:10:"gallery|Up";s:3:"Upp";s:20:"gallery|Up one level";s:12:"Upp ett steg";s:16:"gallery|Previous";s:10:"Föregående";s:13:"gallery|First";s:5:"Nästa";s:12:"gallery|Next";s:5:"Nästa";s:12:"gallery|Last";s:5:"Nästa";s:17:"artist name|by %s";s:5:"av %s";s:5:"Email";s:13:"Artist e-mail";s:11:"Description";s:11:"Beskrivning";s:9:"Copyright";s:9:"Copyright";s:6:"Viewed";s:5:"Visat";s:14:"viewed|%s time";a:1:{i:0;s:9:"%s gånger";}s:13:"Add a comment";s:0:"";s:11:"image|First";s:5:"Nästa";s:10:"image|Last";s:5:"Nästa";s:8:"Location";s:5:"Plats";s:4:"Date";s:5:"Datum";s:6:"Camera";s:11:"Kamera info";s:4:"Lens";s:4:"Lins";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:20:"Mörkrumsmanipulation";s:20:"Digital manipulation";s:20:"Digital manipulering";i:0;a:3:{s:7:"charset";s:10:"ISO-8859-1";s:8:"language";s:17:"Swedish (Svenska)";s:6:"plural";s:34:"$nplurals=2;$plural=$n==1 ? 0 : 1;";}}
/photogallery/locale/singapore.tr.pmo
0,0 → 1,2
a:37:{s:26:"Page created in %s seconds";s:25:"Sayfa % saniyede üretildi";s:23:"singapore|Powered by %s";s:31:"%s tarafýndan sponsorlanmiþtir.";s:20:"All rights reserved.";s:38:"Bütün telif hallarý saklý tutulmuþtur.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:41:"Hiçbir resim yazýlý izinsiz kopyalanamaz.";s:6:"Log in";s:3:"Gir";s:24:"crumb line|You are here:";s:7:"Burasý:";s:10:"%s gallery";a:2:{i:0;s:9:"%s galeri";i:1;s:9:"%s galeri";}s:8:"%s image";a:2:{i:0;s:8:"%s resim";i:1;s:11:"%s resimler";}s:25:"Sample image from gallery";s:21:"Galeriden mýsal resim";s:12:"No
thumbnail";s:24:"Öngörünütü mevcut deðil.";s:19:"Showing %s-%s of %s";s:32:"Galeri %s-%s toplam %s galeriden";s:10:"gallery|Up";s:6:"yukarý";s:20:"gallery|Up one level";s:19:"Bir düzey yukarýya.";s:16:"gallery|Previous";s:6:"Önceki";s:13:"gallery|First";s:10:"Galeri|Ýlk";s:12:"gallery|Next";s:7:"Sonraki";s:12:"gallery|Last";s:10:"Galeri|Son";s:17:"artist name|by %s";s:23:"%s tarafýndan çekilmilþ";s:5:"Email";s:5:"email";s:11:"Description";s:8:"Açýklama";s:9:"Copyright";s:13:"Telifhaklarý:";s:6:"Viewed";s:11:"Gösterilmiþ";s:14:"viewed|%s time";a:2:{i:0;s:7:"%s kere";i:1;s:7:"%s kere";}s:13:"Add a comment";s:10:"Yorum ekle";s:14:"image|Previous";s:10:"Bir önceki";s:11:"image|First";s:9:"resim|Ýlk";s:16:"image|Thumbnails";s:12:"Öngörüntüler";s:10:"image|Next";s:11:"Bir sonraki";s:10:"image|Last";s:3:"Son";s:8:"Location";s:3:"Yer";s:4:"Date";s:5:"Tarih";s:6:"Camera";s:13:"Resimmakinasý";s:4:"Lens";s:4:"Lens";s:4:"Film";s:3:"Poz";s:21:"Darkroom manipulation";s:31:"Karanlýk odada manipüle edilmiþ";s:20:"Digital manipulation";s:29:"Bilgisayarla manipüle edilmiþ";i:0;a:3:{s:7:"charset";s:0:"";s:8:"language";s:16:"Turkish (Türkçe)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.vi.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:5:"Email";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:41:"Trang được tạo trong vòng %s giây";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:20:"All rights reserved.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:145:"Các hình ảnh không được sao chép dưới bất kì hình thức nào khi không có sự đồng ý bằng văn bản của tác giả.";s:6:"Log in";s:13:"Đăng nhập";s:24:"crumb line|You are here:";s:19:"Mục hiện tại:";s:10:"image|Next";s:10:"Ảnh kế";s:16:"image|Thumbnails";s:9:"Thumbnail";s:14:"image|Previous";s:14:"Ảnh trước";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:1:{i:0;s:10:"%s gallery";}s:8:"%s image";a:1:{i:0;s:8:"%s ảnh";}s:12:"No
thumbnail";s:20:"Không có
thumbnail";s:25:"Sample image from gallery";s:24:"Ảnh mẫu từ gallery";s:19:"Showing %s-%s of %s";s:21:"Hiển thị %s-%s/%s";s:10:"gallery|Up";s:10:"Lên trên";s:20:"gallery|Up one level";s:16:"Lên một cấp";s:16:"gallery|Previous";s:8:"Trước";s:13:"gallery|First";s:12:"Đầu tiên";s:12:"gallery|Next";s:4:"Kế";s:12:"gallery|Last";s:6:"Cuối";s:17:"artist name|by %s";s:14:"Tác giả: %s";s:5:"Email";s:5:"Email";s:11:"Description";s:8:"Mô tả";s:9:"Copyright";s:13:"Bản quyền";s:6:"Viewed";s:12:"Được xem";s:14:"viewed|%s time";a:1:{i:0;s:8:"%s lần";}s:13:"Add a comment";s:17:"Thêm lời bình";s:11:"image|First";s:18:"Ảnh đầu tiên";s:10:"image|Last";s:12:"Ảnh cuối";s:8:"Location";s:9:"Vị trí";s:4:"Date";s:5:"Ngày";s:6:"Camera";s:10:"Máy ảnh";s:4:"Lens";s:12:"Khẩu độ";s:4:"Film";s:4:"Film";s:21:"Darkroom manipulation";s:29:"Thao tác với buồng tối";s:20:"Digital manipulation";s:26:"Thao tác kĩ thuật số";i:0;a:3:{s:7:"charset";s:5:"UTF-8";s:8:"language";s:18:"Vietnamese (UTF-8)";s:6:"plural";s:22:"$nplurals=1;$plural=0;";}}
/photogallery/locale/singapore.zh_cn.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:16:"ûÓÐÕÒµ½Ïà²á£º%s";s:20:"Image not found '%s'";s:16:"ûÓÐÕÒµ½Í¼Æ¬£º%s";s:8:"email|at";s:2:"£À";s:9:"email|dot";s:2:"µã";s:26:"Page created in %s seconds";s:18:"Éú³É±¾Ò³¹²ºÄʱ%sÃë";s:23:"singapore|Powered by %s";s:18:"±¾ÍøÕ¾²ÉÓü¼Êõ£º%s";s:20:"All rights reserved.";s:14:"±£ÁôËùÓÐȨÀû¡£";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:48:"ûÓаæȨӵÓÐÕßµÄÊéÃæÐí¿É²»µÃÒÔÈκÎÐÎʽ¸´ÖÆͼƬ¡£";s:6:"Log in";s:4:"µÇÈë";s:24:"crumb line|You are here:";s:10:"µ±Ç°Î»Öãº";s:10:"image|Next";s:6:"ÏÂÒ»ÕÅ";s:16:"image|Thumbnails";s:6:"ËõÂÔͼ";s:14:"image|Previous";s:6:"ÉÏÒ»ÕÅ";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:9:"%s ¸öÏà²á";i:1;s:9:"%s ¸öÏà²á";}s:8:"%s image";a:2:{i:0;s:9:"%s ÕÅͼƬ";i:1;s:9:"%s ÕÅͼƬ";}s:12:"No
thumbnail";s:11:"ûÓÐ
ËõÂÔͼ";s:25:"Sample image from gallery";s:4:"Ñùͼ";s:19:"Showing %s-%s of %s";s:22:"ÕýÔÚÏÔʾ %s-%s£¬¹²%s¸ö";s:10:"gallery|Up";s:6:"ÉÏÒ»¼¶";s:20:"gallery|Up one level";s:8:"ÏòÉÏÒ»¼¶";s:16:"gallery|Previous";s:4:"ÏòÇ°";s:13:"gallery|First";s:6:"µÚÒ»¸ö";s:12:"gallery|Next";s:6:"ÏÂÒ»¸ö";s:12:"gallery|Last";s:8:"×îºóÒ»¸ö";s:17:"artist name|by %s";s:8:"×÷Õߣº%s";s:5:"Email";s:12:"µç×ÓÓʼþµØÖ·";s:11:"Description";s:4:"ÃèÊö";s:9:"Copyright";s:4:"°æȨ";s:6:"Viewed";s:8:"Á÷ÀÀ´ÎÊý";s:14:"viewed|%s time";a:2:{i:0;s:5:"%s ´Î";i:1;s:5:"%s ´Î";}s:13:"Add a comment";s:12:"Ôö¼ÓÒ»ÌõÆÀÂÛ";s:11:"image|First";s:6:"µÚÒ»ÕÅ";s:10:"image|Last";s:8:"×îºóÒ»ÕÅ";s:8:"Location";s:8:"ÅÄÉãµØµã";s:4:"Date";s:4:"ÈÕÆÚ";s:6:"Camera";s:10:"ÕÕÏà»úÐͺÅ";s:4:"Lens";s:8:"¾µÍ·ÐͺÅ";s:4:"Film";s:8:"½ºÆ¬ÐͺÅ";s:21:"Darkroom manipulation";s:8:"°µ·¿´¦Àí";s:20:"Digital manipulation";s:12:"Êý×ÖÌØЧ´¦Àí";i:0;a:3:{s:7:"charset";s:6:"gb2312";s:8:"language";s:27:"Simplified Chinese (GB2312)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.zh_cn_utf8.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:9:"???????%s";s:20:"Image not found '%s'";s:9:"???????%s";s:8:"email|at";s:1:"?";s:9:"email|dot";s:1:"?";s:26:"Page created in %s seconds";s:10:"???????%s?";s:23:"singapore|Powered by %s";s:10:"????????%s";s:20:"All rights reserved.";s:7:"???????";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:24:"????????????????????????";s:6:"Log in";s:2:"??";s:24:"crumb line|You are here:";s:5:"?????";s:10:"image|Next";s:3:"???";s:16:"image|Thumbnails";s:3:"???";s:14:"image|Previous";s:3:"???";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:2:{i:0;s:6:"%s ???";i:1;s:6:"%s ???";}s:8:"%s image";a:2:{i:0;s:6:"%s ???";i:1;s:6:"%s ???";}s:12:"No
thumbnail";s:6:"??
???";s:25:"Sample image from gallery";s:2:"??";s:19:"Showing %s-%s of %s";s:15:"???? %s-%s??%s?";s:10:"gallery|Up";s:3:"???";s:20:"gallery|Up one level";s:4:"????";s:16:"gallery|Previous";s:2:"??";s:13:"gallery|First";s:3:"???";s:12:"gallery|Next";s:3:"???";s:12:"gallery|Last";s:4:"????";s:17:"artist name|by %s";s:5:"???%s";s:5:"Email";s:6:"??????";s:11:"Description";s:2:"??";s:9:"Copyright";s:2:"??";s:6:"Viewed";s:4:"????";s:14:"viewed|%s time";a:2:{i:0;s:4:"%s ?";i:1;s:4:"%s ?";}s:13:"Add a comment";s:6:"??????";s:11:"image|First";s:3:"???";s:10:"image|Last";s:4:"????";s:8:"Location";s:4:"????";s:4:"Date";s:2:"??";s:6:"Camera";s:5:"?????";s:4:"Lens";s:4:"????";s:4:"Film";s:4:"????";s:21:"Darkroom manipulation";s:4:"????";s:20:"Digital manipulation";s:6:"??????";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:26:"Simplified Chinese (UTF-8)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.zh_tw.pmo
0,0 → 1,3
a:43:{s:22:"Gallery not found '%s'";s:13:"µL¦¹¬Ûï '%s'";s:20:"Image not found '%s'";s:13:"µL¦¹·Ó¤ù '%s'";s:8:"email|at";s:6:"¤p¦Ñ¹«";s:9:"email|dot";s:2:"ÂI";s:26:"Page created in %s seconds";s:18:"ºc¦¨­¶­±¦@ªá¶O%s¬í";s:23:"singapore|Powered by %s";s:12:"¬Ûïºc¦¨: %s";s:20:"All rights reserved.";s:13:"«O¯d©Ò¦³Åv§Q.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:49:"¨S¦³ª©Åv¾Ö¦³ªÌªº®Ñ­±Án©ú, ¤£±o¥H¥ô¦ó§Î¦¡½Æ»s¹Ï¤ù.";s:6:"Log in";s:4:"µn¤J";s:24:"crumb line|You are here:";s:9:"²{¦b¦ì¸m:";s:10:"image|Next";s:6:"¤U¤@±i";s:16:"image|Thumbnails";s:6:"¦^¹wÄý";s:14:"image|Previous";s:6:"¤W¤@±i";s:18:"Select language...";s:11:"¿ï¾Ü»y¨¥...";s:2:"Go";s:4:"½T©w";s:18:"Select template...";s:15:"¿ï¾Ü­·®æ¼Ëª©...";s:8:"%s image";a:2:{i:0;s:0:"";i:1;s:0:"";}s:12:"No
thumbnail";s:13:"¹wÄý¹Ï
¤£¦s¦b";s:25:"Sample image from gallery";s:8:"¬Ûï¼Ë±i";s:19:"Showing %s-%s of %s";s:22:"¥Ø«eÅã¥Ü %s-%s, ¦@%s­¶";s:10:"gallery|Up";s:6:"¤W¤@¼h";s:20:"gallery|Up one level";s:8:"¦^¤W¤@¼h";s:16:"gallery|Previous";s:6:"«e¤@­Ó";s:13:"gallery|First";s:6:"²Ä¤@­Ó";s:12:"gallery|Next";s:6:"¤U¤@­Ó";s:12:"gallery|Last";s:8:"³Ì«á¤@­Ó";s:17:"artist name|by %s";s:10:"Äá¼vªÌ: %s";s:5:"Email";s:4:"«H½c";s:11:"Description";s:4:"²¤¶";s:9:"Copyright";s:4:"ª©Åv";s:6:"Viewed";s:8:"ÂsÄý¦¸¼Æ";s:14:"viewed|%s time";a:2:{i:0;s:0:"";i:1;s:0:"";}s:13:"Add a comment";s:8:"µoªíµû½×";s:11:"image|First";s:6:"²Ä¤@±i";s:10:"image|Last";s:8:"³Ì«á¤@±i";s:8:"Location";s:4:"¦aÂI";s:4:"Date";s:4:"¤é´Á";s:6:"Camera";s:8:"¨Ï¥Î¬Û¾÷";s:4:"Lens";s:4:"ÃèÀY";s:4:"Film";s:4:"©³¤ù";s:21:"Darkroom manipulation";s:8:"·t©Ð³B²z";s:20:"Digital manipulation";s:8:"¼Æ¦ì«á»s";i:0;a:3:{s:7:"charset";s:4:"big5";s:8:"language";s:26:"Traditional Chinese (Big5)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/locale/singapore.zh_tw_utf8.pmo
0,0 → 1,3
a:44:{s:22:"Gallery not found '%s'";s:0:"";s:20:"Image not found '%s'";s:0:"";s:8:"email|at";s:5:"Email";s:9:"email|dot";s:0:"";s:26:"Page created in %s seconds";s:26:"構成頁面共花費%s秒";s:23:"singapore|Powered by %s";s:13:"Powered by %s";s:20:"All rights reserved.";s:19:"保留所有權利.";s:104:"Images may not be reproduced in any form without the express written permission of the copyright holder.";s:72:"沒有版權擁有者的書面許可, 不得以任何形式複製圖片.";s:6:"Log in";s:6:"登入";s:24:"crumb line|You are here:";s:13:"現在位置:";s:10:"image|Next";s:9:"下一張";s:16:"image|Thumbnails";s:9:"回預覽";s:14:"image|Previous";s:9:"上一張";s:18:"Select language...";s:0:"";s:2:"Go";s:0:"";s:18:"Select template...";s:0:"";s:10:"%s gallery";a:1:{i:0;s:9:"上一層";}s:8:"%s image";a:2:{i:0;s:0:"";i:1;s:0:"";}s:12:"No
thumbnail";s:19:"預覽圖
不存在";s:25:"Sample image from gallery";s:6:"樣張";s:19:"Showing %s-%s of %s";s:28:"目前顯示 %s-%s, 共%s頁";s:10:"gallery|Up";s:9:"上一層";s:20:"gallery|Up one level";s:12:"回上一層";s:16:"gallery|Previous";s:9:"前一個";s:13:"gallery|First";s:9:"第一個";s:12:"gallery|Next";s:9:"下一個";s:12:"gallery|Last";s:12:"最後一個";s:17:"artist name|by %s";s:10:"作者: %s";s:5:"Email";s:5:"Email";s:11:"Description";s:6:"簡介";s:9:"Copyright";s:6:"版權";s:6:"Viewed";s:12:"瀏覽次數";s:14:"viewed|%s time";a:2:{i:0;s:0:"";i:1;s:0:"";}s:13:"Add a comment";s:12:"發表評論";s:11:"image|First";s:9:"第一張";s:10:"image|Last";s:12:"最後一張";s:8:"Location";s:6:"地點";s:4:"Date";s:6:"日期";s:6:"Camera";s:12:"使用相機";s:4:"Lens";s:6:"鏡頭";s:4:"Film";s:6:"底片";s:21:"Darkroom manipulation";s:12:"暗房處理";s:20:"Digital manipulation";s:12:"數位後製";i:0;a:3:{s:7:"charset";s:5:"utf-8";s:8:"language";s:27:"Traditional Chinese (UTF-8)";s:6:"plural";s:31:"$nplurals=1; $plural=$n==1?0:1;";}}
/photogallery/install/index.html
0,0 → 1,27
<!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">
<head>
<title>singapore setup</title>
<link rel="stylesheet" type="text/css" href="../docs/docstyle.css" />
</head>
 
<body>
 
<h1>singapore Setup</h1>
 
<p>Welcome to the singapore setup process. This should take no more than a minute.</p>
 
<ul>
<li><a href="install.php">Install singapore</a></li>
<li><a href="uninstall.php">Uninstall singapore</a></li>
<!--<li><a href="migrate.php">Migrate database information</a></li>-->
<li><a href="../">Return to singapore</a></li>
</ul>
 
<p>Once you have completed the setup process you must delete or protect this
<code>install/</code> directory to prevent unauthorised access.</p>
 
</body>
</html>
/photogallery/install/install.inc.php
0,0 → 1,258
<?php
 
/**
* Contains functions used during the install process.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: install.inc.php,v 1.4 2006/01/22 03:25:37 tamlyn Exp $
*/
 
/**
* Test server configuration.
* @return bool true if no errors occurred; false otherwise
*/
function testServer()
{
setupHeader("Testing PHP version");
setupMessage("PHP version is ".phpversion());
$bits = explode(".",phpversion());
if(strcmp($bits[0],"4")<0 || strcmp($bits[0],"4")==0 && strcmp($bits[1],"1")<0)
return setupError("singapore requires PHP 4.1.0 or higher ");
$success = true;
setupHeader("Testing PHP configuration");
//setupMessage("If any of these tests fail, you may be able to change the configuration ".
// "directive (specified in brackets) either in php.ini or by adding ".
// "<code>ini_set(\"<b>directive_name</b>, 1)</code> to <code>includes/header.php</code>");
 
if(!ini_get("safe_mode")) setupMessage("Safe mode disabled");
else $success &= setupError("PHP is running in 'safe mode' (<code>safe_mode</code>). Singapore may still function correctly but safe mode operation is not supported");
$session_save_path = ini_get("session.save_path");
if(!empty($session_save_path) && is_writable($session_save_path) || ini_get("session.save_handler")!="files") setupMessage("Session save path seems to be correctly specified");
else $success &= setupError("Session save path does not exist or is not writable (<code>session.save_path</code>). Singapore will function but you may not be able to use the admin interface");
 
if(ini_get("session.use_trans_sid")) setupMessage("Transparent session id support enabled");
else setupMessage("Transparent session id support disabled (<code>use_trans_sid</code>). Singapore will function but will <b>require</b> cookies for the admin interface to function");
 
if(ini_get("file_uploads")) setupMessage("File uploading enabled");
else $success &= setupError("File uploading disabled (<code>file_uploads</code>). Singapore will function but you will not be able to upload images via the admin interface");
 
$upload_tmp_dir = ini_get("upload_tmp_dir");
if(empty($upload_tmp_dir) || is_writable($upload_tmp_dir)) setupMessage("Upload temp directory seems to be correctly specified");
else $success &= setupError("Upload directory directory does not exist or is not writable (<code>upload_tmp_dir</code>). Singapore will function but you may not be able to upload images via the admin interface");
//setupMessage("Maximum upload size is ".floor(ini_get("upload_max_filesize")/1024)."KB. You will not be able to upload files larger than this via the admin interface");
if(ini_get("allow_url_fopen")) setupMessage("Remote file handling enabled");
else $success &= setupError("Remote file handling disabled (<code>allow_url_fopen</code>). Singapore will function but you will not be able to generate thumbnails for remotely hosted files");
setupHeader("Testing for config file");
if(file_exists($GLOBALS['basePath']."singapore.ini")) setupMessage("Config file found");
else $success &= setupError("Config file not found - singapore.ini must be located in the root singapore directory");
setupHeader("Testing for GD");
//get phpinfo data
ob_start();
phpinfo(8);
$phpinfo = ob_get_contents();
ob_end_clean();
//find gd version
$phpinfo = strip_tags($phpinfo);
$phpinfo = stristr($phpinfo,"gd version");
$phpinfo = stristr($phpinfo,"version");
if(!$phpinfo) $success &= setupError("GD not found. You may be able to use ImageMagick instead");
else {
//extract text version and number version
$gd_version_text = substr($phpinfo,0,strpos($phpinfo,"\n"));
$gd_version_number = substr($gd_version_text,0,strpos($gd_version_text,"."));
$gd_version_number = substr($gd_version_number, strlen($gd_version_number)-1);
setupMessage("Found GD: $gd_version_text");
if($gd_version_number=="1") setupMessage("Please change the <code>thumbnail_software</code> option in singapore.ini to \"gd1\". Note: GD1 produces very poor quality thumbnails so please use GD2 or ImageMagick if available");
}
setupHeader("Testing for ImageMagick");
$foundIM = exec("mogrify");
$whereIM = exec("whereis mogrify");
if($foundIM) {
if($whereIM) setupMessage("Found ImageMagick at $whereIM");
else setupMessage("Found ImageMagick");
setupMessage("To take advantage of ImageMagick change the <code>thumbnail_software</code> option in singapore.ini to \"im\"");
} else setupMessage("ImageMagick not found but that doesn't mean it's not there. If it really is not available you may be able to install it yourself (even without shell access to the server)");
return $success;
}
 
 
/**
* Creates cache and logs directories required to run singapore and ensures
* all required directories are writeable.
* @return bool true if no errors occurred; false otherwise
*/
function createDirectories($config)
{
$success = true;
setupHeader("Creating directories");
if(is_writable($config->base_path.$config->pathto_data_dir)) {
setupMessage("Data directory is writable");
if(file_exists($config->base_path.$config->pathto_cache))
if(is_writable($config->base_path.$config->pathto_cache))
setupMessage("Cache directory already exists at ".$config->base_path.$config->pathto_cache." and is writable");
else
$success = setupError("Cache directory already exists at ".$config->base_path.$config->pathto_cache." but is not writable. Please CHMOD to 777");
else
if(mkdir($config->base_path.$config->pathto_cache, $config->directory_mode)) {
@chmod($config->base_path.$config->pathto_cache, $config->directory_mode);
setupMessage("Created cache directory at ".$config->base_path.$config->pathto_cache);
} else
$success = setupError("Could not create cache directory at ".$config->base_path.$config->pathto_cache);
if($config->track_views)
if(file_exists($config->base_path.$config->pathto_logs))
if(is_writable($config->base_path.$config->pathto_logs))
setupMessage("Logs directory already exists at ".$config->base_path.$config->pathto_logs." and is writable");
else
$success = setupError("Logs directory already exists at ".$config->base_path.$config->pathto_logs." but is not writable. Please CHMOD to 777");
else
if(mkdir($config->base_path.$config->pathto_logs, $config->directory_mode)) {
@chmod($config->base_path.$config->pathto_logs, $config->directory_mode);
setupMessage("Created logs directory at ".$config->base_path.$config->pathto_logs);
} else
$success = setupError("Could not create logs directory at ".$config->base_path.$config->pathto_logs);
else
setupMessage("View logging disabled. Logs directory not created");
}
else
$success = setupError("Data directory (".$config->base_path.$config->pathto_data_dir.") is not writable. Please CHMOD to 777");
 
return $success;
}
 
/**
* Creates the tables and inserts the default users.
* @param sgIO_sql pointer to a singapore SQL backend object
*/
function sqlCreateTables(&$io) {
$success = true;
setupHeader("Creating tables");
if(@$io->query("SELECT * FROM ".$io->config->sql_prefix."galleries"))
setupMessage("'".$io->config->sql_prefix."galleries' table already exists - skipped");
elseif($io->query("CREATE TABLE ".$io->config->sql_prefix."galleries (".
"id varchar(250) NOT NULL, ".
"lang varchar(16) NOT NULL DEFAULT '', ".
"filename varchar(200), ".
"owner varchar(32), ".
"groups varchar(64), ".
"permissions int UNSIGNED, ".
"categories varchar(255), ".
"name varchar(255), ".
"artist varchar(255), ".
"email varchar(255), ".
"copyright varchar(255), ".
"description text, ".
"summary text, ".
"date varchar(255),".
"hits smallint UNSIGNED,".
"lasthit int UNSIGNED,".
"PRIMARY KEY (id, lang)".
")")) setupMessage("'".$io->config->sql_prefix."galleries' table created");
else
$success = setupError("Unable to create '".$io->config->sql_prefix."galleries' table:".$io->error());
if(@$io->query("SELECT * FROM ".$io->config->sql_prefix."images"))
setupMessage("'".$io->config->sql_prefix."images' table already exists - skipped");
elseif($io->query("CREATE TABLE ".$io->config->sql_prefix."images (".
"galleryid varchar(250) NOT NULL, ".
"filename varchar(200) NOT NULL, ".
"lang varchar(16) NOT NULL DEFAULT '', ".
"thumbnail varchar(255), ".
"owner varchar(32), ".
"groups varchar(64), ".
"permissions int, ".
"categories varchar(64), ".
"name varchar(255), ".
"artist varchar(255), ".
"email varchar(255), ".
"copyright varchar(255), ".
"description text, ".
"width smallint UNSIGNED, ".
"height smallint UNSIGNED, ".
"type tinyint UNSIGNED, ".
"location varchar(255), ".
"date varchar(255), ".
"camera varchar(255), ".
"lens varchar(255), ".
"film varchar(255), ".
"darkroom text, ".
"digital text, ".
"hits smallint UNSIGNED,".
"lasthit int UNSIGNED,".
"PRIMARY KEY (galleryid, filename, lang)".
")")) setupMessage("'".$io->config->sql_prefix."images' table created");
else
$success = setupError("Unable to create '".$io->config->sql_prefix."images' table:".$io->error());
if(@$io->query("SELECT * FROM ".$io->config->sql_prefix."users"))
setupMessage("'".$io->config->sql_prefix."users' table already exists - skipped");
elseif($io->query("CREATE TABLE ".$io->config->sql_prefix."users (".
"username varchar(32) NOT NULL, ".
"userpass char(32) NOT NULL, ".
"permissions int UNSIGNED, ".
"groups varchar(64), ".
"email varchar(255), ".
"fullname varchar(255), ".
"description varchar(255), ".
"stats varchar(255), ".
"PRIMARY KEY (username)".
")")) {
setupMessage("'".$io->config->sql_prefix."users' table created");
if($io->query("INSERT INTO ".$io->config->sql_prefix."users VALUES".
'("admin", "5f4dcc3b5aa765d61d8327deb882cf99", 1024, "", "", "Administrator", "Default administrator account", "")') &&
$io->query("INSERT INTO ".$io->config->sql_prefix."users VALUES".
'("guest", "5f4dcc3b5aa765d61d8327deb882cf99", 0, "", "", "Guest", "Restricted use account for guests who do not have a user account", "")'))
setupMessage("Inserted default users into '".$io->config->sql_prefix."users' table");
else
$success = setupError("Unable to insert default users into '".$io->config->sql_prefix."users' table:".$io->error());
} else
$success = setupError("Unable to create '".$io->config->sql_prefix."users' table:".$io->error());
return $success;
}
 
 
//output functions
function setupHeader($var)
{
echo "\n</p>\n\n<h2>{$var}</h2>\n\n<p>\n";
}
 
/**
* Print an information message. Always returns true.
* @return true
*/
function setupMessage($var)
{
echo "{$var}.<br />\n";
return true;
}
 
/**
* Print an error message. Always returns false.
* @return false
*/
function setupError($var)
{
echo "<span class=\"error\">{$var}</span>.<br />\n";
return false;
}
 
?>
/photogallery/install/install.php
0,0 → 1,151
<?php
 
/**
* Performs necessary actions to install singapore.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: install.php,v 1.6 2006/02/04 02:12:12 tamlyn Exp $
*/
 
//path to singapore root
$basePath = "../";
 
require_once "install.inc.php";
require_once $basePath."includes/config.class.php";
 
//determine current step in setup process
$setupStep = isset($_REQUEST["step"]) ? $_REQUEST["step"] : "test";
 
if($setupStep=="phpinfo") {
phpinfo();
exit;
}
 
?><!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">
<head>
<title>singapore setup</title>
<link rel="stylesheet" type="text/css" href="../docs/docstyle.css" />
</head>
 
<body>
 
<?php
//if file is parsed by php then this block will never be executed
if(false) {
?>
</p>
 
<h1>Oh dear...</h1>
 
<p>PHP is not installed or is not configured correctly. See the
<a href="http://www.php.net/manual/">PHP manual</a> for more information.
 
<?php
} //end php test
 
switch($setupStep) {
case "test" :
setupHeader("Step 1 of 2: Test Server");
setupMessage("Attempting to find out if your server is capable of running singapore");
setupMessage("No changes are made at this time");
if(testServer()) {
setupHeader("OK");
setupMessage("All tests completed successfully");
} else {
setupHeader("Oops!");
setupError("One or more problems were encountered. You may want to fix them and <a href=\"install.php?step=test\">retry this step</a>");
}
echo '<br /><a href="index.html">&lt;&lt; Previous: welcome</a>';
echo ' | <a href="install.php?step=phpinfo">View PHP configuration</a>';
echo ' | <a href="install.php?step=database">Next: setup database &gt;&gt;</a>';
//echo ' | <a href="index.html">Finish</a>';
//echo ' | <a href="install.php?step=directories">Next: create directories &gt;&gt;</a>';
break;
case "directories" :
setupHeader("Step 2 of 3: Create Directories");
setupMessage("Setup will now create the directories necessary to store thumbnails and logs");
//create config object
$config = new sgConfig($basePath."singapore.ini");
$config->pathto_logs = $config->pathto_data_dir."logs/";
$config->pathto_cache = $config->pathto_data_dir."cache/";
$config->base_path = $basePath;
if(createDirectories($config)) {
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="install.php?step=directories">retry this step</a>');
}
echo '<br /><a href="install.php?step=test">&lt;&lt; Previous: test server</a>';
echo ' | <a href="install.php?step=database">Next: setup database &gt;&gt;</a>';
break;
case "database" :
setupHeader("Step 2 of 2: Setup Database");
//create config object
$config =& sgConfig::getInstance();
$config->loadConfig($basePath."singapore.ini");
$config->base_path = $basePath;
switch($config->io_handler) {
case "csv" :
setupMessage("The default CSV file database does not require any further setting up");
setupHeader("OK");
setupMessage("This step completed successfully");
break;
case "mysql" :
include_once $basePath."includes/io_mysql.class.php";
$config->loadConfig($basePath."secret.ini.php");
setupMessage("Setup will now create the tables necessary to run singapore on a MySQL database");
setupHeader("Connecting to database");
$io = new sgIO_mysql();
if(!$io) setupError("Error connecting to database. Please ensure database settings are correct");
if(sqlCreateTables($io)) {
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="install.php?step=database">retry this step</a>');
}
break;
case "sqlite" :
include_once $basePath."includes/io_sqlite.class.php";
setupMessage("Setup will now create the database and tables necessary to run singapore on SQLite");
setupHeader("Opening database file");
$io = new sgIO_sqlite();
if(!$io) {
setupError("Error connecting to database. Please ensure database settings are correct");
break;
} else setupMessage("Success");
if(sqlCreateTables($io)) {
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="install.php?step=database">retry this step</a>');
}
break;
default :
setupError("Unrecognised io_handler.");
}
setupMessage("Don't forget to delete or protect this <code>install</code> directory to prevent unauthorised access");
echo '<br /><a href="install.php?step=test">&lt;&lt; Previous: test server</a>';
//echo '<br /><a href="install.php?step=directories">&lt;&lt; Previous: create directories</a>';
echo ' | <a href="index.html">Finish</a>';
break;
}
?>
 
</body>
</html>
/photogallery/install/migrate.inc.php
0,0 → 1,95
<?php
 
/**
* Contains functions used during the database migration process.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: migrate.inc.php,v 1.2 2004/12/15 17:04:56 tamlyn Exp $
*/
 
 
function setPerms($obj) {
$obj->permissions = 0;
if(!empty($_POST["sgGrpRead"])) $obj->permissions |= SG_GRP_READ;
if(!empty($_POST["sgGrpEdit"])) $obj->permissions |= SG_GRP_EDIT;
if(!empty($_POST["sgGrpAdd"])) $obj->permissions |= SG_GRP_ADD;
if(!empty($_POST["sgGrpDelete"])) $obj->permissions |= SG_GRP_DELETE;
if(!empty($_POST["sgWldRead"])) $obj->permissions |= SG_WLD_READ;
if(!empty($_POST["sgWldEdit"])) $obj->permissions |= SG_WLD_EDIT;
if(!empty($_POST["sgWldAdd"])) $obj->permissions |= SG_WLD_ADD;
if(!empty($_POST["sgWldDelete"])) $obj->permissions |= SG_WLD_DELETE;
$obj->groups = $_REQUEST["sgGroups"];
$obj->owner = $_REQUEST["sgOwner"];
return $obj;
}
 
 
function convertDirectory ($path, $io_in, $io_out)
{
if (is_dir($path)) {
$gallery = $io_in->getGallery($path);
echo "<ul><li>Checking $path<br />\n";
if($gallery) {
if($gallery->summary != "" && empty($_REQUEST["convertOverwrite"]))
echo "Did NOT overwrite non-empty summary in $path<br />\n";
else {
if($_REQUEST["convertType"]!='none')
$gallery->summary = $gallery->desc;
if($_REQUEST["convertType"]=='move')
$gallery->desc = "";
}
 
$gallery = setPerms($gallery);
for($i=0; $i<count($gallery->images); $i++)
$gallery->images[$i] = setPerms($gallery->images[$i]);
if($io_out->putGallery($gallery))
echo "Successfully converted $path<br />\n";
else
echo "Problem saving data file for $path<br />\n";
} else
echo "Skipping $path<br />\n";
$d = dir($path);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$path = $d->path."/".$file;
if (is_dir($path)) {
convertDirectory($path);
}
}
echo "</li></ul>\n";
}
}
 
//output functions
function setupHeader($var)
{
echo "\n</p>\n\n<h2>{$var}</h2>\n\n<p>\n";
}
 
/**
* Print an information message. Always returns true.
* @return true
*/
function setupMessage($var)
{
echo "{$var}.<br />\n";
return true;
}
 
/**
* Print an error message. Always returns false.
* @return false
*/
function setupError($var)
{
echo "<span class=\"error\">{$var}</span>.<br />\n";
return false;
}
 
?>
/photogallery/install/migrate.php
0,0 → 1,203
<?php
 
//permissions bit flags
define("SG_GRP_READ", 1);
define("SG_GRP_EDIT", 2);
define("SG_GRP_ADD", 4);
define("SG_GRP_DELETE", 8);
define("SG_WLD_READ", 16);
define("SG_WLD_EDIT", 32);
define("SG_WLD_ADD", 64);
define("SG_WLD_DELETE", 128);
 
$basePath = "../";
 
//determine current step in setup process
$setupStep = isset($_REQUEST["step"]) ? $_REQUEST["step"] : "choose";
 
?>
<!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">
<head>
<title>singapore database migration</title>
<link rel="stylesheet" type="text/css" href="../docs/docstyle.css" />
</head>
 
<body>
 
<?php
 
require_once $basePath."includes/config.class.php";
require_once $basePath."includes/gallery.class.php";
require_once $basePath."includes/image.class.php";
$config = new sgConfig($basePath."singapore.ini");
 
 
switch($setupStep) {
case "select" :
setupHeader("Step 1 of 2: Select databases");
setupMessage("Nothing is deleted at this time");
makeWritable($basePath);
setupHeader("OK");
setupMessage("This step completed successfully");
setupHeader("WARNING!");
setupMessage("The following step will delete all gallery, image and user information from the currently selected database. Gallery directories and image files will not be deleted but all extended information (e.g. name, artist, copyright etc.) will be irretrievably lost");
echo '<br /><a href="index.html">Finish</a>';
echo ' | <a href="uninstall.php?step=database">Next: I AM SURE I WANT TO delete database information &gt;&gt;</a>';
break;
case "defaults" :
setupHeader("Step 2 of 3: Select default permissions");
setupMessage("Nothing is deleted at this time");
makeWritable($basePath);
setupHeader("OK");
setupMessage("This step completed successfully");
setupHeader("WARNING!");
setupMessage("The following step will delete all gallery, image and user information from the currently selected database. Gallery directories and image files will not be deleted but all extended information (e.g. name, artist, copyright etc.) will be irretrievably lost");
echo '<br /><a href="index.html">Finish</a>';
echo ' | <a href="uninstall.php?step=database">Next: I AM SURE I WANT TO delete database information &gt;&gt;</a>';
break;
case "convert" :
setupHeader("Step 2 of 2: Delete database information");
//create config object
$config = new sgConfig($basePath."singapore.ini");
$config->loadConfig($basePath."secret.ini.php");
$config->base_path = $basePath;
//include base classes
require_once $basePath."includes/io.class.php";
require_once $basePath."includes/io_sql.class.php";
switch($config->io_handler) {
case "csv" :
setupMessage("The default CSV file database does not require uninstalling");
setupHeader("OK");
setupMessage("This step completed successfully");
break;
case "mysql" :
require_once $basePath."includes/io_mysql.class.php";
setupMessage("Setup will now delete all gallery, image and user information");
setupHeader("Connecting to MySQL database");
$io = new sgIO_mysql($config);
if(!$io) {
setupError("Error connecting to database. Please ensure database settings are correct");
break;
} else setupMessage("Connected");
if(sqlDropTables($io)) {
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="migrate.php?step=database">retry this step</a>');
}
break;
case "sqlite" :
setupMessage("Setup will now delete all gallery, image and user information");
setupHeader("Deleting SQLite database file");
if(unlink($basePath.$config->pathto_data_dir."sqlite.dat")) {
setupMessage("Deleted database file '".$basePath.$config->pathto_data_dir."sqlite.dat'");
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupError("Unable to delete database file '".$basePath.$config->pathto_data_dir."sqlite.dat'");
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="migrate.php?step=database">retry this step</a>');
}
break;
default :
setupError("Unrecognised io_handler");
}
echo '<br /><a href="uninstall.php?step=reset">&lt;&lt; Previous: Reset permissions</a>';
echo ' | <a href="index.html">Finish</a>';
break;
}
 
if(isset($_REQUEST["convertType"])) {
 
require_once $basePath."includes/config.class.php";
require_once $basePath."includes/gallery.class.php";
require_once $basePath."includes/image.class.php";
require_once $basePath."includes/io.class.php";
require_once $basePath."includes/io_sql.class.php";
$config = new sgConfig($basePath."singapore.ini");
$config->base_path = $basePath;
//echo "<ul>\n";
convertDirectory($config->base_path.$config->pathto_galleries);
//echo "</ul>\n";
echo "<p>All operations complete.</p>\n";
 
} else { ?>
<p>This will convert all your metadata files from singapore 0.9.6, 0.9.7, 0.9.8 or 0.9.9 to 0.9.10.</p>
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<h3>summary field</h3>
<p>There is a new gallery summary field that is displayed instead of the
description in the parent gallery. You can choose to either copy or move the
old description field to the summary field or leave both untouched:</p>
 
<p><input type="radio" class="radio" name="convertType" value="copy" checked="true" /> Copy<br />
<input type="radio" class="radio" name="convertType" value="move" /> Move<br />
<input type="radio" class="radio" name="convertType" value="none" /> Neither<br />
 
<p>By default only empty summary fields will be written to. Check this option to
allow the summary field to be overwritten <input type="checkbox" class="checkbox" name="convertOverwrite" /></p>
 
<h3>permissions</h3>
 
<p>This version introduces multiple authorised users and image &amp; gallery
permissions. Please choose the default permissions that you would like all
objects to be set to. The default permissions selected below are recommended as
they will make all images &amp; galleries readable by everyone but only
modifiable by administrators. See the readme for more information on the
permissions model used by singapore.</p>
<table>
<tr>
<td>Owner</td>
<td><input type="text" name="sgOwner" value="__nobody__" /></td>
</tr>
<tr>
<td>Groups</td>
<td><input type="text" name="sgGroups" value="" /></td>
</tr>
<tr>
<td>Group permissions</td>
<td><div class="inputbox">
<input type="checkbox" class="checkbox" name="sgGrpRead" checked="true"/> Read
<input type="checkbox" class="checkbox" name="sgGrpEdit" /> Edit
<input type="checkbox" class="checkbox" name="sgGrpAdd" /> Add
<input type="checkbox" class="checkbox" name="sgGrpDelete" /> Delete
</div></td>
</tr>
<tr>
<td>World permissions</td>
<td><div class="inputbox">
<input type="checkbox" class="checkbox" name="sgWldRead" checked="true"/> Read
<input type="checkbox" class="checkbox" name="sgWldEdit" /> Edit
<input type="checkbox" class="checkbox" name="sgWldAdd" /> Add
<input type="checkbox" class="checkbox" name="sgWldDelete" /> Delete
</div></td>
</tr>
</table>
 
 
<p>Please note that while the script will create backups of your metadata files
it is highly recommended that you create your own backups for added security.</p>
 
<input type="submit" class="button" value="Go" /></p>
</form>
<?php } ?>
 
<p><a href="index.html">Return</a> to tools.</p>
 
</body>
</html>
/photogallery/install/uninstall.inc.php
0,0 → 1,91
<?php
 
/**
* Contains functions used during the uninstall process.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: uninstall.inc.php,v 1.1 2004/12/02 12:01:59 tamlyn Exp $
*/
 
/**
* Recursively attempts to make all files and directories in $dir writable
*
* @param string full directory name (must end with /)
*/
function makeWritable($dir)
{
if (is_dir($dir)) {
$d = dir($dir);
while (($file = $d->read()) !== false) {
if ($file == '.' || $file == '..') continue;
$fullfile = $d->path . $file;
if(!is_writable($fullfile) && @chmod($fullfile,0777))
setupMessage("Made $fullfile writable");
if (is_dir($fullfile))
makeWritable($fullfile."/");
}
}
}
 
 
/**
* Drops all tables created by singapore.
* @param sgIO_sql pointer to a singapore SQL backend object
*/
function sqlDropTables($io) {
$success = true;
setupHeader("Deleting tables");
if(!$io->query("SELECT * FROM ".$io->config->sql_prefix."galleries"))
setupMessage("'".$io->config->sql_prefix."galleries' table not found - skipped");
elseif($io->query("DROP TABLE ".$io->config->sql_prefix."galleries"))
setupMessage("'".$io->config->sql_prefix."galleries' table deleted");
else
$success = setupError("Unable to delete '".$io->config->sql_prefix."galleries' table:".$io->error());
if(!$io->query("SELECT * FROM ".$io->config->sql_prefix."images"))
setupMessage("'".$io->config->sql_prefix."images' table not found - skipped");
elseif($io->query("DROP TABLE ".$io->config->sql_prefix."images"))
setupMessage("'".$io->config->sql_prefix."images' table deleted");
else
$success = setupError("Unable to delete '".$io->config->sql_prefix."images' table:".$io->error());
if(!$io->query("SELECT * FROM ".$io->config->sql_prefix."users"))
setupMessage("'".$io->config->sql_prefix."users' table not found - skipped");
elseif($io->query("DROP TABLE ".$io->config->sql_prefix."users"))
setupMessage("'".$io->config->sql_prefix."users' table deleted");
else
$success = setupError("Unable to delete '".$io->config->sql_prefix."users' table:".$io->error());
return $success;
}
 
 
//output functions
function setupHeader($var)
{
echo "\n</p>\n\n<h2>{$var}</h2>\n\n<p>\n";
}
 
/**
* Print an information message. Always returns true.
* @return true
*/
function setupMessage($var)
{
echo "{$var}.<br />\n";
return true;
}
 
/**
* Print an error message. Always returns false.
* @return false
*/
function setupError($var)
{
echo "<span class=\"error\">{$var}</span>.<br />\n";
return false;
}
 
?>
/photogallery/install/uninstall.php
0,0 → 1,107
<?php
 
/**
* Performs necessary actions to uninstall singapore.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: uninstall.php,v 1.3 2006/01/20 12:31:08 tamlyn Exp $
*/
 
//path to singapore root
$basePath = "../";
 
require_once "uninstall.inc.php";
require_once $basePath."includes/config.class.php";
 
//determine current step in setup process
$setupStep = isset($_REQUEST["step"]) ? $_REQUEST["step"] : "reset";
 
?><!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">
<head>
<title>singapore setdown</title>
<link rel="stylesheet" type="text/css" href="../docs/docstyle.css" />
</head>
 
<body>
 
<?php
 
switch($setupStep) {
case "reset" :
setupHeader("Step 1 of 2: Reset permissions");
setupMessage("Resetting file permissions on server-generated content");
setupMessage("Nothing is deleted at this time");
makeWritable($basePath);
setupHeader("OK");
setupMessage("This step completed successfully");
setupHeader("WARNING!");
setupMessage("The following step will delete all gallery, image and user information from the currently selected database. Gallery directories and image files will not be deleted but all extended information (e.g. name, artist, copyright etc.) will be irretrievably lost");
echo '<br /><a href="index.html">Finish</a>';
echo ' | <a href="uninstall.php?step=database">Next: I AM SURE I WANT TO delete database information &gt;&gt;</a>';
break;
case "database" :
setupHeader("Step 2 of 2: Delete database information");
//create config object
$config =& sgConfig::getInstance();
$config->loadConfig($basePath."singapore.ini");
$config->base_path = $basePath;
switch($config->io_handler) {
case "csv" :
setupMessage("The default CSV file database does not require uninstalling");
setupHeader("OK");
setupMessage("This step completed successfully");
break;
case "mysql" :
$config->loadConfig($basePath."secret.ini.php");
include_once $basePath."includes/io_mysql.class.php";
setupMessage("Setup will now delete all gallery, image and user information");
setupHeader("Connecting to MySQL database");
$io = new sgIO_mysql($config);
if(!$io) {
setupError("Error connecting to database. Please ensure database settings are correct");
break;
} else setupMessage("Connected");
if(sqlDropTables($io)) {
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="uninstall.php?step=database">retry this step</a>');
}
break;
case "sqlite" :
$config->loadConfig($basePath."secret.ini.php");
setupMessage("Setup will now delete all gallery, image and user information");
setupHeader("Deleting SQLite database file");
if(unlink($basePath.$config->pathto_data_dir."sqlite.dat")) {
setupMessage("Deleted database file '".$basePath.$config->pathto_data_dir."sqlite.dat'");
setupHeader("OK");
setupMessage("This step completed successfully");
} else {
setupError("Unable to delete database file '".$basePath.$config->pathto_data_dir."sqlite.dat'");
setupHeader("Oops!");
setupError('There was a problem. Please fix it and <a href="uninstall.php?step=database">retry this step</a>');
}
break;
default :
setupError("Unrecognised io_handler");
}
echo '<br /><a href="uninstall.php?step=reset">&lt;&lt; Previous: Reset permissions</a>';
echo ' | <a href="index.html">Finish</a>';
break;
}
?>
 
</body>
</html>
/photogallery/includes/admin.class.php
0,0 → 1,1532
<?php
 
/**
* Class providing admin functions.
*
* @package singapore
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2006 Tamlyn Rhodes
* @version $Id: admin.class.php,v 1.65 2006/09/08 15:29:22 tamlyn Exp $
*/
 
define("SG_ADMIN", 1024);
define("SG_SUSPENDED", 2048);
 
//include the base IO class
require_once dirname(__FILE__)."/singapore.class.php";
 
/**
* Provides gallery, image and user administration functions.
*
* @uses Singapore
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
*/
class sgAdmin extends Singapore
{
/**
* Array of error messages raised by the script
* @var array
*/
var $errors = array();
/**
* Array of informational messages raised by the script
* @var array
*/
var $messages = array();
/**
* Base name of admin template file to include
* @var string
*/
var $includeFile = "login";
/**
* Admin constructor. Doesn't call {@link Singapore} constructor.
* @param string the path to the base singapore directory
*/
function sgAdmin($basePath = "")
{
//import class definitions
//io handler class included once config is loaded
require_once $basePath."includes/translator.class.php";
require_once $basePath."includes/thumbnail.class.php";
require_once $basePath."includes/gallery.class.php";
require_once $basePath."includes/config.class.php";
require_once $basePath."includes/image.class.php";
require_once $basePath."includes/user.class.php";
//start execution timer
$this->scriptStartTime = microtime();
 
//remove slashes
if(get_magic_quotes_gpc()) {
$_REQUEST = array_map(array("Singapore","arraystripslashes"), $_REQUEST);
//as if magic_quotes_gpc wasn't insane enough, php doesn't add slashes
//to the tmp_name variable so I have to add them manually. Grrrr.
foreach($_FILES as $key => $nothing)
$_FILES[$key]["tmp_name"] = addslashes($_FILES[$key]["tmp_name"]);
$_FILES = array_map(array("Singapore","arraystripslashes"), $_FILES);
}
$galleryId = isset($_REQUEST["gallery"]) ? $_REQUEST["gallery"] : ".";
//load config from singapore root directory
$this->config =& sgConfig::getInstance();
$this->config->loadConfig($basePath."singapore.ini");
$this->config->loadConfig($basePath."secret.ini.php");
//set runtime values
$this->config->pathto_logs = $this->config->pathto_data_dir."logs/";
$this->config->pathto_cache = $this->config->pathto_data_dir."cache/";
$this->config->pathto_current_template = $this->config->pathto_templates.$this->config->default_template."/";
$this->config->pathto_admin_template = $this->config->pathto_templates.$this->config->admin_template_name."/";
//load config from admin template ini file (admin.ini) if present
$this->config->loadConfig($basePath.$this->config->pathto_admin_template."admin.ini");
$this->template = $this->config->default_template;
//do not load gallery-specific ini files
 
//set current language from request vars or config
$this->language = isset($_REQUEST["lang"]) ? $_REQUEST["lang"] : $this->config->default_language;
//read the language file
$this->translator =& Translator::getInstance($this->language);
$this->translator->readLanguageFile($this->config->base_path.$this->config->pathto_locale."singapore.".$this->language.".pmo");
$this->translator->readLanguageFile($this->config->base_path.$this->config->pathto_locale."singapore.admin.".$this->language.".pmo");
//include IO handler class and create instance
require_once $basePath."includes/io_".$this->config->io_handler.".class.php";
$ioClassName = "sgIO_".$this->config->io_handler;
$this->io = new $ioClassName($this->config);
//set character set
if(!empty($this->translator->languageStrings[0]["charset"]))
$this->character_set = $this->translator->languageStrings[0]["charset"];
else
$this->character_set = $this->config->default_charset;
//set action to perform
if(empty($_REQUEST["action"])) $this->action = "menu";
else $this->action = $_REQUEST["action"];
//set page title
$this->pageTitle = $this->config->gallery_name;
//set root node of crumb line
$holder = new sgGallery("", new stdClass);
$holder->name = $this->config->gallery_name;
$this->ancestors = array($holder);
}
/**
* Push an error message onto the error stack
* @param string Error message
* @param string true if error is fatal; false otherwise (optional)
* @return false
*/
function pushError($error, $fatal = false)
{
if($fatal) die($error);
$this->errors[] = $error;
return false;
}
/**
* Push a message onto the message stack
* @return true
*/
function pushMessage($message)
{
$this->messages[] = $message;
return true;
}
function showMessages()
{
if(empty($this->errors) && empty($this->messages)) return '';
$errorText = $this->translator->_g("ERROR");
$ret = '<ul id="sgAdminMessages">';
foreach($this->errors as $error)
$ret .= '<li class="adminError">'.$errorText.': '.$error.'</li>'."\n";
foreach($this->messages as $message)
$ret .= '<li class="adminMessage">'.$message.'</li>'."\n";
$ret .= '</ul>';
return $ret;
}
/**
* Returns a link to the image or gallery with the correct formatting and path
* NOTE: This takes its arguments in a different order to {@link Singapore::formatURL()}
*
* @author Adam Sissman <adam at bluebinary dot com>
*/
function formatAdminURL($action, $gallery = null, $image = null, $startat = null, $extra = null)
{
$ret = $this->config->base_url."admin.php?";
$ret .= "action=".$action;
if($gallery != null) $ret .= "&amp;gallery=".$gallery;
if($image != null) $ret .= "&amp;image=".$image;
if($startat != null) $ret .= "&amp;startat=".$startat;
if($extra != null) $ret .= $extra;
if($this->language != $this->config->default_language) $ret .= '&amp;'.$this->config->url_lang.'='.$this->language;
if($this->template != $this->config->default_template) $ret .= '&amp;'.$this->config->url_template.'='.$this->template;
return $ret;
}
 
/**
* Tries to find temporary storage space
*/
function findTempDirectory()
{
if(isset($_ENV["TMP"]) && is_writable($_ENV["TMP"])) return $_ENV["TMP"];
elseif(isset($_ENV["TEMP"]) && is_writable($_ENV["TEMP"])) return $_ENV["TEMP"];
elseif(is_writable("/tmp")) return "/tmp";
elseif(is_writable("/windows/temp")) return "/windows/temp";
elseif(is_writable("/winnt/temp")) return "/winnt/temp";
else return null;
}
function getMaxHits($array)
{
$max = 0;
foreach($array as $obj)
if($obj->hits > $max)
$max = $obj->hits;
return $max;
}
/**
* Returns true if the current admin action has been confirmed (i.e. by clicking OK)
*/
function actionConfirmed()
{
return isset($_REQUEST["confirmed"]) && $_REQUEST["confirmed"] == $this->translator->_g("confirm|OK");
}
/**
* Returns true if the current admin action has been cancelled (i.e. by clicking Cancel)
*/
function actionCancelled()
{
return isset($_REQUEST["confirmed"]) && $_REQUEST["confirmed"] == $this->translator->_g("confirm|Cancel");
}
/**
* Checks request variables for action to perform, checks user permissions,
* performs action and sets file to include.
*/
function doAction()
{
//check if user is logged in
if(!$this->isLoggedIn() && $this->action != "login")
return;
//choose which file to include and/or perform admin actions
switch($this->action) {
case "addgallery" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"add")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->addGallery()) {
$this->selectGallery($this->gallery->id."/".$_REQUEST["newgallery"]);
$this->pushMessage($this->translator->_g("Gallery added"));
$this->includeFile = "editgallery";
} else {
$this->includeFile = "newgallery";
}
break;
case "addimage" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"add")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
break;
}
switch($_REQUEST["sgLocationChoice"]) {
case "remote" :
case "single" :
if($this->addImage())
$this->includeFile = "editimage";
else
$this->includeFile = "newimage";
break;
case "multi" :
if($this->addMultipleImages())
$this->includeFile = "view";
else
$this->includeFile = "newimage";
break;
default :
$this->includeFile = "newimage";
break;
}
break;
case "changethumbnail" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->actionConfirmed()) {
$this->saveGalleryThumbnail();
$this->includeFile = "editgallery";
} elseif($this->actionCancelled()) {
$this->includeFile = "editgallery";
} else {
$this->includeFile = "changethumbnail";
}
break;
case "deletegallery" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"delete")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->actionConfirmed() || ($this->gallery->galleryCount()==0 && $this->gallery->imageCount()==0)) {
if($this->deleteGallery())
$this->selectGallery($this->gallery->parent->id);
$this->includeFile = "view";
} elseif($this->actionCancelled()) {
$this->includeFile = "view";
} else {
$GLOBALS["confirmTitle"] = $this->translator->_g("Delete Gallery");
$GLOBALS["confirmMessage"] = $this->translator->_g("Gallery %s is not empty.\nAre you sure you want to irretrievably delete it and all subgalleries and images it contains?", "<em>".$this->gallery->name."</em>");
$this->includeFile = "confirm";
}
break;
case "deleteimage" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"delete")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->actionConfirmed()) {
$this->deleteImage();
$this->includeFile = "view";
} elseif($this->actionCancelled()) {
$this->includeFile = "view";
} else {
$GLOBALS["confirmTitle"] = $this->translator->_g("delete image");
$GLOBALS["confirmMessage"] = $this->translator->_g("Are you sure you want to irretrievably delete image %s from gallery %s?","<em>".$this->image->name().$this->image->byArtistText()."</em>","<em>".$this->gallery->name()."</em>");
$this->includeFile = "confirm";
}
break;
case "deleteuser" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->actionConfirmed()) {
if($this->deleteUser())
$this->pushMessage($this->translator->_g("User deleted"));
$this->includeFile = "manageusers";
} elseif($this->actionCancelled()) {
$this->includeFile = "manageusers";
} else {
$GLOBALS["confirmTitle"] = $this->translator->_g("delete user");
$GLOBALS["confirmMessage"] = $this->translator->_g("Are you sure you want to permanently delete user %s?","<em>".$_REQUEST["user"]."</em>");
$this->includeFile = "confirm";
}
break;
case "editgallery" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} else
$this->includeFile = "editgallery";
break;
case "editimage" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} else
$this->includeFile = "editimage";
break;
case "editpass" :
if($this->user->isGuest()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else
$this->includeFile = "editpass";
break;
case "editpermissions" :
$this->selectGallery();
if(!$this->user->isAdmin() && !$this->user->isOwner($this->gallery)) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} else
$this->includeFile = "editpermissions";
break;
case "editprofile" :
if($this->user->isGuest()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else
$this->includeFile = "editprofile";
break;
case "edituser" :
if(!$this->user->isAdmin() && $_REQUEST["user"] != $this->user->username || $this->user->isGuest()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else
$this->includeFile = "edituser";
break;
case "login" :
if($this->doLogin())
$this->includeFile = "menu";
else
$this->includeFile = "login";
break;
case "logout" :
$this->logout();
$this->includeFile = "login";
break;
case "manageusers" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else
$this->includeFile = "manageusers";
break;
case "multi" :
$this->selectGallery();
if(!isset($_REQUEST["sgGalleries"]) && !isset($_REQUEST["sgImages"])) {
$this->pushMessage($this->translator->_g("Please select one or more items."));
$this->includeFile = "view";
} elseif($_REQUEST["subaction"]==$this->translator->_g("Copy or move")) {
$this->includeFile = "multimove";
} elseif($_REQUEST["subaction"]==$this->translator->_g("Delete")) {
if(!$this->checkPermissions($this->gallery,"delete")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->actionConfirmed()) {
if(isset($_REQUEST["sgImages"])) {
$success = $this->deleteMultipleImages();
$this->pushMessage($this->translator->_g("%s images deleted.", $success));
} else {
$success = $this->deleteMultipleGalleries();
$this->pushMessage($this->translator->_g("%s galleries deleted.", $success));
}
$this->includeFile = "view";
} elseif($this->actionCancelled()) {
$this->includeFile = "view";
} else {
if(isset($_REQUEST["sgImages"])) {
$GLOBALS["confirmTitle"] = $this->translator->_g("Delete Images");
$GLOBALS["confirmMessage"] = $this->translator->_g("Are you sure you want to permanently delete %s images?",count($_REQUEST["sgImages"]));
} else{
$GLOBALS["confirmTitle"] = $this->translator->_g("Delete Galleries");
$GLOBALS["confirmMessage"] = $this->translator->_g("Are you sure you want to permanently delete %s galleries?",count($_REQUEST["sgGalleries"]));
}
$this->includeFile = "confirm";
}
} elseif($_REQUEST["subaction"]==$this->translator->_g("Re-index")) {
if(is_int($success = $this->reindexMultipleGalleries()))
$this->pushMessage($this->translator->_g("Galleries re-indexed. %s total images added.", $success));
$this->includeFile = "view";
}
break;
case "multimove" :
$this->selectGallery();
if($this->actionConfirmed()) {
if(isset($_REQUEST["sgImages"])) {
//$success = $this->moveMultipleImages();
//$this->adminMessage = $this->translator->_g("%s images moved.", $success);
$success=true;
$this->pushMessage("not yet implemented");
} else {
$success = $this->moveMultipleGalleries();
$this->pushMessage($this->translator->_g("%s galleries moved.", $success));
}
}
$this->includeFile = "view";
break;
case "newgallery" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"add")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} else
$this->includeFile = "newgallery";
break;
case "newimage" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"add")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} else
$this->includeFile = "newimage";
break;
case "newuser" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->addUser())
$this->includeFile = "edituser";
else
$this->includeFile = "manageusers";
break;
case "purgecache" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->actionConfirmed()) {
if($this->purgeCache())
$this->pushMessage($this->translator->_g("Thumbnail cache purged"));
$this->includeFile = "menu";
} elseif($this->actionCancelled()) {
$this->includeFile = "menu";
} else {
$dir = $this->getListing($this->config->pathto_cache,$this->config->recognised_extensions);
$GLOBALS["confirmTitle"] = $this->translator->_g("purge cached thumbnails");
$GLOBALS["confirmMessage"] = $this->translator->_g("Are you sure you want to delete all %s cached thumbnails?",count($dir->files));
$this->includeFile = "confirm";
}
break;
case "reindex" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit"))
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
else {
$imagesAdded = $this->reindexGallery();
if(is_int($imagesAdded))
$this->pushMessage($this->translator->_g("Gallery re-indexed. %s images added.",$imagesAdded));
}
$this->includeFile = "view";
break;
case "savegallery" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->saveGallery()) {
$this->includeFile = "view";
} else {
$this->includeFile = "editgallery";
}
break;
case "saveimage" :
$this->selectGallery();
if(!$this->checkPermissions($this->gallery,"edit")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->saveImage()) {
$this->pushMessage($this->translator->_g("Image info saved"));
$this->includeFile = "view";
} else {
$this->includeFile = "view";
}
break;
case "savepass" :
if($this->user->isGuest()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->savePass()) {
$this->pushMessage($this->translator->_g("Password saved"));
$this->includeFile = "menu";
} else {
$this->includeFile = "editpass";
}
break;
case "savepermissions" :
$this->selectGallery();
if(!$this->user->isAdmin() && !$this->user->isOwner($this->gallery)) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "view";
} elseif($this->savePermissions()) {
$this->pushMessage($this->translator->_g("Permissions saved"));
$this->includeFile = "view";
} else {
$this->includeFile = "editpermissions";
}
break;
case "saveprofile" :
if($_REQUEST["user"] != $this->user->username || $this->user->isGuest()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->saveUser()) {
$this->pushMessage($this->translator->_g("User info saved"));
$this->includeFile = "menu";
} else {
$this->includeFile = "editprofile";
}
break;
case "saveuser" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->saveUser())
$this->includeFile = "manageusers";
else
$this->includeFile = "edituser";
break;
case "showgalleryhits" :
$this->selectGallery();
//load hit data for child galleries
foreach(array_keys($this->gallery->galleries) as $index)
$this->io->getHits($this->gallery->galleries[$index]);
/*if(!$this->checkPermissions($this->gallery,"read")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else {*/
$this->includeFile = "galleryhits";
//}
break;
case "showimagehits" :
$this->selectGallery();
/*if(!$this->checkPermissions($this->gallery,"read")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else {*/
$this->includeFile = "imagehits";
//}
break;
case "suspenduser" :
if(!$this->user->isAdmin()) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} elseif($this->suspendUser())
$this->pushMessage($this->translator->_g("User info saved"));
$this->includeFile = "manageusers";
break;
case "view" :
$this->selectGallery();
/*if(!$this->checkPermissions($this->gallery,"read")) {
$this->pushMessage($this->translator->_g("You do not have permission to perform this operation."));
$this->includeFile = "menu";
} else*/
$this->includeFile = "view";
break;
case "menu" :
default :
$this->includeFile = "menu";
}
}
function &allGalleriesArray()
{
$root =& $this->io->getGallery(".", new stdClass, 100);
return $this->allGalleriesRecurse($root);
}
function &allGalleriesRecurse(&$gal)
{
if($gal->hasChildGalleries()) {
$galArray = array();
foreach($gal->galleries as $child)
$galArray = array_merge($galArray, $this->allGalleriesRecurse($child));
array_unshift($galArray, $gal);
return $galArray;
} else
return array($gal);
}
/**
* Returns a two-dimensional array of links for the admin bar.
*
* @returns string
*/
function adminLinksArray()
{
if(!$this->isLoggedIn()) return array(0 => array($this->translator->_g("admin bar|Back to galleries") => "."));
$ret[0][$this->translator->_g("admin bar|Admin")] = $this->formatAdminURL("menu");
$ret[0][$this->translator->_g("admin bar|Galleries")] = $this->formatAdminURL("view", isset($this->gallery) ? $this->gallery->idEncoded() : null);
$ret[0][$this->translator->_g("admin bar|Log out")] = $this->formatAdminURL("logout");
if($this->isGalleryPage() || $this->isAlbumPage() || $this->isImagePage()) {
$ret[1][$this->translator->_g("admin bar|Edit gallery")] = $this->formatAdminURL("editgallery",$this->gallery->idEncoded());
$ret[1][$this->translator->_g("admin bar|Access control")] = $this->formatAdminURL("editpermissions",$this->gallery->idEncoded());
$ret[1][$this->translator->_g("admin bar|Delete gallery")] = $this->formatAdminURL("deletegallery",$this->gallery->idEncoded());
$ret[1][$this->translator->_g("admin bar|New subgallery")] = $this->formatAdminURL("newgallery",$this->gallery->idEncoded());
$ret[1][$this->translator->_g("admin bar|Re-index gallery")] = $this->formatAdminURL("reindex",$this->gallery->idEncoded());
if($this->isImagePage()) {
$ret[2][$this->translator->_g("admin bar|Edit image")] = $this->formatAdminURL("editimage",$this->gallery->idEncoded(),$this->image->id);
$ret[2][$this->translator->_g("admin bar|Delete image")] = $this->formatAdminURL("deleteimage",$this->gallery->idEncoded(),$this->image->id);
}
$ret[2][$this->translator->_g("admin bar|New image")] = $this->formatAdminURL("newimage",$this->gallery->idEncoded());
}
return $ret;
}
/**
* Saves the new password if it is correctly specified.
*
* @return boolean true on success; false otherwise
*/
function savePass()
{
$users = $this->io->getUsers();
$found = false;
for($i=0;$i < count($users);$i++)
if($_POST["sgUsername"] == $users[$i]->username) {
$found = true;
if(md5($_POST["sgOldPass"]) == $users[$i]->userpass)
if($_POST["sgNewPass1"]==$_POST["sgNewPass2"])
if(strlen($_POST["sgNewPass1"]) >= 6 && strlen($_POST["sgNewPass1"]) <= 16) {
$users[$i]->userpass = md5($_POST["sgNewPass1"]);
if($this->io->putUsers($users)) return true;
else $this->pushError($this->translator->_g("Could not save user info"));
}
else
$this->pushError($this->translator->_g("New password must be between 6 and 16 characters long."));
else
$this->pushError($this->translator->_g("The new passwords you entered do not match."));
else
$this->pushError($this->translator->_g("The current password you entered does not match the one in the database."));
}
if(!$found) $this->pushError($this->translator->_g("The username specified was not found in the database."));
//some sort of error occurred so:
return false;
}
/**
* Attempts to log a registered user into admin.
*
* @return boolean true on success; false otherwise
*/
function doLogin()
{
if(!empty($_POST["sgUsername"]) && !empty($_POST["sgPassword"])) {
if($this->loadUser($_POST["sgUsername"]) && md5($_POST["sgPassword"]) == $this->user->userpass){
if($this->user->permissions & SG_SUSPENDED) {
$this->logout();
return $this->pushError($this->translator->_g("Your account has been suspended"));
} else {
$_SESSION["sgUser"]["username"] = $this->user->username;
$_SESSION["sgUser"]["ip"] = $_SERVER["REMOTE_ADDR"];
$_SESSION["sgUser"]["loginTime"] = time();
return $this->pushMessage($this->translator->_g("Welcome to singapore admin!"));
}
}
$this->logout();
return $this->pushError($this->translator->_g("Username and/or password incorrect"));
}
return $this->pushError($this->translator->_g("You must enter a username and password"));
}
/**
* Cancels a user's admin session.
*
* @return true
*/
function logout()
{
$_SESSION["sgUser"] = null;
return $this->pushMessage($this->translator->_g("Thank you and goodbye!"));
}
/**
* Checks if the specified operation is permitted on the specified object
*
* @param sgImage|sgGallery the object to be operated on
* @param string the action to perform (either 'read', 'edit', 'add' or 'delete')
* @return bool true if permissions are satisfied; false otherwise
*/
function checkPermissions($obj, $action, $gallery = null, $image = null)
{
//admins and object owners automatically have full permissions
if($this->user->isAdmin() || $this->user->isOwner($obj))// || (!$this->user->isGuest() && $obj->owner == "__nobody__"))
return true;
//get the appropriate permission bitmask depending on action
switch($action) {
case "read" :
$inheritPerm = SG_IHR_READ;
$worldPerm = SG_WLD_READ;
$groupPerm = SG_GRP_READ;
break;
case "edit" :
$inheritPerm = SG_IHR_EDIT;
$worldPerm = SG_WLD_EDIT;
$groupPerm = SG_GRP_EDIT;
break;
case "add" :
$inheritPerm = SG_IHR_ADD;
$worldPerm = SG_WLD_ADD;
$groupPerm = SG_GRP_ADD;
break;
case "delete" :
$inheritPerm = SG_IHR_DELETE;
$worldPerm = SG_WLD_DELETE;
$groupPerm = SG_GRP_DELETE;
break;
default :
//unrecognised action so disallow it
return false;
}
//check if the permission is inherited
if(($obj->permissions & $inheritPerm) == $inheritPerm)
if($obj->isRoot())
//shouldn't happen, but just in case
return false;
else
//check permissions of parent
return $this->checkPermissions($obj->parent, $action, $gallery, $image);
else
//not inherited so check world and group permissions of current object
return $obj->permissions & $worldPerm
|| ($this->isInGroup($this->user->groups, $obj->groups) && $obj->permissions & $groupPerm);
}
function savePermissions()
{
$obj =& $this->gallery;
$perms = 0;
switch($_POST["sgRead"]) {
case "inherit" : $perms |= SG_IHR_READ; break;
case "group" : $perms |= SG_GRP_READ; break;
case "world" : $perms |= SG_WLD_READ; break;
case "owner" : break;
}
switch($_POST["sgEdit"]) {
case "inherit" : $perms |= SG_IHR_EDIT; break;
case "group" : $perms |= SG_GRP_EDIT; break;
case "world" : $perms |= SG_WLD_EDIT; break;
case "owner" : break;
}
switch($_POST["sgAdd"]) {
case "inherit" : $perms |= SG_IHR_ADD; break;
case "group" : $perms |= SG_GRP_ADD; break;
case "world" : $perms |= SG_WLD_ADD; break;
case "owner" : break;
}
switch($_POST["sgDelete"]) {
case "inherit" : $perms |= SG_IHR_DELETE; break;
case "group" : $perms |= SG_GRP_DELETE; break;
case "world" : $perms |= SG_WLD_DELETE; break;
case "owner" : break;
}
$obj->permissions |= $perms; // isn't this equivalent
$obj->permissions &= $perms; // to == assignment?
//only the owner or admin can change groups
if($this->user->isAdmin() || $this->user->isOwner($obj));
$obj->groups = $_POST["sgGroups"];
//only the admin can change the owner
if($this->user->isAdmin())
$obj->owner = $_POST["sgOwner"];
if($this->io->putGallery($this->gallery))
return $this->pushMessage($this->translator->_g("Gallery info saved"));
return $this->pushError($this->translator->_g("Could not save gallery info"));
}
/**
* Creates a new user.
*
* @return bool true on success; false otherwise
*/
function addUser()
{
$users = $this->io->getUsers();
foreach($users as $usr)
if($usr->username == $_REQUEST["user"])
return $this->pushError($this->translator->_g("Username already exists"));
if(!preg_match("/^[a-zA-Z0-9_]{3,}$/",$_REQUEST["user"]))
return $this->pushError($this->translator->_g("Username must be at least 3 characters long and contain only alphanumeric characters"));
$users[count($users)] = new sgUser($_REQUEST["user"], md5("password"));
if($this->io->putUsers($users))
return $this->pushMessage($this->translator->_g("User info saved"));
return $this->pushError($this->translator->_g("Could not save user info"));
}
/**
* Deletes a user.
*
* @return bool true on success; false otherwise
*/
function deleteUser($username = null)
{
if($username == null)
$username = $_REQUEST["user"];
if($username == "admin" || $username == "guest")
return $this->pushError($this->translator->_g("Cannot delete built in accounts"));
$users = $this->io->getUsers();
foreach($users as $i => $usr)
if($usr->username == $username) {
//delete user at offset $i from $users
array_splice($users,$i,1);
if($this->io->putUsers($users))
return true;
return $this->pushError($this->translator->_g("Could not save user info"));
}
return $this->pushError($this->translator->_g("Username not recognised"));
}
/**
* Saves a user's info.
*
* @return bool true on success; false otherwise
*/
function saveUser() {
$users = $this->io->getUsers();
for($i=0; $i<count($users); $i++)
if($users[$i]->username == $_REQUEST["user"]) {
$users[$i]->email = $this->prepareText($_REQUEST["sgEmail"]);
$users[$i]->fullname = $this->prepareText($_REQUEST["sgFullname"]);
$users[$i]->description = $this->prepareText($_REQUEST["sgDescription"]);
if($this->user->isAdmin() && $_REQUEST["action"] == "saveuser") {
$users[$i]->groups = $this->prepareText($_REQUEST["sgGroups"]);
$users[$i]->permissions = ($_REQUEST["sgType"] == "admin") ? $users[$i]->permissions | SG_ADMIN : $users[$i]->permissions & ~SG_ADMIN;
if(isset($_REQUEST["sgPassword"]) && $_REQUEST["sgPassword"] != "**********")
$users[$i]->userpass = md5($_REQUEST["sgPassword"]);
}
if($this->io->putUsers($users))
return true;
return $this->pushError($this->translator->_g("Could not save user info"));
}
return $this->pushError($this->translator->_g("Username not recognised"));
}
/**
* Suspend or unsuspend a user's account.
*
* @return bool true on success; false otherwise
*/
function suspendUser() {
$users = $this->io->getUsers();
for($i=0; $i<count($users); $i++)
if($users[$i]->username == $_REQUEST["user"]) {
$users[$i]->permissions = ($users[$i]->permissions & SG_SUSPENDED) ? $users[$i]->permissions & ~SG_SUSPENDED : $users[$i]->permissions | SG_SUSPENDED;
if($this->io->putUsers($users))
return true;
return $this->pushError($this->translator->_g("Could not save user info"));
}
return $this->pushError($this->translator->_g("Username not recognised"));
}
/**
* Check for images in specified gallery directory which are
* not in the metadata and add them. If no gallery is specified,
* the current gallery is used.
* @param string id of gallery to reindex (optional)
* @return int|false the number of images added or false on error
*/
function reindexGallery($galleryId = null)
{
if($galleryId == null)
$gal =& $this->gallery;
else
$gal =& $this->io->getGallery($galleryId, new stdClass);
$imagesAdded = 0;
//get list of images
$dir = Singapore::getListing($this->config->pathto_galleries.$gal->id, $this->config->recognised_extensions);
//cycle through the image files
for($i=0; $i<count($dir->files); $i++) {
//search for the image file in the database images
for($j=0; $j<count($gal->images); $j++)
//if we find it
if($dir->files[$i] == $gal->images[$j]->id)
//skip the rest of this loop
continue 2;
//otherwise add the image to the database
$gal->images[$j] = new sgImage($dir->files[$i], $gal, $this->config);
$gal->images[$j]->name = $dir->files[$i];
list(
$gal->images[$j]->width,
$gal->images[$j]->height,
$gal->images[$j]->type
) = GetImageSize($this->config->pathto_galleries.$gal->id."/".$gal->images[$j]->id);
$imagesAdded++;
}
if($this->io->putGallery($gal))
return $imagesAdded;
return $this->pushError($this->translator->_g("Could not save gallery info"));
}
/**
* Reindexes several galleries from the current gallery.
*
* @return int|false number of images added on success; false otherwise
*/
function reindexMultipleGalleries()
{
$totalImagesAdded = 0;
foreach($_REQUEST["sgGalleries"] as $galleryId) {
$current = $this->reindexGallery($galleryId);
if($current === false) $this->pushError($this->translator->_g("Gallery '%s' could not be reindexed", $galleryId));
else $this->pushMessage($this->translator->_g("Gallery '%s' reindexed: %s images added", $galleryId, $current));
$totalImagesAdded += $current;
}
//reload gallery data if we changed any
if($totalImagesAdded)
$this->selectGallery();
return $totalImagesAdded;
}
/**
* Moves or copies galleries.
*
* @return int|false number of galleries moved; false otherwise
*/
function moveMultipleGalleries()
{
$totalGalleriesMoved = 0;
foreach($_REQUEST["sgGalleries"] as $galleryId) {
$source = $this->config->base_path.$this->config->pathto_galleries.$galleryId;
$target = $this->config->base_path.$this->config->pathto_galleries.$_REQUEST['sgMoveTarget'].'/'.basename($galleryId);
if(file_exists($target)) {
$this->pushError($this->translator->_g("Unable to copy/move gallery '%s' because the target gallery already exists.", $galleryId));
} elseif($this->isSubPath($source, $target, false)) {
$this->pushError($this->translator->_g("Unable to copy/move gallery '%s' because the target is a child of the source.", $galleryId));
//} elseif(!is_writable($target)) {
// $this->pushError($this->translator->_g("Unable to copy/move gallery '%s': the target is not writable", $galleryId));
} else {
if($_REQUEST["sgMoveType"] == 'move') { //Move
$current = rename($source, $target);
} else { //Copy
$current = $this->copyDir($source, $target);
}
if($current === false) $this->pushError($this->translator->_g("Unable to copy/move gallery '%s' because the operation failed.", $galleryId));
else $totalGalleriesMoved++;
}
}
//load target gallery
if($totalGalleriesMoved)
$this->selectGallery($_REQUEST['sgMoveTarget']);
return $totalGalleriesMoved;
}
/**
* Copies everything from directory $fromDir to directory $toDir
* and sets up files mode $chmod
* @author Anton Makarenko <makarenkoa at ukrpost dot net>
*/
function copyDir($fromDir, $toDir)
{
$success = true;
$handle = opendir($fromDir);
//ensure target directory exists
if(!file_exists($toDir))
if(mkdir($toDir))
chmod($toDir, octdec($this->config->directory_mode));
else
return false;
while(false !== ($item = readdir($handle)))
if($item != '.' && $item != '..') {
$from = $fromDir.'/'.$item;
$to = $toDir.'/'.$item;
if(is_dir($from)) {
if($success &= mkdir($to))
chmod($to, octdec($this->config->directory_mode));
//recurse
$this->copyDir($from, $to);
} else {
if($success &= copy($from, $to))
chmod($to, octdec($this->config->file_mode));
}
}
closedir($handle);
return $success;
}
/**
* Creates a gallery.
*
* @return boolean true on success; false otherwise
*/
function addGallery()
{
$newGalleryId = $this->gallery->id."/".$_REQUEST["newgallery"];
$path = $this->config->base_path.$this->config->pathto_galleries.$newGalleryId;
//fail if directory already exists
if(file_exists($path))
return $this->pushError($this->translator->_g("Gallery already exists."));
//create directory or fail
if(!Singapore::mkdir($path))
return $this->pushError($this->translator->_g("Unable to create directory '%s'", $path));
//explicitly set permissions on gallery directory
@chmod($path, octdec($this->config->directory_mode));
$gal =& new sgGallery($newGalleryId, $this->gallery);
$gal->name = $_REQUEST["newgallery"];
//set object owner
if(!$this->user->isGuest())
$gal->owner = $this->user->username;
//save gallery metadata
if($this->io->putGallery($gal))
return true;
else
return $this->pushError($this->translator->_g("Unable to save metadata."));
}
function prepareText($text, $multiline = false)
{
if($multiline) {
$text = strip_tags($text, $this->config->allowed_tags);
$text = str_replace(array("\n","\r"), array("<br />",""), $text);
} else {
$text = htmlspecialchars($text);
}
return $text;
}
/**
* Saves gallery info to the database.
*
* @return boolean true on success; false otherwise
*/
function saveGallery()
{
$this->gallery->categories = $_REQUEST["sgCategories"];
$this->gallery->name = $this->prepareText($_REQUEST["sgGalleryName"]);
$this->gallery->artist = $this->prepareText($_REQUEST["sgArtistName"]);
$this->gallery->email = $this->prepareText($_REQUEST["sgArtistEmail"]);
$this->gallery->date = $this->prepareText($_REQUEST["sgDate"]);
$this->gallery->copyright = $this->prepareText($_REQUEST["sgCopyright"]);
$this->gallery->summary = $this->prepareText($_REQUEST["sgSummary"],true);
$this->gallery->desc = $this->prepareText($_REQUEST["sgGalleryDesc"],true);
if($this->config->enable_clickable_urls) {
//recognise URLs and htmlise them
$this->gallery->desc = preg_replace('{(?<!href="|href=)\b('.SG_REGEXP_PROTOCOLURL.')\b(?!</a>)}', '<a href="$1">$1</a>', $this->gallery->desc); //general protocol match
$this->gallery->desc = preg_replace('{(?<!://)\b('.SG_REGEXP_WWWURL.')\b(?!</a>)}', '<a href="http://$1">$1</a>', $this->gallery->desc); //web addresses starting www. without path info
$this->gallery->desc = preg_replace('{(?<!mailto:|\.)\b('.SG_REGEXP_EMAILURL.')\b(?!</a>)}', '<a href="mailto:$1">$1</a>', $this->gallery->desc); //email addresses *@*.*
}
if($this->io->putGallery($this->gallery))
return true;
else
return $this->pushError($this->translator->_g("Could not save gallery info"));
}
/**
* Deletes a gallery and everything contained within it.
*
* @return boolean true on success; false otherwise
*/
function deleteGallery($galleryId = null)
{
if($galleryId === null)
$galleryId = $_REQUEST['gallery'];
//calculate the path where the folder actually resides.
$path = $this->config->base_path.$this->config->pathto_galleries.$galleryId;
//security check: make sure requested file is in galleries directory
if(!$this->isSubPath($this->config->base_path.$this->config->pathto_galleries,$path))
return $this->pushError($this->translator->_g("Requested item '%s' appears to be outside the galleries directory", $galleryId));
//check that the gallery to delete is not the top level directory
if(realpath($path) == realpath($this->config->base_path.$this->config->pathto_galleries))
return $this->pushError($this->translator->_g("Cannot delete the root gallery."));
//attempt to remove the offending directory and all contained therein
if($this->rmdir_all($path))
return $this->pushMessage($this->translator->_g("Gallery '%s' deleted.", $galleryId));
else
return $this->pushError($this->translator->_g("Unable to delete gallery '%s'.", $galleryId));
}
/**
* Deletes several galleries from the current gallery.
*
* @return int number of galleries deleted
*/
function deleteMultipleGalleries() {
$totalGalleriesDeleted = 0;
foreach($_REQUEST["sgGalleries"] as $galleryId) {
$this->deleteGallery($galleryId);
$totalGalleriesDeleted++;
}
//reload gallery data if we deleted any
if($totalGalleriesDeleted)
$this->selectGallery();
return $totalGalleriesDeleted;
}
/**
* Saves changes to the gallery thumbnail to the database.
*
* @return boolean true on success; false otherwise
*/
function saveGalleryThumbnail()
{
$this->gallery->filename = $_REQUEST['sgThumbName'];
if($this->io->putGallery($this->gallery))
$this->pushMessage($this->translator->_g("Thumbnail changed."));
else
$this->pushError($this->translator->_g("Unable to save metadata."));
}
/**
* Adds an image to the database.
*
* @return boolean true on success; false otherwise
*/
function addImage()
{
if($_REQUEST["sgLocationChoice"] == "remote") {
$image = $_REQUEST["sgImageURL"];
$path = $image;
} elseif($_REQUEST["sgLocationChoice"] == "single") {
//set filename as requested and strip off any clandestine path info
if($_REQUEST["sgNameChoice"] == "same") $image = basename($_FILES["sgImageFile"]["name"]);
else $image = basename($_REQUEST["sgFileName"]);
//make sure image is valid
if(!preg_match("/\.(".$this->config->recognised_extensions.")$/i", $image)) {
$imgInfo = GetImageSize($_FILES["sgImageFile"]["tmp_name"]);
switch($imgInfo[2]) {
case 1 : $image .= '.gif'; break;
case 2 : $image .= '.jpg'; break;
case 3 : $image .= '.png'; break;
case 6 : $image .= '.bmp'; break;
case 7 :
case 8 : $image .= '.tif'; break;
default :
return $this->pushError($this->translator->_g("Uploaded image '%s' has unrecognised extension and image type could not be determined from file contents.", $image));
}
}
$path = $this->config->base_path.$this->config->pathto_galleries.$this->gallery->id."/".$image;
$srcImage = $image;
if(file_exists($path))
switch($this->config->upload_overwrite) {
case 1 : //overwrite
$this->deleteImage($image);
break;
case 2 : //generate unique
for($i=0;file_exists($path);$i++) {
$pivot = strrpos($srcImage,".");
$image = substr($srcImage, 0, $pivot).'-'.$i.substr($srcImage, $pivot,strlen($srcImage)-$pivot);
$path = $this->config->base_path.$this->config->pathto_galleries.$this->gallery->id."/".$image;
}
break;
case 0 : //raise error
default :
return $this->pushError($this->translator->_g("File already exists."));
}
if(!move_uploaded_file($_FILES["sgImageFile"]["tmp_name"],$path))
return $this->pushError($this->translator->_g("Could not upload file."));
// try to change file-permissions
@chmod($path, octdec($this->config->file_mode));
}
$img =& new sgImage($image, $this->gallery);
$img->name = strtr(substr($image, strrpos($image,"/"), strrpos($image,".")-strlen($image)), "_", " ");
list($img->width, $img->height, $img->type) = GetImageSize($path);
//leave owner of guest-uploaded files as default '__nobody__'
if(!$this->user->isGuest())
$img->owner = $this->user->username;
$this->gallery->images[] =& $img;
//set as gallery thumbnail?
if($this->gallery->imageCount()==1)
$this->gallery->filename = $img->id;
if($this->io->putGallery($this->gallery)) {
$this->selectImage($image);
return $this->pushMessage($this->translator->_g("Image added", $image));
} else {
@unlink($path);
return $this->pushError($this->translator->_g("Unable to save metadata."));
}
}
/**
* Adds the contents of an uploaded archive to the database.
*
* @return boolean true on success; false otherwise
*/
function addMultipleImages()
{
//find system temp directory
if(!($systmpdir = $this->findTempDirectory()))
return $this->pushError($this->translator->_g("Unable to find temporary storage space."));
//create new temp directory in system temp dir but stop after 100 attempts
while(!Singapore::mkdir($tmpdir = $systmpdir."/".uniqid("sg")) && $tries++<100);
$archive = $_FILES["sgArchiveFile"]["tmp_name"];
if(!is_uploaded_file($archive))
return $this->pushError($this->translator->_g("Could not upload file."));
//decompress archive to temp
$cmd = escapeshellcmd($this->config->pathto_unzip);
$cmd .= ' -d "'.escapeshellcmd(realpath($tmpdir));
$cmd .= '" "'.escapeshellcmd(realpath($archive)).'"';
if(!exec($cmd))
return $this->pushError($this->translator->_g("Could not decompress archive."));
//start processing archive contents
$wd = $tmpdir;
$contents = $this->getListing($wd,$this->config->recognised_extensions);
//cope with archives contained within a directory
if(empty($contents->files) && count($contents->dirs) == 1)
$contents = $this->getListing($wd .= '/'.$contents->dirs[0],$this->config->recognised_extensions);
$success = true;
 
//add any images to current gallery
foreach($contents->files as $image) {
//check image is valid and ignore it if it isn't
if(!preg_match("/\.(".$this->config->recognised_extensions.")$/i", $image)) {
$imgInfo = GetImageSize($wd.'/'.$image);
switch($imgInfo[2]) {
case 1 : $image .= '.gif'; break;
case 2 : $image .= '.jpg'; break;
case 3 : $image .= '.png'; break;
case 6 : $image .= '.bmp'; break;
case 7 :
case 8 : $image .= '.tif'; break;
default :
$this->pushMessage($this->translator->_g("Uploaded image '%s' has unrecognised extension and image type could not be determined from file contents.", $image));
continue;
}
}
$path = $this->config->pathto_galleries.$this->gallery->id."/".$image;
$srcImage = $image;
if(file_exists($path))
switch($this->config->upload_overwrite) {
case 1 : //overwrite
$this->deleteImage($image);
break;
case 2 : //generate unique
for($i=0;file_exists($path);$i++) {
$pivot = strrpos($srcImage,".");
$image = substr($srcImage, 0, $pivot).'-'.$i.substr($srcImage, $pivot,strlen($srcImage)-$pivot);
$path = $this->config->base_path.$this->config->pathto_galleries.$this->gallery->id."/".$image;
}
break;
case 0 : //raise error
default :
$this->pushError($this->translator->_g("File '%s' already exists."));
$success = false;
continue;
}
copy($wd.'/'.$srcImage,$path);
// try to change file-permissions
@chmod($path, octdec($this->config->file_mode));
$img =& new sgImage($image, $this->gallery);
$img->name = strtr(substr($image, strrpos($image,"/"), strrpos($image,".")-strlen($image)), "_", " ");
list($img->width, $img->height, $img->type) = GetImageSize($path);
 
//leave owner of guest-uploaded files as default '__nobody__'
if(!$this->user->isGuest())
$img->owner = $this->user->username;
$this->gallery->images[] = $img;
}
//add any directories as subgalleries, if allowed
if($this->config->allow_dir_upload == 1 && !$this->user->isGuest()
|| $this->config->allow_dir_upload == 2 && $this->user->isAdmin())
foreach($contents->dirs as $gallery) {
$path = $this->config->pathto_galleries.$this->gallery->id."/".$gallery;
if(file_exists($path))
switch($this->config->upload_overwrite) {
case 1 : //overwrite
$this->deleteGallery($this->gallery->id.'/'.$gallery);
break;
case 2 : //generate unique
for($i=0;file_exists($path);$i++)
$path = $this->config->pathto_galleries.$this->gallery->id."/".$gallery.'-'.$i;
break;
case 0 : //raise error
default :
$this->pushError($this->translator->_g("File '%s' already exists."));
$success = false;
continue;
}
//move from temp dir to gallery
rename($wd.'/'.$gallery, $path);
//change directory permissions (but not contents)
@chmod($path, octdec($this->config->directory_mode));
}
//if images were added save metadata
if(!empty($contents->files))
$this->io->putGallery($this->gallery)
or $this->pushError($this->translator->_g("Unable to save metadata."));
//if subgalleries were added reload gallery data
if(!empty($contents->dirs))
$this->selectGallery();
//remove temporary directory
$this->rmdir_all($tmpdir);
if($success)
return $this->pushMessage($this->translator->_g("Archive contents added."));
else
return $this->pushError($this->translator->_g("Some archive contents could not be added."));
}
/**
* Saves image info to the database.
*
* @return boolean true on success; false otherwise
*/
function saveImage()
{
$this->image->id = $this->prepareText($_REQUEST['image']);
$this->image->thumbnail = $this->prepareText($_REQUEST["sgThumbnail"]);
$this->image->categories = $this->prepareText($_REQUEST["sgCategories"]);
$this->image->name = $this->prepareText($_REQUEST["sgImageName"]);
$this->image->artist = $this->prepareText($_REQUEST["sgArtistName"]);
$this->image->email = $this->prepareText($_REQUEST["sgArtistEmail"]);
$this->image->location = $this->prepareText($_REQUEST["sgLocation"]);
$this->image->date = $this->prepareText($_REQUEST["sgDate"]);
$this->image->copyright = $this->prepareText($_REQUEST["sgCopyright"]);
$this->image->desc = $this->prepareText($_REQUEST["sgImageDesc"],true);
$this->image->camera = $this->prepareText($_REQUEST["sgField01"]);
$this->image->lens = $this->prepareText($_REQUEST["sgField02"]);
$this->image->film = $this->prepareText($_REQUEST["sgField03"]);
$this->image->darkroom = $this->prepareText($_REQUEST["sgField04"]);
$this->image->digital = $this->prepareText($_REQUEST["sgField05"]);
if($this->io->putGallery($this->gallery))
return true;
else
return $this->pushError($this->translator->_g("Unable to save metadata."));
}
/**
* Deletes an image from the current gallery.
*
* @param string the filename of the image to delete (optional)
* @return boolean true on success; false otherwise
*/
function deleteImage($image = null)
{
if($image === null)
$image = $this->image->id;
//if file is remote or doesn't exist then there's no point trying to delete it
if(!sgImage::isRemote($image) && file_exists($this->config->pathto_galleries.$this->gallery->id."/".$image))
//check that we're not being fooled into deleting something we shouldn't
if(!$this->isSubPath($this->config->pathto_galleries, $this->config->pathto_galleries.$this->gallery->id."/".$image))
return $this->pushError($this->translator->_g("Requested item '%s' appears to be outside the galleries directory.", htmlspecialchars($image)));
else
unlink($this->config->pathto_galleries.$this->gallery->id."/".$image);
//remove the image from the images array
foreach($this->gallery->images as $i => $img)
if($img->id == $image) {
array_splice($this->gallery->images,$i,1);
//image removed from array so save metadata
if($this->io->putGallery($this->gallery)) {
//nulling image reference will select parent gallery
$this->image = null;
return $this->pushMessage($this->translator->_g("Image '%s' deleted", htmlspecialchars($image)));
} else {
return $this->pushError($this->translator->_g("Unable to save metadata."));
}
}
//image not found in array
return $this->pushError($this->translator->_g("Image not found '%s'", htmlspecialchars($image)));
}
/**
* Deletes several images from the current gallery.
*
* @return int|false number of images deleted on success; false otherwise
*/
function deleteMultipleImages() {
$deleted = 0;
foreach($_REQUEST["sgImages"] as $image)
if($this->deleteImage($image))
$deleted++;
 
return $deleted;
}
/**
* Deletes the contents of the cache directory.
*
* @return boolean true on success; false otherwise
*/
function purgeCache()
{
$dir = $this->getListing($this->config->pathto_cache, $this->config->recognised_extensions);
$success = true;
for($i=0;$i<count($dir->files);$i++) {
$success &= unlink($dir->path.$dir->files[$i]);
}
return $success;
}
 
}
 
 
?>
/photogallery/includes/config.class.php
0,0 → 1,57
<?php
 
/**
* Config class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: config.class.php,v 1.8 2005/11/30 23:02:18 tamlyn Exp $
*/
 
/**
* Reads configuration data from data/singapore.ini and stores the values
* as properties of itself.
*
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
*/
class sgConfig
{
 
/**
* Implements the Singleton design pattern by always returning a reference
* to the same sgConfig object. Use instead of 'new'.
*/
function &getInstance()
{
static $instance;
if(!is_object($instance))
//note that the new config object is NOT assigned by reference as
//references are not stored in static variables (don't ask me...)
$instance = new sgConfig();
return $instance;
}
/**
* Parses an ini file for configuration directives and imports the values
* into the current object overwriting any previous values.
* @param string relative or absolute path to the ini file to load
* @return boolean true on success; false otherwise
*/
function loadConfig($configFilePath)
{
if(!file_exists($configFilePath)) return false;
//get values from ini file
$ini_values = parse_ini_file($configFilePath);
 
//import values into object scope
foreach($ini_values as $key => $value) $this->$key = $value;
return true;
}
}
 
?>
/photogallery/includes/gallery.class.php
0,0 → 1,320
<?php
 
/**
* Gallery class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: gallery.class.php,v 1.19 2006/09/12 11:53:18 thepavian Exp $
*/
 
//include the base class
require_once dirname(__FILE__)."/item.class.php";
/**
* Data-only class used to store gallery data.
*
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003-2005 Tamlyn Rhodes
*/
class sgGallery extends sgItem
{
/**
* Filename of the image used to represent this gallery.
* Special values:
* - __none__ no thumbnail is displayed
* - __random__ a random image is chosen every time
* @var string
*/
var $filename = "__none__";
/**
* Short multiline summary of gallery contents
* @var string
*/
var $summary = "";
/**
* Array of {@link sgImage} objects
* @var array
*/
var $images = array();
/**
* Array of {@link sgGallery} objects
* @var array
*/
var $galleries = array();
/**
* Constructor
* @param string gallery id
* @param sgGallery reference to the parent gallery
*/
function sgGallery($id, &$parent)
{
$this->id = $id;
$this->parent =& $parent;
$this->config =& sgConfig::getInstance();
$this->translator =& Translator::getInstance();
}
/** @return bool true if this is a non-album gallery; false otherwise */
function isGallery() { return $this->hasChildGalleries(); }
/** @return bool true if this is an album; false otherwise */
function isAlbum() { return !$this->isGallery(); }
/** @return bool true if this is the root gallery; false otherwise */
function isRoot() { return $this->id == "."; }
/** @return bool true if this gallery has child galleries; false otherwise */
function hasChildGalleries() { return $this->galleryCount() != 0; }
/** @return bool true if this gallery contains one or more images; false otherwise */
function hasImages() { return $this->imageCount() != 0; }
function imageCount() { return count($this->images); }
function galleryCount() { return count($this->galleries); }
function imageCountText() { return $this->translator->_ng("%s image", "%s images", $this->imageCount()); }
function galleryCountText() { return $this->translator->_ng("%s gallery", "%s galleries", $this->galleryCount()); }
/**
* Caches returned value for use with repeat requests
* @return string the rawurlencoded version of the gallery id
*/
function idEncoded()
{
return isset($this->idEncoded) ? $this->idEncoded : $this->idEncoded = $this->encodeId($this->id);
}
/**
* rawurlencode() supplied string but preserve / character for cosmetic reasons.
* @param string id to encode
* @return string encoded id
* @static
*/
function encodeId($id)
{
$in = explode("/",$id);
$out = array();
for($i=1;$i<count($in);$i++)
$out[$i-1] = rawurlencode($in[$i]);
return $out ? implode("/",$out) : ".";
}
function nameForce()
{
if($this->name)
return $this->name;
elseif($this->isRoot())
return $this->config->gallery_name;
else
return substr($this->id, strrpos($this->id,'/')+1);
}
/**
* If the gallery is an album then it returns the number of
* images contained otherwise the number of sub-galleries is returned
* @return string the contents of the specified gallery
*/
function itemCountText()
{
if($this->isAlbum())
return $this->imageCountText();
else
return $this->galleryCountText();
}
/**
* If the gallery is an album then it returns the number of
* images contained otherwise the number of sub-galleries is returned
* @return int the contents of the specified gallery
*/
function itemCount()
{
if($this->isAlbum())
return $this->imageCount();
else
return $this->galleryCount();
}
/**
* @return int number of galleries in current view
*/
function galleryCountSelected()
{
return min($this->galleryCount() - $this->startat, $this->config->thumb_number_gallery);
}
/**
* @return int number of image in current view
*/
function imageCountSelected()
{
return min($this->imageCount() - $this->startat, $this->config->thumb_number_album);
}
/**
* @return string the absolute, canonical system path to the image
*/
function realPath()
{
return realpath($this->config->base_path.$this->config->pathto_galleries.$this->id);
}
function thumbnailURL($type = "gallery")
{
$thumb = $this->thumbnail($type);
return $thumb->URL();
}
function thumbnailHTML($class = "sgThumbGallery", $type = "gallery")
{
$thumb = $this->thumbnail($type);
if($thumb == null) {
$ret = nl2br($this->translator->_g("No\nthumbnail"));
} else {
$ret = '<img src="'.$thumb->URL().'" ';
$ret .= 'class="'.$class.'" ';
$ret .= 'width="'.$thumb->width().'" height="'.$thumb->height().'" ';
$ret .= 'alt="'.$this->translator->_g("Sample image from gallery").'" />';
}
return $ret;
}
function thumbnailLink($class = "sgThumbGallery", $type = "gallery")
{
return '<a href="'.$this->URL().'">'.$this->thumbnailHTML($class, $type).'</a>';
}
/**
* Removes script-generated HTML (BRs and URLs) but leaves any other HTML
* @return string the summary of the gallery
*/
function summaryStripped()
{
return str_replace("<br />","\n",$this->summary());
}
function hasPrev()
{
return (bool) $this->index();
}
function hasNext()
{
$index = $this->index();
return $index !== false && $index < $this->parent->galleryCount()-1;
}
function &prevGallery()
{
$tmp =& new sgGallery($this->parent->id.'/'.$this->parent->galleries[$this->index()-1], $this->parent);
return $tmp;
}
function &nextGallery()
{
$tmp =& new sgGallery($this->parent->id.'/'.$this->parent->galleries[$this->index()+1], $this->parent);
return $tmp;
}
function prevURL($action = null)
{
$tmp =& $this->prevGallery();
return $tmp->URL(null, $action);
}
function nextURL($action = null)
{
$tmp =& $this->nextGallery();
return $tmp->URL(null, $action);
}
function prevLink($action = null)
{
return '<a href="'.$this->prevURL($action).'">'.$this->prevText().'</a>';
}
function nextLink($action = null)
{
return '<a href="'.$this->nextURL($action).'">'.$this->nextText().'</a>';
}
function prevText()
{
return $this->translator->_g("gallery|Previous");
}
function nextText()
{
return $this->translator->_g("gallery|Next");
}
/**
* finds position of current gallery in parent array
*/
function index()
{
if(!$this->isRoot())
foreach($this->parent->galleries as $key => $galleryId)
if(basename($this->id) == $galleryId)
return $key;
return false;
}
/** Accessor methods */
function summary() { return $this->summary; }
/** Private methods */
function thumbnail($type)
{
//only create thumbnail if it doesn't already exist
if(!isset($this->thumbnails[$type])) {
if($this->filename == "__none__" || $this->imageCount() == 0)
return;
elseif($this->filename == "__random__") {
srand(time()); //seed random number generator and select random image
$img =& $this->images[rand(0,count($this->images)-1)];
} else
$img =& $this->findImage($this->filename);
//create thumbnail
$this->thumbnails[$type] =& new sgThumbnail($img, $type);
}
return $this->thumbnails[$type];
}
/**
* Finds an image from the current gallery
* @param mixed either the filename of the image to select or the integer
* index of its position in the images array
* @return sgImage the image found
*/
function &findImage($image)
{
if(is_string($image))
foreach($this->images as $index => $img)
if($img->id == $image)
return $this->images[$index];
elseif(is_int($image) && $image >= 0 && $image < $this->imageCount())
return $this->images[$image];
return null;
}
}
 
 
?>
/photogallery/includes/image.class.php
0,0 → 1,339
<?php
 
/**
* Image class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: image.class.php,v 1.22 2006/08/06 13:50:20 thepavian Exp $
*/
 
//include the base class
require_once dirname(__FILE__)."/item.class.php";
/**
* Data-only class used to store image data.
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003-2005 Tamlyn Rhodes
*/
class sgImage extends sgItem
{
/**
* Width in pixels of the image
* @var int
*/
var $width = 0;
/**
* Height in pixels of the image
* @var int
*/
var $height = 0;
/**
* Image file format flag as returned by GetImageSize()
* @var int
*/
var $type;
/**
* Configurable field
*/
var $camera = "";
var $lens = "";
var $film = "";
var $darkroom = "";
var $digital = "";
/**
* Constructor
* @param string image id
* @param sgGallery reference to the parent gallery
*/
function sgImage($id, &$parent)
{
$this->id = $id;
$this->parent =& $parent;
$this->config =& sgConfig::getInstance();
$this->translator =& Translator::getInstance();
}
/**
* Over-rides the method in the item class
* @return true returns true
*/
function isImage() { return true; }
/**
* @return bool true if image height is greater than width
*/
function isPortrait()
{
return $this->width()/$this->height() > 1;
}
/**
* @return bool true if image height is greater than width
*/
function isLandscape()
{
return $this->width()/$this->height() < 1;
}
function hasPrev()
{
return (bool) $this->index();
}
function hasNext()
{
$index = $this->index();
return $index !== false && $index < $this->parent->imageCount()-1;
}
function &firstImage()
{
return $this->parent->images[0];
}
function &prevImage()
{
return $this->parent->images[$this->index()-1];
}
function &nextImage()
{
return $this->parent->images[$this->index()+1];
}
function &lastImage()
{
return $this->parent->images[count($this->parent->images)-1];
}
function firstLink($action = null)
{
if(!$this->hasPrev())
return "";
$tmp =& $this->firstImage();
return '<a href="'.$tmp->URL(null, $action).'">'.$this->firstText().'</a>';
}
function prevLink($action = null)
{
if(!$this->hasPrev())
return "";
return '<a href="'.$this->prevURL($action).'">'.$this->prevText().'</a>';
}
function nextLink($action = null)
{
if(!$this->hasNext())
return "";
return '<a href="'.$this->nextURL($action).'">'.$this->nextText().'</a>';
}
function lastLink($action = null)
{
if(!$this->hasNext())
return "";
$tmp =& $this->lastImage();
return '<a href="'.$tmp->URL(null, $action).'">'.$this->lastText().'</a>';
}
function prevURL($action = null)
{
$tmp =& $this->prevImage();
return $tmp->URL(null, $action);
}
function nextURL($action = null)
{
$tmp =& $this->nextImage();
return $tmp->URL(null, $action);
}
function firstText() { return $this->translator->_g("image|First"); }
function prevText() { return $this->translator->_g("image|Previous"); }
function nextText() { return $this->translator->_g("image|Next"); }
function lastText() { return $this->translator->_g("image|Last"); }
function parentText() { return $this->translator->_g("image|Thumbnails"); }
function imageURL()
{
if($this->config->full_image_resize) {
$img = $this->thumbnail("image");
return $img->URL();
} else
return $this->realURL();
}
function realURL()
{
if($this->isRemote())
return $this->id;
else
return $this->config->base_url.$this->config->pathto_galleries.$this->parent->idEncoded()."/".$this->idEncoded();
}
function imageHTML($class = "sgImage")
{
$ret = "<img src=\"".$this->imageURL().'" ';
$ret .= 'class="'.$class.'" ';
$ret .= 'width="'.$this->width().'" height="'.$this->height().'" ';
if($this->config->imagemap_navigation) $ret .= 'usemap="#sgNavMap" border="0" ';
$ret .= 'alt="'.$this->name().$this->byArtistText().'" />';
return $ret;
}
function thumbnailURL($type = "album")
{
$thumb = $this->thumbnail($type);
return $thumb->URL();
}
function thumbnailHTML($class = "sgThumbnailAlbum", $type = "album")
{
$thumb = $this->thumbnail($type);
$ret = "<img src=\"".$thumb->URL().'" ';
$ret .= 'class="'.$class.'" ';
$ret .= 'width="'.$thumb->width().'" height="'.$thumb->height().'" ';
$ret .= 'alt="'.$this->name().$this->byArtistText().'" />';
return $ret;
}
function thumbnailLink($class = "sgThumbnailAlbum", $type = "album")
{
return '<a href="'.$this->URL().'">'.$this->thumbnailHTML($class, $type).'</a>';
}
function thumbnailPopupLink($class = "sgThumbnailAlbum", $type = "album")
{
$ret = '<a href="'.$this->URL().'" onclick="';
$ret .= "window.open('".$this->imageURL()."','','toolbar=0,resizable=1,";
$ret .= "width=".($this->width()+20).",";
$ret .= "height=".($this->height()+20)."');";
$ret .= "return false;\">".$this->thumbnailHTML($class, $type)."</a>";
return $ret;
}
function nameForce()
{
if($this->name)
return $this->name;
elseif($this->isRemote())
return substr($this->id, strrpos($this->id,'/') + 1, strrpos($this->id,'.') - strrpos($this->id,'/') - 1);
else
return substr($this->id, 0, strrpos($this->id,'.'));
}
/**
* checks if image is remote (filename starts with 'http://')
*/
function isRemote($image = null)
{
if($image == null) $image = $this->id;
return substr($image, 0, 7) == "http://";
}
/**
* @return string the absolute, canonical system path to the image
*/
function realPath()
{
if($this->isRemote())
return $this->id;
else
return realpath($this->config->base_path.$this->config->pathto_galleries.$this->parent->id."/".$this->id);
}
/**
* @return string the rawurlencoded version of the image id
*/
function idEncoded()
{
return rawurlencode($this->id);
}
function width()
{
if($this->config->full_image_resize) {
$img = $this->thumbnail("image");
return $img->width();
} else
return $this->realWidth();
}
function height()
{
if($this->config->full_image_resize) {
$img = $this->thumbnail("image");
return $img->height();
} else
return $this->realHeight();
}
/**
* finds position of current image in parent array
*/
function index()
{
foreach($this->parent->images as $key => $img)
if($this->id == $img->id)
return $key;
return false;
}
function realWidth()
{
//try to load image dimensions if not already loaded
if($this->width == 0) {
$size = @GetImageSize($this->realPath());
if($size)
list($this->width, $this->height, $this->type) = $size;
else
return $this->config->thumb_width_image;
}
return $this->width;
}
function realHeight()
{
//try to load image dimensions if not already loaded
if($this->height == 0) {
$size = @GetImageSize($this->realPath());
if($size)
list($this->width, $this->height, $this->type) = $size;
else
return $this->config->thumb_height_image;
}
return $this->height;
}
/** Accessor methods */
function type() { return $this->type; }
/* Private methods */
function &thumbnail($type)
{
//only create thumbnail if it doesn't already exist
if(!isset($this->thumbnails[$type]))
$this->thumbnails[$type] =& new sgThumbnail($this, $type);
return $this->thumbnails[$type];
}
}
 
?>
/photogallery/includes/index.php
0,0 → 1,0
<?php header("Location: ../") ?>
/photogallery/includes/io.class.php
0,0 → 1,174
<?php
 
/**
* IO class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: io.class.php,v 1.11 2005/12/04 04:39:46 tamlyn Exp $
*/
 
/**
* Abstract superclass of all IO classes. Also implements iifn code.
* @package singapore
* @abstract
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
*/
class sgIO
{
/**
* Reference to a {@link sgConfig} object representing the current
* script configuration
* @var sgConfig
*/
var $config;
/**
* Constructor. Can be over-ridden by subclass but does not need to be.
* @param sgConfig pointer to current script configuration object
*/
function sgIO()
{
$this->config =& sgConfig::getInstance();
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getName()
{
return "undefined";
}
 
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getVersion()
{
return "undefined";
}
 
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getAuthor()
{
return "undefined";
}
 
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getDescription()
{
return "undefined";
}
 
/**
* Fetches gallery info for the specified gallery (and immediate children).
* @param string gallery id
* @param sgItem reference to parent gallery
* @param int number of levels of child galleries to fetch (optional)
* @param string language code spec for this request (optional, ignored)
*/
function &getGallery($galleryId, &$parent, $getChildGalleries = 1, $language = null)
{
$gal =& new sgGallery($galleryId, $parent);
if(file_exists($this->config->base_path.$this->config->pathto_galleries.$galleryId)) {
$bits = explode("/",$gal->id);
$temp = strtr($bits[count($bits)-1], "_", " ");
if($temp == ".")
$gal->name = $this->config->gallery_name;
elseif($this->config->enable_iifn && strpos($temp, " - "))
list($gal->artist,$gal->name) = explode(" - ", $temp);
else
$gal->name = $temp;
$dir = Singapore::getListing($this->config->base_path.$this->config->pathto_galleries.$gal->id."/", $this->config->recognised_extensions);
//set gallery thumbnail to first image in gallery (if any)
if(isset($dir->files[0])) $gal->filename = $dir->files[0];
for($i=0; $i<count($dir->files); $i++)
//always get the first image for the gallery thumbnail
//but only get the rest if child galleries are requested
if($getChildGalleries || $i==0) {
$gal->images[$i] =& new sgImage($dir->files[$i], $gal);
//trim off file extension and replace underscores with spaces
$temp = strtr(substr($gal->images[$i]->id, 0, strrpos($gal->images[$i]->id,".")-strlen($gal->images[$i]->id)), "_", " ");
//split string in two on " - " delimiter
if($this->config->enable_iifn && strpos($temp, " - "))
list($gal->images[$i]->artist,$gal->images[$i]->name) = explode(" - ", $temp);
else
$gal->images[$i]->name = $temp;
//get image size and type
list(
$gal->images[$i]->width,
$gal->images[$i]->height,
$gal->images[$i]->type
) = @GetImageSize($this->config->base_path.$this->config->pathto_galleries.$gal->id."/".$gal->images[$i]->id);
//set parent link
$gal->images[$i]->parent =& $gal;
} else
//otherwise just create an empty array of the appropriate length
$gal->images[$i] = $dir->files[$i];
} else {
//selected gallery does not exist
return null;
}
//discover child galleries
if($getChildGalleries)
//but only fetch their info if required too
foreach($dir->dirs as $gallery)
$gal->galleries[] =& $this->getGallery($galleryId."/".$gallery, $gal, $getChildGalleries-1, $language);
else
//otherwise just copy their names in so they can be counted
$gal->galleries = $dir->dirs;
return $gal;
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function putGallery($gal) {
return false;
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getHits($gal) {
return false;
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function putHits($gal) {
return false;
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function getUsers() {
return array();
}
/**
* Pseudo-abstract method to be over-ridden in subclasses.
*/
function putUsers($users) {
return false;
}
}
 
?>
/photogallery/includes/io_csv.class.php
0,0 → 1,325
<?php
 
/**
* IO class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: io_csv.class.php,v 1.34 2006/06/25 00:13:56 tamlyn Exp $
*/
 
//include the base IO class
require_once dirname(__FILE__)."/io.class.php";
/**
* Class used to read and write data to and from CSV files.
* @see sgIO_iifn
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
*/
class sgIO_csv extends sgIO
{
//constructor provided by parent class
/**
* Name of IO backend.
*/
function getName()
{
return "CSV";
}
 
/**
* Version of IO backend.
*/
function getVersion()
{
return "$Revision: 1.34 $";
}
 
/**
* Author of IO backend.
*/
function getAuthor()
{
return "Tamlyn Rhodes";
}
 
/**
* Brief description of IO backend and it's requirements.
*/
function getDescription()
{
return "Uses comma separated value files. Does not require a database.";
}
 
/**
* Fetches gallery info for the specified gallery and immediate children.
* @param string gallery id
* @param string language code spec for this request (optional)
* @param int number of levels of child galleries to fetch (optional)
* @return sgGallery the gallery object created
*/
function &getGallery($galleryId, &$parent, $getChildGalleries = 1, $language = null)
{
$gal =& new sgGallery($galleryId, $parent);
 
if($language == null) {
$translator =& Translator::getInstance();
$language = $translator->language;
}
//try to open language specific metadata
$fp = @fopen($this->config->base_path.$this->config->pathto_galleries.$galleryId."/metadata.$language.csv","r");
//if fail then try to open generic metadata
if(!$fp)
$fp = @fopen($this->config->base_path.$this->config->pathto_galleries.$galleryId."/metadata.csv","r");
if($fp) {
 
while($temp[] = fgetcsv($fp,2048));
fclose($fp);
list(
$gal->filename,
$gal->thumbnail,
$gal->owner,
$gal->groups,
$gal->permissions,
$gal->categories,
$gal->name,
$gal->artist,
$gal->email,
$gal->copyright,
$gal->desc,
$gal->summary,
$gal->date
) = $temp[1];
//only fetch individual images if child galleries are required
if($getChildGalleries) {
for($i=0;$i<count($temp)-3;$i++) {
$gal->images[$i] =& new sgImage($temp[$i+2][0], $gal, $this->config);
list(,
$gal->images[$i]->thumbnail,
$gal->images[$i]->owner,
$gal->images[$i]->groups,
$gal->images[$i]->permissions,
$gal->images[$i]->categories,
$gal->images[$i]->name,
$gal->images[$i]->artist,
$gal->images[$i]->email,
$gal->images[$i]->copyright,
$gal->images[$i]->desc,
$gal->images[$i]->location,
$gal->images[$i]->date,
$gal->images[$i]->camera,
$gal->images[$i]->lens,
$gal->images[$i]->film,
$gal->images[$i]->darkroom,
$gal->images[$i]->digital
) = $temp[$i+2];
//get image size and type
list(
$gal->images[$i]->width,
$gal->images[$i]->height,
$gal->images[$i]->type
) = @GetImageSize($gal->images[$i]->realPath());
}
//otherwise just fill in empty images
} else if(count($temp) > 3) {
for($i=0;$i<count($temp)-3;$i++)
$gal->images[$i] =& new sgImage($temp[$i+2][0], $gal);
}
} else
//no metadata found so use iifn method implemented in superclass
return parent::getGallery($galleryId, $parent, $getChildGalleries, $language);
//discover child galleries
$dir = Singapore::getListing($this->config->base_path.$this->config->pathto_galleries.$galleryId."/");
if($getChildGalleries)
//but only fetch their info if required too
foreach($dir->dirs as $gallery)
$gal->galleries[] = $this->getGallery($galleryId."/".$gallery, $gal, $getChildGalleries-1, $language);
else
//otherwise just copy their names in so they can be counted
$gal->galleries = $dir->dirs;
return $gal;
}
/**
* Stores gallery information.
* @param sgGallery instance of gallery object to be stored
*/
function putGallery($gal) {
$dataFile = $this->config->base_path.$this->config->pathto_galleries.$gal->id."/metadata.csv";
@chmod($dataFile, octdec($this->config->file_mode));
$fp = @fopen($dataFile,"w");
if(!$fp)
return false;
$success = (bool) fwrite($fp,"filename,thumbnail,owner,group(s),permissions,catergories,image name,artist name,artist email,copyright,image description,image location,date taken,camera info,lens info,film info,darkroom manipulation,digital manipulation");
$success &= (bool) fwrite($fp,"\n\"".
$gal->filename.'",,'.
$gal->owner.','.
$gal->groups.','.
$gal->permissions.','.
$gal->categories.',"'.
str_replace('"','""',$gal->name).'","'.
str_replace('"','""',$gal->artist).'","'.
str_replace('"','""',$gal->email).'","'.
str_replace('"','""',$gal->copyright).'","'.
str_replace('"','""',$gal->desc).'","'.
str_replace('"','""',$gal->summary).'","'.
str_replace('"','""',$gal->date).'"'
);
for($i=0;$i<count($gal->images);$i++)
$success &= (bool) fwrite($fp,"\n\"".
$gal->images[$i]->id.'",,'.
//$gal->images[$i]->thumbnail.','.
$gal->images[$i]->owner.','.
$gal->images[$i]->groups.','.
$gal->images[$i]->permissions.','.
$gal->images[$i]->categories.',"'.
str_replace('"','""',$gal->images[$i]->name).'","'.
str_replace('"','""',$gal->images[$i]->artist).'","'.
str_replace('"','""',$gal->images[$i]->email).'","'.
str_replace('"','""',$gal->images[$i]->copyright).'","'.
str_replace('"','""',$gal->images[$i]->desc).'","'.
str_replace('"','""',$gal->images[$i]->location).'","'.
str_replace('"','""',$gal->images[$i]->date).'","'.
str_replace('"','""',$gal->images[$i]->camera).'","'.
str_replace('"','""',$gal->images[$i]->lens).'","'.
str_replace('"','""',$gal->images[$i]->film).'","'.
str_replace('"','""',$gal->images[$i]->darkroom).'","'.
str_replace('"','""',$gal->images[$i]->digital).'"'
);
$success &= (bool) fclose($fp);
return $success;
}
/**
* Fetches hit data from file.
* @param sgGallery gallery object to load hits into
*/
function getHits(&$gal) {
$fp = @fopen($this->config->base_path.$this->config->pathto_galleries.$gal->id."/hits.csv","r");
if($fp) {
flock($fp, LOCK_SH);
while($temp[] = fgetcsv($fp,255));
flock($fp, LOCK_UN);
fclose($fp);
} else $temp = array();
if(isset($temp[0]))
list(
,
$gal->hits,
$gal->lasthit
) = $temp[0];
for($i=0;$i<count($temp)-2;$i++) {
if(isset($gal->images[$i]) && $temp[$i+1][0] == $gal->images[$i]->id)
list(
,
$gal->images[$i]->hits,
$gal->images[$i]->lasthit
) = $temp[$i+1];
else
foreach($gal->images as $key => $img)
if($temp[$i+1][0] == $img->id)
list(
,
$gal->images[$key]->hits,
$gal->images[$key]->lasthit
) = $temp[$i+1];
}
return true;
}
/**
* Stores gallery hits.
* @param sgGallery gallery object to store
*/
function putHits($gal) {
$logfile = $this->config->base_path.$this->config->pathto_galleries.$gal->id."/hits.csv";
if(!file_exists($logfile) && !@touch($logfile)) return false;
@chmod($logfile, octdec($this->config->file_mode));
$fp = @fopen($logfile,"r+");
if(!$fp) return false;
flock($fp, LOCK_EX);
ftruncate($fp, 0);
fwrite($fp, '"'.
$gal->id.'",'.
$gal->hits.','.
$gal->lasthit
);
foreach($gal->images as $img)
fwrite($fp, "\n\"".
$img->id.'",'.
$img->hits.','.
$img->lasthit
);
flock($fp, LOCK_UN);
fclose($fp);
return true;
}
/**
* Fetches all registered users.
*/
function getUsers() {
$fp = fopen($this->config->base_path.$this->config->pathto_data_dir."users.csv.php","r");
//strip off description line
fgetcsv($fp,1024);
for($i=0;$entry = fgetcsv($fp,1000,",");$i++) {
$users[$i] = new sgUser(null,null);
list(
$users[$i]->username,
$users[$i]->userpass,
$users[$i]->permissions,
$users[$i]->groups,
$users[$i]->email,
$users[$i]->fullname,
$users[$i]->description,
$users[$i]->stats
) = $entry;
}
fclose($fp);
return $users;
}
/**
* Stores all registered users.
* @param array an array of sgUser objects representing the users to store
*/
function putUsers($users) {
$fp = fopen($this->config->base_path.$this->config->pathto_data_dir."users.csv.php","w");
if(!$fp) return false;
$success = (bool) fwrite($fp,"<?php die(\"The contents of this file are hidden\"); ?>username,md5(pass),permissions,group(s),email,name,description,stats\n");
for($i=0;$i<count($users);$i++)
$success &= (bool) fwrite($fp,$users[$i]->username.",".$users[$i]->userpass.",".$users[$i]->permissions.",\"".$users[$i]->groups."\",\"".$users[$i]->email."\",\"".$users[$i]->fullname."\",\"".$users[$i]->description."\",\"".$users[$i]->stats."\"\n");
fclose($fp);
return $success;
}
}
 
?>
/photogallery/includes/io_mysql.class.php
0,0 → 1,91
<?php
 
/**
* IO class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: io_mysql.class.php,v 1.7 2005/11/30 23:02:18 tamlyn Exp $
*/
 
//include the base IO class and generic SQL class
require_once dirname(__FILE__)."/iosql.class.php";
/**
* Class used to read and write data to and from a MySQL database.
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2004 Tamlyn Rhodes
*/
class sgIO_mysql extends sgIOsql
{
/**
* @param sgConfig pointer to a {@link sgConfig} object representing
* the current script configuration
*/
function sgIO_mysql()
{
$this->config =& sgConfig::getInstance();
mysql_connect($this->config->sql_host, $this->config->sql_user, $this->config->sql_pass);
mysql_select_db($this->config->sql_database);
}
 
/**
* Name of IO backend.
*/
function getName()
{
return "MySQL";
}
 
/**
* Version of IO backend.
*/
function getVersion()
{
return "$Revision: 1.7 $";
}
 
/**
* Author of IO backend.
*/
function getAuthor()
{
return "Tamlyn Rhodes";
}
 
/**
* Brief description of IO backend and it's requirements.
*/
function getDescription()
{
return "Uses a MySQL database. Requires a MySQL database server and the MySQL PHP extension.";
}
 
function query($query)
{
return mysql_query($query);
}
function escape_string($query)
{
return mysql_escape_string($query);
}
function fetch_array($res)
{
return mysql_fetch_array($res);
}
function num_rows($res)
{
return mysql_num_rows($res);
}
 
function error()
{
return mysql_error();
}
 
}
 
?>
/photogallery/includes/io_sqlite.class.php
0,0 → 1,95
<?php
 
/**
* IO class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: io_sqlite.class.php,v 1.4 2005/11/30 23:02:18 tamlyn Exp $
*/
 
//include the generic SQL class
require_once dirname(__FILE__)."/iosql.class.php";
/**
* Class used to read and write data to and from a SQLite database.
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2004 Tamlyn Rhodes
*/
class sgIO_sqlite extends sgIOsql
{
/**
* Database resource pointer
*/
var $db;
/**
* @param sgConfig pointer to a {@link sgConfig} object representing
* the current script configuration
*/
function sgIO_sqlite()
{
$this->config =& sgConfig::getInstance();
$this->db = sqlite_open($this->config->base_path.$this->config->pathto_data_dir."sqlite.dat");
}
 
/**
* Name of IO backend.
*/
function getName()
{
return "SQLite";
}
 
/**
* Version of IO backend.
*/
function getVersion()
{
return "$Revision: 1.4 $";
}
 
/**
* Author of IO backend.
*/
function getAuthor()
{
return "Tamlyn Rhodes";
}
 
/**
* Brief description of IO backend and it's requirements.
*/
function getDescription()
{
return "Uses a SQLite database. Requires only the SQLite PHP extension which incorporates the database server.";
}
 
function query($query)
{
return sqlite_query($this->db, $query);
}
function escape_string($query)
{
return sqlite_escape_string($query);
}
function fetch_array($res)
{
return sqlite_fetch_array($res);
}
function num_rows($res)
{
return sqlite_num_rows($res);
}
 
function error()
{
return sqlite_error_string(sqlite_last_error($this->db));
}
 
}
 
?>
/photogallery/includes/iosql.class.php
0,0 → 1,252
<?php
 
/**
* IO class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: iosql.class.php,v 1.5 2006/01/22 03:25:36 tamlyn Exp $
*/
 
//include the base IO class
require_once dirname(__FILE__)."/io.class.php";
/**
* Class used to read and write data to and from a MySQL database.
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2004 Tamlyn Rhodes
*/
class sgIOsql extends sgIO
{
/**
* Overridden in subclasses
*/
function query($query) { }
function escape_string($query) { }
function fetch_array($res) { }
function num_rows($res) { }
function error()
{
return "unknown error";
}
/**
* Fetches gallery info for the specified gallery and immediate children.
* @param string gallery id
* @param string language code spec for this request (optional)
* @param int number of levels of child galleries to fetch (optional)
*/
function &getGallery($galleryId, &$parent, $getChildGalleries = 1, $language = null)
{
$gal =& new sgGallery($galleryId, $parent);
if($language == null) $language = $this->config->default_language;
//try to open language specific gallery info
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."galleries ".
"WHERE id='".$this->escape_string($galleryId)."' ".
"AND lang='".$this->escape_string($language)."'");
//if fail then try to open generic gallery info
if(!$res || !$this->num_rows($res))
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."galleries ".
"WHERE id='".$this->escape_string($galleryId)."' and lang=''");
//if that succeeds then get galleries from db
if($res && $this->num_rows($res)) {
$galinfo = $this->fetch_array($res);
$gal->filename = $galinfo['filename'];
$gal->owner = $galinfo['owner'];
$gal->groups = $galinfo['groups'];
$gal->permissions = $galinfo['permissions'];
$gal->categories = $galinfo['categories'];
$gal->name = $galinfo['name'];
$gal->artist = $galinfo['artist'];
$gal->email = $galinfo['email'];
$gal->copyright = $galinfo['copyright'];
$gal->desc = $galinfo['description'];
$gal->summary = $galinfo['summary'];
$gal->date = $galinfo['date'];
$gal->hits = $galinfo['hits'];
$gal->lasthit = $galinfo['lasthit'];
//try to open language specific image info
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."images ".
"WHERE galleryid='".$this->escape_string($galleryId)."' ".
"AND lang='".$this->escape_string($language)."'");
//if fail then try to open generic image info
if(!$res || !$this->num_rows($res))
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."images ".
"WHERE galleryid='".$this->escape_string($galleryId)."' and lang=''");
for($i=0;$i<$this->num_rows($res);$i++) {
$imginfo = $this->fetch_array($res);
$gal->images[$i] =& new sgImage($imginfo['filename'], $gal);
$gal->images[$i]->thumbnail = $imginfo['thumbnail'];
$gal->images[$i]->owner = $imginfo['owner'];
$gal->images[$i]->groups = $imginfo['groups'];
$gal->images[$i]->permissions = $imginfo['permissions'];
$gal->images[$i]->categories = $imginfo['categories'];
$gal->images[$i]->name = $imginfo['name'];
$gal->images[$i]->artist = $imginfo['artist'];
$gal->images[$i]->email = $imginfo['email'];
$gal->images[$i]->copyright = $imginfo['copyright'];
$gal->images[$i]->desc = $imginfo['description'];
$gal->images[$i]->location = $imginfo['location'];
$gal->images[$i]->date = $imginfo['date'];
$gal->images[$i]->camera = $imginfo['camera'];
$gal->images[$i]->lens = $imginfo['lens'];
$gal->images[$i]->film = $imginfo['film'];
$gal->images[$i]->darkroom = $imginfo['darkroom'];
$gal->images[$i]->digital = $imginfo['digital'];
$gal->images[$i]->width = $imginfo['width'];
$gal->images[$i]->height = $imginfo['height'];
$gal->images[$i]->type = $imginfo['type'];
$gal->images[$i]->hits = $imginfo['hits'];
$gal->images[$i]->lasthit = $imginfo['lasthit'];
}
} else
//no record found so use iifn method implemented in parent class
return parent::getGallery($galleryId, $parent, $getChildGalleries, $language);
//discover child galleries
$dir = Singapore::getListing($this->config->base_path.$this->config->pathto_galleries.$galleryId."/");
if($getChildGalleries)
//but only fetch their info if required too
foreach($dir->dirs as $gallery)
$gal->galleries[] =& $this->getGallery($galleryId."/".$gallery, $gal, $getChildGalleries-1, $language);
else
//otherwise just copy their names in so they can be counted
$gal->galleries = $dir->dirs;
return $gal;
}
/**
* Stores gallery information.
* @param sgGallery instance of gallery object to be stored
*/
function putGallery($gal, $language = "") {
//insert gallery info
$success = (bool) $this->query("REPLACE INTO ".$this->config->sql_prefix."galleries ".
"(id,lang,filename,owner,groups,permissions,categories,name,artist,".
"email,copyright,description,summary,date,hits,lasthit) VALUES ('".
$this->escape_string($gal->id)."','".$language."','".
$this->escape_string($gal->filename)."','".
$gal->owner."','".$gal->groups."',".$gal->permissions.",'".
$this->escape_string($gal->categories)."','".
$this->escape_string($gal->name)."','".
$this->escape_string($gal->artist)."','".
$this->escape_string($gal->email)."','".
$this->escape_string($gal->copyright)."','".
$this->escape_string($gal->desc)."','".
$this->escape_string($gal->summary)."','".
$this->escape_string($gal->date)."',".
$gal->hits.",".$gal->lasthit.")");
//delete all image info
$success &= (bool) $this->query("DELETE FROM ".$this->config->sql_prefix."images ".
"WHERE galleryid='".$this->escape_string($gal->id)."' AND lang='".$language."'");
for($i=0;$i<count($gal->images);$i++) {
$success &= (bool) $this->query("INSERT INTO ".$this->config->sql_prefix."images ".
"(galleryid,lang,filename,owner,groups,permissions,categories,name,artist,".
"email,copyright,description,location,date,camera,lens,film,darkroom,digital,".
"width,height,type,hits,lasthit) VALUES ('".
$this->escape_string($gal->id)."','".$language."','".
$this->escape_string($gal->images[$i]->id)."','".
$gal->images[$i]->owner."','".$gal->images[$i]->groups."',".
$gal->images[$i]->permissions.",'".
$this->escape_string($gal->images[$i]->categories)."','".
$this->escape_string($gal->images[$i]->name)."','".
$this->escape_string($gal->images[$i]->artist)."','".
$this->escape_string($gal->images[$i]->email)."','".
$this->escape_string($gal->images[$i]->copyright)."','".
$this->escape_string($gal->images[$i]->desc)."','".
$this->escape_string($gal->images[$i]->location)."','".
$this->escape_string($gal->images[$i]->date)."','".
$this->escape_string($gal->images[$i]->camera)."','".
$this->escape_string($gal->images[$i]->lens)."','".
$this->escape_string($gal->images[$i]->film)."','".
$this->escape_string($gal->images[$i]->darkroom)."','".
$this->escape_string($gal->images[$i]->digital)."',".
$gal->images[$i]->width.",".$gal->images[$i]->height.",".
$gal->images[$i]->type.",".$gal->images[$i]->hits.",".
$gal->images[$i]->lasthit.")");
}
return $success;
}
/**
* Hits are loaded by getGallery so this method does nothing
* @param sgGallery gallery object to load hits into
*/
function getHits(&$gal) {
return true;
}
/**
* Stores gallery hits.
* @param sgGallery gallery object to store
*/
function putHits($gal) {
//if gallery data doesn't exist in database, add it
$res = $this->query("SELECT id FROM ".$this->config->sql_prefix."galleries ".
"WHERE id='".$this->escape_string($gal->id)."'");
if(!$res || !$this->num_rows($res))
$this->putGallery($gal);
$success = (bool) $this->query("UPDATE ".$this->config->sql_prefix."galleries ".
"SET hits=".$gal->hits.", lasthit=".$gal->lasthit." ".
"WHERE id='".$this->escape_string($gal->id)."'");
foreach($gal->images as $img)
$success &= (bool) $this->query("UPDATE ".$this->config->sql_prefix."images ".
"SET hits=".$img->hits.", lasthit=".$img->lasthit." ".
"WHERE galleryid='".$this->escape_string($gal->id)."' ".
"AND filename='".$this->escape_string($img->id)."'");
return $success;
}
/**
* Fetches all registered users.
*/
function getUsers() {
$res = $this->query("SELECT * FROM ".$this->config->sql_prefix."users");
for($i=0;$i<$this->num_rows($res);$i++) {
$usrinfo = $this->fetch_array($res);
$users[$i] = new sgUser($usrinfo['username'],$usrinfo['userpass']);
$users[$i]->permissions = $usrinfo['permissions'];
$users[$i]->groups = $usrinfo['groups'];
$users[$i]->email = $usrinfo['email'];
$users[$i]->fullname = $usrinfo['fullname'];
$users[$i]->description = $usrinfo['description'];
$users[$i]->stats = $usrinfo['stats'];
}
return $users;
}
/**
* Stores all registered users.
* @param array an array of sgUser objects representing the users to store
*/
function putUsers($users) {
//empty table
$success = (bool) $this->query("DELETE FROM ".$this->config->sql_prefix."users");
for($i=0;$i<count($users);$i++)
$success &= (bool) $this->query("INSERT INTO ".$this->config->sql_prefix."users ".
"(username,userpass,permissions,groups,email,fullname,description,stats) VALUES ('".
$this->escape_string($users[$i]->username)."','".
$users[$i]->userpass."',".$users[$i]->permissions.",'".
$this->escape_string($users[$i]->groups)."','".
$this->escape_string($users[$i]->email)."','".
$this->escape_string($users[$i]->fullname)."','".
$this->escape_string($users[$i]->description)."','".
$this->escape_string($users[$i]->stats)."')");
return $success;
}
}
 
?>
/photogallery/includes/item.class.php
0,0 → 1,297
<?php
 
/**
* Singapore gallery item class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2005-6 Tamlyn Rhodes
* @version $Id: item.class.php,v 1.10 2006/09/08 15:29:22 tamlyn Exp $
*/
 
//permissions bit flags
define("SG_GRP_READ", 1);
define("SG_GRP_EDIT", 2);
define("SG_GRP_ADD", 4);
define("SG_GRP_DELETE", 8);
define("SG_WLD_READ", 16);
define("SG_WLD_EDIT", 32);
define("SG_WLD_ADD", 64);
define("SG_WLD_DELETE", 128);
define("SG_IHR_READ", 17);
define("SG_IHR_EDIT", 34);
define("SG_IHR_ADD", 68);
define("SG_IHR_DELETE", 136);
 
/**
* Abstract class from which sgImage and sgGallery are derived.
*
* @abstract
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2005-6 Tamlyn Rhodes
*/
class sgItem
{
/**
* The id of the item. In the case of galleries this is the path to the
* gallery from root and must be unique. For images it is the image file
* name (or URL for remote images).
* @var string
*/
var $id;
/**
* Username of the user to which the item belongs
* @var string
*/
var $owner = "__nobody__";
/**
* Space-separated list of groups to which the item belongs
* @var string
*/
var $groups = "";
/**
* Bit-field of permissions
* Default is to inherit everything.
* @var int
*/
var $permissions = 255;
/**
* Space-separated list of categories to which the item belongs (not used)
* @var string
*/
var $categories = "";
/**
* The name or title of the item
* @var string
*/
var $name = "";
/**
* The name of the original item creator (or anyone else)
* @var string
*/
var $artist = "";
/**
* Email of the original item creator (or anyone else)
* @var string
*/
var $email = "";
/**
* Optional copyright information
* @var string
*/
var $copyright = "";
/**
* Multiline description of the item
* @var string
*/
var $desc = "";
/**
* Date associated with item
* @var string
*/
var $date = "";
var $location = "";
/**
* Number of times item has been viewed
* @var int
*/
var $hits = 0;
/**
* Unix timestamp of last time item was viewed
* @var int
*/
var $lasthit = 0;
/**
* Pointer to the parent sgItem
* @var sgItem
*/
var $parent;
/**
* Reference to the current config object
* @var sgConfig
*/
var $config;
/**
* Reference to the current translator object
* @var Translator
*/
var $translator;
/**
* Array in which the various sized thumbnails representing this item are stored
* @var array
*/
var $thumbnails = array();
/** Accessor methods */
function name() { return $this->name; }
function artist() { return $this->artist; }
function date() { return $this->date; }
function location() { return $this->location; }
function description() { return $this->desc; }
function canEdit() { return false; }
function idEntities() { return htmlspecialchars($this->id); }
/**
* Removes script-generated HTML (BRs and URLs) but leaves any other HTML
* @return string the description of the item
*/
function descriptionStripped()
{
$ret = str_replace("<br />","\n",$this->description());
if($this->config->enable_clickable_urls) {
//strip off html from autodetected URLs
$ret = preg_replace('{<a href="('.SG_REGEXP_PROTOCOLURL.')\">\1</a>}', '\1', $ret);
$ret = preg_replace('{<a href="http://('.SG_REGEXP_WWWURL.')">\1</a>}', '\1', $ret);
$ret = preg_replace('{<a href="mailto:('.SG_REGEXP_EMAILURL.')">\1</a>}', '\1', $ret);
}
return $ret;
}
/**
* If the current item has an artist specified, returns " by " followed
* by the artist's name. Otherwise returns an empty string.
* @return string
*/
function byArtistText()
{
if(empty($this->artist))
return "";
else
return " ".$this->translator->_g("artist name|by %s",$this->artist);
}
/**
* Obfuscates the given email address by replacing "." with "dot" and "@" with "at"
* @param boolean override the obfuscate_email config setting (optional)
* @return string obfuscated email address or HTML mailto link
*/
function emailLink($forceObfuscate = false)
{
if($this->config->obfuscate_email || $forceObfuscate)
return strtr($this->email,array("@" => ' <b>'.$this->translator->_g("email|at").'</b> ', "." => ' <b>'.$this->translator->_g("email|dot").'</b> '));
else
return "<a href=\"mailto:".$this->email."\">".$this->email."</a>";
}
 
function nameLink($action = null)
{
return '<a href="'.$this->URL(0, $action).'">'.$this->nameForce().'</a>';
}
function parentURL($action = null)
{
$perpage = $this->parent->isAlbum() ? $this->config->thumb_number_album : $this->config->thumb_number_gallery;
return $this->parent->URL(floor($this->index() / $perpage) * $perpage, $action);
}
function parentLink($action = null)
{
return '<a href="'.$this->parentURL($action).'">'.$this->parentText().'</a>';
}
function parentText()
{
return $this->translator->_g("gallery|Up");
}
/**
* @return array associative array of item properties in the form "name" => "value"
*/
function detailsArray()
{
$ret = array();
//generic properties
if(!empty($this->date)) $ret[$this->translator->_g("Date")] = $this->date;
if(!empty($this->location)) $ret[$this->translator->_g("Location")] = $this->location;
if(!empty($this->desc)) $ret[$this->translator->_g("Description")] = $this->desc;
if(!empty($this->email)) $ret[$this->translator->_g("Email")] = $this->emailLink();
//image properties
if(!empty($this->camera)) $ret[$this->translator->_g("Camera")] = $this->camera;
if(!empty($this->lens)) $ret[$this->translator->_g("Lens")] = $this->lens;
if(!empty($this->film)) $ret[$this->translator->_g("Film")] = $this->film;
if(!empty($this->darkroom)) $ret[$this->translator->_g("Darkroom manipulation")] = $this->darkroom;
if(!empty($this->digital)) $ret[$this->translator->_g("Digital manipulation")] = $this->digital;
//special properties
if(!empty($this->copyright)) $ret[$this->translator->_g("Copyright")] = $this->copyright;
elseif(!empty($this->artist))$ret[$this->translator->_g("Copyright")] = $this->artist;
if($this->config->show_views)
$ret[$this->translator->_g("Viewed")] = $this->translator->_ng("viewed|%s time", "viewed|%s times",$this->hits);
return $ret;
}
function isAlbum() { return false; }
function isGallery() { return false; }
function isImage() { return false; }
 
/**
* Returns a link to the image or gallery with the correct formatting and path
*
* @param int page offset (optional)
* @param string action to perform (optional)
* @return string formatted URL
*/
function URL($startat = null, $action = null)
{
$query = array();
if($this->config->use_mod_rewrite) { //format url for use with mod_rewrite
$ret = $this->config->base_url;
$ret .= $this->isImage() ? $this->parent->idEncoded() : $this->idEncoded();
if($startat) $ret .= ','.$startat;
$ret .= '/';
if($this->isImage()) $ret .= $this->idEncoded();
if($action) $query[] = $this->config->url_action."=".$action;
if($this->translator->language != $this->config->default_language) $query[] = $this->config->url_lang.'='.$this->translator->language;
if($GLOBALS["sg"]->template != $this->config->default_template) $query[] = $this->config->url_template.'='.$GLOBALS["sg"]->template;
if(!empty($query))
$ret .= '?'.implode(ini_get('arg_separator.output'), $query);
} else { //format plain url
$query[] = $this->config->url_gallery."=".($this->isImage() ? $this->parent->idEncoded() : $this->idEncoded());
if($this->isImage()) $query[] = $this->config->url_image."=".$this->idEncoded();
if($startat) $query[] = $this->config->url_startat."=".$startat;
if($action) $query[] = $this->config->url_action."=".$action;
if($this->translator->language != $this->config->default_language)
$query[] = $this->config->url_lang.'='.$this->translator->language;
if(isset($GLOBALS["sg"]->template) && $GLOBALS["sg"]->template != $this->config->default_template)
$query[] = $this->config->url_template.'='.$GLOBALS["sg"]->template;
$ret = $this->config->index_file_url.implode(ini_get('arg_separator.output'), $query);
}
return $ret;
}
}
 
 
?>
/photogallery/includes/singapore.class.php
0,0 → 1,976
<?php
 
/**
* Main class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2006 Tamlyn Rhodes
* @version $Id: singapore.class.php,v 1.75 2006/09/12 11:56:11 thepavian Exp $
*/
 
//define constants for regular expressions
define('SG_REGEXP_PROTOCOLURL', '(?:http://|https://|ftp://|mailto:)(?:[a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,4}(?::[0-9]+)?(?:/[^ \n\r\"\'<]+)?');
define('SG_REGEXP_WWWURL', 'www\.(?:[a-zA-Z0-9\-]+\.)*[a-zA-Z]{2,4}(?:/[^ \n\r\"\'<]+)?');
define('SG_REGEXP_EMAILURL', '(?:[\w][\w\.\-]+)+@(?:[\w\-]+\.)+[a-zA-Z]{2,4}');
 
/**
* Provides functions for handling galleries and images
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
*/
class Singapore
{
/**
* current script version
* @var string
*/
var $version = "0.10.1";
/**
* instance of a {@link sgConfig} object representing the current
* script configuration
* @var sgConfig
*/
var $config;
/**
* instance of the currently selected IO handler object
* @var sgIO_csv
*/
var $io;
/**
* instance of a {@link Translator}
* @var Translator
*/
var $translator;
/**
* instance of a {@link sgGallery} representing the current gallery
* @var sgGallery
*/
var $gallery;
/**
* reference to the currently selected {@link sgImage} object in the
* $images array of {@link $gallery}
* @var sgImage
*/
var $image;
/**
* two character code of language currently in use
* @var string
*/
var $language = null;
/**
* name of template currently in use
* @var string
*/
var $template = null;
/**
* details of current user
* @var sgUser
*/
var $user = null;
/**
* name of action requested
* @var string
*/
var $action = null;
/**
* Constructor, does all init type stuff. This code is a total mess.
* @param string the path to the base singapore directory
*/
function Singapore($basePath = "")
{
//import class definitions
//io handler class included once config is loaded
require_once $basePath."includes/translator.class.php";
require_once $basePath."includes/thumbnail.class.php";
require_once $basePath."includes/gallery.class.php";
require_once $basePath."includes/config.class.php";
require_once $basePath."includes/image.class.php";
require_once $basePath."includes/user.class.php";
//start execution timer
$this->scriptStartTime = microtime();
//remove slashes
if(get_magic_quotes_gpc())
$_REQUEST = array_map(array("Singapore","arraystripslashes"), $_REQUEST);
//desanitize request
$_REQUEST = array_map("htmlentities", $_REQUEST);
//load config from singapore root directory
$this->config =& sgConfig::getInstance();
$this->config->loadConfig($basePath."singapore.ini");
$this->config->loadConfig($basePath."secret.ini.php");
//if instantiated remotely...
if(!empty($basePath)) {
//...try to guess base path and relative url
if(empty($this->config->base_path))
$this->config->base_path = $basePath;
if(empty($this->config->base_url))
$this->config->base_url = $basePath;
//...load local config if present
//may over-ride guessed values above
$this->config->loadConfig("singapore.local.ini");
}
//set current gallery to root if not specified in url
$galleryId = isset($_REQUEST[$this->config->url_gallery]) ? $_REQUEST[$this->config->url_gallery] : ".";
//load config from gallery ini file (gallery.ini) if present
$this->config->loadConfig($basePath.$this->config->pathto_galleries.$galleryId."/gallery.ini");
//set current template from request vars or config
//first, preset template to default one
$this->template = $this->config->default_template;
//then check if requested template exists
if(!empty($_REQUEST[$this->config->url_template])) {
$templates = Singapore::getListing($this->config->base_path.$this->config->pathto_templates);
foreach($templates->dirs as $single) {
if($single == $_REQUEST[$this->config->url_template]) {
$this->template = $single;
break;
}
}
}
 
$this->config->pathto_current_template = $this->config->pathto_templates.$this->template.'/';
//load config from template ini file (template.ini) if present
$this->config->loadConfig($basePath.$this->config->pathto_current_template."template.ini");
//set runtime values
$this->config->pathto_logs = $this->config->pathto_data_dir."logs/";
$this->config->pathto_cache = $this->config->pathto_data_dir."cache/";
$this->config->pathto_admin_template = $this->config->pathto_templates.$this->config->admin_template_name."/";
//set current language from request vars or config
if(!empty($_REQUEST[$this->config->url_lang]))
$this->language = $_REQUEST[$this->config->url_lang];
else {
$this->language = $this->config->default_language;
if($this->config->detect_language)
foreach($this->getBrowserLanguages() as $lang)
if($lang=="en" || file_exists($basePath.$this->config->pathto_locale."singapore.".$lang.".pmo")) {
$this->language = $lang;
break;
}
}
//read the language file
$this->translator =& Translator::getInstance($this->language);
$this->translator->readLanguageFile($this->config->base_path.$this->config->pathto_locale."singapore.".$this->language.".pmo");
//clear the UMASK
umask(0);
//include IO handler class and create instance
require_once $basePath."includes/io_".$this->config->io_handler.".class.php";
$ioClassName = "sgIO_".$this->config->io_handler;
$this->io = new $ioClassName($this->config);
//load gallery and image info
$this->selectGallery($galleryId);
//set character set
if(!empty($this->translator->languageStrings[0]["charset"]))
$this->character_set = $this->translator->languageStrings[0]["charset"];
else
$this->character_set = $this->config->default_charset;
//set action to perform
if(empty($_REQUEST["action"])) $this->action = "view";
else $this->action = $_REQUEST["action"];
}
/**
* Load gallery and image info
* @param string the id of the gallery to load (optional)
*/
function selectGallery($galleryId = "")
{
if(empty($galleryId)) $galleryId = isset($_REQUEST[$this->config->url_gallery]) ? $_REQUEST[$this->config->url_gallery] : ".";
//try to validate gallery id
if(strlen($galleryId)>1 && $galleryId{1} != '/') $galleryId = './'.$galleryId;
//detect back-references to avoid file-system walking
if(strpos($galleryId,"../")!==false) $galleryId = ".";
//find all ancestors to current gallery
$this->ancestors = array();
$ancestorNames = explode("/", $galleryId);
$numberOfAncestors = count($ancestorNames);
//construct fully qualified gallery ids
$ancestorIds[0] = ".";
for($i=1; $i<$numberOfAncestors; $i++)
$ancestorIds[$i] = $ancestorIds[$i-1]."/".$ancestorNames[$i];
//fetch galleries passing previous gallery as parent pointer
for($i=0; $i<$numberOfAncestors; $i++)
if(!$this->ancestors[$i] =& $this->io->getGallery(
$ancestorIds[$i], $this->ancestors[$i-1],
//only fetch children of bottom level gallery
($i==$numberOfAncestors-1) ? 1 : 0
)
)
break;
//need to remove bogus parent of root gallery created by previous step
unset($this->ancestors[-1]);
//set reference to current gallery
$this->gallery = &$this->ancestors[count($this->ancestors)-1];
//check if gallery was successfully fetched
if($this->gallery == null) {
$this->gallery = new sgGallery($galleryId, $this->ancestors[0]);
$this->gallery->name = $this->translator->_g("Gallery not found '%s'",htmlspecialchars($galleryId));
}
//sort galleries and images
$GLOBALS["sgSortOrder"] = $this->config->gallery_sort_order;
if($this->config->gallery_sort_order!="x") usort($this->gallery->galleries, array("Singapore","multiSort"));
$GLOBALS["sgSortOrder"] = $this->config->image_sort_order;
if($this->config->image_sort_order!="x") usort($this->gallery->images, array("Singapore","multiSort"));
unset($GLOBALS["sgSortOrder"]);
//if startat is set then cast to int otherwise startat 0
$this->gallery->startat = isset($_REQUEST[$this->config->url_startat]) ? (int)$_REQUEST[$this->config->url_startat] : 0;
$this->startat = $this->gallery->startat; //depreciated
//select the image (if any)
if(!empty($_REQUEST[$this->config->url_image]))
$this->selectImage($_REQUEST[$this->config->url_image]);
//load hit data
if($this->config->track_views || $this->config->show_views)
$this->io->getHits($this->gallery);
//update and save hit data
if($this->config->track_views) {
if($this->isImagePage()) {
$this->image->hits++;
$this->image->lasthit = time();
} elseif($this->gallery->startat == 0) {
$this->gallery->hits++;
$this->gallery->lasthit = time();
}
$this->io->putHits($this->gallery);
}
}
/**
* Selects an image from the current gallery
* @param mixed either the filename of the image to select or the integer
* index of its position in the images array
* @return boolean true on success; false otherwise
*/
function selectImage($image)
{
if(is_string($image)) {
foreach($this->gallery->images as $index => $img)
if($img->id == $image) {
$this->image =& $this->gallery->images[$index];
return true;
}
} elseif(is_int($image) && $image >= 0 && $image < count($this->gallery->images)) {
$this->image =& $this->gallery->images[$image];
return true;
}
$this->image =& new sgImage("", $this->gallery);
$this->image->name = $this->translator->_g("Image not found '%s'",htmlspecialchars($image));
return false;
}
/**
* Obfuscates the given email address by replacing "." with "dot" and "@" with "at"
* @param string email address to obfuscate
* @param boolean override the obfuscate_email config setting (optional)
* @return string obfuscated email address or HTML mailto link
*/
function formatEmail($email, $forceObfuscate = false)
{
if($this->config->obfuscate_email || $forceObfuscate)
return strtr($email,array("@" => ' <b>'.$this->translator->_g("email|at").'</b> ', "." => ' <b>'.$this->translator->_g("email|dot").'</b> '));
else
return "<a href=\"mailto:".$email."\">".$email."</a>";
}
 
/**
* Returns image name for image pages and gallery name for gallery pages.
* If either of these is empty, returns gallery_name config option.
*
* @return string Title of current page
*/
function pageTitle()
{
$crumbArray = $this->crumbLineArray();
$ret = "";
for($i=count($crumbArray)-1;$i>0;$i--)
$ret .= $crumbArray[$i]->nameForce()." &lt; ";
$ret .= $crumbArray[$i]->nameForce();
return $ret;
}
/**
* @return bool true if this is an image page; false otherwise
*/
function isImagePage()
{
return !empty($this->image);
}
/**
* @return bool true if this is a non-album gallery page; false otherwise
*/
function isGalleryPage()
{
return !empty($this->gallery) && $this->gallery->galleryCount()>0;;
}
/**
* @return bool true if this is an album page; false otherwise
*/
function isAlbumPage()
{
return !$this->isGalleryPage() && !$this->isImagePage() && !empty($this->gallery);
}
/**
* @return int the script execution time in seconds rounded to two decimal places
*/
function scriptExecTime()
{
$scriptStartTime = $this->scriptStartTime;
$scriptEndTime = microtime();
list($usec, $sec) = explode(" ",$scriptStartTime);
$scriptStartTime = (float)$usec + (float)$sec;
list($usec, $sec) = explode(" ",$scriptEndTime);
$scriptEndTime = (float)$usec + (float)$sec;
$scriptExecTime = floor(($scriptEndTime - $scriptStartTime)*100)/100;
return $scriptExecTime;
}
/**
* Displays the script execution time if configured to do so
* @returns string the script execution time
*/
function scriptExecTimeText()
{
if($this->config->show_execution_time)
return $this->translator->_g("Page created in %s seconds",$this->scriptExecTime());
else
return "";
}
function poweredByText()
{
return $this->translator->_g("Powered by").' <a href="http://www.sgal.org/">singapore</a>';
}
function allRightsReserved()
{
return $this->translator->_g("All rights reserved.");
}
function licenseText()
{
return $this->translator->_g("Images may not be reproduced in any form without the express written permission of the copyright holder.");
}
function adminURL()
{
return '<a href="'.$this->config->base_url.'admin.php">';
}
function adminLink()
{
return $this->adminURL().$this->translator->_g("Log in")."</a>";
}
/**
* Checks to see if the user is currently logged in to admin mode. Also resets
* the login timeout to the current time.
* @returns boolean true if the user is logged in; false otherwise
* @static
*/
function isLoggedIn()
{
if(
isset($this->user) &&
$_SESSION["sgUser"]["ip"] == $_SERVER["REMOTE_ADDR"] &&
(time() - $_SESSION["sgUser"]["loginTime"] < 600)
) {
//reset loginTime to current time
$_SESSION["sgUser"]["loginTime"] = time();
return true;
}
return false;
}
function loadUser($username = null)
{
if($username == null)
if(isset($_SESSION["sgUser"]))
$username = $_SESSION["sgUser"]["username"];
else
return false;
$users = $this->io->getUsers();
foreach($users as $user)
if($user->username == $username) {
$this->user = $user;
return $user;
}
return false;
}
/**
* Creates an array of objects each representing an item in the crumb line.
* @return array the items of the crumb line
*/
function crumbLineArray()
{
$crumb = $this->ancestors;
if($this->isImagePage()) $crumb[] = $this->image;
return $crumb;
}
/**
* @return string the complete crumb line with links
*/
function crumbLineText()
{
$crumbArray = $this->crumbLineArray();
 
$ret = "";
for($i=0;$i<count($crumbArray)-1;$i++)
$ret .= $crumbArray[$i]->nameLink()." &gt;\n";
$ret .= $crumbArray[$i]->nameForce();
 
return $ret;
}
function crumbLine()
{
return $this->translator->_g("crumb line|You are here:")." ".$this->crumbLineText();
}
/**
* Generates the HTML code for imagemap_navigation
* @return string imagemap HTML code
*/
function imageMap()
{
if(!$this->config->imagemap_navigation) return "";
$imageWidth = $this->image->width();
$imageHeight = $this->image->height();
$middleX = round($imageWidth/2);
$middleY = round($imageHeight/2);
$ret = "<map name=\"sgNavMap\" id=\"sgNavMap\">\n";
if($this->image->hasNext()) $ret .= '<area href="'.$this->image->nextURL().'" alt="'.$this->image->nextText().'" title="'.$this->image->nextText().'" shape="poly" ';
else $ret .= '<area href="'.$this->image->parentURL().'" alt="'.$this->image->parentText().'" title="'.$this->image->parentText().'" shape="poly" ';
$ret .= "coords=\"$middleX,$middleY,$imageWidth,$imageHeight,$imageWidth,0,$middleX,$middleY\" />\n";
if($this->image->hasPrev()) $ret .= '<area href="'.$this->image->prevURL().'" alt="'.$this->image->prevText().'" title="'.$this->image->prevText().'" shape="poly" ';
else $ret .= '<area href="'.$this->image->parentURL().'" alt="'.$this->image->parentText().'" title="'.$this->image->parentText().'" shape="poly" ';
$ret .= "coords=\"$middleX,$middleY,0,0,0,$imageHeight,$middleX,$middleY\" />\n";
$ret .= '<area href="'.$this->image->parentURL().'" alt="'.$this->image->parentText().'" title="'.$this->image->parentText().'" shape="poly" ';
$ret .= "coords=\"$middleX,$middleY,0,0,$imageWidth,0,$middleX,$middleY\" />\n";
$ret .= '</map>';
return $ret;
}
/**
* Generates the HTML code for the language select box
* @return string select box HTML code
*/
function languageFlipper()
{
if(!$this->config->language_flipper) return "";
$languageCache = $this->config->base_path.$this->config->pathto_data_dir."languages.cache";
// Look for the language file
if(!file_exists($languageCache))
return "";
// Open the file
$fp = @fopen($languageCache, "r");
if (!$fp) return "";
// Read contents
$str = '';
while (!feof($fp)) $str .= fread($fp, 1024);
// Unserialize
$availableLanguages = @unserialize($str);
$ret = '<div class="sgLanguageFlipper">';
$ret .= '<form method="get" action="'.$_SERVER["PHP_SELF"]."\">\n";
//carry over current get vars
foreach($_GET as $var => $val)
$ret .= '<input type="hidden" name="'.$var.'" value="'.htmlspecialchars($val)."\" />\n";
$ret .= '<select name="'.$this->config->url_lang."\">\n";
$ret .= ' <option value="'.$this->config->default_language.'">'.$this->translator->_g("Select language...")."</option>\n";
foreach($availableLanguages as $code => $name) {
$ret .= ' <option value="'.$code.'"';
if($code == $this->language && $this->language != $this->config->default_language)
$ret .= 'selected="true" ';
$ret .= '>'.htmlentities($name)."</option>\n";
}
$ret .= "</select>\n";
$ret .= '<input type="submit" class="button" value="'.$this->translator->_g("Go")."\" />\n";
$ret .= "</form></div>\n";
return $ret;
}
/**
* Generates the HTML code for the template select box
* @return string select box HTML code
*/
function templateFlipper()
{
if(!$this->config->template_flipper) return "";
//get list of installed templates
$templates = Singapore::getListing($this->config->base_path.$this->config->pathto_templates, "dirs");
$ret = '<div class="sgTemplateFlipper">';
$ret .= '<form method="get" action="'.$_SERVER["PHP_SELF"]."\">\n";
//carry over current get vars
foreach($_GET as $var => $val)
$ret .= '<input type="hidden" name="'.$var.'" value="'.htmlspecialchars($val)."\" />\n";
$ret .= '<select name="'.$this->config->url_template."\">\n";
$ret .= ' <option value="'.$this->config->default_template.'">'.$this->translator->_g("Select template...")."</option>\n";
foreach($templates->dirs as $name)
//do not list admin template(s)
if(strpos($name, "admin_")===false) {
$ret .= ' <option value="'.$name.'"';
if($name == $this->template && $this->template != $this->config->default_template)
$ret .= 'selected="true" ';
$ret .= '>'.$name."</option>\n";
}
$ret .= "</select>\n";
$ret .= '<input type="submit" class="button" value="'.$this->translator->_g("Go")."\" />\n";
$ret .= "</form></div>\n";
return $ret;
}
/**
* @param string $seperator optional string to seperate the Gallery Tab Links
* @return string
*/
function galleryTab($seperator = " | ")
{
$showing = $this->galleryTabShowing();
return Singapore::conditional($this->galleryTabLinks(), $showing.$seperator."%s", $showing);
}
/**
* @return string
*/
function galleryTabShowing()
{
if($this->isAlbumPage()) {
$total = $this->gallery->imageCount();
$perPage = $this->config->thumb_number_album;
} else {
$total = $this->gallery->galleryCount();
$perPage = $this->config->thumb_number_gallery;
}
if($this->gallery->startat+$perPage > $total)
$last = $total;
else
$last = $this->gallery->startat+$perPage;
return $this->translator->_g("Showing %s-%s of %s",($this->gallery->startat+1),$last,$total);
}
/**
* @return string
*/
function galleryTabLinks()
{
$ret = "";
if($this->hasPrevPage())
$ret .= $this->prevPageLink()." ";
//This is for compatibility with old templates
//it detects if compatibility mode is on using method_exists()
if(!$this->gallery->isRoot() && method_exists($this, 'galleryName'))
$ret .= $this->gallery->parentLink();
if($this->hasNextPage())
$ret .= " ".$this->nextPageLink();
return $ret;
}
function navigationLinks() {
$ret = "<link rel=\"Top\" title=\"".$this->config->gallery_name."\" href=\"".$this->ancestors[0]->URL()."\" />\n";
if($this->isImagePage()) {
$ret .= "<link rel=\"Up\" title=\"".$this->image->parent->name()."\" href=\"".$this->image->parent->URL()."\" />\n";
if ($this->image->hasPrev()) {
$first= $this->image->firstImage();
$prev = $this->image->prevImage();
$ret .= "<link rel=\"First\" title=\"".$first->name()."\" href=\"".$first->URL()."\" />\n";
$ret .= "<link rel=\"Prev\" title=\"".$prev->name()."\" href=\"".$prev->URL()."\" />\n";
}
if ($this->image->hasNext()) {
$next = $this->image->nextImage();
$last = $this->image->lastImage();
$ret .= "<link rel=\"Next\" title=\"".$next->name()."\" href=\"".$next->URL()."\" />\n";
$ret .= "<link rel=\"Last\" title=\"".$last->name()."\" href=\"".$last->URL()."\" />\n";
//prefetch next image
$ret .= "<link rel=\"Prefetch\" href=\"".$next->imageURL()."\" />\n";
}
} else {
if(!$this->gallery->isRoot())
$ret .= "<link rel=\"Up\" title=\"".$this->gallery->parent->name()."\" href=\"".$this->gallery->parent->URL()."\" />\n";
if($this->hasPrevPage()) {
$ret .= "<link rel=\"Prev\" title=\"".$this->translator->_g("gallery|Previous")."\" href=\"".$this->prevPageURL()."\" />\n";
$ret .= "<link rel=\"First\" title=\"".$this->translator->_g("gallery|First")."\" href=\"".$this->firstPageURL()."\" />\n";
}
if($this->hasNextPage()) {
$ret .= "<link rel=\"Next\" title=\"".$this->translator->_g("gallery|Next")."\" href=\"".$this->nextPageURL()."\" />\n";
$ret .= "<link rel=\"Last\" title=\"".$this->translator->_g("gallery|Last")."\" href=\"".$this->lastPageURL()."\" />\n";
}
}
return $ret;
}
/**
* @return int the number of 'pages' or 'screen-fulls'
*/
function galleryPageCount() {
if($this->isAlbumPage())
return intval($this->gallery->imageCount()/$this->config->thumb_number_album)+1;
else
return intval($this->gallery->galleryCount()/$this->config->thumb_number_gallery)+1;
}
/**
* @return int
*/
function lastPageIndex() {
if($this->isAlbumPage())
return ($this->galleryPageCount()-1)*
($this->isAlbumPage()?$this->config->thumb_number_album:$this->config->thumb_number_gallery);
}
/**
* @return bool true if there is at least one more page
*/
function hasNextPage() {
if($this->isAlbumPage())
return count($this->gallery->images)>$this->startat+$this->config->thumb_number_album;
elseif($this->isGalleryPage())
return count($this->gallery->galleries)>$this->startat+$this->config->thumb_number_gallery;
elseif($this->isImagePage())
return isset($this->gallery->images[$this->image->index+1]);
}
/**
* @return bool true if there is at least one previous page
*/
function hasPrevPage() {
if($this->isAlbumPage() || $this->isGalleryPage())
return $this->startat > 0;
elseif($this->isImagePage())
return isset($this->gallery->images[$this->image->index-1]);
}
function firstPageURL() {
return $this->gallery->URL(0);
}
function firstPageLink() {
return "<a href=\"".$this->firstPageURL()."\">".$this->translator->_g("First %s", $this->itemsPerPage())."</a>";
}
/**
* @return string the URL of the previous page
*/
function prevPageURL() {
return $this->gallery->URL($this->startat - $this->itemsPerPage());
}
function prevPageLink() {
return "<a href=\"".$this->prevPageURL()."\">".$this->translator->_g("Previous %s", $this->itemsPerPage())."</a>";
}
/**
* @return string the URL of the next page
*/
function nextPageURL() {
return $this->gallery->URL($this->startat + $this->itemsPerPage());
}
function nextPageLink() {
return "<a href=\"".$this->nextPageURL()."\">".$this->translator->_g("Next %s", $this->itemsPerPage())."</a>";
}
function lastPageURL() {
$perpage = $this->isAlbumPage() ? $this->config->thumb_number_album : $this->config->thumb_number_gallery;
return $this->gallery->URL(floor($this->gallery->itemCount() / $perpage) * $perpage);
}
function lastPageLink() {
return "<a href=\"".$this->lastPageURL()."\">".$this->translator->_g("Last %s", $this->itemsPerPage())."</a>";
}
function itemsPerPage()
{
return $this->isAlbumPage() ? $this->config->thumb_number_album : $this->config->thumb_number_gallery;
}
/**
* @return string link for adding a comment to image
*/
function imageCommentLink()
{
return "<a href=\"".
$this->formatURL($this->gallery->idEncoded(), $this->image->id, null, "addcomment").
"\">".$this->translator->_g("Add a comment")."</a>";
}
/**
* @return array array of sgImage objects
*/
function &previewThumbnailsArray()
{
$ret = array();
$index = $this->image->index();
$start = ceil($index - $this->config->thumb_number_preview/2);
for($i = $start; $i < $start + $this->config->thumb_number_preview; $i++)
if(isset($this->image->parent->images[$i]))
$ret[$i] =& $this->image->parent->images[$i];
return $ret;
}
function previewThumbnails()
{
$thumbs =& $this->previewThumbnailsArray();
$index = $this->image->index();
$ret = "";
foreach($thumbs as $key => $thumb) {
$thumbClass = "sgThumbnailPreview";
if($key==$index-1) $thumbClass .= " sgThumbnailPreviewPrev";
elseif($key==$index) $thumbClass .= " sgThumbnailPreviewCurrent";
elseif($key==$index+1) $thumbClass .= " sgThumbnailPreviewNext";
$ret .= $thumb->thumbnailLink($thumbClass, "preview")."\n";
}
return $ret;
}
//////////////////////////////
//////ex-sgUtils methods//////
//////////////////////////////
/**
* Callback function for sorting things
* @static
*/
function multiSort($a, $b) {
switch($GLOBALS["sgSortOrder"]) {
case "f" :
case "p" : return strcmp($a->id, $b->id); //path
case "F" :
case "P" : return strcmp($b->id, $a->id); //path (reverse)
case "n" : return strcmp($a->name, $b->name); //name
case "N" : return strcmp($b->name, $a->name); //name (reverse)
case "i" : return strcasecmp($a->name, $b->name); //case-insensitive name
case "I" : return strcasecmp($b->name, $a->name); //case-insensitive name (reverse)
case "a" : return strcmp($a->artist, $b->artist); //artist
case "A" : return strcmp($b->artist, $a->artist); //artist (reverse)
case "d" : return strcmp($a->date, $b->date); //date
case "D" : return strcmp($b->date, $a->date); //date (reverse)
case "l" : return strcmp($a->location, $b->location); //location
case "L" : return strcmp($b->location, $a->location); //location (reverse)
}
}
/**
* Slightly pointless method
*/
function conditional($conditional, $iftrue, $iffalse = null)
{
if($conditional) return sprintf($iftrue, $conditional);
elseif($iffalse != null) return sprintf($iffalse, $conditional);
else return "";
}
/**
* Callback function for recursively stripping slashes
* @static
*/
function arraystripslashes($toStrip)
{
if(is_array($toStrip))
return array_map(array("Singapore","arraystripslashes"), $toStrip);
else
return stripslashes($toStrip);
}
function thumbnailPath($gallery, $image, $width, $height, $forceSize, $mode = 1)
{
$config =& sgConfig::getInstance();
switch($mode) {
case 0 :
return $config->pathto_data_dir."cache/".$width."x".$height.($forceSize?"f":"").strtr("-$gallery-$image",":/?\\","----");
case 1 :
return $config->pathto_galleries.$gallery."/_thumbs/".$width."x".$height.($forceSize?"f":"").strtr("-$image",":/?\\","----");
}
}
/**
* @param string relative or absolute path to directory
* @param string regular expression of files to return (optional)
* @param bool true to get hidden directories too
* @returns stdClass|false a data object representing the directory and its contents
* @static
*/
function getListing($wd, $mask = null, $getHidden = false)
{
$dir = new stdClass;
$dir->path = realpath($wd)."/";
$dir->files = array();
$dir->dirs = array();
$dp = opendir($dir->path);
if(!$dp) return false;
 
while(false !== ($entry = readdir($dp)))
if(is_dir($dir->path.$entry)) {
if(($entry{0} != '.' && $entry{0} != '_') || $getHidden)
$dir->dirs[] = $entry;
} else {
if($mask == null || preg_match("/\.($mask)$/i",$entry))
$dir->files[] = $entry;
}
sort($dir->files);
sort($dir->dirs);
closedir($dp);
return $dir;
}
/**
* Recursively deletes all directories and files in the specified directory.
* USE WITH EXTREME CAUTION!!
* @returns boolean true on success; false otherwise
* @static
*/
function rmdir_all($wd)
{
if(!$dp = opendir($wd)) return false;
$success = true;
while(false !== ($entry = readdir($dp))) {
if($entry == "." || $entry == "..") continue;
if(is_dir("$wd/$entry")) $success &= Singapore::rmdir_all("$wd/$entry");
else $success &= unlink("$wd/$entry");
}
closedir($dp);
$success &= rmdir($wd);
return $success;
}
/**
* Returns an array of language codes specified in the Accept-Language HHTP
* header field of the user's browser. q= components are ignored and removed.
* hyphens (-) are converted to underscores (_).
* @return array accepted language codes
* @static
*/
function getBrowserLanguages()
{
$langs = array();
foreach(explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]) as $bit)
if($pos = strpos($bit,";"))
$langs[] = strtr(substr($bit,0,$pos),"-","_");
else
$langs[] = strtr($bit,"-","_");
return $langs;
}
/**
* Wrapper for mkdir() implementing the safe-mode hack
*/
function mkdir($path)
{
$config =& sgConfig::getInstance();
if($config->safe_mode_hack) {
$connection = ftp_connect($config->ftp_server);
// login to ftp server
$result = ftp_login($connection, $config->ftp_user, $config->ftp_pass);
// check if connection was made
if ((!$connection) || (!$result))
return false;
ftp_chdir($connection, $config->ftp_base_path); // go to destination dir
if(!ftp_mkdir($connection, $path)) // create directory
return false;
ftp_site($connection, "CHMOD ".$config->directory_mode." ".$path);
ftp_close($connection); // close connection
return true;
} else
return mkdir($path, octdec($config->directory_mode));
}
/**
* Tests if $child is within or is the same path as $parent.
*
* @param string path to parent directory
* @param string path to child directory or file
* @param bool set false to prevent canonicalisation of paths (optional)
* @return bool true if $child is contained within or is $parent
*/
function isSubPath($parent, $child, $canonicalise = true)
{
$parentPath = $canonicalise ? realpath($parent) : $parent;
$childPath = $canonicalise ? realpath($child) : $child;
return $parentPath && $childPath && substr($childPath,0,strlen($parentPath)) == $parentPath;
}
 
 
function isInGroup($groups1,$groups2)
{
return (bool) array_intersect(explode(" ",$groups1),explode(" ",$groups2));
}
}
 
 
?>
/photogallery/includes/thumbnail.class.php
0,0 → 1,228
<?php
 
/**
* Thumbnail class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: thumbnail.class.php,v 1.13 2006/06/24 20:33:00 tamlyn Exp $
*/
 
 
/**
* Creates and manages image thumbnails
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003-2005 Tamlyn Rhodes
*/
class sgThumbnail
{
var $config;
var $maxWidth = 0;
var $maxHeight = 0;
var $thumbWidth = 0;
var $thumbHeight = 0;
var $cropWidth = 0;
var $cropHeight = 0;
var $forceSize = false;
var $imagePath = "";
var $thumbPath = "";
function sgThumbnail(&$img, $type)
{
$this->config =& sgConfig::getInstance();
$this->image =& $img;
$widthVar = "thumb_width_".$type;
$heightVar = "thumb_height_".$type;
$cropVar = "thumb_crop_".$type;
$this->maxWidth = $this->config->$widthVar;
$this->maxHeight = $this->config->$heightVar;
if(isset($this->config->$cropVar))
$this->forceSize = $this->config->$cropVar;
if($this->image == null) return;
$this->imagePath = $this->image->realPath();
$this->thumbPath = $this->config->base_path.Singapore::thumbnailPath($this->image->parent->id, $this->image->id, $this->maxWidth, $this->maxHeight, $this->forceSize);
$this->thumbURL = $this->config->base_url .Singapore::thumbnailPath($this->image->parent->id, $this->image->id, $this->maxWidth, $this->maxHeight, $this->forceSize);
 
//security check: make sure requested file is in galleries directory
if(!Singapore::isSubPath($this->config->base_path.$this->config->pathto_galleries, $this->imagePath) && !$this->image->isRemote())
return;
//security check: make sure $image has a valid extension
if(!$this->image->isRemote() && !preg_match("/.+\.(".$this->config->recognised_extensions.")$/i",$this->image->id))
return;
$this->calculateDimensions();
//link straight to image if it smaller than required size
if($this->image->width <= $this->thumbWidth && $this->image->height <= $this->thumbHeight) {
$this->thumbURL = $this->image->realURL();
return;
}
$imageModified = @filemtime($this->imagePath);
$thumbModified = @filemtime($this->thumbPath);
if($imageModified > $thumbModified || !$thumbModified)
$this->buildThumbnail();
}
/** Accessor methods */
function width() { return $this->thumbWidth; }
function height() { return $this->thumbHeight; }
function URL() { return $this->thumbURL; }
/** Private methods */
/**
* Calculates thumbnail dimensions.
*/
function calculateDimensions()
{
//if aspect ratio is to be constrained set crop size
if($this->forceSize) {
$newAspect = $this->maxWidth/$this->maxHeight;
$oldAspect = $this->image->realWidth()/$this->image->realHeight();
if($newAspect > $oldAspect) {
$this->cropWidth = $this->image->realWidth();
$this->cropHeight = round($this->image->realHeight()*($oldAspect/$newAspect));
} else {
$this->cropWidth = round($this->image->realWidth()*($newAspect/$oldAspect));
$this->cropHeight = $this->image->realHeight();
}
//else crop size is image size
} else {
$this->cropWidth = $this->image->realWidth();
$this->cropHeight = $this->image->realHeight();
}
if($this->cropHeight > $this->maxHeight && ($this->cropWidth <= $this->maxWidth
|| ($this->cropWidth > $this->maxWidth && round($this->cropHeight/$this->cropWidth * $this->maxWidth) > $this->maxHeight))) {
$this->thumbWidth = round($this->cropWidth/$this->cropHeight * $this->maxHeight);
$this->thumbHeight = $this->maxHeight;
} elseif($this->cropWidth > $this->maxWidth) {
$this->thumbWidth = $this->maxWidth;
$this->thumbHeight = round($this->cropHeight/$this->cropWidth * $this->maxWidth);
} else {
$this->thumbWidth = $this->image->realWidth();
$this->thumbHeight = $this->image->realHeight();
}
}
function buildThumbnail() {
//set cropping offset
$cropX = floor(($this->image->width-$this->cropWidth)/2);
$cropY = floor(($this->image->height-$this->cropHeight)/2);
//check thumbs directory exists and create it if not
if(!file_exists(dirname($this->thumbPath)))
Singapore::mkdir(dirname($this->thumbPath));
//if file is remote then copy locally first
if($this->image->isRemote()) {
$ip = @fopen($this->imagePath, "rb");
$tp = @fopen($this->thumbPath, "wb");
if($ip && $tp) {
while(fwrite($tp,fread($ip, 4095)));
fclose($tp);
fclose($ip);
$this->imagePath = $this->thumbPath;
}
}
switch($this->config->thumbnail_software) {
case "im" : //use ImageMagick v5.x
$cmd = '"'.$this->config->pathto_convert.'"';
if($this->forceSize) $cmd .= " -crop {$this->cropWidth}x{$this->cropHeight}+{$this->cropX}+{$this->cropY}";
$cmd .= " -geometry {$this->thumbWidth}x{$this->thumbHeight}";
if($this->image->type == 2) $cmd .= " -quality ".$this->config->thumbnail_quality;
if($this->config->progressive_thumbs) $cmd .= " -interlace Plane";
if($this->config->remove_jpeg_profile) $cmd .= ' +profile "*"';
$cmd .= ' '.escapeshellarg($this->imagePath).' '.escapeshellarg($this->thumbPath);
exec($cmd);
break;
case "im6" : //use ImageMagick v6.x
$cmd = '"'.$this->config->pathto_convert.'"';
$cmd .= ' '.escapeshellarg($this->imagePath);
if($this->config->progressive_thumbs) $cmd .= " -interlace Plane";
if($this->image->type == 2) $cmd .= " -quality ".$this->config->thumbnail_quality;
if($this->forceSize) $cmd .= " -crop {$this->cropWidth}x{$this->cropHeight}+{$this->cropX}+{$this->cropY}";
$cmd .= " -resize {$this->thumbWidth}x{$this->thumbHeight}";
if($this->config->remove_jpeg_profile) $cmd .= ' +profile "*"';
$cmd .= ' '.escapeshellarg($this->thumbPath);
exec($cmd);
break;
case "gd2" :
case "gd1" :
default : //use GD by default
//read in image as appropriate type
switch($this->image->type) {
case 1 : $image = ImageCreateFromGIF($this->imagePath); break;
case 3 : $image = ImageCreateFromPNG($this->imagePath); break;
case 2 :
default: $image = ImageCreateFromJPEG($this->imagePath); break;
}
if($image) {
switch($this->config->thumbnail_software) {
case "gd2" :
//create blank truecolor image
$thumb = ImageCreateTrueColor($this->thumbWidth,$this->thumbHeight);
//resize image with resampling
ImageCopyResampled(
$thumb, $image,
0, 0, $cropX, $cropY,
$this->thumbWidth, $this->thumbHeight, $this->cropWidth, $this->cropHeight);
break;
case "gd1" :
default :
//create blank 256 color image
$thumb = ImageCreate($this->thumbWidth,$this->thumbHeight);
//resize image
ImageCopyResized(
$thumb, $image,
0, 0, $cropX, $cropY,
$this->thumbWidth, $this->thumbHeight, $this->cropWidth, $this->cropHeight);
break;
}
} /*else {
$thumb = ImageCreate($this->thumbWidth, $this->thumbHeight);
$bg = ImageColorAllocate($thumb, 255, 255, 255);
$text = ImageColorAllocate($thumb, 255, 0, 0);
ImageString($thumb, 1, 0, 0, "Cannot load source image", $text);
}*/
//set image interlacing
@ImageInterlace($thumb, $this->config->progressive_thumbs);
//output image of appropriate type
switch($this->image->type) {
case 1 :
//GIF images are saved as PNG
case 3 :
ImagePNG($thumb, $this->thumbPath);
break;
case 2 :
default:
ImageJPEG($thumb, $this->thumbPath, $this->config->thumbnail_quality);
break;
}
@ImageDestroy($image);
@ImageDestroy($thumb);
}
//set file permissions on newly created thumbnail
@chmod($this->thumbPath, octdec($this->config->file_mode));
}
 
}
 
?>
/photogallery/includes/translator.class.php
0,0 → 1,160
<?php
 
/**
* Translation class.
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003-2005 Tamlyn Rhodes
* @version $Id: translator.class.php,v 1.5 2006/02/06 18:47:57 tamlyn Exp $
*/
/**
* Provides functions for translating strings using GNU Gettext PO files
* @package singapore
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
*/
class Translator
{
/**
* Array of language strings in the form
* "english string" => "foreign string"
* @private
* @var array
*/
var $languageStrings = array();
var $language = "en";
/**
* Constructor
* @param string language code
* @private
*/
function Translator($language)
{
$this->language = $language;
}
/**
* Implements a version of the Singleton design pattern by always returning
* a reference to the same Translator object for each language. If no
* language is specified then the first loaded Translator is returned.
* @param string language code (optional)
* @static
*/
function &getInstance($language = 0)
{
static $instances = array();
$key = empty($instances) ? 0 : $language;
if(!isset($instances[$key]))
//note that the new object is NOT assigned by reference as
//references are not stored in static variables (don't ask me...)
$instances[$key] = new Translator($language);
return $instances[$key];
}
/**
* Reads a language file and saves the strings in an array.
* Note that the language code is used in the filename for the
* datafile, and is case sensitive.
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @param string file to load
* @return bool success
*/
function readLanguageFile($languageFile)
{
// Look for the language file
if(!file_exists($languageFile))
return false;
// Open the file
$fp = @fopen($languageFile, "r");
if (!$fp) return false;
// Read contents
$str = '';
while (!feof($fp)) $str .= fread($fp, 1024);
// Unserialize
$newStrings = @unserialize($str);
//Append new strings to current languageStrings array
$this->languageStrings = array_merge($this->languageStrings, $newStrings);
// Return successful
return (bool) $newStrings;
}
/**
* Returns a translated string, or the same if no language is chosen.
* You can pass more arguments to use for replacement within the
* string - just like sprintf(). It also removes anything before
* the first | in the text to translate. This is used to distinguish
* strings with different meanings, but with the same spelling.
* Examples:
* _g("Text");
* _g("Use a %s to drink %s", _g("glass"), "water");
*
* @author Joel Sjögren <joel dot sjogren at nonea dot se>
* @param string text to translate
* @return string translated string
*/
function _g ($text)
{
// String exists and is not empty?
if(!empty($this->languageStrings[$text])) {
$text = $this->languageStrings[$text];
} else {
$text = preg_replace("/^[^\|]*\|/", "", $text);
}
// More arguments were passed? sprintf() them...
if (func_num_args() > 1) {
$args = func_get_args();
array_shift($args);
//preg_match_all("/%((\d+\\\$)|.)/", str_replace("%%", "", $text), $m);
//while (count($args) < count($m[0])) $args[] = '';
$text = vsprintf($text, $args);
}
return $text;
}
/**
* Plural form of _g().
*
* @param string singular form of text to translate
* @param string plural form of text to translate
* @param string number
* @return string translated string
*/
function _ng ($msgid1, $msgid2, $n)
{
//calculate which plural to use
if(!empty($this->languageStrings[0]["plural"]))
eval($this->languageStrings[0]["plural"]);
else
$plural = $n==1?0:1;
// String exists and is not empty?
if (!empty($this->languageStrings[$msgid1][$plural])) {
$text = $this->languageStrings[$msgid1][$plural];
} else {
$text = preg_replace("/^[^\|]*\|/", "", ($n == 1 ? $msgid1 : $msgid2));
}
if (func_num_args() > 3) {
$args = func_get_args();
array_shift($args);
array_shift($args);
return vsprintf($text, $args);
}
return sprintf($text, $n);
}
}
 
?>
/photogallery/includes/user.class.php
0,0 → 1,121
<?php
 
/**
* User class.
*
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License
* @copyright (c)2003, 2004 Tamlyn Rhodes
* @version $Id: user.class.php,v 1.5 2006/03/14 19:38:54 tamlyn Exp $
*/
 
/**
* Class used to represent a user.
* @package singapore
* @author Tamlyn Rhodes <tam at zenology dot co dot uk>
* @copyright (c)2003, 2004 Tamlyn Rhodes
*/
class sgUser
{
/**
* Username of user. Special cases are 'guest' and 'admin'.
* @var string
*/
var $username = "";
 
/**
* MD5 hash of password
* @var string
*/
var $userpass = "5f4dcc3b5aa765d61d8327deb882cf99";
/**
* Bit-field of permissions
* @var int
*/
var $permissions = 0;
/**
* Space-separated list of groups of which the user is a member
* @var string
*/
var $groups = "";
/**
* Email address of user
* @var string
*/
var $email = "";
/**
* The name or title of the user
* @var string
*/
var $fullname = "";
/**
*Description of user account
* @var string
*/
var $description = "";
/**
* Statistics (what's this? I don't know!)
* @var string
*/
var $stats = "";
/**
* Constructor ensures username and userpass have values
*/
function sgUser($username, $userpass)
{
$this->username = $username;
$this->userpass = $userpass;
}
/**
* Checks if currently logged in user is an administrator.
*
* @return bool true on success; false otherwise
*/
function isAdmin()
{
return $this->permissions & SG_ADMIN;
}
/**
* Checks if currently logged in user is a guest.
*
* @return bool true on success; false otherwise
*/
function isGuest()
{
return $this->username == "guest";
}
/**
* Checks if this user is the owner of the specified item.
*
* @param sgItem the item to check
* @return bool true if this user is the owner; false otherwise
*/
function isOwner($item)
{
return $item->owner == $this->username;
}
/**
* Checks if this user is a member of the group(s) supplied
*
* @return bool true on success; false otherwise
*/
function isInGroup($groups)
{
return (bool) array_intersect(explode(" ",$groups),explode(" ",$this->groups));
}
}
 
?>
/photogallery/docs/Advanced.html
0,0 → 1,200
<!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">
<head>
<title>singapore - Advanced features</title>
<link rel="stylesheet" type="text/css" href="docstyle.css" />
</head>
 
<body>
 
 
<h1>singapore - Advanced features</h1>
 
<ul>
<li><a href="#iifn">Info in filename</a></li>
<li><a href="#override">Overriding settings</a></li>
<li><a href="#hiding">Hiding galleries</a></li>
<li><a href="#modrewrite">Using Apache mod_rewrite</a></li>
<li><a href="#including">Including singapore into another page</a></li>
<li><a href="#popup">Opening images in a popup</a></li>
<li><a href="Readme.html">General readme</a></li>
<li><a href="Development.html">Developer documentation</a></li>
<li><a href="Translation.html">Translating singapore</a></li>
</ul>
 
<h2><a name="iifn">Info in file name</a></h2>
 
<p>If singapore doesn't find a metadata file in a gallery it will try to
extract some sensible information from the image file and directory names as
follows:</p>
 
<p>Underscores (_) are converted to spaces and the file extension is discarded
by removing all characters after the last . (dot) in the filename. If a filename or
directory name contains the sequence '<code>_-_</code>' (underscore hyphen underscore)
or '<code> - </code>' (space hyphen space) then the name will be split on this
separator. The first half will be interpreted as the artist name and the second
half will be interpreted as the gallery or image name depending on context. If
a separator is not found then the file or directory name is interpreted as the
image or gallery name, respectively.</p>
 
<p>For example <code>Holiday_Snaps/Bob_Fenderson_-_Pretty_picture_of_Sunset.jpg</code>
will be translated into an image called "Pretty picture of Sunset" by "Bob
Fenderson" in a gallery called "Holiday Snaps".</p>
 
 
<h2><a name="override">Overriding settings</a></h2>
 
<p>All configuration options may be overridden on a per-gallery and/or
per-template basis. This means that a particular gallery may use, for example,
a different template or language to the rest of the site. Also, templates may
introduce their own configuration settings if they so wish.</p>
 
<p>Gallery config options are stored in files named <code>gallery.ini</code> in
the chosen gallery directory. Settings are not inherited by subgalleries; they
affect only the current gallery and its images.</p>
 
<p>Template config options are stored in files named <code>template.ini</code>
in the chosen template directory. Some of these settings are not present in the
default config file; they are only found in the template config file.</p>
 
<p>Settings are loaded in this order: default settings (<code>singapore.ini</code>)
&gt; gallery settings (<code>gallery.ini</code>) &gt; template settings
(<code>template.ini</code>). This may be changed in the future to allow gallery
settings to override template settings.</p>
 
<p>Note that there is no restriction on which options may be overridden.
Overriding some settings may lead to unpredictable operation (e.g. changing
<code>pathto_galleries</code> in <code>gallery.ini</code>).</p>
 
 
<h2><a name="hiding">Hiding galleries</a></h2>
 
<p>Any gallery (except the root gallery) may be hidden from the listing view
by prefixing the directory name with a dot (<code>.</code>). However it is still
accessible by using its exact URL. For example consider the following directory
structure:</p>
 
<pre>
galleries/
|- my_pretty_pictures/
| |- trees/
| `- flowers/
|- .a_hidden_gallery/
| |- some_embarrassing_pictures/
| `- .this_is_also_hidden/
`- some_other_things/
</pre>
 
<p>A user browsing the root gallery (e.g. <code>www.example.com/?gallery=.</code>)
will see <code>my_pretty_pictures</code> and <code>some_other_things</code>;
<code>.a_hidden_gallery</code> and all its contents will be hidden from view. If,
however, the user is supplied with the exact URL (e.g. <code>www.example.com/?gallery=./.a_hidden_gallery</code>)
they will be able to see the contents as usual (in this case only
<code>some_embarrassing_pictures</code> because <code>.this_is_also_hidden</code>
is hidden as above).</p>
 
<p>Since a user could guess the exact URL or discover it by some other means,
this feature is not to be used for concealing sensitive information.</p>
 
<p>NOTE: see the <a href="#modrewrite">mod_rewrite</a> section for instructions
on renaming files starting with a . on Windows.</a></p>
 
 
<h2><a name="modrewrite">Using Apache mod_rewrite</a></h2>
 
<p>Firstly you need to ensure that mod_rewrite is available. You must be running
<a href="http://httpd.apache.org/">Apache</a>, have mod-rewrite installed and
enabled and furthermore be allowed to override Apache configuration directives
on a per-directory basis with the use of .htaccess files.</p>
 
<p>If you don't know the answer to the above then probably the easiest way to
find out is to try the following instructions.</p>
 
<p>First copy <code>tools/mod_rewrite.htaccess</code> to the singapore base
directory and rename it to simply <code>.htaccess</code>. Note: Windows shines
here as a Totally Idiotic Operating System&reg; as it will not let you type
filenames starting with a . kindly saying "You must type a filename". The only
way that I know of to get around this totally pointless message is to drop into
the command line and use <code>ren</code> to rename it. Aaaaaaaarrrrgggghhhh!</p>
 
<p>Moving swiftly on...</p>
 
<p>You now need to edit singapore.ini and turn on <code>use_mod_rerwite</code>.
You also need to specify the <code>base_url</code> option. Set this to the full
web absolute path to your installation (e.g. the bit after the .com, .org or
whatever). For example if your gallery is accessed by typing
www.example.com/singapore/ then the <code>base_url</code> is
<code>/singapore/</code>.</p>
 
<p>Lastly you need to edit the .htaccess file. On each of the two lines starting
<code>RewriteRule</code>, about half way along the line there is a
<code>/singapore/</code>. Change this to whatever you put as the <code>base_url</code>
above.</p>
 
<h3>If it doesn't work</h3>
 
<p>If you get <em>404 File Not Found</em> errors then either mod_rewrite or .htaccess
files are not enabled. If you get singapore <em>Gallery not found</em> errors
then there might be a problem with the rewrite rules. If you get unstyled
singapore pages with no images then then your base_path is probably wrong. If do
get images but the pages are still unstyled then your template probably needs
adapting to use the base_url config option. See the default template for an
example. If you still can't work out what's wrong then just give up :P</p>
 
<h2><a name="including">Including singapore into another page</a></h2>
 
<p>Since v0.9.10 it has been possible to include singapore into your web design
using external.php. Just place this code where you want singapore to appear:
<code>&lt;?php include("path/to/singapore/external.php");?&gt;</code> (supplying
the correct relative or absolute path to singapore instead of
'/path/to/singapore'). There are, however, a few things that need to be noted:</p>
 
<ul>
<li>You will almost certainly need to edit your chosen template in order that
the HTML generated is still valid. For example you do not want two &lt;html&gt;
start tags, two &lt;head&gt; sections etc. Alternatively you can use the
<em>external</em> template (available to download from the website) which is
the default template with the unnecessary (X)HTML removed.</li>
<li>If the file into which you are including singapore is named something
other than index.php or it requires additional GET variables (such as page etc.)
then you will need to change index_file_url to reflect this. For example if
the page you are including singapore into is <code>site.php?page=gallery</code>
you will need to change index_file_url to <code>site.php?page=gallery&amp;amp;</code></li>
<li>If you want to keep both the included singapore installation and the
original simultaneously functional then you can place a file named
<code>singapore.local.ini</code> in the same directory as the including file.
If found, this file will be loaded after singapore.ini but before gallery.ini
and template.ini. It can thus be used to provide local settings such as index_file_url
mentioned above. Note that base_file and base_url are automatically calculated
and should not need to be specified.</li>
<li>If there is any content on the including page <em>before</em> external.php is
included then singapore will not be able to send any headers which will
prevent you from using languages with non-default character sets. The
recommended solution is to turn on output buffering before any content is
output and do not flush it until after external.php is included. Essentially
a call to <code>ob_start()</code> at the beginning of the including file is
all that is needed. <a href="http://uk.php.net/manual/en/ref.outcontrol.php">About
output control</a>.</li>
<li>Currently mod_rewrite doesn't work with such included installations of singapore.</li>
</ul>
 
<h2><a name="popup">Opening images in a popup</a></h2>
 
<p>Firstly I must say how much I disapprove of popups. If someone wants to open
something in a new window THEY WILL DO IT THEMSELVES! Why do you think so many
people have popup blockers? POPUPS ARE BAD! However I have been asked how to
make singapore open images in popup windows so often that I finally yielded and
wrote a little bit of JavaScript to do it neatly.</p>
 
<p>Open album.tpl.php in the directory of your current template (e.g.
templates/default/album.tpl.php) and replace <code>$sg-&gt;gallery-&gt;images[$index]-&gt;thumbnailLink()</code>
with <code>$sg-&gt;gallery-&gt;images[$index]-&gt;thumbnailPopupLink()</code>. But don't do it. It's bad.<p>
 
<p>Evil I tell you...</p>
 
<p><em>$Date: 2006/08/06 13:50:20 $</em></p>
 
</body>
</html>
/photogallery/docs/Development.html
0,0 → 1,114
<!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">
<head>
<title>singapore - Development</title>
<link rel="stylesheet" type="text/css" href="docstyle.css" />
</head>
 
<body>
 
<h1>singapore - Development</h1>
 
<p>The information in this file is for people who wish to contribute to
singapore, modify it or understand how it works.</p>
 
<ul>
<li><a href="#csvformat">CSV database format</a></li>
<li><a href="Readme.html">General readme</a></li>
<li><a href="Advanced.html">Advanced features</a></li>
<li><a href="Translation.html">Translating singapore</a></li>
</ul>
 
<h2><a name="csvformat">CSV database format</a></h2>
 
<p>If you choose to use metadata files then each gallery must
contain a CSV (comma separated values) file called metadata.csv
containing the information about images in the gallery and the gallery itself.
CSV files can be edited manually (in a text editor such as Notepad)
or using a spreadsheet application (such as MS Excel). Care must be taken when using
Excel to save using commas as the separator character and not tabs or semi-colons.</p>
 
<p>The first line of each file stores human-readable descriptions of the fields
and is ignored by singapore. The second line stores information about this
gallery:</p>
 
<pre>
field 0
the filename of the image used to represent the gallery in the gallery list
field 1
(not used)
field 2
the owner of the gallery
field 3
space-separated list of usergroups
field 4
gallery permission flags
field 5
space-separated list of categories the gallery belongs in (not used)
field 6
gallery name/title
field 7
artist name (optional)
field 8
artist email (optional)
field 9
copyright holder (optional)
field 10
description of the gallery (optional)
field 11
short summary of the gallery (optional)
field 12
human-readable date (optional)
field 13 onwards
(not used)
</pre>
 
<p>Each of the following lines (3 - ...) represents an image in the gallery.
The format is as follows:</p>
 
<pre>
field 0
the filename of the image
field 1
the filename of the thumbnail image
field 2
the owner of the image
field 3
space-separated list of usergroups
field 4
image permission flags
field 5
space-separated list of categories the image belongs in (not used)
field 6
image name/title
field 7
artist name (optional)
field 8
artist email (optional)
field 9
copyright holder (optional)
field 10
description of the image (optional)
field 11
location that the image was taken/made/represents (optional)
field 12
date taken/made (optional)
field 13
make and model of camera used (optional)
field 14
make and model of lens used (optional)
field 15
make and type of film used (optional)
field 16
darkroom manipulation (optional)
field 17
digital manipulation (optional)
</pre>
 
<p><em>$Date: 2004/10/15 18:53:36 $</em></p>
 
</body>
</html>
/photogallery/docs/License.txt
0,0 → 1,340
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
 
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
 
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
 
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
 
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
 
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
 
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
 
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
 
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
 
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
 
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
 
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
 
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
 
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
 
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
 
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
 
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
 
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
 
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
 
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
 
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
 
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
 
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
 
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
 
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
 
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
 
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
 
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
 
NO WARRANTY
 
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
 
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
 
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
 
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
 
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 
Also add information on how to contact you by electronic and paper mail.
 
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
 
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
 
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
 
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
 
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
 
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
/photogallery/docs/Readme.html
0,0 → 1,599
<!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">
<head>
<title>singapore - Readme</title>
<link rel="stylesheet" type="text/css" href="docstyle.css" />
</head>
 
<body>
 
 
<h1>singapore v0.10.1 - Readme</h1>
 
<ul>
<li><a href="#release">Release notes</a></li>
<li><a href="#history">Version history</a></li>
<li><a href="#license">License information</a></li>
<li><a href="#install">Installation</a></li>
<li><a href="#upgrade">Upgrading</a></li>
<li><a href="#managing">Gallery management</a></li>
<li><a href="#permissions">Help with file permissions</a></li>
<li><a href="#adminpermissions">The deal with admin permissions</a></li>
<li><a href="#users">Managing users</a></li>
<li><a href="#nomenclature">Naming of parts (glossary)</a></li>
<li><a href="Advanced.html">Advanced features</a></li>
<li><a href="Development.html">Developer documentation</a></li>
<li><a href="Translation.html">Translating singapore</a></li>
</ul>
 
 
<h2><a name="license">Licensing information</a></h2>
 
<pre>
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
* <a href="http://www.sgal.org/">singapore</a> - Copyright 2002-6 Tamlyn Rhodes &lt;tam@zenology.co.uk&gt; *
* *
* singapore is free software; you can redistribute it and/or modify *
* it under the terms of the <a href="License.txt">GNU General Public License</a> as published *
* by the Free Software Foundation; either version 2 of the License, *
* or (at your option) any later version. *
* *
* singapore 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; if not, write to the Free Software Foundation, *
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
</pre>
 
<p>You are kindly requested to display a link such as the following on all
pages generated by singapore. However in cases where this is not desirable,
a project donation of 20USD is considered a suitable alternative.</p>
 
<p class="boxed">Powered by <a href="http://www.sgal.org/">singapore</a></p>
 
 
<h2><a name="release">Release notes</a></h2>
 
<p>This is a recommended update as it addresses a critical bug in the
template handling that could allow an attacker to view the contents of system
files on the web server. Several other less severe bugs have been fixed
including acces control settings inheritance in the admin which should now
work correctly. The latest version of the 'modern' template is also included.</p>
 
 
<h2><a name="install">Installation</a></h2>
 
<ol>
<li>Extract all the files in the archive, conserving the directory hierarchy.</li>
<li>If you wish to change any path settings or use one of the SQL backends,
make the necessary changes to <code>singapore.ini</code>. If you don't know
why you might want to do this then you don't need to do it.</li>
 
<li>Upload everything to your web server.</li>
<li>Set file permissions. The directories that need to be made writable are:
<ul>
<li><code>data/</code> and all subdirectories and files</li>
<li><code>galleries/</code> and all subdirectories and files</li>
</ul>
<a href="#permissions">Help with file permissions</a>.
</li>
<li>Point your browser to the <code>install/</code> directory and follow the instructions.</li>
<li>Delete the <code>install/</code> directory to prevent unauthorised access.</li>
<li>Log into the admin section and change the password. The username is
<code>admin</code> and the default password is <code>password</code>.</li>
<li>You're ready to roll! <a href="#managing">More info on how to roll...</a></li>
</ol>
 
<p>Optional but recommended:</p>
<ul>
<li>Have a browse through <code>singapore.ini</code> and look at the
available options. Each option has comments explaining its function. For most
purposes the default values will be fine but you may be able to tweak them
to your benefit. See also <a href="Advanced.html#override">overriding default
settings</a>.</li>
<li>Make your own header image (<code>templates/default/images/header.gif</code>)
with the name of your site.<br />
-or-<br />
Edit the default style sheet (<code>templates/default/main.css</code>)
to integrate it with your site.<br />
-or-<br />
Browse the pre-existing templates available for singapore on the
<a href="http://www.sgal.org/wiki/files/templates">templates</a> page.
-or-<br />
Create your own template by editing an existing one. There is currently no
documentation on this topic but anyone with a basic grasp of PHP should be
able to work it out. Visit the
<a href="http://www.sgal.org/forum/viewforum.php?id=2">templates forum</a>
for help and advice.</li>
</ul>
 
 
<h2><a name="upgrade">Upgrading</a></h2>
 
<p>Always back-up first!</p>
 
<p>A patch is also available for people wishing only to fix the security problem.</p>
 
<p>Upgrading is usually just a matter of unzipping the new version over the old.
Your galleries, images, metadata will not be affected but the
admin password will be reset and the root ini file (singapore.ini) will be
overwritten. The location of log files and thumbnail cache has changed in this
version. See the forum for
<a href="http://www.sgal.org/forum/viewtopic.php?id=1267">instructions on
copying your old logs over to their new location</a>.
You can keep your old users.csv.php file.
When new configuration options are added you will need to either add these
to your old singapore.ini or re-edit the new singapore.ini in order to keep your
personal settings. You may want to use a file difference utility such as
<a href="http://winmerge.sourceforge.net">WinMerge</a> to merge the differences.</p>
 
<p>The default templates will also be overwritten in an upgrade. For this reason
it is advisable to copy the default template to a new directory when making
customisations.</p>
 
 
<h2><a name="uninstall">Uninstallation</a></h2>
 
<p>Server generated content may be owned by the web server and it may therefore
not be possible to delete these files via ftp. Use the
<a href="../tools/cleanup.php">cleanup script</a> to make all server-generated
files world writable. This should allow you to delete them like any other file.</p>
 
 
<h2><a name="managing">Managing your galleries</a></h2>
 
<p>If using the <a href="Advanced.html#iifn">info in file name</a> system then
all management can be done
directly on the files using, for example, an ftp client. To create new galleries
simply create a new subdirectory of <code>galleries/</code>. To add, move or delete
images in a gallery simply add, move or delete the image files in the
appropriate directory.</p>
 
<p>If you use the admin mode to edit your galleries or images it will
automatically create the relevant metadata files. If these files are deleted
singapore will revert to using <em>info in file name</em>. The username is
<code>admin</code> and the default password is <code>password</code>.</p>
 
<p>Galleries may contain <em>either</em> images or further galleries. This
means that if you create one or more child galleries in a gallery that already
contains images, these images will be 'hidden'. Removing these child galleries
will make the images visible again. Galleries containing only images are called
albums.</p>
 
 
<h3>Bulk image uploading</h3>
 
<p class="note">NOTE: this feature is experimental. It works on some servers but
does not on others (including the sf.net servers) and I don't know why. It may
or may not work for you.</p>
 
<p>You may upload several images at the same time by first storing them in a
PKWARE compatible ZIP file. Most archiving utilities are able to produce such
files also sometimes referred to as <em>compressed folders</em> on Windows. You
need an unzipping utility on your server to use this feature. Most Linux/Unix
machines come with the free <em>unzip</em> utility by Info-Zip preinstalled but
precompiled binaries for nearly all operating systems ever conceived can be
found on the <a href="http://www.info-zip.org/">Info-Zip website</a>. <!--A Win32
version is also available here:
<a href="http://singapore.sourceforge.net/binaries/singapore-unzip-Win32.zip">http://singapore.sourceforge.net/binaries/singapore-unzip-Win32.zip</a>.-->
Simply place the executable in your PATH or in the singapore root directory.</p>
 
<p>Upload the archive using the 'new image' option in the singapore admin and
select 'Upload multiple files'</p>
 
<p>If the archive contains only images, these will be added to the current
gallery just as if they had been uploaded individually. If an archive contains
subdirectories, these will be copied into the current gallery. Any images in
the archive root directory will be imported as above. This mechanism
may be used to upload complete directory structures including metadata.csv
and gallery.ini files. If the archive root directory contains no images and a
single directory, singapore will navigate into this directory and proceed to
import the contents into the current gallery as though they were in the root
directory.</p>
 
<p>NOTE: There is a maximum size of file that PHP will allow you to upload.
This defaults to 2MB and cannot be changed by singapore. Consult the PHP manual
or you server's administrator for more information.</p>
 
<h2><a name="permissions">Help with file permissions</a></h2>
 
<p>How to make a file writable is dependent on your operating system and
web server setup and can seem quite daunting for a beginner. One option that
will work on nearly all Unix/Linux servers is to chmod the relevant
files/directories to 777 (consult your FTP software documentation for help on
using the chmod command). However this option is not considered very secure as
anyone who has write access the web server (such as the owners of other web
sites hosted on the same computer) can potentially write to or delete these
directories. There may be a better way to make your files writable by your
server but this is something you must take up with your server administrator.</p>
 
 
<h2><a name="adminpermissions">The deal with admin permissions</a></h2>
 
<p>First thing to point out is that singapore admin permissions are not related
to unix/windows filesystem permissions. If you get a "permission denied" message
from php about a certain file, that's the filesystem permissions discussed in a
<a href="#permissions">separate section</a>. For the purposes of this section an
'object' is anything that can have admin permissions associated with it; i.e. an
image or a gallery.</p>
 
<p>There are two types of users: administrators and users. Administrators can do
everything and are not bound by permission settings. Only administrators may
create and edit users and change ownership of objects. Ownership is set at the
time of creation of the object to the user creating the object. The owner of an
object may do anything to it except change the owner. Only the owner or an
administrator may alter the permissions of an object, including changing its
group(s).</p>
 
<p>There are four kinds of action that may be either allowed or disallowed:
read, edit, add and delete. Read permissions allow an object to be viewed. Edit
permissions allow a user to edit (i.e. change) aspects of the object. Add
permissions allow a user to add sub objects (i.e. images and subgalleries). This
is obviously meaningless when applied to images but it may be used later to
allow image comments. Finally Delete permissions allow a user to delete the
object concerned (and any sub objects).</p>
 
<p>These four permissions come in two flavours: group and world. World
permissions apply to all users so if, for example, a gallery has the world add
permission set then any user can add objects to it. The groups system is
slightly less intuitive but very powerful. A user may belong to any number of
groups. These groups are simply alphanumeric names separated by spaces. An
object may also belong to any number of groups. If a user belongs to at least
one group to which the object concerned also belongs then the group permissions
are considered. For example a user has this for their groups field "team23
photographers friends" and an image belongs to the following groups "friends
family" and has the group delete permission set then that user may delete the
object since both belong to the group 'friends'.</p>
 
<p>Permissions are NOT inherited from parent objects.</p>
 
<p class="note">NOTE: read permissions are not currently enforced, a future
version will prevent anyone from seeing objects that do not have sufficient read
permissions. Note also that there is no mechanism to set image permissions this
will be amended in a later release. Finally, since there is no database
concurrency handling, odd things might happen if two users are making changes
to the same gallery or image simultaneously.</p>
 
 
<h2><a name="users">Managing users</a></h2>
 
<p>As mentioned above there are two types of users: administrators and users.
Administrators can do everything and are not bound by permission settings. Only
administrators may create and edit users. Administrators may also edit existing
users' details including changing their passwords though, of course, they cannot
view their existing passwords.</p>
 
<p>Users may also be suspended. This preserves all the user's details but
prevents them from loggin in until their account is unsuspended by an
administrator.</p>
 
<p>There are two built-in accounts that cannot be deleted. The "admin" account
is an administrator. The "guest" account is special. It is like a user account
except that guests have no password, cannot change their details and cannot own
objects. This means guests can only affect objects with the appropriate world
permissions set. Any object created by a guest is owned by the special user
"__nobody__" and has full read, edit, add and delete permissions for both world
and group. You may disable guest access to your gallery by suspending the guest
user.</p>
 
 
<h2><a name="nomenclature">Naming of parts</a></h2>
 
<dl>
 
<dt>Installation</dt>
<dd>an installation of singapore is contained within a website. It is usually
in its own separate directory and contains one gallery: the root gallery.</dd>
<dt>Root gallery</dt>
<dd>There is only one root gallery and it is not contained within any other
galleries. It is located directly in the directory specified by the
<code>pathto_galleries</code> option. It is usually referred to in URLs with a
single dot (as in <code>?gallery=.</code>).</dd>
<dt>Gallery</dt>
<dd>a gallery is contained within another gallery (except the root gallery
which is contained in an installation). Galleries may contain more galleries
and also images.</dd>
 
<dt>Album</dt>
<dd>an album is a special case of gallery that contains exactly zero
galleries and zero or more images. In other words a gallery is called an
album when it does not have any child galleries. So an album is a gallery
but a gallery is not an album in much the same way that a kitchen is a room
but a room is not a kitchen.</dd>
 
<dt>Image</dt>
<dd>an image is contained within an album or a gallery. Due to the way
singapore operates, images will only be displayed if they are in albums since
any images in non-album galleries will be hidden.</dd>
 
<dt>Child gallery (also known as subgallery)</dt>
<dd>this is a relative term. A child gallery is one contained within the
gallery currently being viewed or edited. There may be zero or more.</dd>
<dt>Parent gallery</dt>
<dd>this is a relative term. The parent gallery is the one which contains the
gallery currently being viewed or edited. There is always exactly one (except
in the case of the root gallery which has no parent).</dd>
</dl>
 
<h2><a name="history">Version history</a></h2>
 
<pre>Key to symbols:
+ added
- removed
* fixed
o changed
</pre>
 
<p>A complete and up-to-date CVS changelog is
<a href="http://www.sgal.org/cvsdemo/ChangeLog">available online</a>.</p>
 
<h3>0.10.1 - 2006-09-20</h3>
 
<pre>
* fixed template security issue
+ access control settings are inherited by child galleries
* fixed image hits total
o updated modern template (see separate changelog)
</pre>
 
<h3>0.10.0 - 2006-05-17</h3>
 
<pre>
o code is now more object oriented and easier to understand
+ added safe_mode hack using FTP
+ can move &amp; copy galleries in admin
+ can batch delete images and galleries in admin
o thumbnails and logs stored in each gallery
+ thumbnails created on page load and statically linked
+ ancestor metadata is parsed for crumb line
o removed leading ./ from gallery id in urls
+ next and previous gallery links
+ 'up' links to correct page of parent gallery
* base_path and base_url are no longer overwritten by external.php
* fixed eastern european characters in data fields
* fixed new lines in summary field
* fixed image resizing bug when image size equals maxsize
* fixed imagemagick v6.x support
* fixed session.auto_start bug (aka login loop)
* fixed XSS vulnerability in template &amp; language flippers
+ added sort by date field to galleries
o rewritten hit logging code
o added explicit chmod's instead of relying on umask
o new admin error handling in preparetion for our new admin backend
</pre>
 
<h3>0.9.11 - 2004-12-15</h3>
 
<pre>
+ added SQL abstraction backend with support for MySQL and SQLite
o changed IO class hierarchy
o streamlined install process
+ separated editprofile from edituser
* fixed multiple vulnerabilities (thanks to SIG^2)
+ added allow_dir_upload config option
</pre>
 
<h3>0.9.10 - 2004-10-20</h3>
 
<pre>
+ implemented full multi-user support with permissions
+ reindex metadata feature in admin for importing ftp'd images
+ language and template are now user-selectable on-the-fly
+ language may be auto-detected from user agent headers
+ summary field now used instead of description field
o introduced new streamlined admin template with quicklinks
o tidied up css classes and annotated the default stylesheet
* fixed md5 dictionary attack vulnerability by hiding user account details
* fixed security issue with back-references in arguments to thumb.php
o made thumb.php reject files with extensions not in recognised_extensions
o changed base_file config option to index_file_url
o changed language config option to default_language
o changed template_name config option to default_template
+ new external.php file for integrating singapore into existing layouts
</pre>
 
<h3>0.9.9b - 2004-08-08</h3>
 
<pre>
* fixed image size calculation (again)
</pre>
 
<h3>0.9.9a - 2004-06-11</h3>
 
<pre>
* fixed multi-page galleries bug in templates
* fixed XHTML compliance
* fixed image size calculation
* possibly other things
</pre>
 
<h3>0.9.9 - 2004-05-15</h3>
 
<pre>
+ added multi-image upload using ZIP files
+ added fixed size and aspect ratio thumbnail creation
* fixed umask functionality (thanks to afuhrmann)
+ added navigation by clickable image map
+ added upload_overwrite config option
o moved url generation into separate function(s) (acsissman)
+ enabled use of mod_rewrite with appropriate .htaccess (acsissman)
+ added progressive jpeg option (thanks to joeforker)
o moved i18n functions into separate class
* made site navigation links xhtml compatible
* fixed special characters in filenames under ImageMagick *again*?
o introduced consistent 'gallery>album>image' naming scheme
o GD2 used as default thumbnail_software (GD1 support unaffected)
</pre>
 
<h3>0.9.8 - 2004-01-06</h3>
 
<pre>
+ automatic recognition of most URLs in 'description' field
+ do not process directories starting with dot (.)
+ enabled navigation bar in supporting browsers (e.g. mozilla, opera)
o made 'artist - name' iifn parsing optional
* fixed bizarre sort order in admin mode
* use htmlspecialchars instead of htmlentities
* fixed using special chars in filenames when magic_quotes_gpc is on (again)
* fixed code that produced 'Notice' level errors with PHP 5
</pre>
 
<h3>0.9.7 - 2003-11-17</h3>
 
<pre>
+ added forced image resizing to fixed size
+ added rudimentary image and gallery sort ordering
* fixed multi-page galleries listings
* fixed zero-width thumbnails for failed uploads
+ added a few functions useful for templates
+ added .jpe extension
o changed details array format
+ added basePath parameter to allow removed instantiation of singapore class
o fixed some untranslated strings in admin mode
* maybe fixed using special chars in filenames when magic_quotes_gpc is on
+ added back-reference check to prevent file-system walking
o merged __g functionality into _g and _ng
</pre>
 
<h3>0.9.6 - 2003-08-15</h3>
 
<pre>
o code entirely reorganised and largely re-written into classes
+ multilanguage (i18n) support
o interface is template driven
+ per-gallery and per-template configuration files
+ nested gallery support (unlimited depth)
+ crumb line for easier navigation
* all image and gallery names are now urlencoded
+ many new config options
</pre>
 
<h3>0.9.5 - 2003-05-31</h3>
 
<pre>
* fixed GD2 support in thumb.php (0.9.4a always used GD1)
- removed secret string option
+ added config options for admin session name (allows multiple installs on same server),
path to convert (ImageMagick), remove jpeg profile (ImageMagick),
character encoding &amp; site name (page title)
o execution_timer off by default and default galleries per page set to 10
+ thumb.php always uses fopen on remote files (now works on windows)
+ more checks in test.php including ImageMagick support and bugfix #743954 (upload_tmp_dir)
</pre>
 
<h3>0.9.4a - 2003-05-16</h3>
 
<pre>
+ added PNG and GIF support under GD (GIF only with compatible versions of GD)
+ added PNG, GIF, TIFF, BMP, and support from pretty much every
other file type under ImageMagick
+ more checks in test.php
* fixed image counting in iifn mode
* fixed show_image_name_in_thumbnail_view
+ images link back to correct page of gallery (second link)
</pre>
 
<h3>0.9.4 - 2003-05-13</h3>
 
<pre>
o changed config to ini file + global config object
o changed directory structure (moved documentation into docs/, moved writable files into data/)
+ gallery (thumbnail) view shows more information
+ gallery (thumbnail) view can show image name under thumbnail (off by default)
+ gallery (list) view shows number of images in gallery
+ implemented random thumbnail image in gallery (list) view
+ added test.php and setup.php (not very useful yet)
* fixed handling of gallery_thumb_number config option
* password change bug
* remote file thumbnail generation with ImageMagick
</pre>
 
<h3>0.9.3 - 2003-05-10</h3>
 
<pre>
+ web admin can add and delete images and galleries
+ added GD 2 and ImageMagic thumbnail generation support
* does not generate any E_NOTICE errors anymore
+ added config option for generated thumbnail JPEG quality
* handles extended characters in gallery and image names (Piotr)
* fixed 'images link back to correct page of gallery'
+ added directory_mode and file_mode options
* track_views and show_views now work independently
o admin bar now visible everywhere when logged in
</pre>
 
<h3>0.9.2 - 2003-04-27</h3>
 
<pre>
* fixed non-expiration of admin sessions in some cases
+ added purge cached thumbnails option
+ new 'XP' theme
* fixed hit logging functions
+ added image hit log viewing in admin mode
+ images link back to correct page of gallery
o optimised config.php
* fixed some css issues
</pre>
 
<h3>0.9.1 - 2003-04-23</h3>
 
<pre>
o changed database format
+ added visible database fields for artist email, darkroom manipulation and
digital manipulation
+ added invisible (control) database fields for thumbnail, owner, groups and categories
o put header and footer code into separate files
+ implemented limited themeing support
+ added config options for custom paths to cache, galleries, logs, themes,
header, footer and custom css
o improved navigation in admin mode
+ added optional script execution timer
* fixed proliferation of newlines in 'desc' field
* fixed wrongly escaped characters when saving info
</pre>
 
<h3>0.9a - 2003-04-13</h3>
 
<pre>
+ added much better documentation
</pre>
 
<h3>0.9 - 2003-03-30</h3>
 
<pre>
+ admin section (allows editing image and gallery info)
+ nicer gallery list layout
+ filename parser for if no metadata file found
o split into separate include files for io operations, ui generation etc
* fixed some css issues
+ lots of other little things
</pre>
 
<h3>0.0 (unnumbered version) - 2003-03-29</h3>
 
<pre>
o first release under GPL
+ everything
</pre>
 
<p><em>$Date: 2006/05/18 16:14:20 $</em></p>
 
</body>
</html>
/photogallery/docs/Translation.html
0,0 → 1,526
<!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">
<head>
<title>singapore - Translation</title>
<link rel="stylesheet" type="text/css" href="docstyle.css" />
</head>
 
<body>
 
<h1>singapore - Translation</h1>
 
<ul>
<li><a href="#intro">Introduction</a></li>
<li><a href="#requirements">Requirements</a></li>
<li><a href="#update">Updating a translation</a></li>
<li><a href="#new">Starting a new translation</a></li>
<li><a href="#header">Filling in the header section</a></li>
<li><a href="#plurals">Plural forms</a></li>
<li><a href="#links">Useful links</a></li>
<li><a href="Readme.html">General readme</a></li>
<li><a href="Advanced.html">Advanced features</a></li>
<li><a href="Development.html">Developer documentation</a></li>
</ul>
 
 
<h2><a name="intro">Introduction</a></h2>
 
<p>Thank you for taking an interest in open source development!
Translating singapore is a matter of editing a single file and
then running a script on it. What could be simpler?</p>
 
<p>Language strings are stored in standard GNU Gettext PO (portable object)
files which means you can (at least in theory <a href="#foot1" name="note1"><sup>1</sup></a>)
use all currently available PO editors such as
<a href="http://poedit.sourceforge.net/">poEdit</a> to make your
translations.</p>
 
<p>For added convenience strings for each language are split into two sections:
one for normal gallery operation and another for strings that are only used in
admin mode. This means that admin strings are not needlessly loaded for every
page and also that translators have the choice of only translating the standard
strings or going the whole way and translating the admin strings too.</p>
 
<p>It is a good idea for all translators and potential translators to join the
<a href="http://lists.sourceforge.net/lists/listinfo/singapore-devel">development
mailing list</a>. Use this, the
<a href="http://singapore.sourceforge.net/forum/viewforum.php?f=6">internationalisation forum</a>
and the
<a href="http://sourceforge.net/tracker/?atid=611769&group_id=77687">translations tracker</a>
to interact with other translators and developers.</p>
 
<p class="boxed"><a href="#note1" name="foot1">1</a>The reason for the "in theory"
is that many PO editors do not support the plural forms that singapore makes use
of - even though they are defined and supported by GNU Gettext. poEdit does
support plural forms since v1.3 and is highly recommended. Alternatively it is
just as easy to use a standard text editor to make your translations.</p>
 
<h2><a name="requirements">Requirements</a></h2>
 
<p>No further software is required for using the multilanguage capabilities of
singapore. However the extract and merge tools use xgettext and msgmerge
respectively. Both these programs are part of GNU Gettext which is already
installed on most Linux distributions. A package of the relevant gettext
binaries for Windows is available here:
<a href="http://singapore.sourceforge.net/binaries/singapore-gettext-Win32.zip">http://singapore.sourceforge.net/binaries/singapore-gettext-Win32.zip</a>.
The path to xgettext is stored in <code>tools/extract.php</code> and the path to
msgmerge is stored in <code>tools/merge.php</code>. However if the gettext programs
are in your PATH or in the <code>tools/</code> directory itself then you do not
need to edit anything.</p>
 
 
<h2><a name="update">Updating a translation</a></h2>
 
<p>Each singapore release requires the language files to be updated slightly.
First make sure you have the latest available translation (the
<a href="http://sourceforge.net/tracker/?atid=611769&group_id=77687">translations tracker</a>
is a good place to check for this). Now you need to merge in the new untranslated
strings and remove the obsolete ones (this may have already been done
but there's no harm in doing it again). Place the old PO file in the locale
directory of an installation of the latest version of singapore and use the
<a href="../tools/merge.php">merge</a> script provided.</p>
 
<p>Now proceed translating the strings as described below. Finally, attach the
updated PO file to the appropriate tracker item making sure to state which
version of singapore it is for.</p>
 
 
<h2><a name="new">Starting a new translation</a></h2>
 
<p>The very first thing to do is submit a tracker item on the
<a href="http://sourceforge.net/tracker/?atid=611769&group_id=77687">translations tracker</a>
to inform people of your intentions so that two or more people do not needlessly
spend time translating the same files for the same language. Once you have
completed your translations you can attach the files to the tracker item.</p>
 
<p>All language files are kept in a single directory (<code>locale/</code> by
default). They are named as follows:</p>
 
<ul>
<li><code>singapore.pot</code> -
untranslated standard language strings template in PO format</li>
<li><code>singapore.admin.pot</code> -
untranslated admin language strings template in PO format</li>
<li><code>singapore.<em>LANG</em>.po</code> -
translated standard language strings in PO format</li>
<li><code>singapore.admin.<em>LANG</em>.po</code> -
translated admin language strings in PO format</li>
<li><code>singapore.<em>LANG</em>.pmo</code> -
translated standard strings as compiled PHP serialized object</li>
<li><code>singapore.admin.<em>LANG</em>.pmo</code> -
translated admin strings as compiled PHP serialized object</li>
</ul>
 
<p>where <code><em>LANG</em></code> represents the ISO639 language code of the chosen
language (e.g. <code>de</code> for German, <code>en</code> for English,
<code>en-gb</code> for English (United Kingdom)). A more comprehensive list of
language codes may be found here:
<a href="http://www.rickbull.co.uk/tutorials/HTML/Useful%20Information/language_codes.php">http://www.rickbull.co.uk/tutorials/HTML/Useful%20Information/language_codes.php</a></p>
 
<p>Start by copying a PO template file (<code>singapore.pot</code> if you
are translating the standard strings or <code>singapore.admin.pot</code> if you
are translating the admin strings) and naming it appropriately for your language
as described above. Now open the file in your chosen PO editor or a plain text
editor and set about translating the strings.</p>
 
<p>You also need to fill in certain parts of the <a href="#header">PO file
header</a>. You may do this at any stage of the translation.</p>
 
<p>NOTES:</p>
 
<ol>
<li>Strings in the form "crumb line|You are here:"<br />
In these cases the text up to and including the vertical bar, |, should NOT
be included in the translation. They are simply hints for the translator.</li>
<li>Strings in the form "Showing %s-%s of %s"<br />
In these cases each %s will be replaced at runtime by a number or string in
order from left to right according to the rules of <code>printf()</code>.
Essentially each %s is a placeholder and so needs to be present at the
appropriate place in the translated string.<br />
However some languages may require the order of the arguments to be changed.
For example if instead of "Showing 1-10 of 15" you want to say
"Out of 15 objects 1-10 are shown" then you must use the argument swapping
syntax of <code>printf()</code>. More details on this may be found here:
<a href="http://www.php.net/sprintf">http://www.php.net/sprintf</a></li>
<li>Strings with plurals<br />
You must correctly specify the <a href="#plurals">Plural-forms</a> header field
in order to make use of plural forms. Put each plural in its own
<code>msgstr[<em>x</em>]</code> where x is a number between 0 (inclusive) and
the nplurals number you specified in the header (see examples below).</li>
 
<li>Using a text-editor<br />
When translating an entry you must leave the English language strings
(those on lines starting <code>msgid</code>) untouched and insert the
translated strings between the double-quotes on the following lines (those
starting <code>msgstr</code> or <code>msgstr[<em>x</em>]</code> in the case of
plurals).</li>
<li>Obsolete entries<br />
When updating a PO file, obsolete entries (i.e. those strings which appeared
in the previous version but do not in the current version) are placed at the
end of the PO file and prepended by <code>#~</code>. There is no need to
translate these entries as they are ignored by the compiler.</li>
</ol>
 
<p>Once you have translated all the strings and filled in the header, you need
to compile the PO file into a PHP serialized object file for use with
singapore. Do this using the <a href="../tools/compile.php">compile</a> script
provided in the <code>tools/</code> directory of the singapore distribution.</p>
 
<p>And that's it!</p>
 
<p>Now go and attach your translated PO file(s) to the tracker item you created
before starting the translation so that everyone else can make use of it.</p>
 
<h2>Examples</h2>
 
<p>The following string
<pre class="boxed">
# File: ../includes/singapore.class.php, line: 247
#, c-format
msgid "Page created in %s seconds"
msgstr ""
</pre>
when translated into French becomes
<pre class="boxed">
# File: ../includes/singapore.class.php, line: 247
#, c-format
msgid "Page created in %s seconds"
msgstr "Page créée en %s secondes"
</pre>
 
and the following string
<pre class="boxed">
# File: ../includes/admin.class.php, line: 173
msgid "admin bar|Edit image"
msgstr ""
</pre>
when translated into Italian becomes
<pre class="boxed">
# File: ../includes/admin.class.php, line: 173
msgid "admin bar|Edit image"
msgstr "Modifica l'immagine"
</pre>
 
and the following string
<pre class="boxed">
# File: ../includes/singapore.class.php, line: 530
#, c-format
msgid "%s gallery"
msgid_plural "%s galleries"
msgstr[0] ""
</pre>
when translated into Spanish becomes
<pre class="boxed">
# File: ../includes/singapore.class.php, line: 530
#, c-format
msgid "%s gallery"
msgid_plural "%s galleries"
msgstr[0] "%s galería"
msgstr[1] "%s galerías"
</pre>
 
</p>
 
<h2><a name="header">Filling in the header section</a></h2>
 
<p class="note">NOTE: This section is mainly copied from the
<a href="http://www.gnu.org/manual/gettext/html_chapter/gettext_5.html#SEC35">section 5.2</a>
of the GNU Gettext manual.</p>
 
<p>The initial comments "SOME DESCRIPTIVE TITLE", "YEAR" and
"FIRST AUTHOR &lt;EMAIL@ADDRESS&gt;, YEAR" ought to be replaced by
sensible information.</p>
 
<h3>The following fields must be filled in correctly:</h3>
 
<dl>
<dt>Content-Type</dt>
<dd>Replace <samp>ISO-8859-1</samp> with the
character encoding used for your language, in your locale, or
UTF-8. This field is needed for correct operation of the
<code>msgmerge</code> program, as well
as for users whose locale's character encoding differs from yours.
<p>The following encodings are frequently used for the corresponding
languages.</p>
<ul>
<li><code>ISO-8859-1</code> for Afrikaans, Albanian, Basque,
Catalan, Dutch, English, Estonian, Faroese, Finnish, French,
Galician, German, Greenlandic, Icelandic, Indonesian, Irish,
Italian, Malay, Norwegian, Portuguese, Spanish, Swedish,</li>
<li><code>ISO-8859-2</code> for Croatian, Czech, Hungarian,
Polish, Romanian, Serbian, Slovak, Slovenian,</li>
<li><code>ISO-8859-3</code> for Maltese,</li>
<li><code>ISO-8859-5</code> for Macedonian, Serbian,</li>
<li><code>ISO-8859-6</code> for Arabic,</li>
<li><code>ISO-8859-7</code> for Greek,</li>
<li><code>ISO-8859-8</code> for Hebrew,</li>
<li><code>ISO-8859-9</code> for Turkish,</li>
<li><code>ISO-8859-13</code> for Latvian, Lithuanian,</li>
<li><code>ISO-8859-15</code> for Basque, Catalan, Dutch, English,
Finnish, French, Galician, German, Irish, Italian, Portuguese,
Spanish, Swedish,</li>
<li><code>KOI8-R</code> for Russian,</li>
<li><code>KOI8-U</code> for Ukrainian,</li>
<li><code>CP1251</code> for Bulgarian, Byelorussian,</li>
<li><code>GB2312</code>, <code>GBK</code>, <code>GB18030</code>
for simplified writing of Chinese,</li>
<li><code>BIG5</code>, <code>BIG5-HKSCS</code> for traditional
writing of Chinese,</li>
<li><code>EUC-JP</code> for Japanese,</li>
<li><code>EUC-KR</code> for Korean,</li>
<li><code>TIS-620</code> for Thai,</li>
<li><code>UTF-8</code> for any language, including those listed
above.</li>
</ul>
<p>The character encoding name can be written in either upper or
lower case. Usually upper case is preferred.</p>
</dd>
<dt>Plural-Forms</dt>
<dd>See the <a href="#plurals">plural forms</a> section.</dd>
 
</dl>
 
<h3>The following fields should be filled in:</h3>
 
<dl>
<dt>Project-Id-Version</dt>
<dd>This is the name and version of the package.</dd>
<dt>Last-Translator</dt>
<dd>Fill in your name and email address (without double
quotes).</dd>
<dt>Language-Team</dt>
<dd>Fill in the English name of the language followed by the native name
of the language in brackets. E.g. <i>"Language-Team: German (Deutsch)\n"</i><br />
Note this is different from the GNU specification but is required in order
for the language flipper function to work.
</dd>
</dl>
 
<h3>The following fields may be left alone:</h3>
 
<dl>
<dt>POT-Creation-Date</dt>
<dd>This has already been filled in by <code>xgettext</code>.</dd>
<dt>PO-Revision-Date</dt>
<dd>You don't need to fill this in. It should be filled by the editor when
you save the file.</dd>
<dt>Content-Transfer-Encoding</dt>
<dd>Set this to <code>8bit</code>.</dd>
</dl>
 
<h2><a name="plurals">Plural forms</a></h2>
 
<p class="note">NOTE: This section is mainly copied from the
<a href="http://www.gnu.org/manual/gettext/html_chapter/gettext_10.html#SEC150">section 10.2.5</a>
of the GNU Gettext manual.</p>
 
 
<p>The Plural-forms field in the PO header is used to calculate which plural
form of a word to use. In English there are only two plural forms but other
languages have only one or as many as four.</p>
 
<p>Please check the list below to see if your language is listed. If it is
then use the corresponding string. If not then you can either write it yourself
(details below and in the gettext manual) or email a member of the team
describing how your langauge works (e.g. (not real) 0 car, 1-2 cars, 3 caren, 5+ carii)
and we will write one for you.
 
<dl>
<dt>Only one form:</dt>
<dd>Some languages only require one single form. There is no
distinction between the singular and plural form. An appropriate
header entry would look like this:
<pre>Plural-Forms: nplurals=1; plural=0;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Finno-Ugric family</dt>
<dd>Hungarian</dd>
<dt>Asian family</dt>
<dd>Japanese, Korean</dd>
<dt>Turkic/Altaic family</dt>
<dd>Turkish</dd>
</dl>
</dd>
<dt>Two forms, singular used for one only</dt>
<dd>This is the form used in most existing programs since it is
what English is using. A header entry would look like this:
<pre>Plural-Forms: nplurals=2; plural=n==1 ? 0 : 1;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Germanic family</dt>
<dd>Danish, Dutch, English, German, Norwegian, Swedish</dd>
<dt>Finno-Ugric family</dt>
<dd>Estonian, Finnish</dd>
<dt>Latin/Greek family</dt>
<dd>Greek</dd>
<dt>Semitic family</dt>
<dd>Hebrew</dd>
<dt>Romanic family</dt>
<dd>Italian, Portuguese, Spanish</dd>
<dt>Artificial</dt>
<dd>Esperanto</dd>
</dl>
</dd>
<dt>Two forms, singular used for zero and one</dt>
<dd>Exceptional case in the language family. The header entry would be:
<pre>Plural-Forms: nplurals=2; plural=n&gt;1;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Romanic family</dt>
<dd>French, Brazilian Portuguese</dd>
</dl>
</dd>
<dt>Three forms, special case for zero</dt>
<dd>The header entry would be:
<pre>Plural-Forms: nplurals=3; plural=n%10==1 &amp;&amp; n%100!=11 ? 0 : n != 0 ? 1 : 2;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Baltic family</dt>
<dd>Latvian</dd>
</dl>
</dd>
<dt>Three forms, special cases for one and two</dt>
<dd>The header entry would be:
<pre>Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Celtic</dt>
<dd>Gaeilge (Irish)</dd>
</dl>
</dd>
<dt>Three forms, special case for numbers ending in 1[2-9]</dt>
<dd>The header entry would look like this:
<pre>Plural-Forms: nplurals=3; plural=n%10==1 &amp;&amp; n%100!=11 ? 0 : n%10&gt;=2 &amp;&amp; (n%100&lt;10 || n%100&gt;=20) ? 1 : 2;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Baltic family</dt>
<dd>Lithuanian</dd>
</dl>
</dd>
<dt>Three forms, special cases for numbers ending in 1 and 2, 3,
4, except those ending in 1[1-4]</dt>
<dd>The header entry would look like this:
<pre>Plural-Forms: nplurals=3; plural=n%10==1 &amp;&amp; n%100!=11 ? 0 : n%10&gt;=2 &amp;&amp; n%10&lt;=4 &amp;&amp; (n%100&lt;10 || n%100&gt;=20) ? 1 : 2;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Slavic family</dt>
<dd>Croatian, Czech, Russian, Slovak, Ukrainian</dd>
</dl>
</dd>
<dt>Three forms, special case for one and some numbers ending in
2, 3, or 4</dt>
<dd>The header entry would look like this:
<pre>Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10&gt;=2 &amp;&amp; n%10&lt;=4 &amp;&amp; (n%100&lt;10 || n%100&gt;=20) ? 1 : 2;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Slavic family</dt>
<dd>Polish</dd>
</dl>
</dd>
<dt>Four forms, special case for one and all numbers ending in
02, 03, or 04</dt>
<dd>The header entry would look like this:
<pre>Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;</pre>
<p>Languages with this property include:</p>
<dl>
<dt>Slavic family</dt>
<dd>Slovenian</dd>
</dl>
</dd>
</dl>
 
<h3>How the Plural-forms header works:</h3>
 
<p>The <code>nplurals</code> value must be a decimal number which
specifies how many different plural forms exist for this
language. The string following <code>plural</code> is an
expression which is using the C language syntax. Exceptions are
that no negative numbers are allowed, numbers must be decimal,
and the only variable allowed is <code>n</code>. This expression
will be evaluated whenever one of the plural functions is called.
The numeric value passed to
these functions is then substituted for all uses of the variable
<code>n</code> in the expression. The resulting value then must
be greater or equal to zero and smaller than the value given as
the value of <code>nplurals</code>.</p>
 
<h2><a name="links">Useful links</a></h2>
 
<ul>
<li><a href="http://singapore.sourceforge.net/forum/viewforum.php?f=6">singapore i18n forum</a></li>
<li><a href="http://www.gnu.org/software/gettext/">GNU Gettext homepage</a></li>
<li><a href="http://www.gnu.org/manual/gettext/">GNU Gettext manual</a> - lots
of technical information about the PO format</li>
<li><a href="http://poedit.sourceforge.net/">poEdit</a> - an open source cross-platform PO editor</li>
<li><a href="http://www.gtranslator.org/">gTranslator</a> - a PO editor for GNOME</li>
<li><a href="http://i18n.kde.org/tools/kbabel/">KBabel</a> - a PO editor for KDE</li>
</ul>
 
 
<p><em>$Date: 2004/11/01 08:17:33 $</em></p>
 
</body>
</html>
/photogallery/docs/docstyle.css
0,0 → 1,106
body {
margin: 1em;
font: small sans-serif;
color: #000;
background-color: #fff;
}
 
p, td, th, li, dd, dt {
font: small sans-serif;
}
 
h1, h2, h3, h4{
color: #f60;
}
 
h1, h2 {
font-size: medium;
border-bottom: 1px solid #ccc;
letter-spacing: 0.3em;
text-transform: uppercase;
}
 
code, pre {
color: #444;
}
 
p, td, th, li, dt, h3, h4, pre {
margin-left: 2em;
}
 
dd {
margin-left: 3em;
}
 
dt {
margin-top: 0.5em;
}
 
a:link {
color: #09f;
text-decoration: underline;
}
 
a:visited {
color: #05a;
text-decoration: underline;
}
 
a:hover {
text-decoration: none;
}
 
input, textarea, select, .inputbox {
border: 1px solid #f60;
color: #000;
background-color: #fff;
}
 
input.radio {
border: none;
background-color: #fff;
}
 
input.button {
font-weight: bold;
border: 1px outset #fff;
color: #fff;
background-color: #f60;
}
 
ul.things > li {
margin-top: 0.75em;
}
 
.note {
color: #d00;
}
 
.error {
color: #f00;
}
 
.boxed, .note, #progressBox {
border: 1px dashed #ccc;
padding: 0.5em;
}
 
#progressBox {
float: right;
background-color: inherit;
}
 
#progressBox li.currentStep {
color: #f60;
font-size: medium;
}
 
#progressBox p, #progressBox li, #progressBox ol {
font-weight: bold;
margin: 0em;
}
 
a.button {
margin-top: 2em;
display: block;
}
/photogallery/docs/index.html
0,0 → 1,27
<!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">
<head>
<title>singapore documentation</title>
<link rel="stylesheet" type="text/css" href="docstyle.css" />
</head>
 
<body>
 
<h1>singapore documentation</h1>
 
<ul>
<li><a href="Readme.html">General readme including installation instructions</a></li>
<li><a href="Advanced.html">Advanced features and how to use them</a></li>
<li><a href="Translation.html">Translating singapore</a></li>
<li><a href="Development.html">Developer documentation</a></li>
<li><a href="http://singapore.sourceforge.net/">Home page</a></li>
<li><a href="http://singapore.sourceforge.net/forum/">Support forum</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=77687&package_id=78646">Download latest version</a></li>
</ul>
 
<p><a href="../">Return</a> to singapore.</p>
 
</body>
</html>
/photogallery/data/index.php
0,0 → 1,0
<?php header("Location: ../") ?>
/photogallery/data/languages.cache
0,0 → 1,0
a:32:{s:2:"bg";s:9:"Bulgarian";s:2:"ca";s:16:"Catalan (Català)";s:2:"cs";s:5:"Czech";s:7:"cs_utf8";s:13:"Czech (UTF-8)";s:2:"da";s:14:"Danish (Dansk)";s:2:"de";s:16:"German (Deutsch)";s:2:"en";s:7:"English";s:2:"es";s:17:"Spanish (Español)";s:2:"et";s:16:"Estonian (Eesti)";s:2:"fr";s:17:"French (Français)";s:2:"hr";s:19:"Croatian (Hrvatski)";s:2:"hu";s:18:"Hungarian (Magyar)";s:2:"is";s:21:"Icelandic (Íslenska)";s:2:"it";s:18:"Italian (Italiano)";s:2:"ja";s:17:"Japanese (EUC-JP)";s:7:"ja_utf8";s:16:"Japanese (UTF-8)";s:2:"ko";s:15:"Korean (EUC-KR)";s:2:"nl";s:18:"Dutch (Nederlands)";s:5:"no_nb";s:24:"Norwegian (Norsk bokmål)";s:2:"pl";s:15:"Polish (Polski)";s:5:"pt_br";s:19:"Portuguese (Brazil)";s:2:"ro";s:17:"Romanian (Romåna)";s:2:"ru";s:16:"Russian (KOI8-R)";s:2:"sk";s:19:"Slovak (Sloveský) ";s:2:"sl";s:21:"Slovenian (Slovensko)";s:2:"sv";s:17:"Swedish (Svenska)";s:2:"tr";s:16:"Turkish (Türkçe)";s:2:"vi";s:18:"Vietnamese (UTF-8)";s:5:"zh_cn";s:27:"Simplified Chinese (GB2312)";s:10:"zh_cn_utf8";s:26:"Simplified Chinese (UTF-8)";s:5:"zh_tw";s:26:"Traditional Chinese (Big5)";s:10:"zh_tw_utf8";s:27:"Traditional Chinese (UTF-8)";}
/photogallery/data/users.csv.php
0,0 → 1,3
<?php die("The contents of this file are hidden"); ?>username,md5(pass),permissions,group(s),email,name,description,stats
admin,5f4dcc3b5aa765d61d8327deb882cf99,1024,"","","Administrator","Default administrator account",""
guest,5f4dcc3b5aa765d61d8327deb882cf99,2048,"","","Guest","Restricted use account for guests who do not have a user account",""