mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-03-04 08:20 am

[dw-nonfree] Redo menu items to be a separate file for site schemes to use

[commit: http://hg.dwscoalition.org/dw-nonfree/rev/7ffc6b80ccfd]

http://bugs.dwscoalition.org/show_bug.cgi?id=321

Move navigation/menu logic to dw-free.

Patch by [personal profile] sophie.

Files modified:
  • bin/upgrading/en_DW.dat
  • cgi-bin/DW/Hooks/SiteScheme.pm
  • cgi-bin/bml/scheme/tropo-red.look
  • htdocs/nav.bml
--------------------------------------------------------------------------------
diff -r f624616080c8 -r 7ffc6b80ccfd bin/upgrading/en_DW.dat
--- a/bin/upgrading/en_DW.dat	Wed Mar 04 07:57:52 2009 +0000
+++ b/bin/upgrading/en_DW.dat	Wed Mar 04 08:20:10 2009 +0000
@@ -54,56 +54,4 @@ tropo.footer.legal.privacypolicy=Privacy
 
 tropo.footer.legal.tos=Terms of Service
 
-tropo.nav.create=Create
-
-tropo.nav.create.createaccount=Create Account
-
-tropo.nav.create.createcommunity=Create Community
-
-tropo.nav.create.editjournal=Edit Entries
-
-tropo.nav.create.editprofile=Edit Profile
-
-tropo.nav.create.updatejournal=Update Journal
-
-tropo.nav.create.uploaduserpics=Upload Icons ([[num]] of [[max]])
-
-tropo.nav.explore=Explore
-
-tropo.nav.explore.directorysearch=Directory Search
-
-tropo.nav.explore.faq=FAQ
-
-tropo.nav.organize=Organize
-
-tropo.nav.organize.customizestyle=Customize Style
-
-tropo.nav.organize.manageaccount=Manage Account
-
-tropo.nav.organize.managecommunities=Manage Communities
-
-tropo.nav.organize.managefilters=Manage Filters
-
-tropo.nav.organize.managerelationships=Manage Circle
-
-tropo.nav.organize.managetags=Manage Tags
-
-tropo.nav.organize.selectstyle=Select Style
-
-tropo.nav.read=Read
-
-tropo.nav.read.inbox.nounread=Inbox
-
-tropo.nav.read.inbox.unread=Inbox ([[num]])
-
-tropo.nav.read.profile=Profile
-
-tropo.nav.read.readinglist=Reading Page
-
-tropo.nav.read.recentcomments=Recent Comments
-
-tropo.nav.read.syndicatedfeeds=Syndicated Feeds
-
-tropo.nav.read.tags=Tags
-
 tropo.footer.sitemap=Site Map
diff -r f624616080c8 -r 7ffc6b80ccfd cgi-bin/DW/Hooks/SiteScheme.pm
--- a/cgi-bin/DW/Hooks/SiteScheme.pm	Wed Mar 04 07:57:52 2009 +0000
+++ b/cgi-bin/DW/Hooks/SiteScheme.pm	Wed Mar 04 08:20:10 2009 +0000
@@ -23,159 +23,4 @@ LJ::register_hook('modify_scheme_list', 
     );
 });
 
