From be2f084444559f98377583ea35807a4c672122c6 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Tue, 25 Mar 2008 10:47:12 +0000 Subject: [PATCH] Javascript libs caching --- admin/display_prefs.php | 4 +- config.php | 40 ++++++++--------- includes/main.inc | 53 ++++++++++++++++++---- includes/page/header.inc | 7 ++- includes/session.inc | 31 +++++++++---- includes/ui/ui_view.inc | 97 +++++++++++++++++++++++++++------------- 6 files changed, 158 insertions(+), 74 deletions(-) diff --git a/admin/display_prefs.php b/admin/display_prefs.php index 3dd369ea..cafb4527 100644 --- a/admin/display_prefs.php +++ b/admin/display_prefs.php @@ -25,7 +25,9 @@ if (isset($_POST['setprefs'])) $_POST['theme'], $_POST['page_size']); language::set_language($_POST['language']); - + + flush_dir($comp_path.'/'.user_company().'/js_cache'); + if (user_theme() != $theme) reload_page(""); diff --git a/config.php b/config.php index d3e74c8f..105b5ba8 100644 --- a/config.php +++ b/config.php @@ -9,25 +9,6 @@ | | \--------------------------------------------------*/ -/* - // Make sure this directory exists and is writable! - $session_save_path = dirname(__FILE__).'/tmp/'; - -*/ - $session_save_path = session_save_path(); - if (strpos($session_save_path, ";") !== false) - $session_save_path = substr($session_save_path, strpos($session_save_path, ";") + 1); - - if (isset($session_save_path)) - { - session_save_path($session_save_path); - unset($session_save_path); - } - if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_to_root'])) - die("Restricted access"); - include_once($path_to_root . "/config_db.php"); - include_once($path_to_root . "/includes/lang/language.php"); - //-------------------------------------------------- // User configurable variables @@ -37,9 +18,13 @@ Debugging info level also determined by settings in PHP.ini if $debug=1 show debugging info, dont show if $debug=0 */ +if (!isset($path_to_root)) +//if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_to_root'])) + die("Restricted access"); + $debug = 1; $show_sql = 0; - $go_debug = 0; + $go_debug = 1; if ($go_debug == 1) { error_reporting(E_ALL); @@ -74,6 +59,9 @@ /* Integrated base Wiki Help URL or null if not used */ $help_base_url = $path_to_root.'/modules/wiki/index.php?n='._('Help').'.'; + /* per user data/cache directory */ + $comp_path = $path_to_root.'/company'; + /* allow alpha characters in accounts. 0 = numeric, 1 = alpha numeric, 2 = uppercase alpha numeric */ $accounts_alpha = 0; @@ -176,6 +164,14 @@ //MySQL Backup and Restore Settings - define("BACKUP_PATH", "/admin/backup/"); - +if(isset($_SESSION["wa_current_user"])) { + define("BACKUP_PATH", $comp_path.'/'.user_company()."/backup/"); +} + // static js files path + $js_path = $path_to_root.'/js/'; + // standard external js scripts included in all files + $js_static = array('behaviour.js'); + // additional js source included in header + $js_lib = $js_userlib = array(); + ?> \ No newline at end of file diff --git a/includes/main.inc b/includes/main.inc index 5c52771d..fdad9cb7 100644 --- a/includes/main.inc +++ b/includes/main.inc @@ -9,7 +9,7 @@ include_once($path_to_root . "/includes/references.inc"); include_once($path_to_root . "/includes/prefs/sysprefs.inc"); include_once($path_to_root . "/includes/db/comments_db.inc"); - include_once($path_to_root . "/includes/db/sql_functions.inc"); + include_once($path_to_root . "/includes/db/sql_functions.inc"); include_once($path_to_root . "/admin/db/users_db.inc"); include_once($path_to_root . "/includes/ui/ui_view.inc"); @@ -36,21 +36,56 @@ page_footer($no_menu, $is_index); } - - function add_js_file($filename) - { + + function flush_dir($path) { + $dir = opendir($path); + while(false !== ($fname = readdir($dir))) { + if($fname=='.' || $fname=='..') continue; + if(is_dir($path.'/'.$fname)) { + flush_dir($path.'/'.$fname); + rmdir($path.'/'.$fname); + } else + unlink($path.'/'.$fname); + } + } + + function cache_js_file($fpath, $text) + { + + // FIX compress text ... + + $file = fopen($fpath, 'w'); + if (!$file) return false; + if (!fwrite($file, $text)) return false; + return fclose($file); + + } + + function add_js_file($filename) + { global $js_static; + $search = array_search($filename, $js_static); if ($search === false || $search === null) // php>4.2.0 returns null - $js_static[] = $filename; - } + $js_static[] = $filename; + } + + function add_js_ufile($filename) + { + global $js_userlib; + + $search = array_search($filename, $js_userlib); + if ($search === false || $search === null) // php>4.2.0 returns null + $js_userlib[] = $filename; + } - function add_js_source($text) - { + function add_js_source($text) + { global $js_lib; $search = array_search($text, $js_lib); if ($search === false || $search === null) // php>4.2.0 returns null $js_lib[] = $text; - } + } + ?> \ No newline at end of file diff --git a/includes/page/header.inc b/includes/page/header.inc index d71f39fe..96f2660d 100644 --- a/includes/page/header.inc +++ b/includes/page/header.inc @@ -32,7 +32,7 @@ function page_header($title, $no_menu=false, $is_index=false, $onload="", $js="" // titles and screen header global $db_connections, $path_to_root, $def_app, $applications, $help_base_url, $help_page_url, $use_popup_windows, - $js_lib, $js_static, $js_path; + $js_lib, $js_static, $js_path, $js_userlib, $comp_path; if (isset($_GET['ajax'])) return; @@ -48,6 +48,7 @@ function page_header($title, $no_menu=false, $is_index=false, $onload="", $js="" $js = get_js_open_window(900, 500); } + add_js_user_num(); // add user native numeric input functions // javascript includes collect add_js_source($js); $js =''; @@ -55,6 +56,10 @@ function page_header($title, $no_menu=false, $is_index=false, $onload="", $js="" $js .= ''; } + foreach($js_userlib as $jsfile) { + $js .= ''; + } foreach($js_lib as $text) { $js .= $text; } diff --git a/includes/session.inc b/includes/session.inc index c5d417f7..e8361df8 100644 --- a/includes/session.inc +++ b/includes/session.inc @@ -16,6 +16,25 @@ include_once($path_to_root . "/includes/current_user.inc"); +/* + // Make sure this directory exists and is writable! + $session_save_path = dirname(__FILE__).'/tmp/'; +*/ + + $session_save_path = session_save_path(); + if (strpos($session_save_path, ";") !== false) + $session_save_path = substr($session_save_path, strpos($session_save_path, ";") + 1); + + if (isset($session_save_path)) + { + session_save_path($session_save_path); + unset($session_save_path); + } + if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_to_root'])) + die("Restricted access"); + include_once($path_to_root . "/config_db.php"); + include_once($path_to_root . "/includes/lang/language.php"); + include_once($path_to_root . "/config.php"); include_once($path_to_root . "/includes/main.inc"); @@ -103,15 +122,6 @@ } } - global $js_lib, $js_static, $js_path; - $js_path = $path_to_root.'/js/'; - // standard external js scripts included in all files - $js_static = array('behaviour.js'); - // additional js source included in header - $js_lib = array(); - - add_js_user_num(); // add user native numeric input functions - // Run with debugging messages for the system administrator(s) but not anyone else /*if (in_array(15, $security_groups[$_SESSION["AccessLevel"]])) { $debug = 1; @@ -121,4 +131,7 @@ //---------------------------------------------------------------------------------------- check_page_security($page_security); + + + ?> \ No newline at end of file diff --git a/includes/ui/ui_view.inc b/includes/ui/ui_view.inc index 08402fca..6c893e0f 100644 --- a/includes/ui/ui_view.inc +++ b/includes/ui/ui_view.inc @@ -555,6 +555,12 @@ function get_js_open_window($width, $height) function get_js_form_entry($edit_name, $sel_name, $next_name) { + global $comp_path; + $fpath = $comp_path.'/'.user_company().'/js_cache/form_entry.js'; + + if (!file_exists($fpath)) { + + $js = "\n\n"; - return $js; + cache_js_file($fpath, $js); + } + add_js_ufile($fpath); + + return ''; } function get_js_set_focus($name) @@ -633,18 +643,8 @@ function get_js_png_fix() function get_js_date_picker() { - global $dateseps, $date_system; - - $how = user_date_format(); // 0 = us/ca, 1 = eu, au, nz, 2 = jp, sw - $sep = $dateseps[user_date_sep()]; // date separator - $wstart = (($date_system == 1 || $date_system == 2) ? 6 : ($how == 0 ? 0 : 1)); // weekstart (sun = 0, mon = 1) - $months = array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")); - $wdays = array(_("Su"),_("Mo"),_("Tu"),_("We"),_("Th"),_("Fr"),_("Sa")); - $back = _("Back"); - if ($date_system == 1) - list($cyear, $cmon, $cday) = gregorian_to_jalali(date("Y"), date("n"), date("j")); - else if ($date_system == 2) - list($cyear, $cmon, $cday) = gregorian_to_islamic(date("Y"), date("n"), date("j")); + global $comp_path; + $fpath = $comp_path.'/'.user_company().'/js_cache/'.'date_picker.js'; $js = " "; - $js .= " -"; - return $js; +document.write(\"
\");"; + + cache_js_file($fpath, $js); + } + add_js_ufile($fpath); + + return ''; } + // // Javascript conversions to/from user numeric format. // function add_js_user_num() { + + global $comp_path; + $fpath = $comp_path.'/'.user_company().'/js_cache/'.'user_num.js'; + + if (!file_exists($fpath)) { + global $thoseps, $decseps; $ts = $thoseps[user_tho_sep()]; $ds = $decseps[user_dec_sep()]; - $js = - ""; - add_js_source($js); + "; + + cache_js_file($fpath, $js); + } + add_js_ufile($fpath); } function add_js_allocate() { - $source = - ""; - add_js_user_num(); - add_js_source($source); + }"; + + cache_js_file($fpath, $js); + } + add_js_ufile($fpath); + add_js_user_num(); } function alert($msg) -- 2.30.2