From: Metabox Date: Sat, 10 Aug 2019 01:02:24 +0000 (+1000) Subject: Sun stable v.1.5 Initial. Knock your socks off. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=c9a80411b099ea472160231ca5763766747827b0;p=LifeLog.git Sun stable v.1.5 Initial. Knock your socks off. --- diff --git a/htdocs/cgi-bin/config.cgi b/htdocs/cgi-bin/config.cgi index 54051bd..0278f1d 100755 --- a/htdocs/cgi-bin/config.cgi +++ b/htdocs/cgi-bin/config.cgi @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# Programed in vim by: Will Budic +# Programed by: Will Budic # Open Source License -> https://choosealicense.com/licenses/isc/ # use strict; @@ -19,20 +19,22 @@ use DateTime::Duration; use Text::CSV; #DEFAULT SETTINGS HERE! -our $REC_LIMIT = 25; -our $TIME_ZONE = 'Australia/Sydney'; -our $LANGUAGE = 'English'; -our $PRC_WIDTH = '70'; -our $LOG_PATH = '../../dbLifeLog/'; -our $SESSN_EXPR = '+30m'; -our $DATE_UNI = '0'; -our $RELEASE_VER = '1.4'; -our $AUTHORITY = ''; -our $IMG_W_H = '210x120'; -our $AUTO_WRD_LMT= 200; -our $AUTO_LOGIN = 0; -our $FRAME_SIZE = 0; -our $RTF_SIZE = 0; +our $REC_LIMIT = 25; +our $TIME_ZONE = 'Australia/Sydney'; +our $LANGUAGE = 'English'; +our $PRC_WIDTH = '70'; +our $LOG_PATH = '../../dbLifeLog/'; +our $SESSN_EXPR = '+30m'; +our $DATE_UNI = '0'; +our $RELEASE_VER = '1.4'; +our $AUTHORITY = ''; +our $IMG_W_H = '210x120'; +our $AUTO_WRD_LMT = 200; +our $AUTO_LOGIN = 0; +our $FRAME_SIZE = 0; +our $RTF_SIZE = 0; +our $THEME = 0; +our $TH_CSS = 'main.css'; #END OF SETTINGS #This is the OS developer release key, replace on istallation. As it is not secure. @@ -51,8 +53,8 @@ my $sys = `uname -n`; #my $acumululator=""; if(!$userid||!$dbname){ - print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid"); - exit; + print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid"); + exit; } my $database = $LOG_PATH.$dbname; @@ -65,38 +67,51 @@ my $today = DateTime->now; my $tz = $cgi->param('tz'); my $csvp = $cgi->param('csv'); - switch ($csvp){ - case "1" {&exportLogToCSV} - case "2" {&exportLogToCSV} - case "3" {&exportCategoriesToCSV} - case "4" {&exportCategoriesToCSV} - } - - if($cgi->param('data_cat')){ - &importCatCSV; - }elsif($cgi->param('data_log')){ - &importLogCSV; - } - + switch ($csvp){ + case "1" {&exportLogToCSV} + case "2" {&exportLogToCSV} + case "3" {&exportCategoriesToCSV} + case "4" {&exportCategoriesToCSV} + } + + if($cgi->param('data_cat')){ + &importCatCSV; + }elsif($cgi->param('data_log')){ + &importLogCSV; + } + ##################### - &getConfiguration; + &getConfiguration; ##################### $today->set_time_zone( $TIME_ZONE ); - + my $stmtCat = 'SELECT * FROM CAT ORDER BY ID;'; my $status = "Ready for change!"; + ############### &processSubmit; ############### +my $BGCOL = '#c8fff8'; + if ( $THEME eq 'Sun' ) { + $BGCOL = '#D4AF37'; + $TH_CSS = "main_sun.css"; + }elsif ($THEME eq 'Moon'){ + $TH_CSS = "main_moon.css"; + $BGCOL = '#000000'; + + }elsif ($THEME eq 'Earth'){ + $TH_CSS = "main_earth.css"; + $BGCOL = 'green'; + } print $cgi->header(-expires=>"+6s", -charset=>"UTF-8"); -print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8", - -onload => "loadedBody();", - -style => [ - { -type => 'text/css', -src => 'wsrc/main.css' }, +print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"$BGCOL", + -onload => "loadedBody();", + -style => [ + { -type => 'text/css', -src => "wsrc/$TH_CSS" }, { -type => 'text/css', -src => 'wsrc/jquery-ui.css' }, { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' }, { @@ -123,7 +138,7 @@ print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8", }, { -type => 'text/javascript', -src => 'wsrc/jquery.poshytip.js' } ], - ); + ); print qq( + +
+ ); print ''; @@ -452,580 +484,581 @@ try{ $dbs = $db->prepare( $stmtCat ); $rv = $dbs->execute() or die or die "

Error->"& $DBI::errstri &"

"; - + if($passch){ - my ($ex,$ne,$cf) = ($cgi->param("existing"),$cgi->param("new"),$cgi->param("confirm")); - if($ne ne $cf){ - $status = "New password must match confirmation!"; - print "

Client Error: $status

"; - } - else{ - if(&confirmExistingPassword($ex)){ - &changePassword($ne); - $status = "Password Has Been Changed"; - } - else{ - $status = "Wrong existing password was entered, are you user by alias: $userid ?"; - print "

Client Error: $status

"; - } - } + my ($ex,$ne,$cf) = ($cgi->param("existing"),$cgi->param("new"),$cgi->param("confirm")); + if($ne ne $cf){ + $status = "New password must match confirmation!"; + print "

Client Error: $status

"; + } + else{ + if(&confirmExistingPassword($ex)){ + &changePassword($ne); + $status = "Password Has Been Changed"; + } + else{ + $status = "Wrong existing password was entered, are you user by alias: $userid ?"; + print "

Client Error: $status

"; + } + } } elsif ($change == 1){ - while(my @row = $dbs->fetchrow_array()) { - - my $cid = $row[0]; - my $cnm = $row[1]; - my $cds = $row[2]; - - my $pnm = $cgi->param('nm'.$cid); - my $pds = $cgi->param('ds'.$cid); - - if($pnm ne $cnm || $pds ne $cds){ - - if( ($cid!=1 && $cid!=32 && $cid!=35) && $pnm eq ""){ - - $s = "SELECT rowid, ID_CAT FROM LOG WHERE ID_CAT =".$cid.";"; - $d = $db->prepare($s); - $d->execute(); - - while(my @r = $d->fetchrow_array()) { - $s = " LOG SET ID_CAT=1 WHERE rowid=".$r[0].";"; - $d = $db->prepare($s); - $d->execute(); - } - - #Delete - $s = "DELETE FROM CAT WHERE ID=".$cid.";"; - $d = $db->prepare($s); - $d->execute(); - - }else{ - #Update - $s = "UPDATE CAT SET NAME='".$pnm."', DESCRIPTION='".$pds."' WHERE ID=".$cid.";"; - $d = $db->prepare($s); - $d->execute(); - } - } - } - $status = "Upadated Categories!"; + while(my @row = $dbs->fetchrow_array()) { + + my $cid = $row[0]; + my $cnm = $row[1]; + my $cds = $row[2]; + + my $pnm = $cgi->param('nm'.$cid); + my $pds = $cgi->param('ds'.$cid); + + if($pnm ne $cnm || $pds ne $cds){ + + if( ($cid!=1 && $cid!=32 && $cid!=35) && $pnm eq ""){ + + $s = "SELECT rowid, ID_CAT FROM LOG WHERE ID_CAT =".$cid.";"; + $d = $db->prepare($s); + $d->execute(); + + while(my @r = $d->fetchrow_array()) { + $s = " LOG SET ID_CAT=1 WHERE rowid=".$r[0].";"; + $d = $db->prepare($s); + $d->execute(); + } + + #Delete + $s = "DELETE FROM CAT WHERE ID=".$cid.";"; + $d = $db->prepare($s); + $d->execute(); + + }else{ + #Update + $s = "UPDATE CAT SET NAME='".$pnm."', DESCRIPTION='".$pds."' WHERE ID=".$cid.";"; + $d = $db->prepare($s); + $d->execute(); + } + } + } + $status = "Upadated Categories!"; } if($change > 1){ - #UNDER DEVELOPMENT! - my $caid = $cgi->param('caid'); - my $canm = $cgi->param('canm'); - my $cade = $cgi->param('cade'); - my $valid = 1; - - while(my @row = $dbs->fetchrow_array()) { - - my $cid = $row[0]; - my $cnm = $row[1]; - my $cds = $row[2]; - - - if($cid==$caid || $cnm eq $canm){ - $valid = 0; - last; - } - } - - if($valid){ - $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); - $d->execute($caid,$canm, $cade); - $status = "Added Category $canm!"; - } - else{ - $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!"; - die "

Client Error: $status

"; - } - $status = "Inserted new category[$canm]"; - - + #UNDER DEVELOPMENT! + my $caid = $cgi->param('caid'); + my $canm = $cgi->param('canm'); + my $cade = $cgi->param('cade'); + my $valid = 1; + + while(my @row = $dbs->fetchrow_array()) { + + my $cid = $row[0]; + my $cnm = $row[1]; + my $cds = $row[2]; + + + if($cid==$caid || $cnm eq $canm){ + $valid = 0; + last; + } + } + + if($valid){ + $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); + $d->execute($caid,$canm, $cade); + $status = "Added Category $canm!"; + } + else{ + $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!"; + die "

Client Error: $status

"; + } + $status = "Inserted new category[$canm]"; + + }elsif ($chgsys == 1){ - &changeSystemSettings; - $status = "Changed System Settings!"; + &changeSystemSettings; + $status = "Changed System Settings!"; }elsif($chdbfix){ - &processDBFix; - $status = "Performed Database Fixes!"; + &processDBFix; + $status = "Performed Database Fixes!"; } } catch{ - $ERROR = qq(

SERVER ERROR -> $_

); + $ERROR = qq(

SERVER ERROR -> $_

); } } sub confirmExistingPassword { - my $pass = $_[0]; - my $crypt = encryptPassw($pass); - my $sql = "SELECT ALIAS, PASSW from AUTH WHERE ALIAS='$userid' AND PASSW='$crypt';"; - # print "

DEBUG:[$pass]
$sql

"; - $dbs = $db->prepare($sql); - $dbs->execute(); - if($dbs->fetchrow_array()){ - return 1; - } - return 0; + my $pass = $_[0]; + my $crypt = encryptPassw($pass); + my $sql = "SELECT ALIAS, PASSW from AUTH WHERE ALIAS='$userid' AND PASSW='$crypt';"; + # print "

DEBUG:[$pass]
$sql

"; + $dbs = $db->prepare($sql); + $dbs->execute(); + if($dbs->fetchrow_array()){ + return 1; + } + return 0; } sub changePassword { - my $pass = encryptPassw($_[0]); - $dbs = $db->prepare("UPDATE AUTH SET PASSW='$pass' WHERE ALIAS='$userid';"); - $dbs->execute(); - if($dbs->fetchrow_array()){ - return 1; - } - return 0; + my $pass = encryptPassw($_[0]); + $dbs = $db->prepare("UPDATE AUTH SET PASSW='$pass' WHERE ALIAS='$userid';"); + $dbs->execute(); + if($dbs->fetchrow_array()){ + return 1; + } + return 0; } sub encryptPassw { - return uc crypt $_[0], hex $cipher_key; + return uc crypt $_[0], hex $cipher_key; } sub processDBFix { - my $rs_syst = $cgi->param("reset_syst"); - my $rs_cats = $cgi->param("reset_cats"); - my $wipe_ss = $cgi->param("wipe_syst"); - my $issue; - my $date; - my $cntr_upd =0; + my $rs_syst = $cgi->param("reset_syst"); + my $rs_cats = $cgi->param("reset_cats"); + my $wipe_ss = $cgi->param("wipe_syst"); + my $issue; + my $date; + my $cntr_upd =0; try{ - - my %dates = (); - my @dlts = (); - #Hash is unreliable for returning sequential order of keys so array must do. - my @updts = (); - my $cntr_del =0; - my $existing; - my @row; - - $db->do('BEGIN TRANSACTION;'); - #Check for duplicates, which are possible during imports or migration as internal rowid is not primary in log. - $dbs = dbExecute('select rowid, DATE from LOG ORDER BY DATE;'); - while(my @row = $dbs->fetchrow_array()) { - my $existing = $dates{$row[0]}; - if($existing && $existing eq $row[1]){ - $dlts[$cntr_del++] = $row[0]; - } - else{ - $dates{$row[0]} = $row[1]; - $updts[$cntr_upd++] = $row[0]; - } - } - - foreach my $del (@dlts){ - $issue = "DELETE FROM LOG WHERE rowid=$del;"; - #print "$issue\n
"; - my $st_del = $db->prepare($issue); - $st_del->execute(); - } - - #Renumerate! - my $cnt = 1; - my $st_upd; - $dbs = dbExecute("select count(rowid) from LOG;"); - @row = $dbs->fetchrow_array(); - $cntr_upd =$row[0]; - - - $dbs = dbExecute("select rowid, RTF from LOG order by DATE;"); - while(@row = $dbs->fetchrow_array()) { - $issue = "UPDATE LOG SET rowid=$cnt WHERE rowid=$row[0];"; - $st_upd = $db->prepare($issue); - $st_upd->execute(); - if($row[1]){#RTF - my @doc = dbExecute("SELECT LID FROM NOTES WHERE LID='$row[0]';"); - if(scalar @doc>0){ - dbExecute("UPDATE NOTES SET LID = $cnt WHERE LID='$row[0]';"); - } - } - $cnt++; - } - # Delete Orphaned Notes entries. - $dbs = dbExecute("SELECT LID, LOG.rowid from NOTES LEFT JOIN LOG ON - NOTES.LID = LOG.rowid WHERE LOG.rowid is NULL;"); - while(my @row = $dbs->fetchrow_array()) { - $db->do("DELETE FROM NOTES WHERE LID=$row[0];"); - } - - - &resetCategories if $rs_cats; - &resetSystemConfiguration($db) if $rs_syst; - &wipeSystemConfiguration if $wipe_ss; - - $db->do('COMMIT;'); - $db->disconnect(); - $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "

Error->"& $DBI::errstri &"

"; - $dbs = $db->do("VACUUM;"); - - if($LOGOUT){ - &logout; - } - - + + my %dates = (); + my @dlts = (); + #Hash is unreliable for returning sequential order of keys so array must do. + my @updts = (); + my $cntr_del =0; + my $existing; + my @row; + + $db->do('BEGIN TRANSACTION;'); + #Check for duplicates, which are possible during imports or migration as internal rowid is not primary in log. + $dbs = dbExecute('select rowid, DATE from LOG ORDER BY DATE;'); + while(my @row = $dbs->fetchrow_array()) { + my $existing = $dates{$row[0]}; + if($existing && $existing eq $row[1]){ + $dlts[$cntr_del++] = $row[0]; + } + else{ + $dates{$row[0]} = $row[1]; + $updts[$cntr_upd++] = $row[0]; + } + } + + foreach my $del (@dlts){ + $issue = "DELETE FROM LOG WHERE rowid=$del;"; + #print "$issue\n
"; + my $st_del = $db->prepare($issue); + $st_del->execute(); + } + + #Renumerate! + my $cnt = 1; + my $st_upd; + $dbs = dbExecute("select count(rowid) from LOG;"); + @row = $dbs->fetchrow_array(); + $cntr_upd =$row[0]; + + + $dbs = dbExecute("select rowid, RTF from LOG order by DATE;"); + while(@row = $dbs->fetchrow_array()) { + $issue = "UPDATE LOG SET rowid=$cnt WHERE rowid=$row[0];"; + $st_upd = $db->prepare($issue); + $st_upd->execute(); + if($row[1]){#RTF + my @doc = dbExecute("SELECT LID FROM NOTES WHERE LID='$row[0]';"); + if(scalar @doc>0){ + dbExecute("UPDATE NOTES SET LID = $cnt WHERE LID='$row[0]';"); + } + } + $cnt++; + } + # Delete Orphaned Notes entries. + $dbs = dbExecute("SELECT LID, LOG.rowid from NOTES LEFT JOIN LOG ON + NOTES.LID = LOG.rowid WHERE LOG.rowid is NULL;"); + while(my @row = $dbs->fetchrow_array()) { + $db->do("DELETE FROM NOTES WHERE LID=$row[0];"); + } + + + &resetCategories if $rs_cats; + &resetSystemConfiguration($db) if $rs_syst; + &wipeSystemConfiguration if $wipe_ss; + + $db->do('COMMIT;'); + $db->disconnect(); + $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "

Error->"& $DBI::errstri &"

"; + $dbs = $db->do("VACUUM;"); + + if($LOGOUT){ + &logout; + } + + } catch{ - $db->do('ROLLBACK;'); - die qq(@&processDBFix error:$_ with statement->$issue for $date update counter:$cntr_upd); + $db->do('ROLLBACK;'); + die qq(@&processDBFix error:$_ with statement->$issue for $date update counter:$cntr_upd); } } sub resetCategories { - $db->do("DELETE FROM CAT;"); - $db->do("DROP TABLE CAT;"); - $LOGOUT = 1; + $db->do("DELETE FROM CAT;"); + $db->do("DROP TABLE CAT;"); + $LOGOUT = 1; } sub wipeSystemConfiguration { - $db->do("DELETE FROM CONFIG;"); - $db->do("DROP TABLE CONFIG;"); - $LOGOUT = 1; + $db->do("DELETE FROM CONFIG;"); + $db->do("DROP TABLE CONFIG;"); + $LOGOUT = 1; } sub resetSystemConfiguration { - open(my $fh, '<', $LOG_PATH.'main.cnf' ) or die "Can't open main.cnf: $!"; - my $db = shift; - my ($did,$name, $value, $desc); - my $inData = 0; - my $err = ""; - my %vars = {}; + open(my $fh, '<', $LOG_PATH.'main.cnf' ) or die "Can't open main.cnf: $!"; + my $db = shift; + my ($did,$name, $value, $desc); + my $inData = 0; + my $err = ""; + my %vars = {}; try{ - - my $insert = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?,?)'); - my $update = $db->prepare("UPDATE CONFIG SET VALUE=? WHERE ID=?;"); - $dbs->finish(); + + my $insert = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?,?)'); + my $update = $db->prepare("UPDATE CONFIG SET VALUE=? WHERE ID=?;"); + $dbs->finish(); while (my $line = <$fh>) { - chomp $line; - my @tick = split("`",$line); - if(scalar(@tick)==2){ - my %hsh = $tick[0] =~ m[(\S+)\s*=\s*(\S+)]g; - if(scalar(%hsh)==1){ - for my $key (keys %hsh) { - - my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g; - if(scalar(%nash)==1){ - for my $id (keys %nash) { - my $name = $nash{$id}; - my $value = $hsh{$key}; - if($vars{$id}){ - $err .= "UID{$id} taken by $vars{$id}-> $line\n"; - } - else{ - $dbs = dbExecute( - "SELECT ID, NAME, VALUE, DESCRIPTION FROM CONFIG WHERE NAME LIKE '$name';"); - $inData = 1; - my @row = $dbs->fetchrow_array(); - if(scalar @row == 0){ - $insert->execute($id,$name,$value,$tick[1]); - } - else{ - $update->execute($value,$id); - } - } - } - }else{ - $err .= "Invalid, spec'ed {uid}|{setting}`{description}-> $line\n"; - } - - }#rof - } - else{ - $err .= "Invalid, speced entry -> $line\n"; - } - - }elsif($inData && length($line)>0){ - if(scalar(@tick)==1){ - $err .= "Corrupt Entry, no description supplied -> $line\n"; - } - else{ - $err .= "Corrupt Entry -> $line\n"; - } - } - } - #die "Configuration script './main.cnf' [$fh] contains errors." if $err; - close $fh; - &getConfiguration; + chomp $line; + my @tick = split("`",$line); + if(scalar(@tick)==2){ + my %hsh = $tick[0] =~ m[(\S+)\s*=\s*(\S+)]g; + if(scalar(%hsh)==1){ + for my $key (keys %hsh) { + + my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g; + if(scalar(%nash)==1){ + for my $id (keys %nash) { + my $name = $nash{$id}; + my $value = $hsh{$key}; + if($vars{$id}){ + $err .= "UID{$id} taken by $vars{$id}-> $line\n"; + } + else{ + $dbs = dbExecute( + "SELECT ID, NAME, VALUE, DESCRIPTION FROM CONFIG WHERE NAME LIKE '$name';"); + $inData = 1; + my @row = $dbs->fetchrow_array(); + if(scalar @row == 0){ + $insert->execute($id,$name,$value,$tick[1]); + } + else{ + $update->execute($value,$id); + } + } + } + }else{ + $err .= "Invalid, spec'ed {uid}|{setting}`{description}-> $line\n"; + } + + }#rof + } + else{ + $err .= "Invalid, speced entry -> $line\n"; + } + + }elsif($inData && length($line)>0){ + if(scalar(@tick)==1){ + $err .= "Corrupt Entry, no description supplied -> $line\n"; + } + else{ + $err .= "Corrupt Entry -> $line\n"; + } + } + } + #die "Configuration script './main.cnf' [$fh] contains errors." if $err; + close $fh; + &getConfiguration; } catch{ - close $fh; - print $cgi->header; - print "SERVER ERROR!
".$_."
$err
"; + close $fh; + print $cgi->header; + print "SERVER ERROR!
".$_."
$err
"; print $cgi->end_html; - exit; + exit; } } sub logout{ - $session->delete(); - $session->flush(); - print $cgi->redirect("login_ctr.cgi"); - exit; + $session->delete(); + $session->flush(); + print $cgi->redirect("login_ctr.cgi"); + exit; } sub changeSystemSettings { - try{ - $dbs = dbExecute("SELECT ID, NAME FROM CONFIG;"); - while (my @r=$dbs->fetchrow_array()){ - my $var = $cgi->param('var'.$r[0]); - if(defined $var){ - switch ($r[1]) { - case "REC_LIMIT" {$REC_LIMIT=$var; updCnf($r[0],$var)} - case "TIME_ZONE" {$TIME_ZONE=$var; updCnf($r[0],$var)} - case "PRC_WIDTH" {$PRC_WIDTH=$var; updCnf($r[0],$var)} - case "SESSN_EXPR"{$SESSN_EXPR=$var; updCnf($r[0],$var)} - case "DATE_UNI" {$DATE_UNI=$var; updCnf($r[0],$var)} - case "LANGUAGE" {$LANGUAGE=$var; updCnf($r[0],$var)} - case "AUTHORITY" {$AUTHORITY=$var; updCnf($r[0],$var)} - case "IMG_W_H" {$IMG_W_H=$var; updCnf($r[0],$var)} - case "AUTO_WRD_LMT"{$AUTO_WRD_LMT=$var; updCnf($r[0],$var)} - case "AUTO_LOGIN" {$AUTO_LOGIN=$var; updCnf($r[0],$var)} - case "FRAME_SIZE" {$FRAME_SIZE=$var; updCnf($r[0],$var)} - case "RTF_SIZE" {$RTF_SIZE=$var; updCnf($r[0],$var)} - } - } - } - } - catch{ - print "SERVER ERROR->changeSystemSettings:".$_; - } + try{ + $dbs = dbExecute("SELECT ID, NAME FROM CONFIG;"); + while (my @r=$dbs->fetchrow_array()){ + my $var = $cgi->param('var'.$r[0]); + if(defined $var){ + switch ($r[1]) { + case "REC_LIMIT" {$REC_LIMIT=$var; updCnf($r[0],$var)} + case "TIME_ZONE" {$TIME_ZONE=$var; updCnf($r[0],$var)} + case "PRC_WIDTH" {$PRC_WIDTH=$var; updCnf($r[0],$var)} + case "SESSN_EXPR"{$SESSN_EXPR=$var; updCnf($r[0],$var)} + case "DATE_UNI" {$DATE_UNI=$var; updCnf($r[0],$var)} + case "LANGUAGE" {$LANGUAGE=$var; updCnf($r[0],$var)} + case "AUTHORITY" {$AUTHORITY=$var; updCnf($r[0],$var)} + case "IMG_W_H" {$IMG_W_H=$var; updCnf($r[0],$var)} + case "AUTO_WRD_LMT"{$AUTO_WRD_LMT=$var; updCnf($r[0],$var)} + case "AUTO_LOGIN" {$AUTO_LOGIN=$var; updCnf($r[0],$var)} + case "FRAME_SIZE" {$FRAME_SIZE=$var; updCnf($r[0],$var)} + case "RTF_SIZE" {$RTF_SIZE=$var; updCnf($r[0],$var)} + case "THEME" {$THEME=$var; updCnf($r[0],$var)} + } + } + } + } + catch{ + print "SERVER ERROR->changeSystemSettings:".$_; + } } sub updCnf { - my ($id, $val) = @_; - my ($s,$d); - $s = "UPDATE CONFIG SET VALUE='".$val."' WHERE ID=".$id.";"; - try{ - dbExecute($s); - } - catch{ - print "SERVER ERROR->updCnf[$s]:".$_; - } + my ($id, $val, $s) = @_; + $s = "UPDATE CONFIG SET VALUE='".$val."' WHERE ID=".$id.";"; + try{ + dbExecute($s); + } + catch{ + print "SERVER ERROR->updCnf[$s]:".$_; + } } sub exportLogToCSV { - try{ - - my $csv = Text::CSV->new ( { binary => 1, strict => 1 , quote_space=>1, auto_diag => 1, eol => $/} ); - $dbs = dbExecute("SELECT * FROM LOG;"); - if($csvp==2){ - print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); - print "
\n";
-			}
-			else{
-				 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.csv");
-			}
-			
-		 # print "ID_CAT,DATE,LOG,AMOUNT, AFLAG\n";
-			while (my $r=$dbs->fetchrow_arrayref()){ 
-						 print $csv->print(*STDOUT, $r)."\n";
-			}
-			if($csvp==1){			
-				 print "
"; - } - $dbs->finish(); - $db->disconnect(); - exit; - } - catch{ - print "SERVER ERROR->exportLogToCSV:".$_; - } + try{ + + my $csv = Text::CSV->new ( { binary => 1, strict => 1 , quote_space=>1, auto_diag => 1, eol => $/} ); + $dbs = dbExecute("SELECT * FROM LOG;"); + if($csvp==2){ + print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); + print "
\n";
+            }
+            else{
+                 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.csv");
+            }
+            
+         # print "ID_CAT,DATE,LOG,AMOUNT, AFLAG\n";
+            while (my $r=$dbs->fetchrow_arrayref()){ 
+                         print $csv->print(*STDOUT, $r)."\n";
+            }
+            if($csvp==1){			
+                 print "
"; + } + $dbs->finish(); + $db->disconnect(); + exit; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } } sub exportCategoriesToCSV { - try{ - - my $csv = Text::CSV->new ( { binary => 1, strict => 1,eol => $/ } ); - $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;"); - if($csvp==4){ - print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); - print "
\n";
-		}
-		else{
-		 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.categories.csv");
-		}
-			
-		#print "ID,NAME,DESCRIPTION\n";
-		while (my $row=$dbs->fetchrow_arrayref()){ 
-				print $csv->print(*STDOUT, $row),"\n";
-		}
-		if($csvp==4){			
-			 print "
"; - } - $dbs->finish(); - $db->disconnect(); - exit; - } - catch{ - print "SERVER ERROR->exportLogToCSV:".$_; - } + try{ + + my $csv = Text::CSV->new ( { binary => 1, strict => 1,eol => $/ } ); + $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;"); + if($csvp==4){ + print $cgi->header(-charset=>"UTF-8", -type=>"text/html"); + print "
\n";
+        }
+        else{
+         print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.categories.csv");
+        }
+            
+        #print "ID,NAME,DESCRIPTION\n";
+        while (my $row=$dbs->fetchrow_arrayref()){ 
+                print $csv->print(*STDOUT, $row),"\n";
+        }
+        if($csvp==4){			
+             print "
"; + } + $dbs->finish(); + $db->disconnect(); + exit; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } } sub importCatCSV { - my $hndl = $cgi->upload("data_cat"); - my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } ); - while (my $line = <$hndl>) { - chomp $line; - if ($csv->parse($line)) { - my @flds = $csv->fields(); - updateCATDB(@flds); - }else{ - warn "Data could not be parsed: $line\n"; - } - } + my $hndl = $cgi->upload("data_cat"); + my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } ); + while (my $line = <$hndl>) { + chomp $line; + if ($csv->parse($line)) { + my @flds = $csv->fields(); + updateCATDB(@flds); + }else{ + warn "Data could not be parsed: $line\n"; + } + } } sub updateCATDB { - my @flds = @_; - if(@flds>2){ - try{ - my $id = $flds[0]; - my $name = $flds[1]; - my $desc = $flds[2]; - - #is it existing entry? - $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT WHERE ID = '$id';"); - if(not defined $dbs->fetchrow_array()){ - $dbs = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); - $dbs->execute($id, $name, $desc); - $dbs->finish; - } - else{ - #TODO Update - } - - } - catch{ - print "SERVER ERROR->updateCATDB:".$_; - } - } + my @flds = @_; + if(@flds>2){ + try{ + my $id = $flds[0]; + my $name = $flds[1]; + my $desc = $flds[2]; + + #is it existing entry? + $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT WHERE ID = '$id';"); + if(not defined $dbs->fetchrow_array()){ + $dbs = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); + $dbs->execute($id, $name, $desc); + $dbs->finish; + } + else{ + #TODO Update + } + + } + catch{ + print "SERVER ERROR->updateCATDB:".$_; + } + } } sub importLogCSV { - my $hndl = $cgi->upload("data_log"); - my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } ); - while (my $line = <$hndl>) { - chomp $line; - if ($csv->parse($line)) { - my @flds = $csv->fields(); - updateLOGDB(@flds); - }else{ - warn "Data could not be parsed: $line\n"; - } - } - $db->disconnect(); - print $cgi->redirect('main.cgi'); - exit; + my $hndl = $cgi->upload("data_log"); + my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } ); + while (my $line = <$hndl>) { + chomp $line; + if ($csv->parse($line)) { + my @flds = $csv->fields(); + updateLOGDB(@flds); + }else{ + warn "Data could not be parsed: $line\n"; + } + } + $db->disconnect(); + print $cgi->redirect('main.cgi'); + exit; } sub updateLOGDB { - my @flds = @_; - if(@flds>3){ - try{ - my $id_cat = $flds[0]; - my $date = $flds[1]; - my $log = $flds[2]; - my $amv = $flds[3]; - my $amf = $flds[4]; - my $rtf = $flds[5]; - my $pdate = DateTime::Format::SQLite->parse_datetime($date); - #Check if valid date log entry? - if($id_cat==0||$id_cat==""||!$pdate){ - return; - } - #is it existing entry? - $dbs = $db->prepare("SELECT ID_CAT, DATE, LOG, AMOUNT, AFLAG, RTF FROM LOG WHERE date = '$date';"); - $dbs->execute(); - if(!$dbs->fetchrow_array()){ - $dbs = $db->prepare('INSERT INTO LOG VALUES (?,?,?,?,?,?)'); - $dbs->execute( $id_cat, $pdate, $log, $amv, $amf, $rtf); - } - #Renumerate - $dbs = $db->prepare('select rowid from LOG ORDER BY DATE;'); - $dbs->execute(); - my @row = $dbs->fetchrow_array(); - my $cnt = 1; - while(my @row = $dbs->fetchrow_array()) { - my $st_upd = $db->prepare("UPDATE LOG SET rowid=".$cnt. - " WHERE rowid='".$row[0]."';"); - $st_upd->execute(); - $cnt = $cnt + 1; - } - $dbs->finish; - } - catch{ - print "SERVER ERROR->exportLogToCSV:".$_; - } - } + my @flds = @_; + if(@flds>3){ + try{ + my $id_cat = $flds[0]; + my $date = $flds[1]; + my $log = $flds[2]; + my $amv = $flds[3]; + my $amf = $flds[4]; + my $rtf = $flds[5]; + my $pdate = DateTime::Format::SQLite->parse_datetime($date); + #Check if valid date log entry? + if($id_cat==0||$id_cat==""||!$pdate){ + return; + } + #is it existing entry? + $dbs = $db->prepare("SELECT ID_CAT, DATE, LOG, AMOUNT, AFLAG, RTF FROM LOG WHERE date = '$date';"); + $dbs->execute(); + if(!$dbs->fetchrow_array()){ + $dbs = $db->prepare('INSERT INTO LOG VALUES (?,?,?,?,?,?)'); + $dbs->execute( $id_cat, $pdate, $log, $amv, $amf, $rtf); + } + #Renumerate + $dbs = $db->prepare('select rowid from LOG ORDER BY DATE;'); + $dbs->execute(); + my @row = $dbs->fetchrow_array(); + my $cnt = 1; + while(my @row = $dbs->fetchrow_array()) { + my $st_upd = $db->prepare("UPDATE LOG SET rowid=".$cnt. + " WHERE rowid='".$row[0]."';"); + $st_upd->execute(); + $cnt = $cnt + 1; + } + $dbs->finish; + } + catch{ + print "SERVER ERROR->exportLogToCSV:".$_; + } + } } sub getConfiguration { - try{ - $dbs = dbExecute("SELECT * FROM CONFIG;"); - 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]} - case "IMG_W_H" {$IMG_W_H=$r[2]} - case "AUTO_WRD_LMT" {$AUTO_WRD_LMT=$r[2]} - case "AUTO_LOGIN" {$AUTO_LOGIN=$r[2]} - case "FRAME_SIZE" {$FRAME_SIZE=$r[2]} - case "RTF_SIZE" {$RTF_SIZE=$r[2]} - } - } - } - catch{ - print "SERVER ERROR:".$_; - } + try{ + $dbs = dbExecute("SELECT * FROM CONFIG;"); + 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]} + case "IMG_W_H" {$IMG_W_H=$r[2]} + case "AUTO_WRD_LMT" {$AUTO_WRD_LMT=$r[2]} + case "AUTO_LOGIN" {$AUTO_LOGIN=$r[2]} + case "FRAME_SIZE" {$FRAME_SIZE=$r[2]} + case "RTF_SIZE" {$RTF_SIZE=$r[2]} + case "THEME" {$THEME= $r[2]} + } + } + } + catch{ + print "SERVER ERROR:".$_; + } } sub cats{ - my $cats = qq(\n); + $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;"); + while ( my @row = $dbs->fetchrow_array() ) { - $cats .= qq(\n); - } - $cats .= ''; + $cats .= qq(\n); + } + $cats .= ''; - return $cats; + return $cats; } sub dbExecute{ - my $ret = $db->prepare(shift); - $ret->execute() or die "

Error->"& $DBI::errstri &"

"; - return $ret; + my $ret = $db->prepare(shift); + $ret->execute() or die "

Error->"& $DBI::errstri &"

"; + return $ret; } sub error{ - my $url = $cgi->url(); - print qq(

Sorry Encountered Errors

Page -> $url

$ERROR

); - print qq(

CGI Parameters

); - print "
    \n"; - foreach ($cgi->param){ - print '
  1. '.$_.'=='. $cgi->param($_).'
  2. '; - } - print "
\n"; - print "Return to -> $url"; - print $cgi->end_html; - $db->disconnect(); - exit; + my $url = $cgi->url(); + print qq(

Sorry Encountered Errors

Page -> $url

$ERROR

); + print qq(

CGI Parameters

); + print "
    \n"; + foreach ($cgi->param){ + print '
  1. '.$_.'=='. $cgi->param($_).'
  2. '; + } + print "
\n"; + print "Return to -> $url"; + print $cgi->end_html; + $db->disconnect(); + exit; } \ No newline at end of file diff --git a/htdocs/cgi-bin/login_ctr.cgi b/htdocs/cgi-bin/login_ctr.cgi index d254519..f9175a2 100755 --- a/htdocs/cgi-bin/login_ctr.cgi +++ b/htdocs/cgi-bin/login_ctr.cgi @@ -444,7 +444,7 @@ sub logout{


- diff --git a/htdocs/cgi-bin/main.cgi b/htdocs/cgi-bin/main.cgi index 88b1d1c..23c483f 100755 --- a/htdocs/cgi-bin/main.cgi +++ b/htdocs/cgi-bin/main.cgi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Programed in vim by: Will Budic +# Programed in by: Will Budic # Open Source License -> https://choosealicense.com/licenses/isc/ # use strict; @@ -37,6 +37,7 @@ our $AUTO_WRD_LMT = 1000; our $FRAME_SIZE = 0; our $RTF_SIZE = 0; our $THEME = 'Standard'; +our $TH_CSS = 'main.css'; #END OF SETTINGS @@ -115,21 +116,26 @@ else { #defaults $imgh = 120; } -my $bgcol = '#c8fff8'; -if ( $THEME eq 'Sun' ) { - $bgcol = '#D4AF37'; -} +my $BGCOL = '#c8fff8'; + if ( $THEME eq 'Sun' ) { + $BGCOL = '#D4AF37'; + $TH_CSS = "main_sun.css"; + }elsif ($THEME eq 'Moon'){ + $TH_CSS = "main_moon.css"; + $BGCOL = '#000000'; + + }elsif ($THEME eq 'Earth'){ + $TH_CSS = "main_earth.css"; + $BGCOL = 'green'; + } -print $cgi->header( - -expires => "0s", - -charset => "UTF-8" -); +print $cgi->header(-expires => "0s", -charset => "UTF-8"); print $cgi->start_html( -title => "Personal Log", - -BGCOLOR => $bgcol, + -BGCOLOR => $BGCOL, -onload => "loadedBody('" . $toggle . "');", -style => [ - { -type => 'text/css', -src => 'wsrc/main.css' }, + { -type => 'text/css', -src => "wsrc/$TH_CSS" }, { -type => 'text/css', -src => 'wsrc/jquery-ui.css' }, { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' }, { @@ -489,7 +495,7 @@ qq(\n); } elsif ( 1 == $row[1] ) { $log = -"$log"; +"$log"; $tagged = 1; } @@ -1097,7 +1103,7 @@ sub authenticate { } } - sub getConfiguration { + sub getConfiguration{ my $db = shift; try { $st = $db->prepare("SELECT * FROM CONFIG;"); @@ -1106,6 +1112,7 @@ sub authenticate { while ( my @r = $st->fetchrow_array() ) { switch ( $r[1] ) { + case "$RELEASE_VER" { $RELEASE_VER = $r[2] } case "REC_LIMIT" { $REC_LIMIT = $r[2] } case "TIME_ZONE" { $TIME_ZONE = $r[2] } case "PRC_WIDTH" { $PRC_WIDTH = $r[2] } @@ -1116,6 +1123,7 @@ sub authenticate { case "AUTO_WRD_LMT" { $AUTO_WRD_LMT = $r[2] } case "FRAME_SIZE" { $FRAME_SIZE = $r[2] } case "RTF_SIZE" { $RTF_SIZE = $r[2] } + case "THEME" { $THEME = $r[2] } else { print "Unknow variable setting: " . $r[1] . " == " . $r[2]; } diff --git a/htdocs/cgi-bin/stats.cgi b/htdocs/cgi-bin/stats.cgi index 5b506f8..39f4ed9 100755 --- a/htdocs/cgi-bin/stats.cgi +++ b/htdocs/cgi-bin/stats.cgi @@ -1,10 +1,11 @@ #!/usr/bin/perl -w -# -# Programed in vim by: Will Budic +# Programed by: Will Budic # Open Source License -> https://choosealicense.com/licenses/isc/ # use strict; use warnings; +use Try::Tiny; +use Switch; use CGI; use CGI::Session '-ip_match'; @@ -13,7 +14,14 @@ use DateTime; use DateTime::Format::SQLite; use Number::Bytes::Human qw(format_bytes); -our $LOG_PATH = '../../dbLifeLog/'; +#SETTINGS HERE! +my $REC_LIMIT = 25; +my $TIME_ZONE = 'Australia/Sydney'; +my $LOG_PATH = '../../dbLifeLog/'; +my $RELEASE_VER = ""; +my $THEME = 0; +my $TH_CSS = 'main.css'; +#END OF SETTINGS my $cgi = CGI->new; my $session = new CGI::Session("driver:File",$cgi, {Directory=>$LOG_PATH}); @@ -23,35 +31,42 @@ my $userid =$session->param('alias'); my $password=$session->param('passw'); if(!$userid||!$dbname){ - print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid"); - exit; + print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid"); + exit; } - my $database = '../../dbLifeLog/' . $dbname; my $dsn = "DBI:SQLite:dbname=$database"; my $db = DBI->connect( $dsn, $userid, $password, { RaiseError => 1 } ) or die "

