Added PHP directory listing

This commit is contained in:
Matt Burchett 2013-12-31 11:31:21 -06:00
parent dcff67191b
commit ae5dcca69c
74 changed files with 3604 additions and 0 deletions

3
files/.bzr/README Normal file
View File

@ -0,0 +1,3 @@
This is a Bazaar control directory.
Do not change any files in this directory.
See http://bazaar.canonical.com/ for more information about Bazaar.

1
files/.bzr/branch-format Normal file
View File

@ -0,0 +1 @@
Bazaar-NG meta directory, format 1

View File

@ -0,0 +1 @@
push_location = http://bazaar.launchpad.net/~zuwig/pdirl/dev-1.0/

1
files/.bzr/branch/format Normal file
View File

@ -0,0 +1 @@
Bazaar Branch Format 7 (needs bzr 1.6)

View File

@ -0,0 +1 @@
1 zuwig-20120516232456-kcaglp2jk1vzqwz1

0
files/.bzr/branch/tags Normal file
View File

View File

@ -0,0 +1 @@
BZR conflict list format 1

Binary file not shown.

View File

@ -0,0 +1 @@
Bazaar Working Tree Format 6 (bzr 1.14)

View File

View File

@ -0,0 +1 @@
Bazaar repository format 2a (needs bzr 1.16 or later)

View File

@ -0,0 +1,5 @@
B+Tree Graph Index 2
node_ref_lists=0
key_elements=1
len=0
row_lengths=

Binary file not shown.

8
files/.htaccess Normal file
View File

@ -0,0 +1,8 @@
RewriteEngine on
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ index.php?%{QUERY_STRING}&directory=$1&modrewrite=1 [QSA]

109
files/.pdirl/config.php Normal file
View File

@ -0,0 +1,109 @@
<?php
/*
* NOTICE: Only an empty string '' means, that the default/dynamic value will be chosen!
* 0 means off, false means no value. If you want to turn something off, then please use 0 instead of false or ''.
*/
/*
* "debug mode"
* <http://php.net/manual/en/function.error-reporting.php>
* If something's not working, remove the both slashes before error_reporting and report the bug to:
* <https://bugs.launchpad.net/pdirl>
*/
//error_reporting(E_ALL);
$conf = array (
/* Language must be in ISO 639 format <http://en.wikipedia.org/wiki/ISO_639>
* e.g. for French type 'fr_FR', for Italian 'it_IT' or for Simplified Chinese 'zh_CN' etc.
* If you are running pdirl on ubuntu, run "sudo locale-gen xx_YY.UTF-8", xx = Language, YY = Country
* If you want to use English, fill in 'en_GB' or leave the field blank ''. */
'language' => 'en_GB',
/* The domain that will be shown in the title and the breadcrumb navigation.
* You can fill in something like "files.yoursite.org"
* Leave it blank to automaticly detect the host with $_SERVER['HTTP_HOST'] */
'host' => '',
'ignore' => array( // files/directories pdirl should ignore
"index.php",
".htaccess",
".pdirl"
),
'listhidden' => '', // Show hidden files
'searchenabled' => '',
'searchtag' => '', // Search string, leave it blank it will change through user input.
/* What does "case-sensitive" mean?
* If you search for "a", you will get in a case-insensitive search "amarok" and "Amarok",
* in a case-sensitive only "amarok". Case sensitive means that you have to mind the capitalization.
* Default value is case-insensitive, $conf['searchcasesensitive'] = false;. */
'searchcasesensitive' => '',
'searchhidden' => '', // Show hidden files in search
/* do not check size and modification date of a directory,
* but just the number of elements in it
* it is on by default */
'countelements' => '',
/* How pdirl should sort the files.
* You can sort according to:
* file/directory name - 'name'
* path - 'path'
* location - 'location'
* size - 'bytes'
* last modification time - 'mtime'
* type - 'type'
* Sorting order:
* ascending - 'SORT_ASC'
* descending - 'SORT_DESC'
* regular - 'SORT_REGULAR'
* numeric (strings, too) - 'SORT_NUMERIC'
* as a string (intergers, too) - 'SORT_STRING'
*
* default: array('key' => 'name', 'sort' => 'SORT_ASC')
*/
'sort' => '',
/* Allow the user to sort elements
* on by default
*/
'usersort' => '',
/* Why the hell are MIME-types and extensions mixed here?
* Because it's the fastest and simpliest way and very often the MIME-type part after the slash is the same as the file extension.
* e.g. application/zip and .zip */
'types' => array (
'text' => array('ppt', 'pptx', 'doc', 'docx', 'txt', 'rtf', 'odf', 'odt', 'ods', 'odp', 'odg', 'odc', 'odi', 'nfo', 'xml', 'pdf', 'x-office-document'),
'package' => array('7z', 'dmg', 'rar', 'sit', 'zip', 'bzip', 'gz', 'tar', 'deb', 'bz2', 'bz', 'x-compressed-tar', 'iso'),
'program' => array('exe', 'msi', 'mse', 'sh', 'bat', 'x-executable', 'x-ms-dos-executable'),
'web' => array('js', 'html', 'htm', 'xhtml', 'tpl', 'jsp', 'asp', 'aspx', 'php', 'css'),
'video' => array('x-shockwave-flash', 'mv4', 'bup', 'mkv', 'ifo', 'flv', 'vob', '3g2', 'bik', 'xvid', 'divx', 'wmv', 'avi', '3gp', 'mp4', 'mov', '3gpp', '3gp2', 'swf', 'ogv'),
'audio' => array('spx', 'ogg', 'oga', 'mp3', 'wav', 'midi', 'mid', 'aac', 'wma', 'xm'),
'image' => array('ai', 'bmp', 'eps', 'gif', 'ico', 'jpg', 'jpeg', 'png', 'psd', 'psp', 'raw', 'tga', 'tif', 'tiff'),
),
'template' => '', // The template for pdirl, default value is 'default' ;-)
'icons' => '', // Which icons to use, default value is 'default'
/*
* modrewrite makes more readable URLs.
* If you leave it blank, pdirl detects if its turned on and activates nicer urls
*/
'modrewrite' => '',
// /* The directory you want to list.
// * You can fill in something like "downloads/" or leave it blank (default).
// * If you leave it blank it will dynamicly select the directory that the user requested.
// * It is as I think tecnically impossible to implement a redirection like "/test" to "downloads/test"
// * because you can't implement variables of the config into htaccess */
// 'directory' => 'examples/',
// 'scriptpath' => '', // Relative path to this script
)
?>

View File

