fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2011-03-28 06:41 am

[dw-free] Beta tester mode for jQuery journal pages

[commit: http://hg.dwscoalition.org/dw-free/rev/1c0749606568]

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

Add beta-testing mode for jquerified journals (features only partially
implemented for now)

Patch by [personal profile] fu.

Files modified:
  • bin/upgrading/en.dat
  • cgi-bin/DW/BetaFeatures/journaljquery.pm
  • cgi-bin/LJ/BetaFeatures.pm
  • cgi-bin/LJ/BetaFeatures/default.pm
  • cgi-bin/LJ/S2.pm
  • cgi-bin/LJ/Widget/BetaFeature.pm
--------------------------------------------------------------------------------
diff -r 3cd5dbffdd1b -r 1c0749606568 bin/upgrading/en.dat
--- a/bin/upgrading/en.dat	Tue Mar 15 21:06:44 2011 +0800
+++ b/bin/upgrading/en.dat	Mon Mar 28 14:40:04 2011 +0800
@@ -4373,6 +4373,24 @@ widget.betafeature.btn.off=Turn OFF beta
 
 widget.betafeature.btn.on=Turn ON beta testing
 
+widget.betafeature.journaljquery.on<<
+Currently beta-testing the new JS behavior on journals.
+<h3>Implemented</h3>
+[[implemented]]
+
+<h3>Todo</h3>
+[[notimplemented]]
+.
+
+widget.betafeature.journaljquery.off<<
+Switch to the new JS behavior on journals.
+<h3>Implemented</h3>
+[[implemented]]
+
+<h3>Todo</h3>
+[[notimplemented]]
+.
+
 widget.communitymanagement.nopending=No communities require action.
 
 widget.communitymanagement.pending=Pending:
diff -r 3cd5dbffdd1b -r 1c0749606568 cgi-bin/DW/BetaFeatures/journaljquery.pm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cgi-bin/DW/BetaFeatures/journaljquery.pm	Mon Mar 28 14:40:04 2011 +0800
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+#
+# DW::BetaFeatures::journaljquery - Allow users to beta test the updated jquery-ified journals
+#
+# Authors:
+#      Afuna <coder.dw@afunamatata.com>
+#
+# Copyright (c) 2011 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'.
+
+package DW::BetaFeatures::journaljquery;
+
+use strict;
+use base "LJ::BetaFeatures::default";
+
+sub args_list {
+    my @implemented = (
+        "Logging in",
+    );
+
+    my @notimplemented = (
+        "Contextual hover",
+        "Screen/freeze/delete",
+        "Quick reply",
+        "Cut expand and collapse",
+        "Media embed placeholder expansion",
+        "Control strip injection for non-supporting journals",
+        "Same-page poll submission",
+        "Thread expander",
+        "Icon browser",
+    );
+
+    return (
+        implemented => "<ul>" . join( "\n", map { "<li>$_</li>" } @implemented ) . "</ul>",
+        notimplemented => "<ul>" . join( "\n", map { "<li>$_</li>" } @notimplemented ) . "</ul>",
+    );
+}
+
+1;
diff -r 3cd5dbffdd1b -r 1c0749606568 cgi-bin/LJ/BetaFeatures.pm
--- a/cgi-bin/LJ/BetaFeatures.pm	Tue Mar 15 21:06:44 2011 +0800
+++ b/cgi-bin/LJ/BetaFeatures.pm	Mon Mar 28 14:40:04 2011 +0800
@@ -20,7 +20,9 @@ use LJ::ModuleLoader;
 
 my %HANDLER_OF_KEY = (); # key -> handler object
 my @HANDLER_LIST   = LJ::ModuleLoader->module_subclasses(__PACKAGE__);
-foreach my $handler (@HANDLER_LIST) {
+my @DW_HANDLER_LIST = LJ::ModuleLoader->module_subclasses( "DW::BetaFeatures" );
+
+foreach my $handler (@HANDLER_LIST, @DW_HANDLER_LIST) {
     eval "use $handler";
     die "Error loading handler '$handler': $@" if $@;
 }
@@ -33,7 +35,7 @@ sub get_handler {
     return $handler if $handler;
 
     my $use_key = 'default';
-    foreach my $cl (@HANDLER_LIST) {
+    foreach my $cl (@HANDLER_LIST, @DW_HANDLER_LIST) {
         my $subcl = (split("::", $cl))[-1];
         next if $subcl eq 'default';
         next unless $subcl eq $key;
diff -r 3cd5dbffdd1b -r 1c0749606568 cgi-bin/LJ/BetaFeatures/default.pm
--- a/cgi-bin/LJ/BetaFeatures/default.pm	Tue Mar 15 21:06:44 2011 +0800
+++ b/cgi-bin/LJ/BetaFeatures/default.pm	Mon Mar 28 14:40:04 2011 +0800
@@ -98,4 +98,9 @@ sub is_expired {
     return 1;
 }
 
+# any arguments to pass to the translation string to describe this feature?
+sub args_list {
+    return ();
+}
+
 1;
diff -r 3cd5dbffdd1b -r 1c0749606568 cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Tue Mar 15 21:06:44 2011 +0800
+++ b/cgi-bin/LJ/S2.pm	Mon Mar 28 14:40:04 2011 +0800
@@ -169,6 +169,10 @@ sub make_journal
     # like print_stylesheet() won't run, which don't have an method invocant
     return $page if $page && ref $page ne 'HASH';
 
+    my $beta_jquery = LJ::BetaFeatures->user_in_beta( $remote => "journaljquery" );
+    LJ::set_active_resource_group( 'jquery' )
+        if $beta_jquery;
+
     # Control strip
     my $show_control_strip = LJ::Hooks::run_hook( 'show_control_strip' );
     if ($show_control_strip) {
@@ -204,7 +208,7 @@ sub make_journal
 
     # inject the control strip JS, but only after any libraries have been injected
     $page->{head_content} .= LJ::control_strip_js_inject( user => $u->user )
-        if( $show_control_strip );
+        if $show_control_strip && ! $beta_jquery;
 
     s2_run($r, $ctx, $opts, $entry, $page);
 
diff -r 3cd5dbffdd1b -r 1c0749606568 cgi-bin/LJ/Widget/BetaFeature.pm
--- a/cgi-bin/LJ/Widget/BetaFeature.pm	Tue Mar 15 21:06:44 2011 +0800
+++ b/cgi-bin/LJ/Widget/BetaFeature.pm	Mon Mar 28 14:40:04 2011 +0800
@@ -39,10 +39,10 @@ sub render_body {
     if ($handler->is_active && $handler->user_can_add($u)) {
         $ret .= $class->start_form;
         if ($u->is_in_beta($feature)) {
-            $ret .= "<?p " . $class->ml("widget.betafeature.$feature.on") . " p?>";
+            $ret .= "<?p " . $class->ml("widget.betafeature.$feature.on", { $handler->args_list } ) . " p?>";
             $ret .= $class->html_submit("off", $class->ml('widget.betafeature.btn.off'));
         } else {
-            $ret .= "<?p " . $class->ml("widget.betafeature.$feature.off") . " p?>";
+            $ret .= "<?p " . $class->ml("widget.betafeature.$feature.off", { $handler->args_list } ) . " p?>";
             $ret .= $class->html_submit("on", $class->ml('widget.betafeature.btn.on'));
         }
         $ret .= $class->html_hidden( feature => $feature, user => $u->user );
--------------------------------------------------------------------------------

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