Merge branch '0.8.x' of git@gitorious.org:statusnet/mainline into 0.8.x
This commit is contained in:
commit
0fa2bbe581
@ -136,6 +136,11 @@ class TwitapistatusesAction extends TwitterapiAction
|
||||
|
||||
}
|
||||
|
||||
function home_timeline($args, $apidata)
|
||||
{
|
||||
call_user_func(array($this, 'friends_timeline'), $args, $apidata);
|
||||
}
|
||||
|
||||
function user_timeline($args, $apidata)
|
||||
{
|
||||
parent::handle($args);
|
||||
|
@ -120,11 +120,15 @@ class User extends Memcached_DataObject
|
||||
function allowed_nickname($nickname)
|
||||
{
|
||||
// XXX: should already be validated for size, content, etc.
|
||||
static $blacklist = array('rss', 'xrds', 'doc', 'main',
|
||||
'settings', 'notice', 'user',
|
||||
'search', 'avatar', 'tag', 'tags',
|
||||
'api', 'message', 'group', 'groups',
|
||||
'local');
|
||||
|
||||
$blacklist = array();
|
||||
|
||||
//all directory and file names should be blacklisted
|
||||
$d = dir(INSTALLDIR);
|
||||
while (false !== ($entry = $d->read())) {
|
||||
$blacklist[]=$entry;
|
||||
}
|
||||
$d->close();
|
||||
$merged = array_merge($blacklist, common_config('nickname', 'blacklist'));
|
||||
return !in_array($nickname, $merged);
|
||||
}
|
||||
|
@ -418,9 +418,17 @@ class NoticeListItem extends Widget
|
||||
|
||||
function showContext()
|
||||
{
|
||||
// XXX: also show context if there are replies to this notice
|
||||
if (!empty($this->notice->conversation)
|
||||
&& $this->notice->conversation != $this->notice->id) {
|
||||
$hasConversation = false;
|
||||
if( !empty($this->notice->conversation)
|
||||
&& $this->notice->conversation != $this->notice->id){
|
||||
$hasConversation = true;
|
||||
}else{
|
||||
$conversation = Notice::conversationStream($this->notice->id, 1, 1);
|
||||
if($conversation->N > 0){
|
||||
$hasConversation = true;
|
||||
}
|
||||
}
|
||||
if ($hasConversation){
|
||||
$convurl = common_local_url('conversation',
|
||||
array('id' => $this->notice->conversation));
|
||||
$this->out->element('a', array('href' => $convurl.'#notice-'.$this->notice->id,
|
||||
|
@ -272,12 +272,12 @@ class Router
|
||||
$m->connect('api/statuses/:method',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'statuses'),
|
||||
array('method' => '(public_timeline|friends_timeline|user_timeline|update|replies|mentions|show|friends|followers|featured)(\.(atom|rss|xml|json))?'));
|
||||
array('method' => '(public_timeline|home_timeline|friends_timeline|user_timeline|update|replies|mentions|show|friends|followers|featured)(\.(atom|rss|xml|json))?'));
|
||||
|
||||
$m->connect('api/statuses/:method/:argument',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'statuses'),
|
||||
array('method' => '(|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
array('method' => '(user_timeline|home_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
|
||||
// users
|
||||
|
||||
@ -436,7 +436,7 @@ class Router
|
||||
$m->connect('api/statuses/:method/:argument',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'statuses'),
|
||||
array('method' => '(|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
array('method' => '(user_timeline|home_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
|
||||
$m->connect('api/statusnet/groups/:method/:argument',
|
||||
array('action' => 'api',
|
||||
|
@ -1,5 +1,7 @@
|
||||
Autocomplete allows users to autocomplete screen names in @ replies. When an "@" is typed into the notice text area, an autocomplete box is displayed populated with the user's friends' screen names.
|
||||
|
||||
Note: This plugin doesn't work if the site is in Private mode, i.e. when $config['site']['private'] is set to true.
|
||||
|
||||
Installation
|
||||
============
|
||||
Add "addPlugin('Autocomplete');" to the bottom of your config.php
|
||||
|
@ -40,7 +40,7 @@ class InfiniteScrollPlugin extends Plugin
|
||||
|
||||
function onEndShowScripts($action)
|
||||
{
|
||||
$action->script('plugins/InfiniteScroll/jquery.infinitescroll.min.js');
|
||||
$action->script('plugins/InfiniteScroll/jquery.infinitescroll.js');
|
||||
$action->script('plugins/InfiniteScroll/infinitescroll.js');
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
jQuery(document).ready(function($){
|
||||
$('notices_primary').infinitescroll({
|
||||
debug: true,
|
||||
infiniteScroll : false,
|
||||
nextSelector : "li.nav_next a",
|
||||
loadingImg : $('address .url')[0].href+'plugins/InfiniteScroll/ajax-loader.gif',
|
||||
text : "<em>Loading the next set of posts...</em>",
|
||||
@ -12,4 +13,3 @@ jQuery(document).ready(function($){
|
||||
NoticeAttachments();
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -92,14 +92,14 @@
|
||||
|
||||
if (props.isDuringAjax || props.isInvalidPage || props.isDone) return;
|
||||
|
||||
if ( !isNearBottom(opts,props) ) return;
|
||||
if ( opts.infiniteScroll && !isNearBottom(opts,props) ) return;
|
||||
|
||||
// we dont want to fire the ajax multiple times
|
||||
props.isDuringAjax = true;
|
||||
|
||||
// show the loading message and hide the previous/next links
|
||||
props.loadingMsg.appendTo( opts.contentSelector ).show();
|
||||
$( opts.navSelector ).hide();
|
||||
if(opts.infiniteScroll) $( opts.navSelector ).hide();
|
||||
|
||||
// increment the URL bit. e.g. /page/3/
|
||||
props.currPage++;
|
||||
@ -205,10 +205,19 @@
|
||||
}
|
||||
});
|
||||
|
||||
// bind scroll handler to element (if its a local scroll) or window
|
||||
$(opts.localMode ? this : window)
|
||||
.bind('scroll.infscr', function(){ infscrSetup(path,opts,props,callback); } )
|
||||
.trigger('scroll.infscr'); // trigger the event, in case it's a short page
|
||||
if(opts.infiniteScroll){
|
||||
// bind scroll handler to element (if its a local scroll) or window
|
||||
$(opts.localMode ? this : window)
|
||||
.bind('scroll.infscr', function(){ infscrSetup(path,opts,props,callback); } )
|
||||
.trigger('scroll.infscr'); // trigger the event, in case it's a short page
|
||||
}else{
|
||||
$(opts.nextSelector).click(
|
||||
function(){
|
||||
infscrSetup(path,opts,props,callback);
|
||||
return false;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return this;
|
||||
@ -222,6 +231,7 @@
|
||||
$.infinitescroll = {
|
||||
defaults : {
|
||||
debug : false,
|
||||
infiniteScroll : true,
|
||||
preload : false,
|
||||
nextSelector : "div.navigation a:first",
|
||||
loadingImg : "http://www.infinite-scroll.com/loading.gif",
|
||||
|
Loading…
Reference in New Issue
Block a user