]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Added config file processing for system settings.
authorMetabox <redacted>
Fri, 26 Apr 2019 08:57:00 +0000 (18:57 +1000)
committerMetabox <redacted>
Fri, 26 Apr 2019 08:57:00 +0000 (18:57 +1000)
htdocs/cgi-bin/config.cgi
htdocs/cgi-bin/login_ctr.cgi
htdocs/cgi-bin/main.cgi
htdocs/cgi-bin/main.cnf [new file with mode: 0644]
htdocs/cgi-bin/remove.cgi
htdocs/cgi-bin/wsrc/main.js

index 2f040d3432414b550f378d6d2ff30073b6a454a8..d97705b0dd45021b2b97b31fdf434d8616199b33 100755 (executable)
@@ -21,9 +21,11 @@ use Text::CSV;
 #DEFAULT SETTINGS HERE!
 our $REC_LIMIT   = 25;
 our $TIME_ZONE   = 'Australia/Sydney';
+our $LANGUAGE     = 'English';
 our $PRC_WIDTH   = '60';
 our $LOG_PATH    = '../../dbLifeLog/';
 our $SESSN_EXPR  = '+30m';
+our $DATE_UNI    = '0';
 our $RELEASE_VER = '1.3';
 #END OF SETTINGS
 
@@ -106,8 +108,6 @@ my $tbl = '<table id="ec" class="tbl" name="cats" border="0" width="'.$PRC_WIDTH
        }
  }
 
