From: ivan Date: Fri, 8 Aug 2003 05:42:13 +0000 (+0000) Subject: - (finish) includes! (closes: Bug#551) X-Git-Tag: NET_WHOIS_RAW_0_31~446 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=e283ab567e6890727e4d8e35c1d8097398678753 - (finish) includes! (closes: Bug#551) - (finish) moving SQL search to including generic elements/search.html - new elements: menubar.html, header.html, pager.html and table.html - have masonize process .html files also --- diff --git a/FS/FS/CGI.pm b/FS/FS/CGI.pm index 86d20f6cb..f6153761b 100644 --- a/FS/FS/CGI.pm +++ b/FS/FS/CGI.pm @@ -44,8 +44,10 @@ Returns an HTML header. =cut sub header { + use Carp; + carp 'FS::CGI::header deprecated; include /elements/header.html instead'; + my($title,$menubar,$etc)=@_; #$etc is for things like onLoad= etc. - #use Carp; $etc = '' unless defined $etc; my $x = <!; diff --git a/bin/masonize b/bin/masonize index def0115b7..3139e0af5 100755 --- a/bin/masonize +++ b/bin/masonize @@ -1,6 +1,7 @@ #!/usr/bin/perl -foreach $file ( split(/\n/, `find . -depth -print | grep cgi\$`) ) { +foreach $file ( split(/\n/, `find . -depth -print`) ) { + next unless $file =~ /(cgi|html)$/; open(F,$file) or die "can't open $file for reading: $!"; @file = ; #print "$file ". scalar(@file). "\n"; diff --git a/httemplate/elements/header.html b/httemplate/elements/header.html new file mode 100644 index 000000000..581bbabc7 --- /dev/null +++ b/httemplate/elements/header.html @@ -0,0 +1,19 @@ +<% + my($title, $menubar) = @_; + my $etc = @_ ? shift : ''; #$etc is for things like onLoad= etc. +%> + + + + <%= $title %> + + + + + + > + + <%= $title %> + +

+ <%= $menubar ? "$menubar

" : '' %> diff --git a/httemplate/elements/menubar.html b/httemplate/elements/menubar.html new file mode 100644 index 000000000..87a50312c --- /dev/null +++ b/httemplate/elements/menubar.html @@ -0,0 +1,8 @@ +<% + my($item, $url, @html); + while (@_) { + ($item, $url) = splice(@_,0,2); + push @html, qq!$item!; + } +%> +<%= join(' | ', @html) %> diff --git a/httemplate/elements/pager.html b/httemplate/elements/pager.html new file mode 100644 index 000000000..db9ff83bf --- /dev/null +++ b/httemplate/elements/pager.html @@ -0,0 +1,42 @@ +<% + + my %opt = @_; + + my $pager = ''; + if ( $opt{'total'} != $opt{'num_rows'} && $opt{'maxrecords'} ) { + unless ( $opt{'offset'} == 0 ) { + $cgi->param('offset', $opt{'offset'} - $opt{'maxrecords'}); +%> + + Previous + +<% + } + my $page = 0; + for ( my $poff = 0; $poff < $opt{'total'}; $poff += $opt{'maxrecords'} ) { + $page++; + if ( $opt{'offset'} == $poff ) { +%> + + <%= $page %> + +<% + } else { + $cgi->param('offset', $poff); +%> + + $page + +<% + } + } + unless ( $opt{'offset'} + $opt{'maxrecords'} > $opt{'total'} ) { + $cgi->param('offset', $opt{'offset'} + $opt{'maxrecords'}); +%> + + Next + +<% + } + } +%> diff --git a/httemplate/elements/table.html b/httemplate/elements/table.html new file mode 100644 index 000000000..3b6108719 --- /dev/null +++ b/httemplate/elements/table.html @@ -0,0 +1,8 @@ +<% + my $color = shift; + if ( $color ) { +%> + +<% } else { %> +
+<% } %> diff --git a/httemplate/index.html b/httemplate/index.html index 99b321f30..a898d9134 100644 --- a/httemplate/index.html +++ b/httemplate/index.html @@ -148,7 +148,7 @@ - SQL query: SELECT + SQL query: SELECT
diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html index fba8ee815..fbedcaa26 100644 --- a/httemplate/search/elements/search.html +++ b/httemplate/search/elements/search.html @@ -1,8 +1,59 @@ <% -my $conf = new FS::Conf; -my $maxrecords = $conf->config('maxsearchrecordsperpage'); + my %opt = @_; + unless (exists($opt{'count_query'}) && length($opt{'count_query'})) { + ( $opt{'count_query'} = $opt{'query'} ) =~ + s/^\s*SELECT\s*(.*)\s+FROM\s/SELECT COUNT(*) FROM /i; + } -my $limit = $maxrecords ? "LIMIT $maxrecords" : ''; + my $conf = new FS::Conf; + my $maxrecords = $conf->config('maxsearchrecordsperpage'); + my $limit = $maxrecords ? "LIMIT $maxrecords" : ''; + + my $offset = $cgi->param('offset') || 0; + $limit .= " OFFSET $offset" if $offset; + + my $count_sth = dbh->prepare($opt{'count_query'}) + or die "Error preparing $opt{'count_query'}: ". dbh->errstr; + $count_sth->execute + or die "Error executing $opt{'count_query'}: ". $count_sth->errstr; + my $total = $count_sth->fetchrow_arrayref->[0]; + + my $sth = dbh->prepare("$opt{'query'} $limit") + or die "Error preparing $opt{'query'}: ". dbh->errstr; + $sth->execute + or die "Error executing $opt{'query'}: ". $sth->errstr; + + #can get # of rows without fetching them all? + my $rows = $sth->fetchall_arrayref; + +%> + +<% my $pager = include ( '/elements/pager.html', + 'offset' => $offset, + 'num_rows' => scalar(@$rows), + 'total' => $total, + 'maxrecords' => $maxrecords, + ); %> + +<%= $total %> total <%= $opt{'name'} %>

