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;
 }
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org