-       
-
 my  $frm = qq(
         <form id="frm_config" action="config.cgi">).$tbl.qq(
          <tr class="r1">
@@ -116,15 +116,15 @@ my  $frm = qq(
                 <td><input type="text" name="cade" value="" size="64"/></td>            
                </tr>
          <tr class="r1">
-                <td colspan="2"><input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
-                <td colspan="1"><input type="submit" value="Change"/></td>
+                <td colspan="2"><a href="#bottom">&#x21A1;</a>&nbsp;&nbsp;&nbsp;<input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
+                <td colspan="1"><b>Log Configuration In -> $dbname</b>&nbsp;<input type="submit" value="Change"/></td>
                </tr>
                <tr class="r1">
                  <td colspan="3"><div style="text-align:left; float"><font color="red">WARNING!</font> 
-                  Removing and changing categories is permanent!<br>Adding one must have unique ID. <br>
-                  Blanking an category name will remove and seek change LOG <br>records to Unspecified (id 1)! <br>
-                        Also ONLY the category <b>Unspecified</b> You can't REMOVE!<br>If changing here things?
-                        Make a backup! (copy existing db file)</div>
+                  Removing or changing categories is permanent! Each category one must have an unique ID. 
+                        Blank a category name to remove it. LOG records will change to the Unspecified (id 1) category! <br>
+                        The category <b>Unspecified</b>, can't be removed!
+                        </div>
                        </td>                   
                </tr>
                </table><input type="hidden" name="cchg" value="1"/></form><br>);
@@ -143,13 +143,26 @@ while(my @row = $dbs->fetchrow_array()) {
           my $n = $row[1];
                 my $v = $row[2];
                 if($n eq "TIME_ZONE"){
-                        $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
-                        if($tz){
-                                $v = $tz;
-                        }
-                        $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
-                        
-                }elsif($n ne "RELEASE_VER"){            
+                         $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
+                         if($tz){
+                                  $v = $tz;
+                         }
+                         $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';         
+                }
+                elsif($n eq "DATE_UNI"){
+                         my($l,$u)=("","");
+                               if($v == 0){
+                                        $l = "SELECTED"
+                               }
+                               else{
+                            $u = "SELECTED"
+                               }
+        $v = qq(<select id="dumi" name="var$i">
+                                        <option value="0" $l>Locale</option>
+                                                                <option value="1" $u>Universal</option>
+                                                               </select>);
+                }
+                elsif($n ne "RELEASE_VER"){             
                         $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
                 }               
           $tbl = $tbl. 
@@ -171,15 +184,12 @@ my  $frmVars = qq(
 #Page printout from here!
 #
 my $prc_hdr = $PRC_WIDTH-2;
-print '<center>';
-print "<div class=\"r1\" style=\"width:$prc_hdr%; padding:12px;margin:5px;\"><b>Log Configuration In -> $dbname</b></div>";
+  print '<center><a name="top"/>';
        print "\n<div>\n" . $frm ."\n</div>\n";
        print "\n<div >\n" . $frmVars."\n</div>\n";     
        print "\n<div>\nSTATUS:" .$status. "\n</div>\n";        
        print qq(
                      <br><div><a href="main.cgi">Back to Main Log</a></div><br><hr>\n
-
-
                                        <table border=0>
                                                <tr><td><H3>CSV File Format</H3></td></tr>\n
                                                <form action="config.cgi" method="post" enctype="multipart/form-data">\n
@@ -198,10 +208,11 @@ print "<div class=\"r1\" style=\"width:$prc_hdr%; padding:12px;margin:5px;\"><b>
                                        </table><hr>
 
 
-                                       <br><div>[<a href="config.cgi?csv=1">Export Log to CSV</a>] &nbsp;
+                                       <br><div><a href="#top">&#x219F;</a>&nbsp;&nbsp;&nbsp;[<a href="config.cgi?csv=1">Export Log to CSV</a>] &nbsp;
                                         [<a href="config.cgi?csv=2">View the Log in CSV Format</a>]</div>\n                                    
                                        <br><div>[<a href="config.cgi?csv=3">Export Categories to CSV</a>] &nbsp;
-                                       [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]</div>\n<hr>
+                                       [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]<a name="bottom"/></div>\n                                    
+                                       <hr>
        );
 
 print '</center>';
@@ -314,27 +325,7 @@ catch{
 }
 
 
-sub getConfiguration{
-       try{
-               $dbs = $db->prepare("SELECT * FROM CONFIG;");
-               $dbs->execute();
 
-               while (my @r=$dbs->fetchrow_array()){
-                       
-                       switch ($r[1]) {
-                               case "REC_LIMIT" {$REC_LIMIT=$r[2]}
-                               case "TIME_ZONE" {$TIME_ZONE=$r[2]}
-                               case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}             
-                               case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
-                               else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
-                       }
-
-               }
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b></font>:".$_;
-       }
-}
 
 sub changeSystemSettings{
        try{
@@ -348,6 +339,8 @@ sub changeSystemSettings{
                                                case "TIME_ZONE" {$TIME_ZONE=$var;  updConfSetting($r[0],$var)}
                                                case "PRC_WIDTH" {$PRC_WIDTH=$var;  updConfSetting($r[0],$var)}         
                                                case "SESSN_EXPR"{$SESSN_EXPR=$var; updConfSetting($r[0],$var)}
+                                               case "DATE_UNI"  {$DATE_UNI=$var; updConfSetting($r[0],$var)}
+                                               case "LANGUAGE"  {$LANGUAGE=$var; updConfSetting($r[0],$var)}
                                         }
                                }
                        }
@@ -370,8 +363,6 @@ sub updConfSetting{
        }
 }
 
-
-
 sub exportLogToCSV{
        try{
                  
@@ -402,6 +393,7 @@ sub exportLogToCSV{
                print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
        }
 }
+
 sub exportCategoriesToCSV{
        try{
                  
@@ -529,3 +521,29 @@ sub updateLOGDB{
        }
        }
 }
+
+
+sub getConfiguration{
+       try{
+               $dbs = $db->prepare("SELECT * FROM CONFIG;");
+               $dbs->execute();
+
+               while (my @r=$dbs->fetchrow_array()){
+                       
+                       switch ($r[1]) {
+                               case "REC_LIMIT" {$REC_LIMIT=$r[2]}
+                               case "TIME_ZONE" {$TIME_ZONE=$r[2]}
+                               case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}             
+                               case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
+                               case "DATE_UNI"  {$DATE_UNI=$r[2]}
+                               case "LANGUAGE"  {$LANGUAGE=$r[2]}                              
+                               else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
+                       }
+
+               }
+       }
+       catch{
+               print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+       }
+
+}
\ No newline at end of file
index a78298cd8a2a55382e86693dc566a4892cb04c2d..8872887fcee03388fb58f089f11a3d1d79bbc066 100755 (executable)
@@ -16,13 +16,14 @@ use DateTime::Format::SQLite;
 use DateTime::Duration;
 use Text::CSV;
 
-
 #DEFAULT SETTINGS HERE!
 our $REC_LIMIT   = 25;
 our $TIME_ZONE   = 'Australia/Sydney';
+our $LANGUAGE     = 'English';
 our $PRC_WIDTH   = '60';
 our $LOG_PATH    = '../../dbLifeLog/';
 our $SESSN_EXPR  = '+30m';
+our $DATE_UNI    = '0';
 our $RELEASE_VER = '1.3';
 #END OF SETTINGS
 
@@ -181,24 +182,16 @@ try{
        $st->execute();
   if(!$st->fetchrow_array()) {
     my $stmt = qq(
-               CREATE TABLE CONFIG(
-                         ID TINY PRIMARY KEY NOT NULL,
-                               NAME VCHAR(16),
-                               VALUE VCHAR(64)
-               );
+                                                                               CREATE TABLE CONFIG(
+                                                                                               ID TINY PRIMARY KEY NOT NULL,
+                                                                                               NAME VCHAR(16),
+                                                                                               VALUE VCHAR(64)
+                                                                               );
                );
                $rv = $db->do($stmt);
-               populateConfig($db);
-               
-       }
-       else{
-               #TODO Check table and update existing table for subsequent releases with new settings.
-               $st = $db->prepare('SELECT * FROM CONFIG');
-               $st->execute();
-       if(!$st->fetchrow_array()) {
-                        populateConfig($db);
-               }
        }
+  populateConfig($db);
+       
 }
  catch{                
          print $cgi->header;
@@ -207,6 +200,51 @@ try{
                exit;
  }
 }
+sub populateConfig{
+
+               open(my $fh, '<', './main.cnf' ) or die "Can't open main.cnf: $!";
+               my $db = shift;
+               my ($did,$name, $value);
+
+               my $st = $db->prepare("SELECT count(*) FROM CONFIG;");
+                  $st->execute();
+               my $cnt = $st->fetchrow_array();
+               if($cnt != 0){
+                        return;
+               }
+try{           
+    while (my $line = <$fh>) {
+                                       chomp $line;                            
+                                       my %hsh = $line =~ m[(\S+)\s*=\s*(\S+)]g;
+                                       for my $key (keys %hsh) {
+                                                               my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g;                                                                    
+                                                               
+                                               for my $id (keys %nash) {
+                                                           $did = $id;
+                                                                 $name  = $nash{$id};
+                                                                 $value = $hsh{$key};
+                                                        my $st = $db->prepare("SELECT * FROM CONFIG WHERE NAME LIKE '$name';");
+                                                                       $st->execute();                                                         
+                                                        if(!$st->fetchrow_array()){
+                                                                       #TODO Check if script id is unique to database? If not script prevails to database entry. 
+                                                                       #if user setting from previous release, must be migrated later.
+                                                                       $st = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?)');
+                                                                       $did = $id;
+                                                                       $st->execute($id, $name,$value);                  
+                                                               }
+                                                       }
+                                       }
+               }      
+    
+    close $fh; 
+ } catch{              
+         close $fh;    
+         print $cgi->header;
+               print "<font color=red><b>SERVER ERROR</b></font> [$did, $name,$value]:".$_;
+    print $cgi->end_html;
+               exit;
+ }
+}
 
 sub selSQLTbl{
          my $name = $_[0];
@@ -228,16 +266,6 @@ sub insertDefCats{
                $st->finish();
 }
 
-sub populateConfig{
-               my  $db = shift;
-               my  $st = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?)');
-                               $st->execute(0,"RELEASE_VER",$RELEASE_VER);
-                               $st->execute(1,"REC_LIMIT",  $REC_LIMIT);
-                               $st->execute(3,"TIME_ZONE",  $TIME_ZONE);
-                               $st->execute(5,"PRC_WIDTH",  $PRC_WIDTH);
-                               $st->execute(8,"SESSN_EXPR", $SESSN_EXPR);
-}
-
 
 sub removeOldSessions{
        opendir(DIR, $LOG_PATH);
index 70bd92265429e08e52bb916145253bf91ad59c31..7600a8e946bab902cd6aa174621bd3360badb01c 100755 (executable)
@@ -16,6 +16,7 @@ use DBI;
 use DateTime;
 use DateTime::Format::SQLite;
 use DateTime::Duration;
+use Date::Language;
 use Date::Parse;
 use Time::localtime;
 use Regexp::Common qw /URI/;
@@ -23,9 +24,11 @@ use Regexp::Common qw /URI/;
 #DEFAULT SETTINGS HERE!
 our $REC_LIMIT   = 25;
 our $TIME_ZONE   = 'Australia/Sydney';
+our $LANGUAGE     = 'English';
 our $PRC_WIDTH   = '60';
 our $LOG_PATH    = '../../dbLifeLog/';
 our $SESSN_EXPR  = '+30m';
+our $DATE_UNI    = '0';
 our $RELEASE_VER = '1.3';
 #END OF SETTINGS
 
@@ -81,9 +84,10 @@ print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8",
             );   
 my $rv;
 my $st;