<%= $pager %> +<%= include( '/elements/table.html' ) %> + + <% foreach ( @{$sth->{NAME}} ) { %> + + <% } %> + + <% foreach my $row ( @$rows ) { %> + + <% foreach ( @$row ) { %> + + <% } %> + + <% } %> + +
<%= $_ %>
<%= $_ %>
+<%= $pager %> + + diff --git a/httemplate/search/sql.cgi b/httemplate/search/sql.cgi deleted file mode 100755 index b83ef039f..000000000 --- a/httemplate/search/sql.cgi +++ /dev/null @@ -1,76 +0,0 @@ -<% - -my $conf = new FS::Conf; -my $maxrecords = $conf->config('maxsearchrecordsperpage'); - -my $limit = ''; -$limit .= "LIMIT $maxrecords" if $maxrecords; - -my $offset = $cgi->param('offset') || 0; -$limit .= " OFFSET $offset" if $offset; - -my $total; - -my $sql = $cgi->param('sql'); -$sql =~ s/^\s*SELECT//i; - -my $count_sql = $sql; -$count_sql =~ s/^(.*)\s+FROM\s/COUNT(*) FROM /i; - -my $sth = dbh->prepare("SELECT $count_sql") - or eidiot dbh->errstr. " doing $count_sql\n"; -$sth->execute or eidiot "Error executing \"$count_sql\": ". $sth->errstr; - -$total = $sth->fetchrow_arrayref->[0]; - -my $sth = dbh->prepare("SELECT $sql $limit") - or eidiot dbh->errstr. " doing $sql\n"; -$sth->execute or eidiot "Error executing \"$sql\": ". $sth->errstr; -my $rows = $sth->fetchall_arrayref; - -%> - -<% - - #begin pager - my $pager = ''; - if ( $total != scalar(@$rows) && $maxrecords ) { - unless ( $offset == 0 ) { - $cgi->param('offset', $offset - $maxrecords); - $pager .= 'Previous '; - } - my $poff; - my $page; - for ( $poff = 0; $poff < $total; $poff += $maxrecords ) { - $page++; - if ( $offset == $poff ) { - $pager .= qq!$page !; - } else { - $cgi->param('offset', $poff); - $pager .= qq!$page !; - } - } - unless ( $offset + $maxrecords > $total ) { - $cgi->param('offset', $offset + $maxrecords); - $pager .= 'Next '; - } - } - #end pager - - print header('Query Results', menubar('Main Menu'=>$p) ). - "$total total rows

$pager". table(). - ""; - print "$_" foreach @{$sth->{NAME}}; - print ""; - - foreach $row ( @$rows ) { - print ""; - print "$_" foreach @$row; - print ""; - } - - print "$pager"; - -%> diff --git a/httemplate/search/sql.html b/httemplate/search/sql.html index e61ce1538..7d7fc0890 100644 --- a/httemplate/search/sql.html +++ b/httemplate/search/sql.html @@ -1,8 +1,12 @@ -<%= include( '/elements/header', 'Query Results', - include( '/elements/menubar', 'Main Menu' => $p ) +<%= include( '/elements/header.html', 'Query Results', + include( '/elements/menubar.html', 'Main Menu' => $p ) + ) %> + <%= include( 'elements/search.html', - 'name' => 'rows', - + 'name' => 'rows', + 'query' => 'SELECT '. ( $cgi->param('sql') + || eidiot('Empty query') ), + ) %>