@ -0,0 +1,357 @@
<?php
/**
* Adjusts user configuration with default configuration.
* If a configuration key has an empty value, use a default value instead
* @param array $configuration
* @return array
*/
function defaultGUIConfiguration($configuration) {
$default = array(
'language' => 'en_GB',
'template' => 'default',
'icons' => 'default',
);
// replace empty configuration variables with the default ones
return $GLOBALS['pdlc'] -> configuration($configuration,
$default);
}
function modRewriteRedirect () {
if(!empty($_GET['gosearch'])) {
if ($GLOBALS['pdlc'] -> modRewrite)
header('Location: http://'. host() .
dirname($_SERVER['REQUEST_URI']) .
'/search:'. $_GET['gosearch']);
else
header('Location: http://' .
host() .
dirname($_SERVER['REQUEST_URI']) .
'/?directory=' .
@$_GET['directory'] .
'&search='. $_GET['gosearch']);
}
}
function setLanguage($language) {
/*
* Sets the language from the configuration to use with gettext.
* Thanks to <mario.ugedo@gmail.com>
*/
// Set language
setlocale(LC_ALL, $language.'.utf8');
putenv('LANG='.$language.'.utf8');
// Specify location of translation tables
bindtextdomain('default', './.pdirl/languages/');
bind_textdomain_codeset('default', 'UTF-8');
// Select domain
textdomain('default');
return true;
}
// Views were planned for the 1.0 series, but I think, it would be better if
// I don't build so much features in pdirl-1.0, but fix some security relevant
// problems ;-) So you get the view features maybe in some 1.1.x version
/**
* Returns the current view.
* @param object $viewConfiguration [optional]
* @return string
*/
function getView($viewConfiguration = false) {
// if ($viewConfiguration === '') {
// if (!empty($_POST['view'])) {
// setcookie('view', htmlspecialchars($_POST['view']), time() + 60 * 60 * 24 * 7, dirname($_SERVER['SCRIPT_NAME'].'/'));
// return htmlspecialchars($_POST['view']);
// } elseif (!empty($_COOKIE['view'])) {
// return $_COOKIE['view'];
// } else {
// return $this -> defaultView;
// }
// } else {
// return $this -> view;
// }
}
/**
* Sets the view.
* @param object $view
* @return
*/
function setView($view) {
// if (setcookie('view', htmlspecialchars($view), time() + 60 * 60 * 24 * 7, dirname($_SERVER['SCRIPT_NAME'].'/')))
// return true;
// else
// return false;
}
/**
* Converts bytes to a more readable format. ex. '3,21 KB'
* @link http://us3.php.net/manual/en/function.filesize.php#84652
* @author <nak5ive@gmail.com>
* @param interger $size
* @param interger $precision [optional]
* @return array
*/
function sizeReadable ($size, $precision = 0) {
$sizes = array('YB', 'ZB', 'EB', 'PB', 'TB', 'GB', 'MB', 'KB', 'B');
$total = count($sizes);
/*
* $total is the number how often while was executed.
* If you have 10 units and while was executed 3 times, $total is 7.
*/
while($total-- && $size > 1024)
$size /= 1024;
$return['number'] = round($size, $precision);
$return['unit'] = $sizes[$total];
return $return;
}
/**
* Returns time left from supplied date ex. '3 days ago' etc.
* @author <andypsv@rcdrugs.com>
* @link http://us.php.net/manual/en/function.time.php
* @param interger $timestamp
* @return string
*/
function lastModificationReadable($timestamp) {
$current = time();
$difference = $current - $timestamp;
$lengths = array(1, 60, 3600, 86400, 604800, 2630880, 31570560);
for ($val = sizeof($lengths) - 1; ($val >= 0) && (($number = $difference / $lengths[$val]) <= 1); $val--);
if ($val < 0) $val = 0;
$new_time = $current - ($difference % $lengths[$val]);
if (floor($number) == 1)
$periods = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year');
else
$periods = array('seconds', 'minutes', 'hours', 'days', 'weeks', 'months', 'years');
return sprintf(_('%d %s ago'), $number, _($periods[$val]));
}
/**
* Returns (linked) path navigation
* @param string $path
* @param boolean $link [optional]
* @return string
*/
function path($path=false, $link=false, $absolute=false) {
// if (!$path)
// $path = $_SERVER['REQUEST_URI'];
if ($path == $GLOBALS['pdlc'] -> getScriptPath())
$path = dirname($path);
$path = explode('?', $path);
preg_match('/^(.*)?(search:([^|]+))?\|?(sort:(name|mtime|size)(:(asc|desc))?)?$/', $path[0], $match);
$path = $match[1];
$path = str_replace('./', '', $path);
$dir_array = explode ("/", $path);
$counter = 1;
$path = "";
foreach ($dir_array as $dir) {
if ($dir != "") {
$dir = htmlspecialchars(urldecode($dir));
if ($link) {
$linkhref = implode("/", array_slice($dir_array, 0, $counter));
if ($GLOBALS['pdlc'] -> modRewrite) {
if ($absolute) {
$linkhref = '/'.path(scriptPath()).$linkhref;
}
$path .= '<a href="'.$linkhref.'/">'.$dir.'</a>/';
} else {
$path .= '<a href="'.scriptPath().'?directory='.$linkhref.'/">'.$dir.'</a>/';
}
} else {
$path .= $dir."/";
}
}
$counter++;
}
return $path;
}
function goParent($path = false) {
if (!$path)
$path = currentDirectory();
if (modRewriteActive()) {
return scriptDirectory()."/".currentDirectory()."/../..";
} else {
$parentdir = dirname($path);
if ($parentdir == '.')
return "?directory=";
else
return "?directory=".$parentdir."/";
}
}
/**
* Seperates directories from files
* @param array $elements
* @return array
*/
function seperateDirectoriesAndFiles(&$elements) {
$directories = array();
$files = array();
if (is_array($elements)) {
foreach($elements as $element) {
if ($element['directory']) {
$directories[] = $element;
} else {
$files[] = $element;
}
}
}
// Sort directories by their number of elements not their bytes
if (sortKey() == 'bytes' && !empty($directories))
$directories = sortElements($directories, array('key'=>'numberofelements', 'sort'=>sortOrder()));
$elements = array('directories' => $directories, 'files' => $files);
return true;
}
/**
* Adds human readable modfication time and size.
* @param array $elements
* @return array
*/
function addHumanInformation (&$elements) {
if (is_array($elements)) {
foreach ($elements as $key => $elementData) {
if ($elementData['readable']) {
$elements[$key]['sizer'] = sizeReadable($elementData['bytes']);
$elements[$key]['mtimer'] = lastModificationReadable($elementData['mtime']);
}
}
return true;
} else {
return false;
}
}
/**
* abbreviated form of <img src="index.php?icon=blablablabla...
* @param string $icon
* @param string $iconDesc [optional]
* @return string
*/
function imgTagIcon ($icon, $iconDesc = '') {
printf('<img src="%s/%s.png" alt="%s" title="%3$s" class="%2$s" />', iconDirectory(), $icon, _($iconDesc));
}
/**
* translated filetype info
* @param string $type
* @return string
*/
function filetypeInfo ($type) {
$typesList = array (
'audio' => 'Audio file',
'image' => 'Image file',
'web' => 'Web document',
'text' => 'Text document',
'package' => 'Compressed package',
'program' => 'Application',
'directory' => 'Directory',
'default' => 'Unknown file type',
);
return _($typesList[$type]);
}
/**
* breadcumb navigation, $pdirlView -> path () doesn't return the actual directory in plain text format, but in slash-seperated links of directories.
* e.g. <a>dir</a>/<a>anotherdir</a>/<a>blubb</a>
* $pdirl -> getHost ($link) gives out the current hostname, if $link's true, it will give out a link
* A combination of getHost(1) and path() returns a breadcumb navigation
*/
function printBreadcrumb () {
$scriptDirPath = scriptDirectory();
// path: bla/bla/blubb
$scriptDirPath = explode('/', $scriptDirPath);
// folder: blubb
$scriptFolder = array_pop($scriptDirPath);
// path: bla/bla/
$scriptDirPath = implode('/', $scriptDirPath);
$breadcrumbPath = sprintf('%s/%s<a href="%s/%s/">%s</a>%s',
host($link = true),
path($scriptDirPath),
$scriptDirPath,
$scriptFolder,
path($scriptFolder),
path(currentDirectory(), true, true));
if (searchTag()) {
// It wil return "search for 'searchkeyword' in host/path
printf(_('Search for "%s" in %s'), searchTag(), $breadcrumbPath);
} else {
echo _('Directory listing for '), $breadcrumbPath;
}
}
function sortLink($key, $text) {
if (userSortActive()) {
$sortlink = "<a ";
if (sortKey() == $key) {
$classorder = str_replace(array('SORT_ASC', 'SORT_DESC'), array('asc', 'desc'), sortOrder());
$sortlink .= 'class="'.$classorder.'" ';
$linkorder = sortOrder(true); // adesc
} else {
$linkorder = "SORT_ASC";
}
$sortlink .= ' href="'.scriptPath().'?sortkey='.$key.'&sortorder='.$linkorder.'&directory='.currentDirectory();
if (searchTag() != '')
$sortlink .= '&search='.searchTag();
$sortlink .= '">'.$text.'</a>';
} else {
$sortlink = $text;
}
echo $sortlink;
}
function currentTemplate() {
return $GLOBALS['GUIconf']['template'];
}
function templateDirectory() {
return scriptDirectory().'/.pdirl/templates/'.currentTemplate();
}
function currentIcons() {
return $GLOBALS['GUIconf']['icons'];
}
function iconDirectory() {
return scriptDirectory().'/.pdirl/icons/'.currentIcons();
}
function searchInput () {
if (searchTag())
return searchTag();
else
return _('Search...');
}
function host ($link = false) {
if ($link) {
return sprintf('<a href="http://%s">%1$s</a>', $GLOBALS['pdlc'] -> getHost($link));
} else {
return $GLOBALS['pdlc'] -> getHost($link);
}
}
function searchTag() {return $GLOBALS['pdlc'] -> getSearchTag();}
function scriptPath() {return $GLOBALS['pdlc'] -> getScriptPath();}
function scriptDirectory() {return $GLOBALS['pdlc'] -> getScriptDirectory();}
function currentDirectory() {return $GLOBALS['pdlc'] -> getCurrentDirectory();}
function numberOfElements() {return $GLOBALS['pdlc'] -> getNumberOfElements();}
function totalSize() {return $GLOBALS['pdlc'] -> getTotalSize();}
function urlPath($path) {return $GLOBALS['pdlc'] -> urlPath($path);}
function sortOrder($r=false){return $GLOBALS['pdlc'] -> getSortOrder($r);}
function sortKey() {return $GLOBALS['pdlc'] -> getSortKey();}
function sortElements($elementsVar = false, $sortOptions = false){
return $GLOBALS['pdlc'] -> sortElements($elementsVar, $sortOptions);
}
function userSortActive() {return $GLOBALS['pdlc'] -> isUserSortActive();}
function modRewriteActive() {return $GLOBALS['pdlc'] -> isModRewriteActive();}
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Czech translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-02-01 23:20+0000\n"
"Last-Translator: c00ba <Unknown>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "sekund"
msgid "second"
msgstr "sekunda"
msgid "minutes"
msgstr "minut"
msgid "minute"
msgstr "minuta"
msgid "hours"
msgstr "hodin"
msgid "hour"
msgstr "hodina"
msgid "days"
msgstr "dny/dní"
msgid "day"
msgstr "den"
msgid "weeks"
msgstr "týdnů"
msgid "week"
msgstr "týden"
msgid "months"
msgstr "měsíců"
msgid "month"
msgstr "měsíc"
msgid "years"
msgstr "let"
msgid "year"
msgstr "rok"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Tato složka obsahuje %s položek o celkové velikosti %s %s."
msgid "This directory contains no files."
msgstr "Tato složka neobsahuje žádné soubory."
msgid "%d %s ago"
msgstr "před %d %s"
msgid "Directory listing for "
msgstr "Výpis složky "
msgid "Parent Directory"
msgstr "Nadřazená složka"
msgid "Back"
msgstr "Zpět"
msgid "Home Directory"
msgstr "Domovská složka"
msgid "Reload"
msgstr "Znovu načíst"
msgid "Search..."
msgstr "Vyhledat..."
msgid "Search for \"%s\" in %s"
msgstr "Hledat \"%s\" v %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Nalezeno %s prvků o celkové velikosti %s %s ."
msgid "No search result."
msgstr "Žádný výsledek hledání."
msgid "not accesible"
msgstr "nepřístupné"
msgid "Audio file"
msgstr "Zvukový soubor"
msgid "Image file"
msgstr "Obrázkový soubor"
msgid "Application"
msgstr "Aplikace"
msgid "Web document"
msgstr "Webový dokument"
msgid "Text document"
msgstr "Textový dokument"
msgid "Directory"
msgstr "Složka"
msgid "Compressed package"
msgstr "Komprimovaný archiv"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Název"
msgid "Last modification"
msgstr "Poslední změna"
msgid "Size"
msgstr "Velikost"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,133 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-01-12 22:42+0000\n"
"Last-Translator: René Züwig <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-Country: DENMARK\n"
"X-Poedit-Language: Danish\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "sekunder"
msgid "second"
msgstr "sekund"
msgid "minutes"
msgstr "minutter"
msgid "minute"
msgstr "minut"
msgid "hours"
msgstr "timer"
msgid "hour"
msgstr "time"
msgid "days"
msgstr "dage"
msgid "day"
msgstr "dag"
msgid "weeks"
msgstr "uger"
msgid "week"
msgstr "uge"
msgid "months"
msgstr "måneder"
msgid "month"
msgstr "måned"
msgid "years"
msgstr "år"
msgid "year"
msgstr "år"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Denne mappe indeholder %s file(r) med en størrelsepå i alt: %s %s."
msgid "This directory contains no files."
msgstr "Denne mappe indeholder ingen filer."
msgid "%d %s ago"
msgstr "%d %s siden"
msgid "Directory listing for "
msgstr "Mappe visning for "
msgid "Parent Directory"
msgstr ""
msgid "Back"
msgstr ""
msgid "Home Directory"
msgstr ""
msgid "Reload"
msgstr ""
msgid "Search..."
msgstr "Søg..."
msgid "Search for \"%s\" in %s"
msgstr "Søg efter \"%s\" i %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Fandt %s file(r) med en størrelse på i alt %s %s."
msgid "No search result."
msgstr "Din søgning gav ingen resultater."
msgid "not accesible"
msgstr ""
msgid "Audio file"
msgstr ""
msgid "Image file"
msgstr ""
msgid "Application"
msgstr ""
msgid "Web document"
msgstr ""
msgid "Text document"
msgstr ""
msgid "Directory"
msgstr ""
msgid "Compressed package"
msgstr ""
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr ""
msgid "Last modification"
msgstr ""
msgid "Size"
msgstr ""
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,134 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2012-05-17 18:49+0000\n"
"Last-Translator: René Züwig <Unknown>\n"
"Language-Team: René Züwig <rene@newroots.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-Country: GERMANY\n"
"X-Poedit-Language: German\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "Sekunden"
msgid "second"
msgstr "Sekunde"
msgid "minutes"
msgstr "Minuten"
msgid "minute"
msgstr "Minute"
msgid "hours"
msgstr "Stunden"
msgid "hour"
msgstr "Stunde"
msgid "days"
msgstr "Tage"
msgid "day"
msgstr "Tag"
msgid "weeks"
msgstr "Wochen"
msgid "week"
msgstr "Woche"
msgid "months"
msgstr "Monate"
msgid "month"
msgstr "Monat"
msgid "years"
msgstr "Jahre"
msgid "year"
msgstr "Jahr"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr ""
"Dieses Verzeichnis beinhaltet %s Element(e) mit der Gesamtgröße von %s %s."
msgid "This directory contains no files."
msgstr "Dieses Verzeichnis beinhaltet keine Dateien."
msgid "%d %s ago"
msgstr "vor %d %s"
msgid "Directory listing for "
msgstr "Verzeichnisinhalt von "
msgid "Parent Directory"
msgstr "Übergeordneter Ordner"
msgid "Back"
msgstr "Zurück"
msgid "Home Directory"
msgstr "Heimverzeichnis"
msgid "Reload"
msgstr "Aktualisieren"
msgid "Search..."
msgstr "Suchen..."
msgid "Search for \"%s\" in %s"
msgstr "Suche nach \"%s\" in %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s Element(e) mit der Gesamtgröße von %s %s gefunden."
msgid "No search result."
msgstr "Keine Suchergebnisse."
msgid "not accesible"
msgstr "nicht erreichbar"
msgid "Audio file"
msgstr "Audio-Datei"
msgid "Image file"
msgstr "Bild-Datei"
msgid "Application"
msgstr "Ausführbares Programm"
msgid "Web document"
msgstr "Web-Dokument"
msgid "Text document"
msgstr "Text-Dokument"
msgid "Directory"
msgstr "Verzeichnis"
msgid "Compressed package"
msgstr "Komprimiertes Archiv"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Name"
msgid "Last modification"
msgstr "Letzte Änderung"
msgid "Size"
msgstr "Größe"
msgid "%s elements"
msgstr ""

