Merge branch '0.8.x' into twitter-import
@ -59,7 +59,7 @@ class AccesstokenAction extends Action
|
||||
try {
|
||||
common_debug('getting request from env variables', __FILE__);
|
||||
common_remove_magic_from_request();
|
||||
$req = OAuthRequest::from_request();
|
||||
$req = OAuthRequest::from_request('POST', common_locale_url('accesstoken'));
|
||||
common_debug('getting a server', __FILE__);
|
||||
$server = omb_oauth_server();
|
||||
common_debug('fetching the access token', __FILE__);
|
||||
|
@ -25,7 +25,7 @@ require_once INSTALLDIR.'/lib/feedlist.php';
|
||||
|
||||
class AllAction extends ProfileAction
|
||||
{
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -69,6 +69,17 @@ class AllAction extends ProfileAction
|
||||
sprintf(_('Feed for friends of %s (Atom)'), $this->user->nickname)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'all', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
function showLocalNav()
|
||||
{
|
||||
$nav = new PersonalGroupNav($this);
|
||||
|
@ -134,8 +134,8 @@ class ApiAction extends Action
|
||||
'favorites/favorites');
|
||||
|
||||
$fullname = "$this->api_action/$this->api_method";
|
||||
|
||||
// If the site is "private", all API methods except laconica/config
|
||||
|
||||
// If the site is "private", all API methods except laconica/config
|
||||
// need authentication
|
||||
if (common_config('site', 'private')) {
|
||||
return $fullname != 'laconica/config' || false;
|
||||
@ -180,11 +180,11 @@ class ApiAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
# NOTE: before handle(), can't use $this->arg
|
||||
$apiaction = $_REQUEST['apiaction'];
|
||||
$method = $_REQUEST['method'];
|
||||
$apiaction = $args['apiaction'];
|
||||
$method = $args['method'];
|
||||
|
||||
list($cmdtext, $fmt) = explode('.', $method);
|
||||
|
||||
static $write_methods = array(
|
||||
@ -207,5 +207,4 @@ class ApiAction extends Action
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ class AvatarbynicknameAction extends Action
|
||||
common_redirect($url, 302);
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -383,7 +383,7 @@ class AvatarsettingsAction extends AccountSettingsAction
|
||||
{
|
||||
parent::showStylesheets();
|
||||
$jcropStyle =
|
||||
common_path('theme/default/base/css/jquery.Jcrop.css?version='.LACONICA_VERSION);
|
||||
common_path('theme/base/css/jquery.Jcrop.css?version='.LACONICA_VERSION);
|
||||
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
|
@ -196,7 +196,7 @@ class DesignsettingsAction extends AccountSettingsAction
|
||||
{
|
||||
parent::showStylesheets();
|
||||
$farbtasticStyle =
|
||||
common_path('theme/default/base/css/farbtastic.css?version='.LACONICA_VERSION);
|
||||
common_path('theme/base/css/farbtastic.css?version='.LACONICA_VERSION);
|
||||
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
|
@ -108,7 +108,7 @@ class DocAction extends Action
|
||||
return ucfirst($this->title);
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ class FavoritedAction extends Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -221,4 +221,15 @@ class FavoritedAction extends Action
|
||||
$this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE,
|
||||
$this->page, 'favorited');
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'favorited');
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ class FeaturedAction extends Action
|
||||
{
|
||||
var $page = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ class FinishremotesubscribeAction extends Action
|
||||
common_debug('stored request: '.print_r($omb,true), __FILE__);
|
||||
|
||||
common_remove_magic_from_request();
|
||||
$req = OAuthRequest::from_request();
|
||||
$req = OAuthRequest::from_request('POST', common_local_url('finishuserauthorization'));
|
||||
|
||||
$token = $req->get_parameter('oauth_token');
|
||||
|
||||
|
@ -25,7 +25,7 @@ define('BOTH', 0);
|
||||
|
||||
class FoafAction extends Action
|
||||
{
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ class GroupbyidAction extends Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ class GroupmembersAction extends Action
|
||||
{
|
||||
var $page = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -137,4 +137,15 @@ class GroupmembersAction extends Action
|
||||
$this->page, 'groupmembers',
|
||||
array('nickname' => $this->group->nickname));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'groupmembers', array('nickname' => $this->group->nickname));
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class groupRssAction extends Rss10Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ class GroupsAction extends Action
|
||||
var $page = null;
|
||||
var $profile = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -129,4 +129,15 @@ class GroupsAction extends Action
|
||||
$gbm = new GroupsByMembersSection($this);
|
||||
$gbm->show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'groups', array('nickname' => $this->group->nickname));
|
||||
}
|
||||
}
|
||||
|
@ -63,6 +63,17 @@ class InboxAction extends MailboxAction
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'inbox', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the messages for this user and this page
|
||||
*
|
||||
|
@ -27,7 +27,7 @@ class InviteAction extends Action
|
||||
var $subbed = null;
|
||||
var $sent = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ class LoginAction extends Action
|
||||
* @return boolean false
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class LogoutAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ class MicrosummaryAction extends Action
|
||||
print $user->nickname . ': ' . $notice->content;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -184,11 +184,13 @@ class SearchNoticeListItem extends NoticeListItem {
|
||||
function highlight($text, $terms)
|
||||
{
|
||||
/* Highligh search terms */
|
||||
$pattern = '/('.implode('|', array_map('htmlspecialchars', $terms)).')/i';
|
||||
$options = implode('|', array_map('preg_quote', array_map('htmlspecialchars', $terms),
|
||||
array_fill(0, sizeof($terms), '/')));
|
||||
$pattern = "/($options)/i";
|
||||
$result = preg_replace($pattern, '<strong>\\1</strong>', $text);
|
||||
|
||||
/* Remove highlighting from inside links, loop incase multiple highlights in links */
|
||||
$pattern = '/(href="[^"]*)<strong>('.implode('|', array_map('htmlspecialchars', $terms)).')<\/strong>([^"]*")/iU';
|
||||
$pattern = '/(href="[^"]*)<strong>('.$options.')<\/strong>([^"]*")/iU';
|
||||
do {
|
||||
$result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count);
|
||||
} while ($count);
|
||||
|
@ -92,7 +92,7 @@ class NoticesearchrssAction extends Rss10Action
|
||||
return null;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ class NudgeAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ class OpensearchAction extends Action
|
||||
$this->endXML();
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -62,6 +62,17 @@ class OutboxAction extends MailboxAction
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'outbox', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieve the messages for this user and this page
|
||||
*
|
||||
|
@ -28,7 +28,7 @@ class PostnoticeAction extends Action
|
||||
parent::handle($args);
|
||||
try {
|
||||
common_remove_magic_from_request();
|
||||
$req = OAuthRequest::from_request();
|
||||
$req = OAuthRequest::from_request('POST', common_local_url('postnotice'));
|
||||
# Note: server-to-server function!
|
||||
$server = omb_oauth_server();
|
||||
list($consumer, $token) = $server->verify_request($req);
|
||||
|
@ -56,7 +56,7 @@ class PublicAction extends Action
|
||||
|
||||
var $page = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -135,6 +135,17 @@ class PublicAction extends Action
|
||||
_('Public Stream Feed (Atom)')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'public');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extra head elements
|
||||
*
|
||||
|
@ -102,7 +102,7 @@ class PublicrssAction extends Rss10Action
|
||||
// nop
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ define('TAGS_PER_PAGE', 100);
|
||||
|
||||
class PublictagcloudAction extends Action
|
||||
{
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ class PublicxrdsAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -138,6 +138,17 @@ class RepliesAction extends Action
|
||||
return array(new Feed(Feed::RSS1, $rssurl, $rsstitle));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'replies', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
/**
|
||||
* show the personal group nav
|
||||
*
|
||||
@ -196,7 +207,7 @@ class RepliesAction extends Action
|
||||
$this->elementEnd('div');
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ class RepliesrssAction extends Rss10Action
|
||||
return ($avatar) ? $avatar->url : null;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class RequesttokenAction extends Action
|
||||
*
|
||||
* @return boolean false
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -69,7 +69,7 @@ class RequesttokenAction extends Action
|
||||
parent::handle($args);
|
||||
try {
|
||||
common_remove_magic_from_request();
|
||||
$req = OAuthRequest::from_request();
|
||||
$req = OAuthRequest::from_request('POST', common_local_url('requesttoken'));
|
||||
$server = omb_oauth_server();
|
||||
$token = $server->fetch_request_token($req);
|
||||
print $token;
|
||||
|
@ -58,7 +58,7 @@ class ShowfavoritesAction extends Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -150,6 +150,18 @@ class ShowfavoritesAction extends Action
|
||||
return array(new Feed(Feed::RSS1, $feedurl, $feedtitle));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'showfavorites', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* show the personal group nav
|
||||
*
|
||||
|
@ -60,7 +60,7 @@ class ShowgroupAction extends Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -311,6 +311,17 @@ class ShowgroupAction extends Action
|
||||
$this->group->nickname)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'showgroup', array('nickname' => $this->group->nickname));
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill in the sidebar.
|
||||
*
|
||||
|
@ -177,7 +177,7 @@ class ShowmessageAction extends MailboxAction
|
||||
return '';
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ class ShownoticeAction extends Action
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ require_once INSTALLDIR.'/lib/feedlist.php';
|
||||
|
||||
class ShowstreamAction extends ProfileAction
|
||||
{
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -135,6 +135,17 @@ class ShowstreamAction extends ProfileAction
|
||||
sprintf(_('FOAF for %s'), $this->user->nickname)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'showstream', array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
function extraHead()
|
||||
{
|
||||
// for remote subscriptions etc.
|
||||
|
@ -130,7 +130,7 @@ class SubscribersList extends ProfileList
|
||||
$bf->show();
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ class SupAction extends Action
|
||||
return $updates;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -45,6 +45,13 @@ class TagAction extends Action
|
||||
return true;
|
||||
}
|
||||
|
||||
function showSections()
|
||||
{
|
||||
$pop = new PopularNoticeSection($this);
|
||||
$pop->show();
|
||||
}
|
||||
|
||||
|
||||
function title()
|
||||
{
|
||||
if ($this->page == 1) {
|
||||
@ -70,6 +77,17 @@ class TagAction extends Action
|
||||
sprintf(_('Feed for tag %s'), $this->tag)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output document relationship links
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
$this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
|
||||
$this->page, 'tag', array('tag' => $this->tag));
|
||||
}
|
||||
|
||||
function showPageNotice()
|
||||
{
|
||||
return sprintf(_('Messages tagged "%s", most recent first'), $this->tag);
|
||||
@ -87,7 +105,7 @@ class TagAction extends Action
|
||||
$this->page, 'tag', array('tag' => $this->tag));
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ class TagrssAction extends Rss10Action
|
||||
return $c;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ class TwitapisearchjsonAction extends TwitterapiAction
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ class UpdateprofileAction extends Action
|
||||
parent::handle($args);
|
||||
try {
|
||||
common_remove_magic_from_request();
|
||||
$req = OAuthRequest::from_request();
|
||||
$req = OAuthRequest::from_request('POST', common_local_url('updateprofile'));
|
||||
# Note: server-to-server function!
|
||||
$server = omb_oauth_server();
|
||||
list($consumer, $token) = $server->verify_request($req);
|
||||
|
@ -50,7 +50,7 @@ class UserbyidAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class UsergroupsAction extends Action
|
||||
var $page = null;
|
||||
var $profile = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ class UserrssAction extends Rss10Action
|
||||
parent::initRss($limit);
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class XrdsAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ $config['site']['server'] = 'localhost';
|
||||
$config['site']['path'] = 'laconica';
|
||||
#$config['site']['fancy'] = false;
|
||||
#$config['site']['theme'] = 'default';
|
||||
#$config['site']['skin'] = 'default';
|
||||
#To enable the built-in mobile style sheet, defaults to false.
|
||||
#$config['site']['mobile'] = true;
|
||||
#For contact email, defaults to $_SERVER["SERVER_ADMIN"]
|
||||
|
@ -1,29 +1,28 @@
|
||||
INSERT INTO notice_source
|
||||
(code, name, url, created)
|
||||
VALUES
|
||||
('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()),
|
||||
('Facebook','Facebook','http://apps.facebook.com/identica/', now()),
|
||||
('Gwibber','Gwibber','http://launchpad.net/gwibber', now()),
|
||||
('HelloTxt','HelloTxt','http://hellotxt.com/', now()),
|
||||
('IdentiFox','IdentiFox','http://www.bitbucket.org/uncryptic/identifox/', now()),
|
||||
('LaTwit','LaTwit','http://latwit.mac65.com/', now()),
|
||||
('Nambu','Nambu','http://www.nambu.com/', now()),
|
||||
('Pikchur','Pikchur','http://www.pikchur.com/', now()),
|
||||
('Ping.fm','Ping.fm','http://ping.fm/', now()),
|
||||
('Twidge','Twidge','http://software.complete.org/twidge', now()),
|
||||
('Updating.Me','Updating.Me','http://updating.me/', now()),
|
||||
('adium', 'Adium', 'http://www.adiumx.com/', now()),
|
||||
('betwittered','BeTwittered','http://www.32hours.com/betwitteredinfo/', now()),
|
||||
('bti','bti','http://gregkh.github.com/bti/', now()),
|
||||
('cliqset', 'Cliqset', 'http://www.cliqset.com/', now()),
|
||||
('deskbar','Deskbar-Applet','http://www.gnome.org/projects/deskbar-applet/', now()),
|
||||
('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()),
|
||||
('Facebook','Facebook','http://apps.facebook.com/identica/', now()),
|
||||
('Gwibber','Gwibber','http://launchpad.net/gwibber', now()),
|
||||
('HelloTxt','HelloTxt','http://hellotxt.com/', now()),
|
||||
('identicatools','Laconica Tools','http://bitbucketlabs.net/laconica-tools/', now()),
|
||||
('identichat','identichat','http://identichat.prosody.im/', now()),
|
||||
('IdentiFox','IdentiFox','http://www.bitbucket.org/uncryptic/identifox/', now()),
|
||||
('identitwitch','IdentiTwitch','http://richfish.org/identitwitch/', now()),
|
||||
('LaTwit','LaTwit','http://latwit.mac65.com/', now()),
|
||||
('maisha', 'Maisha', 'http://maisha.grango.org/', now()),
|
||||
('mbpidgin','mbpidgin','http://code.google.com/p/microblog-purple/', now()),
|
||||
('Mobidentica', 'Mobidentica', 'http://www.substanceofcode.com/software/mobidentica/', now()),
|
||||
('moconica','Moconica','http://moconica.com/', now()),
|
||||
('nambu','Nambu','http://www.nambu.com/', now()),
|
||||
('peoplebrowsr', 'PeopleBrowsr', 'http://www.peoplebrowsr.com/', now()),
|
||||
('Pikchur','Pikchur','http://www.pikchur.com/', now()),
|
||||
('Ping.fm','Ping.fm','http://ping.fm/', now()),
|
||||
('pocketwit','PockeTwit','http://code.google.com/p/pocketwit/', now()),
|
||||
('posty','Posty','http://spreadingfunkyness.com/posty/', now()),
|
||||
('royalewithcheese','Royale With Cheese','http://p.hellyeah.org/', now()),
|
||||
@ -35,9 +34,11 @@ VALUES
|
||||
('tarpipe','tarpipe','http://tarpipe.com/', now()),
|
||||
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
|
||||
('tr.im','tr.im','http://tr.im/', now()),
|
||||
('triklepost', 'Tricklepost', 'http://github.com/zcopley/tricklepost/tree/master', now()),
|
||||
('tweenky','Tweenky','http://beta.tweenky.com/', now()),
|
||||
('twhirl','Twhirl','http://www.twhirl.org/', now()),
|
||||
('twibble','twibble','http://www.twibble.de/', now()),
|
||||
('Twidge','Twidge','http://software.complete.org/twidge', now()),
|
||||
('twidge','Twidge','http://software.complete.org/twidge', now()),
|
||||
('twidroid','twidroid','http://www.twidroid.com/', now()),
|
||||
('twittelator','Twittelator','http://www.stone.com/iPhone/Twittelator/', now()),
|
||||
@ -47,6 +48,6 @@ VALUES
|
||||
('twittertools','Twitter Tools','http://wordpress.org/extend/plugins/twitter-tools/', now()),
|
||||
('twitux','Twitux','http://live.gnome.org/DanielMorales/Twitux', now()),
|
||||
('twitvim','TwitVim','http://vim.sourceforge.net/scripts/script.php?script_id=2204', now()),
|
||||
('Updating.Me','Updating.Me','http://updating.me/', now()),
|
||||
('urfastr','urfastr','http://urfastr.net/', now()),
|
||||
('adium', 'Adium', 'http://www.adiumx.com/', now()),
|
||||
('yatca','Yatca','http://www.yatca.com/', now());
|
||||
|
@ -128,7 +128,7 @@ function main()
|
||||
|
||||
// XXX: find somewhere for this little block to live
|
||||
|
||||
if (common_config('db', 'mirror') && $action_obj->isReadOnly()) {
|
||||
if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) {
|
||||
if (is_array(common_config('db', 'mirror'))) {
|
||||
// "load balancing", ha ha
|
||||
$arr = common_config('db', 'mirror');
|
||||
|
42
install.php
@ -1,4 +1,22 @@
|
||||
<?
|
||||
<?php
|
||||
/**
|
||||
* Laconica - a distributed open-source microblogging tool
|
||||
* Copyright (C) 2009, Controlez-Vous, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
define('INSTALLDIR', dirname(__FILE__));
|
||||
|
||||
function main()
|
||||
@ -19,12 +37,12 @@ function checkPrereqs()
|
||||
{
|
||||
if (file_exists(INSTALLDIR.'/config.php')) {
|
||||
?><p class="error">Config file "config.php" already exists.</p>
|
||||
<?
|
||||
<?php
|
||||
return false;
|
||||
}
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
|
||||
?><p class="error">Require PHP version 5 or greater.</p><?
|
||||
?><p class="error">Require PHP version 5 or greater.</p><?php
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -34,23 +52,23 @@ function checkPrereqs()
|
||||
|
||||
foreach ($reqs as $req) {
|
||||
if (!checkExtension($req)) {
|
||||
?><p class="error">Cannot load required extension "<?= $req ?>".</p><?
|
||||
?><p class="error">Cannot load required extension "<?php echo $req; ?>".</p><?php
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_writable(INSTALLDIR)) {
|
||||
?><p class="error">Cannot write config file to "<?= INSTALLDIR ?>".</p>
|
||||
?><p class="error">Cannot write config file to "<?php echo INSTALLDIR; ?>".</p>
|
||||
<p>On your server, try this command:</p>
|
||||
<blockquote>chmod a+w <?= INSTALLDIR ?></blockquote>
|
||||
<?
|
||||
<blockquote>chmod a+w <?php echo INSTALLDIR; ?></blockquote>
|
||||
<?php
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!is_writable(INSTALLDIR.'/avatar/')) {
|
||||
?><p class="error">Cannot write avatar directory "<?= INSTALLDIR ?>/avatar/".</p>
|
||||
?><p class="error">Cannot write avatar directory "<?php echo INSTALLDIR; ?>/avatar/".</p>
|
||||
<p>On your server, try this command:</p>
|
||||
<blockquote>chmod a+w <?= INSTALLDIR ?>/avatar/</blockquote>
|
||||
<blockquote>chmod a+w <?php echo INSTALLDIR; ?>/avatar/</blockquote>
|
||||
<?
|
||||
return false;
|
||||
}
|
||||
@ -211,7 +229,7 @@ function handlePost()
|
||||
function writeConf($sitename, $sqlUrl)
|
||||
{
|
||||
$res = file_put_contents(INSTALLDIR.'/config.php',
|
||||
"<?\n".
|
||||
"<?php\n".
|
||||
"\$config['site']['name'] = \"$sitename\";\n\n".
|
||||
"\$config['db']['database'] = \"$sqlUrl\";\n\n");
|
||||
return $res;
|
||||
@ -247,9 +265,9 @@ function runDbScript($filename, $conn)
|
||||
<div id="core">
|
||||
<div id="content">
|
||||
<h1>Install Laconica</h1>
|
||||
<? main() ?>
|
||||
<?php main(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
@ -124,6 +124,7 @@ class Action extends HTMLOutputter // lawsuit
|
||||
$this->showShortcutIcon();
|
||||
$this->showStylesheets();
|
||||
$this->showScripts();
|
||||
$this->showRelationshipLinks();
|
||||
$this->showOpenSearch();
|
||||
$this->showFeeds();
|
||||
$this->showDescription();
|
||||
@ -194,37 +195,33 @@ class Action extends HTMLOutputter // lawsuit
|
||||
if (Event::handle('StartShowLaconicaStyles', array($this))) {
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => theme_path('base/css/display.css') . '?version=' . LACONICA_VERSION,
|
||||
'media' => 'screen, projection, tv'));
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => skin_path('css/display.css') . '?version=' . LACONICA_VERSION,
|
||||
'href' => theme_path('css/display.css', null) . '?version=' . LACONICA_VERSION,
|
||||
'media' => 'screen, projection, tv'));
|
||||
if (common_config('site', 'mobile')) {
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => theme_path('base/css/mobile.css') . '?version=' . LACONICA_VERSION,
|
||||
'href' => theme_path('css/mobile.css', 'base') . '?version=' . LACONICA_VERSION,
|
||||
// TODO: "handheld" CSS for other mobile devices
|
||||
'media' => 'only screen and (max-device-width: 480px)')); // Mobile WebKit
|
||||
}
|
||||
$this->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => theme_path('base/css/print.css') . '?version=' . LACONICA_VERSION,
|
||||
'href' => theme_path('css/print.css', 'base') . '?version=' . LACONICA_VERSION,
|
||||
'media' => 'print'));
|
||||
Event::handle('EndShowLaconicaStyles', array($this));
|
||||
}
|
||||
if (Event::handle('StartShowUAStyles', array($this))) {
|
||||
$this->comment('[if IE]><link rel="stylesheet" type="text/css" '.
|
||||
'href="'.theme_path('base/css/ie.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
'href="'.theme_path('css/ie.css', 'base').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
foreach (array(6,7) as $ver) {
|
||||
if (file_exists(theme_file('base/css/ie'.$ver.'.css'))) {
|
||||
if (file_exists(theme_file('css/ie'.$ver.'.css', 'base'))) {
|
||||
// Yes, IE people should be put in jail.
|
||||
$this->comment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '.
|
||||
'href="'.theme_path('base/css/ie'.$ver.'.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
'href="'.theme_path('css/ie'.$ver.'.css', 'base').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
}
|
||||
}
|
||||
$this->comment('[if IE]><link rel="stylesheet" type="text/css" '.
|
||||
'href="'.skin_path('css/ie.css').'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
'href="'.theme_path('css/ie.css', null).'?version='.LACONICA_VERSION.'" /><![endif]');
|
||||
Event::handle('EndShowUAStyles', array($this));
|
||||
}
|
||||
Event::handle('EndShowStyles', array($this));
|
||||
@ -264,6 +261,19 @@ class Action extends HTMLOutputter // lawsuit
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show document relationship links
|
||||
*
|
||||
* SHOULD overload
|
||||
*
|
||||
* @return nothing
|
||||
*/
|
||||
function showRelationshipLinks()
|
||||
{
|
||||
// output <link> elements with appropriate HTML4.01 link types:
|
||||
// http://www.w3.org/TR/html401/types.html#type-links
|
||||
}
|
||||
|
||||
/**
|
||||
* Show OpenSearch headers
|
||||
*
|
||||
@ -791,9 +801,12 @@ class Action extends HTMLOutputter // lawsuit
|
||||
*
|
||||
* MAY override
|
||||
*
|
||||
* @param array $args other arguments
|
||||
*
|
||||
* @return boolean is read only action?
|
||||
*/
|
||||
function isReadOnly()
|
||||
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -1041,4 +1054,36 @@ class Action extends HTMLOutputter // lawsuit
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate document metadata for sequential navigation
|
||||
*
|
||||
* @param boolean $have_before is there something before?
|
||||
* @param boolean $have_after is there something after?
|
||||
* @param integer $page current page
|
||||
* @param string $action current action
|
||||
* @param array $args rest of query arguments
|
||||
*
|
||||
* @return nothing
|
||||
*/
|
||||
function sequenceRelationships($have_next, $have_previous, $page, $action, $args=null)
|
||||
{
|
||||
// Outputs machine-readable pagination in <link> elements.
|
||||
// Pattern taken from $this->pagination() method.
|
||||
|
||||
// "next" is equivalent to "after"
|
||||
if ($have_next) {
|
||||
$pargs = array('page' => $page-1);
|
||||
$this->element('link', array('rel' => 'next',
|
||||
'href' => common_local_url($action, $args, $pargs),
|
||||
'title' => _('Next')));
|
||||
}
|
||||
// "previous" is equivalent to "before"
|
||||
if ($have_previous=true) { // FIXME
|
||||
$pargs = array('page' => $page+1);
|
||||
$this->element('link', array('rel' => 'prev',
|
||||
'href' => common_local_url($action, $args, $pargs),
|
||||
'title' => _('Previous')));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ class ErrorAction extends Action
|
||||
return $this->message;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ class GalleryAction extends Action
|
||||
return true;
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ class ResultItem
|
||||
$this->profile_image_url = ($avatar) ?
|
||||
$avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE);
|
||||
|
||||
$this->created_at = date('r', $this->notice->created);
|
||||
$this->created_at = common_date_rfc2822($this->notice->created);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -67,7 +67,7 @@ class PeopleSearchResults extends ProfileList
|
||||
return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text));
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ class PersonalAction extends Action
|
||||
|
||||
var $user = null;
|
||||
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -50,17 +50,26 @@ class PopularNoticeSection extends NoticeSection
|
||||
{
|
||||
if (common_config('db', 'type') == 'pgsql') {
|
||||
$weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
|
||||
if (!empty($this->out->tag)) {
|
||||
$tag = pg_escape_string($this->tag);
|
||||
}
|
||||
} else {
|
||||
$weightexpr='sum(exp(-(now() - fave.modified) / %s))';
|
||||
if (!empty($this->out->tag)) {
|
||||
$tag = mysql_escape_string($this->out->tag);
|
||||
}
|
||||
}
|
||||
|
||||
$qry = 'SELECT notice.*, '.
|
||||
$weightexpr . ' as weight ' .
|
||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||
'GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
||||
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
||||
'notice.reply_to,notice.is_local,notice.source ' .
|
||||
'ORDER BY weight DESC';
|
||||
$qry = "SELECT notice.*, $weightexpr as weight ";
|
||||
if(isset($tag)) {
|
||||
$qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||
"WHERE notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag";
|
||||
} else {
|
||||
$qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id';
|
||||
}
|
||||
$qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
||||
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
||||
'notice.reply_to,notice.is_local,notice.source ' .
|
||||
'ORDER BY weight DESC';
|
||||
|
||||
$offset = 0;
|
||||
$limit = NOTICES_PER_SECTION + 1;
|
||||
|
@ -179,6 +179,11 @@ class ProfileAction extends Action
|
||||
$this->element('h2', null, _('Statistics'));
|
||||
|
||||
// Other stats...?
|
||||
$this->elementStart('dl', 'entity_user-id');
|
||||
$this->element('dt', null, _('User ID'));
|
||||
$this->element('dd', null, $this->profile->id);
|
||||
$this->elementEnd('dl');
|
||||
|
||||
$this->elementStart('dl', 'entity_member-since');
|
||||
$this->element('dt', null, _('Member since'));
|
||||
$this->element('dd', null, date('j M Y',
|
||||
|
@ -51,7 +51,7 @@ class SearchAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
function isReadOnly()
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ class LinkbackPlugin extends Plugin
|
||||
|
||||
if (array_key_exists('X-Pingback', $result->headers)) {
|
||||
$pb = $result->headers['X-Pingback'];
|
||||
} else if (preg_match('/<link rel="pingback" href="([^"]+)" ?/?>/',
|
||||
} else if (preg_match('/<link rel="pingback" href="([^"]+)" ?\/?>/',
|
||||
$result->body,
|
||||
$match)) {
|
||||
$pb = $match[1];
|
||||
|
83
scripts/triminboxes.php
Normal file
@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
* Laconica - a distributed open-source microblogging tool
|
||||
* Copyright (C) 2009, Control Yourself, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
# Abort if called from a web server
|
||||
if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
|
||||
print "This script must be run from the command line\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ini_set("max_execution_time", "0");
|
||||
ini_set("max_input_time", "0");
|
||||
set_time_limit(0);
|
||||
mb_internal_encoding('UTF-8');
|
||||
|
||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||
define('LACONICA', true);
|
||||
|
||||
require_once(INSTALLDIR . '/lib/common.php');
|
||||
|
||||
$user = new User();
|
||||
if ($argc > 1) {
|
||||
$user->whereAdd('id > ' . $argv[1]);
|
||||
}
|
||||
$cnt = $user->find();
|
||||
|
||||
while ($user->fetch()) {
|
||||
|
||||
$inbox_entry = new Notice_inbox();
|
||||
$inbox_entry->user_id = $user->id;
|
||||
$inbox_entry->orderBy('created DESC');
|
||||
$inbox_entry->limit(1000, 1);
|
||||
|
||||
$id = null;
|
||||
|
||||
if ($inbox_entry->find(true)) {
|
||||
$id = $inbox_entry->notice_id;
|
||||
}
|
||||
|
||||
$inbox_entry->free();
|
||||
unset($inbox_entry);
|
||||
|
||||
if (is_null($id)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$start = microtime(true);
|
||||
|
||||
$old_inbox = new Notice_inbox();
|
||||
$cnt = $old_inbox->query('DELETE from notice_inbox WHERE user_id = ' . $user->id . ' AND notice_id < ' . $id);
|
||||
$old_inbox->free();
|
||||
unset($old_inbox);
|
||||
|
||||
print "Deleted $cnt notices for $user->nickname ($user->id).\n";
|
||||
|
||||
$finish = microtime(true);
|
||||
|
||||
$delay = 3.0 * ($finish - $start);
|
||||
|
||||
print "Delaying $delay seconds...";
|
||||
|
||||
// Wait to let slaves catch up
|
||||
|
||||
usleep($delay * 1000000);
|
||||
|
||||
print "DONE.\n";
|
||||
}
|
@ -16,17 +16,17 @@
|
||||
height: 101px;
|
||||
}
|
||||
.farbtastic .wheel {
|
||||
background: url(../../../../js/farbtastic/wheel.png) no-repeat;
|
||||
background: url(../../../js/farbtastic/wheel.png) no-repeat;
|
||||
width: 195px;
|
||||
height: 195px;
|
||||
}
|
||||
.farbtastic .overlay {
|
||||
background: url(../../../../js/farbtastic/mask.png) no-repeat;
|
||||
background: url(../../../js/farbtastic/mask.png) no-repeat;
|
||||
}
|
||||
.farbtastic .marker {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
margin: -8px 0 0 -8px;
|
||||
overflow: hidden;
|
||||
background: url(../../../../js/farbtastic/marker.png) no-repeat;
|
||||
background: url(../../../js/farbtastic/marker.png) no-repeat;
|
||||
}
|
BIN
theme/base/default-avatar-mini.png
Normal file
After Width: | Height: | Size: 646 B |
BIN
theme/base/default-avatar-profile.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
theme/base/default-avatar-stream.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 777 B |
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 73 B After Width: | Height: | Size: 73 B |
Before Width: | Height: | Size: 74 B After Width: | Height: | Size: 74 B |
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 88 B |
Before Width: | Height: | Size: 75 B After Width: | Height: | Size: 75 B |
Before Width: | Height: | Size: 73 B After Width: | Height: | Size: 73 B |
Before Width: | Height: | Size: 82 B After Width: | Height: | Size: 82 B |
Before Width: | Height: | Size: 76 B After Width: | Height: | Size: 76 B |
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 79 B |
Before Width: | Height: | Size: 85 B After Width: | Height: | Size: 85 B |
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 77 B |
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 329 B |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@ -1240,3 +1240,311 @@ padding-top:160px;
|
||||
#tag #form_notice {
|
||||
display:none;
|
||||
}
|
||||
|
||||
|
||||
html,
|
||||
body,
|
||||
a:active {
|
||||
background-color:#9AE4E8;
|
||||
}
|
||||
body {
|
||||
font-family:'Lucida Grande',sans-serif;
|
||||
background:#9AE4E8 url(../images/illustrations/illu_clouds-01.gif) 0 0 no-repeat;
|
||||
color:#333333;
|
||||
}
|
||||
#core {
|
||||
background:url(../images/illustrations/illu_arrow-up-01.gif) no-repeat 25px 0;
|
||||
}
|
||||
|
||||
input, textarea, select, option {
|
||||
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||
}
|
||||
input, textarea, select,
|
||||
.entity_remote_subscribe {
|
||||
border-color:#aaa;
|
||||
}
|
||||
#filter_tags ul li {
|
||||
border-color:#ddd;
|
||||
}
|
||||
|
||||
.form_settings input.form_action-secondary {
|
||||
background:none;
|
||||
}
|
||||
|
||||
input.submit,
|
||||
#form_notice.warning #notice_text-count,
|
||||
#nav_register a,
|
||||
.form_settings .form_note,
|
||||
.entity_remote_subscribe {
|
||||
background-color:#9BB43E;
|
||||
}
|
||||
|
||||
input:focus, textarea:focus, select:focus,
|
||||
#form_notice.warning #notice_data-text {
|
||||
border-color:#9BB43E;
|
||||
}
|
||||
input.submit,
|
||||
#nav_register a,
|
||||
.entity_remote_subscribe {
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
a,
|
||||
div.notice-options input,
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit,
|
||||
.entity_send-a-message a,
|
||||
.form_user_nudge input.submit,
|
||||
.entity_nudge p,
|
||||
.form_settings input.form_action-secondary {
|
||||
color:#0084B4;
|
||||
}
|
||||
|
||||
.notice,
|
||||
.profile {
|
||||
border-top-color:#DDFFCC;
|
||||
}
|
||||
.section .profile {
|
||||
border-top-color:#87B4C8;
|
||||
}
|
||||
|
||||
|
||||
#content .notice p.entry-content a:visited {
|
||||
background-color:#fcfcfc;
|
||||
}
|
||||
#content .notice p.entry-content .vcard a {
|
||||
background-color:#fcfffc;
|
||||
}
|
||||
|
||||
#aside_primary {
|
||||
background-color:#DDFFCC;
|
||||
}
|
||||
|
||||
|
||||
#notice_text-count {
|
||||
color:#333;
|
||||
}
|
||||
#form_notice.warning #notice_text-count {
|
||||
color:#000;
|
||||
}
|
||||
#form_notice.processing #notice_action-submit {
|
||||
background:#fff url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
cursor:wait;
|
||||
text-indent:-9999px;
|
||||
}
|
||||
|
||||
#content,
|
||||
#site_nav_local_views a,
|
||||
#aside_primary {
|
||||
border-color:#fff;
|
||||
}
|
||||
#content,
|
||||
#site_nav_local_views .current a {
|
||||
background-color:#fff;
|
||||
}
|
||||
|
||||
#site_nav_local_views a {
|
||||
background-color:rgba(135, 180, 200, 0.3);
|
||||
}
|
||||
#site_nav_local_views a:hover {
|
||||
background-color:rgba(255, 255, 255, 0.7);
|
||||
}
|
||||
|
||||
|
||||
.error {
|
||||
background-color:#F7E8E8;
|
||||
}
|
||||
.success {
|
||||
background-color:#EFF3DC;
|
||||
}
|
||||
|
||||
|
||||
#anon_notice {
|
||||
background-color:#FEFFDF;
|
||||
color:#333;
|
||||
border-color:#fff;
|
||||
}
|
||||
|
||||
#showstream #anon_notice {
|
||||
background-color:#FEFFDF;
|
||||
}
|
||||
|
||||
|
||||
#export_data li a {
|
||||
background-repeat:no-repeat;
|
||||
background-position:0 45%;
|
||||
}
|
||||
#export_data li a.rss {
|
||||
background-image:url(../../base/images/icons/icon_rss.png);
|
||||
}
|
||||
#export_data li a.atom {
|
||||
background-image:url(../../base/images/icons/icon_atom.png);
|
||||
}
|
||||
#export_data li a.foaf {
|
||||
background-image:url(../../base/images/icons/icon_foaf.gif);
|
||||
}
|
||||
|
||||
.entity_edit a,
|
||||
.entity_send-a-message a,
|
||||
.form_user_nudge input.submit,
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit,
|
||||
.entity_nudge p {
|
||||
background-position: 0 40%;
|
||||
background-repeat: no-repeat;
|
||||
background-color:transparent;
|
||||
}
|
||||
.form_group_join input.submit,
|
||||
.form_group_leave input.submit
|
||||
.form_user_subscribe input.submit,
|
||||
.form_user_unsubscribe input.submit {
|
||||
background-color:#9BB43E;
|
||||
color:#fff;
|
||||
}
|
||||
.form_user_unsubscribe input.submit,
|
||||
.form_group_leave input.submit {
|
||||
background-color:#87B4C8;
|
||||
}
|
||||
|
||||
.entity_edit a {
|
||||
background-image:url(../images/icons/twotone/green/edit.gif);
|
||||
}
|
||||
.entity_send-a-message a {
|
||||
background-image:url(../images/icons/twotone/green/quote.gif);
|
||||
}
|
||||
.entity_nudge p,
|
||||
.form_user_nudge input.submit {
|
||||
background-image:url(../images/icons/twotone/green/mail.gif);
|
||||
}
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit {
|
||||
background-image:url(../images/icons/twotone/green/shield.gif);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* NOTICES */
|
||||
.notices li.over {
|
||||
background-color:#fcfcfc;
|
||||
}
|
||||
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options form input.submit {
|
||||
background-color:transparent;
|
||||
}
|
||||
.notice-options .notice_reply a {
|
||||
background:transparent url(../images/icons/icon_reply.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options form.form_favor input.submit {
|
||||
background:transparent url(../images/icons/icon_favourite.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options form.form_disfavor input.submit {
|
||||
background:transparent url(../images/icons/icon_disfavourite.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options .notice_delete a {
|
||||
background:transparent url(../images/icons/icon_trash.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li.hover div.entry-content,
|
||||
.notices li.hover div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
div.entry-content {
|
||||
color:#333;
|
||||
}
|
||||
div.notice-options a,
|
||||
div.notice-options input {
|
||||
font-family:sans-serif;
|
||||
}
|
||||
.notices li.hover {
|
||||
background-color:#fcfcfc;
|
||||
}
|
||||
/*END: NOTICES */
|
||||
|
||||
|
||||
#new_group a {
|
||||
background:transparent url(../../base/images/icons/twotone/green/news.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
||||
.pagination .nav_prev a,
|
||||
.pagination .nav_next a {
|
||||
background-repeat:no-repeat;
|
||||
border-color:#DDFFCC;
|
||||
}
|
||||
.pagination .nav_prev a {
|
||||
background-image:url(../../base/images/icons/twotone/green/arrow-left.gif);
|
||||
background-position:10% 45%;
|
||||
}
|
||||
.pagination .nav_next a {
|
||||
background-image:url(../../base/images/icons/twotone/green/arrow-right.gif);
|
||||
background-position:90% 45%;
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------*/
|
||||
|
||||
#anon_notice {
|
||||
background:url(../images/illustrations/illu_unicorn-01.png) no-repeat 0 0;
|
||||
}
|
||||
#showstream #anon_notice,
|
||||
#content .notice p.entry-content a:visited,
|
||||
content .notice p.entry-content .vcard a {
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
#anon_notice p {
|
||||
background-color:#FEFFDF;
|
||||
border-color:#FFFF00;
|
||||
}
|
||||
|
||||
|
||||
#form_notice .form_note {
|
||||
color:#CCC;
|
||||
}
|
||||
input.submit {
|
||||
background-color:#eee;
|
||||
color:#666;
|
||||
}
|
||||
|
||||
.notices li.hover {
|
||||
background-color:#F7F7F7;
|
||||
}
|
||||
|
||||
|
||||
.notice div.entry-content,
|
||||
.notice div.entry-content a {
|
||||
color:#999;
|
||||
}
|
||||
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
|
||||
#site_nav_local_views {
|
||||
background-color:#DDFFCC;
|
||||
}
|
||||
#site_nav_local_views li,
|
||||
#aside_primary {
|
||||
border-color:#BDDCAD;
|
||||
}
|
||||
#site_nav_local_views a,
|
||||
.aside .section h2 {
|
||||
background-color:transparent;
|
||||
border-color:transparent;
|
||||
color:#4C4C4C;
|
||||
}
|
||||
#site_nav_local_views .current {
|
||||
border-left-color:#fff;
|
||||
}
|
||||
|
||||
#site_nav_local_views .current a,
|
||||
#site_nav_global_primary,
|
||||
#footer {
|
||||
background-color:#fff;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
Before Width: | Height: | Size: 701 B After Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 397 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |