[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
sophie.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=321
Move navigation/menu logic to dw-free.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
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> • </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; } --------------------------------------------------------------------------------