small fixes

This commit is contained in:
Hannes Mannerheim 2015-11-19 18:32:46 +01:00
parent f3161ec32f
commit cff9c53f78
5 changed files with 68 additions and 52 deletions

View File

@ -334,14 +334,7 @@ class QvitterPlugin extends Plugin {
} }
if($user instanceof User) { if($user instanceof User) {
if (common_logged_in()) { header('Qvitter-User-Array: '.json_encode($this->qvitterTwitterUserArray($user->getProfile())));
$profilecurrent = Profile::current();
$currentuser = $profilecurrent->getUser();
header('Qvitter-User-Array: '.json_encode($this->qvitterTwitterUserArray($user->getProfile(),$currentuser)));
}
else {
header('Qvitter-User-Array: '.json_encode($this->qvitterTwitterUserArray($user->getProfile())));
}
} }
} }
break; break;
@ -1096,7 +1089,7 @@ class QvitterPlugin extends Plugin {
} }
function qvitterTwitterUserArray($profile, $logged_in=false) function qvitterTwitterUserArray($profile)
{ {
$twitter_user = array(); $twitter_user = array();
@ -1159,14 +1152,14 @@ class QvitterPlugin extends Plugin {
$twitter_user['following'] = false; $twitter_user['following'] = false;
$twitter_user['statusnet_blocking'] = false; $twitter_user['statusnet_blocking'] = false;
$logged_in_profile = Profile::current(); $logged_in_profile = false;
if ($logged_in) { if(common_logged_in()) {
$twitter_user['following'] = $logged_in->isSubscribed($profile); $logged_in_profile = Profile::current();
$twitter_user['statusnet_blocking'] = $logged_in->hasBlocked($profile);
$logged_in_profile = $logged_in->getProfile(); $twitter_user['following'] = $logged_in_profile->isSubscribed($profile);
$twitter_user['statusnet_blocking'] = $logged_in_profile->hasBlocked($profile);
} }

View File

@ -49,51 +49,51 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
$profileurl = urldecode($this->arg('profileurl')); $profileurl = urldecode($this->arg('profileurl'));
$nickname = urldecode($this->arg('nickname')); $nickname = urldecode($this->arg('nickname'));
$this->profile = new stdClass(); $this->profile = new stdClass();
$this->profile->external = null; $this->profile->external = null;
$this->profile->local = null; $this->profile->local = null;
// we can get urls of two types of urls (1) ://instance/nickname // we can get urls of two types of urls (1) ://instance/nickname
// (2) ://instance/user/1234 // (2) ://instance/user/1234
// //
// in case (1) we have the problem that the html can be outdated, // in case (1) we have the problem that the html can be outdated,
// i.e. the user can have changed her nickname. we also have no idea // i.e. the user can have changed her nickname. we also have no idea
// if it is a multi or single user instance, which forces us to // if it is a multi or single user instance, which forces us to
// guess the api root url. // guess the api root url.
// //
// in case (2) we have another problem: we can't use that url to find // in case (2) we have another problem: we can't use that url to find
// the local profile for the external user, we need url:s of type (2) // the local profile for the external user, we need url:s of type (2)
// for that. so we have to try getting the nickname from the external // for that. so we have to try getting the nickname from the external
// instance first // instance first
// case (2) // case (2)
if(strstr($profileurl, '/user/')) { if(strstr($profileurl, '/user/')) {
$external_user_id = substr($profileurl,strpos($profileurl,'/user/')+6); $external_user_id = substr($profileurl,strpos($profileurl,'/user/')+6);
$external_instance_url = substr($profileurl,0,strpos($profileurl,'/user/')+1); $external_instance_url = substr($profileurl,0,strpos($profileurl,'/user/')+1);
if(!is_numeric($external_user_id)) { if(!is_numeric($external_user_id)) {
return true; return true;
} }
$external_profile = $this->getProfileFromExternalInstance($external_instance_url,$external_user_id); $external_profile = $this->getProfileFromExternalInstance($external_instance_url,$external_user_id);
if(!isset($external_profile->statusnet_profile_url)) { if(!isset($external_profile->statusnet_profile_url)) {
return true; return true;
} }
$this->profile->external = $external_profile; $this->profile->external = $external_profile;
$local_profile = Profile::getKV('profileurl',$external_profile->statusnet_profile_url); $local_profile = Profile::getKV('profileurl',$external_profile->statusnet_profile_url);
if(!$local_profile instanceof Profile) { if(!$local_profile instanceof Profile) {
return true; return true;
} }
$this->profile->local = $this->twitterUserArray($local_profile); $this->profile->local = $this->twitterUserArray($local_profile);
return true; return true;
} }
// case (1) // case (1)
$local_profile = Profile::getKV('profileurl',$profileurl); $local_profile = Profile::getKV('profileurl',$profileurl);
@ -104,21 +104,21 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
$external_instance_url = $local_profile->profileurl; $external_instance_url = $local_profile->profileurl;
} }
// multi user instance // multi user instance
else { else {
$external_instance_url = substr($local_profile->profileurl, 0, strrpos($local_profile->profileurl, '/')); $external_instance_url = substr($local_profile->profileurl, 0, strrpos($local_profile->profileurl, '/'));
} }
$external_profile = $this->getProfileFromExternalInstance($external_instance_url,$local_profile->nickname); $external_profile = $this->getProfileFromExternalInstance($external_instance_url,$local_profile->nickname);
if(!isset($external_profile->statusnet_profile_url)) { if(!isset($external_profile->statusnet_profile_url)) {
return true; return true;
} }
$this->profile->external = $external_profile; $this->profile->external = $external_profile;
$this->profile->local = $this->twitterUserArray($local_profile); $this->profile->local = $this->twitterUserArray($local_profile);
return true; return true;
} }
// if we don't know about this user, or the user has changed nickname // if we don't know about this user, or the user has changed nickname
// if profile url ends with '/' this is probably an unknown single user instance // if profile url ends with '/' this is probably an unknown single user instance
if(substr($profileurl, -1)==='/') { if(substr($profileurl, -1)==='/') {
@ -128,17 +128,17 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
// multi user instance // multi user instance
else { else {
$user_id_or_nickname = substr($profileurl, strrpos($profileurl, '/')+1); $user_id_or_nickname = substr($profileurl, strrpos($profileurl, '/')+1);
$instanceurl = substr($profileurl, 0, strrpos($profileurl, '/')); $instanceurl = substr($profileurl, 0, strrpos($profileurl, '/'));
} }
$external_profile = $this->getProfileFromExternalInstance($instanceurl,$user_id_or_nickname); $external_profile = $this->getProfileFromExternalInstance($instanceurl,$user_id_or_nickname);
if(!isset($external_profile->statusnet_profile_url)) { if(!isset($external_profile->statusnet_profile_url)) {
return true; return true;
} }
$this->profile->external = $external_profile; $this->profile->external = $external_profile;
return true; return true;
} }
/** /**
@ -172,21 +172,21 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
{ {
return true; return true;
} }
/** /**
* Get profile from external instance * Get profile from external instance
* *
* @return null or profile object * @return null or profile object
*/ */
function getProfileFromExternalInstance($instance_url,$user_id_or_nickname) function getProfileFromExternalInstance($instance_url,$user_id_or_nickname)
{ {
$apicall = $instance_url.'/api/users/show.json?id='.$user_id_or_nickname; $apicall = $instance_url.'/api/users/show.json?id='.$user_id_or_nickname;
$client = new HTTPClient(); $client = new HTTPClient();
$response = $client->get($apicall); $response = $client->get($apicall);
// json_decode returns null if it fails to decode // json_decode returns null if it fails to decode
return $response->isOk() ? json_decode($response->getBody()) : null; return $response->isOk() ? json_decode($response->getBody()) : null;
} }
} }

