my $confirmed = $cgi->param('confirmed');
if ($opr == 1){
DisplayDateDiffs();
-}elsif ($confirmed){
+}
+if ($opr == 3){
+ PrintView();
+}
+elsif ($confirmed){
DeletionConfirmed();
}else{
print $cgi->redirect('main.cgi') if not $cgi->param('chk');
sub DisplayDateDiffs {
- printHeader();
+ printHeader("Date Difference Report");
my $tbl = '<table class="tbl" width="'.$PRC_WIDTH.'%">
<tr class="r0"><td colspan="2"><b>* DATE DIFFERENCES *</b></td></tr>';
}
sub printHeader {
+my $title = shift;
print $cgi->header(-expires=>"+6os");
-print $cgi->start_html(-title => "Date Difference Report", -BGCOLOR => &Settings::bgcol,
+print $cgi->start_html(-title => $title, -BGCOLOR => &Settings::bgcol,
-script=> [{-type => 'text/javascript', -src => 'wsrc/main.js'},
{-type => 'text/javascript', -src => 'wsrc/jquery.js'},
{-type => 'text/javascript', -src => 'wsrc/jquery-ui.js'}],
- -style => [{-type => 'text/css', -src => "wsrc/".&Settings::css},
+ -style => [{-type => 'text/css', -src => "wsrc/".&Settings::css}, {-type => 'text/css', -src => "wsrc/print.css"},
{-type => 'text/css', -src => 'wsrc/jquery-ui.css'},
{-type => 'text/css', -src => 'wsrc/jquery-ui.theme.css'},
{-type => 'text/css', -src => 'wsrc/jquery-ui.theme.css'}],
sub NotConfirmed {
-try{
- my ($stm,$st);
+try{
my $SQLID = 'rowid'; $SQLID = 'ID' if( Settings::isProgressDB() );
my $stmS = "SELECT ID, PID, (select NAME from CAT WHERE ID_CAT = CAT.ID) as CAT, DATE, LOG from VW_LOG WHERE";
my $stmE = " ORDER BY DATE DESC, ID DESC;";
}
}
$stm =~ s/ OR $//; $stm .= $stmE;
- $st = Settings::selectRecords($db, $stm);
+ my $st = Settings::selectRecords($db, $stm);
if($opr == 0){
- printHeader();
+ printHeader('Confirm Deletion');
print $cgi->pre("###NotConfirmed()->[stm:$stm]") if($DEBUG);
my $r_cnt = 0;
$tbl .= '<tr class="r0"><td colspan="4"><a name="bottom"></a><a href="#top">↟</a>
<center>
- <h3>Please Confirm You Want<br>The Above Record'.$plural.' Deleted?</h3><br><button onclick="window.history.back();">No Go Back</button></center>
+ <h3>Please Confirm You Want<br>The Above Record'.$plural.' Deleted?</h3><br><button onclick="window.history.back()">No Go Back</button></center>
</td></tr>
<tr class="r0"><td colspan="4"><center>
<input type="submit" value="I AM CONFIRMING!">
return $log;
}
+
+
+sub PrintView {
+
+try{
+ my $SQLID = 'rowid'; $SQLID = 'ID' if( Settings::isProgressDB() );
+ my $stmS = "SELECT ID, PID, (select NAME from CAT WHERE ID_CAT = CAT.ID) as CAT, DATE, LOG from VW_LOG WHERE";
+ my $stmE = " ORDER BY DATE DESC, ID DESC;";
+
+ #Get ids and build confirm table and check
+ my $stm = $stmS ." ";
+ foreach my $id ($cgi->param('chk')){
+ if($opr == 2){
+ $stm = $stm . "$SQLID = " . $id . " OR ";
+ }
+ else{
+ $stm = $stm . "PID = " . $id . " OR ";
+ }
+ }
+ $stm =~ s/ OR $//; $stm .= $stmE;
+ my $st = Settings::selectRecords($db, $stm);
+
+ print $cgi->header(-expires=>"+6os");
+ print $cgi->start_html(-title => "LifeLog Excerpt ".Settings::dbFile()." - ".$today->strftime('%d/%m/%Y %H:%M'),
+ -style => {-type => 'text/css', -src => "wsrc/print.css"}
+ );
+ print $cgi->pre("###PrintView()->[stm:$stm]") if($DEBUG);
+
+
+ my $tbl = '<table class="tbl_print" border="0" width="'.$PRC_WIDTH.'%">
+ <tr class="hdr"><th>Date</th> <th>Time</th> <th>Log</th><th>Category</th></tr>';
+
+ while(my @row = $st->fetchrow_array()) {
+ my $ct = $row[2];
+ my $dt = DateTime::Format::SQLite->parse_datetime( $row[3] );
+ my $log = log2html($row[4]);
+
+ $tbl = $tbl . '<tr><td class="ctr">'. $dt->ymd . "</td>" .
+ '<td class="ctr">' . $dt->hms . "</td>" .
+ '<td>'."$log</td>\n".
+ '<td>' . $ct. '<input type="hidden" name="chk" value="'.$row[0].'"></td></tr>';
+ }
+ $tbl .= '</table>';
+
+ print "<center><div>\n$tbl\n</div></center>";
+
+ print $cgi->end_html();
+
+
+}catch{
+ print "<font color=red><b>SERVER ERROR</b>-> Method NotConfirmed() Page Build Failed!.</font>:<pre>".$@."</pre>";
+}
+}
+
+sub log2html{
+ my $log = shift;
+ my ($re_a_tag, $sub) = qr/<a\s+.*?>.*<\/a>/si;
+ $log =~ s/^(^\*)(.*)(\*)(\\n)/<b>$2<\/b><br>/oi;
+ $log =~ s/''/'/g;
+ $log =~ s/\r\n/<br>/gs;
+ $log =~ s/\\n/<br>/gs;
+
+
+ if ( $log =~ /<<LNK</ ) {
+ my $idx = $-[0] + 5;
+ my $len = index( $log, '>', $idx );
+ $sub = substr( $log, $idx + 1, $len - $idx - 1 );
+ my $url = qq(<a href="$sub" target=_blank>$sub</a>);
+ $log =~ s/<<LNK<(.*?)>+/$url/osi;
+ }
+
+ if ( $log =~ /<<IMG</ ) {
+ my $idx = $-[0] + 5;
+ my $len = index( $log, '>', $idx );
+ $sub = substr( $log, $idx + 1, $len - $idx - 1 );
+ my $url = qq(<img src="$sub"/>);
+ $log =~ s/<<IMG<(.*?)>+/$url/osi;
+ }
+ elsif ( $log =~ /<<FRM</ ) {
+ my $idx = $-[0] + 5;
+ my $len = index( $log, '>', $idx );
+ $sub = substr( $log, $idx + 1, $len - $idx - 1 );
+ my $lnk = $sub;
+ if ( $lnk =~ /_frm.png/ ) {
+ my $ext = substr( $lnk, index( $lnk, '.' ) );
+ $lnk =~ s/_frm.png/$ext/;
+ if ( not -e "./images/$lnk" ) {
+ $lnk =~ s/$ext/.jpg/;
+ if ( not -e "./images/$lnk" ) {
+ $lnk =~ s/.jpg/.gif/;
+ }
+ }
+ $lnk =
+ qq(\n<a href="./images/$lnk" style="border=0;" target="_IMG">
+ <img src="./images/$sub" width="$imgw" height="$imgh" class="tag_FRM"/></a>);
+ }
+ else {
+ #TODO fetch from web locally the original image.
+ $lnk = qq(\n<img src="$lnk" width="$imgw" height="$imgh" class="tag_FRM"/>);
+ }
+ $log =~ s/<<FRM<(.*?)>+/$lnk/o;
+ }
+
+ #Replace with a full link an HTTP URI
+ if ( $log =~ /<iframe / ) {
+ my $a = q(<iframe width="560" height="315");
+ my $b;
+ given (&Settings::frameSize) {
+ when("0") { $b = q(width="390" height="215") }
+ when("1") { $b = q(width="280" height="180") }
+ when("2") { $b = q(width="160" height="120") }
+ default {
+ $b = &Settings::frameSize;
+ }
+ }
+ $b = qq(<div><iframe align="center" $b);
+ $log =~ s/$a/$b/o;
+ $a = q(</iframe>);
+ $b = q(</iframe></div>);
+ $log =~ s/$a/$b/o;
+ }
+ else {
+ my @chnks = split( /($re_a_tag)/si, $log );
+ foreach my $ch_i (@chnks) {
+ next if $ch_i =~ /$re_a_tag/;
+ next if index( $ch_i, "<img" ) > -1;
+ $ch_i =~ s/https/http/gsi;
+ $ch_i =~ s/($RE{URI}{HTTP})/<a href="$1" target=_blank>$1<\/a>/gsi;
+ }
+ $log = join( '', @chnks );
+ }
+
+ #$log =~ s/\<\</<</gs;
+ #$log =~ s/\>\>/>>/gs;
+
+return $log;
+}
+
+
+
1;
\ No newline at end of file
--- /dev/null
+body {
+ font: 13pt Georgia, "Times New Roman", Times, serif;
+ line-height: 1.3;
+ background: #fff !important;
+ color: #000;
+}
+
+.ctr{
+ text-align: center;
+}
+
+.tbl_print {
+ text-align:left;
+ border: 1px solid #000;
+ border-collapse: collapse
+}
+.hdr, th, td{
+ padding-left: 5px;
+ border: 1px solid #000;
+}
+tr{
+ page-break-before:auto;
+ page-break-after:avoid;
+}
+
+a {
+ page-break-inside:avoid
+}
+blockquote {
+ page-break-inside: avoid;
+}
+h1, h2, h3, h4, h5, h6 { page-break-after:avoid;
+ page-break-inside:avoid }
+img { page-break-inside:avoid;
+ page-break-after:avoid; }
+table, pre { page-break-inside:avoid }
+ul, ol, dl { page-break-before:avoid }
+
+a:link, a:visited, a {
+background: transparent;
+color: #520;
+font-weight: bold;
+text-decoration: underline;
+text-align: left;
+}
+
+a {
+page-break-inside:avoid
+}
+
+
+$a:after > img {
+content: "";
+}
+
+code, pre { font-family: "Courier New", Courier, mono}
+
+ul, ol {
+list-style: square; margin-left: 18pt;
+margin-bottom: 20pt;
+}
+
+li {
+line-height: 1.6em;
+}
+
+@page {
+ size: A4;
+ margin:18mm 0mm 5mm 5mm;
+}
+
+@media print {
+
+ tr{
+ page-break-inside: avoid;
+ }
+}
+
\ No newline at end of file