View File

@ -0,0 +1,128 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3beta\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: René Züwig <rene@newroots.de>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr ""
msgid "second"
msgstr ""
msgid "minutes"
msgstr ""
msgid "minute"
msgstr ""
msgid "hours"
msgstr ""
msgid "hour"
msgstr ""
msgid "days"
msgstr ""
msgid "day"
msgstr ""
msgid "weeks"
msgstr ""
msgid "week"
msgstr ""
msgid "months"
msgstr ""
msgid "month"
msgstr ""
msgid "years"
msgstr ""
msgid "year"
msgstr ""
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr ""
msgid "This directory contains no files."
msgstr ""
msgid "%d %s ago"
msgstr ""
msgid "Directory listing for "
msgstr ""
msgid "Parent Directory"
msgstr ""
msgid "Back"
msgstr ""
msgid "Home Directory"
msgstr ""
msgid "Reload"
msgstr ""
msgid "Search..."
msgstr ""
msgid "Search for \"%s\" in %s"
msgstr ""
msgid "Found %s element(s) totalling %s %s in size."
msgstr ""
msgid "No search result."
msgstr ""
msgid "not accesible"
msgstr ""
msgid "Audio file"
msgstr ""
msgid "Image file"
msgstr ""
msgid "Application"
msgstr ""
msgid "Web document"
msgstr ""
msgid "Text document"
msgstr ""
msgid "Directory"
msgstr ""
msgid "Compressed package"
msgstr ""
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr ""
msgid "Last modification"
msgstr ""
msgid "Size"
msgstr ""
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Greek translation for pdirl
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2011-02-28 19:35+0000\n"
"Last-Translator: Maraslis Konstantinos <Unknown>\n"
"Language-Team: Greek <el@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "δευτερόλεπτα"
msgid "second"
msgstr "δευτερόλεπτο"
msgid "minutes"
msgstr "λεπτά"
msgid "minute"
msgstr "λεπτό"
msgid "hours"
msgstr "ώρες"
msgid "hour"
msgstr "ώρα"
msgid "days"
msgstr "ημέρες"
msgid "day"
msgstr "ημέρα"
msgid "weeks"
msgstr "εβδομάδες"
msgid "week"
msgstr "εβδομάδα"
msgid "months"
msgstr "μήνες"
msgid "month"
msgstr "μήνας"
msgid "years"
msgstr "έτη"
msgid "year"
msgstr "έτος"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Ο φάκελος περιέχει %s στοιχείο/α με συνολικό μέγεθος %s %s."
msgid "This directory contains no files."
msgstr "Ο φάκελος δεν περιέχει αρχεία."
msgid "%d %s ago"
msgstr "%d %s πριν"
msgid "Directory listing for "
msgstr "Κατάλογος φακέλου για το "
msgid "Parent Directory"
msgstr "Γονικός κατάλογος"
msgid "Back"
msgstr "Πίσω"
msgid "Home Directory"
msgstr "Αρχικός φάκελος"
msgid "Reload"
msgstr "Ανανέωση"
msgid "Search..."
msgstr "Αναζήτηση…"
msgid "Search for \"%s\" in %s"
msgstr "Αναζήτηση του \"%s\" στο %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Βρέθηκαν %s στοιχείο/α με συνολικό μέγεθος %s %s."
msgid "No search result."
msgstr "Δεν βρέθηκαν αποτελέσματα."
msgid "not accesible"
msgstr "μη προσβάσιμο"
msgid "Audio file"
msgstr "Αρχείο ήχου"
msgid "Image file"
msgstr "Αρχείο εικόνας"
msgid "Application"
msgstr "Εφαρμογή"
msgid "Web document"
msgstr "Αρχείο ιστού"
msgid "Text document"
msgstr "Έγγραφο κειμένου"
msgid "Directory"
msgstr "Φάκελος"
msgid "Compressed package"
msgstr "Συμπιεσμένο αρχείο"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Όνομα"
msgid "Last modification"
msgstr "Τελευταία τροποποίηση"
msgid "Size"
msgstr "Μέγεθος"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,131 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-01-12 22:52+0000\n"
"Last-Translator: René Züwig <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "seconds"
msgid "second"
msgstr "second"
msgid "minutes"
msgstr "minutes"
msgid "minute"
msgstr "minute"
msgid "hours"
msgstr "hours"
msgid "hour"
msgstr "hour"
msgid "days"
msgstr "days"
msgid "day"
msgstr "day"
msgid "weeks"
msgstr "weeks"
msgid "week"
msgstr "week"
msgid "months"
msgstr "months"
msgid "month"
msgstr "month"
msgid "years"
msgstr "years"
msgid "year"
msgstr "year"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "This directory contains %s element(s) totalling %s %s in size."
msgid "This directory contains no files."
msgstr "This directory contains no files."
msgid "%d %s ago"
msgstr "%d %s ago"
msgid "Directory listing for "
msgstr "Directory listing for "
msgid "Parent Directory"
msgstr "Parent Directory"
msgid "Back"
msgstr "Back"
msgid "Home Directory"
msgstr "Home Directory"
msgid "Reload"
msgstr "Reload"
msgid "Search..."
msgstr "Search..."
msgid "Search for \"%s\" in %s"
msgstr "Search for \"%s\" in %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Found %s element(s) totalling %s %s in size."
msgid "No search result."
msgstr "No search result."
msgid "not accesible"
msgstr "not accesible"
msgid "Audio file"
msgstr "Audio file"
msgid "Image file"
msgstr "Image file"
msgid "Application"
msgstr "Application"
msgid "Web document"
msgstr "Web document"
msgid "Text document"
msgstr "Text document"
msgid "Directory"
msgstr "Directory"
msgid "Compressed package"
msgstr "Compressed package"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Name"
msgid "Last modification"
msgstr "Last modification"
msgid "Size"
msgstr "Size"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Spanish translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-03-18 21:54+0000\n"
"Last-Translator: Ktl__XV <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "segundos"
msgid "second"
msgstr "segundo"
msgid "minutes"
msgstr "minutos"
msgid "minute"
msgstr "minuto"
msgid "hours"
msgstr "horas"
msgid "hour"
msgstr "hora"
msgid "days"
msgstr "días"
msgid "day"
msgstr "día"
msgid "weeks"
msgstr "semanas"
msgid "week"
msgstr "semana"
msgid "months"
msgstr "meses"
msgid "month"
msgstr "mes"
msgid "years"
msgstr "años"
msgid "year"
msgstr "año"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Este directorio contiene %s elemento(s) sumando %s %s en tamaño."
msgid "This directory contains no files."
msgstr "Este directorio no contiene archivos."
msgid "%d %s ago"
msgstr "hace %d %s"
msgid "Directory listing for "
msgstr "Listado de directorio para "
msgid "Parent Directory"
msgstr "Carpeta Superior"
msgid "Back"
msgstr "Atrás"
msgid "Home Directory"
msgstr "Directorio Personal"
msgid "Reload"
msgstr "Actualizar"
msgid "Search..."
msgstr "Buscar..."
msgid "Search for \"%s\" in %s"
msgstr "Buscar \"%s\" en %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Encontrados %s elemento(s) sumando %s %s en tamaño."
msgid "No search result."
msgstr "No hay resultados para la busqueda."
msgid "not accesible"
msgstr "no accessible"
msgid "Audio file"
msgstr "Archivo de audio"
msgid "Image file"
msgstr "Archivo de imagen"
msgid "Application"
msgstr "Aplicación"
msgid "Web document"
msgstr "Documento web"
msgid "Text document"
msgstr "Documento de texto"
msgid "Directory"
msgstr "Directorio"
msgid "Compressed package"
msgstr "Archivo comprimido"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Nombre"
msgid "Last modification"
msgstr "Última modificación"
msgid "Size"
msgstr "Tamaño"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,133 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-06-27 21:30+0000\n"
"Last-Translator: Benoît Leudet <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-Country: FRANCE\n"
"X-Poedit-Language: French\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "secondes"
msgid "second"
msgstr "seconde"
msgid "minutes"
msgstr "minutes"
msgid "minute"
msgstr "minute"
msgid "hours"
msgstr "heures"
msgid "hour"
msgstr "heure"
msgid "days"
msgstr "jours"
msgid "day"
msgstr "jour"
msgid "weeks"
msgstr "semaines"
msgid "week"
msgstr "semaine"
msgid "months"
msgstr "mois"
msgid "month"
msgstr "mois"
msgid "years"
msgstr "années"
msgid "year"
msgstr "an"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Ce dossier contient %s fichier(s) pour un total de %s %s."
msgid "This directory contains no files."
msgstr "Ce dossier ne contient pas de fichiers."
msgid "%d %s ago"
msgstr "Il y a %d %s"
msgid "Directory listing for "
msgstr "Contenu du dossier "
msgid "Parent Directory"
msgstr "dossier sup&eacute;rieur"
msgid "Back"
msgstr "Précédent"
msgid "Home Directory"
msgstr "Dossier racine"
msgid "Reload"
msgstr "Actualiser"
msgid "Search..."
msgstr "Chercher..."
msgid "Search for \"%s\" in %s"
msgstr "Chercher \"%s\" dans %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s fichier(s) trouvé(s) pour un total de %s %s."
msgid "No search result."
msgstr "Pas de résultat"
msgid "not accesible"
msgstr "inaccessible"
msgid "Audio file"
msgstr "Fichier audio"
msgid "Image file"
msgstr "Fichier image"
msgid "Application"
msgstr "Application"
msgid "Web document"
msgstr "Document Web"
msgid "Text document"
msgstr "Fichier texte"
msgid "Directory"
msgstr "Dossier"
msgid "Compressed package"
msgstr "Fichier compressé"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Nom"
msgid "Last modification"
msgstr "Dernière modification"
msgid "Size"
msgstr "Taille"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Hungarian translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-10-31 13:15+0000\n"
"Last-Translator: meneruwa <Unknown>\n"
"Language-Team: Hungarian <hu@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "másodpercek"
msgid "second"
msgstr "másodperc"
msgid "minutes"
msgstr "percek"
msgid "minute"
msgstr "perc"
msgid "hours"
msgstr "órák"
msgid "hour"
msgstr "óra"
msgid "days"
msgstr "napok"
msgid "day"
msgstr "nap"
msgid "weeks"
msgstr "hetek"
msgid "week"
msgstr "hét"
msgid "months"
msgstr "hónapok"
msgid "month"
msgstr "hónap"
msgid "years"
msgstr "évek"
msgid "year"
msgstr "év"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Ez a könyvtár %s elemet tartalmaz, összesen %s %s méretben"
msgid "This directory contains no files."
msgstr "Ez a könyvtár nem tartalmaz fájlokat"
msgid "%d %s ago"
msgstr "%d %s ezelőtt"
msgid "Directory listing for "
msgstr "Könyvtárak listázása "
msgid "Parent Directory"
msgstr "Alapértelmezett könyvtár"
msgid "Back"
msgstr "vissza"
msgid "Home Directory"
msgstr "Kezdő mappa"
msgid "Reload"
msgstr "Újratöltés"
msgid "Search..."
msgstr "Keresés..."
msgid "Search for \"%s\" in %s"
msgstr "Keresés \"%s\" vagy %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s található elem(ek), összesen% s% s méretűek."
msgid "No search result."
msgstr "Nem találtam megfelelő találatot"
msgid "not accesible"
msgstr "nem elérhető"
msgid "Audio file"
msgstr "Audió"
msgid "Image file"
msgstr "Kép"
msgid "Application"
msgstr "Alkalmazás"
msgid "Web document"
msgstr "Web dokumentum"
msgid "Text document"
msgstr "Szöveg dokumentum"
msgid "Directory"
msgstr "Könyvtár"
msgid "Compressed package"
msgstr "Tömörített archívum"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Név"
msgid "Last modification"
msgstr "Utoljára módosítva"
msgid "Size"
msgstr "Méret"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,133 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-01-12 22:50+0000\n"
"Last-Translator: René Züwig <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-Country: ITALY\n"
"X-Poedit-Language: Italian\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "secondi"
msgid "second"
msgstr "secondo"
msgid "minutes"
msgstr "minuti"
msgid "minute"
msgstr "minuto"
msgid "hours"
msgstr "ore"
msgid "hour"
msgstr "ora"
msgid "days"
msgstr "giorni"
msgid "day"
msgstr "giorno"
msgid "weeks"
msgstr "settimane"
msgid "week"
msgstr "settimana"
msgid "months"
msgstr "mesi"
msgid "month"
msgstr "mese"
msgid "years"
msgstr "anni"
msgid "year"
msgstr "anno"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Questa cartella contiene %s file, per un totale di %s %s."
msgid "This directory contains no files."
msgstr "Questa cartella non contiene file."
msgid "%d %s ago"
msgstr "creato %d %s fa"
msgid "Directory listing for "
msgstr "Lista dei file presenti in: "
msgid "Parent Directory"
msgstr "Cartella Precedente"
msgid "Back"
msgstr "Indietro"
msgid "Home Directory"
msgstr "Cartella Principale"
msgid "Reload"
msgstr "Aggiorna"
msgid "Search..."
msgstr "Cerca..."
msgid "Search for \"%s\" in %s"
msgstr "Cerca \"%s\" in %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Trovati %s file, per un totale di %s %s."
msgid "No search result."
msgstr "Nessun risultato."
msgid "not accesible"
msgstr "non accessibile"
msgid "Audio file"
msgstr "File Audio"
msgid "Image file"
msgstr "File di Immagine"
msgid "Application"
msgstr "Applicazione"
msgid "Web document"
msgstr "Pagina Web"
msgid "Text document"
msgstr "File di Testo"
msgid "Directory"
msgstr "Cartella"
msgid "Compressed package"
msgstr "Archivio Compresso"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Nome"
msgid "Last modification"
msgstr "Ultimo aggiornamento"
msgid "Size"
msgstr "Dimensione"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Dutch translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-01-23 20:18+0000\n"
"Last-Translator: cumulus007 <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "seconden"
msgid "second"
msgstr "seconde"
msgid "minutes"
msgstr "minuten"
msgid "minute"
msgstr "minuut"
msgid "hours"
msgstr "uren"
msgid "hour"
msgstr "uur"
msgid "days"
msgstr "dagen"
msgid "day"
msgstr "dag"
msgid "weeks"
msgstr "weken"
msgid "week"
msgstr "week"
msgid "months"
msgstr "maanden"
msgid "month"
msgstr "maand"
msgid "years"
msgstr "jaren"
msgid "year"
msgstr "jaar"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Deze directory bevat %s element(en) totaal %s %s in grootte."
msgid "This directory contains no files."
msgstr "Deze directory bevat geen bestanden."
msgid "%d %s ago"
msgstr "%d %s geleden"
msgid "Directory listing for "
msgstr "Mapweergave voor "
msgid "Parent Directory"
msgstr "Hogere map"
msgid "Back"
msgstr "Terug"
msgid "Home Directory"
msgstr "Persoonlijke map"
msgid "Reload"
msgstr "Herladen"
msgid "Search..."
msgstr "Zoeken..."
msgid "Search for \"%s\" in %s"
msgstr "Zoeken voor \"%s\" in %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s item(s) gevonden met een totaalgrootte van %s %s."
msgid "No search result."
msgstr "Geen zoekresultaten."
msgid "not accesible"
msgstr "niet toegankelijk"
msgid "Audio file"
msgstr "Audiobestand"
msgid "Image file"
msgstr "Afbeelding"
msgid "Application"
msgstr "Toepassing"
msgid "Web document"
msgstr "Webdocument"
msgid "Text document"
msgstr "Tekstdocument"
msgid "Directory"
msgstr "Map"
msgid "Compressed package"
msgstr "Ingepakt pakket"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Naam"
msgid "Last modification"
msgstr "Laatst gewijzigd"
msgid "Size"
msgstr "Grootte"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Polish translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-04-27 19:07+0000\n"
"Last-Translator: Michał Parniak <Unknown>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "sekund(y)"
msgid "second"
msgstr "sekunda"
msgid "minutes"
msgstr "minut(y)"
msgid "minute"
msgstr "minuta"
msgid "hours"
msgstr "godzin(y)"
msgid "hour"
msgstr "godzina"
msgid "days"
msgstr "dni"
msgid "day"
msgstr "dzień"
msgid "weeks"
msgstr "tygodni(e)"
msgid "week"
msgstr "tydzień"
msgid "months"
msgstr "miesięcy(ące)"
msgid "month"
msgstr "miesiąc"
msgid "years"
msgstr "lat(a)"
msgid "year"
msgstr "rok"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Ten katalog zawiera %s elementów, łączny rozmiar %s %s."
msgid "This directory contains no files."
msgstr "Ten katalog nie zawiera żadnych plików."
msgid "%d %s ago"
msgstr "%d %s temu"
msgid "Directory listing for "
msgstr "Katalog "
msgid "Parent Directory"
msgstr "Katalog nadrzędny"
msgid "Back"
msgstr "Wstecz"
msgid "Home Directory"
msgstr "Katalog Domowy"
msgid "Reload"
msgstr "Odśwież"
msgid "Search..."
msgstr "Szukaj..."
msgid "Search for \"%s\" in %s"
msgstr "Szkukaj \"%s\" w %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Znaleziono %s elementów, łączny rozmiar %s %s."
msgid "No search result."
msgstr "Brak wyników wyszukiwania."
msgid "not accesible"
msgstr "nieosiągalne"
msgid "Audio file"
msgstr "Plik Audio"
msgid "Image file"
msgstr "Obraz"
msgid "Application"
msgstr "Program"
msgid "Web document"
msgstr "Dokument sieciowy"
msgid "Text document"
msgstr "Dokument tekstowy"
msgid "Directory"
msgstr "Katalog"
msgid "Compressed package"
msgstr "Skompresowany pakiet"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Nazwa"
msgid "Last modification"
msgstr "Ostatnia modyfikacja"
msgid "Size"
msgstr "Rozmiar"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,133 @@
msgid ""
msgstr ""
"Project-Id-Version: pdirl 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2012-01-10 16:21+0000\n"
"Last-Translator: Tudorancea Andrei <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
"X-Poedit-Country: ROMANIA\n"
"X-Poedit-Language: Romanian\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "seconds"
msgstr "Secunde"
msgid "second"
msgstr "secunda"
msgid "minutes"
msgstr "minute"
msgid "minute"
msgstr "minut"
msgid "hours"
msgstr "ore"
msgid "hour"
msgstr "ora"
msgid "days"
msgstr "zile"
msgid "day"
msgstr "zi"
msgid "weeks"
msgstr "Saptamani"
msgid "week"
msgstr "Saptamana"
msgid "months"
msgstr "luni"
msgid "month"
msgstr "luna"
msgid "years"
msgstr "ani"
msgid "year"
msgstr "an"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Acest director contine %s fisiere cu un total de %s %s."
msgid "This directory contains no files."
msgstr "Acest director nu contine fisiere."
msgid "%d %s ago"
msgstr "%d %s vechime"
msgid "Directory listing for "
msgstr "Continutul directorului "
msgid "Parent Directory"
msgstr "Inapoi ..."
msgid "Back"
msgstr "inapoi"
msgid "Home Directory"
msgstr "Director Acasa"
msgid "Reload"
msgstr "Reincarca"
msgid "Search..."
msgstr "Cautare ..."
msgid "Search for \"%s\" in %s"
msgstr "Cautare dupa \"%s\" in %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s fisiere gasite cu dimensiunea totala de %s %s."
msgid "No search result."
msgstr "Nu s-au gasit fisiere conform cautarii."
msgid "not accesible"
msgstr "fara acces"
msgid "Audio file"
msgstr "Fisier audio"
msgid "Image file"
msgstr "Fisier imagine"
msgid "Application"
msgstr "Aplicatie"
msgid "Web document"
msgstr "Document Web"
msgid "Text document"
msgstr "Document Text"
msgid "Directory"
msgstr "Director"
msgid "Compressed package"
msgstr "Fisier arhivat"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Nume"
msgid "Last modification"
msgstr "Ultima modificare"
msgid "Size"
msgstr "Marime"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Russian translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-03-10 14:29+0000\n"
"Last-Translator: Alexander Kubashin <Unknown>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "секунд(ы)"
msgid "second"
msgstr "секунда"
msgid "minutes"
msgstr "минут(ы)"
msgid "minute"
msgstr "минута"
msgid "hours"
msgstr "часа(ов)"
msgid "hour"
msgstr "час"
msgid "days"
msgstr "дня(ей)"
msgid "day"
msgstr "день"
msgid "weeks"
msgstr "недели(ль)"
msgid "week"
msgstr "неделя"
msgid "months"
msgstr "месяца(ев)"
msgid "month"
msgstr "месяц"
msgid "years"
msgstr "года(лет)"
msgid "year"
msgstr "год"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Каталог содержит %s файла(ов), общий размер: %s %s"
msgid "This directory contains no files."
msgstr "Этот каталог не содержит файлов."
msgid "%d %s ago"
msgstr "%d %s назад"
msgid "Directory listing for "
msgstr "Просмотр каталога для "
msgid "Parent Directory"
msgstr "Родительский каталог"
msgid "Back"
msgstr "Назад"
msgid "Home Directory"
msgstr "Домашний каталог"
msgid "Reload"
msgstr "Обновить"
msgid "Search..."
msgstr "Поиск..."
msgid "Search for \"%s\" in %s"
msgstr "Поиск \"%s\" в %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "Найдено файлов: %s, общий размер: %s %s."
msgid "No search result."
msgstr "Файлы не найдены."
msgid "not accesible"
msgstr "не доступен"
msgid "Audio file"
msgstr "Аудио файл"
msgid "Image file"
msgstr "Изображение"
msgid "Application"
msgstr "Приложение"
msgid "Web document"
msgstr "web документ"
msgid "Text document"
msgstr "Текстовый документ"
msgid "Directory"
msgstr "Каталог"
msgid "Compressed package"
msgstr "Архив"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "Имя"
msgid "Last modification"
msgstr "Последнее изменение"
msgid "Size"
msgstr "Размер"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Turkish translation for pdirl
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2011-01-22 22:55+0000\n"
"Last-Translator: Tubilmer.com.tr <Unknown>\n"
"Language-Team: Turkish <tr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "saniye"
msgid "second"
msgstr "saniye"
msgid "minutes"
msgstr "dakika"
msgid "minute"
msgstr "dakika"
msgid "hours"
msgstr "saat"
msgid "hour"
msgstr "saat"
msgid "days"
msgstr "gün"
msgid "day"
msgstr "gün"
msgid "weeks"
msgstr "hafta"
msgid "week"
msgstr "hafta"
msgid "months"
msgstr "ay"
msgid "month"
msgstr "ay"
msgid "years"
msgstr "yıl"
msgid "year"
msgstr "yıl"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "Bu dizin %s öğe içeriyor. Toplam boyut: %s %s"
msgid "This directory contains no files."
msgstr "Bu dizinde hiçbir dosya yok."
msgid "%d %s ago"
msgstr "%d %s önce"
msgid "Directory listing for "
msgstr "Dizin listeleme "
msgid "Parent Directory"
msgstr "Üst dizin"
msgid "Back"
msgstr "Geri"
msgid "Home Directory"
msgstr "Ana dizin"
msgid "Reload"
msgstr "Yenile"
msgid "Search..."
msgstr "Ara..."
msgid "Search for \"%s\" in %s"
msgstr "Aranan: \"%s\" Şurda: %s"
msgid "Found %s element(s) totalling %s %s in size."
msgstr "%s öğe bulundu. Toplam boyut: %s %s"
msgid "No search result."
msgstr "Aradığınız bulunamadı."
msgid "not accesible"
msgstr "erişilemez"
msgid "Audio file"
msgstr "Ses dosyası"
msgid "Image file"
msgstr "Resim dosyası"
msgid "Application"
msgstr "Uygulama"
msgid "Web document"
msgstr "Web belgesi"
msgid "Text document"
msgstr "Metin belgesi"
msgid "Directory"
msgstr "Dizin"
msgid "Compressed package"
msgstr "Sıkıştırılmış paket"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "İsim"
msgid "Last modification"
msgstr "Son değiştirilme"
msgid "Size"
msgstr "Boyut"
msgid "%s elements"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,135 @@
# Chinese (Simplified) translation for pdirl
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the pdirl package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: pdirl\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-17 20:24+0000\n"
"PO-Revision-Date: 2010-04-27 07:17+0000\n"
"Last-Translator: surftheair <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-18 00:46+0000\n"
"X-Generator: Launchpad (build 15259)\n"
msgid "seconds"
msgstr "秒"
msgid "second"
msgstr "秒"
msgid "minutes"
msgstr "分钟"
msgid "minute"
msgstr "分钟"
msgid "hours"
msgstr "小时"
msgid "hour"
msgstr "小时"
msgid "days"
msgstr "天"
msgid "day"
msgstr "天"
msgid "weeks"
msgstr "星期"
msgid "week"
msgstr "星期"
msgid "months"
msgstr "个月"
msgid "month"
msgstr "个月"
msgid "years"
msgstr "年"
msgid "year"
msgstr "年"
msgid "This directory contains %s element(s) totalling %s %s in size."
msgstr "吃文件夹包含 %s 个文件,共 %s %s"
msgid "This directory contains no files."
msgstr "此文件不包含任何文件"
msgid "%d %s ago"
msgstr "%d %s 之前"
msgid "Directory listing for "
msgstr "文件列表 "
msgid "Parent Directory"
msgstr "上级文件夹"
msgid "Back"
msgstr "后退"
msgid "Home Directory"
msgstr "主目录"
msgid "Reload"
msgstr "重新载入"
msgid "Search..."
msgstr "搜索..."
msgid "Search for \"%s\" in %s"
msgstr "在 %s 中搜索 \"%s\""
msgid "Found %s element(s) totalling %s %s in size."
msgstr "找到 % 个文件,共 %s %s 大小"
msgid "No search result."
msgstr "没有搜索结果"
msgid "not accesible"
msgstr "无法获取"
msgid "Audio file"
msgstr "音频文件"
msgid "Image file"
msgstr "图像文件"
msgid "Application"
msgstr "应用程序"
msgid "Web document"
msgstr "网页文件"
msgid "Text document"
msgstr "文本文件"
msgid "Directory"
msgstr "文件夹"
msgid "Compressed package"
msgstr "压缩文件"
msgid "Unknown file type"
msgstr ""
msgid "Name"
msgstr "名称"
msgid "Last modification"
msgstr "修改时间"
msgid "Size"
msgstr "文件大小"
msgid "%s elements"
msgstr ""

