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*/ | ||||
|   | ||||