Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x

This commit is contained in:
Sarven Capadisli 2009-10-27 15:00:35 +01:00
commit ac47015e2b
151 changed files with 14425 additions and 2223 deletions

2
.gitignore vendored
View File

@ -24,4 +24,4 @@ config-*.php
good-config.php
lac08.log
php.log
.DS_Store

View File

@ -291,3 +291,167 @@ EndShowHeadElements: Right before the </head> tag; put <script>s here if you nee
- $action: the current action
CheckSchema: chance to check the schema
StartProfilePageProfileSection: Starting to show the section of the
profile page with the actual profile data;
hook to prevent showing the profile (e.g.)
- $action: the current action
- &$profile: the profile being shown
StartProfilePageProfileElements: inside the section, before the first
element; prepend elements here
- $action: the current action
- &$profile: the profile being shown
EndProfilePageProfileElements: inside the section, after the last element;
append elements here
- $action: the current action
- &$profile: the profile being shown
EndProfilePageProfileSection: After showing the section of the profile
page with the profile elements
- $action: the current action
- &$profile: the profile being shown
StartProfilePageActionsSection: Starting to show the section of the
profile page with action links; hook
to hide them (for example)
- $action: the current action
- &$profile: the profile being shown
StartProfilePageActionsElements: inside the list, before the first
element; prepend elements here
- $action: the current action
- &$profile: the profile being shown
EndProfilePageActionsElements: inside the list, after the last element;
append elements here
- $action: the current action
- &$profile: the profile being shown
EndProfilePageActionsSection: After showing the section of the profile
page with the entity actions
- $action: the current action
- &$profile: the profile being shown
StartProfilePageAvatar: before showing the avatar on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageAvatar: after showing the avatar on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageNickname: before showing the nickname on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageNickname: after showing the nickname on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageFullName: before showing the fullname on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageFullName: after showing the fullname on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageLocation: before showing the location on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageLocation: after showing the location on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageHomepage: before showing the homepage link on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageHomepage: after showing the homepage on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageBio: before showing the bio on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageBio: after showing the bio on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfilePageProfileTags: before showing the tags on the profile page
- $action: the current action
- &$profile: the profile being shown
EndProfilePageProfileTags: after showing the tags on the profile page
- $action: the current action
- &$profile: the profile being shown
StartProfileList: when starting a list of profiles (before <ul>)
- $profilelist: ProfileList widget, with $profile, $action, and $out
EndProfileList: when ending a list of profiles (after </ul>)
- $profilelist: ProfileList widget
StartProfileListItem: when starting to show a profile list item
- $item: ProfileListItem widget
EndProfileListItem: after showing a profile list item
- $item: ProfileListItem widget
StartProfileListItemProfile: the profile data part of the item
- $item: ProfileListItem widget
EndProfileListItemProfile: the profile data part of the item
- $item: ProfileListItem widget
StartProfileListItemActions: the actions (buttons) for an item
- $item: ProfileListItem widget
EndProfileListItemActions: the actions (buttons) for an item
- $item: ProfileListItem widget
StartProfileListItemProfileElements: inside the <div>
- $item: ProfileListItem widget
EndProfileListItemProfileElements: inside the <div>
- $item: ProfileListItem widget
StartProfileListItemAvatar: Showing a profile list avatar
- $item: ProfileListItem widget
EndProfileListItemAvatar: Showing a profile list avatar
- $item: ProfileListItem widget
StartProfileListItemFullName: Showing the profile list full name
- $item: ProfileListItem widget
EndProfileListItemFullName: Showing the profile list full name
- $item: ProfileListItem widget
StartProfileListItemLocation: Showing the profile list location
- $item: ProfileListItem widget
EndProfileListItemLocation: Showing the profile list location
- $item: ProfileListItem widget
StartProfileListItemHomepage: Showing the profile list homepage
- $item: ProfileListItem widget
EndProfileListItemHomepage: Showing the profile list homepage
- $item: ProfileListItem widget
StartProfileListItemBio: Showing the profile list bio
- $item: ProfileListItem widget
EndProfileListItemBio: Showing the profile list bio
- $item: ProfileListItem widget
StartProfileListItemActionElements: Showing the profile list actions (prepend a button here, or replace all buttons)
- $item: ProfileListItem widget
EndProfileListItemActionElements: Showing profile list actions (append a button here)
- $item: ProfileListItem widget

164
README
View File

@ -2,7 +2,7 @@
README
------
StatusNet 0.8.1 ("Second Guessing")
StatusNet 0.8.2 ("Life and How to Live It")
26 Aug 2009
This is the README file for StatusNet (formerly Laconica), the Open
@ -526,10 +526,6 @@ This will run eight (for now) queue handlers:
of registered users.
* xmppconfirmhandler.php - sends confirmation messages to registered
users.
* twitterqueuehandler.php - sends queued notices to Twitter for user
who have opted to set up Twitter bridging.
* facebookqueuehandler.php - sends queued notices to Facebook for users
of the built-in Facebook application.
Note that these queue daemons are pretty raw, and need your care. In
particular, they leak memory, and you may want to restart them on a
@ -547,101 +543,6 @@ our kind of hacky home-grown DB-based queue solution. See the "queues"
config section below for how to configure to use STOMP. As of this
writing, the software has been tested with ActiveMQ (
Twitter Bridge
--------------
* OAuth
As of 0.8.1, OAuth is used to to access protected resources on Twitter
instead of HTTP Basic Auth. To use Twitter bridging you will need
to register your instance of StatusNet as an application on Twitter
(http://twitter.com/apps), and update the following variables in your
config.php with the consumer key and secret Twitter generates for you:
$config['twitter']['consumer_key'] = 'YOURKEY';
$config['twitter']['consumer_secret'] = 'YOURSECRET';
When registering your application with Twitter set the type to "Browser"
and your Callback URL to:
http://example.org/mublog/twitter/authorization
The default access type should be, "Read & Write".
* Importing statuses from Twitter
To allow your users to import their friends' Twitter statuses, you will
need to enable the bidirectional Twitter bridge in config.php:
$config['twitterbridge']['enabled'] = true;
and run the TwitterStatusFetcher daemon (scripts/twitterstatusfetcher.php).
Additionally, you will want to set the integration source variable,
which will keep notices posted to Twitter via StatusNet from looping
back. The integration source should be set to the name of your
application, exactly as you specified it on the settings page for your
StatusNet application on Twitter, e.g.:
$config['integration']['source'] = 'YourApp';
* Twitter Friends Syncing
Users may set a flag in their settings ("Subscribe to my Twitter friends
here" under the Twitter tab) to have StatusNet attempt to locate and
subscribe to "friends" (people they "follow") on Twitter who also have
accounts on your StatusNet system, and who have previously set up a link
for automatically posting notices to Twitter.
As of 0.8.0, this is no longer accomplished via a cron job. Instead you
must run the SyncTwitterFriends daemon (scripts/synctwitterfreinds.php).
Built-in Facebook Application
-----------------------------
StatusNet's Facebook application allows your users to automatically
update their Facebook statuses with their latest notices, invite
their friends to use the app (and thus your site), view their notice
timelines, and post notices -- all from within Facebook. The application
is built into StatusNet and runs on your host. For automatic Facebook
status updating to work you will need to enable queuing and run the
facebookqueuehandler.php daemon (see the "Queues and daemons" section
above).
Quick setup instructions*:
Install the Facebook Developer application on Facebook:
http://www.facebook.com/developers/
Use it to create a new application and generate an API key and secret.
Uncomment the Facebook app section of your config.php and copy in the
key and secret, e.g.:
# Config section for the built-in Facebook application
$config['facebook']['apikey'] = 'APIKEY';
$config['facebook']['secret'] = 'SECRET';
In Facebook's application editor, specify the following URLs for your app:
- Canvas Callback URL: http://example.net/mublog/facebook/
- Post-Remove Callback URL: http://example.net/mublog/facebook/remove
- Post-Add Redirect URL: http://apps.facebook.com/yourapp/
- Canvas Page URL: http://apps.facebook.com/yourapp/
(Replace 'example.net' with your host's URL, 'mublog' with the path
to your StatusNet installation, and 'yourapp' with the name of the
Facebook application you created.)
Additionally, Choose "Web" for Application type in the Advanced tab.
In the "Canvas setting" section, choose the "FBML" for Render Method,
"Smart Size" for IFrame size, and "Full width (760px)" for Canvas Width.
Everything else can be left with default values.
*For more detailed instructions please see the installation guide on the
StatusNet wiki:
http://status.net/trac/wiki/FacebookApplication
Sitemaps
--------
@ -839,40 +740,8 @@ to update it.
Notice inboxes
--------------
Before version 0.6.2, the page showing all notices from people the
user is subscribed to ("so-and-so with friends") was calculated at run
time. Starting with 0.6.2, we have a new data structure for holding a
user's "notice inbox". (Note: distinct from the "message inbox", which
is the "inbox" tab in the UI. The notice inbox appears under the
"Personal" tab.)
Notices are added to the inbox when they're created. This speeds up
the query considerably, and also allows us the opportunity, in the
future, to add different kind of notices to an inbox -- like @-replies
or subscriptions to search terms or hashtags.
Notice inboxes are enabled by default for new installations. If you
are upgrading an existing site, this means that your users will see
empty "Personal" pages. The following steps will help you fix the
problem.
0. $config['inboxes']['enabled'] can be set to one of three values. If
you set it to 'false', the site will work as before. Support for this
will probably be dropped in future versions.
1. Setting the flag to 'transitional' means that you're in transition.
In this mode, the code will run the "new query" or the "old query"
based on whether the user's inbox has been updated.
2. After setting the flag to "transitional", you can run the
fixup_inboxes.php script to create the inboxes. You may want to set
the memory limit high. You can re-run it without ill effect.
3. When fixup_inboxes is finished, you can set the enabled flag to
'true'.
NOTE: As of version 0.8.1 notice inboxes are automatically trimmed back
to ~1000 notices every once in a while.
NOTE: we will drop support for non-inboxed sites in the 0.9.x version
of StatusNet. It's time to switch now!
Notice inboxes are now required. If you don't have inboxes enabled,
StatusNet will no longer run.
UTF-8 Database
--------------
@ -1283,24 +1152,11 @@ For SMS integration.
enabled: Whether to enable SMS integration. Defaults to true. Queues
should also be enabled.
twitter
-------
For Twitter integration
enabled: Whether to enable Twitter integration. Defaults to true.
Queues should also be enabled.
integration
-----------
A catch-all for integration with other systems.
source: The name to use for the source of posts to Twitter. Defaults
to 'statusnet', but if you request your own source name from
Twitter <http://twitter.com/help/request_source>, you can use
that here instead. Status updates on Twitter will then have
links to your site.
taguri: base for tag:// URIs. Defaults to site-server + ',2009'.
inboxes
@ -1308,9 +1164,8 @@ inboxes
For notice inboxes.
enabled: A three-valued flag for whether to use notice inboxes (see
upgrading info above for notes about this change). Can be
'false', 'true', or '"transitional"'.
enabled: No longer used. If you set this to something other than true,
StatusNet will no longer run.
throttle
--------
@ -1479,15 +1334,6 @@ dir: directory to write backgrounds too. Default is '/background/'
path: path to backgrounds. Default is sub-path of install path; note
that you may need to change this if you change site-path too.
twitterbridge
-------------
A bi-direction bridge to Twitter (http://twitter.com/).
enabled: default false. If true, will show user's Twitter friends'
notices in their inbox and faves pages, only to the user. You
must also run the twitterstatusfetcher.php script.
ping
----

View File

@ -157,7 +157,7 @@ class ApiDirectMessageNewAction extends ApiAuthAction
// Note: sending msgs to yourself is allowed by Twitter
$errmsg = 'Don\'t send a message to yourself; ' .
'just say it to yourself quietly instead.'
'just say it to yourself quietly instead.';
$this->clientError(_($errmsg), 403, $this->format);
return;

View File

@ -127,7 +127,7 @@ class ApiFavoriteCreateAction extends ApiAuthAction
if (empty($fave)) {
$this->clientError(
_('Could not create favorite.')
_('Could not create favorite.'),
403,
$this->format
);

View File

@ -99,15 +99,6 @@ class ApiGroupCreateAction extends ApiAuthAction
{
parent::handle($args);
if (!common_config('inboxes', 'enabled')) {
$this->serverError(
_('Inboxes must be enabled for groups to work'),
400,
$this->format
);
return false;
}
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$this->clientError(
_('This method requires a POST.'),

View File

@ -64,11 +64,6 @@ class EditgroupAction extends GroupDesignAction
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to create a group.'));
return false;

View File

@ -326,7 +326,7 @@ class EmailsettingsAction extends AccountSettingsAction
$this->showForm(_('Cannot normalize that email address'));
return;
}
if (!Validate::email($email, true)) {
if (!Validate::email($email, common_config('email', 'check_domain'))) {
$this->showForm(_('Not a valid email address'));
return;
} else if ($user->email == $email) {

View File

@ -68,11 +68,6 @@ class GroupbyidAction extends Action
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
$id = $this->arg('id');
if (!$id) {

View File

@ -64,11 +64,6 @@ class GroupDesignSettingsAction extends DesignSettingsAction
{
parent::prepare($args);
if (!common_config('inboxes', 'enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to edit a group.'));
return false;

View File

@ -66,11 +66,6 @@ class GrouplogoAction extends GroupDesignAction
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to create a group.'));
return false;

View File

@ -179,9 +179,12 @@ class GroupMemberListItem extends ProfileListItem
function showActions()
{
$this->startActions();
if (Event::handle('StartProfileListItemActionElements', array($this))) {
$this->showSubscribeButton();
$this->showMakeAdminForm();
$this->showGroupBlockForm();
Event::handle('EndProfileListItemActionElements', array($this));
}
$this->endActions();
}

View File

@ -76,11 +76,6 @@ class groupRssAction extends Rss10Action
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
$nickname_arg = $this->arg('nickname');
$nickname = common_canonical_nickname($nickname_arg);

View File

@ -68,7 +68,7 @@ class InviteAction extends CurrentUserDesignAction
foreach ($addresses as $email) {
$email = trim($email);
if (!Validate::email($email, true)) {
if (!Validate::email($email, common_config('email', 'check_domain'))) {
$this->showForm(sprintf(_('Invalid email address: %s'), $email));
return;
}

View File

@ -56,11 +56,6 @@ class JoingroupAction extends Action
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to join a group.'));
return false;

View File

@ -56,11 +56,6 @@ class LeavegroupAction extends Action
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work.'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to leave a group.'));
return false;

View File

@ -61,11 +61,6 @@ class NewgroupAction extends Action
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
if (!common_logged_in()) {
$this->clientError(_('You must be logged in to create a group.'));
return false;

View File

@ -191,7 +191,7 @@ class RegisterAction extends Action
if (!$this->boolean('license')) {
$this->showForm(_('You can\'t register if you don\'t '.
'agree to the license.'));
} else if ($email && !Validate::email($email, true)) {
} else if ($email && !Validate::email($email, common_config('email', 'check_domain'))) {
$this->showForm(_('Not a valid email address.'));
} else if (!Validate::string($nickname, array('min_length' => 1,
'max_length' => 64,

View File

@ -101,11 +101,6 @@ class ShowgroupAction extends GroupDesignAction
{
parent::prepare($args);
if (!common_config('inboxes','enabled')) {
$this->serverError(_('Inboxes must be enabled for groups to work'));
return false;
}
$this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
$nickname_arg = $this->arg('nickname');

View File

@ -181,10 +181,41 @@ class ShowstreamAction extends ProfileAction
function showProfile()
{
$this->showProfileData();
$this->showEntityActions();
}
function showProfileData()
{
if (Event::handle('StartProfilePageProfileSection', array(&$this, $this->profile))) {
$this->elementStart('div', 'entity_profile vcard author');
$this->element('h2', null, _('User profile'));
if (Event::handle('StartProfilePageProfileElements', array(&$this, $this->profile))) {
$this->showAvatar();
$this->showNickname();
$this->showFullName();
$this->showLocation();
$this->showHomepage();
$this->showBio();
$this->showProfileTags();
Event::handle('EndProfilePageProfileElements', array(&$this, $this->profile));
}
$this->elementEnd('div');
Event::handle('EndProfilePageProfileSection', array(&$this, $this->profile));
}
}
function showAvatar()
{
if (Event::handle('StartProfilePageAvatar', array($this, $this->profile))) {
$avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
$this->elementStart('dl', 'entity_depiction');
$this->element('dt', null, _('Photo'));
$this->elementStart('dd');
@ -196,6 +227,7 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dd');
$user = User::staticGet('id', $this->profile->id);
$cur = common_current_user();
if ($cur && $cur->id == $user->id) {
$this->elementStart('dd');
@ -205,6 +237,14 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dl');
Event::handle('EndProfilePageAvatar', array($this, $this->profile));
}
}
function showNickname()
{
if (Event::handle('StartProfilePageNickname', array($this, $this->profile))) {
$this->elementStart('dl', 'entity_nickname');
$this->element('dt', null, _('Nickname'));
$this->elementStart('dd');
@ -215,6 +255,13 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dd');
$this->elementEnd('dl');
Event::handle('EndProfilePageNickname', array($this, $this->profile));
}
}
function showFullName()
{
if (Event::handle('StartProfilePageFullName', array($this, $this->profile))) {
if ($this->profile->fullname) {
$this->elementStart('dl', 'entity_fn');
$this->element('dt', null, _('Full name'));
@ -223,14 +270,26 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dd');
$this->elementEnd('dl');
}
Event::handle('EndProfilePageFullName', array($this, $this->profile));
}
}
function showLocation()
{
if (Event::handle('StartProfilePageLocation', array($this, $this->profile))) {
if ($this->profile->location) {
$this->elementStart('dl', 'entity_location');
$this->element('dt', null, _('Location'));
$this->element('dd', 'label', $this->profile->location);
$this->elementEnd('dl');
}
Event::handle('EndProfilePageLocation', array($this, $this->profile));
}
}
function showHomepage()
{
if (Event::handle('StartProfilePageHomepage', array($this, $this->profile))) {
if ($this->profile->homepage) {
$this->elementStart('dl', 'entity_url');
$this->element('dt', null, _('URL'));
@ -241,15 +300,28 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dd');
$this->elementEnd('dl');
}
Event::handle('EndProfilePageHomepage', array($this, $this->profile));
}
}
function showBio()
{
if (Event::handle('StartProfilePageBio', array($this, $this->profile))) {
if ($this->profile->bio) {
$this->elementStart('dl', 'entity_note');
$this->element('dt', null, _('Note'));
$this->element('dd', 'note', $this->profile->bio);
$this->elementEnd('dl');
}
Event::handle('EndProfilePageBio', array($this, $this->profile));
}
}
function showProfileTags()
{
if (Event::handle('StartProfilePageProfileTags', array($this, $this->profile))) {
$tags = Profile_tag::getTags($this->profile->id, $this->profile->id);
if (count($tags) > 0) {
$this->elementStart('dl', 'entity_tags');
$this->element('dt', null, _('Tags'));
@ -268,24 +340,36 @@ class ShowstreamAction extends ProfileAction
$this->elementEnd('dd');
$this->elementEnd('dl');
}
$this->elementEnd('div');
Event::handle('EndProfilePageProfileTags', array($this, $this->profile));
}
}
function showEntityActions()
{
if (Event::handle('StartProfilePageActionsSection', array(&$this, $this->profile))) {
$this->elementStart('div', 'entity_actions');
$this->element('h2', null, _('User actions'));
$this->elementStart('ul');
$cur = common_current_user();
if ($cur && $cur->id == $this->profile->id) {
if (Event::handle('StartProfilePageActionsElements', array(&$this, $this->profile))) {
if (empty($cur)) { // not logged in
$this->elementStart('li', 'entity_subscribe');
$this->showRemoteSubscribeLink();
$this->elementEnd('li');
} else {
if ($cur->id == $this->profile->id) { // your own page
$this->elementStart('li', 'entity_edit');
$this->element('a', array('href' => common_local_url('profilesettings'),
'title' => _('Edit profile settings')),
_('Edit'));
$this->elementEnd('li');
}
} else { // someone else's page
// subscribe/unsubscribe button
if ($cur) {
if ($cur->id != $this->profile->id) {
$this->elementStart('li', 'entity_subscribe');
if ($cur->isSubscribed($this->profile)) {
$usf = new UnsubscribeForm($this, $this->profile);
$usf->show();
@ -294,20 +378,19 @@ class ShowstreamAction extends ProfileAction
$sf->show();
}
$this->elementEnd('li');
}
} else {
$this->elementStart('li', 'entity_subscribe');
$this->showRemoteSubscribeLink();
$this->elementEnd('li');
}
if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
if ($cur->mutuallySubscribed($user)) {
// message
$this->elementStart('li', 'entity_send-a-message');
$this->element('a', array('href' => common_local_url('newmessage', array('to' => $user->id)),
'title' => _('Send a direct message to this user')),
_('Message'));
$this->elementEnd('li');
// nudge
if ($user->email && $user->emailnotifynudge) {
$this->elementStart('li', 'entity_nudge');
$nf = new NudgeForm($this, $user);
@ -316,7 +399,8 @@ class ShowstreamAction extends ProfileAction
}
}
if ($cur && $cur->id != $this->profile->id) {
// block/unblock
$blocked = $cur->hasBlocked($this->profile);
$this->elementStart('li', 'entity_block');
if ($blocked) {
@ -332,8 +416,16 @@ class ShowstreamAction extends ProfileAction
}
$this->elementEnd('li');
}
}
Event::handle('EndProfilePageActionsElements', array(&$this, $this->profile));
}
$this->elementEnd('ul');
$this->elementEnd('div');
Event::handle('EndProfilePageActionsSection', array(&$this, $this->profile));
}
}
function showRemoteSubscribeLink()

View File

@ -111,10 +111,9 @@ class Notice extends Memcached_DataObject
'Fave',
'Notice_tag',
'Group_inbox',
'Queue_item');
if (common_config('inboxes', 'enabled')) {
$related[] = 'Notice_inbox';
}
'Queue_item',
'Notice_inbox');
foreach ($related as $cls) {
$inst = new $cls();
$inst->notice_id = $this->id;
@ -883,10 +882,6 @@ class Notice extends Memcached_DataObject
function addToInboxes()
{
$enabled = common_config('inboxes', 'enabled');
if ($enabled === true || $enabled === 'transitional') {
// XXX: loads constants
$inbox = new Notice_inbox();
@ -941,7 +936,6 @@ class Notice extends Memcached_DataObject
$inbox = new Notice_inbox();
$inbox->query($qry);
}
}
return;
}
@ -977,11 +971,6 @@ class Notice extends Memcached_DataObject
{
$groups = array();
$enabled = common_config('inboxes', 'enabled');
if ($enabled !== true && $enabled !== 'transitional') {
return $groups;
}
/* extract all !group */
$count = preg_match_all('/(?:^|\s)!([A-Za-z0-9]{1,64})/',
strtolower($this->content),

View File

@ -46,6 +46,11 @@ class Profile extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
function getUser()
{
return User::staticGet('id', $this->id);
}
function getAvatar($width, $height=null)
{
if (is_null($height)) {

View File

@ -227,11 +227,9 @@ class User extends Memcached_DataObject
}
}
$inboxes = common_config('inboxes', 'enabled');
// This flag is ignored but still set to 1
if ($inboxes === true || $inboxes == 'transitional') {
$user->inboxed = 1;
}
$user->created = common_sql_now();
$user->uri = common_user_uri($user);
@ -433,56 +431,17 @@ class User extends Memcached_DataObject
function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null)
{
$enabled = common_config('inboxes', 'enabled');
// Complicated code, depending on whether we support inboxes yet
// XXX: make this go away when inboxes become mandatory
if ($enabled === false ||
($enabled == 'transitional' && $this->inboxed == 0)) {
$qry =
'SELECT notice.* ' .
'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' .
'WHERE subscription.subscriber = %d ' .
'AND notice.is_local != ' . Notice::GATEWAY;
return Notice::getStream(sprintf($qry, $this->id),
'user:notices_with_friends:' . $this->id,
$offset, $limit, $since_id, $before_id,
$order, $since);
} else if ($enabled === true ||
($enabled == 'transitional' && $this->inboxed == 1)) {
$ids = Notice_inbox::stream($this->id, $offset, $limit, $since_id, $before_id, $since, false);
return Notice::getStreamByIds($ids);
}
}
function noticeInbox($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null)
{
$enabled = common_config('inboxes', 'enabled');
// Complicated code, depending on whether we support inboxes yet
// XXX: make this go away when inboxes become mandatory
if ($enabled === false ||
($enabled == 'transitional' && $this->inboxed == 0)) {
$qry =
'SELECT notice.* ' .
'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' .
'WHERE subscription.subscriber = %d ';
return Notice::getStream(sprintf($qry, $this->id),
'user:notices_with_friends:' . $this->id,
$offset, $limit, $since_id, $before_id,
$order, $since);
} else if ($enabled === true ||
($enabled == 'transitional' && $this->inboxed == 1)) {
$ids = Notice_inbox::stream($this->id, $offset, $limit, $since_id, $before_id, $since, true);
return Notice::getStreamByIds($ids);
}
}
function blowFavesCache()
{
@ -752,12 +711,9 @@ class User extends Memcached_DataObject
'Remember_me',
'Foreign_link',
'Invitation',
'Notice_inbox',
);
if (common_config('inboxes', 'enabled')) {
$related[] = 'Notice_inbox';
}
foreach ($related as $cls) {
$inst = new $cls();
$inst->user_id = $this->id;

View File

@ -104,6 +104,10 @@ $config['sphinx']['port'] = 3312;
// $config['site']['timezone'] = 'Pacific/Auckland';
// $config['site']['language'] = 'en_NZ';
// When validating user supplied email addresses, validate if the domain
// is running an SMTP server.
// $config['mail']['check_domain'] = true;
// Email info, used for all outbound email
// $config['mail']['notifyfrom'] = 'microblog@example.net';
// $config['mail']['domain'] = 'microblog.example.net';

View File

@ -235,7 +235,7 @@ class DB_DataObject extends DB_DataObject_Overload
* @access private
* @var string
*/
var $_DB_DataObject_version = "1.8.11";
var $_DB_DataObject_version = "1.8.12";
/**
* The Database table (used by table extends)

View File

@ -6,9 +6,9 @@
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
@ -16,8 +16,8 @@
* @package DB_DataObject
* @author Alan Knowles <alan@akbkhome.com>
* @copyright 1997-2008 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: Cast.php 264148 2008-08-04 03:44:59Z alan_k $
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: Cast.php 287158 2009-08-12 13:58:31Z alan_k $
* @link http://pear.php.net/package/DB_DataObject
*/

View File

@ -7,9 +7,9 @@
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
@ -17,8 +17,8 @@
* @package DB_DataObject
* @author Alan Knowles <alan@akbkhome.com>
* @copyright 1997-2006 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: Error.php 277015 2009-03-12 05:51:03Z alan_k $
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: Error.php 287158 2009-08-12 13:58:31Z alan_k $
* @link http://pear.php.net/package/DB_DataObject
*/

View File

@ -1,3 +1,19 @@
2006-02-28 Danilo Šegan <danilo@gnome.org>
* gettext.php: Added some comments about these workarounds for
different PHP versions and architectures.
2006-02-28 Danilo Šegan <danilo@gnome.org>
Fixes bug #15923.
* gettext.php (gettext_reader): make magic check work on 64-bit
platforms as well (by Steffen Pingel).
2006-02-20 Danilo Šegan <danilo@gnome.org>
* gettext.inc (_bindtextdomain): Use php_uname to detect Windows.
2006-02-07 Danilo Šegan <danilo@gnome.org>
* examples/pigs_dropin.php: comment-out bind_textdomain_codeset

View File

@ -129,7 +129,7 @@ function _setlocale($category, $locale) {
$ret = 0;
if (function_exists('setlocale')) // I don't know if this ever happens ;)
$ret = setlocale($category, $locale);
if (($ret and $locale == '') or ($ret == $locale)) {
if ($ret and ($locale == '' or $ret == $locale)) {
$EMULATEGETTEXT = 0;
$CURRENTLOCALE = $ret;
} else {

View File

@ -102,16 +102,16 @@ class gettext_reader {
// Caching can be turned off
$this->enable_cache = $enable_cache;
// $MAGIC1 = (int)0x950412de; //bug in PHP 5
// $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
$MAGIC1 = (int) - 1794895138;
// $MAGIC2 = (int)0xde120495; //bug
$MAGIC2 = (int) - 569244523;
$this->STREAM = $Reader;
$magic = $this->readint();
if ($magic == $MAGIC1) {
if ($magic == ($MAGIC1 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif ($magic == $MAGIC2) {
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file

View File

@ -372,7 +372,7 @@ function showLibs()
}
echo<<<E_O_T
<div class="instructions">
<p>Laconica comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage
<p>StatusNet comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage
libraries instead, as they tend to provide security updates faster, and may offer improved performance.</p>
<p>On Debian based distributions, such as Ubuntu, use a package manager (such as &quot;aptitude&quot;, &quot;apt-get&quot;, and &quot;synaptic&quot;) to install the package listed.</p>
<p>On RPM based distributions, such as Red Hat, Fedora, CentOS, Scientific Linux, Yellow Dog Linux and Oracle Enterprise Linux, use a package manager (such as &quot;yum&quot;, &quot;apt-rpm&quot;, and &quot;up2date&quot;) to install the package listed.</p>
@ -384,7 +384,7 @@ E_O_T;
foreach ($absent_libraries as $library) {
echo '<li>';
if (isset($library['url'])) {
echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
echo '<a href="'.$library['url'].'">'.htmlentities($library['name']).'</a>';
} else {
echo htmlentities($library['name']);
}
@ -408,7 +408,7 @@ E_O_T;
foreach ($present_libraries as $library) {
echo '<li>';
if (isset($library['url'])) {
echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
echo '<a href="'.$library['url'].'">'.htmlentities($library['name']).'</a>';
} else {
echo htmlentities($library['name']);
}
@ -439,7 +439,7 @@ function showForm()
<dd>
<div class="instructions">
<p>Enter your database connection information below to initialize the database.</p>
<p>Laconica bundles a number of libraries for ease of installation. <a href="?checklibs=true">You can see what bundled libraries you are using, versus what libraries are installed on your server.</a>
<p>StatusNet bundles a number of libraries for ease of installation. <a href="?checklibs=true">You can see what bundled libraries you are using, versus what libraries are installed on your server.</a>
</div>
</dd>
</dl>

View File

@ -134,11 +134,19 @@ class ApiAction extends Action
$twitter_user['protected'] = false; # not supported by StatusNet yet
$twitter_user['followers_count'] = $profile->subscriberCount();
// To be supported soon...
$twitter_user['profile_background_color'] = '';
$twitter_user['profile_text_color'] = '';
$twitter_user['profile_link_color'] = '';
$twitter_user['profile_sidebar_fill_color'] = '';
// Need to pull up the user for some of this
$user = $profile->getUser();
$design = $user->getDesign();
$defaultDesign = Design::siteDesign();
if (!$design) $design = $defaultDesign;
$color = Design::toWebColor(empty($design->backgroundcolor) ? $defaultDesign->backgroundcolor : $design->backgroundcolor);
$twitter_user['profile_background_color'] = ($color == null) ? '' : '#'.$color->hexValue();
$color = Design::toWebColor(empty($design->textcolor) ? $defaultDesign->textcolor : $design->textcolor);
$twitter_user['profile_text_color'] = ($color == null) ? '' : '#'.$color->hexValue();
$color = Design::toWebColor(empty($design->linkcolor) ? $defaultDesign->linkcolor : $design->linkcolor);
$twitter_user['profile_link_color'] = ($color == null) ? '' : '#'.$color->hexValue();
$color = Design::toWebColor(empty($design->sidebarcolor) ? $defaultDesign->sidebarcolor : $design->sidebarcolor);
$twitter_user['profile_sidebar_fill_color'] = ($color == null) ? '' : '#'.$color->hexValue();
$twitter_user['profile_sidebar_border_color'] = '';
$twitter_user['friends_count'] = $profile->subscriptionCount();
@ -147,8 +155,6 @@ class ApiAction extends Action
$twitter_user['favourites_count'] = $profile->faveCount(); // British spelling!
// Need to pull up the user for some of this
$user = User::staticGet($profile->id);
$timezone = 'UTC';

View File

@ -84,7 +84,8 @@ $default =
'image' => 'http://i.creativecommons.org/l/by/3.0/80x15.png'),
'mail' =>
array('backend' => 'mail',
'params' => null),
'params' => null,
'domain_check' => true),
'nickname' =>
array('blacklist' => array(),
'featured' => array()),
@ -140,7 +141,7 @@ $default =
array('enabled' => true),
'sms' =>
array('enabled' => true),
'twitterbridge' =>
'twitterimport' =>
array('enabled' => false),
'integration' =>
array('source' => 'StatusNet', # source attribute for Twitter
@ -157,7 +158,7 @@ $default =
'ping' =>
array('notify' => array()),
'inboxes' =>
array('enabled' => true), # on by default for new sites
array('enabled' => true), # ignored after 0.9.x
'newuser' =>
array('default' => null,
'welcome' => null),

View File

@ -48,7 +48,7 @@ if (!defined('STATUSNET')) {
class HTTPResponse
{
public $code = null;
public $headers = null;
public $headers = array();
public $body = null;
}

View File

@ -101,35 +101,36 @@ function get_nice_language_list()
*/
function get_all_languages() {
return array(
'bg' => array('q' => 0.8, 'lang' => 'bg_BG', 'name' => 'Bulgarian', 'direction' => 'ltr'),
'ca' => array('q' => 0.5, 'lang' => 'ca_ES', 'name' => 'Catalan', 'direction' => 'ltr'),
'cs' => array('q' => 0.5, 'lang' => 'cs_CZ', 'name' => 'Czech', 'direction' => 'ltr'),
'de' => array('q' => 0.8, 'lang' => 'de_DE', 'name' => 'German', 'direction' => 'ltr'),
'bg' => array('q' => 0.8, 'lang' => 'bg', 'name' => 'Bulgarian', 'direction' => 'ltr'),
'ca' => array('q' => 0.5, 'lang' => 'ca', 'name' => 'Catalan', 'direction' => 'ltr'),
'cs' => array('q' => 0.5, 'lang' => 'cs', 'name' => 'Czech', 'direction' => 'ltr'),
'de' => array('q' => 0.8, 'lang' => 'de', 'name' => 'German', 'direction' => 'ltr'),
'el' => array('q' => 0.1, 'lang' => 'el', 'name' => 'Greek', 'direction' => 'ltr'),
'en-us' => array('q' => 1, 'lang' => 'en_US', 'name' => 'English (US)', 'direction' => 'ltr'),
'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
'en-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'),
'en' => array('q' => 1, 'lang' => 'en_US', 'name' => 'English (US)', 'direction' => 'ltr'),
'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
'es' => array('q' => 1, 'lang' => 'es', 'name' => 'Spanish', 'direction' => 'ltr'),
'fi' => array('q' => 1, 'lang' => 'fi', 'name' => 'Finnish', 'direction' => 'ltr'),
'fr-fr' => array('q' => 1, 'lang' => 'fr_FR', 'name' => 'French', 'direction' => 'ltr'),
'he' => array('q' => 0.5, 'lang' => 'he_IL', 'name' => 'Hebrew', 'direction' => 'rtl'),
'it' => array('q' => 1, 'lang' => 'it_IT', 'name' => 'Italian', 'direction' => 'ltr'),
'jp' => array('q' => 0.5, 'lang' => 'ja_JP', 'name' => 'Japanese', 'direction' => 'ltr'),
'ko' => array('q' => 0.9, 'lang' => 'ko_KR', 'name' => 'Korean', 'direction' => 'ltr'),
'mk' => array('q' => 0.5, 'lang' => 'mk_MK', 'name' => 'Macedonian', 'direction' => 'ltr'),
'nb' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
'no' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
'nn' => array('q' => 1, 'lang' => 'nn_NO', 'name' => 'Norwegian (Nynorsk)', 'direction' => 'ltr'),
'nl' => array('q' => 0.5, 'lang' => 'nl_NL', 'name' => 'Dutch', 'direction' => 'ltr'),
'pl' => array('q' => 0.5, 'lang' => 'pl_PL', 'name' => 'Polish', 'direction' => 'ltr'),
'fr-fr' => array('q' => 1, 'lang' => 'fr', 'name' => 'French', 'direction' => 'ltr'),
'ga' => array('q' => 0.5, 'lang' => 'ga', 'name' => 'Galician', 'direction' => 'ltr'),
'he' => array('q' => 0.5, 'lang' => 'he', 'name' => 'Hebrew', 'direction' => 'rtl'),
'it' => array('q' => 1, 'lang' => 'it', 'name' => 'Italian', 'direction' => 'ltr'),
'jp' => array('q' => 0.5, 'lang' => 'ja', 'name' => 'Japanese', 'direction' => 'ltr'),
'ko' => array('q' => 0.9, 'lang' => 'ko', 'name' => 'Korean', 'direction' => 'ltr'),
'mk' => array('q' => 0.5, 'lang' => 'mk', 'name' => 'Macedonian', 'direction' => 'ltr'),
'nb' => array('q' => 0.1, 'lang' => 'nb', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
'no' => array('q' => 0.1, 'lang' => 'nb', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
'nn' => array('q' => 1, 'lang' => 'nn', 'name' => 'Norwegian (Nynorsk)', 'direction' => 'ltr'),
'nl' => array('q' => 0.5, 'lang' => 'nl', 'name' => 'Dutch', 'direction' => 'ltr'),
'pl' => array('q' => 0.5, 'lang' => 'pl', 'name' => 'Polish', 'direction' => 'ltr'),
'pt' => array('q' => 0.1, 'lang' => 'pt', 'name' => 'Portuguese', 'direction' => 'ltr'),
'pt-br' => array('q' => 0.9, 'lang' => 'pt_BR', 'name' => 'Portuguese Brazil', 'direction' => 'ltr'),
'ru' => array('q' => 0.9, 'lang' => 'ru_RU', 'name' => 'Russian', 'direction' => 'ltr'),
'sv' => array('q' => 0.8, 'lang' => 'sv_SE', 'name' => 'Swedish', 'direction' => 'ltr'),
'te' => array('q' => 0.3, 'lang' => 'te_IN', 'name' => 'Telugu', 'direction' => 'ltr'),
'tr' => array('q' => 0.5, 'lang' => 'tr_TR', 'name' => 'Turkish', 'direction' => 'ltr'),
'uk' => array('q' => 1, 'lang' => 'uk_UA', 'name' => 'Ukrainian', 'direction' => 'ltr'),
'vi' => array('q' => 0.8, 'lang' => 'vi_VN', 'name' => 'Vietnamese', 'direction' => 'ltr'),
'ru' => array('q' => 0.9, 'lang' => 'ru', 'name' => 'Russian', 'direction' => 'ltr'),
'sv' => array('q' => 0.8, 'lang' => 'sv', 'name' => 'Swedish', 'direction' => 'ltr'),
'te' => array('q' => 0.3, 'lang' => 'te', 'name' => 'Telugu', 'direction' => 'ltr'),
'tr' => array('q' => 0.5, 'lang' => 'tr', 'name' => 'Turkish', 'direction' => 'ltr'),
'uk' => array('q' => 1, 'lang' => 'uk', 'name' => 'Ukrainian', 'direction' => 'ltr'),
'vi' => array('q' => 0.8, 'lang' => 'vi', 'name' => 'Vietnamese', 'direction' => 'ltr'),
'zh-cn' => array('q' => 0.9, 'lang' => 'zh_CN', 'name' => 'Chinese (Simplified)', 'direction' => 'ltr'),
'zh-hant' => array('q' => 0.2, 'lang' => 'zh_TW', 'name' => 'Chinese (Taiwanese)', 'direction' => 'ltr'),
);

View File

@ -640,75 +640,3 @@ function mail_notify_attn($user, $notice)
mail_to_user($user, $subject, $body);
}
/**
* Send a mail message to notify a user that her Twitter bridge link
* has stopped working, and therefore has been removed. This can
* happen when the user changes her Twitter password, or otherwise
* revokes access.
*
* @param User $user user whose Twitter bridge link has been removed
*
* @return boolean success flag
*/
function mail_twitter_bridge_removed($user)
{
common_init_locale($user->language);
$profile = $user->getProfile();
$subject = sprintf(_('Your Twitter bridge has been disabled.'));
$site_name = common_config('site', 'name');
$body = sprintf(_('Hi, %1$s. We\'re sorry to inform you that your ' .
'link to Twitter has been disabled. We no longer seem to have ' .
'permission to update your Twitter status. (Did you revoke ' .
'%3$s\'s access?)' . "\n\n" .
'You can re-enable your Twitter bridge by visiting your ' .
"Twitter settings page:\n\n\t%2\$s\n\n" .
"Regards,\n%3\$s\n"),
$profile->getBestName(),
common_local_url('twittersettings'),
common_config('site', 'name'));
common_init_locale();
return mail_to_user($user, $subject, $body);
}
/**
* Send a mail message to notify a user that her Facebook Application
* access has been removed.
*
* @param User $user user whose Facebook app link has been removed
*
* @return boolean success flag
*/
function mail_facebook_app_removed($user)
{
common_init_locale($user->language);
$profile = $user->getProfile();
$site_name = common_config('site', 'name');
$subject = sprintf(
_('Your %1$s Facebook application access has been disabled.',
$site_name));
$body = sprintf(_("Hi, %1\$s. We're sorry to inform you that we are " .
'unable to update your Facebook status from %2$s, and have disabled ' .
'the Facebook application for your account. This may be because ' .
'you have removed the Facebook application\'s authorization, or ' .
'have deleted your Facebook account. You can re-enable the ' .
'Facebook application and automatic status updating by ' .
"re-installing the %2\$s Facebook application.\n\nRegards,\n\n%2\$s"),
$user->nickname, $site_name);
common_init_locale();
return mail_to_user($user, $subject, $body);
}

View File

@ -87,7 +87,7 @@ function omb_broadcast_notice($notice)
common_debug('Posting to ' . $rp->postnoticeurl, __FILE__);
/* Post notice. */
$service = new Laconica_OMB_Service_Consumer(
$service = new StatusNet_OMB_Service_Consumer(
array(OMB_ENDPOINT_POSTNOTICE => $rp->postnoticeurl));
try {
$service->setToken($rp->token, $rp->secret);

View File

@ -62,9 +62,15 @@ class ProfileList extends Widget
function show()
{
$cnt = 0;
if (Event::handle('StartProfileList', array($this))) {
$this->startList();
$cnt = $this->showProfiles();
$this->endList();
Event::handle('EndProfileList', array($this));
}
return $cnt;
}
@ -117,10 +123,19 @@ class ProfileListItem extends Widget
function show()
{
if (Event::handle('StartProfileListItem', array($this))) {
$this->startItem();
if (Event::handle('StartProfileListItemProfile', array($this))) {
$this->showProfile();
Event::handle('EndProfileListItemProfile', array($this));
}
if (Event::handle('StartProfileListItemActions', array($this))) {
$this->showActions();
Event::handle('EndProfileListItemActions', array($this));
}
$this->endItem();
Event::handle('EndProfileListItem', array($this));
}
}
function startItem()
@ -132,11 +147,29 @@ class ProfileListItem extends Widget
function showProfile()
{
$this->startProfile();
if (Event::handle('StartProfileListItemProfileElements', array($this))) {
if (Event::handle('StartProfileListItemAvatar', array($this))) {
$this->showAvatar();
Event::handle('EndProfileListItemAvatar', array($this));
}
if (Event::handle('StartProfileListItemFullName', array($this))) {
$this->showFullName();
Event::handle('EndProfileListItemFullName', array($this));
}
if (Event::handle('StartProfileListItemLocation', array($this))) {
$this->showLocation();
Event::handle('EndProfileListItemLocation', array($this));
}
if (Event::handle('StartProfileListItemHomepage', array($this))) {
$this->showHomepage();
Event::handle('EndProfileListItemHomepage', array($this));
}
if (Event::handle('StartProfileListItemBio', array($this))) {
$this->showBio();
Event::handle('EndProfileListItemBio', array($this));
}
Event::handle('EndProfileListItemProfileElements', array($this));
}
$this->endProfile();
}
@ -225,7 +258,10 @@ class ProfileListItem extends Widget
function showActions()
{
$this->startActions();
if (Event::handle('StartProfileListItemActionElements', array($this))) {
$this->showSubscribeButton();
Event::handle('EndProfileListItemActionElements', array($this));
}
$this->endActions();
}

View File

@ -27,6 +27,22 @@ define('CLAIM_TIMEOUT', 1200);
define('QUEUE_HANDLER_MISS_IDLE', 10);
define('QUEUE_HANDLER_HIT_IDLE', 0);
/**
* Base class for queue handlers.
*
* As extensions of the Daemon class, each queue handler has the ability
* to launch itself in the background, at which point it'll pass control
* to the configured QueueManager class to poll for updates.
*
* Subclasses must override at least the following methods:
* - transport
* - start
* - finish
* - handle_notice
*
* Some subclasses will also want to override the idle handler:
* - idle
*/
class QueueHandler extends Daemon
{
@ -39,6 +55,14 @@ class QueueHandler extends Daemon
}
}
/**
* How many seconds a polling-based queue manager should wait between
* checks for new items to handle.
*
* Defaults to 60 seconds; override to speed up or slow down.
*
* @return int timeout in seconds
*/
function timeout()
{
return 60;
@ -54,24 +78,69 @@ class QueueHandler extends Daemon
return strtolower($this->class_name().'.'.$this->get_id());
}
/**
* Return transport keyword which identifies items this queue handler
* services; must be defined for all subclasses.
*
* Must be 8 characters or less to fit in the queue_item database.
* ex "email", "jabber", "sms", "irc", ...
*
* @return string
*/
function transport()
{
return null;
}
/**
* Initialization, run when the queue handler starts.
* If this function indicates failure, the handler run will be aborted.
*
* @fixme run() will abort if this doesn't return true,
* but some subclasses don't bother.
* @return boolean true on success, false on failure
*/
function start()
{
}
/**
* Cleanup, run when the queue handler ends.
* If this function indicates failure, a warning will be logged.
*
* @fixme run() will throw warnings if this doesn't return true,
* but many subclasses don't bother.
* @return boolean true on success, false on failure
*/
function finish()
{
}
/**
* Here's the meat of your queue handler -- you're handed a Notice
* object, which you may do as you will with.
*
* If this function indicates failure, a warning will be logged
* and the item is placed back in the queue to be re-run.
*
* @param Notice $notice
* @return boolean true on success, false on failure
*/
function handle_notice($notice)
{
return true;
}
/**
* Setup and start of run loop for this queue handler as a daemon.
* Most of the heavy lifting is passed on to the QueueManager's service()
* method, which passes control back to our handle_notice() method for
* each notice that comes in on the queue.
*
* Most of the time this won't need to be overridden in a subclass.
*
* @return boolean true on success, false on failure
*/
function run()
{
if (!$this->start()) {
@ -100,6 +169,14 @@ class QueueHandler extends Daemon
return true;
}
/**
* Called by QueueHandler after each handled item or empty polling cycle.
* This is a good time to e.g. service your XMPP connection.
*
* Doesn't need to be overridden if there's no maintenance to do.
*
* @param int $timeout seconds to sleep if there's nothing to do
*/
function idle($timeout=0)
{
if ($timeout > 0) {

View File

@ -86,14 +86,6 @@ class Router
$m->connect('doc/:title', array('action' => 'doc'));
// facebook
$m->connect('facebook', array('action' => 'facebookhome'));
$m->connect('facebook/index.php', array('action' => 'facebookhome'));
$m->connect('facebook/settings.php', array('action' => 'facebooksettings'));
$m->connect('facebook/invite.php', array('action' => 'facebookinvite'));
$m->connect('facebook/remove', array('action' => 'facebookremove'));
// main stuff is repetitive
$main = array('login', 'logout', 'register', 'subscribe',

View File

@ -48,17 +48,6 @@ class UnQueueManager
jabber_public_notice($notice);
}
break;
case 'twitter':
if ($this->_isLocal($notice)) {
broadcast_twitter($notice);
}
break;
case 'facebook':
if ($this->_isLocal($notice)) {
require_once INSTALLDIR . '/lib/facebookutil.php';
return facebookBroadcastNotice($notice);
}
break;
case 'ping':
if ($this->_isLocal($notice)) {
require_once INSTALLDIR . '/lib/ping.php';
@ -77,7 +66,7 @@ class UnQueueManager
break;
default:
if (Event::handle('UnqueueHandleNotice', array(&$notice, $queue))) {
throw ServerException("UnQueueManager: Unknown queue: $queue");
throw new ServerException("UnQueueManager: Unknown queue: $queue");
}
}
}

View File

@ -51,13 +51,23 @@ function common_init_locale($language=null)
function common_init_language()
{
mb_internal_encoding('UTF-8');
// gettext seems very picky... We first need to setlocale()
// to a locale which _does_ exist on the system, and _then_
// we can set in another locale that may not be set up
// (say, ga_ES for Galego/Galician) it seems to take it.
common_init_locale("en_US");
$language = common_language();
// So we don't have to make people install the gettext locales
$locale_set = common_init_locale($language);
bindtextdomain("statusnet", common_config('site','locale_path'));
setlocale(LC_CTYPE, 'C');
// So we don't have to make people install the gettext locales
$path = common_config('site','locale_path');
bindtextdomain("statusnet", $path);
bind_textdomain_codeset("statusnet", "UTF-8");
textdomain("statusnet");
setlocale(LC_CTYPE, 'C');
if(!$locale_set) {
common_log(LOG_INFO, 'Language requested:' . $language . ' - locale could not be set. Perhaps that system locale is not installed.', __FILE__);
}
@ -391,7 +401,7 @@ function common_render_content($text, $notice)
{
$r = common_render_text($text);
$id = $notice->profile_id;
$r = preg_replace('/(^|[\s\.\,\:\;]+)@([A-Za-z0-9]{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
$r = preg_replace('/(^|\s+)@(['.NICKNAME_FMT.']{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
$r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
$r = preg_replace('/(^|[\s\.\,\:\;]+)@#([A-Za-z0-9]{1,64})/e', "'\\1@#'.common_at_hash_link($id, '\\2')", $r);
$r = preg_replace('/(^|[\s\.\,\:\;]+)!([A-Za-z0-9]{1,64})/e', "'\\1!'.common_group_link($id, '\\2')", $r);
@ -896,8 +906,6 @@ function common_broadcast_notice($notice, $remote=false)
function common_enqueue_notice($notice)
{
static $localTransports = array('omb',
'twitter',
'facebook',
'ping');
static $allTransports = array('sms', 'plugin');

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -3,24 +3,24 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2009-09-08 20:21+0000\n"
"Last-Translator: Giannis Pappas <papasj@mailinator.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Pootle 1.1.0\n"
#: ../actions/noticesearchrss.php:64 actions/noticesearchrss.php:68
#: actions/noticesearchrss.php:88
#, php-format
msgid " Search Stream for \"%s\""
msgstr ""
msgstr "Αναζήτηση ροής για \"%s\""
#: ../actions/finishopenidlogin.php:82 ../actions/register.php:191
#: actions/finishopenidlogin.php:88 actions/register.php:205
@ -28,11 +28,13 @@ msgstr ""
msgid ""
" except this private data: password, email address, IM address, phone number."
msgstr ""
"εκτός από τα εξής προσωπικά δεδομένα: κωδικός πρόσβασης, διεύθυνση email, "
"διεύθυνση IM, τηλεφωνικό νούμερο."
#: ../actions/showstream.php:400 ../lib/stream.php:109
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
msgid " from "
msgstr ""
msgstr "από"
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
#: actions/twitapistatuses.php:347
@ -108,7 +110,7 @@ msgstr ""
#: actions/invite.php:99 actions/invite.php:123 actions/invite.php:131
#, php-format
msgid "%s (%s)"
msgstr ""
msgstr "%s (%s)"
#: ../actions/publicrss.php:62 actions/publicrss.php:48
#: actions/publicrss.php:90
@ -134,13 +136,14 @@ msgstr ""
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
#, php-format
msgid "%s status"
msgstr ""
msgstr "Κατάσταση του/της %s"
#: ../actions/twitapistatuses.php:338 actions/twitapistatuses.php:265
#: actions/twitapistatuses.php:199
#, php-format
#, fuzzy
msgid "%s timeline"
msgstr ""
msgstr "Χρονοδιάγραμμα του χρήστη %s"
#: ../actions/twitapistatuses.php:52 actions/twitapistatuses.php:52
#: actions/twitapistatuses.php:36
@ -153,18 +156,25 @@ msgid ""
"(You should receive a message by email momentarily, with instructions on how "
"to confirm your email address.)"
msgstr ""
"(Σύντομα θα λάβετε μέσω ηλεκτρονικού ταχυδρομείου ένα μήνυμα με οδηγίες για "
"την επιβεβαίωση της ηλεκτρονικής σας διεύθυνσης.)"
#: ../lib/util.php:257 lib/util.php:273 lib/action.php:605
#, php-format
#, fuzzy
msgid ""
"**%%site.name%%** is a microblogging service brought to you by [%%site."
"broughtby%%](%%site.broughtbyurl%%). "
msgstr ""
"To **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου) που "
"έφερε κοντά σας το [%%site.broughtby%%](%%site.broughtbyurl%%). "
#: ../lib/util.php:259 lib/util.php:275 lib/action.php:607
#, php-format
#, fuzzy
msgid "**%%site.name%%** is a microblogging service. "
msgstr ""
"Το **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου). "
#: ../lib/util.php:274 lib/util.php:290
msgid ". Contributors should be attributed by full name or nickname."
@ -175,11 +185,11 @@ msgstr ""
#: actions/finishopenidlogin.php:101 actions/profilesettings.php:100
#: lib/groupeditform.php:139
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
msgstr ""
msgstr "1-64 μικρά γράμματα ή αριθμοί, χωρίς σημεία στίξης ή κενά"
#: ../actions/register.php:152 actions/register.php:166
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
msgstr ""
msgstr "1-64 μικρά γράμματα ή αριθμοί, χωρίς σημεία στίξης ή κενά. Απαραίτητο."
#: ../actions/password.php:42 actions/profilesettings.php:181
#: actions/passwordsettings.php:102
@ -194,7 +204,7 @@ msgstr "6 ή περισσότεροι χαρακτήρες και μην το ξ
#: ../actions/register.php:154 actions/register.php:168
#: actions/register.php:373
msgid "6 or more characters. Required."
msgstr ""
msgstr "6 ή περισσότεροι χαρακτήρες. Απαραίτητο."
#: ../actions/imsettings.php:197 actions/imsettings.php:205
#, php-format
@ -202,18 +212,26 @@ msgid ""
"A confirmation code was sent to the IM address you added. You must approve %"
"s for sending messages to you."
msgstr ""
"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στην διεύθυνση IM που προσθέσατε. "
"Πρέπει να αποδεχτείτε τον/την %s για αποστολή μηνυμάτων προς εσας. "
#: ../actions/emailsettings.php:213 actions/emailsettings.php:231
msgid ""
"A confirmation code was sent to the email address you added. Check your "
"inbox (and spam box!) for the code and instructions on how to use it."
msgstr ""
"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στην διεύθυνση email που "
"προσθέσατε. Ελέγξτε τα εισερχόμενα (και τον φάκελο ανεπιθύμητης "
"αλληλογραφίας) για τον κωδικό και για το πως να τον χρησιμοποιήσετε."
#: ../actions/smssettings.php:216 actions/smssettings.php:224
msgid ""
"A confirmation code was sent to the phone number you added. Check your inbox "
"(and spam box!) for the code and instructions on how to use it."
msgstr ""
"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στο τηλεφωνικό νούμερο που "
"προσθέσατε. Ελέγξτε τα εισερχόμενα (και τον φάκελο ανεπιθύμητης "
"αλληλογραφίας) για τον κωδικό και για το πως να τον χρησιμοποιήσετε."
#: ../actions/twitapiaccount.php:49 ../actions/twitapihelp.php:45
#: ../actions/twitapistatuses.php:88 ../actions/twitapistatuses.php:259
@ -235,7 +253,7 @@ msgstr ""
#: actions/twitapistatuses.php:402 actions/twitapistatuses.php:429
#: actions/twitapiusers.php:32
msgid "API method not found!"
msgstr ""
msgstr "Η μέθοδος του ΑΡΙ δε βρέθηκε!"
#: ../actions/twitapiaccount.php:57 ../actions/twitapiaccount.php:113
#: ../actions/twitapiaccount.php:119 ../actions/twitapiblocks.php:28
@ -258,7 +276,7 @@ msgstr ""
#: actions/twitapinotifications.php:31 actions/twitapinotifications.php:37
#: actions/twitapistatuses.php:562
msgid "API method under construction."
msgstr ""
msgstr "Η μέθοδος του ΑΡΙ είναι υπό κατασκευή."
#: ../lib/util.php:324 lib/util.php:340 lib/action.php:568
msgid "About"
@ -287,7 +305,7 @@ msgstr "Προσθήκη OpenID"
#: ../lib/settingsaction.php:97 lib/settingsaction.php:91
#: lib/accountsettingsaction.php:117
msgid "Add or remove OpenIDs"
msgstr ""
msgstr "Προσθήκη ή διαγραφή OpenIDs"
#: ../actions/emailsettings.php:38 ../actions/imsettings.php:39
#: ../actions/smssettings.php:39 actions/emailsettings.php:39
@ -299,24 +317,24 @@ msgstr "Διεύθυνση"
#: ../actions/invite.php:131 actions/invite.php:139 actions/invite.php:176
msgid "Addresses of friends to invite (one per line)"
msgstr ""
msgstr "Διευθύνσεις φίλων σου που θες να προσκαλέσεις (μία ανά γραμμή)"
#: ../actions/showstream.php:273 actions/showstream.php:288
#: actions/showstream.php:422
msgid "All subscriptions"
msgstr ""
msgstr "Όλες οι συνδρομές"
#: ../actions/publicrss.php:64 actions/publicrss.php:50
#: actions/publicrss.php:92
#, php-format
msgid "All updates for %s"
msgstr ""
msgstr "Όλες οι ενημερώσεις για %s"
#: ../actions/noticesearchrss.php:66 actions/noticesearchrss.php:70
#: actions/noticesearchrss.php:90
#, php-format
msgid "All updates matching search term \"%s\""
msgstr ""
msgstr "Όλες οι ενημερώσεις που ταιριάζουν με τον όρο αναζήτησης \"%s\""
#: ../actions/finishopenidlogin.php:29 ../actions/login.php:31
#: ../actions/openidlogin.php:29 ../actions/register.php:30
@ -325,31 +343,34 @@ msgstr ""
#: actions/finishopenidlogin.php:34 actions/login.php:77
#: actions/openidlogin.php:30 actions/register.php:92
msgid "Already logged in."
msgstr ""
msgstr "Ήδη συνδεδεμένος."
#: ../lib/subs.php:42 lib/subs.php:42 lib/subs.php:49
msgid "Already subscribed!."
msgstr ""
msgstr "Είσαι ήδη συνδρομητής!."
#: ../actions/deletenotice.php:54 actions/deletenotice.php:55
#: actions/deletenotice.php:113
msgid "Are you sure you want to delete this notice?"
msgstr ""
msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυτό το μήνυμα;"
#: ../actions/userauthorization.php:77 actions/userauthorization.php:83
#: actions/userauthorization.php:81
msgid "Authorize subscription"
msgstr ""
msgstr "Εξουσιοδοτημένη συνδρομή"
#: ../actions/login.php:104 ../actions/register.php:178
#: actions/register.php:192
msgid "Automatically login in the future; not for shared computers!"
msgstr ""
msgstr "Αυτόματη σύνδεση στο μέλλον. ΟΧΙ για κοινόχρηστους υπολογιστές!"
#: ../actions/profilesettings.php:65 actions/profilesettings.php:98
#, fuzzy
msgid ""
"Automatically subscribe to whoever subscribes to me (best for non-humans)"
msgstr ""
"Αυτόματα γίνε συνδρομητής σε όσους γίνονται συνδρομητές σε μένα (χρήση "
"κυρίως από λογισμικό και όχι ανθρώπους)"
#: ../actions/avatar.php:32 ../lib/settingsaction.php:90
#: actions/profilesettings.php:34 actions/avatarsettings.php:65
@ -364,25 +385,33 @@ msgstr ""
#: ../actions/imsettings.php:55 actions/imsettings.php:56
#, php-format
#, fuzzy
msgid ""
"Awaiting confirmation on this address. Check your Jabber/GTalk account for a "
"message with further instructions. (Did you add %s to your buddy list?)"
msgstr ""
"Αναμένωντας επιβεβαίωση σε αυτή τη διεύθυνση. Έλεγξε το Jabber/GTalk "
"λογαριασμό σου για μήνυμα με περαιτέρω οδηγίες. (Πρόσθεσες το χρήστη %s στη "
"λίστα φίλων?)"
#: ../actions/emailsettings.php:54 actions/emailsettings.php:55
#, fuzzy
msgid ""
"Awaiting confirmation on this address. Check your inbox (and spam box!) for "
"a message with further instructions."
msgstr ""
"Αναμένωντας επιβεβαίωση σε αυτή τη διεύθυνση. Έλεγξε το mail σου (και το "
"φάκελο spam!) για μήνυμα με περαιτέρω οδηγίες. "
#: ../actions/smssettings.php:58 actions/smssettings.php:58
#: actions/smssettings.php:111
msgid "Awaiting confirmation on this phone number."
msgstr ""
msgstr "Αναμένωντας επιβεβαίωση σ' αυτό το νούμερο τηλεφώνου."
#: ../lib/util.php:1318 lib/util.php:1452
#, fuzzy
msgid "Before »"
msgstr ""
msgstr "Προηγούμενο »"
#: ../actions/profilesettings.php:49 ../actions/register.php:170
#: actions/profilesettings.php:82 actions/register.php:184
@ -399,8 +428,9 @@ msgid "Bio is too long (max 140 chars)."
msgstr "Το βιογραφικό είναι πολύ μεγάλο (μέγιστο 140 χαρακτ.)."
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
#, fuzzy
msgid "Can't delete this notice."
msgstr ""
msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
#: ../actions/updateprofile.php:119 actions/updateprofile.php:120
#: actions/updateprofile.php:123
@ -424,17 +454,17 @@ msgstr "Ακύρωση"
#: ../lib/openid.php:121 lib/openid.php:121 lib/openid.php:130
msgid "Cannot instantiate OpenID consumer object."
msgstr ""
msgstr "Απέτυχη η χρήση αντικειμένου OpenID consumer."
#: ../actions/imsettings.php:163 actions/imsettings.php:171
#: actions/imsettings.php:286
msgid "Cannot normalize that Jabber ID"
msgstr ""
msgstr "Αδυναμία κανονικοποίησης του Jabber ID"
#: ../actions/emailsettings.php:181 actions/emailsettings.php:199
#: actions/emailsettings.php:311
msgid "Cannot normalize that email address"
msgstr ""
msgstr "Αδυναμία κανονικοποίησης αυτής της email διεύθυνσης"
#: ../actions/password.php:45 actions/profilesettings.php:184
#: actions/passwordsettings.php:110
@ -453,12 +483,12 @@ msgstr "Αλλαγή κωδικού"
#: ../lib/settingsaction.php:94 lib/accountsettingsaction.php:111
msgid "Change your password"
msgstr ""
msgstr "Αλλάξτε τον κωδικό σας"
#: ../lib/settingsaction.php:85 lib/settingsaction.php:85
#: lib/accountsettingsaction.php:105
msgid "Change your profile settings"
msgstr ""
msgstr "Αλλάξτε τις ρυθμίσεις του προφίλ σας"
#: ../actions/password.php:43 ../actions/recoverpassword.php:181
#: ../actions/register.php:155 ../actions/smssettings.php:65
@ -494,6 +524,7 @@ msgstr "Ο κωδικός επιβεβαίωσης δεν βρέθηκε."
#: ../actions/register.php:202
#, php-format
#, fuzzy
msgid ""
"Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
@ -510,6 +541,22 @@ msgid ""
"\n"
"Thanks for signing up and we hope you enjoy using this service."
msgstr ""
"Συγχαρητήρια, %s! και καλωσήρθες στο %%%%site.name%%%%. Από εδώ μπορείς "
"να...\n"
"\n"
"* Πας στο [your profile](%s) και να στείλεις το πρώτο σου μήνυμα.\n"
"* Προσθέσεις ένα [Jabber/GTalk address](%%%%action.imsettings%%%%) ώστε να "
"δέχεσε μηνύματα στο instant messager σου.\n"
"* [Search for people](%%%%action.peoplesearch%%%%) που μπορεί να ξέρεις ή "
"που έχουν τα ίδια ενδιαφέροντα με σένα. \n"
"* Ενημερώσεις το προφίλ σου [profile "
"settings](%%%%action.profilesettings%%%%) για να μάθουν οι άλλοι περισσότερα "
"για σένα. \n"
"* Διαβάσεις τα [online docs](%%%%doc.help%%%%) για λειτουργίες που μπορεί να "
"μην έχεις μάθει ακόμα. \n"
"\n"
"Ευχαριστούμε που εγγράφηκες και ευχόμαστε να περάσεις καλά με την υπηρεσία "
"μας."
#: ../actions/finishopenidlogin.php:91 actions/finishopenidlogin.php:97
#: actions/finishopenidlogin.php:119 lib/action.php:330
@ -528,29 +575,29 @@ msgstr "Επικοινωνία"
#: ../lib/openid.php:178 lib/openid.php:178 lib/openid.php:187
#, php-format
msgid "Could not create OpenID form: %s"
msgstr ""
msgstr "Αδυναμία δημιουργίας φόρμας OpenID: %s "
#: ../actions/twitapifriendships.php:60 ../actions/twitapifriendships.php:76
#: actions/twitapifriendships.php:60 actions/twitapifriendships.php:76
#: actions/twitapifriendships.php:48 actions/twitapifriendships.php:64
#, php-format
msgid "Could not follow user: %s is already on your list."
msgstr ""
msgstr "Δε μπορώ να ακολουθήσω το χρήστη: ο χρήστης %s είναι ήδη στη λίστα σου."
#: ../actions/twitapifriendships.php:53 actions/twitapifriendships.php:53
#: actions/twitapifriendships.php:41
msgid "Could not follow user: User not found."
msgstr ""
msgstr "Δε μπορώ να ακολουθήσω το χρήστη: ο χρήστης δε βρέθηκε."
#: ../lib/openid.php:160 lib/openid.php:160 lib/openid.php:169
#, php-format
msgid "Could not redirect to server: %s"
msgstr ""
msgstr "Αδυναμία ανακατεύθηνσης στο διακομιστή: %s"
#: ../actions/updateprofile.php:162 actions/updateprofile.php:163
#: actions/updateprofile.php:166
msgid "Could not save avatar info"
msgstr ""
msgstr "Δε μπόρεσα να σώσω την πληροφορία του avatar"
#: ../actions/updateprofile.php:155 actions/updateprofile.php:156
#: actions/updateprofile.php:159
@ -559,21 +606,21 @@ msgstr "Αδύνατη η αποθήκευση των νέων πληροφορ
#: ../lib/subs.php:54 lib/subs.php:61 lib/subs.php:72
msgid "Could not subscribe other to you."
msgstr ""
msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
#: ../lib/subs.php:46 lib/subs.php:46 lib/subs.php:57
msgid "Could not subscribe."
msgstr ""
msgstr "Απέτυχε η συνδρομή."
#: ../actions/recoverpassword.php:102 actions/recoverpassword.php:105
#: actions/recoverpassword.php:111
msgid "Could not update user with confirmed email address."
msgstr ""
msgstr "Απέτυχε η ενημέρωση χρήστη μέσω επιβεβαιωμένης email διεύθυνσης."
#: ../actions/finishremotesubscribe.php:99
#: actions/finishremotesubscribe.php:101 actions/finishremotesubscribe.php:114
msgid "Couldn't convert request tokens to access tokens."
msgstr ""
msgstr "Απέτυχε η μετατροπή αιτούμενων tokens σε tokens πρόσβασης."
#: ../actions/confirmaddress.php:84 ../actions/emailsettings.php:234
#: ../actions/imsettings.php:218 ../actions/smssettings.php:241
@ -582,16 +629,16 @@ msgstr ""
#: actions/confirmaddress.php:126 actions/emailsettings.php:375
#: actions/imsettings.php:357 actions/smssettings.php:370
msgid "Couldn't delete email confirmation."
msgstr ""
msgstr "Απέτυχε η διαγραφή email επιβεβαίωσης."
#: ../lib/subs.php:103 lib/subs.php:116 lib/subs.php:134
msgid "Couldn't delete subscription."
msgstr ""
msgstr "Απέτυχε η διαγραφή συνδρομής."
#: ../actions/twitapistatuses.php:93 actions/twitapistatuses.php:98
#: actions/twitapistatuses.php:84
msgid "Couldn't find any statuses."
msgstr ""
msgstr "Απέτυχε η εύρεση οποιασδήποτε κατάστασης."
#: ../actions/remotesubscribe.php:127 actions/remotesubscribe.php:136
#: actions/remotesubscribe.php:178
@ -604,29 +651,29 @@ msgstr ""
#: actions/emailsettings.php:337 actions/imsettings.php:311
#: actions/smssettings.php:325
msgid "Couldn't insert confirmation code."
msgstr ""
msgstr "Απέτυχε η εισαγωγή κωδικού επιβεβαίωσης."
#: ../actions/finishremotesubscribe.php:180
#: actions/finishremotesubscribe.php:182 actions/finishremotesubscribe.php:218
msgid "Couldn't insert new subscription."
msgstr ""
msgstr "Απέτυχε η εισαγωγή νέας συνδρομής."
#: ../actions/profilesettings.php:184 ../actions/twitapiaccount.php:96
#: actions/profilesettings.php:299 actions/twitapiaccount.php:94
#: actions/profilesettings.php:302 actions/twitapiaccount.php:81
msgid "Couldn't save profile."
msgstr "Αδύνατη η αποθήκευση του προφίλ."
msgstr "Απέτυχε η αποθήκευση του προφίλ."
#: ../actions/profilesettings.php:161 actions/profilesettings.php:276
#: actions/profilesettings.php:279
msgid "Couldn't update user for autosubscribe."
msgstr ""
msgstr "Απέτυχε η ενημέρωση του χρήστη για την αυτόματη συνδρομή."
#: ../actions/emailsettings.php:280 ../actions/emailsettings.php:294
#: actions/emailsettings.php:298 actions/emailsettings.php:312
#: actions/emailsettings.php:440 actions/emailsettings.php:462
msgid "Couldn't update user record."
msgstr ""
msgstr "Απέτυχε η ενημέρωση εγγραφής του χρήστη."
#: ../actions/confirmaddress.php:72 ../actions/emailsettings.php:156
#: ../actions/emailsettings.php:259 ../actions/imsettings.php:138
@ -642,7 +689,7 @@ msgstr ""
#: actions/profilesettings.php:259 actions/smssettings.php:266
#: actions/smssettings.php:408
msgid "Couldn't update user."
msgstr ""
msgstr "Απέτυχε η ενημέρωση του χρήστη."
#: ../actions/finishopenidlogin.php:84 actions/finishopenidlogin.php:90
#: actions/finishopenidlogin.php:112
@ -661,23 +708,24 @@ msgstr "Δημιουργία νέου λογαριασμού"
#: ../actions/finishopenidlogin.php:191 actions/finishopenidlogin.php:197
#: actions/finishopenidlogin.php:231
#, fuzzy
msgid "Creating new account for OpenID that already has a user."
msgstr ""
msgstr "Μετατροπή υπάρχοντος λογαριασμού σε λογαριασμό OpenID."
#: ../actions/imsettings.php:45 actions/imsettings.php:46
#: actions/imsettings.php:100
msgid "Current confirmed Jabber/GTalk address."
msgstr ""
msgstr "Τρέχουσα επιβεβαιωμένη Jabber/GTalk διεύθυνση."
#: ../actions/smssettings.php:46 actions/smssettings.php:46
#: actions/smssettings.php:100
msgid "Current confirmed SMS-enabled phone number."
msgstr ""
msgstr "Τρέχων επιβεβαιωμένο, μέσω SMS, νούμερο κινητού τηλεφώνου."
#: ../actions/emailsettings.php:44 actions/emailsettings.php:45
#: actions/emailsettings.php:99
msgid "Current confirmed email address."
msgstr ""
msgstr "Τρέχουσα επιβεβαιωμένη email διεύθυνση."
#: ../actions/showstream.php:356 actions/showstream.php:367
msgid "Currently"
@ -686,40 +734,40 @@ msgstr ""
#: ../classes/Notice.php:72 classes/Notice.php:86 classes/Notice.php:91
#, php-format
msgid "DB error inserting hashtag: %s"
msgstr ""
msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
#: ../lib/util.php:1061 lib/util.php:1110 classes/Notice.php:698
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
msgstr "Σφάλμα βάσης δεδομένων κατά την εισαγωγή απάντησης: %s"
#: ../actions/deletenotice.php:41 actions/deletenotice.php:41
#: actions/deletenotice.php:79
msgid "Delete notice"
msgstr ""
msgstr "Διαγραφή μηνύματος"
#: ../actions/profilesettings.php:51 ../actions/register.php:172
#: actions/profilesettings.php:84 actions/register.php:186
#: actions/profilesettings.php:114
msgid "Describe yourself and your interests in 140 chars"
msgstr ""
msgstr "Περιέγραψε τον εαυτό σου και τα ενδιαφέροντά σου σε 140 χαρακτήρες"
#: ../actions/register.php:158 ../actions/register.php:161
#: ../lib/settingsaction.php:87 actions/register.php:172
#: actions/register.php:175 lib/settingsaction.php:87 actions/register.php:381
#: actions/register.php:385 lib/accountsettingsaction.php:113
msgid "Email"
msgstr ""
msgstr "Email"
#: ../actions/emailsettings.php:59 actions/emailsettings.php:60
#: actions/emailsettings.php:115
msgid "Email Address"
msgstr ""
msgstr "Διεύθυνση Email"
#: ../actions/emailsettings.php:32 actions/emailsettings.php:32
#: actions/emailsettings.php:60
msgid "Email Settings"
msgstr ""
msgstr "Ρυθμίσεις Email"
#: ../actions/register.php:73 actions/register.php:80 actions/register.php:163
msgid "Email address already exists."
@ -732,11 +780,11 @@ msgstr "Επιβεβαίωση διεύθυνσης email"
#: ../actions/emailsettings.php:61 actions/emailsettings.php:62
#: actions/emailsettings.php:117
msgid "Email address, like \"UserName@example.org\""
msgstr ""
msgstr "Διεύθυνση email, π.χ: \"UserName@example.org\""
#: ../actions/invite.php:129 actions/invite.php:137 actions/invite.php:174
msgid "Email addresses"
msgstr ""
msgstr "Διευθύνσεις email"
#: ../actions/recoverpassword.php:191 actions/recoverpassword.php:197
#: actions/recoverpassword.php:231
@ -917,22 +965,22 @@ msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
#: ../actions/emailsettings.php:91 actions/emailsettings.php:98
#: actions/emailsettings.php:173
msgid "I want to post notices by email."
msgstr ""
msgstr "Θέλω να δημοσιεύω ενημερώσεις μέσω email"
#: ../lib/settingsaction.php:102 lib/settingsaction.php:96
#: lib/connectsettingsaction.php:104
msgid "IM"
msgstr ""
msgstr "ΙΜ"
#: ../actions/imsettings.php:60 actions/imsettings.php:61
#: actions/imsettings.php:118
msgid "IM Address"
msgstr ""
msgstr "Διεύθυνση ΙΜ"
#: ../actions/imsettings.php:33 actions/imsettings.php:33
#: actions/imsettings.php:59
msgid "IM Settings"
msgstr ""
msgstr "Ρυθμίσεις ΙΜ"
#: ../actions/finishopenidlogin.php:88 actions/finishopenidlogin.php:94
#: actions/finishopenidlogin.php:116
@ -940,29 +988,35 @@ msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""
"Εάν έχετε ήδη λογαριασμό, συνδεθείτε με το όνομα χρήστη και τον κωδικό για "
"να τον συνδέσετε στο OpenID σας."
#: ../actions/openidsettings.php:45
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""
"Εάν θέλετε να προσθέσετε ένα OpenID στον λογαριασμό σας, πληκτρολογήστε τον "
"από κάτω και πατήστε \"Προσθήκη\"."
#: ../actions/recoverpassword.php:137
msgid ""
"If you've forgotten or lost your password, you can get a new one sent to the "
"email address you have stored in your account."
msgstr ""
"Εάν έχετε ξεχάσει ή χάσει τον κωδικό σας, μπορεί να σας αποσταλλεί "
"καινούριος στην διεύθυνση email που έχετε καταχωρήσει στον λογαριασμό σας."
#: ../actions/emailsettings.php:67 ../actions/smssettings.php:76
#: actions/emailsettings.php:68 actions/smssettings.php:76
#: actions/emailsettings.php:127 actions/smssettings.php:140
msgid "Incoming email"
msgstr ""
msgstr "Εισερχόμενο email"
#: ../actions/emailsettings.php:283 actions/emailsettings.php:301
#: actions/emailsettings.php:443
msgid "Incoming email address removed."
msgstr ""
msgstr "Η διεύθυνση του εισερχόμενου email αφαιρέθηκε."
#: ../actions/password.php:69 actions/profilesettings.php:388
#: actions/passwordsettings.php:153
@ -4225,20 +4279,19 @@ msgstr ""
#: actions/twittersettings.php:119
msgid "Twitter user name"
msgstr ""
msgstr "Όνομα χρήστη στο Twitter"
#: actions/twittersettings.php:126
#, fuzzy
msgid "Twitter password"
msgstr "Νέος κωδικός"
msgstr "Κωδικός στο Twitter"
#: actions/twittersettings.php:228
msgid "Twitter Friends"
msgstr ""
msgstr "Φίλοι στο Twitter"
#: actions/twittersettings.php:327
msgid "Username must have only numbers, "
msgstr ""
msgstr "Το όνομα χρήστη πρέπει να έχει μόνο νούμερα,"
#: actions/twittersettings.php:341
#, php-format
@ -4440,47 +4493,46 @@ msgstr ""
#: lib/groupeditform.php:151
msgid "Description"
msgstr ""
msgstr "Περιγραφή"
#: lib/groupeditform.php:153
msgid "Describe the group or topic in 140 chars"
msgstr ""
msgstr "Περιγράψτε την ομάδα ή το θέμα μέχρι 140 χαρακτήρες"
#: lib/groupeditform.php:158
msgid ""
"Location for the group, if any, like \"City, State (or Region), Country\""
msgstr ""
msgstr "Τοποθεσία της ομάδας (εάν υπάρχει), πχ: \"Πόλη, Περιοχή, Χώρα)"
#: lib/groupnav.php:84 lib/searchgroupnav.php:84
msgid "Group"
msgstr ""
msgstr "Ομάδα"
#: lib/groupnav.php:100
msgid "Admin"
msgstr ""
msgstr "Διαχειριστής"
#: lib/groupnav.php:101
#, php-format
msgid "Edit %s group properties"
msgstr ""
msgstr "Επεξεργασία ιδιοτήτων της ομάδας %s"
#: lib/groupnav.php:106
#, fuzzy
msgid "Logo"
msgstr "Αποσύνδεση"
msgstr "Λογότυπο"
#: lib/groupnav.php:107
#, php-format
msgid "Add or edit %s logo"
msgstr ""
msgstr "Προσθήκη ή επεξεργασία λογότυπου για την ομάδα %s"
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr ""
msgstr "Ομάδες με τα περισσότερα μέλη"
#: lib/groupsbypostssection.php:71
msgid "Groups with most posts"
msgstr ""
msgstr "Ομάδες με τις περισσότερες δημοσιεύσεις"
#: lib/grouptagcloudsection.php:56
#, php-format
@ -4495,16 +4547,15 @@ msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
#: lib/joinform.php:114
#, fuzzy
msgid "Join"
msgstr "Σύνδεση"
msgstr "Συμμετοχή"
#: lib/leaveform.php:114
msgid "Leave"
msgstr ""
msgstr "Αποχώρηση"
#: lib/logingroupnav.php:76
#, fuzzy
msgid "Login with a username and password"
msgstr "Λάθος όνομα χρήστη ή κωδικός"
msgstr "Σύνδεση με όνομα χρήστη και κωδικό"
#: lib/logingroupnav.php:79
#, fuzzy
@ -4513,7 +4564,7 @@ msgstr "Δημιουργία νέου λογαριασμού"
#: lib/logingroupnav.php:82
msgid "Login or register with OpenID"
msgstr ""
msgstr "Σύνδεση ή δημιουργία λογαριασμού με OpenID"
#: lib/mail.php:175
#, php-format
@ -4521,6 +4572,8 @@ msgid ""
"Hey, %s.\n"
"\n"
msgstr ""
"Γεια σου, %s.\n"
"\n"
#: lib/mail.php:236
#, php-format
@ -4530,12 +4583,12 @@ msgstr ""
#: lib/mail.php:254
#, fuzzy, php-format
msgid "Location: %s\n"
msgstr "Τοποθεσία"
msgstr "Τοποθεσία: %s\n"
#: lib/mail.php:256
#, fuzzy, php-format
msgid "Homepage: %s\n"
msgstr "Αρχική σελίδα"
msgstr "Αρχική σελίδα: %s\n"
#: lib/mail.php:258
#, php-format
@ -4543,6 +4596,8 @@ msgid ""
"Bio: %s\n"
"\n"
msgstr ""
"Βιογραφικό: %s\n"
"\n"
#: lib/mail.php:461
#, php-format
@ -4561,7 +4616,7 @@ msgstr ""
#: lib/mailbox.php:229 lib/noticelist.php:380
msgid "From"
msgstr ""
msgstr "Από"
#: lib/messageform.php:110
msgid "Send a direct notice"
@ -4614,40 +4669,41 @@ msgid "Tags in %s's notices"
msgstr ""
#: lib/profilelist.php:182
#, fuzzy
msgid "(none)"
msgstr ""
msgstr "(κανένα)"
#: lib/publicgroupnav.php:76
msgid "Public"
msgstr ""
msgstr "Δημόσια"
#: lib/publicgroupnav.php:80
msgid "User groups"
msgstr ""
msgstr "Ομάδες χρηστών"
#: lib/publicgroupnav.php:82 lib/publicgroupnav.php:83
msgid "Recent tags"
msgstr ""
msgstr "Πρόσφατες ετικέτες "
#: lib/publicgroupnav.php:86
msgid "Featured"
msgstr ""
msgstr "Προτεινόμενα"
#: lib/publicgroupnav.php:90
msgid "Popular"
msgstr ""
msgstr "Δημοφιλή"
#: lib/searchgroupnav.php:82
msgid "Notice"
msgstr ""
msgstr "Μήνυμα"
#: lib/searchgroupnav.php:85
msgid "Find groups on this site"
msgstr ""
msgstr "Βρες ομάδες στο site"
#: lib/section.php:89
msgid "Untitled section"
msgstr ""
msgstr "Ενότητα χωρίς τίτλο"
#: lib/subgroupnav.php:81
#, php-format
@ -4667,7 +4723,7 @@ msgstr ""
#: lib/subgroupnav.php:104
#, php-format
msgid "Invite friends and colleagues to join you on %s"
msgstr ""
msgstr "Προσκάλεσε φίλους και συναδέλφους σου να γίνουν μέλη στο %s"
#: lib/subs.php:53
msgid "User has blocked you."
@ -4675,15 +4731,15 @@ msgstr ""
#: lib/subscribeform.php:115 lib/subscribeform.php:139
msgid "Subscribe to this user"
msgstr ""
msgstr "Γίνε συνδρομητής αυτού του χρήστη"
#: lib/tagcloudsection.php:56
msgid "None"
msgstr ""
msgstr "Κανένα"
#: lib/topposterssection.php:74
msgid "Top posters"
msgstr ""
msgstr "Κορυφαίοι δημοσιευτές"
#: lib/unblockform.php:120 lib/unblockform.php:150
msgid "Unblock this user"

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -3705,7 +3705,7 @@ msgstr ""
#: actions/groups.php:62 actions/showstream.php:518 lib/publicgroupnav.php:79
#: lib/subgroupnav.php:96
msgid "Groups"
msgstr ""
msgstr "קבוצות"
#: actions/groups.php:64
#, php-format
@ -4645,12 +4645,12 @@ msgstr "%1$s כעת מאזין להודעות שלך ב-%2$s"
#: lib/mail.php:254
#, fuzzy, php-format
msgid "Location: %s\n"
msgstr "מיקום"
msgstr ""
#: lib/mail.php:256
#, fuzzy, php-format
msgid "Homepage: %s\n"
msgstr "אתר בית"
msgstr ""
#: lib/mail.php:258
#, php-format

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4670,12 +4670,12 @@ msgstr "%1$s сега ги следи вашите забелешки за %2$s.
#: lib/mail.php:254
#, fuzzy, php-format
msgid "Location: %s\n"
msgstr "Локација"
msgstr ""
#: lib/mail.php:256
#, fuzzy, php-format
msgid "Homepage: %s\n"
msgstr "Домашна страница"
msgstr ""
#: lib/mail.php:258
#, php-format

Binary file not shown.

View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
"PO-Revision-Date: 2009-04-09 22:44+0000\n"
"Last-Translator: Charlie Ball <staselig@gmail.com>\n"
"PO-Revision-Date: 2009-09-26 22:45+0000\n"
"Last-Translator: Eivind Uggedal <eivind@uggedal.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -23,7 +23,7 @@ msgstr ""
#: actions/noticesearchrss.php:88
#, php-format
msgid " Search Stream for \"%s\""
msgstr ""
msgstr "Søkestrøm for «%s»"
#: ../actions/finishopenidlogin.php:82 ../actions/register.php:191
#: actions/finishopenidlogin.php:88 actions/register.php:205
@ -31,22 +31,24 @@ msgstr ""
msgid ""
" except this private data: password, email address, IM address, phone number."
msgstr ""
"utenom disse private dataene: passord, epost, adresse, lynmeldingsadresse og "
"telefonnummer."
#: ../actions/showstream.php:400 ../lib/stream.php:109
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
msgid " from "
msgstr ""
msgstr "fra"
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
#: actions/twitapistatuses.php:347
#, php-format
msgid "%1$s / Updates replying to %2$s"
msgstr ""
msgstr "%1$s / Oppdateringer som svarer til %2$s"
#: ../actions/invite.php:168 actions/invite.php:176 actions/invite.php:211
#, php-format
msgid "%1$s has invited you to join them on %2$s"
msgstr ""
msgstr "%1$s har invitert deg til %2$s"
#: ../actions/invite.php:170
#, php-format
@ -78,6 +80,27 @@ msgid ""
"\n"
"Sincerely, %2$s\n"
msgstr ""
"%$1s har invitert deg til %2$s (%3$s).\n"
"\n"
"%$2s er en mikrobloggingteneste som lar deg holde deg oppdatert på folk du "
"kjenner og/eller som interesserer deg.\n"
"\n"
"Du kan også dele nyheter om deg sjelv, dine tanker eller livet ditt på "
"nettet med folk som kjenner til deg. Det er supert for å møte nye folk med "
"like interesser.\n"
"\n"
"%1$s sa:\n"
"\n"
"%4$s\n"
"\n"
"Du kan se profilsiden til %1$s på %2$s her:\n"
"\n"
"%5$s\n"
"\n"
"Hvis du vil prøva tjenesten, klikk på lenken nedenfor for å akseptere "
"invitasjonen.\n"
"\n"
"Vennlig hilsen, %2$s\n"
#: ../lib/mail.php:124 lib/mail.php:124 lib/mail.php:126 lib/mail.php:241
#, php-format
@ -98,14 +121,14 @@ msgstr ""
"\n"
"\t%3$s\n"
"\n"
"Mvh,\n"
"Vennlig hilsen,\n"
"%4$s.\n"
#: ../actions/twitapistatuses.php:482 actions/twitapistatuses.php:415
#: actions/twitapistatuses.php:350
#, php-format
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr ""
msgstr "%1$s oppdateringer som svarer på oppdateringer fra %2$s / %3$s."
#: ../actions/shownotice.php:45 actions/shownotice.php:45
#: actions/shownotice.php:161
@ -123,7 +146,7 @@ msgstr "%s (%s)"
#: actions/publicrss.php:90
#, php-format
msgid "%s Public Stream"
msgstr "%s Offentlig Strøm"
msgstr "%s offentlig strøm"
#: ../actions/all.php:47 ../actions/allrss.php:60
#: ../actions/twitapistatuses.php:238 ../lib/stream.php:51 actions/all.php:47
@ -138,7 +161,7 @@ msgstr "%s og venner"
#: actions/twitapistatuses.php:33
#, php-format
msgid "%s public timeline"
msgstr "%s sin offentlige tidslinje"
msgstr "%s offentlig tidslinje"
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
#, php-format
@ -155,15 +178,15 @@ msgstr "%s tidslinje"
#: actions/twitapistatuses.php:36
#, php-format
msgid "%s updates from everyone!"
msgstr "%s oppdateringer fra alle!"
msgstr "%s oppdateringer fra alle sammen!"
#: ../actions/register.php:213
msgid ""
"(You should receive a message by email momentarily, with instructions on how "
"to confirm your email address.)"
msgstr ""
"(Du vil straks motta en e-post med instruksjoner om hvordan du kan bekrefte "
"din e-postadresse.)"
"(Du vil straks motta en epost med instruksjoner om hvordan du kan bekrefte "
"din epostadresse)"
#: ../lib/util.php:257 lib/util.php:273 lib/action.php:605
#, php-format
@ -171,32 +194,29 @@ msgid ""
"**%%site.name%%** is a microblogging service brought to you by [%%site."
"broughtby%%](%%site.broughtbyurl%%). "
msgstr ""
"**%%site.name%%** er en mikroblogging-tjeneste av "
"**%%site.name%%** er en mikrobloggingtjeneste av "
"[%%site.broughtby%%](%%site.broughtbyurl%%). "
#: ../lib/util.php:259 lib/util.php:275 lib/action.php:607
#, php-format
msgid "**%%site.name%%** is a microblogging service. "
msgstr "**%%site.name%%** er en mikroblogging-tjeneste. "
msgstr "**%%site.name%%** er en mikrobloggingtjeneste. "
#: ../lib/util.php:274 lib/util.php:290
msgid ". Contributors should be attributed by full name or nickname."
msgstr ". Bidragsytere burde være etterfulgt av fullt navn eller brukernavn."
msgstr ". Bidragsytere burde være etterfulgt av fullt navn eller kallenavn."
#: ../actions/finishopenidlogin.php:73 ../actions/profilesettings.php:43
#: actions/finishopenidlogin.php:79 actions/profilesettings.php:76
#: actions/finishopenidlogin.php:101 actions/profilesettings.php:100
#: lib/groupeditform.php:139
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
msgstr ""
"1-64 småbokstaver eller nummer, ingen punktum eller mellomrom (ei heller æøå "
"og lign.)"
msgstr "1-64 små bokstaver eller nummer, ingen punktum eller mellomrom"
#: ../actions/register.php:152 actions/register.php:166
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
msgstr ""
"1-64 småbokstaver eller nummer, ingen punktum eller mellomrom (ei heller æøå "
"og lign.) Påkrevd."
"1-64 små bokstaver eller nummer, ingen punktum eller mellomrom. Påkrevd."
#: ../actions/password.php:42 actions/profilesettings.php:181
#: actions/passwordsettings.php:102
@ -227,14 +247,16 @@ msgid ""
"A confirmation code was sent to the email address you added. Check your "
"inbox (and spam box!) for the code and instructions on how to use it."
msgstr ""
"En bekreftelseskode ble sendt til lynmeldingsadressen du la til. Sjekk "
"innboksen din (og søppel-posten!) for koden, og hvordan du skal bruke den."
"En bekreftelseskode ble sendt til epostadressen du la til. Sjekk innboksen "
"din (og søppelboksen) for koden, og hvordan du skal bruke den."
#: ../actions/smssettings.php:216 actions/smssettings.php:224
msgid ""
"A confirmation code was sent to the phone number you added. Check your inbox "
"(and spam box!) for the code and instructions on how to use it."
msgstr ""
"En bekreftelseskode ble sendt til telefonnummeret du la til. Sjekk innboksen "
"din for koden, og hvordan du skal bruke den."
#: ../actions/twitapiaccount.php:49 ../actions/twitapihelp.php:45
#: ../actions/twitapistatuses.php:88 ../actions/twitapistatuses.php:259
@ -288,7 +310,7 @@ msgstr "Om"
#: ../actions/userauthorization.php:119 actions/userauthorization.php:126
#: actions/userauthorization.php:143
msgid "Accept"
msgstr "Aksepter"
msgstr "Godta"
#: ../actions/emailsettings.php:62 ../actions/imsettings.php:63
#: ../actions/openidsettings.php:57 ../actions/smssettings.php:71
@ -308,7 +330,7 @@ msgstr "Legg til OpenID"
#: ../lib/settingsaction.php:97 lib/settingsaction.php:91
#: lib/accountsettingsaction.php:117
msgid "Add or remove OpenIDs"
msgstr "Legg til eller slett OpenID"
msgstr "Legg til eller fjern OpenID-er"
#: ../actions/emailsettings.php:38 ../actions/imsettings.php:39
#: ../actions/smssettings.php:39 actions/emailsettings.php:39
@ -337,7 +359,7 @@ msgstr "Alle oppdateringer for %s"
#: actions/noticesearchrss.php:90
#, php-format
msgid "All updates matching search term \"%s\""
msgstr "Alle oppdateringer som passer søket: \"%s\""
msgstr "Alle oppdateringer for søket: «%s»"
#: ../actions/finishopenidlogin.php:29 ../actions/login.php:31
#: ../actions/openidlogin.php:29 ../actions/register.php:30
@ -390,19 +412,21 @@ msgid ""
"Awaiting confirmation on this address. Check your Jabber/GTalk account for a "
"message with further instructions. (Did you add %s to your buddy list?)"
msgstr ""
"Venter på godkjenning. Sjekk din Jabber/GTalk-konto for en melding med "
"instruksjoner (la du %s til vennelisten din?)"
#: ../actions/emailsettings.php:54 actions/emailsettings.php:55
msgid ""
"Awaiting confirmation on this address. Check your inbox (and spam box!) for "
"a message with further instructions."
msgstr ""
"Venter på bekreftelse av adressen. Sjekk innboksen din (og søppel-post!) for "
"Venter på bekreftelse av adressen. Sjekk innboksen din (og søppelboksen) for "
"melding med videre veiledning."
#: ../actions/smssettings.php:58 actions/smssettings.php:58
#: actions/smssettings.php:111
msgid "Awaiting confirmation on this phone number."
msgstr "Venter på bekreftelse på dette telefonnummeret"
msgstr "Venter på bekreftelse for dette telefonnummeret."
#: ../lib/util.php:1318 lib/util.php:1452
#, fuzzy
@ -413,7 +437,7 @@ msgstr "Tidligere »"
#: actions/profilesettings.php:82 actions/register.php:184
#: actions/profilesettings.php:112 actions/register.php:402
msgid "Bio"
msgstr "Bio"
msgstr "Om meg"
#: ../actions/profilesettings.php:101 ../actions/register.php:82
#: ../actions/updateprofile.php:103 actions/profilesettings.php:216
@ -421,7 +445,7 @@ msgstr "Bio"
#: actions/profilesettings.php:205 actions/register.php:174
#: actions/updateprofile.php:107
msgid "Bio is too long (max 140 chars)."
msgstr "Bioen er for lang (maks 140 tegn)."
msgstr "«Om meg» er for lang (maks 140 tegn)."
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
msgid "Can't delete this notice."
@ -431,13 +455,13 @@ msgstr "Kan ikke slette notisen."
#: actions/updateprofile.php:123
#, php-format
msgid "Can't read avatar URL '%s'"
msgstr "Kan ikke lese brukerbilde URL '%s'"
msgstr "Kan ikke lese brukerbilde-URL «%s»"
#: ../actions/password.php:85 ../actions/recoverpassword.php:300
#: actions/profilesettings.php:404 actions/recoverpassword.php:313
#: actions/passwordsettings.php:169 actions/recoverpassword.php:347
msgid "Can't save new password."
msgstr "Klarer ikke å lagre det nye passordet"
msgstr "Klarer ikke å lagre nytt passord."
#: ../actions/emailsettings.php:57 ../actions/imsettings.php:58
#: ../actions/smssettings.php:62 actions/emailsettings.php:58
@ -449,17 +473,17 @@ msgstr "Avbryt"
#: ../lib/openid.php:121 lib/openid.php:121 lib/openid.php:130
msgid "Cannot instantiate OpenID consumer object."
msgstr ""
msgstr "Klarer ikke instansiere OpenID-objekt."
#: ../actions/imsettings.php:163 actions/imsettings.php:171
#: actions/imsettings.php:286
msgid "Cannot normalize that Jabber ID"
msgstr ""
msgstr "Klarer ikke normalisere Jabber-IDen"
#: ../actions/emailsettings.php:181 actions/emailsettings.php:199
#: actions/emailsettings.php:311
msgid "Cannot normalize that email address"
msgstr "Kan ikke normalisere den e-postadressen"
msgstr "Klarer ikke normalisere epostadressen"
#: ../actions/password.php:45 actions/profilesettings.php:184
#: actions/passwordsettings.php:110
@ -469,7 +493,7 @@ msgstr "Endre"
#: ../lib/settingsaction.php:88 lib/settingsaction.php:88
#: lib/accountsettingsaction.php:114
msgid "Change email handling"
msgstr "Endre e-post håndtering"
msgstr "Endre eposthåndtering"
#: ../actions/password.php:32 actions/profilesettings.php:36
#: actions/passwordsettings.php:58
@ -483,7 +507,7 @@ msgstr "Endre passordet ditt"
#: ../lib/settingsaction.php:85 lib/settingsaction.php:85
#: lib/accountsettingsaction.php:105
msgid "Change your profile settings"
msgstr "Endre profil instillingene dine"
msgstr "Endre profilinnstillingene dine"
#: ../actions/password.php:43 ../actions/recoverpassword.php:181
#: ../actions/register.php:155 ../actions/smssettings.php:65
@ -497,7 +521,7 @@ msgstr "Bekreft"
#: ../actions/confirmaddress.php:90 actions/confirmaddress.php:90
#: actions/confirmaddress.php:144
msgid "Confirm Address"
msgstr "Bekreft Adresse"
msgstr "Bekreft adresse"
#: ../actions/emailsettings.php:238 ../actions/imsettings.php:222
#: ../actions/smssettings.php:245 actions/emailsettings.php:256
@ -515,7 +539,7 @@ msgstr "Bekreftelseskode"
#: ../actions/confirmaddress.php:38 actions/confirmaddress.php:38
#: actions/confirmaddress.php:80
msgid "Confirmation code not found."
msgstr "Bekreftelseskode ikke funnet."
msgstr "Fant ikke bekreftelseskode."
#: ../actions/register.php:202
#, php-format

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

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