summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--EVENTS.txt6
-rw-r--r--actions/subscriptions.php43
-rw-r--r--plugins/OStatus/OStatusPlugin.php17
-rw-r--r--plugins/OStatus/actions/ostatussub.php33
-rw-r--r--plugins/OStatus/js/ostatus.js14
-rw-r--r--plugins/OStatus/theme/base/css/ostatus.css30
6 files changed, 102 insertions, 41 deletions
diff --git a/EVENTS.txt b/EVENTS.txt
index d3c2fb7bf..c387274c0 100644
--- a/EVENTS.txt
+++ b/EVENTS.txt
@@ -763,3 +763,9 @@ EndFindMentions: end finding mentions in a block of text
has 'mentioned' (array of mentioned profiles), 'url' (url to link as),
'title' (title of the link), 'position' (position of the text to
replace), 'text' (text to replace)
+
+StartShowSubscriptionsContent: before showing the subscriptions content
+- $action: the current action
+
+EndShowSubscriptionsContent: after showing the subscriptions content
+- $action: the current action
diff --git a/actions/subscriptions.php b/actions/subscriptions.php
index 0ef31aa9f..ba6171ef4 100644
--- a/actions/subscriptions.php
+++ b/actions/subscriptions.php
@@ -79,32 +79,37 @@ class SubscriptionsAction extends GalleryAction
function showContent()
{
- parent::showContent();
+ if (Event::handle('StartShowSubscriptionsContent', array($this))) {
+ parent::showContent();
- $offset = ($this->page-1) * PROFILES_PER_PAGE;
- $limit = PROFILES_PER_PAGE + 1;
+ $offset = ($this->page-1) * PROFILES_PER_PAGE;
+ $limit = PROFILES_PER_PAGE + 1;
- $cnt = 0;
+ $cnt = 0;
- if ($this->tag) {
- $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit);
- } else {
- $subscriptions = $this->user->getSubscriptions($offset, $limit);
- }
+ if ($this->tag) {
+ $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit);
+ } else {
+ $subscriptions = $this->user->getSubscriptions($offset, $limit);
+ }
- if ($subscriptions) {
- $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this);
- $cnt = $subscriptions_list->show();
- if (0 == $cnt) {
- $this->showEmptyListMessage();
+ if ($subscriptions) {
+ $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this);
+ $cnt = $subscriptions_list->show();
+ if (0 == $cnt) {
+ $this->showEmptyListMessage();
+ }
}
- }
- $subscriptions->free();
+ $subscriptions->free();
+
+ $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
+ $this->page, 'subscriptions',
+ array('nickname' => $this->user->nickname));
- $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
- $this->page, 'subscriptions',
- array('nickname' => $this->user->nickname));
+
+ Event::handle('EndShowSubscriptionsContent', array($this));
+ }
}
function showScripts()
diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php
index 7133e43a3..7c6c0c69f 100644
--- a/plugins/OStatus/OStatusPlugin.php
+++ b/plugins/OStatus/OStatusPlugin.php
@@ -499,4 +499,21 @@ class OStatusPlugin extends Plugin
}
return true;
}
+
+ function onStartShowSubscriptionsContent($action)
+ {
+ $user = common_current_user();
+ if ($user && ($user->id == $action->profile->id)) {
+ $action->elementStart('div', 'entity_actions');
+ $action->elementStart('p', array('id' => 'entity_remote_subscribe',
+ 'class' => 'entity_subscribe'));
+ $action->element('a', array('href' => common_local_url('ostatussub'),
+ 'class' => 'entity_remote_subscribe')
+ , _m('Subscribe to remote user'));
+ $action->elementEnd('p');
+ $action->elementEnd('div');
+ }
+
+ return true;
+ }
}
diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php
index bbbd1b7e6..95dec19af 100644
--- a/plugins/OStatus/actions/ostatussub.php
+++ b/plugins/OStatus/actions/ostatussub.php
@@ -55,7 +55,27 @@ class OStatusSubAction extends Action
function showForm($error=null)
{
$this->error = $error;
- $this->showPage();
+ if ($this->boolean('ajax')) {
+ header('Content-Type: text/xml;charset=utf-8');
+ $this->xw->startDocument('1.0', 'UTF-8');
+ $this->elementStart('html');
+ $this->elementStart('head');
+ $this->element('title', null, _m('Subscribe to user'));
+ $this->elementEnd('head');
+ $this->elementStart('body');
+ $this->showContent();
+ $this->elementEnd('body');
+ $this->elementEnd('html');
+ } else {
+ $this->showPage();
+ }
+ }
+
+ function showPageNotice()
+ {
+ if ($this->error) {
+ $this->element('p', 'error', $this->error);
+ }
}
/**
@@ -69,17 +89,12 @@ class OStatusSubAction extends Action
function showContent()
{
- // @fixme is this right place?
- if ($this->error) {
- $this->text($this->error);
- }
-
$user = common_current_user();
$profile = $user->getProfile();
$this->elementStart('form', array('method' => 'post',
- 'id' => 'ostatus_sub',
+ 'id' => 'form_ostatus_sub',
'class' => 'form_settings',
'action' =>
common_local_url('ostatussub')));
@@ -139,7 +154,7 @@ class OStatusSubAction extends Action
if ($this->profile_uri) {
$this->validateAndPreview();
} else {
- $this->showPage();
+ $this->showForm();
}
}
}
@@ -255,7 +270,7 @@ class OStatusSubAction extends Action
{
if ($this->validateFeed()) {
$this->preview = true;
- $this->showForm(_m('Previewing feed:'));
+ $this->showForm();
}
}
diff --git a/plugins/OStatus/js/ostatus.js b/plugins/OStatus/js/ostatus.js
index 671795558..4b4c32910 100644
--- a/plugins/OStatus/js/ostatus.js
+++ b/plugins/OStatus/js/ostatus.js
@@ -1,14 +1,15 @@
SN.U.DialogBox = {
Subscribe: function(a) {
- var f = a.parent().find('#form_ostatus_connect');
+ var f = a.parent().find('.form_settings');
if (f.length > 0) {
f.show();
}
else {
+ a[0].href = (a[0].href.match(/[\\?]/) == null) ? a[0].href+'?' : a[0].href+'&';
$.ajax({
type: 'GET',
dataType: 'xml',
- url: a[0].href+'&ajax=1',
+ url: a[0].href+'ajax=1',
beforeSend: function(formData) {
a.addClass('processing');
},
@@ -19,7 +20,7 @@ SN.U.DialogBox = {
if (typeof($('form', data)[0]) != 'undefined') {
a.after(document._importNode($('form', data)[0], true));
- var form = a.parent().find('#form_ostatus_connect');
+ var form = a.parent().find('.form_settings');
form
.addClass('dialogbox')
@@ -40,6 +41,7 @@ SN.U.DialogBox = {
});
form.find('#acct').focus();
+ form.find('#profile').focus();
}
a.removeClass('processing');
@@ -50,11 +52,9 @@ SN.U.DialogBox = {
};
SN.Init.Subscribe = function() {
- $('.entity_subscribe a').live('click', function() { SN.U.DialogBox.Subscribe($(this)); return false; });
+ $('.entity_subscribe .entity_remote_subscribe').live('click', function() { SN.U.DialogBox.Subscribe($(this)); return false; });
};
$(document).ready(function() {
- if ($('.entity_subscribe .entity_remote_subscribe').length > 0) {
- SN.Init.Subscribe();
- }
+ SN.Init.Subscribe();
});
diff --git a/plugins/OStatus/theme/base/css/ostatus.css b/plugins/OStatus/theme/base/css/ostatus.css
index 9bc90a731..feeeb47d3 100644
--- a/plugins/OStatus/theme/base/css/ostatus.css
+++ b/plugins/OStatus/theme/base/css/ostatus.css
@@ -7,24 +7,42 @@
* @link http://status.net/
*/
-#form_ostatus_connect.dialogbox {
+#form_ostatus_connect.dialogbox,
+#form_ostatus_sub.dialogbox {
width:70%;
background-image:none;
}
-#form_ostatus_connect.dialogbox .form_data label {
+#form_ostatus_sub.dialogbox {
+width:65%;
+}
+#form_ostatus_connect.dialogbox .form_data label,
+#form_ostatus_sub.dialogbox .form_data label {
width:34%;
}
-#form_ostatus_connect.dialogbox .form_data input {
+#form_ostatus_connect.dialogbox .form_data input,
+#form_ostatus_sub.dialogbox .form_data input {
width:57%;
}
-#form_ostatus_connect.dialogbox .form_data .form_guide {
+#form_ostatus_connect.dialogbox .form_data .form_guide,
+#form_ostatus_sub.dialogbox .form_data .form_guide {
margin-left:36%;
}
-#form_ostatus_connect.dialogbox #ostatus_nickname {
+#form_ostatus_connect.dialogbox #ostatus_nickname,
+#form_ostatus_sub.dialogbox #ostatus_nickname {
display:none;
}
-#form_ostatus_connect.dialogbox .submit_dialogbox {
+#form_ostatus_connect.dialogbox .submit_dialogbox,
+#form_ostatus_sub.dialogbox .submit_dialogbox {
min-width:96px;
}
+
+#subscriptions #entity_remote_subscribe {
+padding:0;
+float:right;
+}
+
+#subscriptions .entity_remote_subscribe {
+float:right;
+}