Merge remote-tracking branch 'mainline/1.0.x' into people_tags_rebase
Conflicts: lib/profileblock.php theme/default/css/display.css
							
								
								
									
										16
									
								
								EVENTS.txt
									
									
									
									
									
								
							
							
						
						| @@ -1297,3 +1297,19 @@ StartDefaultLocalNav: When showing the default local nav | ||||
| EndDefaultLocalNav: When showing the default local nav | ||||
| - $menu: the menu | ||||
| - $user: current user | ||||
|  | ||||
| StartShowAccountProfileBlock: When showing the profile block for an account | ||||
| - $out: XMLOutputter to append custom output | ||||
| - $profile: the profile being shown | ||||
|  | ||||
| EndShowAccountProfileBlock: After showing the profile block for an account | ||||
| - $out: XMLOutputter to append custom output | ||||
| - $profile: the profile being shown | ||||
|  | ||||
| StartShowGroupProfileBlock: When showing the profile block for a group | ||||
| - $out: XMLOutputter to append custom output | ||||
| - $profile: the profile being shown | ||||
|  | ||||
| EndShowGroupProfileBlock: After showing showing the profile block for a group | ||||
| - $out: XMLOutputter to append custom output | ||||
| - $group: the group being shown | ||||
|   | ||||
| @@ -47,8 +47,11 @@ require_once INSTALLDIR.'/lib/noticelist.php'; | ||||
|  */ | ||||
| class ConversationAction extends Action | ||||
| { | ||||
|     var $id   = null; | ||||
|     var $page = null; | ||||
|     var $id      = null; | ||||
|     var $page    = null; | ||||
|     var $notices = null; | ||||
|  | ||||
|     const MAX_NOTICES = 500; | ||||
|  | ||||
|     /** | ||||
|      * Initialization. | ||||
| @@ -69,6 +72,19 @@ class ConversationAction extends Action | ||||
|         if (empty($this->page)) { | ||||
|             $this->page = 1; | ||||
|         } | ||||
|  | ||||
|         $cur = common_current_user(); | ||||
|  | ||||
|         if (empty($cur)) { | ||||
|             $profile = null; | ||||
|         } else { | ||||
|             $profile = $cur->getProfile(); | ||||
|         } | ||||
|  | ||||
|         $stream = new ConversationNoticeStream($this->id, $profile); | ||||
|  | ||||
|         $this->notices = $stream->getNotices(0, self::MAX_NOTICES, null, null); | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| @@ -106,11 +122,9 @@ class ConversationAction extends Action | ||||
|      */ | ||||
|     function showContent() | ||||
|     { | ||||
|         $notices = Notice::conversationStream($this->id, null, null); | ||||
|         $tnl = new ThreadedNoticeList($this->notices, $this); | ||||
|  | ||||
|         $ct = new ConversationTree($notices, $this); | ||||
|  | ||||
|         $cnt = $ct->show(); | ||||
|         $cnt = $tnl->show(); | ||||
|     } | ||||
|  | ||||
|     function isReadOnly() | ||||
| @@ -118,173 +132,3 @@ class ConversationAction extends Action | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Conversation tree | ||||
|  * | ||||
|  * The widget class for displaying a hierarchical list of notices. | ||||
|  * | ||||
|  * @category Widget | ||||
|  * @package  StatusNet | ||||
|  * @author   Evan Prodromou <evan@status.net> | ||||
|  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||
|  * @link     http://status.net/ | ||||
|  */ | ||||
| class ConversationTree extends NoticeList | ||||
| { | ||||
|     var $tree  = null; | ||||
|     var $table = null; | ||||
|  | ||||
|     /** | ||||
|      * Show the tree of notices | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     function show() | ||||
|     { | ||||
|         $cnt = $this->_buildTree(); | ||||
|  | ||||
|         $this->out->elementStart('div', array('id' =>'notices_primary')); | ||||
|         // TRANS: Header on conversation page. Hidden by default (h2). | ||||
|         $this->out->element('h2', null, _('Notices')); | ||||
|         $this->out->elementStart('ol', array('class' => 'notices xoxo')); | ||||
|  | ||||
|         if (array_key_exists('root', $this->tree)) { | ||||
|             $rootid = $this->tree['root'][0]; | ||||
|             $this->showNoticePlus($rootid); | ||||
|         } | ||||
|  | ||||
|         $this->out->elementEnd('ol'); | ||||
|         $this->out->elementEnd('div'); | ||||
|  | ||||
|         return $cnt; | ||||
|     } | ||||
|  | ||||
|     function _buildTree() | ||||
|     { | ||||
|         $cnt = 0; | ||||
|  | ||||
|         $this->tree  = array(); | ||||
|         $this->table = array(); | ||||
|  | ||||
|         while ($this->notice->fetch()) { | ||||
|  | ||||
|             $cnt++; | ||||
|  | ||||
|             $id     = $this->notice->id; | ||||
|             $notice = clone($this->notice); | ||||
|  | ||||
|             $this->table[$id] = $notice; | ||||
|  | ||||
|             if (is_null($notice->reply_to)) { | ||||
|                 $this->tree['root'] = array($notice->id); | ||||
|             } else if (array_key_exists($notice->reply_to, $this->tree)) { | ||||
|                 $this->tree[$notice->reply_to][] = $notice->id; | ||||
|             } else { | ||||
|                 $this->tree[$notice->reply_to] = array($notice->id); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $cnt; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Shows a notice plus its list of children. | ||||
|      * | ||||
|      * @param integer $id ID of the notice to show | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     function showNoticePlus($id) | ||||
|     { | ||||
|         $notice = $this->table[$id]; | ||||
|  | ||||
|         // We take responsibility for doing the li | ||||
|  | ||||
|         $this->out->elementStart('li', array('class' => 'hentry notice', | ||||
|                                              'id' => 'notice-' . $id)); | ||||
|  | ||||
|         $item = $this->newListItem($notice); | ||||
|         $item->show(); | ||||
|  | ||||
|         if (array_key_exists($id, $this->tree)) { | ||||
|             $children = $this->tree[$id]; | ||||
|  | ||||
|             $this->out->elementStart('ol', array('class' => 'notices')); | ||||
|  | ||||
|             sort($children); | ||||
|  | ||||
|             foreach ($children as $child) { | ||||
|                 $this->showNoticePlus($child); | ||||
|             } | ||||
|  | ||||
|             $this->out->elementEnd('ol'); | ||||
|         } | ||||
|  | ||||
|         $this->out->elementEnd('li'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Override parent class to return our preferred item. | ||||
|      * | ||||
|      * @param Notice $notice Notice to display | ||||
|      * | ||||
|      * @return NoticeListItem a list item to show | ||||
|      */ | ||||
|     function newListItem($notice) | ||||
|     { | ||||
|         return new ConversationTreeItem($notice, $this->out); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Conversation tree list item | ||||
|  * | ||||
|  * Special class of NoticeListItem for use inside conversation trees. | ||||
|  * | ||||
|  * @category Widget | ||||
|  * @package  StatusNet | ||||
|  * @author   Evan Prodromou <evan@status.net> | ||||
|  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | ||||
|  * @link     http://status.net/ | ||||
|  */ | ||||
| class ConversationTreeItem extends NoticeListItem | ||||
| { | ||||
|     /** | ||||
|      * start a single notice. | ||||
|      * | ||||
|      * The default creates the <li>; we skip, since the ConversationTree | ||||
|      * takes care of that. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     function showStart() | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * finish the notice | ||||
|      * | ||||
|      * The default closes the <li>; we skip, since the ConversationTree | ||||
|      * takes care of that. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     function showEnd() | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * show link to notice conversation page | ||||
|      * | ||||
|      * Since we're only used on the conversation page, we skip this | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     function showContext() | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -66,9 +66,7 @@ class ConversationRepliesAction extends ConversationAction | ||||
|      */ | ||||
|     function showContent() | ||||
|     { | ||||
|         $notices = Notice::conversationStream($this->id, null, null); | ||||
|  | ||||
|         $ct = new FullThreadedNoticeList($notices, $this); | ||||
|         $ct = new FullThreadedNoticeList($this->notices, $this); | ||||
|  | ||||
|         $cnt = $ct->show(); | ||||
|     } | ||||
|   | ||||
| @@ -96,17 +96,21 @@ class Notice extends Memcached_DataObject | ||||
|     const GROUP_SCOPE     = 4; | ||||
|     const FOLLOWER_SCOPE  = 8; | ||||
|  | ||||
|     protected $_profile = -1; | ||||
|  | ||||
|     function getProfile() | ||||
|     { | ||||
|         $profile = Profile::staticGet('id', $this->profile_id); | ||||
|         if ($this->_profile == -1) { | ||||
|             $this->_profile = Profile::staticGet('id', $this->profile_id); | ||||
|  | ||||
|         if (empty($profile)) { | ||||
|             // TRANS: Server exception thrown when a user profile for a notice cannot be found. | ||||
|             // TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number). | ||||
|             throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id)); | ||||
|             if (empty($this->_profile)) { | ||||
|                 // TRANS: Server exception thrown when a user profile for a notice cannot be found. | ||||
|                 // TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number). | ||||
|                 throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id)); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $profile; | ||||
|         return $this->_profile; | ||||
|     } | ||||
|  | ||||
|     function delete() | ||||
|   | ||||
| @@ -52,9 +52,15 @@ class Profile extends Memcached_DataObject | ||||
|     /* the code above is auto generated do not remove the tag below */ | ||||
|     ###END_AUTOCODE | ||||
|  | ||||
|     protected $_user = -1;  // Uninitialized value distinct from null | ||||
|  | ||||
|     function getUser() | ||||
|     { | ||||
|         return User::staticGet('id', $this->id); | ||||
|         if ($this->_user == -1) { | ||||
|             $this->_user = User::staticGet('id', $this->id); | ||||
|         } | ||||
|  | ||||
|         return $this->_user; | ||||
|     } | ||||
|  | ||||
|     function getAvatar($width, $height=null) | ||||
| @@ -667,34 +673,6 @@ class Profile extends Memcached_DataObject | ||||
|  | ||||
|     function hasFave($notice) | ||||
|     { | ||||
|         $cache = Cache::instance(); | ||||
|  | ||||
|         // XXX: Kind of a hack. | ||||
|  | ||||
|         if (!empty($cache)) { | ||||
|             // This is the stream of favorite notices, in rev chron | ||||
|             // order. This forces it into cache. | ||||
|  | ||||
|             $ids = Fave::idStream($this->id, 0, CachingNoticeStream::CACHE_WINDOW); | ||||
|  | ||||
|             // If it's in the list, then it's a fave | ||||
|  | ||||
|             if (in_array($notice->id, $ids)) { | ||||
|                 return true; | ||||
|             } | ||||
|  | ||||
|             // If we're not past the end of the cache window, | ||||
|             // then the cache has all available faves, so this one | ||||
|             // is not a fave. | ||||
|  | ||||
|             if (count($ids) < CachingNoticeStream::CACHE_WINDOW) { | ||||
|                 return false; | ||||
|             } | ||||
|  | ||||
|             // Otherwise, cache doesn't have all faves; | ||||
|             // fall through to the default | ||||
|         } | ||||
|  | ||||
|         $fave = Fave::pkeyGet(array('user_id' => $this->id, | ||||
|                                     'notice_id' => $notice->id)); | ||||
|         return ((is_null($fave)) ? false : true); | ||||
|   | ||||
| @@ -73,16 +73,21 @@ class User extends Memcached_DataObject | ||||
|     /* the code above is auto generated do not remove the tag below */ | ||||
|     ###END_AUTOCODE | ||||
|  | ||||
|     protected $_profile = -1; | ||||
|  | ||||
|     /** | ||||
|      * @return Profile | ||||
|      */ | ||||
|     function getProfile() | ||||
|     { | ||||
|         $profile = Profile::staticGet('id', $this->id); | ||||
|         if (empty($profile)) { | ||||
|             throw new UserNoProfileException($this); | ||||
|         if ($this->_profile == -1) { // invalid but distinct from null | ||||
|             $this->_profile = Profile::staticGet('id', $this->id); | ||||
|             if (empty($this->_profile)) { | ||||
|                 throw new UserNoProfileException($this); | ||||
|             } | ||||
|         } | ||||
|         return $profile; | ||||
|  | ||||
|         return $this->_profile; | ||||
|     } | ||||
|  | ||||
|     function isSubscribed($other) | ||||
|   | ||||
| @@ -307,4 +307,14 @@ class AccountProfileBlock extends ProfileBlock | ||||
|                        // TRANS: Link text for link that will subscribe to a remote profile. | ||||
|                        _m('BUTTON','Subscribe')); | ||||
|     } | ||||
|  | ||||
|     function show() | ||||
|     { | ||||
|         $this->out->elementStart('div', 'account_profile_block section'); | ||||
|         if (Event::handle('StartShowAccountProfileBlock', array($this->out, $this->profile))) { | ||||
|             parent::show(); | ||||
|             Event::handle('EndShowAccountProfileBlock', array($this->out, $this->profile)); | ||||
|         } | ||||
|         $this->out->elementEnd('div'); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -46,10 +46,11 @@ if (!defined('STATUSNET')) { | ||||
|  */ | ||||
| class ConversationNoticeStream extends ScopingNoticeStream | ||||
| { | ||||
|     function __construct($id) | ||||
|     function __construct($id, $profile = null) | ||||
|     { | ||||
|         parent::__construct(new CachingNoticeStream(new RawConversationNoticeStream($id), | ||||
|                                                     'notice:conversation_ids:'.$id)); | ||||
|                                                     'notice:conversation_ids:'.$id), | ||||
|                             $profile); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -98,9 +99,6 @@ class RawConversationNoticeStream extends NoticeStream | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         $notice->free(); | ||||
|         $notice = NULL; | ||||
|  | ||||
|         return $ids; | ||||
|     } | ||||
| } | ||||
| @@ -317,7 +317,9 @@ $default = | ||||
|                                  'QnA' => null, | ||||
|                                  'SearchSub' => null, | ||||
|                                  'TagSub' => null, | ||||
|                                  'OpenID' => null), | ||||
|                                  'OpenID' => null, | ||||
|                                  'Directory' => null, | ||||
|                                  'ExtendedProfile' => null), | ||||
|               'locale_path' => false, // Set to a path to use *instead of* each plugin's own locale subdirectories | ||||
|               'server' => null, | ||||
|               'sslserver' => null, | ||||
|   | ||||
| @@ -123,4 +123,14 @@ class GroupProfileBlock extends ProfileBlock | ||||
|         $this->out->elementEnd('ul'); | ||||
|         $this->out->elementEnd('div'); | ||||
|     } | ||||
|  | ||||
|     function show() | ||||
|     { | ||||
|         $this->out->elementStart('div', 'group_profile_block section'); | ||||
|         if (Event::handle('StartShowGroupProfileBlock', array($this->out, $this->group))) { | ||||
|             parent::show(); | ||||
|             Event::handle('EndShowGroupProfileBlock', array($this->out, $this->group)); | ||||
|         } | ||||
|         $this->out->elementEnd('div'); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -56,16 +56,33 @@ abstract class ProfileBlock extends Widget | ||||
|  | ||||
|     function show() | ||||
|     { | ||||
|         $this->out->elementStart('div', 'profile_block section'); | ||||
|         $this->showActions(); | ||||
|         $this->showAvatar(); | ||||
|         $this->showName(); | ||||
|         $this->showLocation(); | ||||
|         $this->showHomepage(); | ||||
|         $this->showDescription(); | ||||
|         $this->showTags(); | ||||
|     } | ||||
|  | ||||
|     function showAvatar() | ||||
|     { | ||||
|         $size = $this->avatarSize(); | ||||
|  | ||||
|         $this->out->element('img', array('src' => $this->avatar(), | ||||
|                                          'class' => 'profile_block_avatar', | ||||
|                                          'alt' => $this->name(), | ||||
|                                          'width' => $size, | ||||
|                                          'height' => $size)); | ||||
|         $this->out->element( | ||||
|             'img', | ||||
|             array( | ||||
|                 'src'  => $this->avatar(), | ||||
|                 'class'  => 'ur_face', | ||||
|                 'alt'    => $this->name(), | ||||
|                 'width'  => $size, | ||||
|                 'height' => $size | ||||
|             ) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     function showName() | ||||
|     { | ||||
|         $name = $this->name(); | ||||
|  | ||||
|         if (!empty($name)) { | ||||
| @@ -79,31 +96,35 @@ abstract class ProfileBlock extends Widget | ||||
|             } | ||||
|             $this->out->elementEnd('p'); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     function showDescription() | ||||
|     { | ||||
|         $description = $this->description(); | ||||
|  | ||||
|         if (!empty($description)) { | ||||
|             $this->out->element( | ||||
|                 'p', | ||||
|                 'profile_block_description', | ||||
|                 $description | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     function showLocation() | ||||
|     { | ||||
|         $location = $this->location(); | ||||
|  | ||||
|         if (!empty($location)) { | ||||
|             $this->out->element('p', 'profile_block_location', $location); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|         $homepage = $this->homepage(); | ||||
|  | ||||
|     function showHomepage() | ||||
|     { | ||||
|         if (!empty($homepage)) { | ||||
|             $this->out->element('a', 'profile_block_homepage', $homepage); | ||||
|         } | ||||
|  | ||||
|         $description = $this->description(); | ||||
|  | ||||
|         if (!empty($description)) { | ||||
|             $this->out->element('p', | ||||
|                                 'profile_block_description', | ||||
|                                 $description); | ||||
|         } | ||||
|  | ||||
|         $this->showTags(); | ||||
|         $this->showActions(); | ||||
|  | ||||
|         $this->out->elementEnd('div'); | ||||
|     } | ||||
|  | ||||
|     function avatarSize() | ||||
|   | ||||
| @@ -329,6 +329,11 @@ class EventPlugin extends MicroappPlugin | ||||
|     { | ||||
|         $rsvp = RSVP::fromNotice($notice); | ||||
|  | ||||
|         if (empty($rsvp)) { | ||||
|             $out->element('p', null, _('Deleted.')); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $out->elementStart('div', 'rsvp'); | ||||
|         $out->raw($rsvp->asHTML()); | ||||
|         $out->elementEnd('div'); | ||||
| @@ -340,8 +345,10 @@ class EventPlugin extends MicroappPlugin | ||||
|         $profile = $notice->getProfile(); | ||||
|         $event   = Happening::fromNotice($notice); | ||||
|  | ||||
|         assert(!empty($event)); | ||||
|         assert(!empty($profile)); | ||||
|         if (empty($event)) { | ||||
|             $out->element('p', null, _('Deleted.')); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $out->elementStart('div', 'vevent event'); // VEVENT IN | ||||
|  | ||||
|   | ||||
| @@ -115,13 +115,12 @@ class ExtendedProfilePlugin extends Plugin | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     function onStartProfilePageActionsSection(HTMLOutputter $out, Profile $profile) { | ||||
|     function onEndShowAccountProfileBlock(HTMLOutputter $out, Profile $profile) { | ||||
|         $user = User::staticGet('id', $profile->id); | ||||
|         if ($user) { | ||||
|             $url = common_local_url('profiledetail', array('nickname' => $user->nickname)); | ||||
|             // TRANS: Link text on user profile page leading to extended profile page. | ||||
|             $out->element('a', array('href' => $url, 'class' => 'profiledetail'), _m('More details...')); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -788,16 +788,16 @@ class Facebookclient | ||||
|         $subject = _m('Your Facebook connection has been removed'); | ||||
|  | ||||
|         // TRANS: E-mail body. %1$s is a username, %2$s is the StatusNet sitename. | ||||
|         $msg = _m('Hi %1$s,\n\n'. | ||||
|                  'We are sorry to inform you we are unable to publish your notice to\n'. | ||||
|                  'Facebook, and have removed the connection between your %2$s account and\n'. | ||||
|                  'Facebook.\n\n'. | ||||
|                  'This may have happened because you have removed permission for %2$s\n'. | ||||
|                  'to post on your behalf, or perhaps you have deactivated your Facebook\n'. | ||||
|                  'account. You can reconnect your %2$s account to Facebook at any time by\n'. | ||||
|                  'logging in with Facebook again.\n\n'. | ||||
|                  'Sincerely,\n\n'. | ||||
|                  '%2$s\n'); | ||||
|         $msg = _m("Hi %1\$s,\n\n". | ||||
|                   "We are sorry to inform you we are unable to publish your notice to\n". | ||||
|                   "Facebook, and have removed the connection between your %2\$s account and\n". | ||||
|                   "Facebook.\n\n". | ||||
|                   "This may have happened because you have removed permission for %2\$s\n". | ||||
|                   "to post on your behalf, or perhaps you have deactivated your Facebook\n". | ||||
|                   "account. You can reconnect your %2\$s account to Facebook at any time by\n". | ||||
|                   "logging in with Facebook again.\n\n". | ||||
|                   "Sincerely,\n\n". | ||||
|                   "%2\$s\n"); | ||||
|  | ||||
|         $body = sprintf( | ||||
|             $msg, | ||||
| @@ -845,13 +845,13 @@ class Facebookclient | ||||
|  | ||||
|         // TRANS: E-mail body. %1$s is a username, | ||||
|         // TRANS: %2$s is the StatusNet sitename, %3$s is the site contact e-mail address. | ||||
|         $msg = _m('Hi %1$s,\n\n'. | ||||
|                  'We have noticed you have deauthorized the Facebook connection for your\n'. | ||||
|                  '%2$s account.  You have not set a password for your %2$s account yet, so\n'. | ||||
|                  'you will not be able to login. If you wish to continue using your %2$s\n'. | ||||
|                  'account, please contact the site administrator (%3$s) to set a password.\n\n'. | ||||
|                  'Sincerely,\n\n'. | ||||
|                  '%2$s\n'); | ||||
|         $msg = _m("Hi %1\$s,\n\n". | ||||
|                   "We have noticed you have deauthorized the Facebook connection for your\n". | ||||
|                   "%2\$s account.  You have not set a password for your %2\$s account yet, so\n". | ||||
|                   "you will not be able to login. If you wish to continue using your %2\$s\n". | ||||
|                   "account, please contact the site administrator (%3\$s) to set a password.\n\n". | ||||
|                   "Sincerely,\n\n". | ||||
|                   "%2\$s\n"); | ||||
|  | ||||
|         $body = sprintf( | ||||
|             $msg, | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| <?php | ||||
| /* | ||||
| StatusNet Plugin: 0.9 | ||||
| Plugin Name: FirePHP | ||||
| Description: Sends StatusNet log output to FirePHP | ||||
| Version: 0.1 | ||||
| Author: Craig Andrews <candrews@integralblue.com> | ||||
| Author URI: http://candrews.integralblue.com/ | ||||
|  * StatusNet Plugin: 0.9 | ||||
|  * Plugin Name: FirePHP | ||||
|  * Description: Sends StatusNet log output to FirePHP | ||||
|  * Version: 0.1 | ||||
|  * Author: Craig Andrews <candrews@integralblue.com> | ||||
|  * Author URI: http://candrews.integralblue.com/ | ||||
| */ | ||||
|  | ||||
| /* | ||||
| @@ -65,6 +65,7 @@ class FirePHPPlugin extends Plugin | ||||
|                             'author' => 'Craig Andrews', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:FirePHP', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('The FirePHP plugin writes StatusNet\'s log output to FirePHP.')); | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| The FirePHP plugin writes StatusNet's log output to FirePHP. | ||||
|  | ||||
| Using FirePHP on production sites can expose sensitive information. | ||||
|     You must protect the security of your application by disabling FirePHP | ||||
|     logging on your live site. | ||||
|  | ||||
| You must protect the security of your application by disabling FirePHP logging | ||||
| on your live site! | ||||
|  | ||||
| Installation | ||||
| ============ | ||||
| @@ -18,4 +19,3 @@ Example | ||||
| ======= | ||||
|  | ||||
| addPlugin('FirePHP', array()); | ||||
|  | ||||
|   | ||||
| @@ -59,7 +59,6 @@ class FollowEveryonePlugin extends Plugin | ||||
|      * @param User    &$newUser    The new user | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      * | ||||
|      */ | ||||
|     function onEndUserRegister(&$newProfile, &$newUser) | ||||
|     { | ||||
| @@ -115,7 +114,6 @@ class FollowEveryonePlugin extends Plugin | ||||
|         $schema = Schema::get(); | ||||
|  | ||||
|         // For storing user-submitted flags on profiles | ||||
|  | ||||
|         $schema->ensureTable('user_followeveryone_prefs', | ||||
|                              array(new ColumnDef('user_id', 'integer', null, | ||||
|                                                  true, 'PRI'), | ||||
| @@ -200,6 +198,7 @@ class FollowEveryonePlugin extends Plugin | ||||
|                             'author' => 'Evan Prodromou', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:FollowEveryone', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('New users follow everyone at registration and are followed in return.')); | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -33,11 +33,11 @@ class ForceGroupPlugin extends Plugin | ||||
|      * List by local nickname. | ||||
|      */ | ||||
|     public $post = array(); | ||||
|      | ||||
|  | ||||
|     /** | ||||
|      * New user registrations will automatically join these groups on | ||||
|      * registration. They're not prevented from leaving, however. | ||||
|      *  | ||||
|      * | ||||
|      * List by local nickname. | ||||
|      */ | ||||
|     public $join = array(); | ||||
|   | ||||
| @@ -121,6 +121,7 @@ class GeoURLPlugin extends Plugin | ||||
|                             'author' => 'Evan Prodromou', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:GeoURL', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('Ping <a href="http://geourl.org/">GeoURL</a> when '. | ||||
|                                'new geolocation-enhanced notices are posted.')); | ||||
|         return true; | ||||
|   | ||||
| @@ -435,7 +435,8 @@ class GeonamesPlugin extends Plugin | ||||
|     function getGeonames($method, $params) | ||||
|     { | ||||
|         if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) { | ||||
|             throw new Exception("skipping due to recent web service timeout"); | ||||
|             // TRANS: Exception thrown when a geo names service is not used because of a recent timeout. | ||||
|             throw new Exception(_m('Skipping due to recent web service timeout.')); | ||||
|         } | ||||
|  | ||||
|         $client = HTTPClient::start(); | ||||
| @@ -451,13 +452,16 @@ class GeonamesPlugin extends Plugin | ||||
|         } | ||||
|  | ||||
|         if (!$result->isOk()) { | ||||
|             throw new Exception("HTTP error code " . $result->getStatus()); | ||||
|             // TRANS: Exception thrown when a geo names service does not return an expected response. | ||||
|             // TRANS: %s is an HTTP error code. | ||||
|             throw new Exception(sprintf(_m('HTTP error code %s.'),$result->getStatus())); | ||||
|         } | ||||
|  | ||||
|         $body = $result->getBody(); | ||||
|  | ||||
|         if (empty($body)) { | ||||
|             throw new Exception("Empty HTTP body in response"); | ||||
|             // TRANS: Exception thrown when a geo names service returns an empty body. | ||||
|             throw new Exception(_m('Empty HTTP body in response.')); | ||||
|         } | ||||
|  | ||||
|         // This will throw an exception if the XML is mal-formed | ||||
| @@ -473,7 +477,9 @@ class GeonamesPlugin extends Plugin | ||||
|         } | ||||
|  | ||||
|         if (isset($document->status)) { | ||||
|             throw new Exception("Error #".$document->status['value']." ('".$document->status['message']."')"); | ||||
|             // TRANS: Exception thrown when a geo names service return a specific error number and error text. | ||||
|             // TRANS: %1$s is an error code, %2$s is an error message. | ||||
|             throw new Exception(sprintf(_m('Error #%1$s ("%2$s").'),$document->status['value'],$document->status['message'])); | ||||
|         } | ||||
|  | ||||
|         // Array of elements, >0 elements | ||||
| @@ -488,6 +494,7 @@ class GeonamesPlugin extends Plugin | ||||
|                             'author' => 'Evan Prodromou', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:Geonames', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('Uses <a href="http://geonames.org/">Geonames</a> service to get human-readable '. | ||||
|                                'names for locations based on user-provided lat/long pairs.')); | ||||
|         return true; | ||||
|   | ||||
| @@ -77,6 +77,7 @@ class GoogleAnalyticsPlugin extends Plugin | ||||
|                             'author' => 'Evan Prodromou', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:GoogleAnalytics', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('Use <a href="http://www.google.com/analytics/">Google Analytics</a>'. | ||||
|                                ' to track web access.')); | ||||
|         return true; | ||||
|   | ||||
| @@ -57,15 +57,18 @@ class GravatarPlugin extends Plugin | ||||
|                                                 'action' => | ||||
|                                                 common_local_url('avatarsettings'))); | ||||
|             $action->elementStart('fieldset', array('id' => 'settings_gravatar_add')); | ||||
|             // TRANS: Fieldset legend. Gravatar is an avatar service. | ||||
|             $action->element('legend', null, _m('Set Gravatar')); | ||||
|             $action->hidden('token', common_session_token()); | ||||
|             $action->element('p', 'form_guide', | ||||
|                              // TRANS: Form guide. Gravatar is an avatar service. | ||||
|                              _m('If you want to use your Gravatar image, click "Add".')); | ||||
|             $action->element('input', array('type' => 'submit', | ||||
|                                             'id' => 'settings_gravatar_add_action-submit', | ||||
|                                             'name' => 'add', | ||||
|                                             'class' => 'submit', | ||||
|                                             'value' => _m('Add'))); | ||||
|                                             // TRANS: Button text to add a Gravatar. Gravatar is an avatar service. | ||||
|                                             'value' => _m('BUTTON','Add'))); | ||||
|             $action->elementEnd('fieldset'); | ||||
|             $action->elementEnd('form'); | ||||
|         } elseif($hasGravatar) { | ||||
| @@ -75,19 +78,23 @@ class GravatarPlugin extends Plugin | ||||
|                                                 'action' => | ||||
|                                                 common_local_url('avatarsettings'))); | ||||
|             $action->elementStart('fieldset', array('id' => 'settings_gravatar_remove')); | ||||
|             // TRANS: Fieldset legend. Gravatar is an avatar service. | ||||
|             $action->element('legend', null, _m('Remove Gravatar')); | ||||
|             $action->hidden('token', common_session_token()); | ||||
|             $action->element('p', 'form_guide', | ||||
|                              // TRANS: Form guide. Gravatar is an avatar service. | ||||
|                              _m('If you want to remove your Gravatar image, click "Remove".')); | ||||
|             $action->element('input', array('type' => 'submit', | ||||
|                                             'id' => 'settings_gravatar_remove_action-submit', | ||||
|                                             'name' => 'remove', | ||||
|                                             'class' => 'submit', | ||||
|                                             // TRANS: Button text to remove a Gravatar. Gravatar is an avatar service. | ||||
|                                             'value' => _m('Remove'))); | ||||
|             $action->elementEnd('fieldset'); | ||||
|             $action->elementEnd('form'); | ||||
|         } else { | ||||
|             $action->element('p', 'form_guide', | ||||
|                              // TRANS: Form guide. Gravatar is an avatar service. | ||||
|                              _m('To use a Gravatar first enter in an email address.')); | ||||
|         } | ||||
|     } | ||||
| @@ -137,6 +144,7 @@ class GravatarPlugin extends Plugin | ||||
|         $cur = common_current_user(); | ||||
|  | ||||
|         if(empty($cur->email)) { | ||||
|             // TRANS: Message displayed when no e-mail address was set when saving Gravatar setting. Gravatar is an avatar service. | ||||
|             return array('message' => _m('You do not have an email address set in your profile.'), | ||||
|                          'success' => false); | ||||
|         } | ||||
| @@ -155,10 +163,12 @@ class GravatarPlugin extends Plugin | ||||
|             $gravatar->created = DB_DataObject_Cast::dateTime(); # current time | ||||
|  | ||||
|             if (!$gravatar->insert()) { | ||||
|                 // TRANS: Message displayed when saving Gravatar setting fails. Gravatar is an avatar service. | ||||
|                 return array('message' => _m('Failed to save Gravatar to the database.'), | ||||
|                              'success' => false); | ||||
|             } | ||||
|         } | ||||
|         // TRANS: Message displayed when Gravatar was added. Gravatar is an avatar service. | ||||
|         return array('message' => _m('Gravatar added.'), | ||||
|                      'success' => true); | ||||
|      } | ||||
| @@ -177,6 +187,7 @@ class GravatarPlugin extends Plugin | ||||
|         $avatar = $profile->getAvatar(AVATAR_MINI_SIZE); | ||||
|         if($avatar) $avatar->delete(); | ||||
|  | ||||
|         // TRANS: Message displayed when Gravatar was removed. Gravatar is an avatar service. | ||||
|         return array('message' => _m('Gravatar removed.'), | ||||
|                      'success' => true); | ||||
|     } | ||||
| @@ -197,6 +208,7 @@ class GravatarPlugin extends Plugin | ||||
|                             'author' => 'Eric Helgeson', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:Gravatar', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin decsription. | ||||
|                             _m('The Gravatar plugin allows users to use their <a href="http://www.gravatar.com/">Gravatar</a> with StatusNet.')); | ||||
|  | ||||
|         return true; | ||||
|   | ||||
| @@ -1,13 +1,12 @@ | ||||
| GravatarPlugin 0.1 | ||||
|  | ||||
| About | ||||
| About: | ||||
| This will allow users to use their Gravatar Avatar with your StatusNet install. | ||||
|  | ||||
| Configuration | ||||
| Configuration: | ||||
| add this to your config.php: | ||||
| addPlugin('Gravatar', array()); | ||||
|  | ||||
| ToDo: | ||||
| To do: | ||||
| Site default all on for gravatar by default | ||||
| Migration Script | ||||
| Localize | ||||
|   | ||||
| @@ -46,7 +46,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class GroupPrivateMessagePlugin extends Plugin | ||||
| { | ||||
|     /** | ||||
| @@ -57,7 +56,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|  | ||||
|     function onCheckSchema() | ||||
|     { | ||||
|         $schema = Schema::get(); | ||||
| @@ -78,7 +76,7 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|                                                  'datetime'), | ||||
|                                    new ColumnDef('modified', | ||||
|                                                  'timestamp'))); | ||||
|                               | ||||
|  | ||||
|         $schema->ensureTable('group_message', | ||||
|                              array(new ColumnDef('id', | ||||
|                                                  'char', | ||||
| @@ -136,7 +134,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|  | ||||
|     function onAutoload($cls) | ||||
|     { | ||||
|         $dir = dirname(__FILE__); | ||||
| @@ -171,7 +168,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|  | ||||
|     function onRouterInitialized($m) | ||||
|     { | ||||
|         $m->connect('group/:nickname/inbox', | ||||
| @@ -199,7 +195,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @see Action | ||||
|      */ | ||||
|  | ||||
|     function onEndGroupGroupNav($groupnav) | ||||
|     { | ||||
|         $action = $groupnav->action; | ||||
| @@ -207,7 +202,9 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|  | ||||
|         $action->menuItem(common_local_url('groupinbox', | ||||
|                                            array('nickname' => $group->nickname)), | ||||
|                           // TRANS: Menu item in group page. | ||||
|                           _m('MENU','Inbox'), | ||||
|                           // TRANS: Menu title in group page. | ||||
|                           _m('Private messages for this group.'), | ||||
|                           $action->trimmed('action') == 'groupinbox', | ||||
|                           'nav_group_inbox'); | ||||
| @@ -221,7 +218,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @result boolean hook value | ||||
|      */ | ||||
|  | ||||
|     function onEndGroupSave($group) | ||||
|     { | ||||
|         $gps = new Group_privacy_settings(); | ||||
| @@ -244,7 +240,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @param GroupEditForm $form form being shown | ||||
|      */ | ||||
|  | ||||
|     function onEndGroupEditFormData($form) | ||||
|     { | ||||
|         $gps = null; | ||||
| @@ -255,20 +250,30 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|  | ||||
|         $form->out->elementStart('li'); | ||||
|         $form->out->dropdown('allow_privacy', | ||||
|                              // TRANS: Dropdown label in group settings page for if group allows private messages. | ||||
|                              _m('Private messages'), | ||||
|                              // TRANS: Dropdown option in group settings page for allowing private messages. | ||||
|                              array(Group_privacy_settings::SOMETIMES => _m('Sometimes'), | ||||
|                                    // TRANS: Dropdown option in group settings page for allowing private messages. | ||||
|                                    Group_privacy_settings::ALWAYS => _m('Always'), | ||||
|                                    // TRANS: Dropdown option in group settings page for allowing private messages. | ||||
|                                    Group_privacy_settings::NEVER => _m('Never')), | ||||
|                              // TRANS: Dropdown title in group settings page for if group allows private messages. | ||||
|                              _m('Whether to allow private messages to this group.'), | ||||
|                              false, | ||||
|                              (empty($gps)) ? Group_privacy_settings::SOMETIMES : $gps->allow_privacy); | ||||
|         $form->out->elementEnd('li'); | ||||
|         $form->out->elementStart('li'); | ||||
|         $form->out->dropdown('allow_sender', | ||||
|                              // TRANS: Dropdown label in group settings page for who can send private messages to the group. | ||||
|                              _m('Private senders'), | ||||
|                              // TRANS: Dropdown option in group settings page for who can send private messages. | ||||
|                              array(Group_privacy_settings::EVERYONE => _m('Everyone'), | ||||
|                                    // TRANS: Dropdown option in group settings page for who can send private messages. | ||||
|                                    Group_privacy_settings::MEMBER => _m('Member'), | ||||
|                                    // TRANS: Dropdown option in group settings page for who can send private messages. | ||||
|                                    Group_privacy_settings::ADMIN => _m('Admin')), | ||||
|                              // TRANS: Dropdown title in group settings page for who can send private messages to the group. | ||||
|                              _m('Who can send private messages to the group.'), | ||||
|                              false, | ||||
|                              (empty($gps)) ? Group_privacy_settings::MEMBER : $gps->allow_sender); | ||||
| @@ -292,7 +297,7 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|         } else { | ||||
|             $orig = clone($gps); | ||||
|         } | ||||
|          | ||||
|  | ||||
|         $gps->allow_privacy = $action->trimmed('allow_privacy'); | ||||
|         $gps->allow_sender  = $action->trimmed('allow_sender'); | ||||
|  | ||||
| @@ -302,21 +307,21 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|         } else { | ||||
|             $gps->update($orig); | ||||
|         } | ||||
|          | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Overload 'd' command to send private messages to groups. | ||||
|      *  | ||||
|      * | ||||
|      * 'd !group word word word' will send the private message | ||||
|      * 'word word word' to the group 'group'. | ||||
|      *  | ||||
|      * | ||||
|      * @param string  $cmd     Command being run | ||||
|      * @param string  $arg     Rest of the message (including address) | ||||
|      * @param User    $user    User sending the message | ||||
|      * @param Command &$result The resulting command object to be run. | ||||
|      *  | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|     function onStartIntepretCommand($cmd, $arg, $user, &$result) | ||||
| @@ -350,7 +355,7 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @param Widget     $widget The showgroup action being shown | ||||
|      * @param User_group $group  The current group | ||||
|      *  | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|     function onEndGroupActionsList($widget, $group) | ||||
| @@ -370,8 +375,10 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|  | ||||
|         $action->elementStart('li', 'entity_send-a-message'); | ||||
|         $action->element('a', array('href' => common_local_url('newgroupmessage', array('nickname' => $group->nickname)), | ||||
|                                     // TRANS: Title for action in group actions list. | ||||
|                                     'title' => _m('Send a direct message to this group.')), | ||||
|                          _m('Message')); | ||||
|                          // TRANS: Link text for action in group actions list to send a private message to a group. | ||||
|                          _m('LINKTEXT','Message')); | ||||
|         // $form = new GroupMessageForm($action, $group); | ||||
|         // $form->hidden = true; | ||||
|         // $form->show(); | ||||
| @@ -384,12 +391,9 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * privacy == always, force a group private message to all mentioned groups. | ||||
|      * If any of the groups disallows private messages, skip it. | ||||
|      * | ||||
|      * @param  | ||||
|      * | ||||
|      * @param | ||||
|      */ | ||||
|  | ||||
|     function onStartNoticeSave(&$notice) { | ||||
|  | ||||
|         // Look for group tags | ||||
|         // FIXME: won't work for remote groups | ||||
|         // @fixme if Notice::saveNew is refactored so we can just pull its list | ||||
| @@ -406,11 +410,9 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|         $profile = $notice->getProfile(); | ||||
|  | ||||
|         if ($count > 0) { | ||||
|  | ||||
|             /* Add them to the database */ | ||||
|  | ||||
|             foreach (array_unique($match[1]) as $nickname) { | ||||
|  | ||||
|                 $group = User_group::getForNickname($nickname, $profile); | ||||
|  | ||||
|                 if (empty($group)) { | ||||
| @@ -433,7 +435,6 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|             } | ||||
|  | ||||
|             if ($forcePrivate) { | ||||
|  | ||||
|                 foreach ($ignored as $group) { | ||||
|                     common_log(LOG_NOTICE, | ||||
|                                "Notice forced to group direct message ". | ||||
| @@ -454,11 +455,12 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|  | ||||
|                 // Don't save the notice! | ||||
|                 // FIXME: this is probably cheating. | ||||
|                 // TRANS: Client exception thrown when a private group message has to be forced. | ||||
|                 throw new ClientException(sprintf(_m('Forced notice to private group message.')), | ||||
|                                           200); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| @@ -470,12 +472,12 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|      * | ||||
|      * @return boolean hook value | ||||
|      */ | ||||
|  | ||||
|     function onEndGroupProfileElements($action, $group) | ||||
|     { | ||||
|         $gps = Group_privacy_settings::forGroup($group); | ||||
|          | ||||
|  | ||||
|         if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) { | ||||
|             // TRANS: Indicator on the group page that the group is (essentially) private. | ||||
|             $action->element('p', 'privategroupindicator', _m('Private')); | ||||
|         } | ||||
|  | ||||
| @@ -486,7 +488,7 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|     { | ||||
|         if ($action instanceof ShowgroupAction) { | ||||
|             $gps = Group_privacy_settings::forGroup($action->group); | ||||
|          | ||||
|  | ||||
|             if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) { | ||||
|                 return false; | ||||
|             } | ||||
| @@ -501,6 +503,7 @@ class GroupPrivateMessagePlugin extends Plugin | ||||
|                             'author' => 'Evan Prodromou', | ||||
|                             'homepage' => 'http://status.net/wiki/Plugin:GroupPrivateMessage', | ||||
|                             'rawdescription' => | ||||
|                             // TRANS: Plugin description. | ||||
|                             _m('Allow posting private messages to groups.')); | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -44,7 +44,6 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; | ||||
|  * | ||||
|  * @see      DB_DataObject | ||||
|  */ | ||||
|  | ||||
| class Group_message extends Memcached_DataObject | ||||
| { | ||||
|     public $__table = 'group_message'; // table name | ||||
| @@ -66,7 +65,6 @@ class Group_message extends Memcached_DataObject | ||||
|      * @param mixed  $v Value to lookup | ||||
|      * | ||||
|      * @return Group_message object found, or null for no hits | ||||
|      * | ||||
|      */ | ||||
|     function staticGet($k, $v=null) | ||||
|     { | ||||
| @@ -123,6 +121,8 @@ class Group_message extends Memcached_DataObject | ||||
|     { | ||||
|         if (!$user->hasRight(Right::NEWMESSAGE)) { | ||||
|             // XXX: maybe break this out into a separate right | ||||
|             // TRANS: Exception thrown when trying to send group private message without having the right to do that. | ||||
|             // TRANS: %s is a user nickname. | ||||
|             throw new Exception(sprintf(_m('User %s is not allowed to send private messages.'), | ||||
|                                         $user->nickname)); | ||||
|         } | ||||
| @@ -134,6 +134,8 @@ class Group_message extends Memcached_DataObject | ||||
|         // We use the same limits as for 'regular' private messages. | ||||
|  | ||||
|         if (Message::contentTooLong($text)) { | ||||
|             // TRANS: Exception thrown when trying to send group private message that is too long. | ||||
|             // TRANS: %d is the maximum meggage length. | ||||
|             throw new Exception(sprintf(_m('That\'s too long. Maximum message size is %d character.', | ||||
|                                            'That\'s too long. Maximum message size is %d characters.', | ||||
|                                            Message::maxContent()), | ||||
| @@ -143,7 +145,7 @@ class Group_message extends Memcached_DataObject | ||||
|         // Valid! Let's do this thing! | ||||
|  | ||||
|         $gm = new Group_message(); | ||||
|          | ||||
|  | ||||
|         $gm->id           = UUID::gen(); | ||||
|         $gm->uri          = common_local_url('showgroupmessage', array('id' => $gm->id)); | ||||
|         $gm->from_profile = $user->id; | ||||
| @@ -165,7 +167,7 @@ class Group_message extends Memcached_DataObject | ||||
|     function distribute() | ||||
|     { | ||||
|         $group = User_group::staticGet('id', $this->to_group); | ||||
|          | ||||
|  | ||||
|         $member = $group->getMembers(); | ||||
|  | ||||
|         while ($member->fetch()) { | ||||
| @@ -177,6 +179,7 @@ class Group_message extends Memcached_DataObject | ||||
|     { | ||||
|         $group = User_group::staticGet('id', $this->to_group); | ||||
|         if (empty($group)) { | ||||
|             // TRANS: Exception thrown when trying to send group private message to a non-existing group. | ||||
|             throw new ServerException(_m('No group for group message.')); | ||||
|         } | ||||
|         return $group; | ||||
| @@ -186,6 +189,7 @@ class Group_message extends Memcached_DataObject | ||||
|     { | ||||
|         $sender = Profile::staticGet('id', $this->from_profile); | ||||
|         if (empty($sender)) { | ||||
|             // TRANS: Exception thrown when trying to send group private message without having a sender. | ||||
|             throw new ServerException(_m('No sender for group message.')); | ||||
|         } | ||||
|         return $sender; | ||||
| @@ -204,5 +208,4 @@ class Group_message extends Memcached_DataObject | ||||
|  | ||||
|         return $gm; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -44,7 +44,6 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; | ||||
|  * | ||||
|  * @see      DB_DataObject | ||||
|  */ | ||||
|  | ||||
| class Group_message_profile extends Memcached_DataObject | ||||
| { | ||||
|     public $__table = 'group_message_profile'; // table name | ||||
| @@ -61,7 +60,6 @@ class Group_message_profile extends Memcached_DataObject | ||||
|      * @param mixed  $v Value to lookup | ||||
|      * | ||||
|      * @return Group_message object found, or null for no hits | ||||
|      * | ||||
|      */ | ||||
|     function staticGet($k, $v=null) | ||||
|     { | ||||
| @@ -120,7 +118,7 @@ class Group_message_profile extends Memcached_DataObject | ||||
|     function send($gm, $profile) | ||||
|     { | ||||
|         $gmp = new Group_message_profile(); | ||||
|          | ||||
|  | ||||
|         $gmp->group_message_id = $gm->id; | ||||
|         $gmp->to_profile       = $profile->id; | ||||
|         $gmp->created          = common_sql_now(); | ||||
| @@ -138,7 +136,7 @@ class Group_message_profile extends Memcached_DataObject | ||||
|         $this->notifyByMail(); | ||||
|     } | ||||
|  | ||||
|     function notifyByMail()  | ||||
|     function notifyByMail() | ||||
|     { | ||||
|         $to = User::staticGet('id', $this->to_profile); | ||||
|  | ||||
| @@ -163,14 +161,14 @@ class Group_message_profile extends Memcached_DataObject | ||||
|         // TRANS: %3$s is the message content, %4$s a URL to the message, | ||||
|         // TRANS: %5$s is the StatusNet sitename. | ||||
|         $body = sprintf(_m("%1\$s (%2\$s) sent a private message to group %3\$s:\n\n". | ||||
|                           "------------------------------------------------------\n". | ||||
|                           "%4\$s\n". | ||||
|                           "------------------------------------------------------\n\n". | ||||
|                           "You can reply to their message here:\n\n". | ||||
|                           "%5\$s\n\n". | ||||
|                           "Do not reply to this email; it will not get to them.\n\n". | ||||
|                           "With kind regards,\n". | ||||
|                           "%6\$s"), | ||||
|                            "------------------------------------------------------\n". | ||||
|                            "%4\$s\n". | ||||
|                            "------------------------------------------------------\n\n". | ||||
|                            "You can reply to their message here:\n\n". | ||||
|                            "%5\$s\n\n". | ||||
|                            "Do not reply to this email; it will not get to them.\n\n". | ||||
|                            "With kind regards,\n". | ||||
|                            "%6\$s"), | ||||
|                         $from_profile->getBestName(), | ||||
|                         $from_profile->nickname, | ||||
|                         $group->nickname, | ||||
|   | ||||
| @@ -44,16 +44,15 @@ if (!defined('STATUSNET')) { | ||||
|  * | ||||
|  * @see      DB_DataObject | ||||
|  */ | ||||
|  | ||||
| class Group_privacy_settings extends Memcached_DataObject | ||||
| { | ||||
|     public $__table = 'group_privacy_settings'; | ||||
|     /** ID of the group. */ | ||||
|     public $group_id;       | ||||
|     public $group_id; | ||||
|     /** When to allow privacy: always, sometimes, or never. */ | ||||
|     public $allow_privacy; | ||||
|     /** Who can send private messages: everyone, member, admin */ | ||||
|     public $allow_sender;  | ||||
|     public $allow_sender; | ||||
|     /** row creation timestamp */ | ||||
|     public $created; | ||||
|     /** Last-modified timestamp */ | ||||
| @@ -81,7 +80,6 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|      * | ||||
|      * @return User_greeting_count object found, or null for no hits | ||||
|      */ | ||||
|  | ||||
|     function staticGet($k, $v=null) | ||||
|     { | ||||
|         return Memcached_DataObject::staticGet('Group_privacy_settings', $k, $v); | ||||
| @@ -95,7 +93,6 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|      * | ||||
|      * @return array array of column definitions | ||||
|      */ | ||||
|  | ||||
|     function table() | ||||
|     { | ||||
|         return array('group_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, | ||||
| @@ -103,7 +100,7 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|                      'allow_sender' => DB_DATAOBJECT_INT, | ||||
|                      'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, | ||||
|                      'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL); | ||||
|                       | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -115,7 +112,6 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|      * | ||||
|      * @return array list of key field names | ||||
|      */ | ||||
|  | ||||
|     function keys() | ||||
|     { | ||||
|         return array_keys($this->keyTypes()); | ||||
| @@ -128,7 +124,6 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|      *         'K' for primary key: for compound keys, add an entry for each component; | ||||
|      *         'U' for unique keys: compound keys are not well supported here. | ||||
|      */ | ||||
|  | ||||
|     function keyTypes() | ||||
|     { | ||||
|         return array('group_id' => 'K'); | ||||
| @@ -139,7 +134,6 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|      * | ||||
|      * @return array magic three-false array that stops auto-incrementing. | ||||
|      */ | ||||
|  | ||||
|     function sequenceKey() | ||||
|     { | ||||
|         return array(false, false, false); | ||||
| @@ -164,6 +158,7 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|         $gps = self::forGroup($group); | ||||
|  | ||||
|         if ($gps->allow_privacy == Group_privacy_settings::NEVER) { | ||||
|             // TRANS: Exception thrown when trying to set group privacy setting if group %s does not allow private messages. | ||||
|             throw new Exception(sprintf(_m('Group %s does not allow private messages.'), | ||||
|                                         $group->nickname)); | ||||
|         } | ||||
| @@ -172,6 +167,8 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|         case Group_privacy_settings::EVERYONE: | ||||
|             $profile = $user->getProfile(); | ||||
|             if (Group_block::isBlocked($group, $profile)) { | ||||
|                 // TRANS: Exception thrown when trying to send group private message while blocked from that group. | ||||
|                 // TRANS: %1$s is a user nickname, %2$s is a group nickname. | ||||
|                 throw new Exception(sprintf(_m('User %1$s is blocked from group %2$s.'), | ||||
|                                             $user->nickname, | ||||
|                                             $group->nickname)); | ||||
| @@ -179,6 +176,8 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|             break; | ||||
|         case Group_privacy_settings::MEMBER: | ||||
|             if (!$user->isMember($group)) { | ||||
|                 // TRANS: Exception thrown when trying to send group private message while not a member. | ||||
|                 // TRANS: %1$s is a user nickname, %2$s is a group nickname. | ||||
|                 throw new Exception(sprintf(_m('User %1$s is not a member of group %2$s.'), | ||||
|                                             $user->nickname, | ||||
|                                             $group->nickname)); | ||||
| @@ -186,12 +185,16 @@ class Group_privacy_settings extends Memcached_DataObject | ||||
|             break; | ||||
|         case Group_privacy_settings::ADMIN: | ||||
|             if (!$user->isAdmin($group)) { | ||||
|                 // TRANS: Exception thrown when trying to send group private message while not a group administrator. | ||||
|                 // TRANS: %1$s is a user nickname, %2$s is a group nickname. | ||||
|                 throw new Exception(sprintf(_m('User %1$s is not an administrator of group %2$s.'), | ||||
|                                             $user->nickname, | ||||
|                                             $group->nickname)); | ||||
|             } | ||||
|             break; | ||||
|         default: | ||||
|             // TRANS: Exception thrown when encountering undefined group privacy settings. | ||||
|             // TRANS: %s is a group nickname. | ||||
|             throw new Exception(sprintf(_m('Unknown privacy settings for group %s.'), | ||||
|                                         $group->nickname)); | ||||
|         } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * List of private messages to this group | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class GroupinboxAction extends GroupDesignAction | ||||
| { | ||||
|     var $gm; | ||||
| @@ -63,6 +62,7 @@ class GroupinboxAction extends GroupDesignAction | ||||
|         $cur = common_current_user(); | ||||
|  | ||||
|         if (empty($cur)) { | ||||
|             // TRANS: Client exception thrown when trying to view group inbox while not logged in. | ||||
|             throw new ClientException(_m('Only for logged-in users.'), 403); | ||||
|         } | ||||
|  | ||||
| @@ -79,16 +79,19 @@ class GroupinboxAction extends GroupDesignAction | ||||
|         $localGroup = Local_group::staticGet('nickname', $nickname); | ||||
|  | ||||
|         if (empty($localGroup)) { | ||||
|             // TRANS: Client exception thrown when trying to view group inbox for non-existing group. | ||||
|             throw new ClientException(_m('No such group.'), 404); | ||||
|         } | ||||
|  | ||||
|         $this->group = User_group::staticGet('id', $localGroup->group_id); | ||||
|  | ||||
|         if (empty($this->group)) { | ||||
|             // TRANS: Client exception thrown when trying to view group inbox for non-existing group. | ||||
|             throw new ClientException(_m('No such group.'), 404); | ||||
|         } | ||||
|  | ||||
|         if (!$cur->isMember($this->group)) { | ||||
|             // TRANS: Client exception thrown when trying to view group inbox while not a member. | ||||
|             throw new ClientException(_m('Only for members.'), 403); | ||||
|         } | ||||
|  | ||||
| @@ -97,8 +100,8 @@ class GroupinboxAction extends GroupDesignAction | ||||
|         if (!$this->page) { | ||||
|             $this->page = 1; | ||||
|         } | ||||
|          | ||||
|         $this->gm = Group_message::forGroup($this->group,  | ||||
|  | ||||
|         $this->gm = Group_message::forGroup($this->group, | ||||
|                                             ($this->page - 1) * MESSAGES_PER_PAGE, | ||||
|                                             MESSAGES_PER_PAGE + 1); | ||||
|         return true; | ||||
| @@ -122,6 +125,7 @@ class GroupinboxAction extends GroupDesignAction | ||||
|         $cnt = $gml->show(); | ||||
|  | ||||
|         if ($cnt == 0) { | ||||
|             // TRANS: Text of group inbox if no private messages were sent to it. | ||||
|             $this->element('p', 'guide', _m('This group has not received any private messages.')); | ||||
|         } | ||||
|         $this->pagination($this->page > 1, | ||||
| @@ -167,6 +171,7 @@ class GroupinboxAction extends GroupDesignAction | ||||
|         $base = $this->group->getFancyName(); | ||||
|  | ||||
|         if ($this->page == 1) { | ||||
|             // TRANS: Title of inbox for group %s. | ||||
|             return sprintf(_m('%s group inbox'), $base); | ||||
|         } else { | ||||
|             // TRANS: Page title for any but first group page. | ||||
| @@ -184,7 +189,6 @@ class GroupinboxAction extends GroupDesignAction | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|  | ||||
|     function showPageNotice() | ||||
|     { | ||||
|         $instr  = $this->getInstructions(); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Command object for messages to groups | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class GroupMessageCommand extends Command | ||||
| { | ||||
|     /** User sending the message. */ | ||||
| @@ -61,7 +60,6 @@ class GroupMessageCommand extends Command | ||||
|      * @param string $nickname Nickname of the group | ||||
|      * @param string $text     Text of message | ||||
|      */ | ||||
|  | ||||
|     function __construct($user, $nickname, $text) | ||||
|     { | ||||
|         $this->user     = $user; | ||||
| @@ -76,8 +74,9 @@ class GroupMessageCommand extends Command | ||||
|  | ||||
|         $gm = Group_message::send($this->user, $group, $this->text); | ||||
|  | ||||
|         $channel->output($this->user,  | ||||
|                          sprintf(_m('Direct message to group %s sent.'),  | ||||
|         $channel->output($this->user, | ||||
|                          // TRANS: Succes message after sending private group message to group %s. | ||||
|                          sprintf(_m('Direct message to group %s sent.'), | ||||
|                                  $group->nickname)); | ||||
|  | ||||
|         return true; | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Form for posting a group message | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class GroupMessageForm extends Form | ||||
| { | ||||
|     var $group; | ||||
| @@ -58,7 +57,6 @@ class GroupMessageForm extends Form | ||||
|      * | ||||
|      * @todo add a drop-down list to post to any group | ||||
|      */ | ||||
|  | ||||
|     function __construct($out, $group, $content=null) | ||||
|     { | ||||
|         parent::__construct($out); | ||||
| @@ -71,7 +69,7 @@ class GroupMessageForm extends Form | ||||
|      * Action for the form | ||||
|      */ | ||||
|     function action() | ||||
|     {  | ||||
|     { | ||||
|         return common_local_url('newgroupmessage', | ||||
|                                 array('nickname' => $this->group->nickname)); | ||||
|     } | ||||
| @@ -87,6 +85,7 @@ class GroupMessageForm extends Form | ||||
|     { | ||||
|         $this->out->element('legend', | ||||
|                             null, | ||||
|                             // TRANS: Form legend for sending private message to group %s. | ||||
|                             sprintf(_m('Message to %s'), $this->group->nickname)); | ||||
|     } | ||||
|  | ||||
| @@ -97,7 +96,6 @@ class GroupMessageForm extends Form | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|  | ||||
|     function id() | ||||
|     { | ||||
|         return 'form_notice-group-message'; | ||||
| @@ -110,7 +108,6 @@ class GroupMessageForm extends Form | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|  | ||||
|     function formClass() | ||||
|     { | ||||
|         return 'form_notice'; | ||||
| @@ -123,11 +120,11 @@ class GroupMessageForm extends Form | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|  | ||||
|     function formData() | ||||
|     { | ||||
|         $this->out->element('label', array('for' => 'notice_data-text', | ||||
|                                            'id' => 'notice_data-text-label'), | ||||
|                             // TRANS: Field label for private group message to group %s. | ||||
|                             sprintf(_m('Direct message to %s'), $this->group->nickname)); | ||||
|  | ||||
|         $this->out->element('textarea', array('id' => 'notice_data-text', | ||||
| @@ -140,6 +137,7 @@ class GroupMessageForm extends Form | ||||
|  | ||||
|         if ($contentLimit > 0) { | ||||
|             $this->out->elementStart('dl', 'form_note'); | ||||
|             // TRANS: Indicator for number of chatacters still available for notice. | ||||
|             $this->out->element('dt', null, _m('Available characters')); | ||||
|             $this->out->element('dd', array('class' => 'count'), | ||||
|                                 $contentLimit); | ||||
| @@ -154,13 +152,13 @@ class GroupMessageForm extends Form | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|  | ||||
|     function formActions() | ||||
|     { | ||||
|         $this->out->element('input', array('id' => 'notice_action-submit', | ||||
|                                            'class' => 'submit', | ||||
|                                            'name' => 'message_send', | ||||
|                                            'type' => 'submit', | ||||
|                                            // TRANS: Send button text for sending private group notice. | ||||
|                                            'value' => _m('Send button for sending notice', 'Send'))); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Widget for showing list of group messages | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Widget for showing an individual group message | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -69,13 +69,13 @@ class GroupMessageListItem extends Widget | ||||
|     { | ||||
|         $group  = $this->gm->getGroup(); | ||||
|         $sender = $this->gm->getSender(); | ||||
|   | ||||
|  | ||||
|         $this->out->elementStart('li', array('class' => 'hentry notice message group-message', | ||||
|                                          'id' => 'message-' . $this->gm->id)); | ||||
|  | ||||
|         $this->out->elementStart('div', 'entry-title'); | ||||
|         $this->out->elementStart('span', 'vcard author'); | ||||
|         $this->out->elementStart('a',  | ||||
|         $this->out->elementStart('a', | ||||
|                                  array('href' => $sender->profileurl, | ||||
|                                        'class' => 'url')); | ||||
|         $avatar = $sender->getAvatar(AVATAR_STREAM_SIZE); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Action for adding a new group message | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class NewgroupmessageAction extends Action | ||||
| { | ||||
|     var $group; | ||||
| @@ -58,7 +57,6 @@ class NewgroupmessageAction extends Action | ||||
|      * | ||||
|      * @return boolean true | ||||
|      */ | ||||
|  | ||||
|     function prepare($argarray) | ||||
|     { | ||||
|         parent::prepare($argarray); | ||||
| @@ -66,10 +64,12 @@ class NewgroupmessageAction extends Action | ||||
|         $this->user = common_current_user(); | ||||
|  | ||||
|         if (empty($this->user)) { | ||||
|             // TRANS: Client exception thrown when trying to send a private group message while not logged in. | ||||
|             throw new ClientException(_m('Must be logged in.'), 403); | ||||
|         } | ||||
|  | ||||
|         if (!$this->user->hasRight(Right::NEWMESSAGE)) { | ||||
|             // TRANS: Exception thrown when user %s is not allowed to send a private group message. | ||||
|             throw new Exception(sprintf(_m('User %s is not allowed to send private messages.'), | ||||
|                                         $this->user->nickname)); | ||||
|         } | ||||
| @@ -87,21 +87,21 @@ class NewgroupmessageAction extends Action | ||||
|         $localGroup = Local_group::staticGet('nickname', $nickname); | ||||
|  | ||||
|         if (empty($localGroup)) { | ||||
|             // TRANS: Client exception thrown when trying to send a private group message to a non-existing group. | ||||
|             throw new ClientException(_m('No such group.'), 404); | ||||
|         } | ||||
|  | ||||
|         $this->group = User_group::staticGet('id', $localGroup->group_id); | ||||
|  | ||||
|         if (empty($this->group)) { | ||||
|             // TRANS: Client exception thrown when trying to send a private group message to a non-existing group. | ||||
|             throw new ClientException(_m('No such group.'), 404); | ||||
|         } | ||||
|  | ||||
|         // This throws an exception on error | ||||
|  | ||||
|         Group_privacy_settings::ensurePost($this->user, $this->group); | ||||
|  | ||||
|         // If we're posted to, check session token and get text | ||||
|  | ||||
|         if ($this->isPost()) { | ||||
|             $this->checkSessionToken(); | ||||
|             $this->text = $this->trimmed('content'); | ||||
| @@ -117,7 +117,6 @@ class NewgroupmessageAction extends Action | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|  | ||||
|     function handle($argarray=null) | ||||
|     { | ||||
|         if ($this->isPost()) { | ||||
| @@ -140,11 +139,13 @@ class NewgroupmessageAction extends Action | ||||
|         if ($this->boolean('ajax')) { | ||||
|             $this->startHTML('text/xml;charset=utf-8'); | ||||
|             $this->elementStart('head'); | ||||
|             // TRANS: Title after sending a private group message. | ||||
|             $this->element('title', null, _m('Message sent')); | ||||
|             $this->elementEnd('head'); | ||||
|             $this->elementStart('body'); | ||||
|             $this->element('p', | ||||
|                            array('id' => 'command_result'), | ||||
|                            // TRANS: Succes text after sending a direct message to group %s. | ||||
|                            sprintf(_m('Direct message to %s sent.'), | ||||
|                                    $this->group->nickname)); | ||||
|             $this->elementEnd('body'); | ||||
| @@ -156,6 +157,7 @@ class NewgroupmessageAction extends Action | ||||
|  | ||||
|     function title() | ||||
|     { | ||||
|         // TRANS: Title of form for new private group message. | ||||
|         return sprintf(_m('New message to group %s'), $this->group->nickname); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Show a single group message | ||||
|  *  | ||||
|  * | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
| @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class ShowgroupmessageAction extends Action | ||||
| { | ||||
|     var $gm; | ||||
| @@ -59,7 +58,6 @@ class ShowgroupmessageAction extends Action | ||||
|      * | ||||
|      * @return boolean true | ||||
|      */ | ||||
|  | ||||
|     function prepare($argarray) | ||||
|     { | ||||
|         parent::prepare($argarray); | ||||
| @@ -67,6 +65,7 @@ class ShowgroupmessageAction extends Action | ||||
|         $this->user = common_current_user(); | ||||
|  | ||||
|         if (empty($this->user)) { | ||||
|             // TRANS: Client exception thrown when trying to view group private messages without being logged in. | ||||
|             throw new ClientException(_m('Only logged-in users can view private messages.'), | ||||
|                                       403); | ||||
|         } | ||||
| @@ -76,22 +75,26 @@ class ShowgroupmessageAction extends Action | ||||
|         $this->gm = Group_message::staticGet('id', $id); | ||||
|  | ||||
|         if (empty($this->gm)) { | ||||
|             // TRANS: Client exception thrown when trying to view a non-existing group private message. | ||||
|             throw new ClientException(_m('No such message.'), 404); | ||||
|         } | ||||
|  | ||||
|         $this->group = User_group::staticGet('id', $this->gm->to_group); | ||||
|  | ||||
|         if (empty($this->group)) { | ||||
|             // TRANS: Server exception thrown when trying to view group private messages for a non-exsting group. | ||||
|             throw new ServerException(_m('Group not found.')); | ||||
|         } | ||||
|  | ||||
|         if (!$this->user->isMember($this->group)) { | ||||
|             // TRANS: Client exception thrown when trying to view a group private message without being a group member. | ||||
|             throw new ClientException(_m('Cannot read message.'), 403); | ||||
|         } | ||||
|  | ||||
|         $this->sender = Profile::staticGet('id', $this->gm->from_profile); | ||||
|  | ||||
|         if (empty($this->sender)) { | ||||
|             // TRANS: Server exception thrown when trying to view a group private message without a sender. | ||||
|             throw new ServerException(_m('No sender found.')); | ||||
|         } | ||||
|  | ||||
| @@ -105,7 +108,6 @@ class ShowgroupmessageAction extends Action | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|  | ||||
|     function handle($argarray=null) | ||||
|     { | ||||
|         $this->showPage(); | ||||
| @@ -114,9 +116,10 @@ class ShowgroupmessageAction extends Action | ||||
|     /** | ||||
|      * Title of the page | ||||
|      */ | ||||
|  | ||||
|     function title() | ||||
|     { | ||||
|         // TRANS: Title for private group message. | ||||
|         // TRANS: %1$s is the sender name, %2$s is the group name, %3$s is a timestamp. | ||||
|         return sprintf(_m('Message from %1$s to group %2$s on %3$s'), | ||||
|                        $this->sender->nickname, | ||||
|                        $this->group->nickname, | ||||
| @@ -126,7 +129,6 @@ class ShowgroupmessageAction extends Action | ||||
|     /** | ||||
|      * Show the content area. | ||||
|      */ | ||||
|  | ||||
|     function showContent() | ||||
|     { | ||||
|         $this->elementStart('ul', 'notices messages'); | ||||
| @@ -144,7 +146,6 @@ class ShowgroupmessageAction extends Action | ||||
|      * | ||||
|      * @return boolean is read only action? | ||||
|      */ | ||||
|  | ||||
|     function isReadOnly($args) | ||||
|     { | ||||
|         return true; | ||||
|   | ||||
| @@ -324,11 +324,13 @@ class SearchSubPlugin extends Plugin | ||||
|     { | ||||
|         $user = common_current_user(); | ||||
|  | ||||
|         $searches = SearchSub::forProfile($user->getProfile()); | ||||
|         if (!empty($user)) { | ||||
|             $searches = SearchSub::forProfile($user->getProfile()); | ||||
|  | ||||
|         if (!empty($searches) && count($searches) > 0) { | ||||
|             $searchSubMenu = new SearchSubMenu($menu->out, $user, $searches); | ||||
|             $menu->submenu(_m('Searches'), $searchSubMenu); | ||||
|             if (!empty($searches) && count($searches) > 0) { | ||||
|                 $searchSubMenu = new SearchSubMenu($menu->out, $user, $searches); | ||||
|                 $menu->submenu(_m('Searches'), $searchSubMenu); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return true; | ||||
|   | ||||
| @@ -245,11 +245,14 @@ class TagSubPlugin extends Plugin | ||||
|     { | ||||
|         $user = common_current_user(); | ||||
|  | ||||
|         $tags = TagSub::forProfile($user->getProfile()); | ||||
|         if (!empty($user)) { | ||||
|  | ||||
|         if (!empty($tags) && count($tags) > 0) { | ||||
|             $tagSubMenu = new TagSubMenu($menu->out, $user, $tags); | ||||
|             $menu->submenu(_m('Tags'), $tagSubMenu); | ||||
|             $tags = TagSub::forProfile($user->getProfile()); | ||||
|  | ||||
|             if (!empty($tags) && count($tags) > 0) { | ||||
|                 $tagSubMenu = new TagSubMenu($menu->out, $user, $tags); | ||||
|                 $menu->submenu(_m('Tags'), $tagSubMenu); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return true; | ||||
|   | ||||
| @@ -1,489 +0,0 @@ | ||||
| /** theme: biz | ||||
|  * | ||||
|  * @package   StatusNet | ||||
|  * @author Sarven Capadisli <csarven@status.net> | ||||
|  * @copyright 2009 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| @import url(base.css); | ||||
|  | ||||
| @media screen, projection, tv { | ||||
| html { | ||||
| background-color:#144A6E; | ||||
| } | ||||
| a:active { | ||||
| background-color:#F4F7E7; | ||||
| } | ||||
| body { | ||||
| font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; | ||||
| font-size:1em; | ||||
| background:#144A6E url(../images/illustrations/illu_pattern-01.png) repeat-x; | ||||
| } | ||||
|  | ||||
| address { | ||||
| margin-right:5.7%; | ||||
| } | ||||
|  | ||||
| input, textarea, select { | ||||
| border-width:2px; | ||||
| border-style: solid; | ||||
| border-radius:4px; | ||||
| -moz-border-radius:4px; | ||||
| -webkit-border-radius:4px; | ||||
| } | ||||
| input, textarea, select, option { | ||||
| font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; | ||||
| } | ||||
| input, textarea, select { | ||||
| border-color:#AAAAAA; | ||||
| } | ||||
|  | ||||
| .form_settings fieldset fieldset { | ||||
| background:rgba(240, 240, 240, 0.2); | ||||
| box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| -moz-box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| -webkit-box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| } | ||||
|  | ||||
| #filter_tags ul li, | ||||
| .entity_send-a-message .form_notice, | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a, | ||||
| .form_settings fieldset fieldset, | ||||
| .entity_moderation:hover ul { | ||||
| border-color:#DDDDDD; | ||||
| } | ||||
|  | ||||
| .form_settings input.form_action-primary { | ||||
| background:none; | ||||
| } | ||||
|  | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note { | ||||
| background-color:#9BB43E; | ||||
| } | ||||
| input.submit, | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note, | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_moderation p, | ||||
| button { | ||||
| 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); | ||||
| } | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_actions p { | ||||
| border-color:transparent; | ||||
| background-color:transparent; | ||||
| } | ||||
| input:focus, textarea:focus, select:focus, | ||||
| .form_notice.warning textarea, | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note { | ||||
| border-color:#9BB43E; | ||||
| } | ||||
|  | ||||
| input.submit { | ||||
| color:#FFFFFF; | ||||
| } | ||||
| .entity_actions input.submit { | ||||
| border-color:transparent; | ||||
| text-shadow:none; | ||||
| } | ||||
| .dialogbox .submit_dialogbox, | ||||
| input.submit, | ||||
| .form_notice input.submit { | ||||
| background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x; | ||||
| text-shadow:0 1px 0 #FFFFFF; | ||||
| color:#000000; | ||||
| border-color:#AAAAAA; | ||||
| border-top-color:#CCCCCC; | ||||
| border-left-color:#CCCCCC; | ||||
| } | ||||
| .dialogbox .submit_dialogbox:hover, | ||||
| input.submit:hover { | ||||
| background-position:0 -5px; | ||||
| } | ||||
| .dialogbox .submit_dialogbox:focus, | ||||
| input.submit:focus { | ||||
| background-position:0 -15px; | ||||
| box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| -moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| -webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| text-shadow:none; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-geo { | ||||
| background-position:0 -1780px; | ||||
| } | ||||
| .form_notice label.notice_data-geo.checked { | ||||
| background-position:0 -1846px; | ||||
| } | ||||
|  | ||||
| a, | ||||
| .form_settings input.form_action-primary, | ||||
| .notice-options input, | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_moderation p { | ||||
| color:#002FA7; | ||||
| } | ||||
|  | ||||
| #header a, | ||||
| #footer a { | ||||
| color:#87B4C8; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| .notice, | ||||
| .profile, | ||||
| .application, | ||||
| #content tbody tr { | ||||
| border-top-color:#C8D1D5; | ||||
| } | ||||
| .mark-top { | ||||
| border-color:#AAAAAA; | ||||
| } | ||||
|  | ||||
| #aside_primary { | ||||
| background-color:#144A6E; | ||||
| } | ||||
|  | ||||
| .section .profile { | ||||
| border-top-color:#87B4C8; | ||||
| } | ||||
|  | ||||
| .aside .section { | ||||
| background-color:#F1F5F8; | ||||
| background-position:100% 0; | ||||
| background-image:url(../images/illustrations/illu_pattern-02.png); | ||||
| background-repeat:no-repeat; | ||||
| } | ||||
|  | ||||
| .form_notice .count { | ||||
| color:#333333; | ||||
| } | ||||
| #form_notice.warning .count { | ||||
| color:#000000; | ||||
| } | ||||
| .form_notice label.notice_data-attach { | ||||
| background-position:0 -328px; | ||||
| } | ||||
| .form_notice input.notice_data-attach { | ||||
| opacity:0; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-attach, | ||||
| #export_data li a.rss, | ||||
| #export_data li a.atom, | ||||
| #export_data li a.foaf, | ||||
| .entity_edit a, | ||||
| .entity_send-a-message a, | ||||
| .entity_nudge p, | ||||
| .form_user_nudge input.submit, | ||||
| .form_user_block input.submit, | ||||
| .form_user_unblock input.submit, | ||||
| .form_group_block input.submit, | ||||
| .form_group_unblock input.submit, | ||||
| .form_make_admin input.submit, | ||||
| .notice .attachment, | ||||
| .notice-options .notice_reply, | ||||
| .notice-options form.form_favor input.submit, | ||||
| .notice-options form.form_disfavor input.submit, | ||||
| .notice-options .notice_delete, | ||||
| .notice-options form.form_repeat input.submit, | ||||
| #new_group a, | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a, | ||||
| button.close, | ||||
| .form_group_leave input.submit, | ||||
| .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.notice_data-geo, | ||||
| button.minimize, | ||||
| .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; | ||||
| } | ||||
|  | ||||
| #wrap form.processing input.submit, | ||||
| .entity_actions a.processing, | ||||
| .dialogbox.processing .submit_dialogbox { | ||||
| background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%; | ||||
| } | ||||
| .notice-options .form_repeat.processing { | ||||
| background-image:none; | ||||
| } | ||||
|  | ||||
| #content { | ||||
| box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| -moz-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| -webkit-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| } | ||||
| #content, | ||||
| #site_nav_local_views a, | ||||
| .aside .section { | ||||
| border-color:#FFFFFF; | ||||
| } | ||||
| #content, | ||||
| #site_nav_local_views .current a, | ||||
| .entity_send-a-message .form_notice, | ||||
| .entity_moderation:hover ul, | ||||
| .entity_role:hover ul, | ||||
| .dialogbox { | ||||
| background-color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views li.current { | ||||
| box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| } | ||||
| #site_nav_local_views a { | ||||
| background-color:rgba(194, 194, 194, 0.5); | ||||
| } | ||||
| #site_nav_local_views a:hover { | ||||
| background-color:rgba(255, 255, 255, 0.7); | ||||
| } | ||||
| #site_nav_local_views .current a { | ||||
| text-shadow: rgba(194,194,194,0.5) 1px 1px 1px; | ||||
| } | ||||
|  | ||||
|  | ||||
| .error { | ||||
| background-color:#F7E8E8; | ||||
| } | ||||
| .success { | ||||
| background-color:#EFF3DC; | ||||
| } | ||||
|  | ||||
| button.close { | ||||
| background-position:0 -1120px; | ||||
| } | ||||
| button.minimize { | ||||
| background-position:0 -1912px; | ||||
| } | ||||
|  | ||||
| #anon_notice { | ||||
| color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| #export_data li a { | ||||
| background-repeat:no-repeat; | ||||
| background-position:0 45%; | ||||
| } | ||||
| #export_data li a.rss { | ||||
| background-position:0 -130px; | ||||
| } | ||||
| #export_data li a.atom { | ||||
| background-position:0 -64px; | ||||
| } | ||||
| #export_data li a.foaf { | ||||
| background-position:0 1px; | ||||
| } | ||||
|  | ||||
| .form_group_join input.submit, | ||||
| .form_group_leave input.submit, | ||||
| .form_user_subscribe input.submit, | ||||
| .form_user_unsubscribe input.submit, | ||||
| .entity_subscribe a { | ||||
| background-color:#AAAAAA; | ||||
| color:#FFFFFF; | ||||
| } | ||||
| .form_group_leave input.submit, | ||||
| .form_user_unsubscribe input.submit { | ||||
| background-position:5px -1246px; | ||||
| } | ||||
| .form_group_join input.submit, | ||||
| .form_user_subscribe input.submit, | ||||
| .entity_subscribe a { | ||||
| background-position:5px -1181px; | ||||
| } | ||||
|  | ||||
| .entity_edit a { | ||||
| background-position: 5px -718px; | ||||
| } | ||||
| .entity_send-a-message a { | ||||
| background-position: 5px -852px; | ||||
| } | ||||
| .entity_send-a-message .form_notice, | ||||
| .entity_moderation:hover ul { | ||||
| box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| } | ||||
|  | ||||
| .entity_nudge p, | ||||
| .form_user_nudge input.submit { | ||||
| background-position: 5px -785px; | ||||
| } | ||||
| .form_user_block input.submit, | ||||
| .form_user_unblock input.submit, | ||||
| .form_group_block input.submit, | ||||
| .form_group_unblock input.submit { | ||||
| background-position: 5px -918px; | ||||
| } | ||||
| .form_make_admin input.submit { | ||||
| background-position: 5px -983px; | ||||
| } | ||||
| .entity_moderation p { | ||||
| background-position: 5px -1313px; | ||||
| } | ||||
| .entity_sandbox input.submit { | ||||
| background-position: 5px -1380px; | ||||
| } | ||||
| .entity_silence input.submit { | ||||
| background-position: 5px -1445px; | ||||
| } | ||||
| .entity_delete input.submit { | ||||
| 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; | ||||
| } | ||||
| .notice-options .notice_reply { | ||||
| background-position:0 -592px; | ||||
| } | ||||
| .notice-options form.form_favor input.submit { | ||||
| background-position:0 -460px; | ||||
| } | ||||
| .notice-options form.form_disfavor input.submit { | ||||
| background-position:0 -526px; | ||||
| } | ||||
| .notice-options .notice_delete { | ||||
| background-position:0 -658px; | ||||
| } | ||||
| .notice-options form.form_repeat input.submit { | ||||
| background-position:0 -1582px; | ||||
| } | ||||
| .notice-options .repeated { | ||||
| 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; | ||||
| } | ||||
| #content .notices li:hover { | ||||
| background-color:rgba(240, 240, 240, 0.2); | ||||
| } | ||||
| #conversation .notices li:hover { | ||||
| background-color:transparent; | ||||
| } | ||||
|  | ||||
| .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.050); | ||||
| } | ||||
| .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.100); | ||||
| } | ||||
| .notices .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.150); | ||||
| } | ||||
| .notices .notices .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.300); | ||||
| } | ||||
| /*END: NOTICES */ | ||||
|  | ||||
| #new_group a { | ||||
| background-position:0 -1054px; | ||||
| } | ||||
|  | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a { | ||||
| background-repeat:no-repeat; | ||||
| 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); | ||||
| } | ||||
| .pagination .nav_prev a { | ||||
| background-position:10% -187px; | ||||
| } | ||||
| .pagination .nav_next a { | ||||
| background-position:105% -252px; | ||||
| } | ||||
| .pagination .nav .processing { | ||||
| background-image:url(../../base/images/icons/icon_processing.gif); | ||||
| box-shadow:none; | ||||
| -moz-box-shadow:none; | ||||
| -webkit-box-shadow:none; | ||||
| outline:none; | ||||
| } | ||||
| .pagination .nav_next a.processing { | ||||
| background-position:90% 47%; | ||||
| } | ||||
| .pagination .nav_prev a.processing { | ||||
| background-position:10% 47%; | ||||
| } | ||||
| @@ -1,16 +0,0 @@ | ||||
| /** | ||||
|  * @package   StatusNet | ||||
|  * @author    Sarven Capadisli <csarven@status.net> | ||||
|  * @copyright 2009-2010 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
| /* IE specific styles */ | ||||
|  | ||||
| .notice-options input.submit { | ||||
| color:#fff; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a { | ||||
| background-color:#D0DFE7; | ||||
| } | ||||
| Before Width: | Height: | Size: 646 B | 
| Before Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 935 B | 
| Before Width: | Height: | Size: 9.3 KiB | 
| Before Width: | Height: | Size: 9.9 KiB | 
| @@ -1,256 +0,0 @@ | ||||
| /** theme: clean | ||||
|  * | ||||
|  * @package   StatusNet | ||||
|  * @author    Samantha Doherty <sammy@status.net> | ||||
|  * @copyright 2010 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| @media screen, projection, tv { | ||||
|  | ||||
| body { | ||||
|     background: url(../images/page_bg.png) no-repeat fixed 50% 100%; | ||||
|     background-color: #6e6e8c; | ||||
|     font-family: "Liberation Sans", "Nimbus Sans L", "FreeSans", "Helvetica Neue", Helvetica, Arial, sans-serif;  | ||||
|     font-size: 86%; | ||||
| } | ||||
|  | ||||
| #wrap { | ||||
|     width: 867px; | ||||
|     margin: 0px auto; | ||||
|     padding: 0px 8px 10px 8px; | ||||
|     background-color: #fff; | ||||
|     box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.7); | ||||
|     -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.7); | ||||
|     -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.7); | ||||
| } | ||||
|  | ||||
| #header { | ||||
|     width: 851px; | ||||
|     padding: 0px; | ||||
|     padding-top: 70px; | ||||
|     margin-left: 8px; | ||||
| } | ||||
|  | ||||
| address { | ||||
|     float: left; | ||||
|     margin-right: 20px; | ||||
|     margin-top: 0px; | ||||
| } | ||||
|  | ||||
| .poweredby { | ||||
|     background: url(../images/sn-tiny.png) no-repeat top left; | ||||
|     height: 40px; | ||||
|     font-size: 0.8em; | ||||
|     color: #fff; | ||||
|     line-height: 42px; | ||||
|     padding-left: 50px; | ||||
|     position: absolute; | ||||
|     top: 6px; | ||||
|     left: 0; | ||||
|     z-index: 99; | ||||
|     font-style: normal; | ||||
| } | ||||
|  | ||||
| .poweredby a { | ||||
|     color: #fff !important; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary { | ||||
|     display: block; | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     z-index: 98; | ||||
|     background-color: #829d25; | ||||
|     width: 883px; | ||||
|     margin-left: -16px;  | ||||
|     margin-top: 0px; | ||||
|     height: 30px; | ||||
|     line-height: 30px; | ||||
|     text-align: right; | ||||
|     border-top: 10px solid #fff; | ||||
|     border-bottom: 1px solid #fff; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li:last-child { | ||||
|     margin-right: 16px; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary a { | ||||
|     color: #fff !important; | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); | ||||
| } | ||||
|  | ||||
| #site_notice { | ||||
|     float: right; | ||||
|     width: 270px; | ||||
|     padding: 10px;  | ||||
|     margin-left: 40px; | ||||
| } | ||||
|  | ||||
| #anon_notice { | ||||
|     clear: both; | ||||
|     background: none; | ||||
|     padding: 0px; | ||||
|     margin-bottom: 0px; | ||||
| } | ||||
|  | ||||
| .form_notice { | ||||
|     float: right; | ||||
|     width: 494px; | ||||
|     margin-top: 0px; | ||||
| } | ||||
|  | ||||
| .form_notice fieldset { | ||||
|     width: 100%; | ||||
| } | ||||
|  | ||||
| .form_notice textarea { | ||||
|     width: 362px; | ||||
|     height: 54px; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-attach, | ||||
| .form_notice input.notice_data-attach { | ||||
|     top: 27px; | ||||
| } | ||||
|  | ||||
| .form_notice .notice_data-geo_wrap label, | ||||
| .form_notice .notice_data-geo_wrap input { | ||||
|     top: 52px; | ||||
| } | ||||
|  | ||||
| .form_notice .submit { | ||||
|     font-size: 0.9em; | ||||
|     top: 80px; | ||||
|     right:0; | ||||
|     height: 2.4em; | ||||
|     width: 96px; | ||||
| 	right: 10px; | ||||
| } | ||||
|  | ||||
| .form_notice .error, | ||||
| .form_notice .success { | ||||
|     width: 375px; | ||||
| } | ||||
|  | ||||
| .form_notice .error { | ||||
|     width: 375px; | ||||
|     margin-left: 0px; | ||||
| } | ||||
|  | ||||
| #core { | ||||
|     clear: both; | ||||
|     margin: 0px; | ||||
|     width: 851px; | ||||
|     margin-left: 8px; | ||||
|     margin-top: 14px; | ||||
| } | ||||
|  | ||||
| #content { | ||||
|     padding-top: 10px; | ||||
|     width: 545px; | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views { | ||||
|     background-color: #6e6e8c; | ||||
|     height: 2em; | ||||
|     line-height: 2em; | ||||
|     margin-bottom: 0px; | ||||
|     padding-left: 4px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a { | ||||
|     color: #fff !important; | ||||
|     padding: 2px 6px 2px 6px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views .current a { | ||||
|     background: #fff !important; | ||||
|     color: #000 !important; | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| #aside_primary { | ||||
|     width: 280px; | ||||
|     padding-left: 10px; | ||||
| } | ||||
|  | ||||
| #aside_primary .section { | ||||
|     width: 270px; | ||||
|     margin-left: 0px; | ||||
|     margin-right: 10px; | ||||
| } | ||||
|  | ||||
| .section ul.entities { | ||||
|     width: 290px; | ||||
| } | ||||
|  | ||||
| .section .entities li { | ||||
|         margin-right: 17px; | ||||
|         margin-bottom: 10px; | ||||
|         width: 24px; | ||||
| } | ||||
|  | ||||
| .notice { | ||||
|     line-height: 1.35em; | ||||
| } | ||||
|  | ||||
| #content .notice .author .photo { | ||||
|     left: 0px; | ||||
| } | ||||
|  | ||||
| #content .notice .entry-title { | ||||
|     min-height: 26px; | ||||
| } | ||||
|  | ||||
| #shownotice .notice .entry-title { | ||||
|     min-height:123px; | ||||
| } | ||||
|  | ||||
| .notice div.entry-content { | ||||
|     font-size: 0.9em; | ||||
|     line-height: 1.2em; | ||||
|     margin-top: 10px; | ||||
|     opacity: 0.6; | ||||
| } | ||||
|  | ||||
| .notice:hover div.entry-content { | ||||
|     opacity: 1; | ||||
| } | ||||
|  | ||||
| .user_in .notice div.entry-content { | ||||
|     max-width: 360px; | ||||
| } | ||||
|  | ||||
| div.entry-content a.response:before { | ||||
| 	content: "("; | ||||
| } | ||||
|  | ||||
| div.entry-content a.response:after { | ||||
| 	content: ")"; | ||||
| } | ||||
|  | ||||
| .notice-options { | ||||
|     margin-top: 8px; | ||||
| } | ||||
|  | ||||
| .pagination { | ||||
|     height: 1.2em; | ||||
| } | ||||
|  | ||||
| #jOverlayContent button { | ||||
|     top: 20px; | ||||
|     right: 36px; | ||||
| } | ||||
|  | ||||
| .entity_profile { | ||||
|     width: 365px; | ||||
| } | ||||
|  | ||||
| }/*end of @media screen, projection, tv*/ | ||||
| @@ -1,77 +0,0 @@ | ||||
| /* Temporary copy of base styles for overriding */ | ||||
|  | ||||
| input.checkbox, | ||||
| input.radio { | ||||
| top:0; | ||||
| } | ||||
| .form_notice textarea { | ||||
|     width: 362px; | ||||
| } | ||||
| .form_notice .count + label { | ||||
| position:absolute; | ||||
| top:25px; | ||||
| left:83%; | ||||
| text-indent:-9999px; | ||||
| height:16px; | ||||
| width:16px; | ||||
| display:block; | ||||
|     left: 390px; | ||||
|     top: 27px; | ||||
| } | ||||
| .form_notice .submit { | ||||
|     width: 96px; | ||||
|     max-width: 96px; | ||||
| } | ||||
| .form_notice .attach-status, | ||||
| .form_notice #notice_data-geo_selected { | ||||
| width:78.75%; | ||||
| } | ||||
| .form_notice .attach-status button, | ||||
| .form_notice #notice_data-geo_selected button { | ||||
| padding:0 4px; | ||||
| } | ||||
| .notice-options input.submit { | ||||
| font-size:0; | ||||
| text-align:right; | ||||
| text-indent:0; | ||||
| } | ||||
| .notice div.entry-content .timestamp a { | ||||
| margin-right:4px; | ||||
| } | ||||
| .entity_profile { | ||||
| width:64%; | ||||
| } | ||||
| .notice { | ||||
| z-index:1; | ||||
| } | ||||
| .notice:hover { | ||||
| z-index:9999; | ||||
| } | ||||
| .notice .thumbnail img { | ||||
| z-index:9999; | ||||
| } | ||||
|  | ||||
| .form_settings fieldset fieldset legend { | ||||
| line-height:auto; | ||||
| } | ||||
|  | ||||
| /* IE specific styles */ | ||||
|  | ||||
| .notice-options input.submit { | ||||
|     color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| .form_notice input.notice_data-attach { | ||||
|     filter: alpha(opacity=0); | ||||
| } | ||||
|  | ||||
| .form_notice .count + label { | ||||
|     background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -328px; | ||||
| } | ||||
|  | ||||
| .form_notice .notice_data-geo_wrap label { | ||||
|    background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -1780px; | ||||
| } | ||||
| .form_notice .notice_data-geo_wrap label.checked { | ||||
|    background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -1846px; | ||||
| } | ||||
| @@ -1,191 +0,0 @@ | ||||
| /* mobile style */ | ||||
|  | ||||
| body { | ||||
|     background-image: none; | ||||
|     min-width: 0; | ||||
| } | ||||
|  | ||||
| #wrap { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     min-width:0; | ||||
|     max-width:100%; | ||||
| } | ||||
|  | ||||
| #header { | ||||
|     width: 96%; | ||||
|     padding: 0 2%; | ||||
|     padding-top: 20px; | ||||
| } | ||||
|  | ||||
| .user_in #header { | ||||
|     padding-top: 40px; | ||||
| } | ||||
|  | ||||
| address { | ||||
| margin:1em 0 0 0; | ||||
| float:left; | ||||
| width:100%; | ||||
| } | ||||
|  | ||||
| address img + .fn { | ||||
| display:block; | ||||
| margin-top:1em; | ||||
|     margin-right: 10px; | ||||
| clear: left; | ||||
| float:left; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary { | ||||
|     margin:0; | ||||
|     width: 98%; | ||||
|     padding: 4px 0; | ||||
|     margin-left: -2%; | ||||
|     height: auto; | ||||
|     position:absolute; | ||||
|     top:0; | ||||
|     left:0; | ||||
|     font-size: 1em; | ||||
| 	letter-spacing: 0em; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li { | ||||
|     margin-left:0; | ||||
|     margin-right:10px; | ||||
|     float:left; | ||||
|     font-size:0.9em; | ||||
|     padding: 2px 4px; | ||||
|     line-height: 1em; | ||||
| } | ||||
|  | ||||
| .form_notice { | ||||
|     float: left; | ||||
|     margin-left: -10px; | ||||
|     width: 300px; | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice { | ||||
|     padding-top: 10px; | ||||
| } | ||||
|  | ||||
| .form_notice textarea { | ||||
|     width: 210px; | ||||
|     height: 50px; | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| .form_notice .count { | ||||
| position:absolute; | ||||
| bottom:2px; | ||||
|     left: 175px; | ||||
|     font-size: 0.8em; | ||||
| z-index:9; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice .count { | ||||
|     left: 0px; | ||||
| } | ||||
|  | ||||
| /*input type=file no good in | ||||
| iPhone/iPod Touch, Android, Opera Mini Simulator | ||||
| */ | ||||
| .form_notice .count + label, | ||||
| .form_notice label[for="notice_data-attach"] { | ||||
| display:none; | ||||
| } | ||||
| .form_notice input.notice_data-attach { | ||||
| position:static; | ||||
| clear:both; | ||||
| width:65%; | ||||
| height:auto; | ||||
| display:block; | ||||
| z-index:9; | ||||
| padding:0; | ||||
| margin:0; | ||||
| background:none; | ||||
| opacity:1; | ||||
| } | ||||
|  | ||||
| .form_notice .submit { | ||||
|     text-align: center; | ||||
|     left: 230px; | ||||
|     top: 32px; | ||||
|     width: 70px; | ||||
|     font-size: 0.8em; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice .submit { | ||||
|     top: 62px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views { | ||||
|     height: auto; | ||||
|     font-size: 0.9em; | ||||
|     line-height: 2em; | ||||
|     margin-bottom: 0px; | ||||
|     padding-left: 4px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views li { | ||||
|     margin-right: 6px; | ||||
| } | ||||
|  | ||||
|  | ||||
| #core { | ||||
|     width: 100%; | ||||
|     margin: 0; | ||||
| } | ||||
|  | ||||
| #content { | ||||
|     width: 96%; | ||||
|     padding: 10px 2%; | ||||
|     margin: 0; | ||||
|     min-height: auto; | ||||
| } | ||||
|  | ||||
| #footer { | ||||
|     margin: 0; | ||||
|     padding: 10px 4px 4px 4px; | ||||
| } | ||||
|  | ||||
|  | ||||
| .form_settings fieldset { | ||||
| margin-bottom:7px; | ||||
| } | ||||
|  | ||||
| .form_settings label { | ||||
| width:auto; | ||||
| display:block; | ||||
| float:none; | ||||
|     text-align: left; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data li { | ||||
| margin-bottom:7px; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data textarea, | ||||
| .form_settings .form_data select,  | ||||
| .form_settings .form_data input { | ||||
| margin-left:0; | ||||
| display:block; | ||||
| } | ||||
| .form_settings .form_data textarea { | ||||
| width:96.41%; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data label { | ||||
| float:none; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data p.form_guide { | ||||
| width:auto; | ||||
| margin-left:0; | ||||
| } | ||||
|  | ||||
|  | ||||
| #settings_design_color .form_data { | ||||
|  width: auto; | ||||
|  margin-right: 0; | ||||
| } | ||||
| Before Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 8.8 KiB | 
| Before Width: | Height: | Size: 3.4 KiB | 
| Before Width: | Height: | Size: 87 KiB | 
| Before Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 3.9 KiB | 
| @@ -1 +0,0 @@ | ||||
| include=rebase | ||||
| @@ -1,810 +0,0 @@ | ||||
| /** theme: cleaner | ||||
|  * | ||||
|  * @package   StatusNet | ||||
|  * @author    Samantha Doherty <sammy@status.net> | ||||
|  * @copyright 2011 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| @media screen, projection, tv { | ||||
|  | ||||
| body { | ||||
|     background-color: #e2e2e2; | ||||
|     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;  | ||||
|     font-size: 82%; | ||||
| } | ||||
|  | ||||
| a {color: #3e3e8c;} | ||||
|  | ||||
| h1 {font-size: 1.6em;} | ||||
| h2 {font-size: 1.6em;} | ||||
| h3 {font-size: 1.4em;} | ||||
| h4 {font-size: 1.4em;} | ||||
| h5 {font-size: 1.2em;} | ||||
| h6 {font-size: 1em;} | ||||
|  | ||||
| #wrap { | ||||
|     width: 940px; | ||||
|     margin: 0px auto; | ||||
|     padding: 0px 10px 10px 10px; | ||||
|     background-color: #fff; | ||||
|     box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
|     -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
|     -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
| } | ||||
|  | ||||
| #header { | ||||
|     width: 940px; | ||||
|     padding: 0px; | ||||
|     padding-top: 50px; | ||||
| } | ||||
|  | ||||
| address { | ||||
|     float: left; | ||||
|     margin-right: 20px; | ||||
|     margin-top: 0px; | ||||
| } | ||||
|  | ||||
| .poweredby { | ||||
|     background: url(../images/sn-tiny.png) no-repeat top left; | ||||
|     height: 40px; | ||||
|     font-size: 0.8em; | ||||
|     color: #fff; | ||||
|     line-height: 42px; | ||||
|     padding-left: 50px; | ||||
|     position: absolute; | ||||
|     top: 6px; | ||||
|     left: 0; | ||||
|     z-index: 99; | ||||
|     font-style: normal; | ||||
| } | ||||
|  | ||||
| .poweredby a { | ||||
|     color: #fff !important; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary { | ||||
|     display: block; | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     z-index: 98; | ||||
|     background-color: #364A84; | ||||
|     width: 960px; | ||||
|     margin-left: -10px;  | ||||
|     margin-top: 0px; | ||||
|     height: 24px; | ||||
|     line-height: 20px; | ||||
|     text-align: right; | ||||
|     border-top: 10px solid #fff; | ||||
|     border-bottom: 1px solid #fff; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary ul { | ||||
|     margin-right: -15px; | ||||
|     float: right; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li { | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li:last-child { | ||||
|     margin-right: 16px; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary a { | ||||
|     color: #fff !important; | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); | ||||
|     padding: 2px 12px 2px 12px; | ||||
|     height: 20px; | ||||
|     display: block; | ||||
|     float: left; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary a:hover { | ||||
|     color: #fff !important; | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); | ||||
|     background: #4c619c; | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| #site_notice { | ||||
|     color: #000; | ||||
|     float: right; | ||||
|     width: 280px; | ||||
|     padding: 10px;  | ||||
|     margin-left: 40px; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
| } | ||||
|  | ||||
| #site_notice a { | ||||
|     color: #3e3e8c; | ||||
| } | ||||
|  | ||||
| #anon_notice { | ||||
|     color: #000; | ||||
|     clear: both; | ||||
|     background: none; | ||||
|     padding: 0px; | ||||
|     margin-bottom: 10px; | ||||
| } | ||||
|  | ||||
| #anon_notice a { | ||||
|     color: #3e3e8c; | ||||
| } | ||||
|  | ||||
| .form_notice { | ||||
|     float: right; | ||||
|     margin-top: 0px; | ||||
|     width: 460px; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
|     background: #cdd1dd; | ||||
| } | ||||
|  | ||||
| .form_notice fieldset { | ||||
|     width: 100%; | ||||
| } | ||||
|  | ||||
| .form_notice textarea { | ||||
|     width: 328px; | ||||
|     height: 54px; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-attach, | ||||
| .form_notice input.notice_data-attach { | ||||
|     top: 27px; | ||||
|     right: 86px; | ||||
| } | ||||
|  | ||||
| .form_notice .notice_data-geo_wrap label, | ||||
| .form_notice .notice_data-geo_wrap input { | ||||
|     top: 52px; | ||||
|     right: 86px; | ||||
| } | ||||
|  | ||||
| .form_notice .submit { | ||||
|     font-size: 0.9em; | ||||
|     top: 80px; | ||||
| 	right: -2px; | ||||
|     height: 2.4em; | ||||
|     width: 106px; | ||||
| } | ||||
|  | ||||
| .form_notice .error, | ||||
| .form_notice .success { | ||||
|     width: 341px; | ||||
| } | ||||
|  | ||||
| .form_notice .error { | ||||
|     margin-left: 0px; | ||||
| } | ||||
|  | ||||
| #core { | ||||
|     clear: both; | ||||
|     margin: 0px; | ||||
|     width: 940px; | ||||
|     margin-left: 0px; | ||||
|     margin-top: 4px; | ||||
| } | ||||
|  | ||||
| #content { | ||||
|     padding-top: 10px; | ||||
|     width: 610px; | ||||
|     margin-right: 0px; | ||||
|     padding-left: 10px; | ||||
|     padding-right: 20px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views { | ||||
|     background-color: #7080aa; | ||||
|     -webkit-border-top-left-radius: 6px; | ||||
|     -webkit-border-top-right-radius: 6px; | ||||
|     -moz-border-radius-topleft: 6px; | ||||
|     -moz-border-radius-topright: 6px; | ||||
|     border-top-left-radius: 6px; | ||||
|     border-top-right-radius: 6px; | ||||
|     height: 24px; | ||||
|     line-height: 20px; | ||||
|     margin-bottom: 0px; | ||||
|     padding-left: 0px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a { | ||||
|     color: #fff !important; | ||||
|     padding: 2px 12px 2px 12px; | ||||
|     display: block; | ||||
|     float: left; | ||||
|     height: 20px; | ||||
|     width: auto; | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); | ||||
| } | ||||
|  | ||||
| #site_nav_local_views li:first-child a { | ||||
|     -webkit-border-top-left-radius: 6px; | ||||
|     -moz-border-radius-topleft: 6px; | ||||
|     border-top-left-radius: 6px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a:hover { | ||||
|     background: #8e98b4 !important; | ||||
|     color: #fff !important; | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views .current a { | ||||
|     text-decoration: none; | ||||
|     background: #8e98b4 !important; | ||||
|     color: #fff !important; | ||||
| } | ||||
|  | ||||
| #aside_primary { | ||||
|     width: 290px; | ||||
|     padding-left: 10px; | ||||
|     padding-top: 14px; | ||||
| } | ||||
|  | ||||
| #aside_primary .section { | ||||
|     width: 280px; | ||||
|     margin-left: 0px; | ||||
|     margin-right: 10px; | ||||
|  | ||||
| } | ||||
|  | ||||
| #aside_primary h2 { | ||||
|     font-size: 1.4em; | ||||
|     margin-bottom: 8px; | ||||
|     border-bottom: 2px solid #fff; | ||||
| } | ||||
|  | ||||
| .section ul.entities { | ||||
|     width: 290px; | ||||
| } | ||||
|  | ||||
| .section .entities li { | ||||
|     margin-right: 17px; | ||||
|     margin-bottom: 10px; | ||||
|     width: 24px; | ||||
| } | ||||
|  | ||||
| #popular_notices .avatar { | ||||
|     position: relative; | ||||
|     top: 2px; | ||||
|     margin-bottom: 4px; | ||||
| } | ||||
|  | ||||
| #aside_primary td { | ||||
|     padding-right: 20px; | ||||
|     padding-bottom: 14px; | ||||
| } | ||||
|  | ||||
| #aside_primary td .nickname { | ||||
|     line-height: 1.6em; | ||||
| } | ||||
|  | ||||
| .section .avatar { | ||||
|     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); | ||||
|     -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); | ||||
|     -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); | ||||
| } | ||||
|  | ||||
| #content h1 { | ||||
|     margin-bottom: 8px; | ||||
|     border-bottom: 2px solid #f2f2f2; | ||||
| } | ||||
|  | ||||
| #notices_primary { | ||||
|     margin-top: -5px; | ||||
| } | ||||
|  | ||||
| #content .notice { | ||||
|     padding-bottom: 14px; | ||||
|     border-bottom: 2px dotted #eee; | ||||
| } | ||||
|  | ||||
| .notice { | ||||
|     line-height: 1.35em; | ||||
|     margin-bottom: 10px; | ||||
| } | ||||
|  | ||||
| #content .notice .author .photo { | ||||
|     left: 0px; | ||||
|     top: 6px; | ||||
| } | ||||
|  | ||||
| #content .notice .entry-title { | ||||
|     min-height: 34px; | ||||
| } | ||||
|  | ||||
| #showstream .notice .entry-title { | ||||
|     min-height: 1px; | ||||
| } | ||||
|  | ||||
| #shownotice .notice .entry-title { | ||||
|     min-height:123px; | ||||
| } | ||||
|  | ||||
| .notice div.entry-content { | ||||
|     font-size: 0.9em; | ||||
|     line-height: 1.2em; | ||||
|     margin-top: 6px; | ||||
|     opacity: 0.6; | ||||
| } | ||||
|  | ||||
| .notice:hover div.entry-content { | ||||
|     opacity: 1; | ||||
| } | ||||
|  | ||||
| .user_in .notice div.entry-content { | ||||
|     max-width: 440px; | ||||
| } | ||||
|  | ||||
| div.entry-content a.response:before { | ||||
| 	content: "("; | ||||
| } | ||||
|  | ||||
| div.entry-content a.response:after { | ||||
| 	content: ")"; | ||||
| } | ||||
|  | ||||
| .notice-options { | ||||
|     margin-top: 4px; | ||||
| } | ||||
|  | ||||
| .pagination { | ||||
|     height: 1.2em; | ||||
| } | ||||
|  | ||||
| #jOverlayContent button { | ||||
|     top: 20px; | ||||
|     right: 36px; | ||||
| } | ||||
|  | ||||
| .entity_profile { | ||||
|     float: left; | ||||
|     width: 435px; | ||||
|     margin-top: 4px; | ||||
| } | ||||
|  | ||||
| .entity_profile .entity_depiction { | ||||
|     margin-top: 4px; | ||||
| } | ||||
|  | ||||
| .entity_actions { | ||||
|     width: 140px; | ||||
|     margin-top: 8px; | ||||
|     margin-bottom: 10px; | ||||
| } | ||||
|  | ||||
| .entity_actions a, .entity_actions p, .entity_actions .entity_subscribe input, .entity_actions .entity_block input, .entity_actions .entity_moderation input, .entity_actions .entity_role input, .entity_actions .entity_nudge input, .entity_actions .entity_delete input { | ||||
|    	text-shadow:0 1px 0 rgba(255,255,255,0.4); | ||||
|     border-radius: 4px; | ||||
|     -moz-border-radius: 4px; | ||||
|     -webkit-border-radius: 4px; | ||||
|     background-color: #CDD1DD !important; | ||||
| } | ||||
|  | ||||
| .entity_moderation:hover ul, | ||||
| .entity_role:hover ul { | ||||
|     border-radius: 4px; | ||||
|     -moz-border-radius: 4px; | ||||
|     -webkit-border-radius: 4px; | ||||
| } | ||||
|  | ||||
| .entity_send-a-message .form_notice legend { | ||||
|    	text-shadow:0 1px 0 rgba(255,255,255,0.4); | ||||
| } | ||||
|  | ||||
| .entity_send-a-message .form_notice { | ||||
|     border: 1px solid #7B4E82; | ||||
| } | ||||
|  | ||||
| .entity_send-a-message .form_notice .submit { | ||||
|     color: #fff !important; | ||||
|     top: 46px; | ||||
| } | ||||
|  | ||||
| #aside_primary #entity_remote_subscribe a:hover { | ||||
|     background-color: #fff !important; | ||||
| } | ||||
|  | ||||
| #entity_remote_subscribe .dialogbox { | ||||
|     border: 1px solid #7B4E82; | ||||
|     border-radius: 8px; | ||||
| 	-moz-border-radius: 8px; | ||||
| 	-webkit-border-radius: 8px; | ||||
| } | ||||
|  | ||||
| #entity_remote_subscribe input { | ||||
|     padding-left: 4px; | ||||
| } | ||||
|  | ||||
| #entity_remote_subscribe .submit_dialogbox { | ||||
|     margin-top: 10px; | ||||
|     float: right; | ||||
| } | ||||
|  | ||||
| #filter_tags_item .submit { | ||||
|   left: 6px; | ||||
|   top: -3px; | ||||
| } | ||||
|  | ||||
| .pagination { | ||||
|     height: 1.2em; | ||||
|     padding-bottom: 12px; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
| } | ||||
|  | ||||
| #footer { | ||||
|     color: #000; | ||||
|     margin-left: 0px; | ||||
|     margin-right: 0px; | ||||
|     -webkit-border-top-left-radius: 6px; | ||||
|     -webkit-border-top-right-radius: 6px; | ||||
|     -moz-border-radius-topleft: 6px; | ||||
|     -moz-border-radius-topright: 6px; | ||||
|     border-top-left-radius: 6px; | ||||
|     border-top-right-radius: 6px; | ||||
| } | ||||
|  | ||||
| #footer a { | ||||
|     color: #3e3e8c; | ||||
| } | ||||
|  | ||||
| .error, .success { | ||||
|     background-color: #F7E8E8; | ||||
|     padding: 4px; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
| } | ||||
| .success { | ||||
|     background-color: #f2f2f2; | ||||
| } | ||||
|  | ||||
| .form_notice input.submit, .form_settings input.submit, .form_settings input.cancel { | ||||
|     border-radius: 3px; | ||||
|     -moz-border-radius: 3px; | ||||
|     -webkit-border-radius: 3px; | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); | ||||
|     color:#fff; | ||||
|     font-weight: normal; | ||||
|     font-size: 1em; | ||||
|     height: 2.2em; | ||||
|     padding-left: 1em; | ||||
|     padding-right: 1em; | ||||
|     background: #7080aa; | ||||
|     background: -moz-linear-gradient(top, #7b8dbb , #7080aa); | ||||
|     background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#7080aa));  | ||||
|     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#7080aa',GradientType=0 ); | ||||
|     border-width: 1px; | ||||
| } | ||||
|  | ||||
| .form_notice input.submit:hover, .form_settings input.submit:hover, .form_settings input.cancel:hover { | ||||
|     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.8); | ||||
|     background: #7b8dbb; | ||||
|     background: -moz-linear-gradient(top, #7080aa , #7b8dbb); | ||||
|     background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7080aa), color-stop(100%,#7b8dbb)); | ||||
|     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7080aa', endColorstr='#7b8dbb',GradientType=0 ); | ||||
| } | ||||
|  | ||||
| .form_settings input#settings_design_reset, .form_settings input.cancel { | ||||
|     background: #e2e2e2; | ||||
|     color: #8e181b; | ||||
|     text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5); | ||||
| } | ||||
|  | ||||
| .form_settings input#settings_design_reset:hover, .form_settings input.cancel:hover { | ||||
|     background: #f2f2f2; | ||||
|     color: #8e181b; | ||||
|     text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5); | ||||
| } | ||||
|  | ||||
| .form_settings input.checkbox, .form_settings input.radio { | ||||
|     margin-left: 24%; | ||||
|     margin-top: 2px; | ||||
|     position: relative; | ||||
|     left: -14px; | ||||
| } | ||||
|  | ||||
| .form_settings label.checkbox, .form_settings label.radio { | ||||
|     width: auto; | ||||
|     max-width: 60%; | ||||
|     position: relative; | ||||
|     left: -30px; | ||||
| } | ||||
|  | ||||
| .form_settings li input.radio { | ||||
|     clear: left; | ||||
| } | ||||
|  | ||||
| .form_settings label.radio { | ||||
|     margin-left: 10px; | ||||
|     margin-right: 10px; | ||||
|     text-align: left; | ||||
| } | ||||
|  | ||||
| #form_login p.form_guide, #form_register #settings_rememberme p.form_guide, #form_openid_login #settings_rememberme p.form_guide, #settings_twitter_remove p.form_guide, #design_background-image_onoff p.form_guide { | ||||
|     margin-left: 26%; | ||||
| } | ||||
|  | ||||
| #form_search ul.form_data #q { | ||||
|     margin-left: 10px; | ||||
| } | ||||
|  | ||||
| .form_settings fieldset fieldset { | ||||
|     margin-bottom: 30px; | ||||
|     padding-top: 25px; | ||||
| } | ||||
|  | ||||
|  | ||||
| #content thead th { | ||||
| text-align:left; | ||||
| } | ||||
| #content tbody th { | ||||
| vertical-align:top; | ||||
| text-align:left; | ||||
| font-weight:normal; | ||||
| padding-top:11px; | ||||
| padding-right:18px; | ||||
| } | ||||
| #content tbody tr { | ||||
|     border-top: 1px dotted #bbb; | ||||
| } | ||||
| #content td { | ||||
| padding:11px 18px 11px 0; | ||||
| vertical-align:top; | ||||
| } | ||||
| #content td:last-child { | ||||
| padding-right:0; | ||||
| } | ||||
|  | ||||
|  | ||||
| #realtime_actions { | ||||
|     position: relative !important; | ||||
|     float: right; | ||||
|     padding-top: 15px; | ||||
|     margin-bottom: -8px !important; | ||||
| } | ||||
|  | ||||
| .realtime-popup #content { | ||||
|     padding-left: 4px !important; | ||||
|     padding-right: 4px !important; | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| .realtime-popup .form_notice textarea { | ||||
|     width: 325px !important; | ||||
| } | ||||
|  | ||||
| .realtime-popup .form_notice .submit { | ||||
|     top: 59px !important; | ||||
|     right: 6px !important; | ||||
| } | ||||
|  | ||||
| .realtime-popup .form_notice label.notice_data-attach, .realtime-popup .form_notice input.notice_data-attach { | ||||
|     right: 74px; | ||||
|     top: 3px !important; | ||||
| } | ||||
|  | ||||
| .realtime-popup .form_notice .notice_data-geo_wrap label, .realtime-popup .form_notice .notice_data-geo_wrap input { | ||||
|     right: 8px; | ||||
|     top: 3px !important; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Bookmark specific styles */ | ||||
|  | ||||
| #content .bookmark .entry-title { | ||||
|     margin-left: 0px; | ||||
| } | ||||
|  | ||||
| .bookmark h3 { | ||||
|     margin: 0px 0px 8px 0px; | ||||
|     float: left; | ||||
|     line-height: 1.2em; | ||||
|     max-width: 92%; | ||||
| } | ||||
|  | ||||
| .bookmark-notice-count { | ||||
|     border-radius: 4px; | ||||
| 	-moz-border-radius: 4px; | ||||
| 	-webkit-border-radius: 4px; | ||||
|     padding: 1px 6px; | ||||
|     font-size: 1.2em; | ||||
|     line-height: 1.2em; | ||||
|     background: #fff; | ||||
|     border: 1px solid #7b8dbb; | ||||
|     color: #3e3e8c !important; | ||||
|     position: relative; | ||||
|     right: 4px; | ||||
|     margin-left: 10px; | ||||
| } | ||||
|  | ||||
| .bookmark-notice-count:hover { | ||||
|     text-decoration: none; | ||||
|     background: #f2f2f2; | ||||
|     border: 1px solid #7b8dbb; | ||||
|     text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5); | ||||
| } | ||||
|  | ||||
| .notice .bookmark-description { | ||||
|     clear: both; | ||||
|     margin-left: 0px; | ||||
|     margin-bottom: 0px; | ||||
| } | ||||
|  | ||||
| .notice .bookmark-author { | ||||
|     margin-left: 0px; | ||||
|     float: left; | ||||
| } | ||||
|  | ||||
| .bookmark-tags { | ||||
|     clear: both; | ||||
|     margin-bottom: 8px; | ||||
|     line-height: 1.6em; | ||||
| } | ||||
|  | ||||
| ul.bookmark-tags a { | ||||
|     border-radius: 4px; | ||||
| 	-moz-border-radius: 4px; | ||||
| 	-webkit-border-radius: 4px; | ||||
|     padding: 1px 6px; | ||||
|     background: #f2f2f2; | ||||
|     color: #3e3e8c !important; | ||||
|     text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5); | ||||
|     font-size: 0.9em; | ||||
| } | ||||
|  | ||||
| ul.bookmark-tags a:hover { | ||||
|     background-color: #cdd1dd; | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| .bookmark-avatar { | ||||
|     float: none !important; | ||||
|     position: relative; | ||||
|     top: 2px; | ||||
| } | ||||
|  | ||||
| .bookmark div.entry-content { | ||||
|     font-size: 0.9em; | ||||
|     line-height: 1.2em; | ||||
|     margin-top: 6px; | ||||
|     opacity: 0.6; | ||||
|     margin-bottom: 0px; | ||||
| } | ||||
|  | ||||
| .bookmark:hover div.entry-content { | ||||
|     opacity: 1; | ||||
| } | ||||
|  | ||||
| .bookmark .notice-options { | ||||
|     margin-top: 16px; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup { | ||||
|     min-width: 600px; | ||||
|     margin-top: 0px; | ||||
|     height: 100%; | ||||
|     border: 10px solid #364A84; | ||||
|     background: #364A84; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup #wrap { | ||||
|     width: auto; | ||||
|     min-width: 560px; | ||||
|     padding: 40px 0px 25px 0px; | ||||
|     margin-right: 2px; | ||||
|     background: #fff url(../mobilelogo.png) no-repeat 6px 6px; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup #header { | ||||
|     width: auto; | ||||
|     padding: 0px 10px; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup .form_settings label { | ||||
|     margin-top: 2px; | ||||
|     text-align: right; | ||||
|     width: 24%; | ||||
|     font-size: 1.2em; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup .form_settings .form_data input { | ||||
|     width: 60%; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup .form_guide { | ||||
|     color: #777; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup #submit { | ||||
|     float: right; | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| #bookmarkpopup fieldset fieldset { | ||||
|     margin-bottom: 10px; | ||||
| } | ||||
|  | ||||
| /* Onboard specific styles */ | ||||
|  | ||||
| .onboard-flash { | ||||
|     border-radius: 6px; | ||||
|  	-moz-border-radius: 6px; | ||||
|    	-webkit-border-radius: 6px; | ||||
|     font-size: 1.1em; | ||||
|     box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
|     -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
|     -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.5); | ||||
| } | ||||
|  | ||||
| .onboard-flash p { | ||||
|     margin-bottom: 10px; | ||||
| } | ||||
|  | ||||
| .onboard-flash .next:before { | ||||
|     content: '\00BB'; | ||||
|     padding-right: 6px; | ||||
| } | ||||
|  | ||||
| .onboard-breadcrumbs { | ||||
|     margin-bottom: 16px !important; | ||||
| } | ||||
|  | ||||
| .onboard-breadcrumbs li { | ||||
|     background: none !important; | ||||
|     border-top: none !important; | ||||
|     padding: 6px 12px 2px 0px !important; | ||||
| } | ||||
|  | ||||
| .onboard-breadcrumbs li:last-child { | ||||
|     padding-right: 0px !important; | ||||
| } | ||||
|  | ||||
| .onboard-breadcrumbs a { | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| .onboard-breadcrumbs a:hover { | ||||
|     color: #3e3e8c !important; | ||||
| } | ||||
|  | ||||
| /* Billing specific styles */ | ||||
|  | ||||
| #content table.billing_info { | ||||
|     margin-top: 10px; | ||||
|     background:rgba(240, 240, 240, 0.4); | ||||
| } | ||||
|  | ||||
| #content table.billing_info th { | ||||
|     text-align: right; | ||||
|     width: 50%; | ||||
| } | ||||
|  | ||||
| .invalid { | ||||
|     border: solid 2px red !important; | ||||
| } | ||||
|  | ||||
| #payment_history table { | ||||
|     width: 100%; | ||||
| } | ||||
|  | ||||
| #billingadminpanel .form_settings input { | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| }/*end of @media screen, projection, tv*/ | ||||
| @@ -1,81 +0,0 @@ | ||||
| /* Temporary copy of base styles for overriding */ | ||||
|  | ||||
| input.checkbox, | ||||
| input.radio { | ||||
| top:0; | ||||
| } | ||||
| .form_notice textarea { | ||||
|     width: 328px; | ||||
| } | ||||
| .form_notice .count + label { | ||||
| position:absolute; | ||||
| top:25px; | ||||
| left:83%; | ||||
| text-indent:-9999px; | ||||
| height:16px; | ||||
| width:16px; | ||||
| display:block; | ||||
|     left: 390px; | ||||
|     top: 27px; | ||||
| } | ||||
| .form_notice .submit { | ||||
|     width: 106px; | ||||
|     max-width: 106px; | ||||
| } | ||||
| .form_notice .attach-status, | ||||
| .form_notice #notice_data-geo_selected { | ||||
| width:78.75%; | ||||
| } | ||||
| .form_notice .attach-status button, | ||||
| .form_notice #notice_data-geo_selected button { | ||||
| padding:0 4px; | ||||
| } | ||||
| .notice-options input.submit { | ||||
| font-size:0; | ||||
| text-align:right; | ||||
| text-indent:0; | ||||
| } | ||||
| .notice div.entry-content .timestamp a { | ||||
| margin-right:4px; | ||||
| } | ||||
| .entity_profile { | ||||
| width:64%; | ||||
| } | ||||
| .notice { | ||||
| z-index:1; | ||||
| } | ||||
| .notice:hover { | ||||
| z-index:9999; | ||||
| } | ||||
| .notice .thumbnail img { | ||||
| z-index:9999; | ||||
| } | ||||
|  | ||||
| .form_settings fieldset fieldset legend { | ||||
| line-height:auto; | ||||
| } | ||||
|  | ||||
| /* IE specific styles */ | ||||
|  | ||||
| #site_nav_global_primary ul { | ||||
|     margin-right: 0px; | ||||
| } | ||||
|  | ||||
| .notice-options input.submit { | ||||
|     color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| .form_notice input.notice_data-attach { | ||||
|     filter: alpha(opacity=0); | ||||
| } | ||||
|  | ||||
| .form_notice .count + label { | ||||
|     background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -328px; | ||||
| } | ||||
|  | ||||
| .form_notice .notice_data-geo_wrap label { | ||||
|    background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -1780px; | ||||
| } | ||||
| .form_notice .notice_data-geo_wrap label.checked { | ||||
|    background:transparent url(../../rebase/images/icons/icons-01.gif) no-repeat 0 -1846px; | ||||
| } | ||||
| @@ -1,204 +0,0 @@ | ||||
| /* mobile style */ | ||||
|  | ||||
| body { | ||||
|     background-image: none; | ||||
|     min-width: 0; | ||||
| } | ||||
|  | ||||
| #wrap { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     min-width:0; | ||||
|     max-width:100%; | ||||
| } | ||||
|  | ||||
| #header { | ||||
|     width: 96%; | ||||
|     padding: 0 2%; | ||||
|     padding-top: 20px; | ||||
| } | ||||
|  | ||||
| .user_in #header { | ||||
|     padding-top: 40px; | ||||
| } | ||||
|  | ||||
| address { | ||||
| margin:1em 0 0 0; | ||||
| float:left; | ||||
| width:100%; | ||||
| } | ||||
|  | ||||
| address img + .fn { | ||||
| display:block; | ||||
| margin-top:1em; | ||||
|     margin-right: 10px; | ||||
| clear: left; | ||||
| float:left; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary { | ||||
|     margin:0; | ||||
|     width: 100%; | ||||
|     padding: 4px 0; | ||||
|     height: auto; | ||||
|     position:absolute; | ||||
|     top:0; | ||||
|     left:0; | ||||
|     font-size: 1em; | ||||
| 	letter-spacing: 0em; | ||||
|     border-top: none; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li { | ||||
|     margin-left:0; | ||||
|     margin-right:0px; | ||||
|     float:left; | ||||
|     font-size:0.9em; | ||||
|     padding: 2px 4px; | ||||
|     line-height: 1em; | ||||
|     height: auto; | ||||
| } | ||||
|  | ||||
| #site_nav_global_primary li a { | ||||
|     height: auto; | ||||
| } | ||||
|  | ||||
| .form_notice { | ||||
|     float: left; | ||||
|     margin-left: 0px; | ||||
|     width: 300px; | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice { | ||||
|     padding-top: 10px; | ||||
| } | ||||
|  | ||||
| .form_notice textarea { | ||||
|     width: 210px; | ||||
|     height: 50px; | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| .form_notice .count { | ||||
| position:absolute; | ||||
| bottom:2px; | ||||
|     left: 175px; | ||||
|     font-size: 0.8em; | ||||
| z-index:9; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice .count { | ||||
|     left: 0px; | ||||
| } | ||||
|  | ||||
| /*input type=file no good in | ||||
| iPhone/iPod Touch, Android, Opera Mini Simulator | ||||
| */ | ||||
| .form_notice .count + label, | ||||
| .form_notice label[for="notice_data-attach"] { | ||||
| display:none; | ||||
| } | ||||
| .form_notice input.notice_data-attach { | ||||
| position:static; | ||||
| clear:both; | ||||
| width:65%; | ||||
| height:auto; | ||||
| display:block; | ||||
| z-index:9; | ||||
| padding:0; | ||||
| margin:0; | ||||
| background:none; | ||||
| opacity:1; | ||||
| } | ||||
|  | ||||
| .form_notice .submit { | ||||
|     text-align: center; | ||||
|     left: 230px; | ||||
|     top: 32px; | ||||
|     width: 70px; | ||||
|     font-size: 0.8em; | ||||
| } | ||||
|  | ||||
| #form_notice-direct.form_notice .submit { | ||||
|     top: 62px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views { | ||||
|     height: auto; | ||||
|     font-size: 0.9em; | ||||
|     line-height: 2em; | ||||
|     margin-bottom: 0px; | ||||
|     padding-left: 4px; | ||||
|     background: none; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views li { | ||||
|     margin-right: 6px; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a { | ||||
|     background-color: #7080aa; | ||||
|     -webkit-border-radius: 6px; | ||||
|     -moz-border-radius: 6px; | ||||
|     border-radius: 6px; | ||||
|     margin-right: 2px; | ||||
|     margin-bottom: 2px; | ||||
| } | ||||
|  | ||||
| #core { | ||||
|     width: 100%; | ||||
|     margin: 0; | ||||
| } | ||||
|  | ||||
| #content { | ||||
|     width: 96%; | ||||
|     padding: 10px 2%; | ||||
|     margin: 0; | ||||
|     min-height: auto; | ||||
| } | ||||
|  | ||||
| #footer { | ||||
|     margin: 0; | ||||
|     padding: 10px 4px 4px 4px; | ||||
| } | ||||
|  | ||||
|  | ||||
| .form_settings fieldset { | ||||
| margin-bottom:7px; | ||||
| } | ||||
|  | ||||
| .form_settings label { | ||||
| width:auto; | ||||
| display:block; | ||||
| float:none; | ||||
|     text-align: left; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data li { | ||||
| margin-bottom:7px; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data textarea, | ||||
| .form_settings .form_data select,  | ||||
| .form_settings .form_data input { | ||||
| margin-left:0; | ||||
| display:block; | ||||
| } | ||||
| .form_settings .form_data textarea { | ||||
| width:96.41%; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data label { | ||||
| float:none; | ||||
| } | ||||
|  | ||||
| .form_settings .form_data p.form_guide { | ||||
| width:auto; | ||||
| margin-left:0; | ||||
| } | ||||
|  | ||||
| #settings_design_color .form_data { | ||||
|  width: auto; | ||||
|  margin-right: 0; | ||||
| } | ||||
| Before Width: | Height: | Size: 857 B | 
| Before Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 9.1 KiB | 
| @@ -1 +0,0 @@ | ||||
| include=rebase | ||||
| @@ -1,82 +0,0 @@ | ||||
| /** | ||||
|  * @package   StatusNet | ||||
|  * @author    Sarven Capadisli <csarven@status.net> | ||||
|  * @copyright 2009-2010 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
| /* IE specific styles */ | ||||
|  | ||||
| .notice-options input.submit { | ||||
| color:#fff; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views a { | ||||
| background-color:#ddffcc; | ||||
| } | ||||
|  | ||||
| #form_notice { | ||||
| width:525px; | ||||
| } | ||||
| .form_notice .count { | ||||
| top:-5px; | ||||
| right:0; | ||||
| } | ||||
| #form_notice textarea { | ||||
| width:97.75%; | ||||
| } | ||||
| .form_notice .count + label { | ||||
| position:absolute; | ||||
| top:87px; | ||||
| left:77%; | ||||
| text-indent:-9999px; | ||||
| height:16px; | ||||
| width:16px; | ||||
| display:block; | ||||
| } | ||||
| #form_notice input.notice_data-attach { | ||||
| filter: alpha(opacity = 0); | ||||
| left:33.5%; | ||||
| } | ||||
|  | ||||
| #form_notice .submit { | ||||
| right:0; | ||||
| } | ||||
|  | ||||
| #aside_primary { | ||||
| width:181px; | ||||
| } | ||||
|  | ||||
| #form_notice, | ||||
| #anon_notice { | ||||
| top:190px; | ||||
| } | ||||
|  | ||||
| #public.user_in #content, | ||||
| #groups.user_in #content, | ||||
| #publictagcloud.user_in #content, | ||||
| #featured.user_in #content, | ||||
| #favorited.user_in #content, | ||||
| #all.user_in #content, | ||||
| #replies.user_in #content, | ||||
| #showstream.user_in #content, | ||||
| #showfavorites.user_in #content, | ||||
| #inbox.user_in #content, | ||||
| #outbox.user_in #content, | ||||
| #subscriptions.user_in #content, | ||||
| #subscribers.user_in #content, | ||||
| #showgroup.user_in #content, | ||||
| #conversation.user_in #content, | ||||
| #attachment.user_in #content { | ||||
| padding-top:138px; | ||||
| } | ||||
|  | ||||
| .notice { | ||||
| z-index:1; | ||||
| } | ||||
| .notice:hover { | ||||
| z-index:9999; | ||||
| } | ||||
| .notice .thumbnail img { | ||||
| z-index:9999; | ||||
| } | ||||
| Before Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 9.0 KiB | 
| Before Width: | Height: | Size: 3.7 KiB | 
| Before Width: | Height: | Size: 820 B | 
| Before Width: | Height: | Size: 701 B | 
| Before Width: | Height: | Size: 397 B | 
| Before Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 673 B | 
| Before Width: | Height: | Size: 336 B | 
| Before Width: | Height: | Size: 777 B | 
| Before Width: | Height: | Size: 148 B | 
| Before Width: | Height: | Size: 331 B | 
| Before Width: | Height: | Size: 73 B | 
| Before Width: | Height: | Size: 74 B | 
| Before Width: | Height: | Size: 75 B | 
| Before Width: | Height: | Size: 82 B | 
| Before Width: | Height: | Size: 76 B | 
| Before Width: | Height: | Size: 79 B | 
| Before Width: | Height: | Size: 85 B | 
| Before Width: | Height: | Size: 68 B | 
| Before Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 329 B | 
| Before Width: | Height: | Size: 5.7 KiB | 
| Before Width: | Height: | Size: 5.6 KiB | 
| Before Width: | Height: | Size: 9.9 KiB | 
| @@ -1,573 +0,0 @@ | ||||
| /** theme: default | ||||
|  * | ||||
|  * @package   StatusNet | ||||
|  * @author    Sarven Capadisli <csarven@status.net> | ||||
|  * @copyright 2009-2010 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| @media screen, projection, tv { | ||||
| body, | ||||
| a:active { | ||||
| background-color:#CEE1E9; | ||||
| } | ||||
| body { | ||||
| font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; | ||||
| font-size:1em; | ||||
| } | ||||
| address { | ||||
| margin-right:5.3%; | ||||
| } | ||||
| input, textarea, select { | ||||
| border-width:2px; | ||||
| border-style: solid; | ||||
| border-radius:4px; | ||||
| -moz-border-radius:4px; | ||||
| -webkit-border-radius:4px; | ||||
| } | ||||
| input, textarea, select, option { | ||||
| font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; | ||||
| } | ||||
| input, textarea, select, | ||||
| .entity_actions .dialogbox input, | ||||
| .mark-top { | ||||
| border-color:#AAAAAA; | ||||
| } | ||||
|  | ||||
| .form_settings fieldset fieldset { | ||||
| background:rgba(240, 240, 240, 0.2); | ||||
| box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| -moz-box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| -webkit-box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); | ||||
| } | ||||
|  | ||||
| #filter_tags ul li, | ||||
| .entity_send-a-message .form_notice, | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a, | ||||
| .form_settings fieldset fieldset, | ||||
| .entity_moderation:hover ul, | ||||
| .entity_role:hover ul, | ||||
| .dialogbox { | ||||
| border-color:#DDDDDD; | ||||
| } | ||||
|  | ||||
| .form_settings input.form_action-primary { | ||||
| background:none; | ||||
| } | ||||
|  | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note { | ||||
| background-color:#9BB43E; | ||||
| } | ||||
| input.submit, | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note, | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_moderation p, | ||||
| .entity_role p, | ||||
| button { | ||||
| 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); | ||||
| } | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_actions p { | ||||
| border-color:transparent; | ||||
| background-color:transparent; | ||||
| } | ||||
| input:focus, textarea:focus, select:focus, | ||||
| .form_notice.warning textarea, | ||||
| .form_notice.warning .count, | ||||
| .form_settings .form_note, | ||||
| .entity_actions .dialogbox .form_data input:focus { | ||||
| border-color:#9BB43E; | ||||
| } | ||||
| input.submit { | ||||
| color:#FFFFFF; | ||||
| } | ||||
| .entity_actions input.submit { | ||||
| border-color:transparent; | ||||
| text-shadow:none; | ||||
| } | ||||
| .dialogbox .submit_dialogbox, | ||||
| input.submit, | ||||
| .form_notice input.submit { | ||||
| background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x; | ||||
| text-shadow:0 1px 0 #FFFFFF; | ||||
| color:#000000; | ||||
| border-color:#AAAAAA; | ||||
| border-top-color:#CCCCCC; | ||||
| border-left-color:#CCCCCC; | ||||
| } | ||||
| .dialogbox .submit_dialogbox:hover, | ||||
| input.submit:hover { | ||||
| background-position:0 -5px; | ||||
| } | ||||
| .dialogbox .submit_dialogbox:focus, | ||||
| input.submit:focus { | ||||
| background-position:0 -15px; | ||||
| box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| -moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| -webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); | ||||
| text-shadow:none; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-geo { | ||||
| background-position:0 -1780px; | ||||
| } | ||||
| .form_notice label.notice_data-geo.checked { | ||||
| background-position:0 -1846px; | ||||
| } | ||||
|  | ||||
| a, | ||||
| .form_settings input.form_action-primary, | ||||
| .notice-options input, | ||||
| .entity_actions a, | ||||
| .entity_actions input, | ||||
| .entity_moderation p, | ||||
| .entity_role p { | ||||
| color:#002FA7; | ||||
| } | ||||
|  | ||||
| .notice, | ||||
| .profile, | ||||
| .application, | ||||
| .peopletag, | ||||
| #content tbody tr { | ||||
| border-top-color:#C8D1D5; | ||||
| } | ||||
|  | ||||
| #aside_primary { | ||||
| background-color:#C8D1D5; | ||||
| } | ||||
|  | ||||
| .form_notice .count { | ||||
| color:#333333; | ||||
| } | ||||
| .form_notice.warning .count, | ||||
| .dialogbox, | ||||
| .entity_actions .dialogbox input { | ||||
| color:#000000; | ||||
| } | ||||
| .form_notice label.notice_data-attach { | ||||
| background-position:0 -328px; | ||||
| } | ||||
| .form_notice input.notice_data-attach { | ||||
| opacity:0; | ||||
| } | ||||
|  | ||||
| .form_notice label.notice_data-attach, | ||||
| #export_data li a.rss, | ||||
| #export_data li a.atom, | ||||
| #export_data li a.foaf, | ||||
| .entity_edit a, | ||||
| .entity_send-a-message a, | ||||
| .entity_nudge p, | ||||
| .form_user_nudge input.submit, | ||||
| .form_user_block input.submit, | ||||
| .form_user_unblock input.submit, | ||||
| .form_group_block input.submit, | ||||
| .form_group_unblock input.submit, | ||||
| .form_make_admin input.submit, | ||||
| .notice .attachment, | ||||
| .notice-options .notice_reply, | ||||
| .notice-options form.form_favor input.submit, | ||||
| .notice-options form.form_disfavor input.submit, | ||||
| .notice-options .notice_delete, | ||||
| .notice-options form.form_repeat input.submit, | ||||
| #new_group a, | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a, | ||||
| button.close, | ||||
| .form_group_leave input.submit, | ||||
| .form_user_unsubscribe input.submit, | ||||
| .form_group_join input.submit, | ||||
| .form_user_subscribe input.submit, | ||||
| .form_user_remove_peopletag input.submit, | ||||
| .form_user_add_peopletag input.submit, | ||||
| .form_peopletag_subscribe input.submit, | ||||
| .form_peopletag_unsubscribe input.submit, | ||||
| .form_remote_authorize input.submit, | ||||
| .entity_subscribe a, | ||||
| .entity_tag 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.notice_data-geo, | ||||
| button.minimize, | ||||
| .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, | ||||
| .peopletags_edit_button, | ||||
| .mode-private .privacy_mode { | ||||
| background-image:url(../../base/images/icons/icons-01.gif); | ||||
| background-repeat:no-repeat; | ||||
| background-color:transparent; | ||||
| } | ||||
|  | ||||
| #wrap form.processing input.submit, | ||||
| #core a.processing, | ||||
| .dialogbox.processing .submit_dialogbox { | ||||
| background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%; | ||||
| } | ||||
| .notice-options .form_repeat.processing { | ||||
| background-image:none; | ||||
| } | ||||
|  | ||||
| #content { | ||||
| box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| -moz-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| -webkit-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3); | ||||
| } | ||||
| #content, | ||||
| #site_nav_local_views a, | ||||
| #aside_primary { | ||||
| border-color:transparent; | ||||
| } | ||||
| #content, | ||||
| #site_nav_local_views .current a, | ||||
| .entity_send-a-message .form_notice, | ||||
| .entity_moderation:hover ul, | ||||
| .entity_role:hover ul, | ||||
| .dialogbox { | ||||
| background-color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| #site_nav_local_views li.current { | ||||
| box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5); | ||||
| } | ||||
| #site_nav_local_views a { | ||||
| background-color:rgba(194, 194, 194, 0.5); | ||||
| } | ||||
| #site_nav_local_views a:hover { | ||||
| background-color:rgba(255, 255, 255, 0.7); | ||||
| } | ||||
| #site_nav_local_views .current a { | ||||
| text-shadow: rgba(194,194,194,0.5) 1px 1px 1px; | ||||
| } | ||||
| .processing { | ||||
| background-image:url(../../base/images/icons/icon_processing.gif); | ||||
| background-repeat:no-repeat; | ||||
| background-position:47% 47%; | ||||
| } | ||||
|  | ||||
|  | ||||
| .error { | ||||
| background-color:#F7E8E8; | ||||
| } | ||||
| .success { | ||||
| background-color:#EFF3DC; | ||||
| } | ||||
|  | ||||
| button.close { | ||||
| background-position:0 -1120px; | ||||
| } | ||||
| button.minimize { | ||||
| background-position:0 -1912px; | ||||
| } | ||||
|  | ||||
| #anon_notice { | ||||
| background-color:#87B4C8; | ||||
| color:#FFFFFF; | ||||
| border-color:#FFFFFF; | ||||
| } | ||||
|  | ||||
| #showstream #anon_notice { | ||||
| background-color:#9BB43E; | ||||
| } | ||||
|  | ||||
| #export_data li a { | ||||
| background-repeat:no-repeat; | ||||
| } | ||||
| #export_data li a.rss { | ||||
| background-position:0 -130px; | ||||
| } | ||||
| #export_data li a.atom { | ||||
| background-position:0 -64px; | ||||
| } | ||||
| #export_data li a.foaf { | ||||
| background-position:0 1px; | ||||
| } | ||||
|  | ||||
| .form_group_join input.submit, | ||||
| .form_group_leave input.submit, | ||||
| .form_user_subscribe input.submit, | ||||
| .form_peopletag_subscribe input.submit, | ||||
| .form_peopletag_unsubscribe input.submit, | ||||
| .form_user_unsubscribe input.submit, | ||||
| .form_remote_authorize input.submit, | ||||
| .form_user_add_peopletag input.submit, | ||||
| .form_user_remove_peopletag input.submit, | ||||
| .entity_subscribe a { | ||||
| background-color:#AAAAAA; | ||||
| color:#FFFFFF; | ||||
| } | ||||
| .form_group_leave input.submit, | ||||
| .form_user_unsubscribe input.submit, | ||||
| .form_user_remove_peopletag input.submit, | ||||
| .form_peopletag_unsubscribe input.submit { | ||||
| background-position:5px -1246px; | ||||
| } | ||||
| .form_group_join input.submit, | ||||
| .form_user_subscribe input.submit, | ||||
| .form_peopletag_subscribe input.submit, | ||||
| .form_remote_authorize input.submit, | ||||
| .form_user_add_peopletag input.submit, | ||||
| .entity_subscribe a, | ||||
| .entity_tag a { | ||||
| background-position:5px -1181px; | ||||
| } | ||||
|  | ||||
| .profile-lister li { | ||||
| border-top: 1px #eee solid; | ||||
| } | ||||
| .profile-lister li:first-child { | ||||
| border:0; | ||||
| } | ||||
| #profile_search_results.profile-lister { | ||||
| max-height:800px; | ||||
| margin:10px 0; | ||||
| border:1px #ddd solid; | ||||
| } | ||||
|  | ||||
| .entity_edit a, .peopletags_edit_button { | ||||
| background-position: 5px -719px; | ||||
| } | ||||
|  | ||||
| .peopletags_edit_button { | ||||
| background-position: 0px -724px; | ||||
| } | ||||
| .entity_tags li.mode-private { | ||||
| color: #829D25; | ||||
| } | ||||
| .mode-private .privacy_mode { | ||||
| background-position: 0px -1978px; | ||||
| } | ||||
|  | ||||
| .entity_send-a-message a { | ||||
| background-position: 5px -852px; | ||||
| } | ||||
| .entity_send-a-message .form_notice, | ||||
| .entity_moderation:hover ul, | ||||
| .entity_role:hover ul, | ||||
| .dialogbox, | ||||
| #profile_search_results { | ||||
| box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); | ||||
| } | ||||
|  | ||||
| .entity_nudge p, | ||||
| .form_user_nudge input.submit { | ||||
| background-position: 5px -785px; | ||||
| } | ||||
| .form_user_block input.submit, | ||||
| .form_user_unblock input.submit, | ||||
| .form_group_block input.submit, | ||||
| .form_group_unblock input.submit { | ||||
| background-position: 5px -918px; | ||||
| } | ||||
| .form_make_admin input.submit { | ||||
| background-position: 5px -983px; | ||||
| } | ||||
| .entity_moderation p { | ||||
| background-position: 5px -1313px; | ||||
| } | ||||
| .entity_sandbox input.submit { | ||||
| background-position: 5px -1380px; | ||||
| } | ||||
| .entity_silence input.submit { | ||||
| background-position: 5px -1445px; | ||||
| } | ||||
| .entity_delete input.submit { | ||||
| background-position: 5px -1511px; | ||||
| } | ||||
| .entity_sandbox .form_user_unsandbox input.submit { | ||||
| background-position: 5px -2568px; | ||||
| } | ||||
| .entity_silence .form_user_unsilence input.submit { | ||||
| background-position: 5px -2633px; | ||||
| } | ||||
| .entity_role p { | ||||
| background-position: 5px -2436px; | ||||
| } | ||||
| .entity_role_administrator .form_user_grantrole input.submit { | ||||
| background-position: 5px -983px; | ||||
| } | ||||
| .entity_role_moderator .form_user_grantrole input.submit { | ||||
| background-position: 5px -1313px; | ||||
| } | ||||
| .entity_role_administrator .form_user_revokerole input.submit { | ||||
| background-position: 5px -2699px; | ||||
| } | ||||
| .entity_role_moderator .form_user_revokerole input.submit { | ||||
| background-position: 5px -2501px; | ||||
| } | ||||
| .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; | ||||
| } | ||||
| .notice-options .notice_reply { | ||||
| background-position:0 -592px; | ||||
| } | ||||
| .notice-options form.form_favor input.submit { | ||||
| background-position:0 -460px; | ||||
| } | ||||
| .notice-options form.form_disfavor input.submit { | ||||
| background-position:0 -526px; | ||||
| } | ||||
| .notice-options .notice_delete { | ||||
| background-position:0 -658px; | ||||
| } | ||||
| .notice-options form.form_repeat input.submit { | ||||
| background-position:0 -1582px; | ||||
| } | ||||
| .notice-options .repeated { | ||||
| 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; | ||||
| } | ||||
| .attachment.more, | ||||
| .notice-options a, | ||||
| .notice-options input { | ||||
| font-family:sans-serif; | ||||
| 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 { | ||||
| background-color:rgba(240, 240, 240, 0.2); | ||||
| } | ||||
| #conversation .notices li:hover { | ||||
| background-color:transparent; | ||||
| } | ||||
|  | ||||
| .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.050); | ||||
| } | ||||
| .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.100); | ||||
| } | ||||
| .notices .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.150); | ||||
| } | ||||
| .notices .notices .notices .notices .notices { | ||||
| background-color:rgba(200, 200, 200, 0.300); | ||||
| } | ||||
| /*END: NOTICES */ | ||||
|  | ||||
| #new_group a { | ||||
| background-position:0 -1054px; | ||||
| } | ||||
|  | ||||
| .pagination .nav_prev a, | ||||
| .pagination .nav_next a { | ||||
| background-repeat:no-repeat; | ||||
| 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); | ||||
| } | ||||
| .pagination .nav_prev a { | ||||
| background-position:10% -187px; | ||||
| } | ||||
| .pagination .nav_next a { | ||||
| background-position:105% -252px; | ||||
| } | ||||
| .pagination .nav .processing { | ||||
| background-image:url(../../base/images/icons/icon_processing.gif); | ||||
| box-shadow:none; | ||||
| -moz-box-shadow:none; | ||||
| -webkit-box-shadow:none; | ||||
| outline:none; | ||||
| } | ||||
| .pagination .nav_next a.processing { | ||||
| background-position:90% 47%; | ||||
| } | ||||
| .pagination .nav_prev a.processing { | ||||
| background-position:10% 47%; | ||||
| } | ||||
|  | ||||
| .tagInputDiv { | ||||
| background-color: white; | ||||
| border: 1px solid lightgray; | ||||
| } | ||||
|  | ||||
| .tagInputDiv .mode-public .privacy_mode { | ||||
| display:none; | ||||
| } | ||||
|  | ||||
| .tagInputSel { | ||||
| background-color: gray; | ||||
| color:white; | ||||
| } | ||||
|  | ||||
| }/*end of @media screen, projection, tv*/ | ||||
| @@ -1,27 +0,0 @@ | ||||
| /** | ||||
|  * @package   StatusNet | ||||
|  * @author    Sarven Capadisli <csarven@status.net> | ||||
|  * @copyright 2009-2010 StatusNet, Inc. | ||||
|  * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
| /* IE specific styles */ | ||||
|  | ||||
| .notice-options input.submit { | ||||
| color:#FFFFFF; | ||||
| } | ||||
| #site_nav_local_views a { | ||||
| background-color:#C8D1D5; | ||||
| } | ||||
| .form_notice .count + label { | ||||
| background:transparent url(../../base/images/icons/icons-01.gif) no-repeat 0 -328px; | ||||
| } | ||||
| .form_notice input.notice_data-attach { | ||||
| filter: alpha(opacity=0); | ||||
| } | ||||
| .notice-options form.form_favor input.submit { | ||||
| background-position:0 -460px; | ||||
| } | ||||
| .notice-options form.form_disfavor input.submit { | ||||
| background-position:0 -526px; | ||||
| } | ||||
| Before Width: | Height: | Size: 512 B | 
| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 9.9 KiB | 
| Before Width: | Height: | Size: 3.9 KiB | 
| @@ -1 +0,0 @@ | ||||
| include=base | ||||