View File

@ -644,7 +644,7 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
// blur any selected links // blur any selected links
$('a').blur(); $('a').blur();
// null any searches // null any pagings
$('#feed-body').removeAttr('data-search-page-number'); $('#feed-body').removeAttr('data-search-page-number');
// remember the most recent stream // remember the most recent stream
@ -844,6 +844,7 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
$('#feed').animate({opacity:'1'},150); // fade in $('#feed').animate({opacity:'1'},150); // fade in
$('.reload-stream').show(); $('.reload-stream').show();
$('#feed-body').removeAttr('data-end-reached'); $('#feed-body').removeAttr('data-end-reached');
$('#feed-body').removeAttr('data-search-page-number');
$('body').removeClass('loading-older');$('body').removeClass('loading-newer'); $('body').removeClass('loading-older');$('body').removeClass('loading-newer');
$('html,body').scrollTop(0); // scroll to top $('html,body').scrollTop(0); // scroll to top
@ -1652,7 +1653,13 @@ function addToFeed(feed, after, extraClasses, isReply) {
if(typeof window.loggedIn.screen_name != 'undefined' // if logged in if(typeof window.loggedIn.screen_name != 'undefined' // if logged in
&& window.loggedIn.id != obj.id) { // not if this is me && window.loggedIn.id != obj.id) { // not if this is me
if(!(obj.statusnet_profile_url.indexOf('/twitter.com/')>-1 && obj.following === false)) { // only unfollow twitter users if(!(obj.statusnet_profile_url.indexOf('/twitter.com/')>-1 && obj.following === false)) { // only unfollow twitter users
var followButton = '<div class="user-actions"><button data-follow-user-id="' + obj.id + '" data-follow-user="' + obj.statusnet_profile_url + '" type="button" class="qvitter-follow-button ' + followingClass + '"><span class="button-text follow-text"><i class="follow"></i>' + window.sL.userFollow + '</span><span class="button-text following-text">' + window.sL.userFollowing + '</span><span class="button-text unfollow-text">' + window.sL.userUnfollow + '</span></button></div>'; var followButton = '<div class="user-actions">\
<button data-follow-user-id="' + obj.id + '" data-follow-user="' + obj.statusnet_profile_url + '" type="button" class="qvitter-follow-button ' + followingClass + '">\
<span class="button-text follow-text"><i class="follow"></i>' + window.sL.userFollow + '</span>\
<span class="button-text following-text">' + window.sL.userFollowing + '</span>\
<span class="button-text unfollow-text">' + window.sL.userUnfollow + '</span>\
</button>\
</div>';
} }
} }

