Add code to (optionally) list FAQs with no cats.
Patch by exor674.
diffs (100 lines):
diff -r 28604b34f3cb -r 372629d590aa cgi-bin/LJ/Faq.pm
--- a/cgi-bin/LJ/Faq.pm Sat Aug 01 11:21:20 2009 +0000
+++ b/cgi-bin/LJ/Faq.pm Sat Aug 01 11:34:04 2009 +0000
@@ -108,9 +108,17 @@ sub load_all {
my %opts = @_;
my $lang = delete $opts{lang} || $LJ::DEFAULT_LANG;
- my $faqcat = delete $opts{"cat"};
- my $wherecat = "faqcat "
- . (length $faqcat ? "= " . $dbr->quote($faqcat) : "!= ''");
+ my $faqcat = delete $opts{cat};
+ my $allow_no_cat = delete $opts{allow_no_cat} || 0;
+
+ my $wherecat = "";
+ if ( $allow_no_cat ) {
+ $wherecat = "WHERE faqcat = " . $dbr->quote($faqcat) if defined
$faqcat;
+ } else {
+ $wherecat = "WHERE faqcat "
+ . (length $faqcat ? "= " . $dbr->quote($faqcat) : "!= ''");
+ }
+
croak("unknown parameters: " . join(", ", keys %opts))
if %opts;
@@ -120,13 +128,13 @@ sub load_all {
("SELECT faqid, question, summary, answer, faqcat, lastmoduserid,
".
"DATE_FORMAT(lastmodtime, '%M %D, %Y') AS lastmodtime, ".
"UNIX_TIMESTAMP(lastmodtime) AS unixmodtime, sortorder ".
- "FROM faq WHERE $wherecat");
+ "FROM faq $wherecat");
} else { # Don't load fields that lang_update_in_place will overwrite.
$sth = $dbr->prepare
("SELECT faqid, faqcat, ".
"UNIX_TIMESTAMP(lastmodtime) AS unixmodtime, sortorder ".
- "FROM faq WHERE $wherecat");
+ "FROM faq $wherecat");
}
$sth->execute;
die $sth->errstr if $sth->err;
diff -r 28604b34f3cb -r 372629d590aa htdocs/admin/faq/index.bml
--- a/htdocs/admin/faq/index.bml Sat Aug 01 11:21:20 2009 +0000
+++ b/htdocs/admin/faq/index.bml Sat Aug 01 11:34:04 2009 +0000
@@ -36,7 +36,7 @@ body<=
my $dom = LJ::Lang::get_dom( "faq" );
my $lang = LJ::Lang::get_root_lang( $dom );
- my @faqs = LJ::Faq->load_all( lang => $lang->{lncode} );
+ my @faqs = LJ::Faq->load_all( lang => $lang->{lncode}, allow_no_cat => 1 );
my $user;
my $user_url;
@@ -54,7 +54,17 @@ body<=
push @{ $faqq{$_->faqcat} }, $_
foreach @faqs;
- foreach my $faqcat ( sort { $faqcat{$a}->{catorder} <=>
$faqcat{$b}->{catorder} } keys %faqcat ) {
+ # Ensure 'no category' is last.
+ my @sorted_cats = sort { $faqcat{$a}->{catorder} <=>
$faqcat{$b}->{catorder} } keys %faqcat;
+
+ $faqcat{''} = {
+ faqcat => '',
+ faqcatname => '<No Category>',
+ };
+
+ push @sorted_cats, '';
+
+ foreach my $faqcat ( @sorted_cats ) {
$ret .= "<h2><a href='readcat.bml?faqcat=$faqcat'>"
. LJ::ehtml( $faqcat{$faqcat}->{faqcatname} ) . "</a></h2>\n";
next unless $faqq{$faqcat} && @{ $faqq{$faqcat} };
diff -r 28604b34f3cb -r 372629d590aa htdocs/admin/faq/readcat.bml
--- a/htdocs/admin/faq/readcat.bml Sat Aug 01 11:21:20 2009 +0000
+++ b/htdocs/admin/faq/readcat.bml Sat Aug 01 11:34:04 2009 +0000
@@ -16,16 +16,19 @@ body<=
my $ret = "";
- my $faqcat = $FORM{faqcat};
- my $sth = $dbh->prepare( "SELECT faqcatname FROM faqcat WHERE faqcat=?" );
- $sth->execute( $faqcat );
- my ( $faqcatname ) = $sth->fetchrow_array;
- return "Unknown FAQ cat $faqcat" unless defined $faqcatname;
+ my $faqcatname = "<No Category>";
+ my $faqcat = $FORM{faqcat} || '';
+ if ( $faqcat ne '' ) {
+ my $sth = $dbh->prepare( "SELECT faqcatname FROM faqcat WHERE
faqcat=?" );
+ $sth->execute( $faqcat );
+ ( $faqcatname ) = $sth->fetchrow_array;
+ return "Unknown FAQ cat $faqcat" unless defined $faqcatname;
+ }
my $remote = LJ::get_remote();
my $dom = LJ::Lang::get_dom( "faq" );
my $lang = LJ::Lang::get_root_lang( $dom );
- my @faqs = LJ::Faq->load_all( lang => $lang->{lncode}, cat => $faqcat );
+ my @faqs = LJ::Faq->load_all( lang => $lang->{lncode}, cat => $faqcat,
allow_no_cat => 1 );
my $user;
my $user_url;
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog