Committer: gprochaev
LJSUP-6882. Text Message field unexpectedly changes and calls number "bad"U trunk/htdocs/manage/profile/index.bml
Modified: trunk/htdocs/manage/profile/index.bml =================================================================== --- trunk/htdocs/manage/profile/index.bml 2010-09-20 16:24:49 UTC (rev 17419) +++ trunk/htdocs/manage/profile/index.bml 2010-09-21 05:32:34 UTC (rev 17420) @@ -58,6 +58,8 @@ my $dbr = LJ::get_db_reader(); my $sth; + my $is_remote_sup = LJ::SUP->is_remote_sup(); + # load user props LJ::load_user_props( $u, { use_master => 1 }, @@ -231,7 +233,6 @@ } ## USERHEADS - my $is_remote_sup = LJ::SUP->is_remote_sup(); unless (!$is_remote_sup && $LJ::DISABLED{'userhead_nonsup'}) { if ($u->is_personal) { $ret .= "<a name='userheads'></a><div class='section_head'>$ML{'.section.userheads'}</div>\n"; @@ -420,14 +421,12 @@ $ret .= "</td></tr>\n"; } -=head # opt_usermsg unless ($LJ::DISABLED{'user_messaging'}) { $ret .= "<tr><td class='field_name'>LJ User Messaging</td><td>"; $ret .= LJ::Setting::UserMessaging->as_html($u); $ret .= "</td></tr>\n"; } -=cut # chat thingies $ret .= "<tr><td colspan='2'></td></tr><tr><td class='field_name' colspan='2' style='text-align: center;'><a name='iminfo'></a>$ML{'.fn.imservices3'}</td></tr>"; @@ -488,7 +487,6 @@ $ret .= "</table>\n"; ## TEXT MESSAGING - $ret .= "<a name='txtmsg'></a><div class='section_head'>" . (LJ::GeoLocation->ip_country() eq 'RU' ? $ML{'.section.phone'} : $ML{'.section.textmsg'}) . "\n"; unless (LJ::get_cap($u, "textmessaging")) { @@ -504,16 +502,38 @@ foreach (values %$tminfo) { LJ::text_out(\$_); } $tminfo->{'security'} = "N" if ($u->{'txtmsg_status'} eq 'off' || $u->{'txtmsg_status'} eq 'none'); - $ret .= "</div>\n"; + if ($LJ::DISABLED{smsru} || !$is_remote_sup) { + $ret .= "<span id='phone_view_options' class='view_options'>$ML{'.fn.txtmsg'} "; + $ret .= LJ::html_select({ 'name' => 'txtmsg_security', 'selected' => $tminfo->{'security'} }, + "all" => BML::ml(".security.visibility.everybody"), + "reg" => BML::ml(".security.visibility.regusers"), + "friends" => BML::ml(".security.visibility.friends"), + "N" => BML::ml(".security.visibility.nobody") ); + $ret .= "</span></div>\n"; + } else { + $ret .= "</div>\n"; + } - ## my $block_id = 'phone_verification'; - $block_id = '' if $LJ::DISABLED{smsru}; ## empty block_id disables JS script - + $block_id = '' if $LJ::DISABLED{smsru} || !$is_remote_sup; ## empty block_id disables JS script $ret .= "<table class='field_block' id='$block_id'>\n"; + if ($LJ::DISABLED{smsru} || !$is_remote_sup) { + foreach (values %$tminfo) { LJ::text_out(\$_); } + ## + $ret .= "<tr><td class='field_name'>$ML{'.fn.servprov'}</td><td>"; + { + my @opts = ("", ""); + foreach my $p (LJ::TextMessage::providers()) { + my $info = LJ::TextMessage::provider_info($p); + push @opts, ($p, $info->{'name'}); + } - foreach (values %$tminfo) { LJ::text_out(\$_); } - + $ret .= LJ::html_select({ 'name' => 'txtmsg_provider', + 'selected' => $tminfo->{'provider'}, }, + @opts); + } + $ret .= " <span>" . BML::ml('.txt.details', {'aopts' => "href='$LJ::SITEROOT/tools/textmessage.bml?mode=details'"}) . "</span></td></tr>\n"; + } $ret .= "<tr><td class='field_name'>$ML{'.fn.txtnum'}</td><td>"; $ret .= '<ul class="b-manage-smsn b-manage-smsn-hide">'; $ret .= '<li class="b-manage-smsn-sms">' . LJ::html_text({ 'name' => 'txtmsg_number', 'value' => $tminfo->{'number'}, 'size' => '15', 'maxlength' => '15' }) . '<br /><span class="helper">' . $ML{'.section.textmsg.example'} . '</span></li>'; @@ -661,6 +681,18 @@ push @errors, $ML{'.error.bio.toolong'}; } + # text messaging + if ($LJ::DISABLED{smsru} || !$is_remote_sup) { + if ($POST{'txtmsg_security'} =~ m/^(all|reg|friends)$/) { + unless ($POST{'txtmsg_provider'}) { + push @errors, $ML{'.error.txt.require_provider'}; + } + unless ($POST{'txtmsg_number'}) { + push @errors, $ML{'.error.txt.require.number'}; + } + } + } + # FIXME: validation AND POSTING are handled by widgets' handle_post() methods # (introduce validate_post() ?) my $save_search_index = $POST{'opt_showlocation'} =~ /^[YR]$/; @@ -800,29 +832,39 @@ my $tminfo = LJ::TextMessage->tm_info($u); # Check that text messaging is turned off and either # the provider or number have been set to null - if ($tminfo->{'number'} && ! $POST{'txtmsg_number'} ) - { - $dbh->do("DELETE FROM txtmsg WHERE userid=?", undef, $u->userid); - LJ::SMS::API::RU::Phone->delete($u->userid); - + if ($LJ::DISABLED{'smsru'} || !$is_remote_sup) { + if ($txtmsg_status eq "off" && + (($tminfo->{'provider'} && ! $POST{'txtmsg_provider'}) + || ($tminfo->{'number'} && ! $POST{'txtmsg_number'})) + ) + { + $dbh->do("DELETE FROM txtmsg WHERE userid=?", undef, $u->{'userid'}); + } elsif ($txtmsg_status eq "on") { + $dbh->do("REPLACE INTO txtmsg (userid, provider, number, security) VALUES (?, ?, ?, ?)", + undef, $u->{'userid'}, $POST{'txtmsg_provider'}, $POST{'txtmsg_number'}, $POST{'txtmsg_security'}); + } } else { - my $number = $POST{'txtmsg_number'}; - $dbh->do("REPLACE INTO txtmsg (userid, number) VALUES (?, ?)", - undef, $u->userid, $number); + if ($tminfo->{'number'} && ! $POST{'txtmsg_number'}) { + $dbh->do("DELETE FROM txtmsg WHERE userid=?", undef, $u->{'userid'}); + LJ::SMS::API::RU::Phone->delete($u->userid); + } else { + my $number = $POST{'txtmsg_number'}; + $dbh->do("REPLACE INTO txtmsg (userid, number) VALUES (?, ?)", + undef, $u->userid, $number); - ## update supported providers info - if (LJ::SMS::API::RU::Phone->is_supported($number)){ - ## set the new phone number to table SMSru_phones if - ## phone number has been changed. - LJ::SMS::API::RU::Phone->set($u->userid, $number => 'not_verified') - if LJ::SMS::API::RU::Phone->normalize($number) ne - LJ::SMS::API::RU::Phone->normalize($tminfo->{number}); + ## update supported providers info + if (LJ::SMS::API::RU::Phone->is_supported($number)){ + ## set the new phone number to table SMSru_phones if + ## phone number has been changed. + LJ::SMS::API::RU::Phone->set($u->userid, $number => 'not_verified') + if LJ::SMS::API::RU::Phone->normalize($number) ne + LJ::SMS::API::RU::Phone->normalize($tminfo->{number}); - } elsif(LJ::SMS::API::RU::Phone->is_supported($tminfo->{number})) { - ## if previously there was a supported provider - LJ::SMS::API::RU::Phone->delete($u->userid); + } elsif(LJ::SMS::API::RU::Phone->is_supported($tminfo->{number})) { + ## if previously there was a supported provider + LJ::SMS::API::RU::Phone->delete($u->userid); + } } - } # clear text message security caches