Error->" & $DBI::errstri & "

"; - - my @stat = stat $database; +################## +&getConfiguration; +################## + -#SETTINGS HERE! -my $REC_LIMIT = 25; -my $TIME_ZONE = 'Australia/Sydney'; -# -#END OF SETTINGS my $today = DateTime->now; $today->set_time_zone( $TIME_ZONE ); -my $q = CGI->new; -print $q->header(-expires=>"+6os", -charset=>"UTF-8"); -print $q->start_html(-title => "Log Data Stats", -BGCOLOR=>"#c8fff8", - -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, - -style =>{-type => 'text/css', -src => 'wsrc/main.css'}, - -onload => "" - ); +my $BGCOL = '#c8fff8'; + if ( $THEME eq 'Sun' ) { + $BGCOL = '#D4AF37'; + $TH_CSS = "main_sun.css"; + }elsif ($THEME eq 'Moon'){ + $TH_CSS = "main_moon.css"; + $BGCOL = '#000000'; + + }elsif ($THEME eq 'Earth'){ + $TH_CSS = "main_earth.css"; + $BGCOL = 'green'; + } + +print $cgi->header(-expires=>"+6os", -charset=>"UTF-8"); +print $cgi->start_html(-title => "Log Data Stats", -BGCOLOR=>"$BGCOL", + -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, + -style =>{-type => 'text/css', -src => "wsrc/$TH_CSS"} + ); my $tbl = ''; @@ -86,34 +101,43 @@ my $processes = `$prc | sort -u -r -`; $processes =~ s/\s*0.00.*//gd; my $year =$today->year(); -$tbl .=qq( - - - - - - +$tbl .=qq( + + + + + + +
* Personal Log Data Statistics *
Number of Records:$log_rc
No. of Records This Year:$log_this_year_rc
No. of RTF Documents:$notes_rc
# Sum of Expenses For Year $year$expense
# Sum of Income For Year $year$income
Gross For Year $year$gross
$database).(uc format_bytes($stat[7], bs => 1000)).q(
LifeLog App. Version:$RELEASE_VER
Number of Records:$log_rc
No. of Records This Year:$log_this_year_rc
No. of RTF Documents:$notes_rc
# Sum of Expenses For Year $year$expense
# Sum of Income For Year $year$income
Gross For Year $year$gross
$database).(uc format_bytes($stat[7], bs => 1000)).q(
); -print qq(

Your Life Log Server Statistics


- $tbl



- Server Info

- $hardware_status
+print qq(); + +print qq(

Life Log Server Statistics


+ $tbl
+ Server Info

+ $hardware_status
Server Side Processes
$processes 
); -print $q->end_html; + +print $cgi->end_html; $db->disconnect(); exit; sub selectSQL{ - my $sth = $db->prepare( @_ ); - $sth->execute(); - my @row = $sth->fetchrow_array(); - $sth->finish; + my $sth = $db->prepare( @_ ); + $sth->execute(); + my @row = $sth->fetchrow_array(); + $sth->finish; return $row[0]; } @@ -133,4 +157,30 @@ sub camm { 1 while $amm =~ s/^(-?\d+)(\d\d\d)/$1,$2/; return $amm; } + + + + +sub getConfiguration { + try{ + my $st = dbExecute('SELECT ID, NAME, VALUE FROM CONFIG;'); + while (my @r=$st->fetchrow_array()){ + switch ($r[1]) { + case "RELEASE_VER" { $RELEASE_VER = $r[2] } + case "THEME" {$THEME= $r[2]} + } + } + } + catch{ + print "SERVER ERROR:".$_; + } + +} + +sub dbExecute{ + my $ret = $db->prepare(shift); + $ret->execute() or die "

Error->"& $DBI::errstri &"

"; + return $ret; +} + ### CGI END diff --git a/htdocs/cgi-bin/wsrc/main.css b/htdocs/cgi-bin/wsrc/main.css index eb96a95..77452fa 100644 --- a/htdocs/cgi-bin/wsrc/main.css +++ b/htdocs/cgi-bin/wsrc/main.css @@ -226,3 +226,19 @@ img { float: right; } +.midnight{ + color:midnightblue; +} + + +a:link { + color:#5b06fa; +} +a:visited { +color: #065bfa; +} + +a:hover { + color: #2d7081; + font-style: oblique; +} \ No newline at end of file diff --git a/htdocs/cgi-bin/wsrc/main_earth.css b/htdocs/cgi-bin/wsrc/main_earth.css new file mode 100644 index 0000000..5d948af --- /dev/null +++ b/htdocs/cgi-bin/wsrc/main_earth.css @@ -0,0 +1,242 @@ +p { + font-family: Bookman; + margin-left: 70px; + font-weight: bold; +} + +table, +th, +td { + font-family: Bookman; + border-collapse: collapse; + padding: 5px; + margin: auto; +} + +div { + font-family: Bookman; + text-align: center; + vertical-align: middle; +} + +#div_srh { + text-align: center; + vertical-align: middle; + display: none; + margin-top: 5px; + margin-bottom: 0px; +} + +TABLE, +th, +.tbl { + border: 1px solid black; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + margin-bottom: 0px; + margin-top: 5px; +} + +.tbl_rem { + border: 1px solid black; + border-right: 1px solid black; + border-bottom: 1px solid black; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + text-align: left; +} + +.r0 { + background-color: #e46331; + border: 1px solid black; + border-right: 1px solid black; + vertical-align: top; +} + +.r1 { + background-color: #a5682f; + border: 1px solid black; + border-right: 1px solid black; + vertical-align: top; +} + +.hdr { + font-style: normal; + font-weight: bold; + font-size: large; + background-color: #7a3d03; + border: 1px solid #16380f; + border-right: 1px solid black; + text-align: center; +} + +.edit { + margin: 2px; + padding: 2px; + font-size: 9pt; + color: midnightblue +} + +#al { + align-items: left; + align-content: left; + text-align: left; +} + +.log { + text-align: left; + word-wrap: break-word; + padding-left: 5px; +} + +.rz { + border: 1px solid black; + text-align: left; + background-color: #118107; + vertical-align: top; + align-self: baseline; + height: auto; + padding: 2%; + margin: 0px auto; +} + +div#rz { + border: 1px solid black; + text-align: left; + background-color: #08fa08; + vertical-align: top; + align-self: baseline; + height: auto; + padding: 2px; + margin: 0px auto; +} + +#tag_FRM { + border: 2px solid #07750d; + padding: 5px; + text-align: right; + vertical-align: top; +} + +img { + float: left; + padding: 0 10px +} + +#cat_desc { + position: absolute; + border: 2px solid #7a3d03; + padding: 5px; + text-align: center; + background: #c28a4a; + margin-top: 15px; + width: 280px; + text-decoration-style: wavy; +} + +#menu { + position: fixed; + float: left; + margin: 0; + border: 2px solid #118107; + padding: 5px; + text-align: center; + background: #c28a4a; + margin-left: 90%; +} + +#cat_lst { + visibility: hidden; +} + +#frm_login { + vertical-align: middle; + margin: 0; +} + +.ui-button, +.ui-button-text .ui-button { + font-size: 12px !important; +} + +.ui-menu { + list-style: none; + padding: 10px; + margin: 0; + display: block; + width: 227px; + text-align: left; +} + +.ui-menu .ui-menu { + margin-top: -3px; +} + +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 200px; +} + +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: .2em .4em; + line-height: 1.5; + zoom: 1; +} + +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + margin: -1px; +} + +.ui-icon{ + float:right; +} + +#standalone-container { + margin-top: 5px; + border: 1px solid black; +} + +#editor-container { + height: 140px; + max-height: 480px; + border-top: 1px solid gray; + border-right: 1px solid gray; + background-color: #118107; +} + +#toolbar-container { + border: 1px solid black; + background-color: #118107; + margin-bottom: 3px; +} + +.save_button { + margin-top: 3px; + float: right; +} + +.midnight{ + color:#adeccc; +} + + +a:link { + color:#f8f868; + } + a:visited { + color: #d2d8d2; + } + a:hover { + color: #04f87e; + } + a:active { + color: #ff7b00; + } \ No newline at end of file diff --git a/htdocs/cgi-bin/wsrc/main_moon.css b/htdocs/cgi-bin/wsrc/main_moon.css new file mode 100644 index 0000000..515d4c8 --- /dev/null +++ b/htdocs/cgi-bin/wsrc/main_moon.css @@ -0,0 +1,244 @@ +p { + font-family: Bookman; + margin-left: 70px; + font-weight: bold; +} + +table, +th, +td { + font-family: Bookman; + border-collapse: collapse; + padding: 5px; + margin: auto; + color: white; +} + +div { + font-family: Bookman; + text-align: center; + vertical-align: middle; + color: white; +} + +#div_srh { + text-align: center; + vertical-align: middle; + display: none; + margin-top: 5px; + margin-bottom: 0px; +} + +TABLE, +th, +.tbl { + border: 1px solid white; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + margin-bottom: 0px; + margin-top: 5px; +} + +.tbl_rem { + border: 1px solid white; + border-right: 1px solid white; + border-bottom: 1px solid white; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + text-align: left; +} + +.r0 { + background-color: #535353; + border: 1px solid white; + border-right: 1px solid white; + vertical-align: top; +} + +.r1 { + background-color: #272626; + border: 1px solid white; + border-right: 1px solid white; + vertical-align: top; +} + +.hdr { + font-style: normal; + font-weight: bold; + font-size: large; + background-color: #363531; + border: 1px solid white; + border-right: 1px solid white; + text-align: center; +} + +.edit { + margin: 2px; + padding: 2px; + font-size: 9pt; + color: #aeaee4; +} + +#al { + align-items: left; + align-content: left; + text-align: left; +} + +.log { + text-align: left; + word-wrap: break-word; + padding-left: 5px; +} + +.rz { + border: 1px solid white; + text-align: left; + background-color: #363531 + vertical-align: top; + align-self: baseline; + height: auto; + padding: 2%; + margin: 0px auto; +} + +div#rz { + border: 1px solid white; + text-align: left; + background-color: #e6ffff; + vertical-align: top; + align-self: baseline; + height: auto; + padding: 2px; + margin: 0px auto; +} + +#tag_FRM { + border: 2px solid #2b3d46; + padding: 5px; + text-align: right; + vertical-align: top; +} + +img { + float: left; + padding: 0 10px +} + +#cat_desc { + position: absolute; + border: 2px solid #9bb6c3; + padding: 5px; + text-align: center; + background: #0f0f0f; + margin-top: 15px; + width: 280px; + text-decoration-style: wavy; +} + +#menu { + position: fixed; + float: left; + margin: 0; + border: 2px solid #9bb6c3; + padding: 5px; + text-align: center; + margin-left: 90%; + color: white; + background-color: #363531; +} + +#cat_lst { + visibility: hidden; +} + +#frm_login { + vertical-align: middle; + margin: 0; +} + +.ui-button, +.ui-button-text .ui-button { + font-size: 12px !important; +} + +.ui-menu { + list-style: none; + padding: 10px; + margin: 0; + display: block; + width: 227px; + text-align: left; +} + +.ui-menu .ui-menu { + margin-top: -3px; +} + +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 200px; +} + +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: .2em .4em; + line-height: 1.5; + zoom: 1; +} + +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + margin: -1px; +} + +.ui-icon{ + float:right; +} + +#standalone-container { + margin-top: 5px; + border: 1px solid white; +} + +#editor-container { + height: 140px; + max-height: 480px; + border-top: 1px solid gray; + border-right: 1px solid gray; + background-color: #363531; +} + +#toolbar-container { + border: 1px solid white; + background-color: #363531; + margin-bottom: 3px; +} + +.save_button { + margin-top: 3px; + float: right; +} + +.midnight{ + color:#f8f868; +} + +a:link { + color:#f8f868; +} +a:visited { + color: #d2d8d2; +} +a:hover { + color: #04c7f8; +} +a:active { + color: #ff7b00; +} \ No newline at end of file diff --git a/htdocs/cgi-bin/wsrc/main_sun.css b/htdocs/cgi-bin/wsrc/main_sun.css new file mode 100644 index 0000000..7731e25 --- /dev/null +++ b/htdocs/cgi-bin/wsrc/main_sun.css @@ -0,0 +1,227 @@ +p { + font-family: Bookman; + margin-left: 70px; + font-weight: bold; +} + +table, +th, +td { + font-family: Bookman; + border-collapse: collapse; + padding: 5px; + margin: auto; +} + +div { + font-family: Bookman; + text-align: center; + vertical-align: middle; +} + +#div_srh { + text-align: center; + vertical-align: middle; + display: none; + margin-top: 5px; + margin-bottom: 0px; +} + +TABLE, +th, +.tbl { + border: 1px solid black; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + margin-bottom: 0px; + margin-top: 5px; +} + +.tbl_rem { + border: 1px solid black; + border-right: 1px solid black; + border-bottom: 1px solid black; + padding-top: 5px; + padding-right: 5px; + padding-bottom: 5px; + padding-left: 5px; + text-align: left; +} + +.r0 { + background-color: #FFDF00; + border: 1px solid black; + border-right: 1px solid black; + vertical-align: top; +} + +.r1 { + background-color: #CFB53B; + border: 1px solid black; + border-right: 1px solid black; + vertical-align: top; +} + +.hdr { + font-style: normal; + font-weight: bold; + font-size: large; + background-color: #D4AF37; + border: 1px solid black; + border-right: 1px solid black; + text-align: center; +} + +.edit { + margin: 2px; + padding: 2px; + font-size: 9pt; + color: midnightblue +} + +#al { + align-items: left; + align-content: left; + text-align: left; +} + +.log { + text-align: left; + word-wrap: break-word; + padding-left: 5px; +} + +.rz { + border: 1px solid black; + text-align: left; + background-color: #D4AF37 vertical-align: top; + align-self: baseline; + height: auto; + padding: 2%; + margin: 0px auto; +} + +div#rz { + border: 1px solid black; + text-align: left; + background-color: #e6ffff; + vertical-align: top; + align-self: baseline; + height: auto; + padding: 2px; + margin: 0px auto; +} + +#tag_FRM { + border: 2px solid rgb(148, 205, 231); + padding: 5px; + text-align: right; + vertical-align: top; +} + +img { + float: left; + padding: 0 10px +} + +#cat_desc { + position: absolute; + border: 2px solid black; + padding: 5px; + text-align: center; + background: #D4AF37; + margin-top: 15px; + width: 280px; + text-decoration-style: wavy; +} + +#menu { + position: fixed; + float: left; + margin: 0; + border: 1px solid black; + padding: 5px; + text-align: center; + background: #D4AF37; + margin-left: 90%; +} + +#cat_lst { + visibility: hidden; +} + +#frm_login { + vertical-align: middle; + margin: 0; +} + +.ui-button, +.ui-button-text .ui-button { + font-size: 12px !important; +} + +.ui-menu { + list-style: none; + padding: 10px; + margin: 0; + display: block; + width: 227px; + text-align: left; +} + +.ui-menu .ui-menu { + margin-top: -3px; +} + +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 200px; +} + +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: .2em .4em; + line-height: 1.5; + zoom: 1; +} + +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + margin: -1px; +} + +.ui-icon{ + float:right; +} + +#standalone-container { + margin-top: 5px; + border: 1px solid black; +} + +#editor-container { + height: 140px; + max-height: 480px; + border-top: 1px solid gray; + border-right: 1px solid gray; + background-color: #D4AF37; +} + +#toolbar-container { + border: 1px solid black; + background-color: #D4AF37; + margin-bottom: 3px; +} + +.save_button { + margin-top: 3px; + float: right; +} + +.midnight{ + color:midnightblue; +} \ No newline at end of file