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

[dw-free] improve the workflow while using the poll creator

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

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

Scroll down to newly added question when creating polls.

Patch by [personal profile] yvi.

Files modified:
  • htdocs/poll/create.bml
--------------------------------------------------------------------------------
diff -r b2ece1f102eb -r 1ebe76640790 htdocs/poll/create.bml
--- a/htdocs/poll/create.bml	Mon Feb 28 14:12:07 2011 +0800
+++ b/htdocs/poll/create.bml	Mon Feb 28 16:17:44 2011 +0800
@@ -136,6 +136,9 @@ _c?>
     # extra arguments for get requests
     my $getextra = $authas ne $remote->{'user'} ? "?authas=$authas" : '';
 
+
+    # variable to store what question the last action took place in
+    my $focuson = "";
 
     #######################################################
     #
@@ -328,6 +331,9 @@ _c?>
                 ($err->{$adj}, $err->{$item}) =
                     $swap->($err->{$adj}, $err->{$item});
 
+                # focus on the new position
+                $focuson = $adj;
+
                 return;
             }
 
@@ -339,6 +345,9 @@ _c?>
                 $poll->{'count'}--;
                 delete $err->{$item};
 
+                # focus on the previous item, unless this one was the top one, in which case we will focus on the new first
+                $focuson = $item > 0 ? $item - 1 : 0;
+
                 return;
             }
 
@@ -349,6 +358,9 @@ _c?>
                 $poll->{"pq"}->[$item]->{'opts'} += $RULES{'items'}->{'more'};
                 $poll->{'pq'}->[$item]->{'opts'} = $RULES{'items'}->{'max'}
                     if @{$poll->{'pq'}}[$item]->{'opts'} > $RULES{'items'}->{'max'};
+
+                # focus on the item we just added more options for
+                $focuson = $item;
 
                 return;
             }
@@ -371,6 +383,9 @@ _c?>
                             "opt" => [],
                         }
                         );
+
+                # focus on the new item
+                $focuson = $item;
 
                 return;
             }
@@ -422,7 +437,7 @@ _c?>
 
         ### Form Header
 
-        $ret .= "<form method='post' action='create$getextra'>\n";
+        $ret .= "<form method='post' action='create$getextra#new'>\n";
         $ret .= LJ::html_hidden('count', $poll->{'count'});
 
         $ret .= "<div style='margin: 10px 0 20px 40px'><b>$ML{'.haserrors'}</b></div>\n"
@@ -502,7 +517,13 @@ _c?>
         foreach my $q (0..$poll->{'count'}-1) {
             my $elem = $poll->{'pq'}->[$q];
 
-            $ret .= "<?h2 " . BML::ml('.questionnum', { 'num' => ($q + 1) }) . " - $TYPENAME{$elem->{'type'}} h2?>\n";
+            my $qnr = $q + 1;
+
+            if ( $focuson eq $q ) {
+                $ret .= "<a name='question_$qnr'><h2 id='new'>" . BML::ml('.questionnum', { 'num' => $qnr }) . " - $TYPENAME{$elem->{'type'}} </h2></a>\n";
+            } else {
+                $ret .= "<a name='question_$qnr'><h2>" . BML::ml('.questionnum', { 'num' => $qnr }) . " - $TYPENAME{$elem->{'type'}} </h2></a>\n";
+            }
 
             $ret .= "<table summary='' border='0' cellspacing='0' cellpadding='0' width='90%'>\n";
             $ret .= "<tr><td align='left' width='15%'>\n";
--------------------------------------------------------------------------------