summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/disfavor.php17
-rw-r--r--actions/favor.php15
-rw-r--r--js/util.js15
-rw-r--r--lib/util.php60
4 files changed, 73 insertions, 34 deletions
diff --git a/actions/disfavor.php b/actions/disfavor.php
index 6f4a07886..ef01e891f 100644
--- a/actions/disfavor.php
+++ b/actions/disfavor.php
@@ -64,9 +64,18 @@ class DisfavorAction extends Action {
return;
}
- # XXX: ajax response
-
- common_redirect(common_local_url('showfavorites',
- array('nickname' => $user->nickname)));
+ if ($this->boolean('ajax')) {
+ common_start_html('text/xml');
+ common_element_start('head');
+ common_element('title', _('Favor'));
+ common_element_end('head');
+ common_element_start('body');
+ common_favor_form($notice);
+ common_element_end('body');
+ common_element_end('html');
+ } else {
+ common_redirect(common_local_url('showfavorites',
+ array('nickname' => $user->nickname)));
+ }
}
} \ No newline at end of file
diff --git a/actions/favor.php b/actions/favor.php
index 10ad6b809..142d83ae1 100644
--- a/actions/favor.php
+++ b/actions/favor.php
@@ -63,8 +63,19 @@ class FavorAction extends Action {
$this->notify($fave, $notice, $user);
- common_redirect(common_local_url('showfavorites',
- array('nickname' => $user->nickname)));
+ if ($this->boolean('ajax')) {
+ common_start_html('text/xml');
+ common_element_start('head');
+ common_element('title', _('Disfavor'));
+ common_element_end('head');
+ common_element_start('body');
+ common_disfavor_form($notice);
+ common_element_end('body');
+ common_element_end('html');
+ } else {
+ common_redirect(common_local_url('showfavorites',
+ array('nickname' => $user->nickname)));
+ }
}
function notify($fave, $notice, $user) {
diff --git a/js/util.js b/js/util.js
index d5e1c8720..9f66e393c 100644
--- a/js/util.js
+++ b/js/util.js
@@ -68,9 +68,20 @@ $(document).ready(function(){
var id = new_form.id.replace('favor', 'disfavor');
$('form#'+id).replace(new_form);
}};
-
+
+ function addAjaxHidden(form) {
+ ajax = document.newElement('input');
+ ajax.addAttribute('type', 'hidden');
+ ajax.addAttribute('name', 'ajax');
+ ajax.addAttribute('value', 1);
+ form.appendChild(ajax);
+ }
+
$("form.favor").ajaxForm(favoptions);
- $("form.disfavor").ajaxForm(disoptions);
+ $("form.disfavor").ajaxForm(disoptions);
+
+ $("form.favor").each(addAjaxHidden);
+ $("form.disfavor").each(addAjaxHidden);
});
function doreply(nick) {
diff --git a/lib/util.php b/lib/util.php
index 69fe2a898..48dd1a1b4 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -151,34 +151,11 @@ function common_init_language() {
define('PAGE_TYPE_PREFS', 'text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2');
function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=NULL) {
+
global $config, $xw;
- $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL;
-
- # XXX: allow content negotiation for RDF, RSS, or XRDS
-
- $type = common_negotiate_type(common_accept_to_prefs($httpaccept),
- common_accept_to_prefs(PAGE_TYPE_PREFS));
-
- if (!$type) {
- common_user_error(_('This page is not available in a media type you accept'), 406);
- exit(0);
- }
-
- header('Content-Type: '.$type);
-
- common_start_xml('html',
- '-//W3C//DTD XHTML 1.0 Strict//EN',
- 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
-
- # FIXME: correct language for interface
-
- $language = common_language();
-
- common_element_start('html', array('xmlns' => 'http://www.w3.org/1999/xhtml',
- 'xml:lang' => $language,
- 'lang' => $language));
-
+ common_start_html();
+
common_element_start('head');
common_element('title', NULL,
$pagetitle . " - " . $config['site']['name']);
@@ -252,6 +229,37 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
common_element_start('div', array('id' => 'content'));
}
+function common_start_html($type=NULL) {
+
+ if (!$type) {
+ $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL;
+
+ # XXX: allow content negotiation for RDF, RSS, or XRDS
+
+ $type = common_negotiate_type(common_accept_to_prefs($httpaccept),
+ common_accept_to_prefs(PAGE_TYPE_PREFS));
+
+ if (!$type) {
+ common_user_error(_('This page is not available in a media type you accept'), 406);
+ exit(0);
+ }
+ }
+
+ header('Content-Type: '.$type);
+
+ common_start_xml('html',
+ '-//W3C//DTD XHTML 1.0 Strict//EN',
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
+
+ # FIXME: correct language for interface
+
+ $language = common_language();
+
+ common_element_start('html', array('xmlns' => 'http://www.w3.org/1999/xhtml',
+ 'xml:lang' => $language,
+ 'lang' => $language));
+}
+
function common_show_footer() {
global $xw, $config;
common_element_end('div'); # content div