View File

@ -645,17 +645,19 @@ function displayOrHideUnreadNotifications(notifications) {
· ·
· · · · · · · · · · · · · */ · · · · · · · · · · · · · */
function markAllNotificationsAsSeen() { function markAllNotificationsAsSeen(arg,callback) {
display_spinner(); display_spinner();
getFromAPI('qvitter/mark_all_notifications_as_seen.json',function(data){ getFromAPI('qvitter/mark_all_notifications_as_seen.json',function(data){
if(data === false) { if(data === false) {
showErrorMessage(window.sL.ERRORfailedMarkingAllNotificationsAsRead); showErrorMessage(window.sL.ERRORfailedMarkingAllNotificationsAsRead);
callback(true);
} }
else { else {
helloAPI(function(){ helloAPI(function(){
$('.not-seen-disc').remove(); $('.not-seen-disc').remove();
$('#new-queets-bar').trigger('click'); // show any hidden notifications (this will also remove the dropdown menu) $('#new-queets-bar').trigger('click'); // show any hidden notifications (this will also remove the dropdown menu)
remove_spinner(); remove_spinner();
callback(true);
}); });
} }
}); });

View File

@ -1150,6 +1150,16 @@ $('body').on('click',function(e){
· · · · · · · · · · · · · */ · · · · · · · · · · · · · */
$('body').on('click','.row-type-function',function(e){ $('body').on('click','.row-type-function',function(e){
var thisFunctionRow = $(this);
// don't invoke the function again if it's not finished last time
if(thisFunctionRow.hasClass('clicked')) {
return true;
}
thisFunctionRow.addClass('clicked');
var functionName = $(this).attr('data-function-name'); var functionName = $(this).attr('data-function-name');
if($(this).attr('data-function-arguments') == 'undefined') { if($(this).attr('data-function-arguments') == 'undefined') {
var functionArguments = false; var functionArguments = false;
@ -1157,7 +1167,11 @@ $('body').on('click','.row-type-function',function(e){
else { else {
var functionArguments = JSON.parse($(this).attr('data-function-arguments')); var functionArguments = JSON.parse($(this).attr('data-function-arguments'));
} }
window[functionName](functionArguments); window[functionName](functionArguments, function(success){
if(success) {
thisFunctionRow.removeClass('clicked');
}
});
}); });