diffs (204 lines):
diff -r 601b1915a5ba -r 8b0182046c0d cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm Mon Jul 05 15:47:29 2010 +0800
+++ b/cgi-bin/LJ/Talk.pm Mon Jul 05 16:56:57 2010 +0800
@@ -1738,8 +1738,41 @@ sub talkform {
("", $BML::ML{'.opt.defpic'}, map { ($_, $_) }
@pics));
# userpic browse button
- $ret .= LJ::Talk::js_iconbrowser_button()
- if $remote && $remote->can_use_userpic_select;
+ $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::help_icon_html("userpics", " ");
}
@@ -1921,45 +1954,6 @@ 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 601b1915a5ba -r 8b0182046c0d cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm Mon Jul 05 15:47:29 2010 +0800
+++ b/cgi-bin/LJ/User.pm Mon Jul 05 16:56:57 2010 +0800
@@ -7397,19 +7397,15 @@ sub modify_caps {
# name: LJ::set_userprop
# des: Sets/deletes a userprop by name for a user.
# info: This adds or deletes from the
-# [dbtable[userprop]]/[dbtable[userproplite]] tables. One
-# crappy thing about this interface is that it doesn't allow
-# a batch of userprops to be updated at once, which is the
-# common thing to do.
-# args: dbarg?, uuserid, propname, value, memonly?
+# [dbtable[userprop]]/[dbtable[userproplite]] tables.
+# args: uuserid, propname, value
# des-uuserid: The userid of the user or a user hashref.
# des-propname: The name of the property. Or a hashref of propname keys and
corresponding values.
# des-value: The value to set to the property. If undefined or the
# empty string, then property is deleted.
-# des-memonly: if true, only writes to memcache, and not to database.
# </LJFUNC>
sub set_userprop {
- my ($u, $propname, $value, $memonly) = @_;
+ my ( $u, $propname, $value ) = @_;
$u = ref $u ? $u : LJ::load_userid($u);
my $userid = $u->userid + 0;
@@ -7437,7 +7433,8 @@ sub set_userprop {
elsif ( $p->{'cldversion'} && $u->dversion >= $p->{'cldversion'} ) {
$table = "userproplite2";
}
- unless ($memonly) {
+ unless ( $hash->{$propname} eq $u->{$propname} ) {
+ # only update db if value has changed
my $db = $action{$table}->{'db'} ||= (
$table !~ m{userprop(lite2|blob)}
? LJ::get_db_writer()
diff -r 601b1915a5ba -r 8b0182046c0d cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl Mon Jul 05 15:47:29 2010 +0800
+++ b/cgi-bin/weblib.pl Mon Jul 05 16:56:57 2010 +0800
@@ -701,8 +701,9 @@ sub create_qr_div {
("",
BML::ml('/talkpost.bml.opt.defpic'), map { ($_, $_) } @pics));
# userpic browse button
- $qrhtml .= LJ::Talk::js_iconbrowser_button()
- if $remote->can_use_userpic_select;
+ $qrhtml .= qq {
+ <input type="button" id="lj_userpicselect" value="Browse" />
+ } if $remote->can_use_userpic_select;
$qrhtml .= LJ::help_icon_html("userpics", " ");
}
@@ -799,6 +800,40 @@ 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;
}
diff -r 601b1915a5ba -r 8b0182046c0d htdocs/manage/profile/index.bml
--- a/htdocs/manage/profile/index.bml Mon Jul 05 15:47:29 2010 +0800
+++ b/htdocs/manage/profile/index.bml Mon Jul 05 16:56:57 2010 +0800
@@ -703,12 +703,13 @@ body<=
if $u->gizmo_account ne $POST{'gizmo'};
# set userprops
+ my %prop;
foreach my $uprop (@uprops) {
my $eff_val = $POST{$uprop}; # effective value, since 0
isn't stored
$eff_val = "" unless $eff_val;
- my $mem_only = $eff_val eq $u->{$uprop};
- LJ::set_userprop($u, $uprop, $eff_val, $mem_only);
+ $prop{$uprop} = $eff_val;
}
+ $u->set_prop( \%prop );
# location or bday could've changed... (who cares about checking
exactly)
$u->invalidate_directory_record;
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog