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-07 08:29 am

[dw-free] Migrate navigation strip options to /manage/settings

[commit: http://hg.dwscoalition.org/dw-free/rev/8c3ab6001259]

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

Move some navigation settings to /manage/settings.

Patch by [personal profile] afuna.

Files modified:
  • bin/upgrading/en.dat
  • cgi-bin/DW/Hooks/NavStrip.pm
  • cgi-bin/LJ/Widget/NavStripChooser.pm
  • htdocs/manage/settings/index.bml
--------------------------------------------------------------------------------
diff -r c7e5832c87f9 -r 8c3ab6001259 bin/upgrading/en.dat
--- a/bin/upgrading/en.dat	Sat Mar 07 08:04:41 2009 +0000
+++ b/bin/upgrading/en.dat	Sat Mar 07 08:29:50 2009 +0000
@@ -2717,6 +2717,16 @@ setting.minsecurity.option.select.public
 
 setting.name.question=What's your name?
 
+setting.navstrip.label=Navigation Strip
+
+setting.navstrip.option=Display for
+
+setting.navstrip.option.journal.this=yourself and logged-out users on your journal
+
+setting.navstrip.option.journal.withrelationship=journals in your circle
+
+setting.navstrip.option.journal.norelationship=journals not in your circle
+
 setting.notifyweblogs.label=Notify Weblogs.com
 
 setting.notifyweblogs.option.comm=Notify Weblogs.com subscribers when new public entries are posted to my community
@@ -3668,7 +3678,7 @@ widget.moodthemechooser.viewtheme=view a
 
 widget.navstripchooser.colors=In addition, you can customize the color of the navigation strip on your journal.
 
-widget.navstripchooser.desc=This small toolbar is at the top of journal pages and provides access to quick links, filtering options, and management settings.
+widget.navstripchooser.desc=This small toolbar is at the top of journal pages and provides access to quick links, filtering options, and management settings. You can change which journals it will display on, from <a [[aopts]]>your settings page</a>.
 
 widget.navstripchooser.option.color.control_strip_bgcolor=background color:
 
@@ -3687,28 +3697,6 @@ widget.navstripchooser.option.color.ligh
 widget.navstripchooser.option.color.light=Light gray gradient
 
 widget.navstripchooser.option.color.no_gradient=without background gradient
-
-widget.navstripchooser.option.onjournal=Always show on my journal/community
-
-widget.navstripchooser.option.onothers=Always show on any journal or community I view
-
-widget.navstripchooser.page.comment.custom=See it on all custom comment pages
-
-widget.navstripchooser.page.community.belongto=See it on all communities you belong to
-
-widget.navstripchooser.page.community.notbelongto=See it on all communities you don't belong to
-
-widget.navstripchooser.page.journal.loggedout=Show it to logged out users on your journal
-
-widget.navstripchooser.page.journal.notwatching=See it on all non-community journals you aren't watching
-
-widget.navstripchooser.page.journal.own=See it on your own journal
-
-widget.navstripchooser.page.journal.watching=See it on all non-community journals you're watching
-
-widget.navstripchooser.page.readlist.loggedout=Show it to logged out users on your readlist
-
-widget.navstripchooser.page.readlist.own=See it on your own readlist
 
 widget.navstripchooser.title=Navigation Strip
 
diff -r c7e5832c87f9 -r 8c3ab6001259 cgi-bin/DW/Hooks/NavStrip.pm
--- a/cgi-bin/DW/Hooks/NavStrip.pm	Sat Mar 07 08:04:41 2009 +0000
+++ b/cgi-bin/DW/Hooks/NavStrip.pm	Sat Mar 07 08:29:50 2009 +0000
@@ -20,22 +20,16 @@ LJ::register_hook( 'page_control_strip_o
 LJ::register_hook( 'page_control_strip_options', sub {
     # if you add to the middle of the list, existing preferences will *break*
     return qw(
-        journal.own
-        readlist.own
-        community.belongto
-        community.notbelongto
-        journal.watching
-        journal.notwatching
-        comment.custom
-        journal.loggedout
-        readlist.loggedout
+        journal.this
+        journal.withrelationship
+        journal.norelationship
     );
 });
 
 LJ::register_hook( 'show_control_strip', sub {
 
     return undef unless $LJ::USE_CONTROL_STRIP;
-    return undef if $LJ::DISABLED{'control_strip'};
+    return undef unless LJ::is_enabled( 'control_strip' );
 
     my $remote = LJ::get_remote();
     my $r = DW::Request->get;
@@ -54,37 +48,20 @@ LJ::register_hook( 'show_control_strip',
         my $display = $remote->control_strip_display;
         return undef unless $display;
 
-        # customized comment pages (both entry and reply)
-        if ( $r->note('view') eq 'entry' || $r->note('view') eq 'reply' ) {
-            return $display & $pagemask{'comment.custom'};
-        }
+        return $display & $pagemask{'journal.this'} if $remote->equals( $journal );
 
-        # on your journal, all pages except readlist respect journal setting
-        if ( $remote->equals( $journal ) ) {
-            return $r->note( 'view' ) eq 'read'
-                ? $display & $pagemask{'readlist.own'}
-                : $display & $pagemask{'journal.own'};
-        }
+        return $display & $pagemask{'journal.withrelationship'}
+            if ( $journal->is_community && $remote->member_of( $journal) )
+            || $remote->watches( $journal ) || $remote->trusts( $journal );
 
-        if ( $journal->is_community ) {
-            return $remote->member_of( $journal )
-                ? $display & $pagemask{'community.belongto'}
-                : $display & $pagemask{'community.notbelongto'};
-        }
-
-        # all other journal types (personal, openid, syn, news, staff)
-        # readlist is treated by the same rule as all other journal pages
-        return $remote->watches( $journal )
-            ? $display & $pagemask{'journal.watching'}
-            : $display & $pagemask{'journal.notwatching'};
-
-    } else {
+        return $display & $pagemask{'journal.norelationship'};
+            
+    } else {    
         my $display = $journal->control_strip_display;
         return undef unless $display;
 
-        return $r->note( 'view' ) eq 'read'
-            ?  $display & $pagemask{'readlist.loggedout'}
-            : $display & $pagemask{'journal.loggedout'};
+        # logged out users follow journal preferences
+        return $display & $pagemask{'journal.this'};
     }
 
     return undef;
diff -r c7e5832c87f9 -r 8c3ab6001259 cgi-bin/LJ/Widget/NavStripChooser.pm
--- a/cgi-bin/LJ/Widget/NavStripChooser.pm	Sat Mar 07 08:04:41 2009 +0000
+++ b/cgi-bin/LJ/Widget/NavStripChooser.pm	Sat Mar 07 08:29:50 2009 +0000
@@ -20,28 +20,7 @@ sub render_body {
 
     my $ret = "<fieldset><legend>" . $class->ml('widget.navstripchooser.title') . "</legend>";
     $ret .= "</fieldset>" if $u->prop('stylesys') == 2;
-    $ret .= "<p class='detail'>" . $class->ml('widget.navstripchooser.desc') . " " . LJ::help_icon('navstrip') . "</p>";
-
-    my @pageoptions = LJ::run_hook( 'page_control_strip_options' );
-    return undef unless @pageoptions;
-    
-    my %pagemask = map { $pageoptions[$_] => 1 << $_ } 0..$#pageoptions;
-
-    # choose where to display/see it    
-    my $display = $u->control_strip_display;
-
-    foreach my $pageoption ( @pageoptions ) {
-        my $for_html = $pageoption; $for_html =~ tr/\./_/;
-        
-        $ret .= "<p>" . $class->html_check(
-            name => 'control_strip_display',
-            id => $for_html,
-            selected => $display & $pagemask{$pageoption},
-            value => $pagemask{$pageoption},
-        );
-        
-        $ret .= " <label for='$for_html'>" . $class->ml( 'widget.navstripchooser.page.' . $pageoption) . "</label></p>";
-   }
+    $ret .= "<p class='detail'>" . $class->ml( 'widget.navstripchooser.desc', { aopts => "href='/manage/settings/?cat=display'" } ) . " " . LJ::help_icon('navstrip') . "</p>";
 
     $ret .= "<p>" . $class->ml('widget.navstripchooser.colors') . "</p>";
 
@@ -180,19 +159,15 @@ sub handle_post {
 
     my %override;
     my $post_fields_of_parent = LJ::Widget->post_fields_of_widget("CustomizeTheme");
-    my ( $given_control_strip_color, $given_control_strip_display, $props );
+    my ( $given_control_strip_color, $props );
     if ($post_fields_of_parent->{reset}) {
         $given_control_strip_color = "";
-        $props->{control_strip_display} = "";
         $override{control_strip_bgcolor} = "";
         $override{control_strip_fgcolor} = "";
         $override{control_strip_bordercolor} = "";
         $override{control_strip_linkcolor} = "";
     } else {
         $given_control_strip_color = $post->{control_strip_color};
-        $given_control_strip_display |= $_+0
-            foreach split( /\0/, $post->{control_strip_display} );
-        $props->{control_strip_display} = $given_control_strip_display ? $given_control_strip_display : 'none';    
     }
 
     my $color = $given_control_strip_color;
@@ -200,9 +175,7 @@ sub handle_post {
     # we only want to store dark or light in the user props
     $props->{control_strip_color} = $color if $color eq 'light' || $color eq 'dark';
 
-    foreach my $uprop ( qw/control_strip_color control_strip_display/ ) {
-        $u->set_prop($uprop, $props->{$uprop});
-    }
+    $u->set_prop( 'control_strip_color', $props->{control_strip_color} );
 
     if ($color ne "layout_default" && $color ne "custom") {
         $override{custom_control_strip_colors} = "off";
diff -r c7e5832c87f9 -r 8c3ab6001259 htdocs/manage/settings/index.bml
--- a/htdocs/manage/settings/index.bml	Sat Mar 07 08:04:41 2009 +0000
+++ b/htdocs/manage/settings/index.bml	Sat Mar 07 08:29:50 2009 +0000
@@ -61,6 +61,7 @@ body<=
                 LJ::Setting::EntryEditor
                 LJ::Setting::StyleAlwaysMine
                 LJ::Setting::StyleMine
+                LJ::Setting::NavStrip
                 LJ::Setting::CtxPopup
                 LJ::Setting::SiteScheme
                 LJ::Setting::AdultContent
--------------------------------------------------------------------------------