760
files/.pdirl/pdlc.class.php Normal file
View File

@ -0,0 +1,760 @@
<?php
/**
* PDLC is a Pdirl Directory Listing Class
* @package pdirl
*/
class pdlc {
function __construct($configuration) {
if (!isset($configuration))
$configuration = array();
$conf = $this -> configuration($configuration);
$this -> host = $conf['host'];
// $this -> scriptPath = $conf['scriptpath'];
$this -> scriptPath = $this -> rewriteScriptPath();
$this -> ignore = $conf['ignore'];
$this -> countElements = $conf['countelements'];
$this -> sortOptions = $conf['sort'];
$this -> userSort = $conf['usersort'];
$this -> types = $conf['types'];
$this -> listHidden = $conf['listhidden'];
$this -> searchEnabled = $conf['searchenabled'];
$this -> searchTag = $conf['searchtag'];
$this -> searchHidden = $conf['searchhidden'];
$this -> searchCaseSensitive = $conf['searchcasesensitive'];
$this -> modRewrite = $conf['modrewrite'];
// $this -> directoryPrefix = $conf['directory'];
// // strip double prefixes
// $this -> directory = $this -> stripDoublePrefix(@$_GET['directory'], $this -> directoryPrefix);
// make the path more secure and remove illegal characters
$this -> directory = $this -> rewritePath(@$_GET['directory']);
$this -> sessionSort();
}
/**
* Adjusts user configuration with default configuration.
* If a configuration key has an empty value, use a default value instead
* @param array $configuration
* @param array $default
* @return array
*/
public function configuration($configuration, $default = false) {
if (!$default) {
$default = array(
'host' => $_SERVER['HTTP_HOST'],
// 'scriptpath' => $this -> rewriteScriptPath(),
// 'directory' => '',
'ignore' => array("index.php", ".htaccess", ".pdirl"),
'countelements' => true,
'sort' => array('key' => 'name', 'sort' => "SORT_ASC"),
'usersort' => true,
'listhidden' => false,
'searchenabled' => true,
'searchtag' => @$_GET['search'],
'searchhidden' => false,
'searchcasesensitive' => false,
'modrewrite' => @$_GET['modrewrite'],
);
}
if (!$configuration)
return $default;
foreach ($default as $key => $defaultValue) {
if (isset($configuration[$key])) {
// If configuration is empty, use the default value
if ($configuration[$key] === '')
$configuration[$key] = $defaultValue;
}
}
return $configuration;
}
/**
* Makes path more secure.
* Please try to hack this, I'm not very sure if this is the most secure function
* @return string
*/
private function rewritePath($path) {
$path = './'.$path.'/';
if (count($path) > 0) {
if ($path == './') {
return '';
} else {
if (($path[0] == '.' OR $path[0] == '/') AND $path[0].$path[1] != './')
return '';
$search = array ("..", "//", ".?", ".*", "././", "/./");
$replace= array ("", "/" , "", "", "./", "/");
while ($path != str_replace($search, $replace, $path))
$path = str_replace($search, $replace, $path);
}
}
return $path;
}
// /**
// * Returns current directory path with the directory path in the configuration.
// * Because you get a double suffix when you list a subdirectory with pdirl (suffix + path)
// * it must be removed.
// * @return string
// */
// function stripDoublePrefix ($path = false, $prefix = false) {
// if (!$path && !$prefix) {
// return '';
// } elseif (!$path) {
// return $prefix;
// } elseif (!$prefix) {
// return $path;
// } else {
// // double prefix to search and to destroy ;-)
// $prefixSearch = $prefix.$prefix;
// // Escape . \ + * ? [ ^ ] ( $ )
// $prefixSearch = quotemeta($prefixSearch);
// // Also strip something like '//' and '/./'
// $prefixSearch = $this -> rewritePath ($prefixSearch);
// // Escape '/', too
// $prefixSearch = str_replace('/', '\/', $prefixSearch);
// // Replace the double prefix with the normal prefix
// return preg_replace("/^{$prefixSearch}/", $prefix, $this -> rewritePath($prefix.$path));
// }
// }
/**
* returns a legal script path
* @return string
*/
private function rewriteScriptPath() {
// make sure the path contains no illegal characters
$scriptPath = $this -> rewritePath($_SERVER['PHP_SELF']);
// delete the "." at the beginning of the path
$scriptPath = str_replace('./', '/', $scriptPath);
// delete the slash at the end
$scriptPath = rtrim($scriptPath, '/');
return $scriptPath;
}
// /**
// * script path should'nt be part of current directory path, to prevent double bredcrumbs.
// * @return string
// */
// function currentDirectoryOnly($currentDir = false, $scriptPath = false) {
// if (!$currentDir)
// $currentDir = $this -> getCurrentDirectory();
// if (!$scriptPath)
// $scriptPath = $this -> getScriptPath();
// if (strpos($currentDir, $scriptPath) === 0)
// $currentDir = substr_replace($currentDir, "", 0, strlen($scriptPath));
// else
// return $currentDir;
// }
/**
* Returns formatted path, when modrewrite is inactive it will return the path via GET
* @param string $path
* @return string
*/
public function urlPath($path) {
$path = $this -> rewritePath($path);
if (!$this -> modRewrite)
return "?directory=".urlencode($path);
else
// because basename() sucks on foreign characters, I use explode -> array_pop
return htmlspecialchars($this -> getScriptDirectory()).'/'.$this -> encode($path);
}
/**
* urlencode on everything except the slashes
* @param array $path
* @return unknown_type
*/
public function encode($path) {
if (!is_array($path)) {
$path = explode ('/', $path);
}
$newPath = array();
foreach ($path as $pathElement) {
$newPath[] = rawurlencode($pathElement);
}
return implode('/', $newPath);
}
/**
* Sorts array columns
* @link http://us.php.net/manual/en/function.array-multisort.php#83117 php_multisort
* @author <php.net@sebble.com>
* @uses array_multisort
* @param multi-dimensional_array $elements [optional]
* @param array $sortOptions [optional]
* @return array
*/
public function sortElements($elementsVar = false, $sortOptions = false) {
if (!$elementsVar) {
if (!empty($this -> elements)) {
$elements = $this -> elements;
} else {
return false;
}
} else {
$elements = $elementsVar;
}
if (!$sortOptions)
$sortOptions = $this -> sortOptions;
foreach($elements as $elementKey => $elementData) {
$columns[$sortOptions['key']][$elementKey] = $elementData[$sortOptions['key']];
}
// $idkeys is a key-index
$idkeys = array_keys($elements);
array_multisort(array_map('strtolower', $columns[$sortOptions['key']]), constant($sortOptions['sort']), $idkeys);
// if we have no idkeys, we'll return false
$result = false;
foreach($idkeys as $idkey) {
// apply new sorting
$result[$idkey] = $elements[$idkey];
}
if (!$elementsVar)
$this -> elements = $result;
return $result;
}
/**
*
* @param string $file
* @return string
*/
public function getType($file) {
if (is_dir($file))
return 'directory';
$typeList = $this -> types;
$pathinfo = pathinfo($file);
if (isset($pathinfo["extension"]))
$extension = strtolower($pathinfo["extension"]);
else
$extension = '';
// MIME-type will be split in two parts, type and subtype
$mimeType = array("","");
// via mime_content_type, the most exact method to get the mime-type, deprecated in 5.3
if (function_exists('mime_content_type')) {
// MCT is "mime_content_type", I use this name to separate from the mimeType that should be set
if ($mctType = mime_content_type($file)) {
$mimeType = explode('/', $mctType);
}
// via Fileinfo, "alternative" for mime_content_type()
// Problems with Fileinfo
// <http://de3.php.net/manual/de/function.finfo-open.php#74965>
// <http://de3.php.net/manual/de/ref.fileinfo.php#79063>
} elseif (function_exists('finfo_open')) {
$finfoHandler = finfo_open(FILEINFO_MIME);
if ($finfoType = finfo_file($finfoHandler, $file)) {
// <http://de3.php.net/manual/de/function.finfo-file.php#77975>
// "contrary to the documentation, finfo_file seems to be returning a
// semicolon delimited string that contains not just the mime type but also the character set."
$finfoType = explode(';', $finfoType);
$mimeType = explode('/', $finfoType[0]);
}
finfo_close($finfoHandler);
// via Unix file command
} elseif (array_search(php_uname('s'), array('Linux', 'FreeBSD', 'Mac OS X', 'Solaris')) !== false) {
// output buffer, "records" what the shell returns
ob_start();
// --mime-type returns mime-type only w/o mime-encoding, -b keeps it brief, w/o the path of the file
system('/usr/bin/file --mime-type -b ' . escapeshellarg(realpath($file)));
$unixFileType = ob_get_contents();
if (stristr($unixFileType, 'error') == false) {
$mimeType = explode('/', $unixFileType);
}
ob_clean();
}
// <https://bugs.launchpad.net/pdirl/+bug/815701>
$subtype = "";
if(count($mimeType) > 1){
$subtype = $mimeType[1];
}
$mimeType = array('type' => $mimeType[0], 'subtype' => $subtype);
// search for MIME-type and extension in $typeList, if found, break foreach
foreach ($typeList as $key => $value) {
if (in_array($mimeType['subtype'], $value)) {
return $key;
break;
} elseif ($mimeType['type'] == $key) {
return $key;
break;
// the last method: search in the extension list, that was defined in the config
} elseif (in_array($extension, $value)) {
return $key;
break;
}
}
// if no other type was returned, return "default", which means that the file type is unknown
return "default";
}
/**
* Checks if file/dir is ignored in configuration
* @return boolean
*/
private function ignored ($element, $ignoreList=false) {
if (!$ignoreList)
$ignoreList = $this -> ignore;
if(is_array($ignoreList) ) {
$ignoreList[] = '\/\.(\.)?$';
foreach($ignoreList as $expression) {
$expression = str_replace(".", "\.", $expression);
if(preg_match("/$expression/", $element))
return true;
}
}
return false;
}
/**
* Replacement for sql_regcase
* @link http://de3.php.net/manual/en/function.sql-regcase.php#86011
* @author <irker@irker.net>
* @param string $string
* @param string $encoding
*/
private function iregcase($string,$encoding='auto'){
$max = mb_strlen($string,$encoding);
$ret = '';
for ($i = 0; $i < $max; $i++) {
$char = mb_substr($string,$i,1,$encoding);
$up = mb_strtoupper ($char,$encoding);
$low = mb_strtolower($char,$encoding);
$ret .= ($up!=$low)?'['.$up.$low.']' : $char;
}
return $ret;
}
/**
* recursive glob() function
* @link http://de3.php.net/manual/en/function.glob.php#90278
* @author <me@lx.sg>
* @param string $pattern [optional]
* @param string $path [optional]
* @param mixed $flags [optional]
* @return
*/
private function rglob($pattern='*', $path='', $flags = 0) {
$dir = dirname($pattern);
if (!$path && $dir != './') {
return $this -> rglob(basename($pattern), $dir . '/', $flags);
}
$path = $this -> escapePathBrackets($path);
$paths = glob($path . '*', GLOB_ONLYDIR | GLOB_NOSORT);
$files = glob($path . $pattern, $flags);
// if glob returns false
if ($paths == false) $paths = array();
if ($files == false) $files = array();
foreach ($paths as $p) $files = array_merge($files, $this -> rglob($pattern, $p . '/', $flags));
return $files;
}
/**
* Works like stat, but only for directories.
* A patchscript between http://us.php.net/manual/en/function.stat.php#61238
* and http://de3.php.net/manual/en/function.filemtime.php#91665
* @link http://de3.php.net/manual/en/function.filemtime.php#91665
* @author <info@daniel-marschall.de>
* @link http://us.php.net/manual/en/function.stat.php#61238
* @author <marting.dc@gmail.com>
* @param string $directory
* @return array
*/
private function rstat($directory) {
$files = $this -> rglob('*', $directory, 0);
$newestModification = 0;
$DirectorySize = 0;
foreach ($files as $val) {
$stat = @stat($val);
if ($stat['mtime'] > $newestModification)
$newestModification = $stat['mtime'];
$DirectorySize += $stat['size'];
}
return array('mtime' => $newestModification, 'size' => $DirectorySize);
}
/** Counts number of elements in a directory
* @param string $directory
* @return interger
*/
public function countElementsInDir($directory) {
return count($this -> rglob('*', $directory, 0));
}
/**
* if search query was detected in URL or not, get the elements for the search/dirlist query
* @return array
*/
public function requestElements () {
if (!empty($this -> searchTag) && $this -> searchEnabled) {
$this -> getSearchElements();
} else {
$this -> getDirectoryElements();
}
}
/**
* Returns all files in a directory
* @param string $directory [optional]
* @return array
*/
public function getDirectoryElements ($directory = '') {
if (!$directory) {
$directory = $this -> directory;
}
$directory = $this -> escapePathBrackets($directory);
if ($this -> listHidden) {
$elements = glob($directory.'{,.}*', GLOB_BRACE); //list hidden files ("."-prefix)
} else {
$elements = glob($directory.'*');
}
$elements = $this -> getElementInfo($elements);
$this -> elements = $elements;
return $elements;
}
/**
* Searches for $search and returns a array with paths to found files/directories
* @param string $search [optional]
* @param string $directory [optional]
* @return array
*/
public function getSearchElements($search = '', $directory = '') {
if (!$search) {
$search = $this -> searchTag;
}
if (!$directory) {
$directory = $this -> directory;
}
if (!empty($search)) {
// Search for term in current directory
$search = htmlspecialchars($this -> searchTag);
# thx to <http://de3.php.net/manual/en/function.glob.php#74109>
if (!$this -> searchCaseSensitive)
$search = $this -> iregcase($search);
$found = $this -> getElementInfo($this -> rglob("*$search*", $directory, 0));
$this -> elements = $found;
return $found;
} else {
return false;
}
}
public function getElementInfo($elements, $directory = false) {
if (!$directory)
$directory = $this -> directory;
$list = array();
if (is_array($elements)) {
foreach ($elements as $path) {
if (is_file($path) || is_dir($path)) {
if ($this -> ignored($path) === false) {
/*
* path => "./examples/sub directory"
* urlpath => "?directory=./examples/sub%20directory/"
* or with mod_rewrite: urlpath => "./examples/sub%20directory"
*/
// If not in the directory where pdirl is
if (!empty($directory)) {
// The reason why pdirl is not compatible with PHP <5
// <http://de.php.net/manual/function.strpos.php>
if (strpos($path, $directory) === 0 AND $this -> modRewrite) {
/*
* If you search with glob e.g. in "examples" you will get paths like "examples/foobar.mp3"
* The path should be shortened.
*/
$item['path'] = substr_replace($path, "", 0, strlen($directory));
} else {
/*
* Okay, you will probably ask why I save the path of the file/folder
* Because of the sorting options - files and folders should be sorted according to their name and not
* their path. In version 0.9.2beta files and folders were sorted according to their path (only in search mode).
*/
$item['path'] = $path;
}
} else {
// Take absolute path
$item['path'] = $path;
}
// if you have brackets etc. e.g. '<item>' in your name htmlspecialchars would distort the name it wouldnt be accessible,
// so they are seperate variables for (display)name and pathname which is encoded with urlencode
// There is also 'urlpath' which is especially for using pdirl without modrewrite and adds (if needed) ?directory= before the url
$path_array = explode("/", $item['path']);
$item['name'] = array_pop($path_array);
$item['directory'] = is_dir($path);
$item['location'] = '';
// pdirl needs location only when you search or
// modRewrite is on
if ($this -> modRewrite || $this -> getSearchTag() || !$item['directory']) {
$item['location'] = implode('/', $path_array);
$item['location'] .= '/';
// Makes location path more secure
$item['location'] = $this -> rewritePath($item['location']);
}
// urlencode on everything except the slashes
$item['urlpath'] = $this -> encode($item['location'].$item['name']);
$stat = array('size' => 0, 'mtime' => 0);
$item['numberofelements'] = 0;
$item['countonly'] = false;
if ($item['directory']) {
if ($item['readable'] = is_readable($path) || is_executable($path)) {
if ($this -> countElements) {
$item['numberofelements'] = $this -> countElementsInDir($path) - 1;
$item['countonly'] = true;
} else {
$stat = $this -> rstat($path);
}
}
$item['urlpath'] = $this -> urlPath($directory.$item['location'].$item['name']);
} else {
// stat() is slow, but faster than using filemtime() & filesize() instead.
$stat = @stat($path);
// if stat() returns an error, we ignore it and convert it to false via the @
$item['readable'] = (bool) $stat;
}
$item['path'] = urlencode($item['path']);
$item['name'] = htmlspecialchars($item['name']);
$item['locationurl'] = $item['location'];
$item['location'] = htmlspecialchars($item['location']);
/*
* Ok, fine, what did I do with $item['readable']? I mark files and directories,
* that are not accessible with $item['readable'] = false;
*/
$item['bytes'] = $stat['size'];
$item['mtime'] = $stat['mtime'];
// Add this items file size to this folders total size
$this -> totalSize += $item['bytes'];
$item['type'] = $this -> getType($path);
$list[] = $item;
}
}
}
$this -> elements = $list;
}
return $list;
}
/**
* allowing brackets in directory names
* http://sockittoemjt.tumblr.com/post/20481660360/managed-to-come-across-your-tumblr-whilst-googling-for
* https://bugs.php.net/bug.php?id=33047
* returns directory path, but only that the brackets are escaped.
* @return string
*/
private function escapePathBrackets($directory = false) {
if ($directory == false) {
$directory = $this -> directory;
}
$escapedBracketPath = str_replace('[', '\[', $directory);
$escapedBracketPath = str_replace(']', '\]', $escapedBracketPath);
/* Next, replace all "escaped" brackets with brackets like so */
$escapedBracketPath = str_replace('\[', '[[]', $escapedBracketPath);
$escapedBracketPath = str_replace('\]', '[]]', $escapedBracketPath);
return $escapedBracketPath;
}
/**
* returns pdirl::elements
* @return array
*/
public function getElements () {
if (empty($this -> elements))
return false;
else
return $this -> elements;
}
/**
* returns pdirl::directory
* @return string
*/
public function getCurrentDirectory() {
if (!isset($this -> directory))
return false;
else
return $this -> directory;
}
/**
* returns pdirl::scriptPath
* @return string
*/
public function getScriptPath() {
if (!isset($this -> scriptPath))
return false;
else
return $this -> scriptPath;
}
/**
* returns the directory of pdirl::scriptPath
* @return string
*/
public function getScriptDirectory() {
if (!isset($this -> scriptPath))
return false;
else
$scriptDirectory = dirname($this -> scriptPath);
//if the script directory path is only consists of a slash, give out an empty string
if ($scriptDirectory == '/')
return '';
else
return $scriptDirectory;
}
/**
* returns pdirl::host
* @return string
*/
public function getHost() {
if (!isset($this -> host))
return false;
else
return $this -> host;
}
/**
* return pdirl::search
* @return string
*/
public function getSearchTag() {
if (!isset($this -> searchTag))
return false;
else
return $this -> searchTag;
}
/**
* Returns number of elements
* @return interger
*/
public function getNumberOfElements() {
if (!isset($this -> elements))
return false;
else
return count($this -> elements);
}
/**
* return pdirl::totalSize
* @return interger
*/
public function getTotalSize() {
if (!isset($this -> totalSize))
return false;
else
return $this -> totalSize;
}
/**
* Returns "asc", if $sorting is "desc". Returns "desc", if it's "asc".
* @param $sorting
* @return string
*/
public function adesc($sorting) {
if ($sorting == "SORT_ASC")
return "SORT_DESC";
elseif ($sorting == "SORT_DESC")
return "SORT_ASC";
else
return "SORT_ASC";
}
public function getSortOrder($r = false) {
if (!isset($this -> sortOptions)) {
return false;
} else {
if ($r) {
return $this -> adesc($this -> sortOptions['sort']);
} else {
return $this -> sortOptions['sort'];
}
}
}
public function getSortKey() {
if (!isset($this -> sortOptions))
return false;
else
return $this -> sortOptions['key'];
}
private function validizeSortOrder($order) {
if (in_array($order, array('SORT_ASC', 'SORT_DESC', 'SORT_REGULAR', 'SORT_NUMERIC', 'SORT_STRING'))) {
return $order;
} else {
return 'SORT_ASC';
}
}
private function validizeSortKey($order) {
if (in_array($order, array('name', 'path', 'location', 'bytes', 'mtime', 'type'))) {
return $order;
} else {
return 'name';
}
}
private function sessionSort() {
if ($this -> isUserSortActive()) {
session_start();
if (isset($_SESSION['sortorder'])){
$this -> sortOptions['sort'] = $_SESSION['sortorder'];
}
if (isset($_SESSION['sortkey'])){
$this -> sortOptions['key'] = $_SESSION['sortkey'];
}
if (isset($_GET['sortorder']) || isset($_GET['sortkey'])) {
if (isset($_GET['sortorder'])){
$_SESSION['sortorder'] = $this -> validizeSortOrder($_GET['sortorder']);
}
if (isset($_GET['sortkey'])){
$_SESSION['sortkey'] = $this -> validizeSortKey($_GET['sortkey']);
}
if (!empty($this->searchTag)) {
header('Location:http://'.$this->host.$this -> getScriptPath()."?search=".$this->searchTag."&directory=".$this -> directory);
} else {
header('Location:http://'.$this->host.$this->getScriptDirectory()."/".$this -> directory);
}
}
}
}
public function isUserSortActive() {
return $this -> userSort;
}
public function isModRewriteActive() {
return $this -> modRewrite;
}
}
?>

