kareila: (Default)
kareila ([personal profile] kareila) wrote in [site community profile] changelog2009-10-21 01:35 am

[dw-free] quick reply form is missing "Quote" button

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

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

Include quote button on quick reply form.

Patch by [personal profile] wyntarvox.

Files modified:
  • cgi-bin/weblib.pl
--------------------------------------------------------------------------------
diff -r 19ef549e1702 -r c8a5ddc28716 cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl	Tue Oct 20 23:59:55 2009 +0000
+++ b/cgi-bin/weblib.pl	Tue Oct 20 20:35:15 2009 -0500
@@ -733,7 +733,7 @@ sub create_qr_div {
         }
     }
 
-    $qrhtml .= "</td></tr>";
+    $qrhtml .= "<span id='quotebuttonspan'></span></td></tr>";
 
     $qrhtml .= "<tr><td align='right'>";
     $qrhtml .= "<b>".BML::ml('/talkpost.bml.opt.subject')."</b></td>";
@@ -772,6 +772,45 @@ sub create_qr_div {
         $qrhtml .= BML::ml('/talkread.bml.qr.spellcheck');
         $qrhtml .= "</label>";
     }
+
+    # quick quote button
+    my $quickquote = LJ::ejs( '<input type="button" value="Quote" onmousedown="quote();" onclick="quote();" />' );
+
+    my $qrjscript = <<"QQ";
+
+    var helped = 0; var pasted = 0;
+    function quote () {
+        var text = '';
+
+        if (document.getSelection) {
+            text = document.getSelection();
+        } else if (document.selection) {
+            text = document.selection.createRange().text;
+        } else if (window.getSelection) {
+            text = window.getSelection();
+        }
+
+        if (text == '') {
+            if (helped != 1 && pasted != 1) {
+                helped = 1; alert("If you'd like to quote a portion of the original message, highlight it then press 'Quote'");
+            }
+            return false;
+        } else {
+            pasted = 1;
+        }
+
+        var element = text.search(/\\n/) == -1 ? 'q' : 'blockquote';
+        var textarea = document.getElementById('body');
+        textarea.focus();
+        textarea.value = textarea.value + "<" + element + ">" + text + "</" + element + ">";
+        textarea.caretPos = textarea.value;
+        textarea.focus();
+        return false;
+    }
+    if (document.getElementById && (document.getSelection || document.selection || window.getSelection)) {
+        document.getElementById('quotebuttonspan').innerHTML = document.getElementById('quotebuttonspan').innerHTML + '$quickquote';
+    }
+QQ
 
     if ($u->opt_logcommentips eq 'A') {
         $qrhtml .= '<br />';
@@ -815,6 +854,8 @@ sub create_qr_div {
                    }
                }
            };
+
+    $ret .= $qrjscript;
 
     $ret .= "\n</script>";
 
--------------------------------------------------------------------------------

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