+my $lang = Date::Language->new($LANGUAGE);
 my $today = DateTime->now;
    $today->set_time_zone( $TIME_ZONE );
-
+        
 
 my $stmtCat = "SELECT * FROM CAT;";
 my $stmt    = "SELECT rowid, ID_CAT, DATE, LOG, AMMOUNT FROM LOG ORDER BY rowid DESC, DATE DESC;";
@@ -107,7 +111,6 @@ my $c_sel = 1;
 
 $cats = $cats.'</select>';
 
-
 my $tbl = qq(<form id="frm_log" action="remove.cgi" onSubmit="return formDelValidation();">
 <table class="tbl" border="0" width="$PRC_WIDTH%">
 <tr class="hdr">
@@ -117,7 +120,6 @@ my $tbl = qq(<form id="frm_log" action="remove.cgi" onSubmit="return formDelVali
        <th class="tbl">Category</th><th>Edit</th>
 </tr>);
 
-
 if($rs_keys){
        
        my @keywords = split / /, $rs_keys;
@@ -161,8 +163,6 @@ else{
  #
  # Enable to see main query statement issued!
  #print $cgi->pre("### -> ".$stmt);
-
-
 my $tfId = 0;
 my $id = 0;
 my $tbl_start = index $stmt, "<=";
@@ -285,15 +285,22 @@ while(my @row = $st->fetchrow_array()) {
        }elsif(1 == $row[1]){
                $log = "<font color='midnightblue' style='font-weight:bold;font-style:italic'>$log</font>";
        }
-       my $dty=$dt->ymd;
+       
+       my ($dty, $dtf) = $dt->ymd;
        my $dth=$dt->hms;
+       if($DATE_UNI==1){
+                $dtf = $dty;
+       }
+       else{
+                $dtf= $lang->time2str("%d %b %Y", $dt->epoch);
+       }
        $tbl .= qq(<tr class="r$tfId">
-               <td id="y$id" width="10%">$dty</td>
+               <td width="15%">$dtf<input id="y$id" type="hidden" value="$dty"/></td>
                <td id="t$id" width="10%" class="tbl">$dth</td>
-               <td id="v$id" class="log">$log</td>
+               <td id="v$id" class="log" width="40%">$log</td>
                <td id="a$id" width="10%" class="tbl">$amm</td>
                <td id="c$id" width="10%" class="tbl">$ct</td>
-               <td width="110px;">
+               <td width="20%">
                        <input class="edit" type="button" value="Edit" onclick="return edit($id);"/>
                        <input name="chk" type="checkbox" value="$id"/>
                </td>
@@ -621,19 +628,26 @@ try  {
 
 
 sub getConfiguration{
-               my $st = $_[0]->prepare("SELECT * FROM CONFIG;");
-                  $st->execute(); 
+       my $db = shift;
+       try{
+               $st = $db->prepare("SELECT * FROM CONFIG;");
+               $st->execute();
+
                while (my @r=$st->fetchrow_array()){
                        
                        switch ($r[1]) {
-
                                case "REC_LIMIT" {$REC_LIMIT=$r[2]}
                                case "TIME_ZONE" {$TIME_ZONE=$r[2]}
-                               case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}
-                               case "SESSN_EXPR"{$SESSN_EXPR=$r[2]}
+                               case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}             
+                               case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
+                               case "DATE_UNI"  {$DATE_UNI=$r[2]}
+                               case "LANGUAGE"  {$LANGUAGE=$r[2]}                              
                                else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
-
                        }
 
                }
-}
+       }
+       catch{
+               print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+       }
+}
\ No newline at end of file
diff --git a/htdocs/cgi-bin/main.cnf b/htdocs/cgi-bin/main.cnf
new file mode 100644 (file)
index 0000000..a6dc3ef
--- /dev/null
@@ -0,0 +1,10 @@
+
+00|$RELEASE_VER = 1.3
+01|$REC_LIMIT   = 25
+03|$TIME_ZONE   = Australia/Sydney
+05|$PRC_WIDTH   = 60;
+08|$LOG_PATH    = ../../dbLifeLog/
+10|$SESSN_EXPR  = +30m
+12|$DATE_UNI    = 0
+14|$LANGUAGE    = English
+
index c3e4cb826c1af445d979b448db1a3e9bc8c2e2c7..8c6b3ca2ab316a2c30b170603281ec063606d33c 100755 (executable)
@@ -105,7 +105,7 @@ sub DisplayDateDiffs{
            <tr class="r0"><td colspan="2"><b>* DATE DIFFERENCES *</b></td></tr>';
 
     $stm = 'SELECT DATE, LOG FROM LOG WHERE '; 
-my  @prms = $cgi->param('chk');
+    my  @prms = $cgi->param('chk');
 
        foreach (@prms){
                $stm .= "rowid = '" . $_ ."'";
@@ -123,11 +123,10 @@ my  @prms = $cgi->param('chk');
                 my $dt = DateTime::Format::SQLite->parse_datetime( $row[0] );
                 my $dif = dateDiff($dt_prev, $dt);
                 $tbl .= '<tr class="r1"><td>'. $dt->ymd . '</td> 
-                             </td><td style="text-align:left;">'.$row[1]."</td></tr>".
-                         '<tr class="r0"><td colspan="2">'.$dif. '</td> </tr>';        
+                               </td><td style="text-align:left;">'.$row[1]."</td></tr>".
+                        '<tr class="r0"><td colspan="2">'.$dif. '</td> </tr>'; 
                $dt_prev = $dt;
        }
-
     $tbl .= '</table>';
 
 print '<center><div>'.$tbl.'</div><br><div><a href="main.cgi">Back to Main Log</a></div></center>';
index 9accd3a24bc9e04a220e41073eb3e1d0eb00c57a..7d7d29c338b662aafe1ec4d0a97692ef37535d04 100644 (file)
@@ -89,7 +89,7 @@ function edit(row) {
     } else {
         document.getElementById("el").value = ev_v.innerText;
     }
-    document.getElementById("ed").value = ed_v.innerText + " " + et_v.innerText;
+    document.getElementById("ed").value = ed_v.value + " " + et_v.innerText;
     document.getElementById("am").value = ea_v.innerText;
     //Change selected catergory
     for (var i = 0, j = ec.options.length; i < j; ++i) {