Merge branch '1.0.x' of gitorious.org:statusnet/mainline into 1.0.x

This commit is contained in:
Zach Copley 2011-09-30 19:52:16 +00:00
commit 7dcb27672f
20 changed files with 269 additions and 333 deletions

5
README
View File

@ -2,8 +2,8 @@
README README
------ ------
StatusNet 1.0.0rc1 StatusNet 1.0.0
20 September 2011 30 September 2011
This is the README file for StatusNet, the Open Source social This is the README file for StatusNet, the Open Source social
networking platform. It includes general information about the networking platform. It includes general information about the
@ -197,6 +197,7 @@ Feedback
place to discuss the software. place to discuss the software.
* StatusNet has a bug tracker for any defects you may find, or ideas for * StatusNet has a bug tracker for any defects you may find, or ideas for
making things better. http://status.net/open-source/issues making things better. http://status.net/open-source/issues
* The StatusNet forum is at http://forum.status.net/.
Credits Credits
======= =======

View File

@ -162,4 +162,72 @@ class DocAction extends Action
Event::handle('EndLoadDoc', array($this->title, &$this->output)); Event::handle('EndLoadDoc', array($this->title, &$this->output));
} }
} }
function showLocalNav()
{
$menu = new DocNav($this);
$menu->show();
}
}
class DocNav extends Menu
{
function show()
{
$stub = new HomeStubNav($this->action);
$this->submenu(_m('MENU','Home'), $stub);
$docs = new DocListNav($this->action);
$this->submenu(_m('MENU','Docs'), $docs);
}
}
class DocListNav extends Menu
{
function getItems()
{
$items = array();
if (Event::handle('StartDocsMenu', array(&$items))) {
$items = array(array('doc',
array('title' => 'help'),
_m('MENU', 'Help'),
_('Getting started'),
'nav_doc_help'),
array('doc',
array('title' => 'about'),
_m('MENU', 'About'),
_('About this site'),
'nav_doc_about'),
array('doc',
array('title' => 'faq'),
_m('MENU', 'FAQ'),
_('Frequently asked questions'),
'nav_doc_faq'),
array('doc',
array('title' => 'contact'),
_m('MENU', 'Contact'),
_('Contact info'),
'nav_doc_contact'),
array('doc',
array('title' => 'tags'),
_m('MENU', 'Tags'),
_('Using tags'),
'nav_doc_tags'),
array('doc',
array('title' => 'groups'),
_m('MENU', 'Groups'),
_('Using groups'),
'nav_doc_groups'),
array('doc',
array('title' => 'api'),
_m('MENU', 'API'),
_('RESTful API'),
'nav_doc_api'));
Event::handle('EndDocsMenu', array(&$items));
}
return $items;
}
} }

View File

@ -168,4 +168,38 @@ abstract class Managed_DataObject extends Memcached_DataObject
} }
return $links; return $links;
} }
/**
* Return a list of all primary/unique keys / vals that will be used for
* caching. This will understand compound unique keys, which
* Memcached_DataObject doesn't have enough info to handle properly.
*
* @return array of strings
*/
function _allCacheKeys()
{
$table = call_user_func(array(get_class($this), 'schemaDef'));
$ckeys = array();
if (!empty($table['unique keys'])) {
$keyNames = $table['unique keys'];
foreach ($keyNames as $idx => $fields) {
$val = array();
foreach ($fields as $name) {
$val[$name] = self::valueString($this->$name);
}
$ckeys[] = self::multicacheKey($this->tableName(), $val);
}
}
if (!empty($table['primary key'])) {
$fields = $table['primary key'];
$val = array();
foreach ($fields as $name) {
$val[$name] = self::valueString($this->$name);
}
$ckeys[] = self::multicacheKey($this->tableName(), $val);
}
return $ckeys;
}
} }

View File

@ -80,26 +80,4 @@ class User_im_prefs extends Managed_DataObject
); );
} }
/**
* We have two compound keys with unique constraints:
* (transport, user_id) which is our primary key, and
* (transport, screenname) which is an additional constraint.
*
* Currently there's not a way to represent that second key
* in the general keys list, so we're adding it here to the
* list of keys to use for caching, ensuring that it gets
* cleared as well when we change.
*
* @return array of cache keys
*/
function _allCacheKeys()
{
$ukeys = 'transport,screenname';
$uvals = $this->transport . ',' . $this->screenname;
$ckeys = parent::_allCacheKeys();
$ckeys[] = $this->cacheKey($this->tableName(), $ukeys, $uvals);
return $ckeys;
}
} }

