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 02:20 pm

[dw-free] refactor icon browser and related code

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

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

Refactor out the icon browser JS, into a common function.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/Talk.pm
  • cgi-bin/weblib.pl
--------------------------------------------------------------------------------
diff -r 084c1ad56111 -r 9f08948db033 cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm	Mon Jul 05 17:55:47 2010 +0800
+++ b/cgi-bin/LJ/Talk.pm	Mon Jul 05 22:26:30 2010 +0800
@@ -1738,41 +1738,10 @@ 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;
+        if ( $remote && $remote->can_use_userpic_select ) {
+            $ret .= '<input type="button" id="lj_userpicselect" value="Browse" />';
+            $ret .= LJ::Talk::js_iconbrowser_button();
+        }
                 
         $ret .= LJ::help_icon_html("userpics", " ");
     }
@@ -1954,6 +1923,43 @@ sub init_iconbrowser_js {
     );
 
     return @list;
+}
+
+# generate the javascript code for the icon browser
+sub js_iconbrowser_button {
+    return 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>
+    };
 }
 
 # generate the javascript code for the quick quote button
diff -r 084c1ad56111 -r 9f08948db033 cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl	Mon Jul 05 17:55:47 2010 +0800
+++ b/cgi-bin/weblib.pl	Mon Jul 05 22:26:30 2010 +0800
@@ -801,39 +801,8 @@ sub create_qr_div {
 
     $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;
+    $ret .= LJ::Talk::js_iconbrowser_button()
+        if $remote->can_use_userpic_select;
 
     return $ret;
 }
--------------------------------------------------------------------------------