Merge branch 'master' into testing
Conflicts: plugins/Blacklist/BlacklistPlugin.php
87
README
|
@ -2,8 +2,8 @@
|
|||
README
|
||||
------
|
||||
|
||||
StatusNet 0.9.0 ("Stand")
|
||||
4 Mar 2010
|
||||
StatusNet 0.9.1 ("Everybody Hurts")
|
||||
28 Mar 2010
|
||||
|
||||
This is the README file for StatusNet, the Open Source microblogging
|
||||
platform. It includes installation instructions, descriptions of
|
||||
|
@ -77,57 +77,34 @@ for additional terms.
|
|||
New this version
|
||||
================
|
||||
|
||||
This is a major feature release since version 0.8.3, released Feb 1
|
||||
2010. It is the final release version of 0.9.0, replacing any beta
|
||||
versions.
|
||||
This is a minor bug and feature release since version 0.9.0 released 4
|
||||
March 2010.
|
||||
|
||||
Because of fixes to OStatus bugs, it is highly recommended that all
|
||||
public sites upgrade to the new version immediately.
|
||||
|
||||
Notable changes this version:
|
||||
|
||||
- Support for the new distributed status update standard OStatus
|
||||
<http://ostatus.org>, based on PubSubHubbub, Salmon, Webfinger,
|
||||
and Activity Streams.
|
||||
- Support for location using the Geolocation API. Notices are (optionally)
|
||||
marked with lat-long information with geo microformats, and can be shown
|
||||
on a map.
|
||||
- No fixed content size. Notice size is configurable, from 1 to
|
||||
unlimited number of characters. Default is still 140!
|
||||
- An authorization framework, allowing different levels of users.
|
||||
- A Web-based administration panel.
|
||||
- A moderation system that lets site moderators sandbox, silence,
|
||||
or delete uncooperative users.
|
||||
- A flag system that lets users flag profiles for moderator review.
|
||||
- Support for OAuth <http://oauth.net> authentication in the Twitter
|
||||
API.
|
||||
- User roles system that lets the owner of the site to assign
|
||||
administrator and moderator roles to other users.
|
||||
- A pluggable authentication system.
|
||||
- An authentication plugin for LDAP servers.
|
||||
- Many features that were core in 0.8.x are now plugins, such
|
||||
as OpenID, Twitter integration, Facebook integration
|
||||
- A much-improved offline processing system
|
||||
- In-browser "realtime" updates using a number of realtime
|
||||
servers (Meteor, Orbited, Cometd)
|
||||
- A plugin to provide an interface optimized for mobile browsers
|
||||
- Support for Facebook Connect
|
||||
- Support for logging in with a Twitter account
|
||||
- Vastly improved translation with additional languages and
|
||||
translation in plugins
|
||||
- Support for all-SSL instances
|
||||
- Core support for "repeats" (like Twitter's "retweets")
|
||||
- Pluggable caching system, with plugins for Memcached,
|
||||
APC, XCache, and a disk-based cache
|
||||
- Plugin to support RSSCloud
|
||||
- A framework for adding advertisements to a public site,
|
||||
and plugins for Google AdSense and OpenX server
|
||||
- Plugins to throttle excessive subscriptions and registrations.
|
||||
- A plugin to blacklist particular URLs or nicknames.
|
||||
- Twitter bridge truncates and links back to original for long
|
||||
notices.
|
||||
- Changed "Home" link in main menu to "Personal".
|
||||
- A new memcached plugin (using pecl/memcached versus pecl/memcache)
|
||||
- Opt-in subscription to update@status.net
|
||||
- Script to run commands on behalf of a user.
|
||||
- Better Web UI for long notices.
|
||||
- A plugin to open external links in their own window or tab
|
||||
- Fixes to Salmon protocol for compatibility with other systems.
|
||||
- Updates to latest ActivityStreams definition.
|
||||
- Twitpic-compatible API for image upload.
|
||||
- Background deletion of user accounts.
|
||||
- Better support for HTTP basic authentication with CGI/FastCGI
|
||||
- Better discovery on OStatus
|
||||
- Support for PuSH-enabled RSS 2.0 feeds
|
||||
- OpenID-only mode
|
||||
- OpenID blacklist/whitelist
|
||||
- OStatus unit tests
|
||||
|
||||
There are also literally thousands of bugs fixed and minor features
|
||||
added. A full changelog is available at http://status.net/wiki/StatusNet_0.9.0.
|
||||
|
||||
Under the covers, the software has a vastly improved plugin and
|
||||
extension mechanism that makes writing powerful and flexible additions
|
||||
to the core functionality much easier.
|
||||
A full changelog is available at http://status.net/wiki/StatusNet_0.9.1.
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
@ -239,9 +216,9 @@ especially if you've previously installed PHP/MySQL packages.
|
|||
1. Unpack the tarball you downloaded on your Web server. Usually a
|
||||
command like this will work:
|
||||
|
||||
tar zxf statusnet-0.9.0.tar.gz
|
||||
tar zxf statusnet-0.9.1.tar.gz
|
||||
|
||||
...which will make a statusnet-0.9.0 subdirectory in your current
|
||||
...which will make a statusnet-0.9.1 subdirectory in your current
|
||||
directory. (If you don't have shell access on your Web server, you
|
||||
may have to unpack the tarball on your local computer and FTP the
|
||||
files to the server.)
|
||||
|
@ -249,7 +226,7 @@ especially if you've previously installed PHP/MySQL packages.
|
|||
2. Move the tarball to a directory of your choosing in your Web root
|
||||
directory. Usually something like this will work:
|
||||
|
||||
mv statusnet-0.9.0 /var/www/statusnet
|
||||
mv statusnet-0.9.1 /var/www/statusnet
|
||||
|
||||
This will make your StatusNet instance available in the statusnet path of
|
||||
your server, like "http://example.net/statusnet". "microblog" or
|
||||
|
@ -664,7 +641,7 @@ with this situation.
|
|||
If you've been using StatusNet 0.7, 0.6, 0.5 or lower, or if you've
|
||||
been tracking the "git" version of the software, you will probably
|
||||
want to upgrade and keep your existing data. There is no automated
|
||||
upgrade procedure in StatusNet 0.9.0. Try these step-by-step
|
||||
upgrade procedure in StatusNet 0.9.1. Try these step-by-step
|
||||
instructions; read to the end first before trying them.
|
||||
|
||||
0. Download StatusNet and set up all the prerequisites as if you were
|
||||
|
@ -685,7 +662,7 @@ instructions; read to the end first before trying them.
|
|||
5. Once all writing processes to your site are turned off, make a
|
||||
final backup of the Web directory and database.
|
||||
6. Move your StatusNet directory to a backup spot, like "statusnet.bak".
|
||||
7. Unpack your StatusNet 0.9.0 tarball and move it to "statusnet" or
|
||||
7. Unpack your StatusNet 0.9.1 tarball and move it to "statusnet" or
|
||||
wherever your code used to be.
|
||||
8. Copy the config.php file and avatar directory from your old
|
||||
directory to your new directory.
|
||||
|
@ -1522,7 +1499,7 @@ repository (see below), and you get a compilation error ("unexpected
|
|||
T_STRING") in the browser, check to see that you don't have any
|
||||
conflicts in your code.
|
||||
|
||||
If you upgraded to StatusNet 0.9.0 without reading the "Notice
|
||||
If you upgraded to StatusNet 0.9.1 without reading the "Notice
|
||||
inboxes" section above, and all your users' 'Personal' tabs are empty,
|
||||
read the "Notice inboxes" section above.
|
||||
|
||||
|
|
|
@ -221,7 +221,8 @@ class ShowgroupAction extends GroupDesignAction
|
|||
|
||||
function showGroupProfile()
|
||||
{
|
||||
$this->elementStart('div', 'entity_profile vcard author');
|
||||
$this->elementStart('div', array('id' => 'i',
|
||||
'class' => 'entity_profile vcard author'));
|
||||
|
||||
$this->element('h2', null, _('Group profile'));
|
||||
|
||||
|
|
|
@ -196,12 +196,30 @@ class SubscriptionsListItem extends SubscriptionListItem
|
|||
$this->out->hidden('token', common_session_token());
|
||||
$this->out->hidden('profile', $this->profile->id);
|
||||
if (common_config('xmpp', 'enabled')) {
|
||||
$this->out->checkbox('jabber', _('Jabber'), $sub->jabber);
|
||||
$attrs = array('name' => 'jabber',
|
||||
'type' => 'checkbox',
|
||||
'class' => 'checkbox',
|
||||
'id' => 'jabber-'.$this->profile->id);
|
||||
if ($sub->jabber) {
|
||||
$attrs['checked'] = 'checked';
|
||||
}
|
||||
|
||||
$this->out->element('input', $attrs);
|
||||
$this->out->element('label', array('for' => 'jabber-'.$this->profile->id), _('Jabber'));
|
||||
} else {
|
||||
$this->out->hidden('jabber', $sub->jabber);
|
||||
}
|
||||
if (common_config('sms', 'enabled')) {
|
||||
$this->out->checkbox('sms', _('SMS'), $sub->sms);
|
||||
$attrs = array('name' => 'sms',
|
||||
'type' => 'checkbox',
|
||||
'class' => 'checkbox',
|
||||
'id' => 'sms-'.$this->profile->id);
|
||||
if ($sub->sms) {
|
||||
$attrs['checked'] = 'checked';
|
||||
}
|
||||
|
||||
$this->out->element('input', $attrs);
|
||||
$this->out->element('label', array('for' => 'sms-'.$this->profile->id), _('SMS'));
|
||||
} else {
|
||||
$this->out->hidden('sms', $sub->sms);
|
||||
}
|
||||
|
|
|
@ -670,8 +670,12 @@ class User extends Memcached_DataObject
|
|||
|
||||
function delete()
|
||||
{
|
||||
$profile = $this->getProfile();
|
||||
$profile->delete();
|
||||
try {
|
||||
$profile = $this->getProfile();
|
||||
$profile->delete();
|
||||
} catch (UserNoProfileException $unp) {
|
||||
common_log(LOG_INFO, "User {$this->nickname} has no profile; continuing deletion.");
|
||||
}
|
||||
|
||||
$related = array('Fave',
|
||||
'Confirm_address',
|
||||
|
@ -679,6 +683,7 @@ class User extends Memcached_DataObject
|
|||
'Foreign_link',
|
||||
'Invitation',
|
||||
);
|
||||
|
||||
Event::handle('UserDeleteRelated', array($this, &$related));
|
||||
|
||||
foreach ($related as $cls) {
|
||||
|
|
128
js/util.js
|
@ -61,10 +61,8 @@ var SN = { // StatusNet
|
|||
|
||||
U: { // Utils
|
||||
FormNoticeEnhancements: function(form) {
|
||||
form_id = form.attr('id');
|
||||
|
||||
if (jQuery.data(form[0], 'ElementData') === undefined) {
|
||||
MaxLength = $('#'+form_id+' #'+SN.C.S.NoticeTextCount).text();
|
||||
MaxLength = form.find('#'+SN.C.S.NoticeTextCount).text();
|
||||
if (typeof(MaxLength) == 'undefined') {
|
||||
MaxLength = SN.C.I.MaxLength;
|
||||
}
|
||||
|
@ -72,7 +70,7 @@ var SN = { // StatusNet
|
|||
|
||||
SN.U.Counter(form);
|
||||
|
||||
NDT = $('#'+form_id+' #'+SN.C.S.NoticeDataText);
|
||||
NDT = form.find('#'+SN.C.S.NoticeDataText);
|
||||
|
||||
NDT.bind('keyup', function(e) {
|
||||
SN.U.Counter(form);
|
||||
|
@ -83,11 +81,11 @@ var SN = { // StatusNet
|
|||
});
|
||||
}
|
||||
else {
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength);
|
||||
form.find('#'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength);
|
||||
}
|
||||
|
||||
if ($('body')[0].id != 'conversation') {
|
||||
$('#'+form_id+' textarea').focus();
|
||||
if ($('body')[0].id != 'conversation' && window.location.hash.length === 0) {
|
||||
form.find('textarea').focus();
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -105,7 +103,6 @@ var SN = { // StatusNet
|
|||
|
||||
Counter: function(form) {
|
||||
SN.C.I.FormNoticeCurrent = form;
|
||||
form_id = form.attr('id');
|
||||
|
||||
var MaxLength = jQuery.data(form[0], 'ElementData').MaxLength;
|
||||
|
||||
|
@ -113,8 +110,8 @@ var SN = { // StatusNet
|
|||
return;
|
||||
}
|
||||
|
||||
var remaining = MaxLength - $('#'+form_id+' #'+SN.C.S.NoticeDataText).val().length;
|
||||
var counter = $('#'+form_id+' #'+SN.C.S.NoticeTextCount);
|
||||
var remaining = MaxLength - form.find('#'+SN.C.S.NoticeDataText).val().length;
|
||||
var counter = form.find('#'+SN.C.S.NoticeTextCount);
|
||||
|
||||
if (remaining.toString() != counter.text()) {
|
||||
if (!SN.C.I.CounterBlackout || remaining === 0) {
|
||||
|
@ -174,7 +171,6 @@ var SN = { // StatusNet
|
|||
|
||||
FormNoticeXHR: function(form) {
|
||||
SN.C.I.NoticeDataGeo = {};
|
||||
form_id = form.attr('id');
|
||||
form.append('<input type="hidden" name="ajax" value="1"/>');
|
||||
form.ajaxForm({
|
||||
dataType: 'xml',
|
||||
|
@ -403,58 +399,72 @@ var SN = { // StatusNet
|
|||
return;
|
||||
}
|
||||
|
||||
$.fn.jOverlay.options = {
|
||||
method : 'GET',
|
||||
data : '',
|
||||
url : '',
|
||||
color : '#000',
|
||||
opacity : '0.6',
|
||||
zIndex : 9999,
|
||||
center : false,
|
||||
imgLoading : $('address .url')[0].href+'theme/base/images/illustrations/illu_progress_loading-01.gif',
|
||||
bgClickToClose : true,
|
||||
success : function() {
|
||||
$('#jOverlayContent').append('<button class="close">×</button>');
|
||||
$('#jOverlayContent button').click($.closeOverlay);
|
||||
},
|
||||
timeout : 0,
|
||||
autoHide : true,
|
||||
css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
|
||||
};
|
||||
var attachment_more = notice.find('.attachment.more');
|
||||
if (attachment_more.length > 0) {
|
||||
$(attachment_more[0]).click(function() {
|
||||
var m = $(this);
|
||||
m.addClass(SN.C.S.Processing);
|
||||
$.get(m.attr('href')+'/ajax', null, function(data) {
|
||||
m.parent('.entry-content').html($(data).find('#attachment_view .entry-content').html());
|
||||
});
|
||||
|
||||
notice.find('a.attachment').click(function() {
|
||||
var attachId = ($(this).attr('id').substring('attachment'.length + 1));
|
||||
if (attachId) {
|
||||
$().jOverlay({url: $('address .url')[0].href+'attachment/' + attachId + '/ajax'});
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
if ($('#shownotice').length == 0) {
|
||||
var t;
|
||||
notice.find('a.thumbnail').hover(
|
||||
function() {
|
||||
var anchor = $(this);
|
||||
$('a.thumbnail').children('img').hide();
|
||||
anchor.closest(".entry-title").addClass('ov');
|
||||
|
||||
if (anchor.children('img').length === 0) {
|
||||
t = setTimeout(function() {
|
||||
$.get($('address .url')[0].href+'attachment/' + (anchor.attr('id').substring('attachment'.length + 1)) + '/thumbnail', null, function(data) {
|
||||
anchor.append(data);
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
else {
|
||||
anchor.children('img').show();
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
$.fn.jOverlay.options = {
|
||||
method : 'GET',
|
||||
data : '',
|
||||
url : '',
|
||||
color : '#000',
|
||||
opacity : '0.6',
|
||||
zIndex : 9999,
|
||||
center : false,
|
||||
imgLoading : $('address .url')[0].href+'theme/base/images/illustrations/illu_progress_loading-01.gif',
|
||||
bgClickToClose : true,
|
||||
success : function() {
|
||||
$('#jOverlayContent').append('<button class="close">×</button>');
|
||||
$('#jOverlayContent button').click($.closeOverlay);
|
||||
},
|
||||
function() {
|
||||
clearTimeout(t);
|
||||
$('a.thumbnail').children('img').hide();
|
||||
$(this).closest('.entry-title').removeClass('ov');
|
||||
timeout : 0,
|
||||
autoHide : true,
|
||||
css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
|
||||
};
|
||||
|
||||
notice.find('a.attachment').click(function() {
|
||||
var attachId = ($(this).attr('id').substring('attachment'.length + 1));
|
||||
if (attachId) {
|
||||
$().jOverlay({url: $('address .url')[0].href+'attachment/' + attachId + '/ajax'});
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
if ($('#shownotice').length == 0) {
|
||||
var t;
|
||||
notice.find('a.thumbnail').hover(
|
||||
function() {
|
||||
var anchor = $(this);
|
||||
$('a.thumbnail').children('img').hide();
|
||||
anchor.closest(".entry-title").addClass('ov');
|
||||
|
||||
if (anchor.children('img').length === 0) {
|
||||
t = setTimeout(function() {
|
||||
$.get($('address .url')[0].href+'attachment/' + (anchor.attr('id').substring('attachment'.length + 1)) + '/thumbnail', null, function(data) {
|
||||
anchor.append(data);
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
else {
|
||||
anchor.children('img').show();
|
||||
}
|
||||
},
|
||||
function() {
|
||||
clearTimeout(t);
|
||||
$('a.thumbnail').children('img').hide();
|
||||
$(this).closest('.entry-title').removeClass('ov');
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -198,8 +198,7 @@ class Action extends HTMLOutputter // lawsuit
|
|||
|
||||
if (Event::handle('StartShowStatusNetStyles', array($this)) &&
|
||||
Event::handle('StartShowLaconicaStyles', array($this))) {
|
||||
$this->cssLink('css/display.css',null,'screen, projection, tv');
|
||||
$this->cssLink('css/print.css','base','print');
|
||||
$this->cssLink('css/display.css',null, 'screen, projection, tv, print');
|
||||
Event::handle('EndShowStatusNetStyles', array($this));
|
||||
Event::handle('EndShowLaconicaStyles', array($this));
|
||||
}
|
||||
|
|
|
@ -179,6 +179,17 @@ class Activity
|
|||
|
||||
$this->actor = new ActivityObject($actorEl);
|
||||
|
||||
// Cliqset has bad actor IDs (just nickname of user). We
|
||||
// work around it by getting the author data and using its
|
||||
// id instead
|
||||
|
||||
if (!preg_match('/^\w+:/', $this->actor->id)) {
|
||||
$authorEl = ActivityUtils::child($entry, 'author');
|
||||
if (!empty($authorEl)) {
|
||||
$authorObj = new ActivityObject($authorEl);
|
||||
$this->actor->id = $authorObj->id;
|
||||
}
|
||||
}
|
||||
} else if (!empty($feed) &&
|
||||
$subjectEl = $this->_child($feed, self::SUBJECT)) {
|
||||
|
||||
|
|
|
@ -177,10 +177,7 @@ class ActivityObject
|
|||
$this->type = self::PERSON; // XXX: is this fair?
|
||||
$this->title = $this->_childContent($element, self::NAME);
|
||||
|
||||
$id = $this->_childContent($element, self::URI);
|
||||
if (ActivityUtils::validateUri($id)) {
|
||||
$this->id = $id;
|
||||
}
|
||||
$this->id = $this->_childContent($element, self::URI);
|
||||
|
||||
if (empty($this->id)) {
|
||||
$email = $this->_childContent($element, self::EMAIL);
|
||||
|
@ -193,15 +190,6 @@ class ActivityObject
|
|||
|
||||
private function _fromAtomEntry($element)
|
||||
{
|
||||
if ($element->localName == 'actor') {
|
||||
// Old-fashioned <activity:actor>...
|
||||
// First pull anything from <author>, then we'll add on top.
|
||||
$author = ActivityUtils::child($element->parentNode, 'author');
|
||||
if ($author) {
|
||||
$this->_fromAuthor($author);
|
||||
}
|
||||
}
|
||||
|
||||
$this->type = $this->_childContent($element, Activity::OBJECTTYPE,
|
||||
Activity::SPEC);
|
||||
|
||||
|
@ -209,11 +197,6 @@ class ActivityObject
|
|||
$this->type = ActivityObject::NOTE;
|
||||
}
|
||||
|
||||
$id = $this->_childContent($element, self::ID);
|
||||
if (ActivityUtils::validateUri($id)) {
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
$this->summary = ActivityUtils::childHtmlContent($element, self::SUMMARY);
|
||||
$this->content = ActivityUtils::getContent($element);
|
||||
|
||||
|
@ -226,6 +209,12 @@ class ActivityObject
|
|||
$this->source = $this->_getSource($element);
|
||||
|
||||
$this->link = ActivityUtils::getPermalink($element);
|
||||
|
||||
$this->id = $this->_childContent($element, self::ID);
|
||||
|
||||
if (empty($this->id) && !empty($this->link)) { // fallback if there's no ID
|
||||
$this->id = $this->link;
|
||||
}
|
||||
}
|
||||
|
||||
// @fixme rationalize with Activity::_fromRssItem()
|
||||
|
|
|
@ -248,9 +248,7 @@ class Attachment extends AttachmentListItem
|
|||
$this->out->elementStart('div', array('id' => 'attachment_view',
|
||||
'class' => 'hentry'));
|
||||
$this->out->elementStart('div', 'entry-title');
|
||||
$this->out->elementStart('a', $this->linkAttr());
|
||||
$this->out->element('span', null, $this->linkTitle());
|
||||
$this->out->elementEnd('a');
|
||||
$this->out->element('a', $this->linkAttr(), $this->linkTitle());
|
||||
$this->out->elementEnd('div');
|
||||
|
||||
$this->out->elementStart('div', 'entry-content');
|
||||
|
@ -296,7 +294,7 @@ class Attachment extends AttachmentListItem
|
|||
}
|
||||
|
||||
function linkAttr() {
|
||||
return array('class' => 'external', 'href' => $this->attachment->url);
|
||||
return array('rel' => 'external', 'href' => $this->attachment->url);
|
||||
}
|
||||
|
||||
function linkTitle() {
|
||||
|
@ -332,6 +330,15 @@ class Attachment extends AttachmentListItem
|
|||
$this->out->element('param', array('name' => 'autoStart', 'value' => 1));
|
||||
$this->out->elementEnd('object');
|
||||
break;
|
||||
|
||||
case 'text/html':
|
||||
if ($this->attachment->filename) {
|
||||
// Locally-uploaded HTML. Scrub and display inline.
|
||||
$this->showHtmlFile($this->attachment);
|
||||
break;
|
||||
}
|
||||
// Fall through to default.
|
||||
|
||||
default:
|
||||
$this->showFallback();
|
||||
}
|
||||
|
@ -361,6 +368,59 @@ class Attachment extends AttachmentListItem
|
|||
}
|
||||
}
|
||||
|
||||
protected function showHtmlFile(File $attachment)
|
||||
{
|
||||
$body = $this->scrubHtmlFile($attachment);
|
||||
if ($body) {
|
||||
$this->out->raw($body);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed false on failure, HTML fragment string on success
|
||||
*/
|
||||
protected function scrubHtmlFile(File $attachment)
|
||||
{
|
||||
$path = File::path($attachment->filename);
|
||||
if (!file_exists($path) || !is_readable($path)) {
|
||||
common_log(LOG_ERR, "Missing local HTML attachment $path");
|
||||
return false;
|
||||
}
|
||||
$raw = file_get_contents($path);
|
||||
|
||||
// Normalize...
|
||||
$dom = new DOMDocument();
|
||||
if(!$dom->loadHTML($raw)) {
|
||||
common_log(LOG_ERR, "Bad HTML in local HTML attachment $path");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Remove <script>s or htmlawed will dump their contents into output!
|
||||
// Note: removing child nodes while iterating seems to mess things up,
|
||||
// hence the double loop.
|
||||
$scripts = array();
|
||||
foreach ($dom->getElementsByTagName('script') as $script) {
|
||||
$scripts[] = $script;
|
||||
}
|
||||
foreach ($scripts as $script) {
|
||||
common_log(LOG_DEBUG, $script->textContent);
|
||||
$script->parentNode->removeChild($script);
|
||||
}
|
||||
|
||||
// Trim out everything outside the body...
|
||||
$body = $dom->saveHTML();
|
||||
$body = preg_replace('/^.*<body[^>]*>/is', '', $body);
|
||||
$body = preg_replace('/<\/body[^>]*>.*$/is', '', $body);
|
||||
|
||||
require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
|
||||
$config = array('safe' => 1,
|
||||
'deny_attribute' => 'id,style,on*',
|
||||
'comment' => 1); // remove comments
|
||||
$scrubbed = htmLawed($body, $config);
|
||||
|
||||
return $scrubbed;
|
||||
}
|
||||
|
||||
function showFallback()
|
||||
{
|
||||
// If we don't know how to display an attachment inline, we probably
|
||||
|
|
|
@ -22,10 +22,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
|||
//exit with 200 response, if this is checking fancy from the installer
|
||||
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
|
||||
|
||||
define('STATUSNET_VERSION', '0.9.0');
|
||||
define('STATUSNET_VERSION', '0.9.1');
|
||||
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
|
||||
|
||||
define('STATUSNET_CODENAME', 'Stand');
|
||||
define('STATUSNET_CODENAME', 'Everybody Hurts');
|
||||
|
||||
define('AVATAR_PROFILE_SIZE', 96);
|
||||
define('AVATAR_STREAM_SIZE', 48);
|
||||
|
|
|
@ -443,7 +443,8 @@ class NoticeListItem extends Widget
|
|||
$name);
|
||||
} else {
|
||||
$xstr = new XMLStringer(false);
|
||||
$xstr->elementStart('a', array('href' => $url));
|
||||
$xstr->elementStart('a', array('href' => $url,
|
||||
'rel' => 'external'));
|
||||
$xstr->element('abbr', array('class' => 'geo',
|
||||
'title' => $latlon),
|
||||
$name);
|
||||
|
|
|
@ -213,7 +213,7 @@ class ProfileListItem extends Widget
|
|||
{
|
||||
if (!empty($this->profile->location)) {
|
||||
$this->out->text(' ');
|
||||
$this->out->elementStart('span', 'location');
|
||||
$this->out->elementStart('span', 'label');
|
||||
$this->out->raw($this->highlight($this->profile->location));
|
||||
$this->out->elementEnd('span');
|
||||
}
|
||||
|
|
|
@ -113,12 +113,13 @@ class SubscriptionListItem extends ProfileListItem
|
|||
$this->out->elementStart('ul', 'tags xoxo');
|
||||
foreach ($tags as $tag) {
|
||||
$this->out->elementStart('li');
|
||||
$this->out->element('span', 'mark_hash', '#');
|
||||
$this->out->element('a', array('rel' => 'tag',
|
||||
'href' => common_local_url($this->action->trimmed('action'),
|
||||
array('nickname' => $this->owner->nickname,
|
||||
'tag' => $tag))),
|
||||
$tag);
|
||||
// Avoid space by using raw output.
|
||||
$pt = '<span class="mark_hash">#</span><a rel="tag" href="' .
|
||||
common_local_url($this->action->trimmed('action'),
|
||||
array('nickname' => $this->owner->nickname,
|
||||
'tag' => $tag)) .
|
||||
'">' . $tag . '</a>';
|
||||
$this->out->raw($pt);
|
||||
$this->out->elementEnd('li');
|
||||
}
|
||||
$this->out->elementEnd('ul');
|
||||
|
|
|
@ -71,7 +71,8 @@ class UserProfile extends Widget
|
|||
{
|
||||
if (Event::handle('StartProfilePageProfileSection', array(&$this->out, $this->profile))) {
|
||||
|
||||
$this->out->elementStart('div', 'entity_profile vcard author');
|
||||
$this->out->elementStart('div', array('id' => 'i',
|
||||
'class' => 'entity_profile vcard author'));
|
||||
$this->out->element('h2', null, _('User profile'));
|
||||
|
||||
if (Event::handle('StartProfilePageProfileElements', array(&$this->out, $this->profile))) {
|
||||
|
|
|
@ -49,32 +49,26 @@ class BlacklistPlugin extends Plugin
|
|||
public $urls = array();
|
||||
public $canAdmin = true;
|
||||
|
||||
private $_nicknamePatterns = array();
|
||||
private $_urlPatterns = array();
|
||||
|
||||
/**
|
||||
* Initialize the plugin
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function initialize()
|
||||
function _getNicknamePatterns()
|
||||
{
|
||||
$confNicknames = $this->_configArray('blacklist', 'nicknames');
|
||||
|
||||
$dbNicknames = Nickname_blacklist::getPatterns();
|
||||
|
||||
$this->_nicknamePatterns = array_merge($this->nicknames,
|
||||
$confNicknames,
|
||||
$dbNicknames);
|
||||
return array_merge($this->nicknames,
|
||||
$confNicknames,
|
||||
$dbNicknames);
|
||||
}
|
||||
|
||||
function _getUrlPatterns()
|
||||
{
|
||||
$confURLs = $this->_configArray('blacklist', 'urls');
|
||||
|
||||
$dbURLs = Homepage_blacklist::getPatterns();
|
||||
|
||||
$this->_urlPatterns = array_merge($this->urls,
|
||||
$confURLs,
|
||||
$dbURLs);
|
||||
return array_merge($this->urls,
|
||||
$confURLs,
|
||||
$dbURLs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -265,7 +259,9 @@ class BlacklistPlugin extends Plugin
|
|||
|
||||
private function _checkUrl($url)
|
||||
{
|
||||
foreach ($this->_urlPatterns as $pattern) {
|
||||
$patterns = $this->_getUrlPatterns();
|
||||
|
||||
foreach ($patterns as $pattern) {
|
||||
if (preg_match("/$pattern/", $url)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -286,7 +282,9 @@ class BlacklistPlugin extends Plugin
|
|||
|
||||
private function _checkNickname($nickname)
|
||||
{
|
||||
foreach ($this->_nicknamePatterns as $pattern) {
|
||||
$patterns = $this->_getNicknamePatterns();
|
||||
|
||||
foreach ($patterns as $pattern) {
|
||||
if (preg_match("/$pattern/", $nickname)) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -102,7 +102,8 @@ class OStatusPlugin extends Plugin
|
|||
*/
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
$transports[] = 'ostatus';
|
||||
// put our transport first, in case there's any conflict (like OMB)
|
||||
array_unshift($transports, 'ostatus');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -550,14 +550,22 @@ class Ostatus_profile extends Memcached_DataObject
|
|||
}
|
||||
$shortSummary = common_shorten_links($summary);
|
||||
if (Notice::contentTooLong($shortSummary)) {
|
||||
$url = common_shorten_url(common_local_url('attachment',
|
||||
array('attachment' => $attachment->id)));
|
||||
$url = common_shorten_url($sourceUrl);
|
||||
$shortSummary = substr($shortSummary,
|
||||
0,
|
||||
Notice::maxContent() - (mb_strlen($url) + 2));
|
||||
$shortSummary .= '… ' . $url;
|
||||
$content = $shortSummary;
|
||||
$rendered = common_render_text($content);
|
||||
$content = $shortSummary . ' ' . $url;
|
||||
|
||||
// We mark up the attachment link specially for the HTML output
|
||||
// so we can fold-out the full version inline.
|
||||
$attachUrl = common_local_url('attachment',
|
||||
array('attachment' => $attachment->id));
|
||||
$rendered = common_render_text($shortSummary) .
|
||||
'<a href="' . htmlspecialchars($attachUrl) .'"'.
|
||||
' class="attachment more"' .
|
||||
' title="'. htmlspecialchars(_m('Show more')) . '">' .
|
||||
'…' .
|
||||
'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1667,10 +1675,18 @@ class Ostatus_profile extends Memcached_DataObject
|
|||
throw new Exception("Couldn't find a valid profile for '$addr'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the full-length scrubbed HTML of a remote notice to an attachment
|
||||
* file on our server. We'll link to this at the end of the cropped version.
|
||||
*
|
||||
* @param string $title plaintext for HTML page's title
|
||||
* @param string $rendered HTML fragment for HTML page's body
|
||||
* @return File
|
||||
*/
|
||||
function saveHTMLFile($title, $rendered)
|
||||
{
|
||||
$final = sprintf("<!DOCTYPE html>\n<html><head><title>%s</title></head>".
|
||||
'<body><div>%s</div></body></html>',
|
||||
'<body>%s</body></html>',
|
||||
htmlspecialchars($title),
|
||||
$rendered);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class OpenExternalLinkTargetPlugin extends Plugin
|
|||
{
|
||||
function onEndShowScripts($action)
|
||||
{
|
||||
$action->inlineScript('$("a[rel~=external]").click(function(){ window.open(this.href); return false; });');
|
||||
$action->inlineScript('$("a[rel~=external]:not([class~=attachment])").live("click", function(){ window.open(this.href); return false; });');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ RealtimeUpdate = {
|
|||
user = data['user'];
|
||||
html = data['html'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&');
|
||||
source = data['source'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&');
|
||||
console.log(data);
|
||||
|
||||
ni = "<li class=\"hentry notice\" id=\"notice-"+unique+"\">"+
|
||||
"<div class=\"entry-title\">"+
|
||||
"<span class=\"vcard author\">"+
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||
|
||||
$shortoptions = 'i:n:';
|
||||
$longoptions = array('id=', 'nickname=');
|
||||
$shortoptions = 'i:n:o';
|
||||
$longoptions = array('id=', 'nickname=', 'owner');
|
||||
|
||||
$helptext = <<<END_OF_USERROLE_HELP
|
||||
command.php [options] [command line]
|
||||
|
@ -29,13 +29,12 @@ Perform commands on behalf of a user, such as sub, unsub, join, drop
|
|||
|
||||
-i --id ID of the user
|
||||
-n --nickname nickname of the user
|
||||
-o --owner use the site owner
|
||||
|
||||
END_OF_USERROLE_HELP;
|
||||
|
||||
require_once INSTALLDIR.'/scripts/commandline.inc';
|
||||
|
||||
|
||||
|
||||
function interpretCommand($user, $body)
|
||||
{
|
||||
$inter = new CommandInterpreter();
|
||||
|
@ -50,8 +49,6 @@ function interpretCommand($user, $body)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (have_option('i', 'id')) {
|
||||
$id = get_option_value('i', 'id');
|
||||
$user = User::staticGet('id', $id);
|
||||
|
@ -66,6 +63,12 @@ if (have_option('i', 'id')) {
|
|||
print "Can't find user with nickname '$nickname'\n";
|
||||
exit(1);
|
||||
}
|
||||
} else if (have_option('o', 'owner')) {
|
||||
$user = User::siteOwner();
|
||||
if (empty($user)) {
|
||||
print "Site has no owner.\n";
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
print "You must provide either an ID or a nickname.\n\n";
|
||||
print $helptext;
|
||||
|
|
|
@ -22,14 +22,14 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
|
|||
|
||||
$this->assertFalse(empty($act));
|
||||
|
||||
$this->assertEquals($act->time, 1243860840);
|
||||
$this->assertEquals($act->verb, ActivityVerb::POST);
|
||||
$this->assertEquals(1243860840, $act->time);
|
||||
$this->assertEquals(ActivityVerb::POST, $act->verb);
|
||||
|
||||
$this->assertFalse(empty($act->objects[0]));
|
||||
$this->assertEquals($act->objects[0]->title, 'Punctuation Changeset');
|
||||
$this->assertEquals($act->objects[0]->type, 'http://versioncentral.example.org/activity/changeset');
|
||||
$this->assertEquals($act->objects[0]->summary, 'Fixing punctuation because it makes it more readable.');
|
||||
$this->assertEquals($act->objects[0]->id, 'tag:versioncentral.example.org,2009:/change/1643245');
|
||||
$this->assertEquals('Punctuation Changeset', $act->objects[0]->title);
|
||||
$this->assertEquals('http://versioncentral.example.org/activity/changeset', $act->objects[0]->type);
|
||||
$this->assertEquals('Fixing punctuation because it makes it more readable.', $act->objects[0]->summary);
|
||||
$this->assertEquals('tag:versioncentral.example.org,2009:/change/1643245', $act->objects[0]->id);
|
||||
}
|
||||
|
||||
public function testExample3()
|
||||
|
@ -46,22 +46,22 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
|
|||
$act = new Activity($entry, $feed);
|
||||
|
||||
$this->assertFalse(empty($act));
|
||||
$this->assertEquals($act->time, 1071340202);
|
||||
$this->assertEquals($act->link, 'http://example.org/2003/12/13/atom03.html');
|
||||
$this->assertEquals(1071340202, $act->time);
|
||||
$this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->link);
|
||||
|
||||
$this->assertEquals($act->verb, ActivityVerb::POST);
|
||||
|
||||
$this->assertFalse(empty($act->actor));
|
||||
$this->assertEquals($act->actor->type, ActivityObject::PERSON);
|
||||
$this->assertEquals($act->actor->title, 'John Doe');
|
||||
$this->assertEquals($act->actor->id, 'mailto:johndoe@example.com');
|
||||
$this->assertEquals(ActivityObject::PERSON, $act->actor->type);
|
||||
$this->assertEquals('John Doe', $act->actor->title);
|
||||
$this->assertEquals('mailto:johndoe@example.com', $act->actor->id);
|
||||
|
||||
$this->assertFalse(empty($act->objects[0]));
|
||||
$this->assertEquals($act->objects[0]->type, ActivityObject::NOTE);
|
||||
$this->assertEquals($act->objects[0]->id, 'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a');
|
||||
$this->assertEquals($act->objects[0]->title, 'Atom-Powered Robots Run Amok');
|
||||
$this->assertEquals($act->objects[0]->summary, 'Some text.');
|
||||
$this->assertEquals($act->objects[0]->link, 'http://example.org/2003/12/13/atom03.html');
|
||||
$this->assertEquals(ActivityObject::NOTE, $act->objects[0]->type);
|
||||
$this->assertEquals('urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a', $act->objects[0]->id);
|
||||
$this->assertEquals('Atom-Powered Robots Run Amok', $act->objects[0]->title);
|
||||
$this->assertEquals('Some text.', $act->objects[0]->summary);
|
||||
$this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->objects[0]->link);
|
||||
|
||||
$this->assertFalse(empty($act->context));
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@media screen, projection, tv {
|
||||
* { margin:0; padding:0; }
|
||||
img { display:block; border:0; }
|
||||
a abbr { cursor: pointer; border-bottom:0; }
|
||||
|
@ -857,6 +858,9 @@ display:inline;
|
|||
display:inline;
|
||||
margin-right:7px;
|
||||
}
|
||||
.entity_tags li:before {
|
||||
content:'\0009';
|
||||
}
|
||||
|
||||
.aside .section {
|
||||
margin-bottom:29px;
|
||||
|
@ -925,7 +929,7 @@ display:inline;
|
|||
}
|
||||
|
||||
.profile .entity_profile .fn,
|
||||
.profile .entity_profile .location {
|
||||
.profile .entity_profile .label {
|
||||
margin-left:11px;
|
||||
margin-bottom:4px;
|
||||
width:auto;
|
||||
|
@ -1284,7 +1288,18 @@ height:16px;
|
|||
position:relative;
|
||||
padding-left:16px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
.notice .attachment.more {
|
||||
text-indent:-9999px;
|
||||
width:16px;
|
||||
height:16px;
|
||||
display:inline-block;
|
||||
overflow:hidden;
|
||||
vertical-align:middle;
|
||||
margin-left:4px;
|
||||
}
|
||||
|
||||
#attachments .attachment,
|
||||
.notice .attachment.more {
|
||||
padding-left:0;
|
||||
}
|
||||
.notice .attachment img {
|
||||
|
@ -1326,7 +1341,7 @@ margin-bottom:0;
|
|||
padding:11px;
|
||||
min-height:auto;
|
||||
}
|
||||
#jOverlayContent .external span {
|
||||
#jOverlayContent .entry-title {
|
||||
display:block;
|
||||
margin-bottom:11px;
|
||||
}
|
||||
|
@ -1677,3 +1692,34 @@ width:auto;
|
|||
#bookmarklet #wrap {
|
||||
min-width:0;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
||||
|
||||
@media print {
|
||||
a:after { background-color:#FFFFFF; }
|
||||
a:not([href^="#"]):after { content:" <"attr(href)"> "; }
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
}/*end of @media print*/
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
/** theme: base
|
||||
*
|
||||
* @package StatusNet
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @copyright 2009 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
a:after { background-color:#fff; }
|
||||
a:not([href^="#"]):after { content:" ( "attr(href)" ) "; }
|
||||
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
|
@ -1,163 +0,0 @@
|
|||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
|
||||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
*{padding: 0; margin: 0;}
|
||||
|
||||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
|
||||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
#TB_window {
|
||||
font: 12px Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
#TB_secondLine {
|
||||
font: 10px Arial, Helvetica, sans-serif;
|
||||
color:#666666;
|
||||
}
|
||||
|
||||
#TB_window a:link {color: #666666;}
|
||||
#TB_window a:visited {color: #666666;}
|
||||
#TB_window a:hover {color: #000;}
|
||||
#TB_window a:active {color: #666666;}
|
||||
#TB_window a:focus{color: #666666;}
|
||||
|
||||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
|
||||
/* ----------------------------------------------------------------------------------------------------------------*/
|
||||
#TB_overlay {
|
||||
position: fixed;
|
||||
z-index:100;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
height:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}
|
||||
.TB_overlayBG {
|
||||
background-color:#000;
|
||||
filter:alpha(opacity=75);
|
||||
-moz-opacity: 0.75;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
* html #TB_overlay { /* ie6 hack */
|
||||
position: absolute;
|
||||
height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
|
||||
}
|
||||
|
||||
#TB_window {
|
||||
position: fixed;
|
||||
background: #ffffff;
|
||||
z-index: 102;
|
||||
color:#000000;
|
||||
display:none;
|
||||
border: 4px solid #525252;
|
||||
text-align:left;
|
||||
top:50%;
|
||||
left:50%;
|
||||
}
|
||||
|
||||
* html #TB_window { /* ie6 hack */
|
||||
position: absolute;
|
||||
margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
|
||||
}
|
||||
|
||||
#TB_window img#TB_Image {
|
||||
display:block;
|
||||
margin: 15px 0 0 15px;
|
||||
border-right: 1px solid #ccc;
|
||||
border-bottom: 1px solid #ccc;
|
||||
border-top: 1px solid #666;
|
||||
border-left: 1px solid #666;
|
||||
}
|
||||
|
||||
#TB_caption{
|
||||
height:25px;
|
||||
padding:7px 30px 10px 25px;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#TB_closeWindow{
|
||||
height:25px;
|
||||
padding:11px 25px 10px 0;
|
||||
float:right;
|
||||
}
|
||||
|
||||
#TB_closeAjaxWindow{
|
||||
padding:7px 10px 5px 0;
|
||||
margin-bottom:1px;
|
||||
text-align:right;
|
||||
float:right;
|
||||
}
|
||||
|
||||
#TB_ajaxWindowTitle{
|
||||
float:left;
|
||||
padding:7px 0 5px 10px;
|
||||
margin-bottom:1px;
|
||||
}
|
||||
|
||||
#TB_title{
|
||||
background-color:#e8e8e8;
|
||||
height:27px;
|
||||
}
|
||||
|
||||
#TB_ajaxContent{
|
||||
clear:both;
|
||||
padding:2px 15px 15px 15px;
|
||||
overflow:auto;
|
||||
text-align:left;
|
||||
line-height:1.4em;
|
||||
}
|
||||
|
||||
#TB_ajaxContent.TB_modal{
|
||||
padding:15px;
|
||||
}
|
||||
|
||||
#TB_ajaxContent p{
|
||||
padding:5px 0px 5px 0px;
|
||||
}
|
||||
|
||||
#TB_load{
|
||||
position: fixed;
|
||||
display:none;
|
||||
height:13px;
|
||||
width:208px;
|
||||
z-index:103;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
|
||||
}
|
||||
|
||||
* html #TB_load { /* ie6 hack */
|
||||
position: absolute;
|
||||
margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
|
||||
}
|
||||
|
||||
#TB_HideSelect{
|
||||
z-index:99;
|
||||
position:fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color:#fff;
|
||||
border:none;
|
||||
filter:alpha(opacity=0);
|
||||
-moz-opacity: 0;
|
||||
opacity: 0;
|
||||
height:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
* html #TB_HideSelect { /* ie6 hack */
|
||||
position: absolute;
|
||||
height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
|
||||
}
|
||||
|
||||
#TB_iframeContent{
|
||||
clear:both;
|
||||
border:none;
|
||||
margin-bottom:-1px;
|
||||
margin-top:1px;
|
||||
_margin-bottom:1px;
|
||||
}
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
@ -1,12 +1,13 @@
|
|||
/** theme: biz base
|
||||
*
|
||||
* @package StatusNet
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @copyright 2009 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@media screen, projection, tv {
|
||||
* { margin:0; padding:0; }
|
||||
img { display:block; border:0; }
|
||||
a abbr { cursor: pointer; border-bottom:0; }
|
||||
|
@ -848,7 +849,8 @@ margin-right:11px;
|
|||
|
||||
/* NOTICE */
|
||||
.notice,
|
||||
.profile {
|
||||
.profile,
|
||||
.application {
|
||||
position:relative;
|
||||
padding-top:11px;
|
||||
padding-bottom:11px;
|
||||
|
@ -861,10 +863,15 @@ border-top-style:dotted;
|
|||
.notices li {
|
||||
list-style-type:none;
|
||||
}
|
||||
.notices li.hover {
|
||||
border-radius:4px;
|
||||
-moz-border-radius:4px;
|
||||
-webkit-border-radius:4px;
|
||||
.notices .notices {
|
||||
margin-top:7px;
|
||||
margin-left:2%;
|
||||
width:98%;
|
||||
float:left;
|
||||
}
|
||||
.mark-top {
|
||||
border-top-width:1px;
|
||||
border-top-style:solid;
|
||||
}
|
||||
|
||||
/* NOTICES */
|
||||
|
@ -995,25 +1002,22 @@ text-transform:lowercase;
|
|||
|
||||
.dialogbox {
|
||||
position:absolute;
|
||||
top:-4px;
|
||||
right:29px;
|
||||
top:-1px;
|
||||
right:-1px;
|
||||
z-index:9;
|
||||
min-width:199px;
|
||||
float:none;
|
||||
background-color:#FFF;
|
||||
padding:11px;
|
||||
border-radius:7px;
|
||||
-moz-border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#DDDDDD;
|
||||
-moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7);
|
||||
}
|
||||
|
||||
.dialogbox legend {
|
||||
display:block !important;
|
||||
margin-right:18px;
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
.dialogbox button.close {
|
||||
|
@ -1022,11 +1026,22 @@ right:3px;
|
|||
top:3px;
|
||||
}
|
||||
|
||||
.dialogbox .form_guide {
|
||||
font-weight:normal;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.dialogbox .submit_dialogbox {
|
||||
font-weight:bold;
|
||||
text-indent:0;
|
||||
min-width:46px;
|
||||
}
|
||||
.dialogbox input {
|
||||
padding-left:4px;
|
||||
}
|
||||
.dialogbox fieldset {
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing,
|
||||
|
@ -1102,6 +1117,104 @@ width:16px;
|
|||
height:16px;
|
||||
}
|
||||
|
||||
.notice .attachment {
|
||||
position:relative;
|
||||
padding-left:16px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
text-indent:-9999px;
|
||||
width:16px;
|
||||
height:16px;
|
||||
display:inline-block;
|
||||
overflow:hidden;
|
||||
vertical-align:middle;
|
||||
margin-left:4px;
|
||||
}
|
||||
|
||||
#attachments .attachment,
|
||||
.notice .attachment.more {
|
||||
padding-left:0;
|
||||
}
|
||||
.notice .attachment img {
|
||||
position:absolute;
|
||||
top:18px;
|
||||
left:0;
|
||||
z-index:99;
|
||||
}
|
||||
#shownotice .notice .attachment img {
|
||||
position:static;
|
||||
}
|
||||
|
||||
#attachments {
|
||||
clear:both;
|
||||
float:left;
|
||||
width:100%;
|
||||
margin-top:18px;
|
||||
}
|
||||
#attachments dt {
|
||||
font-weight:bold;
|
||||
font-size:1.3em;
|
||||
margin-bottom:4px;
|
||||
}
|
||||
|
||||
#attachments ol li {
|
||||
margin-bottom:18px;
|
||||
list-style-type:decimal;
|
||||
float:left;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
#jOverlayContent,
|
||||
#jOverlayContent #content,
|
||||
#jOverlayContent #content_inner {
|
||||
width: auto !important;
|
||||
margin-bottom:0;
|
||||
}
|
||||
#jOverlayContent #content {
|
||||
padding:11px;
|
||||
min-height:auto;
|
||||
}
|
||||
#jOverlayContent .entry-title {
|
||||
display:block;
|
||||
margin-bottom:11px;
|
||||
}
|
||||
#jOverlayContent button {
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
}
|
||||
#jOverlayContent h1 {
|
||||
max-width:425px;
|
||||
}
|
||||
#jOverlayContent #content {
|
||||
border-radius:7px;
|
||||
-moz-border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
}
|
||||
#jOverlayLoading {
|
||||
top:5%;
|
||||
left:40%;
|
||||
}
|
||||
#attachment_view img {
|
||||
max-width:480px;
|
||||
max-height:480px;
|
||||
}
|
||||
#attachment_view #oembed_info {
|
||||
margin-top:11px;
|
||||
}
|
||||
#attachment_view #oembed_info dt,
|
||||
#attachment_view #oembed_info dd {
|
||||
float:left;
|
||||
}
|
||||
#attachment_view #oembed_info dt {
|
||||
clear:left;
|
||||
margin-right:11px;
|
||||
font-weight:bold;
|
||||
}
|
||||
#attachment_view #oembed_info dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
#usergroups #new_group {
|
||||
float: left;
|
||||
margin-right: 2em;
|
||||
|
@ -1358,3 +1471,34 @@ display:none;
|
|||
.guide {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
||||
|
||||
@media print {
|
||||
a:after { background-color:#FFFFFF; }
|
||||
a:not([href^="#"]):after { content:" <"attr(href)"> "; }
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
}/*end of @media print*/
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@import url(base.css);
|
||||
@import url(base.css) screen, projection, tv, print;
|
||||
|
||||
@media screen, projection, tv {
|
||||
html {
|
||||
background-color:#144A6E;
|
||||
}
|
||||
|
@ -22,7 +23,7 @@ background:#144A6E url(../images/illustrations/illu_pattern-01.png) repeat-x;
|
|||
}
|
||||
|
||||
address {
|
||||
margin-right:7.18%;
|
||||
margin-right:5.7%;
|
||||
}
|
||||
|
||||
input, textarea, select {
|
||||
|
@ -205,15 +206,26 @@ button.close,
|
|||
.form_user_unsubscribe input.submit,
|
||||
.form_group_join input.submit,
|
||||
.form_user_subscribe input.submit,
|
||||
.form_remote_authorize input.submit,
|
||||
.entity_subscribe a,
|
||||
.entity_moderation p,
|
||||
.entity_sandbox input.submit,
|
||||
.entity_silence input.submit,
|
||||
.entity_delete input.submit,
|
||||
.entity_role p,
|
||||
.entity_role_administrator input.submit,
|
||||
.entity_role_moderator input.submit,
|
||||
.notice-options .repeated,
|
||||
.form_notice label[for=notice_data-geo],
|
||||
button.minimize,
|
||||
.form_reset_key input.submit {
|
||||
.form_reset_key input.submit,
|
||||
.entity_clear input.submit,
|
||||
.entity_flag input.submit,
|
||||
.entity_flag p,
|
||||
.entity_subscribe input.submit,
|
||||
#realtime_play,
|
||||
#realtime_pause,
|
||||
#realtime_popup {
|
||||
background-image:url(../../base/images/icons/icons-01.gif);
|
||||
background-repeat:no-repeat;
|
||||
background-color:transparent;
|
||||
|
@ -241,7 +253,9 @@ border-color:#FFFFFF;
|
|||
#content,
|
||||
#site_nav_local_views .current a,
|
||||
.entity_send-a-message .form_notice,
|
||||
.entity_moderation:hover ul {
|
||||
.entity_moderation:hover ul,
|
||||
.entity_role:hover ul,
|
||||
.dialogbox {
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
|
@ -352,12 +366,37 @@ background-position: 5px -1511px;
|
|||
.form_reset_key input.submit {
|
||||
background-position: 5px -1973px;
|
||||
}
|
||||
.entity_clear input.submit {
|
||||
background-position: 5px -2039px;
|
||||
}
|
||||
.entity_flag input.submit,
|
||||
.entity_flag p {
|
||||
background-position: 5px -2105px;
|
||||
}
|
||||
.entity_subscribe input.accept {
|
||||
background-position: 5px -2171px;
|
||||
}
|
||||
.entity_subscribe input.reject {
|
||||
background-position: 5px -2237px;
|
||||
}
|
||||
#realtime_play {
|
||||
background-position: 0 -2308px;
|
||||
}
|
||||
#realtime_pause {
|
||||
background-position: 0 -2374px;
|
||||
}
|
||||
#realtime_popup {
|
||||
background-position: 0 -1714px;
|
||||
}
|
||||
|
||||
|
||||
/* NOTICES */
|
||||
.notice .attachment {
|
||||
background-position:0 -394px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
background-position:0 -2770px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
|
@ -380,14 +419,19 @@ background-position:0 -1582px;
|
|||
background-position:0 -1648px;
|
||||
}
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
.opaque {
|
||||
opacity:1 !important;
|
||||
}
|
||||
div.notice-options a,
|
||||
div.notice-options input {
|
||||
font-family:sans-serif;
|
||||
|
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 9.9 KiB |
|
@ -7,6 +7,7 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@media screen, projection, tv {
|
||||
* { margin:0; padding:0; }
|
||||
img { display:block; border:0; }
|
||||
a abbr { cursor: pointer; border-bottom:0; }
|
||||
|
@ -872,7 +873,7 @@ display:inline;
|
|||
}
|
||||
|
||||
.profile .entity_profile .fn,
|
||||
.profile .entity_profile .location {
|
||||
.profile .entity_profile .label {
|
||||
margin-left:11px;
|
||||
margin-bottom:4px;
|
||||
width:auto;
|
||||
|
@ -900,7 +901,8 @@ margin-right:11px;
|
|||
|
||||
/* NOTICE */
|
||||
.notice,
|
||||
.profile {
|
||||
.profile,
|
||||
.application {
|
||||
position:relative;
|
||||
padding-top:11px;
|
||||
padding-bottom:11px;
|
||||
|
@ -1031,25 +1033,22 @@ left:0;
|
|||
|
||||
.dialogbox {
|
||||
position:absolute;
|
||||
top:-4px;
|
||||
right:29px;
|
||||
top:-1px;
|
||||
right:-1px;
|
||||
z-index:9;
|
||||
min-width:199px;
|
||||
float:none;
|
||||
background-color:#FFF;
|
||||
padding:11px;
|
||||
border-radius:7px;
|
||||
-moz-border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#DDDDDD;
|
||||
-moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7);
|
||||
}
|
||||
|
||||
.dialogbox legend {
|
||||
display:block !important;
|
||||
margin-right:18px;
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
.dialogbox button.close {
|
||||
|
@ -1058,9 +1057,21 @@ right:3px;
|
|||
top:3px;
|
||||
}
|
||||
|
||||
.dialogbox .form_guide {
|
||||
font-weight:normal;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.dialogbox .submit_dialogbox {
|
||||
text-indent:0;
|
||||
font-weight:bold;
|
||||
text-indent:0;
|
||||
min-width:46px;
|
||||
}
|
||||
.dialogbox input {
|
||||
padding-left:4px;
|
||||
}
|
||||
.dialogbox fieldset {
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
.notice-options {
|
||||
|
@ -1554,7 +1565,8 @@ display:none;
|
|||
}
|
||||
|
||||
#public #core,
|
||||
#showstream #core {
|
||||
#showstream #core,
|
||||
#showgroup #core {
|
||||
margin-top:10em;
|
||||
}
|
||||
#public.user_in #core,
|
||||
|
@ -1651,7 +1663,8 @@ background-color:transparent;
|
|||
}
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing {
|
||||
#core a.processing,
|
||||
.dialogbox.processing .submit_dialogbox {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
cursor:wait;
|
||||
text-indent:-9999px;
|
||||
|
@ -1806,7 +1819,9 @@ border-color:#FFFFFF;
|
|||
#content,
|
||||
#site_nav_local_views .current a,
|
||||
.entity_send-a-message .form_notice,
|
||||
.entity_moderation:hover ul {
|
||||
.entity_moderation:hover ul,
|
||||
.entity_role:hover ul,
|
||||
.dialogbox {
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
|
@ -1938,6 +1953,9 @@ background-position: 0 -1714px;
|
|||
.notice .attachment {
|
||||
background-position:0 -394px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
background-position:0 -2770px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
|
@ -1960,10 +1978,12 @@ background-position:0 -1582px;
|
|||
background-position:0 -1648px;
|
||||
}
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
|
@ -2098,4 +2118,33 @@ border-left-color:#FFFFFF;
|
|||
#footer {
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
||||
|
||||
@media print {
|
||||
a:after { background-color:#FFFFFF; }
|
||||
a:not([href^="#"]):after { content:" <"attr(href)"> "; }
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
}/*end of @media print*/
|
||||
|
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 9.9 KiB |
|
@ -7,8 +7,9 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@import url(../../base/css/display.css);
|
||||
@import url(../../base/css/display.css) screen, projection, tv, print;
|
||||
|
||||
@media screen, projection, tv {
|
||||
body,
|
||||
a:active {
|
||||
background-color:#CEE1E9;
|
||||
|
@ -213,7 +214,7 @@ background-color:transparent;
|
|||
}
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing,
|
||||
#core a.processing,
|
||||
.dialogbox.processing .submit_dialogbox {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
}
|
||||
|
@ -410,6 +411,9 @@ background-position: 0 -1714px;
|
|||
.notice .attachment {
|
||||
background-position:0 -394px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
background-position:0 -2770px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
|
@ -432,10 +436,12 @@ background-position:0 -1582px;
|
|||
background-position:0 -1648px;
|
||||
}
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
|
@ -443,6 +449,7 @@ opacity:1;
|
|||
.opaque {
|
||||
opacity:1 !important;
|
||||
}
|
||||
.attachment.more,
|
||||
.notice-options a,
|
||||
.notice-options input {
|
||||
font-family:sans-serif;
|
||||
|
@ -450,6 +457,12 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
|||
-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
}
|
||||
.attachment.more:focus {
|
||||
box-shadow:none;
|
||||
-moz-box-shadow:none;
|
||||
-webkit-box-shadow:none;
|
||||
outline:none;
|
||||
}
|
||||
#content .notices li:hover,
|
||||
#content .applications li:hover,
|
||||
#content tbody tr:hover {
|
||||
|
@ -504,3 +517,4 @@ background-position:90% 47%;
|
|||
background-position:10% 47%;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@media screen, projection, tv {
|
||||
* { margin:0; padding:0; }
|
||||
img { display:block; border:0; }
|
||||
a abbr { cursor: pointer; border-bottom:0; }
|
||||
|
@ -700,7 +701,8 @@ margin-right:11px;
|
|||
|
||||
/* NOTICE */
|
||||
.notice,
|
||||
.profile {
|
||||
.profile,
|
||||
.application {
|
||||
position:relative;
|
||||
padding-top:11px;
|
||||
padding-bottom:11px;
|
||||
|
@ -708,11 +710,21 @@ clear:both;
|
|||
float:left;
|
||||
width:100%;
|
||||
border-top-width:1px;
|
||||
border-top-style:dashed;
|
||||
border-top-style:dotted;
|
||||
}
|
||||
.notices li {
|
||||
list-style-type:none;
|
||||
}
|
||||
.notices .notices {
|
||||
margin-top:7px;
|
||||
margin-left:2%;
|
||||
width:98%;
|
||||
float:left;
|
||||
}
|
||||
.mark-top {
|
||||
border-top-width:1px;
|
||||
border-top-style:solid;
|
||||
}
|
||||
|
||||
|
||||
/* NOTICES */
|
||||
|
@ -812,75 +824,249 @@ text-transform:lowercase;
|
|||
}
|
||||
|
||||
|
||||
.notice-options {
|
||||
padding-left:2%;
|
||||
.notice .notice-options a,
|
||||
.notice .notice-options input {
|
||||
float:left;
|
||||
width:50%;
|
||||
position:relative;
|
||||
font-size:0.95em;
|
||||
width:12.5%;
|
||||
float:right;
|
||||
font-size:1.025em;
|
||||
}
|
||||
|
||||
.notice-options a {
|
||||
float:left;
|
||||
.notice div.entry-content .timestamp {
|
||||
display:inline-block;
|
||||
}
|
||||
.notice-options .notice_delete,
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor {
|
||||
position:absolute;
|
||||
top:0;
|
||||
|
||||
.entry-content .repeat {
|
||||
display:block;
|
||||
}
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor {
|
||||
.entry-content .repeat .photo {
|
||||
float:none;
|
||||
margin-right:1px;
|
||||
position:relative;
|
||||
top:4px;
|
||||
left:0;
|
||||
}
|
||||
.notice-options .notice_reply {
|
||||
left:29px;
|
||||
}
|
||||
.notice-options .notice_delete {
|
||||
right:0;
|
||||
}
|
||||
.notice-options .notice_reply dt {
|
||||
display:none;
|
||||
|
||||
.dialogbox {
|
||||
position:absolute;
|
||||
top:-1px;
|
||||
right:-1px;
|
||||
z-index:9;
|
||||
float:none;
|
||||
padding:11px;
|
||||
border-radius:7px;
|
||||
-moz-border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
}
|
||||
|
||||
.dialogbox legend {
|
||||
display:block !important;
|
||||
margin-right:18px;
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
.dialogbox button.close {
|
||||
position:absolute;
|
||||
right:3px;
|
||||
top:3px;
|
||||
}
|
||||
|
||||
.dialogbox .form_guide {
|
||||
font-weight:normal;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.dialogbox .submit_dialogbox {
|
||||
font-weight:bold;
|
||||
text-indent:0;
|
||||
min-width:46px;
|
||||
}
|
||||
.dialogbox input {
|
||||
padding-left:4px;
|
||||
}
|
||||
.dialogbox fieldset {
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing,
|
||||
.dialogbox.processing .submit_dialogbox {
|
||||
cursor:wait;
|
||||
outline:none;
|
||||
text-indent:-9999px;
|
||||
}
|
||||
|
||||
.form_repeat.dialogbox {
|
||||
top:-4px;
|
||||
right:29px;
|
||||
min-width:199px;
|
||||
}
|
||||
|
||||
.notice-options {
|
||||
position:relative;
|
||||
font-size:0.95em;
|
||||
width:113px;
|
||||
float:right;
|
||||
margin-top:3px;
|
||||
margin-right:4px;
|
||||
}
|
||||
|
||||
.notice-options input,
|
||||
.notice-options a {
|
||||
float:left;
|
||||
}
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .form_repeat,
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor,
|
||||
.notice-options .repeated {
|
||||
float:left;
|
||||
margin-left:14.2%;
|
||||
}
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor {
|
||||
margin-left:0;
|
||||
}
|
||||
.notice-options input,
|
||||
.notice-options a,
|
||||
.notice-options .repeated {
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options input.submit {
|
||||
display:block;
|
||||
border:0;
|
||||
}
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options .notice_delete a {
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .notice_delete {
|
||||
text-decoration:none;
|
||||
padding-left:16px;
|
||||
}
|
||||
|
||||
.notice .notice-options .notice_delete {
|
||||
float:right;
|
||||
}
|
||||
.notice-options form input.submit {
|
||||
width:16px;
|
||||
padding:2px 0;
|
||||
height:16px;
|
||||
padding:0;
|
||||
border-radius:0;
|
||||
-moz-border-radius:0;
|
||||
-webkit-border-radius:0;
|
||||
}
|
||||
|
||||
.notice-options .notice_delete dt,
|
||||
.notice-options .form_repeat legend,
|
||||
.notice-options .form_favor legend,
|
||||
.notice-options .form_disfavor legend {
|
||||
display:none;
|
||||
}
|
||||
.notice-options .notice_delete fieldset,
|
||||
.notice-options .form_repeat fieldset,
|
||||
.notice-options .form_favor fieldset,
|
||||
.notice-options .form_disfavor fieldset {
|
||||
border:0;
|
||||
padding:0;
|
||||
}
|
||||
.notice-options a,
|
||||
.notice-options .repeated {
|
||||
width:16px;
|
||||
height:16px;
|
||||
}
|
||||
|
||||
|
||||
.notice .attachment {
|
||||
position:relative;
|
||||
padding-left:16px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
text-indent:-9999px;
|
||||
width:16px;
|
||||
height:16px;
|
||||
display:inline-block;
|
||||
overflow:hidden;
|
||||
vertical-align:middle;
|
||||
margin-left:4px;
|
||||
}
|
||||
|
||||
#attachments .attachment,
|
||||
.notice .attachment.more {
|
||||
padding-left:0;
|
||||
}
|
||||
.notice .attachment img {
|
||||
position:absolute;
|
||||
top:18px;
|
||||
left:0;
|
||||
z-index:99;
|
||||
}
|
||||
#shownotice .notice .attachment img {
|
||||
position:static;
|
||||
}
|
||||
|
||||
#attachments {
|
||||
clear:both;
|
||||
float:left;
|
||||
width:100%;
|
||||
margin-top:18px;
|
||||
}
|
||||
#attachments dt {
|
||||
font-weight:bold;
|
||||
font-size:1.3em;
|
||||
margin-bottom:4px;
|
||||
}
|
||||
|
||||
#attachments ol li {
|
||||
margin-bottom:18px;
|
||||
list-style-type:decimal;
|
||||
float:left;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
#jOverlayContent,
|
||||
#jOverlayContent #content,
|
||||
#jOverlayContent #content_inner {
|
||||
width: auto !important;
|
||||
margin-bottom:0;
|
||||
}
|
||||
#jOverlayContent #content {
|
||||
padding:11px;
|
||||
min-height:auto;
|
||||
}
|
||||
#jOverlayContent .entry-title {
|
||||
display:block;
|
||||
margin-bottom:11px;
|
||||
}
|
||||
#jOverlayContent button {
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
}
|
||||
#jOverlayContent h1 {
|
||||
max-width:425px;
|
||||
}
|
||||
#jOverlayContent #content {
|
||||
border-radius:7px;
|
||||
-moz-border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
}
|
||||
#jOverlayLoading {
|
||||
top:5%;
|
||||
left:40%;
|
||||
}
|
||||
#attachment_view img {
|
||||
max-width:480px;
|
||||
max-height:480px;
|
||||
}
|
||||
#attachment_view #oembed_info {
|
||||
margin-top:11px;
|
||||
}
|
||||
#attachment_view #oembed_info dt,
|
||||
#attachment_view #oembed_info dd {
|
||||
float:left;
|
||||
}
|
||||
#attachment_view #oembed_info dt {
|
||||
clear:left;
|
||||
margin-right:11px;
|
||||
font-weight:bold;
|
||||
}
|
||||
#attachment_view #oembed_info dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
#usergroups #new_group {
|
||||
float: left;
|
||||
margin-right: 2em;
|
||||
|
@ -1137,3 +1323,34 @@ display:none;
|
|||
.guide {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
||||
|
||||
@media print {
|
||||
a:after { background-color:#FFFFFF; }
|
||||
a:not([href^="#"]):after { content:" <"attr(href)"> "; }
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
}/*end of @media print*/
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@import url(base.css);
|
||||
@import url(base.css) screen, projection, tv, print;
|
||||
|
||||
@media screen, projection, tv {
|
||||
html,
|
||||
body,
|
||||
a:active {
|
||||
|
@ -199,14 +200,19 @@ background:transparent url(../../base/images/icons/twotone/green/disfavourite.gi
|
|||
background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li.hover div.entry-content,
|
||||
.notices li.hover div.notice-options {
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
.opaque {
|
||||
opacity:1 !important;
|
||||
}
|
||||
div.entry-content {
|
||||
color:#ccc;
|
||||
}
|
||||
|
@ -234,3 +240,5 @@ background-position:10% 45%;
|
|||
background-image:url(../../base/images/icons/twotone/green/arrow-right.gif);
|
||||
background-position:90% 45%;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 9.9 KiB |
|
@ -7,8 +7,9 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@import url(../../base/css/display.css);
|
||||
@import url(../../base/css/display.css) screen, projection, tv, print;
|
||||
|
||||
@media screen, projection, tv {
|
||||
body,
|
||||
a:active {
|
||||
background-color:#F0F2F5;
|
||||
|
@ -214,7 +215,7 @@ background-color:transparent;
|
|||
}
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing,
|
||||
#core a.processing,
|
||||
.dialogbox.processing .submit_dialogbox {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
}
|
||||
|
@ -409,6 +410,9 @@ background-position: 0 -1714px;
|
|||
.notice .attachment {
|
||||
background-position:0 -394px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
background-position:0 -2770px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
|
@ -431,10 +435,12 @@ background-position:0 -1582px;
|
|||
background-position:0 -1648px;
|
||||
}
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
|
@ -442,6 +448,7 @@ opacity:1;
|
|||
.opaque {
|
||||
opacity:1 !important;
|
||||
}
|
||||
.attachment.more,
|
||||
.notice-options a,
|
||||
.notice-options input {
|
||||
font-family:sans-serif;
|
||||
|
@ -449,6 +456,12 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
|||
-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
}
|
||||
.attachment.more:focus {
|
||||
box-shadow:none;
|
||||
-moz-box-shadow:none;
|
||||
-webkit-box-shadow:none;
|
||||
outline:none;
|
||||
}
|
||||
#content .notices li:hover,
|
||||
#content .applications li:hover,
|
||||
#content tbody tr:hover {
|
||||
|
@ -503,3 +516,4 @@ background-position:90% 47%;
|
|||
background-position:10% 47%;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@media screen, projection, tv {
|
||||
* { margin:0; padding:0; }
|
||||
img { display:block; border:0; }
|
||||
a abbr { cursor: pointer; border-bottom:0; }
|
||||
|
@ -791,25 +792,30 @@ margin-right:11px;
|
|||
|
||||
/* NOTICE */
|
||||
.notice,
|
||||
.profile {
|
||||
.profile,
|
||||
.application {
|
||||
position:relative;
|
||||
padding:11px 2%;
|
||||
padding-top:11px;
|
||||
padding-bottom:11px;
|
||||
clear:both;
|
||||
float:left;
|
||||
width:95.7%;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
margin-bottom:11px;
|
||||
width:100%;
|
||||
border-top-width:1px;
|
||||
border-top-style:dotted;
|
||||
}
|
||||
.notices li {
|
||||
list-style-type:none;
|
||||
}
|
||||
.notices .notices {
|
||||
margin-top:7px;
|
||||
margin-left:5%;
|
||||
width:95%;
|
||||
margin-left:2%;
|
||||
width:98%;
|
||||
float:left;
|
||||
}
|
||||
.mark-top {
|
||||
border-top-width:1px;
|
||||
border-top-style:solid;
|
||||
}
|
||||
|
||||
#aside_primary .notice,
|
||||
#aside_primary .profile {
|
||||
|
@ -969,36 +975,38 @@ outline:none;
|
|||
text-indent:-9999px;
|
||||
}
|
||||
|
||||
.form_repeat.dialogbox {
|
||||
top:-4px;
|
||||
right:29px;
|
||||
min-width:199px;
|
||||
}
|
||||
|
||||
.notice-options {
|
||||
position:relative;
|
||||
font-size:0.95em;
|
||||
width:90px;
|
||||
width:113px;
|
||||
float:right;
|
||||
margin-right:11px;
|
||||
margin-top:3px;
|
||||
margin-right:4px;
|
||||
}
|
||||
|
||||
.notice-options a {
|
||||
float:left;
|
||||
}
|
||||
.notice-options .notice_delete,
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .form_repeat,
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor {
|
||||
position:absolute;
|
||||
top:0;
|
||||
.notice-options .form_disfavor,
|
||||
.notice-options .repeated {
|
||||
float:left;
|
||||
margin-left:14.2%;
|
||||
}
|
||||
.notice-options .form_favor,
|
||||
.notice-options .form_disfavor {
|
||||
left:0;
|
||||
}
|
||||
.notice-options .notice_reply {
|
||||
left:29px;
|
||||
}
|
||||
.notice-options .notice_delete {
|
||||
right:0;
|
||||
margin-left:0;
|
||||
}
|
||||
.notice-options input,
|
||||
.notice-options a {
|
||||
.notice-options a,
|
||||
.notice-options .repeated {
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
@ -1009,27 +1017,51 @@ border:0;
|
|||
.notice-options .notice_reply,
|
||||
.notice-options .notice_delete {
|
||||
text-decoration:none;
|
||||
padding-left:16px;
|
||||
}
|
||||
.notice .notice-options .notice_delete {
|
||||
float:right;
|
||||
}
|
||||
.notice-options form input.submit {
|
||||
width:16px;
|
||||
padding:2px 0;
|
||||
height:16px;
|
||||
padding:0;
|
||||
border-radius:0;
|
||||
-moz-border-radius:0;
|
||||
-webkit-border-radius:0;
|
||||
}
|
||||
.notice-options .form_repeat legend,
|
||||
.notice-options .form_favor legend,
|
||||
.notice-options .form_disfavor legend {
|
||||
display:none;
|
||||
}
|
||||
.notice-options .form_repeat fieldset,
|
||||
.notice-options .form_favor fieldset,
|
||||
.notice-options .form_disfavor fieldset {
|
||||
border:0;
|
||||
padding:0;
|
||||
}
|
||||
.notice-options a,
|
||||
.notice-options .repeated {
|
||||
width:16px;
|
||||
height:16px;
|
||||
}
|
||||
|
||||
.notice .attachment {
|
||||
position:relative;
|
||||
padding-left:16px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
.notice .attachment.more {
|
||||
text-indent:-9999px;
|
||||
width:16px;
|
||||
height:16px;
|
||||
display:inline-block;
|
||||
overflow:hidden;
|
||||
vertical-align:middle;
|
||||
margin-left:4px;
|
||||
}
|
||||
|
||||
#attachments .attachment,
|
||||
.notice .attachment.more {
|
||||
padding-left:0;
|
||||
}
|
||||
.notice .attachment img {
|
||||
|
@ -1383,3 +1415,34 @@ display:none;
|
|||
.guide {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
||||
|
||||
@media print {
|
||||
a:after { background-color:#FFFFFF; }
|
||||
a:not([href^="#"]):after { content:" <"attr(href)"> "; }
|
||||
img { border:none; }
|
||||
p { orphans: 2; widows: 1; }
|
||||
|
||||
#site_nav_global_primary,
|
||||
#site_nav_local_views,
|
||||
#form_notice,
|
||||
.pagination,
|
||||
#site_nav_global_secondary,
|
||||
.entity_actions,
|
||||
.notice-options,
|
||||
#aside_primary,
|
||||
.form_subscription_edit .submit {
|
||||
display:none;
|
||||
}
|
||||
.timestamp dt, .timestamp dd,
|
||||
.device dt, .device dd {
|
||||
display:inline;
|
||||
}
|
||||
.profiles li,
|
||||
.notices li {
|
||||
margin-bottom:18px;
|
||||
}
|
||||
|
||||
}/*end of @media print*/
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
@import url(base.css);
|
||||
@import url(base.css) screen, projection, tv, print;
|
||||
|
||||
@media screen, projection, tv {
|
||||
html {
|
||||
background:url(../images/illustrations/illu_pigeons-01.png) no-repeat 0 100%;
|
||||
}
|
||||
|
@ -140,7 +141,6 @@ background-color:transparent;
|
|||
color:#000000;
|
||||
}
|
||||
|
||||
|
||||
.aside .section {
|
||||
border-color:#FFFFFF;
|
||||
background-color:#FFFFFF;
|
||||
|
@ -172,6 +172,11 @@ color:#7F1114;
|
|||
color:#FFFFFF;
|
||||
}
|
||||
|
||||
.aside .section .dialogbox {
|
||||
color:#000000;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.section .profile {
|
||||
border-top-color:#87B4C8;
|
||||
|
@ -245,7 +250,7 @@ background-color:transparent;
|
|||
|
||||
|
||||
#wrap form.processing input.submit,
|
||||
.entity_actions a.processing,
|
||||
#core a.processing,
|
||||
.dialogbox.processing .submit_dialogbox {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
}
|
||||
|
@ -253,6 +258,13 @@ background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47
|
|||
background-image:none;
|
||||
}
|
||||
|
||||
.entity_send-a-message .form_notice,
|
||||
.entity_moderation:hover ul,
|
||||
.entity_role:hover ul,
|
||||
.dialogbox {
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
#content,
|
||||
#site_nav_local_views a {
|
||||
border-color:#FFFFFF;
|
||||
|
@ -413,6 +425,9 @@ background-position: 0 -1714px;
|
|||
.notice .attachment {
|
||||
background-position:0 -394px;
|
||||
}
|
||||
.notice .attachment.more {
|
||||
background-position:0 -2770px;
|
||||
}
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
|
@ -435,15 +450,19 @@ background-position:0 -1582px;
|
|||
background-position:0 -1648px;
|
||||
}
|
||||
|
||||
|
||||
.notices .attachment.more,
|
||||
.notices div.entry-content,
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li:hover .attachment.more,
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
.opaque {
|
||||
opacity:1 !important;
|
||||
}
|
||||
div.entry-content {
|
||||
color:#333333;
|
||||
}
|
||||
|
@ -496,3 +515,4 @@ background-position:90% 47%;
|
|||
background-position:10% 47%;
|
||||
}
|
||||
|
||||
}/*end of @media screen, projection, tv*/
|
||||
|
|