Андрей (andy) wrote in changelog,
Андрей
andy
changelog

[ljcom] r12706: LJSUP-13770 (refactor LJ FAQs from BML t...

Committer: ailyin
LJSUP-13770 (refactor LJ FAQs from BML to controllers)
U   trunk/cgi-bin/LJ/Hooks/ESN.pm
U   trunk/cgi-bin/LJ/Hooks/Homepage.pm
U   trunk/cgi-bin/LJ/Hooks/Userinfo.pm
U   trunk/cgi-bin/LJ/Nav.pm
U   trunk/cgi-bin/LJ/Pay.pm
U   trunk/cgi-bin/LJ/Setting/DefaultCopyright.pm
U   trunk/cgi-bin/LJ/Widget/ErrorPage.pm
U   trunk/cgi-bin/LJ/Widget/FeatureMatrix.pm
U   trunk/cgi-bin/redirect-local.dat
U   trunk/htdocs/check_secret.bml
U   trunk/htdocs/doc/guide/moodicons.bml
U   trunk/htdocs/doc/pay/diskupgrades.bml
U   trunk/htdocs/download/index.bml
U   trunk/htdocs/error-page.html
U   trunk/htdocs/inc/community
U   trunk/htdocs/inc/legal-tos
U   trunk/htdocs/inc/legal-tos-russian-translation
U   trunk/htdocs/inc/spam-warning
U   trunk/htdocs/inc/support-guide
U   trunk/htdocs/inc/validationreminder
U   trunk/htdocs/invite/gen.bml
U   trunk/htdocs/invite/index.bml
U   trunk/htdocs/manage/account/cancel.bml
U   trunk/htdocs/manage/account/modify.bml
U   trunk/htdocs/manage/sms/textcommands.bml
U   trunk/htdocs/manage/voicepost.bml
U   trunk/htdocs/misc/nanowrimo.bml
U   trunk/htdocs/paidaccounts/index.bml
U   trunk/htdocs/set_secret.bml
U   trunk/htdocs/site/index.bml
U   trunk/htdocs/sponsors/choose_sponsor.bml
U   trunk/htdocs/tour/customize.bml
U   trunk/htdocs/tour/index.bml
U   trunk/htdocs/tour/multimedia.bml
U   trunk/htdocs/tour_rus/about_lj.bml
U   trunk/htdocs/voicepost/ogg.bml
U   trunk/ssldocs/pay/ccpay.bml
Modified: trunk/cgi-bin/LJ/Hooks/ESN.pm
===================================================================
--- trunk/cgi-bin/LJ/Hooks/ESN.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Hooks/ESN.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -226,8 +226,9 @@
     if ($u && $u->can_manage($journal)) {
         return LJ::run_hook("upgrade_link", $journal) . " ";
     } else {
+        my $faqurl = LJ::Faq->page_url( 'faqid' => 225 );
         return qq{
-            <a href="$LJ::SITEROOT/support/faqbrowse.bml?faqid=225">
+            <a href="$faqurl">
                 <img src="$LJ::STATPREFIX/img/help.gif?v=6803">
             </a>
         };

Modified: trunk/cgi-bin/LJ/Hooks/Homepage.pm
===================================================================
--- trunk/cgi-bin/LJ/Hooks/Homepage.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Hooks/Homepage.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -184,6 +184,8 @@
 SIDE_BAR
 
     if ($show_sc && (!$u || !$u->in_class("paid") || $u->in_class("force_ads"))) {
+        my $sponsoredcomms_faq_url = LJ::Faq->page_url( 'faqid' => 273 );
+
         $content .= <<"SIDE_BAR";
             <div style="clear: both;"></div>
             <div style='padding-top: 4px;'>
@@ -192,7 +194,7 @@
                     <table width="180px" bgcolor="<?emcolor?>" border="0" cellpadding="1" cellspacing="0">} :
                     qq{<table width="180px" bgcolor="<?emcolor?>" border="0" cellpadding="1" cellspacing="0">};
         $content .= <<"SIDE_BAR";
-            <tr bgcolor="<?emcolor?>"><td style="white-space: nowrap" bgcolor="<?emcolor?>"><table width="50" border="0" cellspacing="0" cellpadding="0"><tr><td><b><a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=273">
+            <tr bgcolor="<?emcolor?>"><td style="white-space: nowrap" bgcolor="<?emcolor?>"><table width="50" border="0" cellspacing="0" cellpadding="0"><tr><td><b><a href="$sponsoredcomms_faq_url">
 SIDE_BAR
 
         my $sponcomm_ml = '';

Modified: trunk/cgi-bin/LJ/Hooks/Userinfo.pm
===================================================================
--- trunk/cgi-bin/LJ/Hooks/Userinfo.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Hooks/Userinfo.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -23,52 +23,6 @@
     ) ) if $u;		
 });
 
-LJ::register_hook("userinfo_rows", sub {
-    my $args = shift;
-    my $u = $args->{'u'};
-    my $dbr = $args->{'dbr'};
-    my $remote = $args->{'remote'};
-    my @ret;
-    return if $u->is_identity || $u->is_syndicated;
-
-    $ret[0] = "<a href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=38' style='white-space: nowrap'>$BML::ML{'ljcom.userinfo.accounttype'}</a>";
-
-    my $paid = $u->in_class('paid');
-    my $perm = $u->in_class('perm');
-    my $sponsored = $u->in_class('sponsored');
-    
-    if ($remote && $paid && ! $perm &&
-        ($remote->{'userid'} == $u->{'userid'} ||
-         $u->{'journaltype'} ne 'P' &&
-         LJ::check_rel($u->{'userid'}, $remote->{'userid'}, 'A')))
-    {
-        my $paiduntil = $dbr->selectrow_array("SELECT paiduntil FROM paiduser ".
-                                              "WHERE userid=$u->{'userid'}");
-        $ret[1] = LJ::LJcom::acct_name($u->{'caps'}, substr($paiduntil, 0, 10));
-    } else {
-        $ret[1] = LJ::LJcom::acct_name($u->{'caps'});
-    }
-    if (!LJ::get_cap($u, "paid") && defined $remote && $u->{user} eq $remote->{user}) {
-        $ret[1] .= " (<a href='$LJ::SITEROOT/manage/payments/'>upgrade</a>)";
-    }
-    return @ret;
-});
-
-LJ::register_hook("userinfo_rows", sub {
-    my $args = shift;
-    my $u = $args->{'u'};
-    my $dbr = $args->{'dbr'};
-    my $remote = $args->{'remote'};
-    my @ret = ();
-    return unless $u->in_class('sponsored') && $u->sponsored_u;
-
-    my $sponsor_community = $u->sponsored_u->sponsor->community;
-    $ret[0] = "$BML::ML{'ljcom.userinfo.sponsored_by'}";
-    $ret[1] = LJ::ljuser($sponsor_community) . " " . $sponsor_community->{'name'};
-    return @ret;
-});
-
-
 LJ::register_hook("userinfo_contact_extra", sub {
     my $u = shift;
     my $remote = shift;

Modified: trunk/cgi-bin/LJ/Nav.pm
===================================================================
--- trunk/cgi-bin/LJ/Nav.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Nav.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -385,7 +385,7 @@
             'accesskey' => 'A',
             'links' => [
                 {
-                    'url' => "$siteroot/support/faqbrowse.bml?faqcat=about",
+                    'url' => "$siteroot/support/faq/cat/about.html",
                     'text' => ml('xcolibur.nav.about.general'),
                 },
                 {

Modified: trunk/cgi-bin/LJ/Pay.pm
===================================================================
--- trunk/cgi-bin/LJ/Pay.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Pay.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -427,7 +427,8 @@
         $upicusage = LJ::userpic_count($u);
     }
     my $trim = sub { return substr($_[0], 0, 10); };
-    $ret .= BML::ml('pay.widget.userpics', {'numused' => $upicusage, 'max' => $upicmax, 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=1'"});
+    my $upics_faq_url = LJ::Faq->page_url( 'faqid' => 1 );
+    $ret .= BML::ml('pay.widget.userpics', {'numused' => $upicusage, 'max' => $upicmax, 'aopts' => "href='$upics_faq_url'"});
     my @upics_str = ();
     push @upics_str => BML::ml('pay.widget.userpics.exp.small', { num => $cap_opts{small_packs}, date => $trim->($cap_opts{small_exp})}) if $cap_opts{small_packs};
     push @upics_str => BML::ml('pay.widget.userpics.exp.large', { num => $cap_opts{large_packs}, date => $trim->($cap_opts{large_exp})}) if $cap_opts{large_packs};
@@ -460,7 +461,8 @@
         if $u->can_use_esn && !$u->is_community;
     
     #voice
-    $ret .= '<td>' . BML::ml('pay.widget.voiceposts', {'numused' => $phoneusage, 'max' => $phonemax, 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=183&amp;view=full'"}) . '</td>'
+    my $voiceposts_faq_url = LJ::Faq->page_url( 'faqid' => 183 );
+    $ret .= '<td>' . BML::ml('pay.widget.voiceposts', {'numused' => $phoneusage, 'max' => $phonemax, 'aopts' => "href='$voiceposts_faq_url'"}) . '</td>'
         unless $is_comm || $is_identity;
     
     $ret .= '</tr>';

Modified: trunk/cgi-bin/LJ/Setting/DefaultCopyright.pm
===================================================================
--- trunk/cgi-bin/LJ/Setting/DefaultCopyright.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Setting/DefaultCopyright.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -7,8 +7,9 @@
     my $key = $class->pkgkey;
     my $ret;
     
+    my $faqlink = LJ::Faq->page_url( 'faqid' => 292 );
     $ret .= "<label for='${key}default_copyright'>"
-          . $class->ml('settings.defaultcopyright.question', { aopts => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=292'" })
+          . $class->ml('settings.defaultcopyright.question', { aopts => "href='$faqlink'" })
           . '</label><br/>';
     my @options = (
         { text => LJ::Lang::ml('settings.defaultcopyright.opt.P'), value => 'P' },

Modified: trunk/cgi-bin/LJ/Widget/ErrorPage.pm
===================================================================
--- trunk/cgi-bin/LJ/Widget/ErrorPage.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Widget/ErrorPage.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -392,11 +392,12 @@
     },
 
     'expunged_userpic' => sub {
+        my $faqlink = LJ::Faq->page_url( 'faqid' => 105 );
         return {
             'title'       => LJ::Lang::ml('.errorpage.expunged_userpic.title'),
             'description' => LJ::Lang::ml(
                                 '.errorpage.expunged_userpic.description', 
-                                {aopts => 'href="http://www.livejournal.com/support/faqbrowse.bml?faqid=105"'}
+                                {aopts => qq{href="$faqlink"} }
                              ),
             'links'       => [qw( home faq sitemap )],
         };

Modified: trunk/cgi-bin/LJ/Widget/FeatureMatrix.pm
===================================================================
--- trunk/cgi-bin/LJ/Widget/FeatureMatrix.pm	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/LJ/Widget/FeatureMatrix.pm	2012-09-28 12:58:50 UTC (rev 12706)
@@ -45,7 +45,7 @@
         },
         'userpics' => {
             'name'  => ['widget.featurematrix.feature.userpics'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=46',
+            'faqid' => 46,
             'level' => 'basic',
             'basic' => '6',
             'plus'  => '15',
@@ -56,7 +56,7 @@
         },
         'communities' => {
             'name'  => ['widget.featurematrix.feature.communities'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=77',
+            'faqid' => 77,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -67,7 +67,7 @@
         },
         'comments' => {
             'name'  => ['widget.featurematrix.feature.access_full'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=23',
+            'faqid' => 23,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -78,7 +78,7 @@
         },
         'notifications' => {
             'name'  => ['widget.featurematrix.feature.subscribe'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=272',
+            'faqid' => 272,
             'level' => 'basic',
             'basic' => '25',
             'plus'  => '200',
@@ -111,7 +111,7 @@
         },
         'sms' => {
             'name'  => ['widget.featurematrix.feature.freetextmessages'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=274',
+            'faqid' => 274,
             'level' => 'plus',
             'basic' => '',
             'plus'  => ['widget.featurematrix.feature.sms.plus', {'amount'=>'3'}],
@@ -133,7 +133,7 @@
         },
         'textmessages' => {
             'name'  => ['widget.featurematrix.feature.textmessages'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=30',
+            'faqid' => 30,
             'level' => 'plus',
             'basic' => '',
             'plus'  => $yes,
@@ -144,7 +144,7 @@
         },
         'advancedsearch' => {
             'name'  => ['widget.featurematrix.feature.advsearch'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=123',
+            'faqid' => 123,
             'level' => 'plus',
             'basic' => '',
             'plus'  => $yes,
@@ -155,7 +155,7 @@
         },
         'emailaddress' => {
             'name'  => ['widget.featurematrix.feature.mailalias'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=113',
+            'faqid' => 113,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -166,7 +166,7 @@
         },
         'expresslane' => {
             'name'  => ['widget.featurematrix.feature.expresslane'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=74',
+            'faqid' => 74,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -177,7 +177,7 @@
         },
         'loyaltyuserpics' => {
             'name'  => ['widget.featurematrix.feature.loyaltyuserpics'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=261',
+            'faqid' => 261,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -210,7 +210,7 @@
         },
         'advertising' => {
             'name'  => ['widget.featurematrix.feature.noads'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=262',
+            'faqid' => 262,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -221,7 +221,7 @@
         },
         'friendspage' => {
             'name'  => ['widget.featurematrix.feature.friendspage'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=219',
+            'faqid' => 219,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -232,7 +232,7 @@
         },
         'privacy' => {
             'name'  => ['widget.featurematrix.feature.privacy'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=24',
+            'faqid' => 24,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -243,7 +243,7 @@
         },
         'design' => {
             'name'  => ['widget.featurematrix.feature.layouts'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=128',
+            'faqid' => 128,
             'level' => 'basic',
             'basic' => '100',
             'plus'  => '300',
@@ -254,7 +254,7 @@
         },
         'emailpost' => {
             'name'  => ['widget.featurematrix.feature.richmedia'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=187',
+            'faqid' => 187,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -265,7 +265,7 @@
         },
         'tagentries' => {
             'name'  => ['widget.featurematrix.feature.tagging'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=226',
+            'faqid' => 226,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -276,7 +276,7 @@
         },
         'managecomments' => {
             'name'  => ['widget.featurematrix.feature.manage_comments'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=23',
+            'faqid' => 23,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -309,7 +309,7 @@
         },
         'voicepost' => {
             'name'  => ['widget.featurematrix.feature.voicepost'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=183',
+            'faqid' => 183,
             'level' => 'plus',
             'basic' => '',
             'plus'  => ['widget.featurematrix.feature.voicepost.plus', {'amount'=>5}],
@@ -320,7 +320,7 @@
         },
         'polls' => {
             'name'  => ['widget.featurematrix.feature.polls'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=69',
+            'faqid' => 69,
             'level' => 'plus',
             'basic' => '',
             'plus'  => $yes,
@@ -331,7 +331,7 @@
         },
         'url' => {
             'name'  => ['widget.featurematrix.feature.domainforward'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=129',
+            'faqid' => 129,
             'level' => 'plus',
             'basic' => '',
             'plus'  => $yes,
@@ -342,7 +342,7 @@
         },
         'custommoods' => {
             'name'  => ['widget.featurematrix.feature.moodthemes'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=64',
+            'faqid' => 64,
             'level' => 'plus',
             'basic' => '',
             'plus'  => $yes,
@@ -364,7 +364,7 @@
         },
         'customdesign' => {
             'name'  => ['widget.featurematrix.feature.customlayout'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=170',
+            'faqid' => 170,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -375,7 +375,7 @@
         },
         'feeds' => {
             'name'  => ['widget.featurematrix.feature.watchsyn'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=137',
+            'faqid' => 137,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -386,7 +386,7 @@
         },
         'export' => {
             'name'  => ['widget.featurematrix.feature.export'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=8',
+            'faqid' => 8,
             'level' => 'basic',
             'basic' => $yes,
             'plus'  => $yes,
@@ -408,7 +408,7 @@
         },
         'syndication' => {
             'name'  => ['widget.featurematrix.feature.createsyn'],
-            'link'  => $LJ::SITEROOT . '/support/faqbrowse.bml?faqid=137',
+            'faqid' => 127,
             'level' => 'paid',
             'basic' => '',
             'plus'  => '',
@@ -448,6 +448,9 @@
 
     my $feature = $features{$feature_name};
 
+    $feature->{'link'} ||=
+        LJ::Faq->page_url( 'faqid' => $feature->{'faqid'} );
+
     my $level = $feature->{level};
 
 

Modified: trunk/cgi-bin/redirect-local.dat
===================================================================
--- trunk/cgi-bin/redirect-local.dat	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/cgi-bin/redirect-local.dat	2012-09-28 12:58:50 UTC (rev 12706)
@@ -12,7 +12,7 @@
 /site/free.bml       /site/about.bml
 /phonepost      /voicepost/
 /phonepost/     /voicepost/
-/phonepost/ogg.bml /support/faqbrowse.bml?faqid=184
+/phonepost/ogg.bml /support/faq/184.html
 /phonepost/encodings.bml  /voicepost/encodings.bml
 /phonepost/numbers.bml    /voicepost/numbers.bml
 /paidaccounts/buy.bml   /shop/
@@ -25,8 +25,8 @@
 /banners.bml    /site/banners.bml
 /admin/abuse/send_mail.bml   /admin/sendmail/send.bml
 /admin/abuse/query.bml   /admin/sendmail/query.bml
-/voicepost/about.bml /support/faqbrowse.bml?faqid=183
-/voicepost/ogg.bml   /support/faqbrowse.bml?faqid=184
+/voicepost/about.bml /support/faq/183.html
+/voicepost/ogg.bml   /support/faq/184.html
 /feedback/betanav.bml /feedback/
 /manage/betanav.bml     /manage/horizon.bml
 /site/betanav.bml       /site/horizon.bml

Modified: trunk/htdocs/check_secret.bml
===================================================================
--- trunk/htdocs/check_secret.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/check_secret.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -101,7 +101,7 @@
                                     { 'remoteip' => BML::get_remote_host() . " (" . BML::get_remote_ip() . ")",
                                       'try' => $u->{'secret_question_fails'},
                                       'datetime' => $datetime,
-                                      'link_faq' => "$LJ::SITEROOT/support/faqbrowse.bml?faqid=17",
+                                      'link_faq' => LJ::Faq->page_url( 'faqid' => 17 ),
                                       'link_support' => "$LJ::SITEROOT/support/",
                                       'sitename' => $LJ::SITENAME,
                                       'siteroot' => $LJ::SITEROOT

Modified: trunk/htdocs/doc/guide/moodicons.bml
===================================================================
--- trunk/htdocs/doc/guide/moodicons.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/doc/guide/moodicons.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -91,7 +91,8 @@
 p?>
 <?p 
 <?_code
-	my $ret = BML::ml('.abstract.4.p.2', { 'aopts' => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=6'" });
+    my $faqlink = LJ::Faq->page_url( 'faqid' => 6 );
+	my $ret = BML::ml('.abstract.4.p.2', { 'aopts' => "href='$faqlink'" });
 	return $ret;
 _code?> 
 p?>

Modified: trunk/htdocs/doc/pay/diskupgrades.bml
===================================================================
--- trunk/htdocs/doc/pay/diskupgrades.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/doc/pay/diskupgrades.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -31,7 +31,7 @@
 p?>
 <?p
 When paid accounts and/or upgrades expire, certain features are disabled over time.
-<a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=217">More 
+<a href="http://www.livejournal.com/support/faq/217.html">More 
 details</a> can be found in our 
 <a href="http://www.livejournal.com/support/">Frequently Asked Questions</a>.
 p?>

Modified: trunk/htdocs/download/index.bml
===================================================================
--- trunk/htdocs/download/index.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/download/index.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -150,7 +150,7 @@
      name => 'LJ Mobile',
      author => 'Six Apart',
      text => $ML{'.handheld.tapjam.desc'},
-     homepage => 'http://www.livejournal.com/support/faqbrowse.bml?faqid=280&amp;view=full',
+     homepage => 'http://www.livejournal.com/support/faq/280.html',
  };
 
  my $c_handheld_atom_lifeblog =
@@ -339,7 +339,7 @@
 
      <?p 
 EOT
-     $ret .= BML::ml('.abstract.1.p.1', { 'aopts' => "href=\"$LJ::SITEROOT/support/faqbrowse.bml?faqid=158&amp;view=full\"", "site"=> $LJ::SITENAMESHORT});
+     $ret .= BML::ml('.abstract.1.p.1', { 'aopts' => "href=\"$LJ::SITEROOT/support/faq/158.html\"", "site"=> $LJ::SITENAMESHORT});
      $ret .= <<"EOT";
 
 	 p?>
@@ -369,7 +369,7 @@
       $ret .= BML::ml('.abstract.2.2.p.1', { 'aopts1' => "href='$LJ::SITEROOT/update.bml'", 'aopts2' => "href='$LJ::SITEROOT/mobile/'", 'aopts3' => "href='$LJ::SITEROOT/manage/mobile.bml'" }) . " p?>"; 
 
       $ret .= "<?p <strong><?_ml .abstract.2.3.header _ml?></strong><br />";
-      $ret .= BML::ml('.abstract.2.3.p.1', { 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=218&view=full'" }) . " p?>"; 
+      $ret .= BML::ml('.abstract.2.3.p.1', { 'aopts' => "href='$LJ::SITEROOT/support/faq/218.html'" }) . " p?>"; 
       $ret .= "<?p <strong><?_ml .abstract.2.4.header _ml?></strong><br />";
 
 	  $ret .= BML::ml('.abstract.2.4.p.1', { 'aopts' => "href='http://www.livejournal.com/developer/'" }) . " p?>";

Modified: trunk/htdocs/error-page.html
===================================================================
--- trunk/htdocs/error-page.html	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/error-page.html	2012-09-28 12:58:50 UTC (rev 12706)
@@ -23,7 +23,7 @@
 			<li>Check <a href="http://status.livejournal.org/">LiveJournal's current status</a>.</li>
 			<li>View current <a href="http://www.livejournal.com/support/">known issues</a> on LiveJournal.</li>
 			<li><a href="http://www.livejournal.com/">Return home</a></li>
-			<li><a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=116">FAQ</a></li>
+			<li><a href="http://www.livejournal.com/support/faq/116.html">FAQ</a></li>
 			<li><a href="http://www.livejournal.com/site/">Site Map</a></li>
 		</ul>
 	</div>

Modified: trunk/htdocs/inc/community
===================================================================
--- trunk/htdocs/inc/community	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/community	2012-09-28 12:58:50 UTC (rev 12706)
@@ -18,7 +18,7 @@
 
 <?h1 Chat! h1?>
 <?p
-LiveJournal users chat up a storm. Many of them use popular instant messengers, including <a href="http://www.aim.com/index.adp"><strong>AIM</strong></a>, <a href="http://web.icq.com/"><strong>ICQ</strong></a>, <a href="http://messenger.yahoo.com/"><strong>Yahoo!</strong></a>, <a href="http://messenger.msn.com/"><strong>MSN</strong></a>, or <a href="http://www.jabber.org/"><strong>Jabber</strong></a> instant messengers. If you do, be sure to list it in your <a href="/editinfo.bml"><strong>personal info settings</strong></a>. If you have a <a href="/paidaccounts/"><strong>Paid Account</strong></a>, you can also enable your cell phone or pager to <a href="/support/faqbrowse.bml?faqid=30"><strong>receive text messages</strong></a>. 
+LiveJournal users chat up a storm. Many of them use popular instant messengers, including <a href="http://www.aim.com/index.adp"><strong>AIM</strong></a>, <a href="http://web.icq.com/"><strong>ICQ</strong></a>, <a href="http://messenger.yahoo.com/"><strong>Yahoo!</strong></a>, <a href="http://messenger.msn.com/"><strong>MSN</strong></a>, or <a href="http://www.jabber.org/"><strong>Jabber</strong></a> instant messengers. If you do, be sure to list it in your <a href="/editinfo.bml"><strong>personal info settings</strong></a>. If you have a <a href="/paidaccounts/"><strong>Paid Account</strong></a>, you can also enable your cell phone or pager to <a href="/support/faq/30.html"><strong>receive text messages</strong></a>. 
 p?>
 
 <?h1 Volunteer! h1?>
@@ -35,7 +35,7 @@
 
 <?h1 How do I create my own Community? h1?>
 <?p
-There is a <a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=78"><strong>FAQ</strong></a> that will explain how to create your very own community.  There are also two FAQ Categories (<a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=community"><strong>General Community FAQs</strong></a> and <a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=comm-manage"><strong>Community Management FAQs</strong></a>) covering just about everything you'll ever need to know about communities.  If you still need more information, feel free to <a href="http://www.livejournal.com/support/submit.bml"><strong>submit a support request</strong></a>.
+There is a <a href="http://www.livejournal.com/support/faq/78.html"><strong>FAQ</strong></a> that will explain how to create your very own community.  There are also two FAQ Categories (<a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=community"><strong>General Community FAQs</strong></a> and <a href="http://www.livejournal.com/support/faqbrowse.bml?faqcat=comm-manage"><strong>Community Management FAQs</strong></a>) covering just about everything you'll ever need to know about communities.  If you still need more information, feel free to <a href="http://www.livejournal.com/support/submit.bml"><strong>submit a support request</strong></a>.
 p?>
 
 <?h1 How do I find other Communities? h1?>

Modified: trunk/htdocs/inc/legal-tos
===================================================================
--- trunk/htdocs/inc/legal-tos	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/legal-tos	2012-09-28 12:58:50 UTC (rev 12706)
@@ -178,7 +178,7 @@
 
 		<li id="t21">
 			<h3>VIOLATIONS </h3>
-			<p>Instructions on how to report violations against the TOS can be found in the FAQ "<a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=105">How do I contact the Abuse team?</a>" To expedite the processing of your report, please follow the instructions therein.</p>
+			<p>Instructions on how to report violations against the TOS can be found in the FAQ "<a href="http://www.livejournal.com/support/faq/105.html">How do I contact the Abuse team?</a>" To expedite the processing of your report, please follow the instructions therein.</p>
 		</li>
 
 		<li id="t22">

Modified: trunk/htdocs/inc/legal-tos-russian-translation
===================================================================
--- trunk/htdocs/inc/legal-tos-russian-translation	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/legal-tos-russian-translation	2012-09-28 12:58:50 UTC (rev 12706)
@@ -184,7 +184,7 @@
 
 		<li id="t21">
 			<h3>НАРУШЕНИЯ</h3>
-			<p>Инструкции о&nbsp;том, как вы&nbsp;можете сообщить о&nbsp;замеченных нарушениях Соглашения, находятся в&nbsp;разделе Справки &laquo;<a href="http://www.livejournal.com/support/faqbrowse.bml?faqid=105">Как я&nbsp;могу связаться с&nbsp;Конфликтной комиссией?</a>&raquo;. Чтобы ваше заявление было рассмотрено в&nbsp;кратчайший срок, внимательно прочитайте указанный раздел.</p>
+			<p>Инструкции о&nbsp;том, как вы&nbsp;можете сообщить о&nbsp;замеченных нарушениях Соглашения, находятся в&nbsp;разделе Справки &laquo;<a href="http://www.livejournal.com/support/faq/105.html">Как я&nbsp;могу связаться с&nbsp;Конфликтной комиссией?</a>&raquo;. Чтобы ваше заявление было рассмотрено в&nbsp;кратчайший срок, внимательно прочитайте указанный раздел.</p>
 		</li>
 
 		<li id="t22">

Modified: trunk/htdocs/inc/spam-warning
===================================================================
--- trunk/htdocs/inc/spam-warning	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/spam-warning	2012-09-28 12:58:50 UTC (rev 12706)
@@ -12,7 +12,7 @@
 
 If you have any questions about LiveJournal's policy
 regarding commercial activity and promotion, please see
-http://www.livejournal.com/support/faqbrowse.bml?faqid=197. This
+http://www.livejournal.com/support/faq/197.html. This
 FAQ contains instructions on how to file an Abuse query if you need
 clarification on any elements of the policy.
 

Modified: trunk/htdocs/inc/support-guide
===================================================================
--- trunk/htdocs/inc/support-guide	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/support-guide	2012-09-28 12:58:50 UTC (rev 12706)
@@ -350,7 +350,7 @@
 <li><strong>Do not point requesters to other places when they have
 support problems.</strong> If they have a suggestion, point them to the
 <a
-href="http://www.livejournal.com/support/faqbrowse.bml?faqid=164">Suggestions
+href="http://www.livejournal.com/support/faq/164.html">Suggestions
 FAQ</a>. If it is a suggestion that has been shot down many times, you
 can simply tell them that it has been suggested before and the reasons
 why it will not be implemented. If it is currently in <a

Modified: trunk/htdocs/inc/validationreminder
===================================================================
--- trunk/htdocs/inc/validationreminder	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/inc/validationreminder	2012-09-28 12:58:50 UTC (rev 12706)
@@ -1,9 +1,9 @@
 Your e-mail address has not been validated. You will not have full functionality of your LiveJournal account until you have validated your email address. You will also not be able to reclaim your account if your account security is ever compromised, or obtain your password if you forget it.
 
-To validate your e-mail address, you will need to follow a link that is sent to you in an e-mail from LiveJournal. If you need that mail re-sent to you, please see http://www.livejournal.com/support/faqbrowse.bml?faqid=11.
+To validate your e-mail address, you will need to follow a link that is sent to you in an e-mail from LiveJournal. If you need that mail re-sent to you, please see http://www.livejournal.com/support/faq/11.html.
 
 You may first need to adjust or temporarily disable any bulk mail filters on your email account in order to receive the email.
 
-Please see this FAQ if there are problems when you try to validate: http://www.livejournal.com/support/faqbrowse.bml?faqid=36.
+Please see this FAQ if there are problems when you try to validate: http://www.livejournal.com/support/faq/36.html.
 
 If you have any questions or problems, or don't understand these instructions, please open an additional support request so that a support volunteer can help you.

Modified: trunk/htdocs/invite/gen.bml
===================================================================
--- trunk/htdocs/invite/gen.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/invite/gen.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -182,7 +182,8 @@
     my $ct = scalar @added;
     unless ($ct)
     {
-        $body .= "<?h1 Sorry h1?><?p You are not eligible to receive any more invitation codes at this time. p?><?p For more information on how invitation codes are given out, <a href=\"http://www.livejournal.com/support/faqbrowse.bml?faqid=103\">read this</a>. p?>";
+        my $faqlink = LJ::Faq->page_url( 'faqid' => 103 );
+        $body .= "<?h1 Sorry h1?><?p You are not eligible to receive any more invitation codes at this time. p?><?p For more information on how invitation codes are given out, <a href=\"$faqlink\">read this</a>. p?>";
     }
 
     #### show which new ones they got

Modified: trunk/htdocs/invite/index.bml
===================================================================
--- trunk/htdocs/invite/index.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/invite/index.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -33,7 +33,7 @@
 
     $body .= "<?h1 $ML{'.invite_header'} h1?><?p $ML{'.why_codes'} p?>";
     $body .= "<?h1 $ML{'.how_header'} h1?>";
-    $body .= BML::ml('.how_detail', { 'factors_url' => "$LJ::SITEROOT/support/faqbrowse.bml?faqid=103" });
+    $body .= BML::ml('.how_detail', { 'factors_url' => LJ::Faq->page_url( 'faqid' => 103 ) });
 
     $body .= "<p><center>";
     $body .= "<table border=\"2\" cellpadding=\"5\">";

Modified: trunk/htdocs/manage/account/cancel.bml
===================================================================
--- trunk/htdocs/manage/account/cancel.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/manage/account/cancel.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -66,7 +66,8 @@
 
     $ret .= "<li>$ML{'.keepinmind.confirm'}</li>";
     $ret .= "<li>$ML{'.keepinmind.content'}</li>";
-    $ret .= "<li>" . BML::ml('.keepinmind.expiration', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=114'"}) . "</li>";
+    my $expiration_faq_link = LJ::Faq->page_url( 'faqid' => 114 );
+    $ret .= "<li>" . BML::ml('.keepinmind.expiration', {'aopts' => "href='$expiration_faq_link'"}) . "</li>";
     $ret .= '</ul><br />';
 
     $ret .= LJ::html_check({ 'name' => 'agree', 'id' => 'agree' });

Modified: trunk/htdocs/manage/account/modify.bml
===================================================================
--- trunk/htdocs/manage/account/modify.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/manage/account/modify.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -1034,7 +1034,8 @@
         $body .= "</td></tr><tr><td>";
         $body .= $ML{'.about.proratedpay.ifpaidtimeremains'} . "<br /><br />";
         $body .= BML::ml('.about.proratedpay.maynotbecharged', {'price' => "\$$LJ::PAYMENT_FLOOR_AMOUNT USD"}) . "<br /><br />";
-        $body .= "(<a href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=237&amp;view=full'>$ML{'.about.proratedpay.readmore'}</a>)";
+        my $prorate_faq_link = LJ::Faq->page_url( 'faqid' => 237 );
+        $body .= "(<a href='$prorate_faq_link'>$ML{'.about.proratedpay.readmore'}</a>)";
         $body .= "</td></tr></table>";
     }
 

Modified: trunk/htdocs/manage/sms/textcommands.bml
===================================================================
--- trunk/htdocs/manage/sms/textcommands.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/manage/sms/textcommands.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -1,153 +1,4 @@
 <?page
-body<=
-<?_code
-{
-    use strict;
-    use vars qw($title);
-    $title = "$LJ::SMS_TITLE Command List";
-    LJ::need_res(qw(
-                    stc/sms-local.css
-                    ));
-my $body = 'Service is currently unavailable';
-return $body;
-
-$body .= qq {
-    <p class='SMS-Desc'>Below is a list of commands you can use after setting up your <a href='<?siteroot?>/manage/sms/'>$LJ::SMS_TITLE Settings</a>. <a href='<?siteroot?>/support/faqbrowse.bml?faqid=274'>Get more help on $LJ::SMS_TITLE.</a></p>
-    <div id='print'><input type="button" onClick="window.print()" value="Print This Page" /></div>
-    <div style='color: #036; font-size: 1.4em; visibility: visible !important;'>Sends commands to <b style='visibility: inherit;'>$LJ::SMS_TITLE (89855)</b></div>
-    <table class='SMS' border='0' cellpadding='0' cellspacing='0'>
-        <thead>
-            <tr>
-                <td>Description</td>
-                <td>Command</td>
-            </tr>
-        </thead>
-	    <tr class='alt'>
-	        <td class='desc'>Return a list of common commands</td>
-		    <td class='command'>MENU</td>
-	    </tr>
-	    <tr>
-	        <td class='desc'>Post an entry<div class='modifiers'>Privacy modifiers*: private, friends, <em>friendgroupname</em>, public</div></td>
-		    <td class='command'>POST (<em>subject</em>) <em>body</em></td>
-	    </tr>
-	    <tr class='alt'>
-	        <td class='desc'>Post an entry to a specified community<div class='modifiers'>Privacy modifiers*: friends, public</div></td>
-		    <td class='command'>POSTCOMM.<em>commname</em> (<em>subject</em>) <em>body</em></td>
-	    </tr>
-	    <tr>
-	        <td class='desc'>Add an interest to your profile</td>
-		    <td class='command'>I LIKE <em>interest</em></td>
-	    </tr>
-	    <tr class='alt'>
-	        <td class='desc'>Add a user to your friends list<div class='modifiers'>Friend group modifier*: <em>friendgroupname</em></div></td>
-		    <td class='command'>ADD <em>username</em></td>
-	    </tr>
-	    <tr>
-	        <td class='desc'>Return a list of recent entries from your friends page<div class='modifiers'>Friend filter modifier*: <em>friendgroup</em></div></td>
-		    <td class='command'>FRIENDS</td>
-	    </tr>
-	    <tr class='alt'>
-	        <td class='desc'>Return the latest entry from the specified user<div class='modifiers'>Page modifier*: #</td>
-		    <td class='command'>READ <em>username</em></td>
-	    </tr>
-	    <tr class='alt'>
-	        <td class='desc'>Get information about $LJ::SMS_TITLE</td>
-		    <td class='command'>HELP</td>
-	    </tr>
-	    <tr>
-	        <td class='desc'>Opt out of $LJ::SMS_TITLE</td>
-		    <td class='command'>STOP</td>
-	    </tr>
-	    <tr class='alt'>
-	        <td colspan='2'><small>*Modifier usage: <em>Command</em><b>.</b><em>modifier</em> Ex: post.private (private subject) this is a private post.</small></td>
-	    </tr>
-    </table>
-};
-
-$body .= LJ::run_hook('sms_footer');
-
-return $body;
-}
-_code?>
-<=body
-title=><?_code return $title; _code?>
-head<=
-<style type="text/css" media="all">
-	#print {
-		float: right;
-		}
-
-	.SMS {
-		width: 100%;
-		margin: .5em 0 0 0;
-		}
-		
-		.SMS thead td {
-			font-size: .85em;
-			background: #eee;
-			border-bottom: 1px solid #ddd;
-			color: #000 !important;
-			font-weight: normal !important;
-			}
-			
-			.SMS td {
-				vertical-align: top;
-				padding: .4em .3em .4em .3em;
-				border-bottom: 1px solid #ddd;
-				}
-				
-				.SMS tr.alt td {
-				    background: #fff !important;
-				    }
-			
-		.SMS .command {
-			font-weight: bold;
-			width: 300px;
-			color: #036;
-			}
-			
-			.SMS .command em {
-				font-weight: normal;
-				color: #000;
-				}
-				
-		.SMS .modifiers {
-		        margin: .5em 0 0 0;
-		        font-size: smaller;
-		        font-weight: normal;
-			    }
-				
-		.SMS .desc {
-			width: auto;
-			font-weight: bold;
-			}
-</style>
-
-<style type="text/css" media="print">
-    #Content {
-        position: absolute;
-        top: 0;
-        left: 0;
-        }
-
-	* {
-		visibility: hidden;
-		}
-		
-	.SMS-Desc {
-		display: none;
-		}
-		
-	h1, .SMS, .SMS td, .SMS em, .SMS a, .SMS b, .SMS .example, small, .modifiers {
-		visibility: visible !important;
-		}
-		
-		
-	#Print {
-		visibility: hidden !important;
-		display: none;
-        }
-</style>
-<=head
-<=body
+title=><?_code return "$LJ::SMS_TITLE Command List" _code?>
+body=>Service is currently unavailable
 page?>

Modified: trunk/htdocs/manage/voicepost.bml
===================================================================
--- trunk/htdocs/manage/voicepost.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/manage/voicepost.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -84,13 +84,14 @@
                             'pp_vpgroup'    => $POST{'vfriends'},
                             'pp_no_spinvox' => $POST{'no_spinvox'}, });
 
+        my $faqlink = LJ::Faq->page_url( 'faqid' => 183 );
         $saved = qq{
             <?warningbar
             <?h1 $ML{'.saved'} h1?>
             <?p
         } .
         BML::ml('.success.text2', {'aopts' => "href='$LJ::SITEROOT/voicepost/'"}) . " p?><?p " .
-        BML::ml('.success.moreinfo2', {'aopts1' => "href='$LJ::SITEROOT/voicepost/'", 'aopts2' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=183'"}) .
+        BML::ml('.success.moreinfo2', {'aopts1' => "href='$LJ::SITEROOT/voicepost/'", 'aopts2' => "href='$faqlink'"}) .
         " p?> warningbar?>";
         last;
     }

Modified: trunk/htdocs/misc/nanowrimo.bml
===================================================================
--- trunk/htdocs/misc/nanowrimo.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/misc/nanowrimo.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -32,7 +32,7 @@
 
 <ul>
     <li><b>Use your journal to participate in NaNoWriMo</b><br />
-    Post your writing along with your word count total for each day.  You can make your posts public, private, or set up a special <a href="$LJ::SITEROOT/support/faqbrowse.bml?faqid=102&view=full">NaNoWriMo friends group</a> and add your other friends who are participating.  If you use your existing journal you can <a href="$LJ::SITEROOT/support/faqbrowse.bml?faqid=226&view=full">tag your NaNoWriMo posts</a> with "nanowrimo" or you can <a href="$LJ::SITEROOT/create.bml">set up a new journal</a> to track your progress.<br />&nbsp;</li>
+    Post your writing along with your word count total for each day.  You can make your posts public, private, or set up a special <a href="$LJ::SITEROOT/support/faq/102.html">NaNoWriMo friends group</a> and add your other friends who are participating.  If you use your existing journal you can <a href="$LJ::SITEROOT/support/faq/226.html">tag your NaNoWriMo posts</a> with "nanowrimo" or you can <a href="$LJ::SITEROOT/create.bml">set up a new journal</a> to track your progress.<br />&nbsp;</li>
 
     <li><b>Start or join a NaNoWriMo community</b><br />
     There are several NaNoWriMo communities you can join to meet other writers and support each other, or you can <a href="$LJ::SITEROOT/community/create.bml">create a new community</a>.  If you want to be found in searches, be sure to add "nanowrimo" to the interest field in your journal or community.<br />&nbsp;</li>

Modified: trunk/htdocs/paidaccounts/index.bml
===================================================================
--- trunk/htdocs/paidaccounts/index.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/paidaccounts/index.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -49,29 +49,29 @@
 
     $ret .= "<dt>" . BML::ml('.features.descs.scrapbook.header', {'aopts' => "href='$LJ::FB_SITEROOT/'"}) . "</dt><dd>" . BML::ml('.features.descs.scrapbook.text', {'aopts' => "href='$LJ::FB_SITEROOT/'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.cust.header', {'aopts' => "href='$LJ::SITEROOT/customize/'"}) . "</dt><dd>" . BML::ml('.features.descs.cust.text', {'aopts1' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=170'", 'aopts2' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=172'", 'aopts3' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=68'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.cust.header', {'aopts' => "href='$LJ::SITEROOT/customize/'"}) . "</dt><dd>" . BML::ml('.features.descs.cust.text', {'aopts1' => "href='$LJ::SITEROOT/support/faq/170.html'", 'aopts2' => "href='$LJ::SITEROOT/support/faq/172.html'", 'aopts3' => "href='$LJ::SITEROOT/support/faq/68.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.noads.header', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=262'"}) . "</dt><dd>" . BML::ml('.features.descs.noads.text', {'sitename' => $LJ::SITENAMESHORT}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.noads.header', {'aopts' => "href='$LJ::SITEROOT/support/faq/262.html'"}) . "</dt><dd>" . BML::ml('.features.descs.noads.text', {'sitename' => $LJ::SITENAMESHORT}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.mobileposting.header', {'aopts' => "href='$LJ::SITEROOT/manage/emailpost.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.mobileposting.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=187'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.mobileposting.header', {'aopts' => "href='$LJ::SITEROOT/manage/emailpost.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.mobileposting.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/187.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.voiceposting.header', {'aopts' => "href='$LJ::SITEROOT/voicepost/'"}) . "</dt><dd>" . BML::ml('.features.descs.voiceposting.text', {'aopts1' => "href='$LJ::SITEROOT/voicepost/'", 'aopts2' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=183'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.voiceposting.header', {'aopts' => "href='$LJ::SITEROOT/voicepost/'"}) . "</dt><dd>" . BML::ml('.features.descs.voiceposting.text', {'aopts1' => "href='$LJ::SITEROOT/voicepost/'", 'aopts2' => "href='$LJ::SITEROOT/support/faq/183.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.directory.header', {'aopts' => "href='$LJ::SITEROOT/directorysearch.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.directory.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=123'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.directory.header', {'aopts' => "href='$LJ::SITEROOT/directorysearch.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.directory.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/123.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.polls.header', {'aopts' => "href='$LJ::SITEROOT/poll/create.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.polls.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=69'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.polls.header', {'aopts' => "href='$LJ::SITEROOT/poll/create.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.polls.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/69.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.moodthemes.header', {'aopts' => "href='$LJ::SITEROOT/manage/moodthemes.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.moodthemes.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=64'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.moodthemes.header', {'aopts' => "href='$LJ::SITEROOT/manage/moodthemes.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.moodthemes.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/64.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.expresslane.header', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=74'"}) . "</dt><dd>" . BML::ml('.features.descs.expresslane.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=74'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.expresslane.header', {'aopts' => "href='$LJ::SITEROOT/support/faq/74.html'"}) . "</dt><dd>" . BML::ml('.features.descs.expresslane.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/74.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.emailalias.header', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=113'", 'sitename' => "$LJ::SITENAME"}) . "</dt><dd>" . BML::ml('.features.descs.emailalias.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=113'", 'sitename' => $LJ::SITENAME, 'user' => $ru, 'domain' => $LJ::DOMAIN}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.emailalias.header', {'aopts' => "href='$LJ::SITEROOT/support/faq/113.html'", 'sitename' => "$LJ::SITENAME"}) . "</dt><dd>" . BML::ml('.features.descs.emailalias.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/113.html'", 'sitename' => $LJ::SITENAME, 'user' => $ru, 'domain' => $LJ::DOMAIN}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.textmessaging.header', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=30'"}) . "</dt><dd>" . BML::ml('.features.descs.textmessaging.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=30'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.textmessaging.header', {'aopts' => "href='$LJ::SITEROOT/support/faq/30.html'"}) . "</dt><dd>" . BML::ml('.features.descs.textmessaging.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/30.html'"}) . "</dd>";
     
-    $ret .= "<dt>" . BML::ml('.features.descs.domainforwarding.header', {'aopts' => "href='$LJ::SITEROOT/manage/domain.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.domainforwarding.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=129'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.domainforwarding.header', {'aopts' => "href='$LJ::SITEROOT/manage/domain.bml'"}) . "</dt><dd>" . BML::ml('.features.descs.domainforwarding.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/129.html'"}) . "</dd>";
 
-    $ret .= "<dt>" . BML::ml('.features.descs.more.header', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=131&view=full'"}) . "</dt><dd>" . BML::ml('.features.descs.more.text', {'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=131&view=full'"}) . "</dd>";
+    $ret .= "<dt>" . BML::ml('.features.descs.more.header', {'aopts' => "href='$LJ::SITEROOT/support/faq/131.html&view=full'"}) . "</dt><dd>" . BML::ml('.features.descs.more.text', {'aopts' => "href='$LJ::SITEROOT/support/faq/131.html&view=full'"}) . "</dd>";
 
     $ret .= "</dl>";
 

Modified: trunk/htdocs/set_secret.bml
===================================================================
--- trunk/htdocs/set_secret.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/set_secret.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -158,7 +158,8 @@
     }
 
     $body .= '<div style=\'overflow:hidden;zoom:1;\'><div style=\'width:57%;float:left;\'>';
-    $body .= "<p>" . BML::ml('.describe', { 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=287'", 'faqid' => 287} ) ."</p>";
+    my $faqlink = LJ::Faq->page_url( 'faqid' => 287 );
+    $body .= "<p>" . BML::ml('.describe', { 'aopts' => "href='$faqlink'", 'faqid' => 287} ) ."</p>";
     $body .= '</div><div style=\'width:40%;float:right;\'><div class=\'form-basic\'><div class=\'tl\'><div class=\'tr\'><div class=\'br\'><div class=\'bl\'>';
 
     $body .= '<form method="post">';

Modified: trunk/htdocs/site/index.bml
===================================================================
--- trunk/htdocs/site/index.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/site/index.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -136,7 +136,7 @@
       <li><a href="/legal/privacy.bml"><?_ml .otherlinks.privacy_policy _ml?></a></li>
       <li><a href="/legal/dmca.bml"><?_ml .otherlinks.copyright_policy _ml?></a></li>
       <li><a href="/legal/privacy.bml"><?_ml .otherlinks.coppa_policy _ml?></a></li>
-      <li><a href="/support/faqbrowse.bml?faqcat=abuse"><?_ml .otherlinks.faq_category.legal _ml?></a></li>
+      <li><a href="/support/faq/cat/abuse.html"><?_ml .otherlinks.faq_category.legal _ml?></a></li>
       <li><a href="/abuse/report.bml"><?_ml .otherlinks.report_violations _ml?></a></li>
     </ul>
   </dd>
@@ -178,7 +178,7 @@
   <dd>
     <ul>
       <li><a href="/download/"><?_ml .otherlinks.download_client _ml?></a></li>
-      <li><a href="/support/faqbrowse.bml?faqcat=clients"><?_ml .otherlinks.faq_downloadable_clients _ml?></a></li>
+      <li><a href="/support/faq/cat/clients.html"><?_ml .otherlinks.faq_downloadable_clients _ml?></a></li>
     </ul>
   </dd>
   <dt><?_ml .otherlinks.communities _ml?></dt>
@@ -189,8 +189,8 @@
       <li><a href="/community/manage.bml"><?_ml .otherlinks.manage_comm _ml?></a></li>
       <li><?ljuser community_promo ljuser?></li>
       <li><?ljuser community_quest ljuser?></li>
-      <li><a href="/support/faqbrowse.bml?faqcat=community"><?_ml .otherlinks.faq_category.comms _ml?></a></li>
-      <li><a href="/support/faqbrowse.bml?faqcat=comm-manage"><?_ml .otherlinks.comm_management_faq _ml?></a></li>
+      <li><a href="/support/faq/cat/community.html"><?_ml .otherlinks.faq_category.comms _ml?></a></li>
+      <li><a href="/support/faq/cat/comm-manage.html"><?_ml .otherlinks.comm_management_faq _ml?></a></li>
     </ul>
   </dd>
 </dl></div>

Modified: trunk/htdocs/sponsors/choose_sponsor.bml
===================================================================
--- trunk/htdocs/sponsors/choose_sponsor.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/sponsors/choose_sponsor.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -20,10 +20,10 @@
     my $remote = LJ::get_remote();
 
     if (!$remote) {
-        $ret .= BML::ml('.about_sponsors', { aopts1 => "href='$LJ::SITEROOT/login.bml'", aopts2 => "href='$LJ::SITEROOT/create.bml'", aopts3 => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=131'"} );
-        $ret .= BML::ml('.sponsors_available', { aopts1 => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=38'", aopts2 => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=263'" } );
+        $ret .= BML::ml('.about_sponsors', { aopts1 => "href='$LJ::SITEROOT/login.bml'", aopts2 => "href='$LJ::SITEROOT/create.bml'", aopts3 => "href='http://www.livejournal.com/support/faq/131.html'"} );
+        $ret .= BML::ml('.sponsors_available', { aopts1 => "href='http://www.livejournal.com/support/faq/38.html'", aopts2 => "href='http://www.livejournal.com/support/faq/263.html'" } );
     } elsif ($remote->in_class('paid') || $remote->in_class('perm')) {
-        $ret .= BML::ml('.sponsors_available', { aopts1 => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=38'", aopts2 => "href='http://www.livejournal.com/support/faqbrowse.bml?faqid=263'" } );
+        $ret .= BML::ml('.sponsors_available', { aopts1 => "href='http://www.livejournal.com/support/faq/38.html'", aopts2 => "href='http://www.livejournal.com/support/faq/263.html'" } );
     } else {
 
         unless ($remote->knows_about_sponsors) {

Modified: trunk/htdocs/tour/customize.bml
===================================================================
--- trunk/htdocs/tour/customize.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/tour/customize.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -25,7 +25,8 @@
     
     <p>
 <?_code
-	my $ret = BML::ml('.abstract.1.p.1', { 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=131'" } );
+    my $paid_acct_faq_link = LJ::Faq->page_url( 'faqid' => 131 );
+	my $ret = BML::ml('.abstract.1.p.1', { 'aopts' => "href='$paid_acct_faq_link'" } );
 	return $ret;
 _code?>    
     </p>

Modified: trunk/htdocs/tour/index.bml
===================================================================
--- trunk/htdocs/tour/index.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/tour/index.bml	2012-09-28 12:58:50 UTC (rev 12706)
@@ -67,7 +67,8 @@
        <li><?_ml .share_with_friends _ml?></li>
        <li>
 <?_code
-	my $ret = BML::ml('.upgrade_paid_account', { 'aopts' => "href='$LJ::SITEROOT/support/faqbrowse.bml?faqid=131'" });
+    my $paid_acct_faq_link = LJ::Faq->page_url( 'faqid' => 131 );
+	my $ret = BML::ml('.upgrade_paid_account', { 'aopts' => "href='$paid_acct_faq_link'" });
 	return $ret;
 _code?>
        </li>

Modified: trunk/htdocs/tour/multimedia.bml
===================================================================
--- trunk/htdocs/tour/multimedia.bml	2012-09-28 12:37:57 UTC (rev 12705)
+++ trunk/htdocs/tour/multimedia.bml	2012-09-2...
 (truncated)
Tags: ailyin, andy, bml, dat, html, ljcom, pm
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments