From 80fd008b9d9a542810244b3b3a12885154d7953d Mon Sep 17 00:00:00 2001 From: jim Date: Tue, 4 Apr 2006 23:15:55 +0000 Subject: [PATCH] - made simple template almost feature complete by implementing view modes and more - other general fixes to things a bit all over the place git-svn-id: file:///Users/jimeh/Desktop/dlist/trunk@12 a5845835-ea0f-0410-a762-dd0bfe9bfde8 --- config.php | 7 +- exec/core.exc.php | 21 ++-- exec/language.exc.php | 16 ++- exec/output.exc.php | 57 ++++++++++ languages/english.lang.php | 24 ++-- languages/swedish.lang.php | 12 +- libs/config.lib.php | 3 +- libs/dirlist.lib.php | 35 ++++-- libs/exechandler.lib.php | 14 ++- libs/speedometer.lib.php | 15 ++- resources/init.php | 6 +- templates/simple/_details.phtml | 34 ++++++ templates/simple/_icons.phtml | 13 +++ templates/simple/_tiles.phtml | 15 +++ templates/simple/index.phtml | 44 ++------ templates/simple/javascripts/main.js | 30 +++++ templates/simple/render.exc.php | 10 +- templates/simple/settings.php | 10 ++ templates/simple/stylesheets/screen.css | 141 ++++++++++++++++++++++-- view.php | 9 +- 20 files changed, 411 insertions(+), 105 deletions(-) create mode 100644 templates/simple/_details.phtml create mode 100644 templates/simple/_icons.phtml create mode 100644 templates/simple/_tiles.phtml create mode 100644 templates/simple/javascripts/main.js 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 @@ + + + + + + + + + + + + + + + + + + + + list as $key => $item): ?> + + + + + + + + + +
name?>size?>mtime?>perms?>owner?>
..--
+ + + +
\ 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 @@ +
+ +
    + +
  • ..

    parent_dir?>

  • + + list as $key => $item): $info = ($item['type'] == 'file') ? $item['size'] : $item['mtime'] ;?> +
  • + +
+
\ 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 @@ +
+ +
    + +
  • + ..parent_dir?>
  • + + list as $key => $item): $info = ($item['type'] == 'file') ? $item['size'] : $item['mtime'] ;?> +
  • +
  • + +
+
\ 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?> +