Javascript libs caching
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 25 Mar 2008 10:47:12 +0000 (10:47 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 25 Mar 2008 10:47:12 +0000 (10:47 +0000)
admin/display_prefs.php
config.php
includes/main.inc
includes/page/header.inc
includes/session.inc
includes/ui/ui_view.inc

index 3dd369eabfb9674c4894f511bbdfa1777f23dc6c..cafb4527dbced802e896b8553edb2e7e7a4c2ee0 100644 (file)
@@ -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("");
 
index d3e74c8fab72182ce17d711ac85b23cfc270d803..105b5ba84e7fa26bc6cfecebd73d2aec7c884ea8 100644 (file)
@@ -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
        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;
 
 
        //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
index 5c52771d00cc0fd4b7979a229e1e22290ce9febe..fdad9cb7999f691e858a4cea0ecfb0193f614fe0 100644 (file)
@@ -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");
 
        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
index d71f39fe29e55a12fa5d56e0c5c91264f2e6e5ea..96f2660d605fd3c4e928d02cbec5e4a04b374173 100644 (file)
@@ -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 .= '<script language="javascript" type="text/javascript" src="'.
                $js_path . $jsfile . '"></script>';
        }
+       foreach($js_userlib as $jsfile) {
+         $js .= '<script language="javascript" type="text/javascript" src="'.
+           $jsfile . '"></script>';
+       }
        foreach($js_lib as $text) {
          $js .= $text;
        }
index c5d417f710d2b0d0dac559939b9573935c3bd27a..e8361df82db0c3221dd5cdef62b194190d5e0956 100644 (file)
 
     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");
                }
        }
 
-       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;
 
        //----------------------------------------------------------------------------------------
        check_page_security($page_security);
+
+
+
 ?>
\ No newline at end of file
index 08402fca44367e364e3270a5f1ea862edb5f703c..6c893e0f7f12fa9f2bf98f2d6629061393203e30 100644 (file)
@@ -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<script type=\"text/javascript\">\n"
                . "<!--\n"
                . "function recalcAccounts()\n"
@@ -588,7 +594,11 @@ function get_js_form_entry($edit_name, $sel_name, $next_name)
                . "}\n"
                . "-->\n"
                . "</script>\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 = "<style>
 #CCIFrame { display: none; left: 0px; position: absolute; top: 0px; height: 250px; width: 250px; z-index: 99;}
@@ -667,8 +667,25 @@ function get_js_date_picker()
 #CC .empty { background-color: #CCC; border: 1px solid #FFF;}
 </style>
 ";
-       $js .= "<script type=\"text/javascript\">
-<!--\n
+    add_js_source($js);
+    
+    if (!file_exists($fpath)) {
+    
+       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"));
+
+
+       $js = "
 function positionInfo(object) {
   var p_elm = object;
   this.getElementLeft = getElementLeft;
@@ -1060,23 +1077,30 @@ function changeCCMonth(change) {
   cC.changeMonth(change);
 }
 document.write(\"<iframe id='CCIframe' src='javascript:false;' frameBorder='0' scrolling='no'></iframe>\");
-document.write(\"<div id='CC'></div>\");
--->
-</script>
-";
-       return $js;
+document.write(\"<div id='CC'></div>\");";
+
+     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 =
-       "<script language=\"javascript\">
-function price_format(post, num, dec, label) {
+       $js = "function price_format(post, num, dec, label) {
        //num = num.toString().replace(/\\$|\\,/g,'');
        if(isNaN(num))
                num = \"0\";
@@ -1108,14 +1132,21 @@ function price_format(post, num, dec, label) {
                val = val.replace(/\\".$ds."/g,'.');
                return 1*val;
        }
-       </script>";
-  add_js_source($js);
+       ";
+
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
 }
 
 function add_js_allocate() {
-       $source =
-       "<script>
-       function allocate_all(doc) {
+    global $comp_path;
+    $fpath = $comp_path.'/'.user_company().'/js_cache/'.'allocate.js';
+
+    if (!file_exists($fpath)) {
+    
+       $js =
+       "function allocate_all(doc) {
        var amount = get_amount('amount'+doc);
        var unallocated = get_amount('un_allocated'+doc);
        var total = get_amount('total_allocated', 1);
@@ -1142,10 +1173,12 @@ function add_js_allocate() {
        price_format('left_to_allocate',amount+left, ".user_price_dec().", 1);
        price_format('amount'+doc, 0, ".user_price_dec().");
        price_format('total_allocated', total-amount, ".user_price_dec().", 1);
-       }
-       </script>";
-       add_js_user_num();
-       add_js_source($source);
+       }";
+
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
+    add_js_user_num();
 }
 
 function alert($msg)