From: Will Budic Date: Sat, 29 Feb 2020 22:38:51 +0000 (+1100) Subject: FInally fixed category views, major change. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=955a485d281a21c510118a6fef649a397ded9404;p=LifeLog.git FInally fixed category views, major change. --- diff --git a/htdocs/cgi-bin/main.cgi b/htdocs/cgi-bin/main.cgi index 63ca1fc..187ac06 100755 --- a/htdocs/cgi-bin/main.cgi +++ b/htdocs/cgi-bin/main.cgi @@ -22,6 +22,7 @@ use Date::Parse; use Time::localtime; use Regexp::Common qw /URI/; +use List::MoreUtils qw(uniq); #DEFAULT SETTINGS HERE! use lib "system/modules"; @@ -57,10 +58,9 @@ my $log_rc_prev = 0; my $log_cur_id = 0; my $log_top = 0; my $rs_keys = $cgi->param('keywords'); -my $rs_cat_idx = $cgi->param('category'); my $prm_vc = $cgi->param("vc"); my $prm_xc = $cgi->param("xc"); -my $prm_xc_lst = $cgi->param("idx_cat_x"); +my $prm_xc_lst = $cgi->param("xclst"); my $rs_dat_from = $cgi->param('v_from'); my $rs_dat_to = $cgi->param('v_to'); my $rs_prev = $cgi->param('rs_prev'); @@ -96,10 +96,6 @@ if(!$prm_vc && &Settings::keepExcludes){ $prm_xc = $prm_xc_lst if (!$prm_xc && !$cgi->param('srch_reset')); } } -elsif(!$prm_xc && $prm_xc_lst){ -#view call only - $prm_xc = $prm_xc_lst; -} if ( !$rs_dat_to && $rs_dat_from ) { my $dur = $today; @@ -113,7 +109,7 @@ if ( $rs_dat_from && $rs_dat_to ) { #Toggle if search deployed. my $toggle = ""; -if ( $rs_keys || $rs_cat_idx || $stmD || $prm_vc > 0 || $prm_xc > 0) { $toggle = 1; } +if ( $rs_keys || $stmD || $prm_vc > 0 || $prm_xc > 0) { $toggle = 1; } ##Handle Session Keeps @@ -129,35 +125,43 @@ if($cgi->param('srch_reset') == 1){ $sss->clear('sss_xc'); } -if($prm_vc){ - if ($cgi->param('sss_xc') eq 'on'){ - $sss->param('sss_vc', $prm_vc) - } - else{ - $sss->clear('sss_vc'); - } -}else{ - $prm_vc = $sss->param('sss_vc'); -} -if($prm_xc){ + +if($prm_xc &&$prm_xc ne ""){ +#TODO (2020-02-23) It gets too complicated. should not have both $prm_xc and $prm_xc_lst; + $prm_xc =~ s/^0*//g;$prm_xc_lst=~ s/^\,$//g; + if(!$prm_xc_lst||$prm_xc_lst==0){#} && index($prm_xc, ',') > 0){ + $prm_xc_lst = $prm_xc; + }else{ + my $f; + my @xc_lst = split /\,/, $prm_xc_lst; @xc_lst = uniq(sort { $a <=> $b } @xc_lst); + foreach my $n(@xc_lst){ + if($n == $prm_xc){ $f=1; last; } + } + if(!$f){#not found view was clicked changing category but not adding it to ex list. Let's add it to the list. + $prm_xc_lst .= ",$prm_xc"; + } + $prm_xc_lst=~ s/\,$//g;$prm_xc_lst=~ s/\,\,/\,/g; + } + + if ($cgi->param('sss_xc') eq 'on'){ - $sss->param('sss_xc', $prm_xc) + $sss->param('sss_xc', $prm_xc); + $sss->param('sss_xc_lst', $prm_xc_lst); } else{ $sss->clear('sss_xc'); + $sss->clear('sss_xc_lst'); } + + }else{ $prm_xc = $sss->param('sss_xc'); + $prm_xc_lst = $sss->param('sss_xc_lst'); } - -#TODO (2020-02-23) It gets too complicated. should not have both $prm_xc and $prm_xc_lst; - if(!$prm_xc_lst && index($prm_xc, ',') > 0){ - $prm_xc_lst = $prm_xc; - } ## -my @xc_lst = split /\,/, $prm_xc_lst; +my @xc_lst = split /\,/, $prm_xc_lst; @xc_lst = uniq(sort { $a <=> $b } @xc_lst); $sss->flush(); @@ -278,15 +282,12 @@ qq(
Edit ); - if ( defined $prm_vc ) { #view category form selection - $rs_cat_idx = $prm_vc; - } if ( $rs_keys && $rs_keys ne '*' ) { my @keywords = split / /, $rs_keys; - if ($rs_cat_idx && $rs_cat_idx != $prm_xc) { - $stmS .= " ID_CAT='" . $rs_cat_idx . "' AND"; + if ($prm_vc && $prm_vc != $prm_xc) { + $stmS .= " ID_CAT='" . $prm_vc . "' AND"; } else { if($prm_xc>0){ @@ -312,13 +313,13 @@ qq( $sqlVWL = $stmS . $stmE; } } - elsif ($rs_cat_idx && $rs_cat_idx != $prm_xc) { + elsif ($prm_vc && $prm_vc != $prm_xc) { if ($stmD) { - $sqlVWL = $stmS . $stmD . " AND ID_CAT='" . $rs_cat_idx . "'" . $stmE; + $sqlVWL = $stmS . $stmD . " AND ID_CAT='" . $prm_vc . "'" . $stmE; } else { - $sqlVWL = $stmS . " ID_CAT=" . $rs_cat_idx . ";" . $stmE; + $sqlVWL = $stmS . " ID_CAT=" . $prm_vc . ";" . $stmE; } } else { @@ -352,9 +353,10 @@ qq( my $id = 0; my $log_start = index $sqlVWL, "<="; my $re_a_tag = qr/.*<\/a>/si; + #TODO implement isView instead of quering params over and over again. my $isView = rindex ($sqlVWL, 'PID<=') > 0 || rindex ($sqlVWL, 'ID_CAT=') > 0; - print $cgi->pre("###[Session PARAMS->isV:$isView|vc=$prm_vc|xc=$prm_xc|xc_lst=$prm_xc_lst|xc_lst=@xc_lst|keepExcludes=".&Settings::keepExcludes."] -> ".$sqlVWL) if $DEBUG; + print $cgi->pre("###[Session PARAMS->isV:$isView|vc=$prm_vc|xc=$prm_xc|xc_lst=$prm_xc_lst|\@xc_lst=@xc_lst|keepExcludes=".&Settings::keepExcludes."] -> ".$sqlVWL) if $DEBUG; if ( $log_start > 0 ) { @@ -699,8 +701,8 @@ sub buildLog { } elsif ($rs_keys) { my $criter = ""; - if ( $rs_cat_idx > 0 ) { - $criter = "->Criteria[" . $hshCats{$rs_cat_idx} . "]"; + if ( $prm_vc > 0 ) { + $criter = "->Criteria[" . $hshCats{$prm_vc} . "]"; } $log_output .= qq( Search Failed to Retrive any records on keywords: [$rs_keys]$criter!); @@ -758,7 +760,7 @@ _TXT Category:  - --Select -- +       --Select --