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

[dw-free] refactor icon browser and related code

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

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

Refactor out the JS code for the icon browser button.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/Talk.pm
  • cgi-bin/weblib.pl
--------------------------------------------------------------------------------
diff -r e94fdc24e89c -r 601b1915a5ba cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm	Mon Jul 05 15:40:40 2010 +0800
+++ b/cgi-bin/LJ/Talk.pm	Mon Jul 05 15:47:29 2010 +0800
@@ -1738,41 +1738,8 @@ sub talkform {
                                 ("", $BML::ML{'.opt.defpic'}, map { ($_, $_) } @pics));
 
         # userpic browse button
-        $ret .= qq {
-            <input type="button" id="lj_userpicselect" value="Browse" />
-
-            <script type="text/javascript" language="JavaScript">
-            DOM.addEventListener(window, "load", function (evt) {
-                // attach userpicselect code to userpicbrowse button
-                var ups_btn = \$("lj_userpicselect");
-                if (ups_btn) {
-                    DOM.addEventListener(ups_btn, "click", function (evt) {
-                     var ups = new UserpicSelect();
-                     ups.init();
-                     ups.setPicSelectedCallback(function (picid, keywords) {
-                         var kws_dropdown = \$("prop_picture_keyword");
-
-                         if (kws_dropdown) {
-                             var items = kws_dropdown.options;
-
-                             // select the keyword in the dropdown
-                             keywords.forEach(function (kw) {
-                                 for (var i = 0; i < items.length; i++) {
-                                     var item = items[i];
-                                     if (item.value == kw) {
-                                         kws_dropdown.selectedIndex = i;
-                                         return;
-                                     }
-                                 }
-                             });
-                         }
-                     });
-                     ups.show();
-                 });
-                }
-            });
-            </script>
-        } if $remote && $remote->can_use_userpic_select;
+        $ret .= LJ::Talk::js_iconbrowser_button()
+            if $remote && $remote->can_use_userpic_select;
                 
         $ret .= LJ::help_icon_html("userpics", " ");
     }
@@ -1954,6 +1921,45 @@ sub init_iconbrowser_js {
     );
 
     return @list;
+}
+
+# generate the javascript code for the icon browser
+sub js_iconbrowser_button {
+    return qq {
+        <input type="button" id="lj_userpicselect" value="Browse" />
+
+        <script type="text/javascript" language="JavaScript">
+        DOM.addEventListener(window, "load", function (evt) {
+            // attach userpicselect code to userpicbrowse button
+            var ups_btn = \$("lj_userpicselect");
+            if (ups_btn) {
+                DOM.addEventListener(ups_btn, "click", function (evt) {
+                 var ups = new UserpicSelect();
+                 ups.init();
+                 ups.setPicSelectedCallback(function (picid, keywords) {
+                     var kws_dropdown = \$("prop_picture_keyword");
+
+                     if (kws_dropdown) {
+                         var items = kws_dropdown.options;
+
+                         // select the keyword in the dropdown
+                         keywords.forEach(function (kw) {
+                             for (var i = 0; i < items.length; i++) {
+                                 var item = items[i];
+                                 if (item.value == kw) {
+                                     kws_dropdown.selectedIndex = i;
+                                     return;
+                                 }
+                             }
+                         });
+                     }
+                 });
+                 ups.show();
+             });
+            }
+        });
+        </script>
+    };
 }
 
 # generate the javascript code for the quick quote button
diff -r e94fdc24e89c -r 601b1915a5ba cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl	Mon Jul 05 15:40:40 2010 +0800
+++ b/cgi-bin/weblib.pl	Mon Jul 05 15:47:29 2010 +0800
@@ -701,9 +701,8 @@ sub create_qr_div {
                                        ("", BML::ml('/talkpost.bml.opt.defpic'), map { ($_, $_) } @pics));
 
             # userpic browse button
-            $qrhtml .= qq {
-                <input type="button" id="lj_userpicselect" value="Browse" />
-                } if $remote->can_use_userpic_select;
+            $qrhtml .= LJ::Talk::js_iconbrowser_button()
+                if $remote->can_use_userpic_select;
 
             $qrhtml .= LJ::help_icon_html("userpics", " ");
         }
@@ -800,40 +799,6 @@ sub create_qr_div {
     $ret .= LJ::Talk::js_quote_button( 'body' );
 
     $ret .= "\n</script>";
-
-    $ret .= qq {
-        <script type="text/javascript" language="JavaScript">
-            DOM.addEventListener(window, "load", function (evt) {
-                // attach userpicselect code to userpicbrowse button
-                var ups_btn = \$("lj_userpicselect");
-                if (ups_btn) {
-                    DOM.addEventListener(ups_btn, "click", function (evt) {
-                     var ups = new UserpicSelect();
-                     ups.init();
-                     ups.setPicSelectedCallback(function (picid, keywords) {
-                         var kws_dropdown = \$("prop_picture_keyword");
-
-                         if (kws_dropdown) {
-                             var items = kws_dropdown.options;
-
-                             // select the keyword in the dropdown
-                             keywords.forEach(function (kw) {
-                                 for (var i = 0; i < items.length; i++) {
-                                     var item = items[i];
-                                     if (item.value == kw) {
-                                         kws_dropdown.selectedIndex = i;
-                                         return;
-                                     }
-                                 }
-                             });
-                         }
-                     });
-                     ups.show();
-                 });
-                }
-            });
-        </script>
-        } if $remote->can_use_userpic_select;
 
     return $ret;
 }
--------------------------------------------------------------------------------