(Un)Subscribe form using ajaxForm()

darcs-hash:20081120232655-eefa4-cf6a71e246828793d3bfa413db724ab33bc58bcf.gz
This commit is contained in:
csarven 2008-11-20 18:26:55 -05:00
parent 41f29ab662
commit 171bedf24b
7 changed files with 63 additions and 37 deletions

View File

@ -174,9 +174,9 @@ class ShowstreamAction extends StreamAction {
if ($cur) { if ($cur) {
if ($cur->id != $profile->id) { if ($cur->id != $profile->id) {
if ($cur->isSubscribed($profile)) { if ($cur->isSubscribed($profile)) {
$this->show_unsubscribe_form($profile); common_unsubscribe_form($profile);
} else { } else {
$this->show_subscribe_form($profile); common_subscribe_form($profile);
} }
} }
} else { } else {
@ -185,19 +185,9 @@ class ShowstreamAction extends StreamAction {
common_element_end('li'); common_element_end('li');
$user = User::staticGet('id', $profile->id); $user = User::staticGet('id', $profile->id);
common_profile_new_message_nudge($cur, $user, $profile);
if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
common_element_start('li', array('id' => 'profile_send_a_new_message')); common_element_end('ul');
common_element('a', array('href' => common_local_url('newmessage', array('to' => $user->id))),
_('Send a message'));
common_element_end('li');
if ($user->email && $user->emailnotifynudge) {
common_element_start('li', array('id' => 'profile_nudge'));
common_nudge_form($user);
common_element_end('li');
}
}
common_element_end('ul');
common_element_end('div'); common_element_end('div');
@ -229,20 +219,6 @@ class ShowstreamAction extends StreamAction {
common_element_end('div'); common_element_end('div');
} }
function show_subscribe_form($profile) {
common_element_start('form', array('id' => 'subscribe', 'method' => 'post',
'action' => common_local_url('subscribe')));
common_hidden('token', common_session_token());
common_element('input', array('id' => 'subscribeto',
'name' => 'subscribeto',
'type' => 'hidden',
'value' => $profile->nickname));
common_element('input', array('type' => 'submit',
'class' => 'submit',
'value' => _('Subscribe')));
common_element_end('form');
}
function show_remote_subscribe_link($profile) { function show_remote_subscribe_link($profile) {
$url = common_local_url('remotesubscribe', $url = common_local_url('remotesubscribe',
array('nickname' => $profile->nickname)); array('nickname' => $profile->nickname));

View File

@ -54,13 +54,16 @@ class SubscribeAction extends Action {
return; return;
} }
$cur = common_current_user();
$profile = Profile::staticGet('nickname', $other_nickname);
if ($this->boolean('ajax')) { if ($this->boolean('ajax')) {
common_start_html('text/xml'); common_start_html('text/xml');
common_element_start('head'); common_element_start('head');
common_element('title', null, _('Subscribed')); common_element('title', null, _('Subscribed'));
common_element_end('head'); common_element_end('head');
common_element_start('body'); common_element_start('body');
common_subscribe_response(); common_unsubscribe_form($profile);
common_profile_new_message_nudge($cur, $profile);
common_element_end('body'); common_element_end('body');
common_element_end('html'); common_element_end('html');
} else { } else {

View File

@ -49,13 +49,15 @@ class UnsubscribeAction extends Action {
return; return;
} }
$profile = Profile::staticGet('nickname', $other_nickname);
if ($this->boolean('ajax')) { if ($this->boolean('ajax')) {
common_start_html('text/xml'); common_start_html('text/xml');
common_element_start('head'); common_element_start('head');
common_element('title', null, _('Unsubscribed')); common_element('title', null, _('Unsubscribed'));
common_element_end('head'); common_element_end('head');
common_element_start('body'); common_element_start('body');
common_unsubscribe_response(); common_subscribe_form($profile);
common_element_end('body'); common_element_end('body');
common_element_end('html'); common_element_end('html');
} else { } else {

View File

@ -90,7 +90,35 @@ $(document).ready(function(){
success: function(xml) { $("#nudge").replaceWith(document._importNode($("#nudge_response", xml).get(0),true)); } success: function(xml) { $("#nudge").replaceWith(document._importNode($("#nudge_response", xml).get(0),true)); }
}); });
$("#nudge").each(addAjaxHidden); $("#nudge").each(addAjaxHidden);
$("#nudge .submit").bind('click', function(e) { $(this).addClass("processing"); }); $("#nudge .submit").bind('click', function(e) { $(this).addClass("processing"); });
var Subscribe = { dataType: 'xml',
success: function(xml) { var form_unsubscribe = document._importNode($('form', xml).get(0), true);
var form_unsubscribe_id = form_unsubscribe.id;
var form_subscribe_id = form_unsubscribe_id.replace('unsubscribe', 'subscribe');
$("form#"+form_subscribe_id).replaceWith(form_unsubscribe);
$("form#"+form_unsubscribe_id).ajaxForm(UnSubscribe).each(addAjaxHidden);
$("#profile_actions").append(document._importNode($('#profile_send_a_new_message', xml).get(0), true));
$("#profile_actions").append(document._importNode($('#profile_nudge', xml).get(0), true));
}
};
var UnSubscribe = { dataType: 'xml',
success: function(xml) { var form_subscribe = document._importNode($('form', xml).get(0), true);
var form_subscribe_id = form_subscribe.id;
var form_unsubscribe_id = form_subscribe_id.replace('subscribe', 'unsubscribe');
$("form#"+form_unsubscribe_id).replaceWith(form_subscribe);
$("form#"+form_subscribe_id).ajaxForm(Subscribe).each(addAjaxHidden);
$("#profile_send_a_new_message").remove();
$("#profile_nudge").remove();
}
};
$("form.subscribe").ajaxForm(Subscribe);
$("form.unsubscribe").ajaxForm(UnSubscribe);
$("form.subscribe").each(addAjaxHidden);
$("form.unsubscribe").each(addAjaxHidden);
}); });
function doreply(nick,id) { function doreply(nick,id) {

View File

@ -1903,6 +1903,9 @@ function common_nudge_form($profile) {
'value' => _('Send a nudge'))); 'value' => _('Send a nudge')));
common_element_end('form'); common_element_end('form');
} }
function common_nudge_response() {
common_element('p', array('id' => 'nudge_response'), _('Nudge sent!'));
}
function common_subscribe_form($profile) { function common_subscribe_form($profile) {
common_element_start('form', array('id' => 'subscribe-' . $profile->nickname, common_element_start('form', array('id' => 'subscribe-' . $profile->nickname,
@ -1936,8 +1939,22 @@ function common_unsubscribe_form($profile) {
common_element_end('form'); common_element_end('form');
} }
function common_nudge_response() { // XXX: Refactor this code
common_element('p', array('id' => 'nudge_response'), _('Nudge sent!')); function common_profile_new_message_nudge ($cur, $profile) {
$user = User::staticGet('id', $profile->id);
if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
common_element_start('li', array('id' => 'profile_send_a_new_message'));
common_element('a', array('href' => common_local_url('newmessage', array('to' => $user->id))),
_('Send a message'));
common_element_end('li');
if ($user->email && $user->emailnotifynudge) {
common_element_start('li', array('id' => 'profile_nudge'));
common_nudge_form($user);
common_element_end('li');
}
}
} }
function common_cache_key($extra) { function common_cache_key($extra) {

View File

@ -672,7 +672,7 @@ textarea {
text-align: right; text-align: right;
} }
/* ----- Subscribe Form ----- */ /* ----- Subscribe Form ----- */
#subscribe .submit, #unsubscribe .submit, #remotesubscribe .button, #remotesubscribe { #content .subscribe .submit, #content .unsubscribe .submit, #remotesubscribe .button, #remotesubscribe {
clear: left; clear: left;
margin: 0; margin: 0;
width: 96px; width: 96px;
@ -691,7 +691,7 @@ textarea {
padding: 5px 0 0 0; padding: 5px 0 0 0;
text-align: center; text-align: center;
} }
#subscribe .button:hover, #unsubscribe .button:hover { #content .subscribe .button:hover, #content .unsubscribe .button:hover {
background-color: #904632; background-color: #904632;
cursor: pointer; cursor: pointer;
} }

View File

@ -158,7 +158,7 @@ textarea:focus, input:focus {
background-color: #904632; background-color: #904632;
} }
#subscribe .submit, #unsubscribe .submit, #remotesubscribe .button, #remotesubscribe { #content .subscribe .submit, #content .unsubscribe .submit, #remotesubscribe .button, #remotesubscribe {
background-color: #c15d42; background-color: #c15d42;
color: #fcfff5; color: #fcfff5;
} }