-LJ::register_hook('nav_links', sub {
-    my %opts = @_;
-
-    my $category = $opts{category};
-
-    my $remote = LJ::get_remote();
-    my ( $userpic_count, $userpic_max, $inbox_count );
-    if ( $remote ) {
-        $userpic_count = $remote->get_userpic_count;
-        $userpic_max = $remote->userpic_quota;
-
-        my $inbox = $remote->notification_inbox;
-        $inbox_count = $inbox->unread_count;
-    }
-
-    my %nav = (
-        create => [
-            {
-                url => "$LJ::SITEROOT/create.bml",
-                text => "tropo.nav.create.createaccount",
-                loggedin => 0,
-                loggedout => 1,
-            },
-            {
-                url => "$LJ::SITEROOT/update.bml",
-                text => "tropo.nav.create.updatejournal",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/editjournal.bml",
-                text => "tropo.nav.create.editjournal",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/manage/profile/",
-                text => "tropo.nav.create.editprofile",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/editpics.bml",
-                text => "tropo.nav.create.uploaduserpics",
-                text_opts => { num => $userpic_count, max => $userpic_max },
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/community/create.bml",
-                text => "tropo.nav.create.createcommunity",
-                loggedin => 1,
-                loggedout => 0,
-            },
-        ],
-        organize => [
-            {
-                url => "$LJ::SITEROOT/manage/settings/",
-                text => "tropo.nav.organize.manageaccount",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/manage/circle/edit.bml",
-                text => "tropo.nav.organize.managerelationships",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/manage/circle/editfilters.bml",
-                text => "tropo.nav.organize.managefilters",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/manage/tags.bml",
-                text => "tropo.nav.organize.managetags",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/community/manage.bml",
-                text => "tropo.nav.organize.managecommunities",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/customize/",
-                text => "tropo.nav.organize.selectstyle",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/customize/options.bml",
-                text => "tropo.nav.organize.customizestyle",
-                loggedin => 1,
-                loggedout => 0,
-            },
-        ],
-        read => [
-            {
-                url => $remote ? $remote->journal_base . "/read" : "",
-                text => "tropo.nav.read.readinglist",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/syn/",
-                text => "tropo.nav.read.syndicatedfeeds",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => $remote ? $remote->journal_base . "/tag" : "",
-                text => "tropo.nav.read.tags",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/tools/recent_comments.bml",
-                text => "tropo.nav.read.recentcomments",
-                loggedin => 1,
-                loggedout => 0,
-            },
-            {
-                url => "$LJ::SITEROOT/inbox/",
-                text => $inbox_count ? "tropo.nav.read.inbox.unread" : "tropo.nav.read.inbox.nounread",
-                text_opts => { num => $inbox_count },
-                loggedin => 1,
-                loggedout => 0,
-            },
-        ],
-        explore => [
-            {
-                url => "$LJ::SITEROOT/directorysearch.bml",
-                text => "tropo.nav.explore.directorysearch",
-                loggedin => 1,
-                loggedout => 1,
-            },
-            {
-                url => "$LJ::SITEROOT/support/faq.bml",
-                text => "tropo.nav.explore.faq",
-                loggedin => 1,
-                loggedout => 1,
-            },
-        ],
-    );
-
-    if ( $category && $nav{$category} ) {
-        return $nav{$category};
-    }
-
-    return [];
-});
-
 1;
diff -r f624616080c8 -r 7ffc6b80ccfd cgi-bin/bml/scheme/tropo-red.look
--- a/cgi-bin/bml/scheme/tropo-red.look	Wed Mar 04 07:57:52 2009 +0000
+++ b/cgi-bin/bml/scheme/tropo-red.look	Wed Mar 04 08:20:10 2009 +0000
@@ -142,55 +142,6 @@ _code?>
 _code?>
 <=accountlinks
 
-menunav<=
-<?_code
-{
-    my $remote = LJ::get_remote();
-    my $ret;
-
-    if ( $remote ) {
-        $ret .= "<ul>";
-
-        foreach my $cat ( qw( create organize read explore ) ) {
-            my $nav_links = LJ::run_hook( "nav_links", category => $cat );
-            if ( @$nav_links ) {
-                $ret .= "<li id='${cat}_topnav' class='topnav'><a href='$LJ::SITEROOT/nav.bml?cat=$cat'>$ML{\"tropo.nav.$cat\"}</a>";
-                $ret .= "<ul id='${cat}_subnav' class='subnav_container'>";
-                foreach my $link ( @$nav_links ) {
-                    next unless $link->{loggedin};
-                    $ret .= "<li class='subnav'><a href='$link->{url}'>" . BML::ml("$link->{text}", $link->{text_opts}) . "</a></li>";
-                }
-                $ret .= "</ul>";
-                $ret .= "</li>";
-            }
-        }
-
-        $ret .= "</ul>";
-    } else {
-        $ret .= "<ul>";
-
-        foreach my $cat ( qw( create explore ) ) {
-            my $nav_links = LJ::run_hook( "nav_links", category => $cat );
-            if ( @$nav_links ) {
-                $ret .= "<li id='${cat}_topnav' class='topnav'><a href='$LJ::SITEROOT/nav.bml?cat=$cat'>$ML{\"tropo.nav.$cat\"}</a>";
-                $ret .= "<ul id='${cat}_subnav' class='subnav_container'>";
-                foreach my $link ( @$nav_links ) {
-                    next unless $link->{loggedout};
-                    $ret .= "<li class='subnav'><a href='$link->{url}'>" . BML::ml("$link->{text}", $link->{text_opts}) . "</a></li>";
-                }
-                $ret .= "</ul>";
-                $ret .= "</li>";
-            }
-        }
-
-        $ret .= "</ul>";
-    }
-
-    return $ret;
-}
-_code?>
-<=menunav
-
 footer<=
 <ul>
     <li><a href="<?siteroot?>/legal/privacy.bml"><?_ml tropo.footer.legal.privacypolicy _ml?></a> &bull; </li>
