diff --git a/config.php b/config.php
index b2ca3bf..25b0252 100644
--- a/config.php
+++ b/config.php
@@ -18,6 +18,9 @@ $config = array(
# show debug messages, for exechandler to always re-parse all files
'debug' => true,
+ # by default dList will sort by this
+ 'default_sort' => 'name',
+
// File system settings
@@ -44,9 +47,11 @@ $config = array(
// dList internal settings - don't change if you don't know what you're doing
'default_lang' => 'english',
- 'default_locale' => array('en', 'en_US'),
+ 'default_locale' => array('eng', 'en_US'),
'path_plugins' => array('plugins'),
'path_cache' => 'cache',
+
+ 'req_lang_ver' => '1.0.2',
diff --git a/exec/core.exc.php b/exec/core.exc.php
index 09c2031..715eeb5 100644
--- a/exec/core.exc.php
+++ b/exec/core.exc.php
@@ -12,7 +12,7 @@
Name: core
Priority: 40
Author: Jim Myhrberg
-Include: output.exc.php
+Include: output.exc.php, language.exc.php
*/
//_SCRIPT;
@@ -34,18 +34,14 @@ $_SERVER['SERVER_SIGNATURE'] = $serverinfo[1].'Port '.$_SERVER['SERVER_PORT'].$s
//>Section> define_constants:30
define('DIR_URL', $dir_url);
define('DIR_PATH', $dir_path);
-define('QUERY_STRING', $query_string);
-
define('DLIST_URL', $config->dlist_url);
-define('TEMPLATE', $config->template);
-define('TPL_PATH', 'templates/'.TEMPLATE.'/');
-define('TPL_URL', DLIST_URL.TPL_PATH);
//>Section> dynamic_vars
$do_readdir = true;
$do_render = true;
$do_sort_items = true;
+$do_sort_by = $config->default_sort;
$do_sort_reverse = false;
@@ -54,19 +50,20 @@ $do_sort_reverse = false;
//==========================
-//>Section> readdir
+//>Section> do_readdir
if ( $do_readdir ) {
//>Section> readdir.start
$dlist = new dirList();
//>Section> readdir.options
- if ( empty($do_sort_items) ) {
- $dlist->sort_items = false;
- } elseif (!empty($do_sort_reverse)) $dlist->reverse = true;
+ if ( $do_sort_items ) {
+ $dlist->sort_by = $do_sort_by;
+ if ( $do_sort_reverse ) $dlist->reverse = true;
+ } else $dlist->sort_items = false;
if ($config->show_hidden) $dlist->show_hidden = true;
if ( !$config->smartdate ) $dlist->use_smartdate = false;
//>Section> readdir.read
$dlist->read(DIR_PATH);
- //>Section> readdir.end
+ //>Section> do_readdir.end
}
//==========================
@@ -74,8 +71,6 @@ if ( $do_readdir ) {
//==========================
-//>Section> echo
-//print_r($dlist->list);
//_END;
diff --git a/exec/language.exc.php b/exec/language.exc.php
index c88b286..bcc3b16 100644
--- a/exec/language.exc.php
+++ b/exec/language.exc.php
@@ -22,7 +22,6 @@ Author: Jim Myhrberg
//>Section> init:10
if ( empty($config->language) ) $config->language = 'english';
-
if ( is_readable('languages/'.$config->language.'.lang.php') ) {
include('languages/'.$config->language.'.lang.php');
} elseif ( is_readable('languages/'.$config->default_lang.'.lang.php') ) {
@@ -31,7 +30,22 @@ if ( is_readable('languages/'.$config->language.'.lang.php') ) {
die("ERROR: Can't open language file.");
}
+
+//>Section> create_object:10
$lang = new lang();
+
+
+//>Section> warning:10
+if ( $lang->_version < $config->req_lang_ver ) {
+ echo 'WARNING: '.ucfirst($config->language).' language file is out of date and not fully compatible with this version of dList.';
+}
+
+
+//>Section> timer_string:10
+if ( stristr($lang->timer_string, '%s') != false ) $timer->pattern = $lang->timer_string;
+
+
+//>Section> setlocale:10
setlocale(LC_ALL, array_merge($lang->_locale, $config->default_locale));
diff --git a/exec/output.exc.php b/exec/output.exc.php
index 64d0f5e..4f67fe7 100644
--- a/exec/output.exc.php
+++ b/exec/output.exc.php
@@ -15,11 +15,68 @@ Author: Jim Myhrberg
*/
//_SCRIPT;
+//==========================
+//>STAGE> functions
+//==========================
+
+
+//>Section> sort_class.start
+class Sort {
+
+ //>Section> get_url
+ function get_url ($sortby) {
+ global $config;
+ $return = array();
+ $current_sort = ( empty($_REQUEST['sort']) ) ? $config->default_sort : $_REQUEST['sort'] ;
+
+ if ( $sortby == $current_sort ) {
+ if ($sortby != $config->default_sort) $return[] = 'sort='.$sortby;
+ if ( empty($_REQUEST['order']) || $_REQUEST['order'] != 'desc' ) {
+ $return[] = 'order=desc';
+ }
+ } else {
+ if ($sortby != $config->default_sort) {
+ $return[] = 'sort='.$sortby;
+ }
+ }
+
+ if ( empty($return) ) {
+ return DIR_URL;
+ } else {
+ $return = implode('&', $return);
+ return '?'.$return;
+ }
+ }
+
+ //Section sort_class.end
+}
+
+
//==========================
//>STAGE> init
//==========================
+//>After> core.define_constants:30
+define('TEMPLATE', $config->template);
+define('TPL_PATH', 'templates/'.TEMPLATE.'/');
+define('TPL_URL', DLIST_URL.TPL_PATH);
+define('SERVER_INFO', strip_tags($_SERVER['SERVER_SIGNATURE']));
+
+//>After> core.dynamic_vars
+if ( !empty($_REQUEST['order']) && $_REQUEST['order'] == 'desc' ) $do_sort_reverse = true;
+if ( !empty($_REQUEST['sort']) ) $do_sort_by = $_REQUEST['sort'];
+$is_root = ( DIR_URL != '' && DIR_URL != '/' ) ? false : true;
+
+
+//==========================
+//>STAGE> main
+//==========================
+
+
+
+
+
//==========================
//>STAGE> render
//==========================
diff --git a/languages/english.lang.php b/languages/english.lang.php
index 0ea1603..4a972f8 100644
--- a/languages/english.lang.php
+++ b/languages/english.lang.php
@@ -4,28 +4,30 @@ class lang {
// Language settings
var $_language = 'english';
- var $_version = 1.0;
+ var $_version = '1.0.3';
// Locale settings
- var $_locale = array('en', 'en_US');
+ var $_locale = array('eng', 'en_US');
// General strings
var $index_of = 'Index of';
+ var $parent_dir = 'Parent Directory';
- var $name = 'Name';
- var $size = 'Size';
- var $mtime = 'Date Modified';
- var $perms = 'Permissions';
- var $chmod = 'CHMOD';
- var $owner = 'Owner';
- var $group = 'Group';
+ var $name = 'Name';
+ var $size = 'Size';
+ var $mtime = 'Date Modified';
+ var $perms = 'Permissions';
+ var $chmod = 'CHMOD';
+ var $owner = 'Owner';
+ var $group = 'Group';
var $owner_id = 'Owner ID';
var $group_id = 'Group ID';
+ var $type = 'Type';
+ var $ext = 'Extension';
- var $page_generated = 'Page generated in';
- var $seconds = 'seconds';
+ var $timer_string = 'Page generated in %s seconds';
// Smart Date
diff --git a/languages/swedish.lang.php b/languages/swedish.lang.php
index e757acf..a64ac0e 100644
--- a/languages/swedish.lang.php
+++ b/languages/swedish.lang.php
@@ -4,15 +4,16 @@ class lang {
// Language settings
var $_language = 'svenska';
- var $_version = 1.0;
+ var $_version = '1.0.2';
// Locale settings
- var $_locale = array('sv', 'sv_SV'); // incorrect
-
+ var $_locale = array('sve', 'sv_SE');
+
// General
var $index_of = 'Index av';
+ var $parent_dir = 'Tidigare Mapp';
var $name = 'Namn';
var $size = 'Storlek';
@@ -23,9 +24,10 @@ class lang {
var $group = 'Grupp';
var $owner_id = 'Ägare ID';
var $group_id = 'Grupp ID';
+ var $type = 'Typ';
+ var $ext = 'Ext'; // incorrect translation
- var $page_generated = 'Sidan genererades på';
- var $seconds = 'sekunder';
+ var $timer_string = 'Sidan genererades på %s sekunder';
// Smart Date
diff --git a/libs/config.lib.php b/libs/config.lib.php
index 4e20375..a1b2b3e 100644
--- a/libs/config.lib.php
+++ b/libs/config.lib.php
@@ -33,12 +33,13 @@ class config {
// Parse settings from an array
function parse_array ($input, $overwrite=true) {
+ $pad = '';
if ( is_array($input) ) {
foreach( $input as $key => $value ) {
if ( is_array($value) ) {
+ if ( !empty($this->_config_pad) ) $key = $this->_config_pad.$key;
foreach( $value as $k => $v ) {
if ( ($empty = empty($this->$key)) || $overwrite ) {
- if ( !empty($this->_config_pad) ) $k = $this->_config_pad.$k;
$this->$key = ( $empty ) ? array($k=>$v) : array_merge($this->$key, array($k=>$v)) ;
}
}
diff --git a/libs/dirlist.lib.php b/libs/dirlist.lib.php
index a2f5f8f..e2faac5 100644
--- a/libs/dirlist.lib.php
+++ b/libs/dirlist.lib.php
@@ -4,7 +4,7 @@ class dirList {
/*
- Class: dirList v2.0.4 beta
+ Class: dirList v2.0.6 beta
Copyright © 2006 Jim Myhrberg. All rights reserved.
zynode@gmail.com
@@ -12,13 +12,16 @@ class dirList {
*/
// General settings
- var $default_sort = 'name,mtime,size';
+ var $sort_by = 'name';
var $folders_first = true;
var $show_hidden = false;
+
// Sorting
var $sort_items = true;
var $reverse = false;
+ var $sort_order = array();
+
// Smart date formatting
var $use_smartdate = true;
@@ -27,13 +30,7 @@ class dirList {
var $smartdate_time = '%H:%M';
var $standard_date_format = '%B %d, %Y, %H:%M';
- /*
- var $smartdate = '{date}, {time}';
- var $smartdate_date = 'F d, Y';
- var $smartdate_time = 'H:i';
- var $standard_date_format = 'F d, Y, H:i';
- */
-
+
// Smart date language settings
var $lang_tomorrow = 'Tomorrow';
var $lang_today = 'Today';
@@ -46,7 +43,6 @@ class dirList {
var $error = false;
var $parent;
var $list = array();
- var $sort_by = array();
var $stats_count = 0;
var $stats_files = 0;
@@ -56,6 +52,20 @@ class dirList {
// Construtor - does nothing, but is here just
// incase it might do something in the future...
function dirlist() {
+ // sorting orders
+ $this->sort_order = array(
+ 'name' => 'name,mtime,size',
+ 'size' => 'size,name,mtime',
+ 'mtime' => 'mtime,name,size',
+ 'type' => 'type,name,size,mtime',
+ 'ext' => 'ext,name,size,mtime',
+ 'group' => 'group,name,size,mtime',
+ 'owner' => 'owner,name,size,mtime',
+ 'chmod' => 'chmod,name,size,mtime',
+ 'perms' => 'chmod,name,size,mtime',
+ 'groupid' => 'groupid,name,size,mtime',
+ 'ownerid' => 'ownerid,name,size,mtime',
+ );
}
@@ -65,7 +75,8 @@ class dirList {
function read ($dir) {
if(!preg_match("/\/$/", $dir)) $dir .= '/';
- $this->sort_by = explode(',', $this->default_sort);
+ $sort_by = ( !empty($this->sort_order[$this->sort_by]) ) ? $this->sort_order[$this->sort_by] : $this->sort_order['name'] ;
+ $sort_by = explode(',', $sort_by);
if($dh = @opendir($dir)) {
$this->parent = $this->getDetails($dir);
while(false !== ($item = readdir($dh))) {
@@ -83,7 +94,7 @@ class dirList {
// sorting
if ( $this->sort_items ) {
$list_key = ( $this->folders_first ) ? $item_details['type'].'|' : '' ;
- foreach( $this->sort_by as $v ) {
+ foreach( $sort_by as $v ) {
if ( $v == 'size' ) $v = 'size_raw';
if ( $v == 'mtime' ) $v = 'mtime_raw';
$list_key .= ( $v == 'size_raw' || $v == 'mtime' ) ? str_pad($item_details[$v], 28, '0', STR_PAD_LEFT).'|' : $item_details[$v].'|' ;
diff --git a/libs/exechandler.lib.php b/libs/exechandler.lib.php
index facb3d8..c524747 100644
--- a/libs/exechandler.lib.php
+++ b/libs/exechandler.lib.php
@@ -4,7 +4,7 @@ class execHandler {
/*
- Class: execHandler v0.7.4 beta
+ Class: execHandler v0.7.5 beta
Copyright © 2006 Jim Myhrberg. All rights reserved.
zynode@gmail.com
@@ -43,7 +43,7 @@ class execHandler {
// Debug?
var $debug = false;
- var $show_debug_msg = true;
+ var $show_debug_msg = false;
// Misc. Settings
@@ -206,14 +206,16 @@ class execHandler {
function parse ($string, $file) {
- // parse order statistics
- $this->parsing_order[] = $file;
-
// Filter Out Main Content
$file_start = $this->addslashes($this->file_start);
$code_delim = $this->addslashes($this->code_delim);
$file_end = $this->addslashes($this->file_end);
- preg_match("/^".$file_start."$(.*)^".$code_delim."$(.*)^".$file_end."$/ims", $string, $code);
+ if ( preg_match("/^".$file_start."$(.*)^".$code_delim."$(.*)^".$file_end."$/ims", $string, $code) ) {
+ $this->parsing_order[] = $file;
+ } else {
+ $this->parsing_order[] = 'INVALID:'.$file;
+ return false;
+ }
// Read Settings
$settings = $this->read_file_settings($code[1], $file);
diff --git a/libs/speedometer.lib.php b/libs/speedometer.lib.php
index 4df82e4..553ce5d 100644
--- a/libs/speedometer.lib.php
+++ b/libs/speedometer.lib.php
@@ -4,12 +4,13 @@ class speedometer {
/*
- Class: Speedometer v0.1.1
+ Class: Speedometer v0.2
Created to simplify script execution statistics...
*/
var $digits = 6;
+ var $pattern = '%s'; // must contain %s
var $start;
var $time;
@@ -19,7 +20,17 @@ class speedometer {
$this->start = $this->getmicrotime();
}
- function end ($digits=false) {
+ // return with pattern
+ function end ($digits=false, $pattern=false) {
+ $end = $this->getmicrotime();
+ $digits = ( preg_match("/[0-9]{1,2}/", $digits) ) ? $digits : $this->digits ;
+ $pattern = ( stristr($pattern, '%s') != false ) ? $pattern : $this->pattern ;
+ $this->time = number_format( ($end - $this->start), $digits);
+ return str_replace('%s', $this->time, $pattern);
+ }
+
+ // return time only ignoring pattern
+ function term ($digits=false) {
$end = $this->getmicrotime();
$digits = ( preg_match("/[0-9]{1,2}/", $digits) ) ? $digits : $this->digits ;
return $this->time = number_format( ($end - $this->start), $digits);
diff --git a/resources/init.php b/resources/init.php
index 31ddda6..e8177d9 100644
--- a/resources/init.php
+++ b/resources/init.php
@@ -17,10 +17,10 @@ $config['default_scheme'] = 'http';
// process requested path
if ( preg_match("/^(.*?)\?(.*)$/i", $_SERVER['REQUEST_URI'], $dir_url) ) {
- $query_string = $dir_url[2];
+ # $query_string = $dir_url[2];
$dir_url = urldecode($dir_url[1]);
} else {
- $query_string = '';
+ # $query_string = '';
$dir_url = urldecode($_SERVER['REQUEST_URI']);
}
@@ -50,7 +50,7 @@ if ( !empty($redirect) ) {
$scheme = parse_url($_SERVER['SCRIPT_URI']);
$scheme = $scheme['scheme'];
} else $scheme = $config['default_scheme'];
- if( !empty($query_string) ) $query_string = '?'.$query_string;
+ if( !empty($_SERVER['QUERY_STRING']) ) $query_string = '?'.$_SERVER['QUERY_STRING'];
header("Location: ".$scheme.'://'.$_SERVER['HTTP_HOST'].$dir_url.$redirect.$query_string);
exit;
}
diff --git a/templates/simple/_details.phtml b/templates/simple/_details.phtml
new file mode 100644
index 0000000..6a6c814
--- /dev/null
+++ b/templates/simple/_details.phtml
@@ -0,0 +1,34 @@
+
\ No newline at end of file
diff --git a/templates/simple/_icons.phtml b/templates/simple/_icons.phtml
new file mode 100644
index 0000000..36406d6
--- /dev/null
+++ b/templates/simple/_icons.phtml
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/templates/simple/_tiles.phtml b/templates/simple/_tiles.phtml
new file mode 100644
index 0000000..2d8e9df
--- /dev/null
+++ b/templates/simple/_tiles.phtml
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/templates/simple/index.phtml b/templates/simple/index.phtml
index 77d62cd..043cd6a 100644
--- a/templates/simple/index.phtml
+++ b/templates/simple/index.phtml
@@ -4,6 +4,7 @@
=$lang->index_of.' '.DIR_URL?>
+