View File

@ -2,13 +2,15 @@
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> <!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> <!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
%%site.name%% is a %%site.name%% is a stream-oriented social network service based on the
[micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service Free Software [StatusNet](http://status.net/) tool.
based on the Free Software [StatusNet](http://status.net/) tool.
If you [register](%%action.register%%) for an account, If you [register](%%action.register%%) for an account, you can post
you can post small (%%site.textlimit%% chars or less) text notices small (%%site.textlimit%% chars or less) text notices about yourself,
about yourself, where you are, what you're doing, or practically where you are, what you're doing, what you're working on or what
anything you want. You can also subscribe to the notices of your you're thinking about. You can also subscribe to the notices of your
friends, or other people you're interested in, and follow them on the friends, or other people you're interested in, and follow them
Web or in an [RSS](http://en.wikipedia.org/wiki/RSS) feed. privately or on the Web.
You can also post event invitations, bookmarks, polls, questions, or
other kinds of data.

View File

@ -1,69 +0,0 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
Install the %%site.name%% badge on your blog or web site to show the latest updates
from you and your friends!
<MTMarkdownOptions output='raw'>
<script type="text/javascript" src="http://identi.ca/js/identica-badge.js">
{
"user":"kentbrew",
"server":"identi.ca",
"headerText":" and friends"
}
</script>
</MTMarkdownOptions>
Things to try
--------------
* Click an avatar and the badge will refresh with that user's timeline
* Click a nickname to open a user's profile in your browser
* Click a notice's timestamp to view the notice in your browser
* @-replies and #tags are live links
## Installation instructions
Copy and paste the following JavaScript into an HTML page where
you want the badge to show up. Substitute your own ID in the user
parameter.
<pre>
&lt;script type=&quot;text/javascript&quot; src=&quot;http://identi.ca/js/identica-badge.js&quot;&gt;
{
&quot;user&quot;:&quot;kentbrew&quot;,
&quot;server&quot;:&quot;identi.ca&quot;,
&quot;headerText&quot;:&quot; and friends&quot;
}
&lt;/script&gt;
</pre>
Valid parameters for the badge:
-------------------------------
* user : defaults to 7000 (@kentbrew)
* headerText : defaults to empty
* height : defaults to 350px
* width : defaults to 300px
* background : defaults to #193441. If you set evenBackground, oddBackground,
and headerBackground, you won't see it at all.
* border : defaults to 1px solid black
* userColor : defaults to whatever link color is set to on your page
* headerBackground : defaults to transparent
* headerColor : defaults to white
* evenBackground : defaults to #fff
* oddBackground : defaults to #eee
* thumbnailBorder : 1px solid black
* thumbnailSize : defaults to 24px
* padding : defaults to 3px
* server : defaults to identi.ca
Licence
-------
Identi.ca badge by [Kent Brewster](http://kentbrewster.com/identica-badge/).
Licenced under [CC-BY-SA-3](http://kentbrewster.com/rights-and-permissions/).

View File

@ -1,9 +0,0 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
A bookmarklet is a small piece of javascript code used as a bookmark. This one will let you post to %%site.name%% simply by selecting some text on a page and pressing the bookmarklet.
Drag-and-drop the following link to your bookmarks bar or right-click it and add it to your browser favorites to keep it handy.
<a href="javascript:(function(){var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://%%site.server%%/%%site.path%%/index.php?action=bookmarklet',l=d.location,e=encodeURIComponent,g=f+'&status_textarea=%E2%80%9C'+((e(s))?e(s):e(document.title))+'%E2%80%9D%20%E2%80%94%20'+e(l.href);function%20a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=450,height=200')){l.href=g;}}a();})()">Post to %%site.name%%</a>

View File

@ -5,14 +5,6 @@
There are a number of options for getting in contact with responsible There are a number of options for getting in contact with responsible
people for %%site.name%%. people for %%site.name%%.
Post a notice
-------------
If you have a question about how to do something, just post a notice
with your question. People here like to answer messages. Watch the
[public timeline](%%action.top%%) for answers; they'll usually start
with "@" plus your user name.
Bugs Bugs
---- ----
@ -25,4 +17,10 @@ Email
You can reach the responsible party for this server at [%%site.email%%](mailto:%%site.email%%). You can reach the responsible party for this server at [%%site.email%%](mailto:%%site.email%%).
Post a notice
-------------
If you have a question about how to do something, just post a notice
with your question. Watch your inbox [public timeline](%%action.top%%)
for answers.

View File

@ -8,39 +8,43 @@ some answers.
What is %%site.name%%? What is %%site.name%%?
---------------------- ----------------------
%%site.name%% is a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service. %%site.name%% is a stream oriented social network service.
You can use it to write short notices about yourself, where you are, You can use it to write short notices about yourself, where you are,
and what you're doing, and those notices will be sent to all your friends and what you're doing, and those notices will be sent to all your friends
and fans. and fans.
How is %%site.name%% different from Twitter, Jaiku, Pownce, Plurk, others? You can also post event invitations, bookmarks, polls, and questions or
-------------------------------------------------------------------------- other kinds of social broadcasts.
%%site.name%% is an [Open Network Service](http://opendefinition.org/ossd). Our main How is %%site.name%% different from Twitter?
goal is to provide a fair and transparent service that preserves users' autonomy. In --------------------------------------------
particular, all the software used for %%site.name%% is [Free Software](http://en.wikipedia.org/wiki/Free_Software), and all the data is available
under the [%%license.title%%](%%license.url%%) license, making it Open Data.
The software also implements the [OpenMicroBlogging](http://openmicroblogging.org/) protocol, meaning that you can have friends on other microblogging services Like [Twitter](http://twitter.com/), %%site.name%% is a light service
that can receive your notices. with a stream-oriented interface. It uses @-replies, hashtags,
provides search, and has private messages. It provides an API, and can
be integrated with SMS systems. You can create lists.
The goal here is *autonomy* -- you deserve the right to manage your own on-line Unlike Twitter, %%site.name%% allows more data than just plain text
presence. If you don't like how %%site.name%% works, you can take your data and the source code and set up your own server (or move your account to another one). and links to travel across the network. You can install the StatusNet
software that runs %%site.name%% on your own servers, since it's Free
and Open Source software. You can make groups, and share privately
with those groups.
Where is feature X? You can make your site available only to people you choose. You can
------------------- customize it with your own themes and plugins, or download plugins
from the StatusNet site.
The software we run, [StatusNet](http://status.net/), is still in its early stages, How is %%site.name%% different from Yammer, SocialCast, or Salesforce Chatter?
and many features people expect from microblogging sites are not yet implemented. Some important ones that are expected "soon": ------------------------------------------------------------------------------
* More [AJAX](http://en.wikipedia.org/wiki/AJAX)-y interface Like some enterprise social software services, StatusNet lets you
* Maps share privately with other people in your company. You can use
* Cross-post to Pownce, Jaiku, etc. microapps to post richer kinds of data, use public and private groups
* Pull messages from Twitter, Pownce, Jaiku, etc. to share with team members, use extended profiles to show more about
* [Facebook](http://www.facebook.com/) integration yourself and your company, and review groups and users in a directory.
* Image, video, audio notices
There is [a list of bugs and features](http://status.net/bugs/) that you may find
interesting. New ideas or complaints are very welcome.
Unlike those other services, StatusNet is free and open source
software. You can install it on your own servers. You can customize
the theme and add plugins.

View File

@ -4,7 +4,8 @@
Users on %%site.name%% can create *groups* that other users can join. Users on %%site.name%% can create *groups* that other users can join.
Groups can be a great way to share information and entertainment with Groups can be a great way to share information and entertainment with
a group of people who have a common interest or background. a group of people who have a common interest or background; who work
together on a team; or who have a particular knowledge or skill.
You can find out about groups on the server on the You can find out about groups on the server on the
[Groups](%%action.groups%%) page. You can join a group by clicking on [Groups](%%action.groups%%) page. You can join a group by clicking on
@ -13,16 +14,16 @@ the "Join" button either in the group list or on the group's home page.
Starting a new group Starting a new group
-------------------- --------------------
If you want, you can start a new group for friends and people with You can start a new group for friends and colleagues. Note that all
common interests. Note that all groups are free for anyone to join. groups are free for anyone to join.
To start a new group, use the [new group](%%action.newgroup%%) tool To start a new group, use the [new group](%%action.newgroup%%) tool
and fill out the form. Describe your group as best you can if you want and fill out the form. Describe your group as best you can if you want
people to be able to find it. people to be able to find it.
When choosing the nickname for your group, try to keep it short. The When choosing the nickname for your group, try to keep it short. The
nickname is included in every message to and from the group, so the nickname is sometimes included in messages to and from the group, so
less chars the better. Try using acronyms for organizations, or the less chars the better. Try using acronyms for organizations, or
airport codes for places (like 'pdx' instead of 'portland'). airport codes for places (like 'pdx' instead of 'portland').
Sending messages to a group Sending messages to a group
@ -33,14 +34,22 @@ anywhere in the message. If you have more than one group named, the
notice will go to each group. Only members can send notices to a notice will go to each group. Only members can send notices to a
group, and groups do not respond to direct messages (DMs). group, and groups do not respond to direct messages (DMs).
You can also select the group from the "To:" drop down when posting.
You can make a group message private by clicking the "private" button
before posting.
Receiving messages Receiving messages
------------------ ------------------
New group messages will appear in your inbox, and will also come to New group messages will appear in your inbox, and will also come to
your phone or IM client if you've set them up to receive notices. your phone or IM client if you've set them up to receive notices.
Remote groups Private groups
------------- --------------
While it's technically possible, this version of StatusNet does not The administrator can make a group private. For a private group, all
support remote group membership. notices will marked as private for group members only. Also,
administrators will have to approve all new members to the group.
Private groups are visible in the group directory.

View File

@ -2,38 +2,18 @@
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> <!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> <!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
%%site.name%% is a **microblogging service**. Users post short (%%site.textlimit%% %%site.name%% is a **social service**. Users can post short
character) notices which are broadcast to their friends and fans using (%%site.textlimit%% character) status messages which are broadcast to
the Web, RSS, or instant messages. their friends and colleagues on the service and (optionally) onto the Web.
You can also broadcast other types of data, like bookmarks, event
invitations, polls, and questions.
If you'd like to try it out, first [register](%%action.register%%) a new account. If you'd like to try it out, first [register](%%action.register%%) a new account.
Then, on the [public timeline](%%action.top%%), enter your message into Then, on the [public timeline](%%action.top%%), enter your message into
the textbox at the top of the page, and click "Send". It will go out on the the textbox at the top of the page, and click "Send". It will go out on the
public timeline and to anyone who is subscribed to your notices (probably nobody, public timeline and to anyone who is subscribed to your notices.
at first).
To subscribe to other people's notifications, go to their profile page To subscribe to other people's notifications, go to their profile page
and click the "subscribe" button. They'll get a notice that you're now and click the "subscribe" button. They'll get a notice that you're now
subscribed to their notifications, and, who knows?, they might subscribe subscribed to their notifications.
back.
More help
---------
Here are some documents that you might find helpful in understanding
%%site.name%% and how to use it.
* [About](%%doc.about%%) - an overview of the service
* [FAQ](%%doc.faq%%) - frequently-asked questions about %%site.name%%
* [Contact](%%doc.contact%%) - who to contact with questions about the service
* [IM](%%doc.im%%) - using the instant-message (IM) features of %%site.name%%
* [SMS](%%doc.sms%%) - tying your cellphone to %%site.name%%
* [Tags](%%doc.tags%%) - different ways to use tagging
* [Groups](%%doc.groups%%) - joining together in groups
* [Lists](%%doc.lists%%) - organize your contacts
* [OpenMicroBlogging](%%doc.openmublog%%) - subscribing to remote users
* [Privacy](%%doc.privacy%%) - %%site.name%%'s privacy policy
* [Source](%%doc.source%%) - How to get the StatusNet source code
* [Badge](%%doc.badge%%) - How to put a StatusNet badge on your blog or homepage
* [Bookmarklet](%%doc.bookmarklet%%) - Bookmarklet for posting Web pages
* [API](%%doc.api%%) - API for use by external clients

View File

@ -1,69 +0,0 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
%%site.name%% supports
[tags](http://en.wikipedia.org/wiki/Tag_(metadata)) to help you
organize your activities here. You can use tags for people and for
notices.
Tagging a notice
----------------
You can tag a notice using a *hashtag*; a # character followed by
letters and numbers as well as '.', '-', and '_'. Note that accented
latin characters are not supported, and non-roman scripts are right out.
The HTML for the notice will link to a stream of all the other notices
with that tag. This can be a great way to keep track of a conversation.
The most popular current tags on the site can be found in the [public
tag cloud](%%action.publictagcloud%%). Their size shows their
popularity and recency.
Tagging yourself
----------------
You can also add tags for yourself on your [profile
settings](%%action.profilesettings%%) page or by using the edit tags
button on your profile page. Use single words to
describe yourself, your experiences and your interest. The tags will
become links on your profile page to a list of all the users on the
site who use that same tag. It can be a nice way to find people who
are related to you geographically or who have a common interest.
Tagging others
--------------
You can also tag other users by using the edit tags button next to
their profile. Such tags are called *people tags*. Once you have
created a people tag, you can add or remove users from it using the
tag's edit form. This makes it easy to organize your subscriptions
into groups and sort through them separately. Also, it will let
you create custom lists of people that others can subscribe to.
You can also send a notice "to the attention of" your subscribers
whom you've marked with a particular tag (note: *not* people who've
marked themselves with that tag). "@#family hello" will send a
notice to all your subscribers you've marked with the tag 'family'.
Private and public people tags
------------------------------
A private people tag is only visible to the creator, it cannot be
subscribed to, but the timeline can be viewed. To create a new
private prepend a '.' to the tag in the tags editing box. To set
an existing public tag as private or vice-versa, go to the tag's
edit page.
Remote people tags
------------------
You can even [tag remote users](%%action.profilesettings%%). Just
enter the remote profile's URI and click on the "Fetch" button to
fetch the profile, you can then add tags and save them.
Subscribing to the timeline of a people tag on another server also
works. Just copy the URL of the people tag's timeline page to the
[OStatus subscription](%%action.ostatussub%%) form.

View File

@ -1,29 +0,0 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
[OpenMicroBlogging](http://openmicroblogging.org/) is a protocol that
lets users of one [microblogging](http://en.wikipedia.org/wiki/microblogging) service
subscribe to notices by users of another service. The protocol, based on
[OAuth](http://oauth.net/), is open and free, and doesn't depend on any
central authority to maintain the federated microblogs.
The [StatusNet](http://status.net/) software that runs %%site.name%% supports
OpenMicroBlogging 0.1. Anyone can make a new installation of StatusNet on their
own servers, and users of that new installation can subscribe to notices from
%%site.name%%.
Remote subscription
-------------------
If you have an account on a remote site that supports OpenMicroBlogging, and you
want to subscribe to the notices of a user on this site, click on the "Subscribe"
link under their avatar on their profile page. This should take you to the
[remote subscription](%%action.remotesubscribe%%) page. Make sure that you've got the
right nickname registered, and enter your profile URL on the other microblogging
service.
You'll be taken to your microblogging service, where you'll be asked to confirm the
subscription. When you confirm, your service will receive new notifications from
the user on %%site.name%%, and your service will forward them to you (using IM, SMS,
the Web, or whatever else).

View File

@ -51,19 +51,3 @@ subscribed to, but the timeline can be viewed. To create a new
private prepend a '.' to the tag in the tags editing box. To set private prepend a '.' to the tag in the tags editing box. To set
an existing public tag as private or vice-versa, go to the tag's an existing public tag as private or vice-versa, go to the tag's
edit page. edit page.
The most used public tags are displayed in the
[public people tag cloud](%%action.publicpeopletagcloud%%). Their
size shows their frequency of use.
Remote people tags
------------------
You can even [tag remote users](%%action.profilesettings%%). Just
enter the remote profile's URI and click on the "Fetch" button to
fetch the profile, you can then add tags and save them.
Subscribing to the timeline of a people tag on another server also
works. Just copy the URL of the people tag's timeline page to the
[OStatus subscription](%%action.ostatussub%%) form.

View File

@ -43,11 +43,23 @@
*/ */
class Cache class Cache
{ {
/**
* @var array additional in-process cache for web requests;
* disabled on CLI, unsafe for long-running daemons
*/
var $_items = array(); var $_items = array();
var $_inlineCache = true;
static $_inst = null; static $_inst = null;
const COMPRESSED = 1; const COMPRESSED = 1;
private function __construct() {
// Potentially long-running daemons or maintenance scripts
// should not use an in-process cache as it becomes out of
// date.
$this->_inlineCache = (php_sapi_name() != 'cli');
}
/** /**
* Singleton constructor * Singleton constructor
* *
@ -166,7 +178,7 @@ class Cache
common_perf_counter('Cache::get', $key); common_perf_counter('Cache::get', $key);
if (Event::handle('StartCacheGet', array(&$key, &$value))) { if (Event::handle('StartCacheGet', array(&$key, &$value))) {
if (array_key_exists($key, $this->_items)) { if ($this->_inlineCache && array_key_exists($key, $this->_items)) {
$value = unserialize($this->_items[$key]); $value = unserialize($this->_items[$key]);
} }
Event::handle('EndCacheGet', array($key, &$value)); Event::handle('EndCacheGet', array($key, &$value));
@ -193,7 +205,9 @@ class Cache
if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag, if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
&$expiry, &$success))) { &$expiry, &$success))) {
if ($this->_inlineCache) {
$this->_items[$key] = serialize($value); $this->_items[$key] = serialize($value);
}
$success = true; $success = true;
@ -244,7 +258,7 @@ class Cache
common_perf_counter('Cache::delete', $key); common_perf_counter('Cache::delete', $key);
if (Event::handle('StartCacheDelete', array(&$key, &$success))) { if (Event::handle('StartCacheDelete', array(&$key, &$success))) {
if (array_key_exists($key, $this->_items)) { if ($this->_inlineCache && array_key_exists($key, $this->_items)) {
unset($this->_items[$key]); unset($this->_items[$key]);
} }
$success = true; $success = true;

61
lib/homestubnav.php Normal file
View File

@ -0,0 +1,61 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc.
*
* Stub sub-menu for sections that need to go home
*
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Menu
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
// This check helps protect against security problems;
// your code file can't be executed directly from the web.
exit(1);
}
/**
* stub sub-menu for settings and stuff
*
* @category General
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
class HomeStubNav extends Menu
{
function getItems()
{
return array(array('top',
null,
// TRANS: Menu item in personal group navigation menu.
_m('MENU','Home'),
// TRANS: Menu item title in personal group navigation menu.
// TRANS: %s is a username.
_('Back to top'),
'nav_return_top'));
}
}

View File

@ -79,9 +79,6 @@ class SecondaryNav extends Menu
// TRANS: Secondary navigation menu item leading to e-mail contact information on the // TRANS: Secondary navigation menu item leading to e-mail contact information on the
// TRANS: StatusNet site, where to report bugs, ... // TRANS: StatusNet site, where to report bugs, ...
_m('MENU','Contact')); _m('MENU','Contact'));
$this->out->menuItem(common_local_url('doc', array('title' => 'badge')),
// TRANS: Secondary navigation menu item. Leads to information about embedding a timeline widget.
_m('MENU','Badge'));
Event::handle('EndSecondaryNav', array($this->action)); Event::handle('EndSecondaryNav', array($this->action));
} }
$this->out->elementEnd('ul'); $this->out->elementEnd('ul');

View File

@ -59,23 +59,8 @@ class SettingsNav extends Menu
$nickname = $user->nickname; $nickname = $user->nickname;
$name = $user->getProfile()->getBestName(); $name = $user->getProfile()->getBestName();
// Stub section w/ home link $stub = new HomeStubNav($this->action);
$this->action->elementStart('ul'); $this->submenu(_m('MENU','Home'), $stub);
$this->action->elementStart('li');
// TRANS: Header in settings navigation panel.
$this->action->element('h3', null, _m('HEADER','Home'));
$this->action->elementStart('ul', 'nav');
$this->out->menuItem(common_local_url('all', array('nickname' =>
$nickname)),
// TRANS: Menu item in settings navigation panel.
_m('MENU','Home'),
// TRANS: Menu item title in settings navigation panel.
// TRANS: %s is a username.
sprintf(_('%s and friends'), $name),
$this->action == 'all', 'nav_timeline_personal');
$this->action->elementEnd('ul');
$this->action->elementEnd('li');
$this->action->elementEnd('ul');
$this->action->elementStart('ul'); $this->action->elementStart('ul');
$this->action->elementStart('li'); $this->action->elementStart('li');

View File

@ -536,15 +536,12 @@ class OpenIDPlugin extends Plugin
* *
* @return boolean hook value * @return boolean hook value
*/ */
function onEndLoadDoc($title, &$output) function onEndDocsMenu(&$items) {
{ $items[] = array('doc',
if ($title == 'help') { array('title' => 'openid'),
// TRANS: Item on help page. This message contains Markdown links in the form [description](link). _m('MENU', 'OpenID'),
$menuitem = _m('* [OpenID](%%doc.openid%%) - What OpenID is and how to use it with this service.'); _('Logging in with OpenID'),
'nav_doc_openid');
$output .= common_markup_to_html($menuitem);
}
return true; return true;
} }

View File

@ -3,9 +3,9 @@
If you already have an account on %%site.name%%, you can [login](%%action.login%%) with your username and password as usual. If you already have an account on %%site.name%%, you can [login](%%action.login%%) with your username and password as usual.
To use OpenID in the future, you can [add an OpenID to your account](%%action.openidsettings%%) after you have logged in normally. To use OpenID in the future, you can [add an OpenID to your account](%%action.openidsettings%%) after you have logged in normally.
There are many [Public OpenID providers](http://wiki.openid.net/OpenID-Providers), and you may already have an OpenID-enabled account on another service. There are many [Public OpenID providers](http://openid.net/get-an-openid/), and you may already have an OpenID-enabled account on another service.
* On wikis: If you have an account on an OpenID-enabled wiki, like [Wikitravel](http://wikitravel.org/), [wikiHow](http://www.wikihow.com/), [Vinismo](http://vinismo.com/), [AboutUs](http://aboutus.org/) or [Keiki](http://kei.ki/), you can log in to %%site.name%% by entering the **full URL** of your user page on that other wiki in the box above. For example, *http://kei.ki/en/User:Evan*. * [Google](http://www.google.com/) : If you have a Google profile, you can log in to this site by entering your profile URL.
* [Yahoo!](http://openid.yahoo.com/) : If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID in the box above. Yahoo! OpenID URLs have the form *https://me.yahoo.com/yourusername*. * [Yahoo!](http://openid.yahoo.com/) : If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID. Yahoo! OpenID URLs have the form *https://me.yahoo.com/yourusername*.
* [AOL](http://dev.aol.com/aol-and-63-million-openids) : If you have an account with [AOL](http://www.aol.com/), like an [AIM](http://www.aim.com/) account, you can log in to %%site.name%% by entering your AOL-provided OpenID in the box above. AOL OpenID URLs have the form *http://openid.aol.com/yourusername*. Your username should be all lowercase, no spaces. * [AOL](http://dev.aol.com/aol-and-63-million-openids) : If you have an account with [AOL](http://www.aol.com/), like an [AIM](http://www.aim.com/) account, you can log in to %%site.name%% by entering your AOL-provided OpenID. AOL OpenID URLs have the form *http://openid.aol.com/yourusername*. Your username should be all lowercase, no spaces.
* [Blogger](http://bloggerindraft.blogspot.com/2008/01/new-feature-blogger-as-openid-provider.html), [Wordpress.com](http://faq.wordpress.com/2007/03/06/what-is-openid/), [LiveJournal](http://www.livejournal.com/openid/about.bml), [Vox](http://bradfitz.vox.com/library/post/openid-for-vox.html) : If you have a blog on any of these services, enter your blog URL in the box above. For example, *http://yourusername.blogspot.com/*, *http://yourusername.wordpress.com/*, *http://yourusername.livejournal.com/*, or *http://yourusername.vox.com/*. * [Blogger](http://bloggerindraft.blogspot.com/2008/01/new-feature-blogger-as-openid-provider.html), [Wordpress.com](http://faq.wordpress.com/2007/03/06/what-is-openid/), [LiveJournal](http://www.livejournal.com/openid/about.bml): If you have a blog on any of these services, enter your blog URL in the box above. For example, *http://yourusername.blogspot.com/*, *http://yourusername.wordpress.com/*, *http://yourusername.livejournal.com/*, or *http://yourusername.vox.com/*.