Merge remote-tracking branch 'mainline/1.0.x' into people_tags_rebase

Conflicts:
	lib/profileblock.php
	theme/default/css/display.css
This commit is contained in:
Shashi Gowda 2011-04-09 21:57:45 +05:30
commit f47027abbe
206 changed files with 314 additions and 17667 deletions

View File

@ -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

View File

@ -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;
}
}

View File

@ -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();
}

View File

@ -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()

View File

@ -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);

View File

@ -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)

View File

@ -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');
}
}

View File

@ -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;
}
}

View File

@ -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,

View File

@ -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');
}
}

View File

@ -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()

View File

@ -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

View File

@ -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;
}
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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());

View File

@ -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;
}

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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,

View File

@ -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));
}

View File

@ -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();

View File

@ -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;

View File

@ -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')));
}
}

View File

@ -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

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

File diff suppressed because it is too large Load Diff

View File

@ -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%;
}

View File

@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

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

View File

@ -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;
}

View File

@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1 +0,0 @@
include=rebase

View File

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

View File

@ -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;
}

View File

@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -1 +0,0 @@
include=rebase

File diff suppressed because it is too large Load Diff

View File

@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

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

View File

@ -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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1 +0,0 @@
include=base

Some files were not shown because too many files have changed in this diff Show More