View File

@ -0,0 +1,114 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo _('Directory listing for '), host(), $_SERVER['REQUEST_URI']; ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo templateDirectory();?>/style.css" />
</head>
<body>
<div id="headerwrap">
<div id="header">
<h1><?printBreadcrumb();?></h1>
<form action="<?php echo scriptPath();?>" method="get">
<?php // adds the current directory "&directory=blubb/blabl" to the url ?>
<input type="hidden" name="directory" value="<?php echo currentDirectory();?>" />
<ul>
<?php // simple history-back js-command ?>
<li><a href="javascript:history.back()" onclick="history.back()"><?php imgTagIcon('back', 'Back');?></a></li>
<?php if(currentDirectory() != './'): # If this folder is not the folder where pdirl is?>
<li><a href="<?php echo goParent()?>"><?php imgTagIcon('parent', 'Parent Directory')?></a></li>
<li><a href="<?php echo scriptDirectory(); ?>"><?php imgTagIcon('home', 'Home Directory')?></a></li>
<?php else: ?>
<li><?php imgTagIcon('parent-disabled', 'Parent');?></li>
<li><?php imgTagIcon('home-disabled', 'Home Directory');?></li>
<?php endif; ?>
<li><a href="<?php echo $_SERVER['REQUEST_URI']?>"><?php imgTagIcon('reload', 'Reload');?></a></li>
<li style="color: #0C4F5F">|</li>
<li>
<?php imgTagIcon('search', 'Search...')?>
<input name="gosearch" id="search" type="text" value="<?php echo searchInput()?>" onclick=" if(this.value == '<?php echo _('Search...')?>') { this.value = ''; }" /></li>
</ul>
</form>
<div style="clear:left;"></div>
</div>
</div>
<div id="contentwrap">
<?php if ($elements): ?>
<table>
<thead>
<tr>
<td <?php if ($hideMTime) echo 'colspan="2"'; ?>>
<?php sortLink('name', _('Name'));?></td>
<?php if (!$hideMTime): ?>
<td><?php sortLink('mtime', _('Last modification'))?></td>
<?php endif; ?>
<td><?php sortLink('bytes', _('Size'));?></td>
</tr>
</thead>
<tbody>
<?php foreach($elements as $element): ?>
<tr>
<td class="name"
<?php
if(!$element['readable']){
echo 'colspan="3"';
} elseif ($element['countonly']) {
echo 'colspan="2"';
} ?> title="<?php echo filetypeInfo($element['type']);?>">
<img src="<?php echo iconDirectory();?>/<?php echo $element['type'];?>.png" alt="<?php echo _('Directory');?>" />
<?php if(!$element['readable']) { echo imgTagIcon('locked', 'not accessible');} ?>
<a href="<?php echo $element['urlpath'] ?>" id="<?php echo $element['name'];?>">
<?php echo $element['name'];?>
</a>
<?php if(searchTag() && $element['location']): ?>
<small><a href="<?php echo urlPath($element['locationurl']);?>">
<?php echo $element['location'];?>
</a></small>
<?php endif; ?>
</td>
<?php if($element['readable']): ?>
<?php if($element['countonly']): ?>
<td class="size">
<?php printf(_('%s elements'), $element['numberofelements']); ?>
</td>
<?php else: ?>
<td class="mtime">
<?php echo $element['mtimer'];?>
</td>
<td class="size">
<?php echo $element['sizer']['number'].' '.$element['sizer']['unit'];?>
</td>
<?php endif; ?>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php $totalSize = sizeReadable(totalSize()); ?>
<?php $term = (searchTag())? _('Found %s element(s) totalling %s %s in size.') : _('This directory contains %s element(s) totalling %s %s in size.');?>
<?php else: ?>
<div id="nothing">
<p>
<?php if(searchTag()): ?>
<?php echo _('No search result.');?>
<?php else: ?>
<?php echo _('This directory contains no files.');?>
<?php endif; ?>
- <a href="javascript:history.back()" onclick="history.back()"><?php echo _('Back'); ?></a></p>
</div>
<?php endif; ?>
</div>
<div id="footer">
<?php if($elements): ?>
<p><?php echo sprintf($term, numberOfElements(), $totalSize['number'], $totalSize['unit']);?></p>
<?php endif; ?>
<p><small>powered by <a href="http://pdirl.newroots.de/">pdirl - PHP Directory Listing</a>.</small></p>
</div>
</body>
</html>