diff -r f624616080c8 -r 7ffc6b80ccfd htdocs/nav.bml
--- a/htdocs/nav.bml	Wed Mar 04 07:57:52 2009 +0000
+++ b/htdocs/nav.bml	Wed Mar 04 08:20:10 2009 +0000
@@ -1,41 +1,46 @@
-<?page
+<?_c
+#
+# nav.bml
+#
+# Page that shows the sub-level navigation links given the top-level navigation header
+#
+# Authors:
+#     Janine Costanzo <janine@netrophic.com>
+#
+# Copyright (c) 2009 by Dreamwidth Studios, LLC.
+#
+# This program is free software; you may redistribute it and/or modify it under
+# the same terms as Perl itself.  For a copy of the license, please reference
+# 'perldoc perlartistic' or 'perldoc perlgpl'.
+#
+_c?><?page
 body<=
 <?_code
 {
-    # Page that shows the sub-level navigation links given the top-level navigation header
-    #
-    # Authors:
-    #     Janine Costanzo <janine@netrophic.com>
-    #
-    # Copyright (c) 2009 by Dreamwidth Studios, LLC.
-    #
-    # This program is NOT free software or open-source; you can use it as an
-    # example of how to implement your own site-specific extensions to the
-    # Dreamwidth Studios open-source code, but you cannot use it on your site
-    # or redistribute it, with or without modifications.
-    #
-
     use strict;
     use vars qw(%GET %POST $title $headextra @errors @warnings);
+
+    use DW::Logic::MenuNav;
 
     $title = $ML{'.title'};
 
     my $cat = $GET{cat};
     return $ML{'.error.nocat'} unless $cat;
 
-    my $remote = LJ::get_remote();
+    my $nav_links = DW::Logic::MenuNav->get_menu_navigation;
     my $ret;
 
-    my $nav_links = LJ::run_hook( "nav_links", category => $cat );
-    return $ML{'.error.invalidcat'} unless @$nav_links;
-    $title = $ML{"tropo.nav.$cat"};
-
     my @links_html;
-    foreach my $link ( @$nav_links ) {
-        next unless ( $remote && $link->{loggedin} ) || ( !$remote && $link->{loggedout} );
-        push @links_html, "<a href='$link->{url}'>" . BML::ml("$link->{text}", $link->{text_opts}) . "</a>";
+    foreach my $cathash ( @{ $nav_links } ) {
+        next if $cathash->{name} ne $cat;
+        foreach my $item ( @{ $cathash->{items} } ) {
+            push @links_html, "<a href='$item->{url}'>" . BML::ml( "$item->{text}", $item->{text_opts} ) . "</a>" if $item->{display};
+        }
     }
-    $ret .= join("<br />", @links_html);
+    return $ML{'.error.invalidcat'} unless @links_html;
+    
+    $title = $ML{"menunav.$cat"};
+    $ret .= join( "<br />", @links_html );
 
     return $ret;
 }
--------------------------------------------------------------------------------