View File

@ -0,0 +1,101 @@
@CHARSET "UTF-8";
* {
padding:0px; margin:0px;
}
body {
font-family: Helvetica; font-size: 12px; color: #333; background: #FFF3CF;
}
img {
vertical-align: bottom; padding: 0 3px 0 0; border: 0px none;
}
a {
color: #857661; font-size: inherit; text-decoration: none;
}
a:hover {
color: rgb(60,60,60);
}
h1 {
padding-left: 0; margin-bottom: 10px; font-size: 21px; font-weight: bold; color: #FFF3CF;
}
table {
width: 700px;
}
table td {
font-size: 16px; padding: 5px; vertical-align: middle;
}
table td img.locked {
margin-left: -22px;
}
table td small {
display: block; color: #CFC98E; padding-left: 30px;
}
table tr {
background: #ffffff; width: 70%; color:#857661;
}
table thead tr td {
background: #FFF9DF; font-size: 12px; padding: 0px;
}
table thead tr td a {
font-size: 12px; display: block; padding: 5px;
}
table thead tr td a:hover {
background-color: #F6E49C;
}
table tr:hover {
background-color: #FFF9DF;
}
table td.size, table td.mtime {
white-space: nowrap; width: 12%; font-size: 14px;
}
table td.mtime {
width: 18%;
}
div.total {
background: #f8f8f8; padding: 2px;
}
#headerwrap {
background: #083844; padding: 10px 10px 5px; border-bottom: 5px solid #D6C47C;
}
#header {
width: 700px; margin: 0px auto; color: #FFF3CF;
}
#header a {
font-size:inherit; color: #DFD999;
}
#header a:hover {
color: #CFC98E;
}
#header ul {
list-style-type: none;
}
#header ul li {
float: left; margin-right: 5px; font-size: 15px;
}
#header ul a {
font-size: inherit;
}
#contentwrap {
margin: 20px auto; padding: 0; width: 700px; box-shadow: 0px 0px 10px #999;
}
#nothing {
background: #ffffff; color:#857661; font-size: 16px; padding: 10px;
}
#footer {
margin: 20px auto; width: 700px; color: #857661; font-size:12px; margin-top:10px; padding-left: 10px;
}
#footer small a {
font-size: inherit;
}
#search {
width: 100px; border: 0px none; border-bottom: solid 1px #999; color: #999; padding: 2px; height: 14px; font-size:12px; background: transparent;
}
.asc, .desc {
padding-left:15px; background-repeat: no-repeat;
}
.asc {
background-image: url('../../icons/default/asc.gif'); background-position: 3px 10px;
}
.desc {
background-image: url('../../icons/default/desc.gif'); background-position: 3px 8px;
}