forked from GNUsocial/gnu-social
Merge branch '1.0.x' of gitorious.org:statusnet/mainline into 1.0.x
This commit is contained in:
commit
7dcb27672f
5
README
5
README
@ -2,8 +2,8 @@
|
||||
README
|
||||
------
|
||||
|
||||
StatusNet 1.0.0rc1
|
||||
20 September 2011
|
||||
StatusNet 1.0.0
|
||||
30 September 2011
|
||||
|
||||
This is the README file for StatusNet, the Open Source social
|
||||
networking platform. It includes general information about the
|
||||
@ -197,6 +197,7 @@ Feedback
|
||||
place to discuss the software.
|
||||
* StatusNet has a bug tracker for any defects you may find, or ideas for
|
||||
making things better. http://status.net/open-source/issues
|
||||
* The StatusNet forum is at http://forum.status.net/.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
@ -162,4 +162,72 @@ class DocAction extends Action
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -168,4 +168,38 @@ abstract class Managed_DataObject extends Memcached_DataObject
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,13 +2,15 @@
|
||||
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
|
||||
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
|
||||
|
||||
%%site.name%% is a
|
||||
[micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service
|
||||
based on the Free Software [StatusNet](http://status.net/) tool.
|
||||
%%site.name%% is a stream-oriented social network service based on the
|
||||
Free Software [StatusNet](http://status.net/) tool.
|
||||
|
||||
If you [register](%%action.register%%) for an account,
|
||||
you can post small (%%site.textlimit%% chars or less) text notices
|
||||
about yourself, where you are, what you're doing, or practically
|
||||
anything you want. You can also subscribe to the notices of your
|
||||
friends, or other people you're interested in, and follow them on the
|
||||
Web or in an [RSS](http://en.wikipedia.org/wiki/RSS) feed.
|
||||
If you [register](%%action.register%%) for an account, you can post
|
||||
small (%%site.textlimit%% chars or less) text notices about yourself,
|
||||
where you are, what you're doing, what you're working on or what
|
||||
you're thinking about. You can also subscribe to the notices of your
|
||||
friends, or other people you're interested in, and follow them
|
||||
privately or on the Web.
|
||||
|
||||
You can also post event invitations, bookmarks, polls, questions, or
|
||||
other kinds of data.
|
||||
|
@ -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>
|
||||
<script type="text/javascript" src="http://identi.ca/js/identica-badge.js">
|
||||
{
|
||||
"user":"kentbrew",
|
||||
"server":"identi.ca",
|
||||
"headerText":" and friends"
|
||||
}
|
||||
</script>
|
||||
|
||||
</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/).
|
@ -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>
|
@ -5,14 +5,6 @@
|
||||
There are a number of options for getting in contact with responsible
|
||||
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
|
||||
----
|
||||
|
||||
@ -25,4 +17,10 @@ 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.
|
||||
|
||||
|
52
doc-src/faq
52
doc-src/faq
@ -8,39 +8,43 @@ some answers.
|
||||
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,
|
||||
and what you're doing, and those notices will be sent to all your friends
|
||||
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
|
||||
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.
|
||||
How is %%site.name%% different from Twitter?
|
||||
--------------------------------------------
|
||||
|
||||
The software also implements the [OpenMicroBlogging](http://openmicroblogging.org/) protocol, meaning that you can have friends on other microblogging services
|
||||
that can receive your notices.
|
||||
Like [Twitter](http://twitter.com/), %%site.name%% is a light service
|
||||
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
|
||||
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).
|
||||
Unlike Twitter, %%site.name%% allows more data than just plain text
|
||||
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,
|
||||
and many features people expect from microblogging sites are not yet implemented. Some important ones that are expected "soon":
|
||||
How is %%site.name%% different from Yammer, SocialCast, or Salesforce Chatter?
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* More [AJAX](http://en.wikipedia.org/wiki/AJAX)-y interface
|
||||
* Maps
|
||||
* Cross-post to Pownce, Jaiku, etc.
|
||||
* Pull messages from Twitter, Pownce, Jaiku, etc.
|
||||
* [Facebook](http://www.facebook.com/) integration
|
||||
* 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.
|
||||
Like some enterprise social software services, StatusNet lets you
|
||||
share privately with other people in your company. You can use
|
||||
microapps to post richer kinds of data, use public and private groups
|
||||
to share with team members, use extended profiles to show more about
|
||||
yourself and your company, and review groups and users in a directory.
|
||||
|
||||
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.
|
||||
|
||||
|
@ -4,7 +4,8 @@
|
||||
|
||||
Users on %%site.name%% can create *groups* that other users can join.
|
||||
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
|
||||
[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
|
||||
--------------------
|
||||
|
||||
If you want, you can start a new group for friends and people with
|
||||
common interests. Note that all groups are free for anyone to join.
|
||||
You can start a new group for friends and colleagues. Note that all
|
||||
groups are free for anyone to join.
|
||||
|
||||
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
|
||||
people to be able to find it.
|
||||
|
||||
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
|
||||
less chars the better. Try using acronyms for organizations, or
|
||||
nickname is sometimes included in messages to and from the group, so
|
||||
the less chars the better. Try using acronyms for organizations, or
|
||||
airport codes for places (like 'pdx' instead of 'portland').
|
||||
|
||||
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
|
||||
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
|
||||
------------------
|
||||
|
||||
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.
|
||||
|
||||
Remote groups
|
||||
-------------
|
||||
Private groups
|
||||
--------------
|
||||
|
||||
While it's technically possible, this version of StatusNet does not
|
||||
support remote group membership.
|
||||
The administrator can make a group private. For a private group, all
|
||||
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.
|
||||
|
36
doc-src/help
36
doc-src/help
@ -2,38 +2,18 @@
|
||||
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
|
||||
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
|
||||
|
||||
%%site.name%% is a **microblogging service**. Users post short (%%site.textlimit%%
|
||||
character) notices which are broadcast to their friends and fans using
|
||||
the Web, RSS, or instant messages.
|
||||
%%site.name%% is a **social service**. Users can post short
|
||||
(%%site.textlimit%% character) status messages which are broadcast to
|
||||
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.
|
||||
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
|
||||
public timeline and to anyone who is subscribed to your notices (probably nobody,
|
||||
at first).
|
||||
public timeline and to anyone who is subscribed to your notices.
|
||||
|
||||
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
|
||||
subscribed to their notifications, and, who knows?, they might subscribe
|
||||
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
|
||||
subscribed to their notifications.
|
||||
|
@ -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.
|
||||
|
@ -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).
|
16
doc-src/tags
16
doc-src/tags
@ -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
|
||||
an existing public tag as private or vice-versa, go to the tag's
|
||||
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.
|
||||
|
||||
|
@ -43,11 +43,23 @@
|
||||
*/
|
||||
class Cache
|
||||
{
|
||||
var $_items = array();
|
||||
/**
|
||||
* @var array additional in-process cache for web requests;
|
||||
* disabled on CLI, unsafe for long-running daemons
|
||||
*/
|
||||
var $_items = array();
|
||||
var $_inlineCache = true;
|
||||
static $_inst = null;
|
||||
|
||||
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
|
||||
*
|
||||
@ -166,7 +178,7 @@ class Cache
|
||||
|
||||
common_perf_counter('Cache::get', $key);
|
||||
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]);
|
||||
}
|
||||
Event::handle('EndCacheGet', array($key, &$value));
|
||||
@ -193,7 +205,9 @@ class Cache
|
||||
if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
|
||||
&$expiry, &$success))) {
|
||||
|
||||
$this->_items[$key] = serialize($value);
|
||||
if ($this->_inlineCache) {
|
||||
$this->_items[$key] = serialize($value);
|
||||
}
|
||||
|
||||
$success = true;
|
||||
|
||||
@ -244,7 +258,7 @@ class Cache
|
||||
|
||||
common_perf_counter('Cache::delete', $key);
|
||||
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]);
|
||||
}
|
||||
$success = true;
|
||||
|
61
lib/homestubnav.php
Normal file
61
lib/homestubnav.php
Normal 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'));
|
||||
}
|
||||
}
|
@ -79,9 +79,6 @@ class SecondaryNav extends Menu
|
||||
// TRANS: Secondary navigation menu item leading to e-mail contact information on the
|
||||
// TRANS: StatusNet site, where to report bugs, ...
|
||||
_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));
|
||||
}
|
||||
$this->out->elementEnd('ul');
|
||||
|
@ -59,24 +59,9 @@ class SettingsNav extends Menu
|
||||
$nickname = $user->nickname;
|
||||
$name = $user->getProfile()->getBestName();
|
||||
|
||||
// Stub section w/ home link
|
||||
$this->action->elementStart('ul');
|
||||
$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');
|
||||
|
||||
$stub = new HomeStubNav($this->action);
|
||||
$this->submenu(_m('MENU','Home'), $stub);
|
||||
|
||||
$this->action->elementStart('ul');
|
||||
$this->action->elementStart('li');
|
||||
// TRANS: Header in settings navigation panel.
|
||||
|
@ -536,15 +536,12 @@ class OpenIDPlugin extends Plugin
|
||||
*
|
||||
* @return boolean hook value
|
||||
*/
|
||||
function onEndLoadDoc($title, &$output)
|
||||
{
|
||||
if ($title == 'help') {
|
||||
// TRANS: Item on help page. This message contains Markdown links in the form [description](link).
|
||||
$menuitem = _m('* [OpenID](%%doc.openid%%) - What OpenID is and how to use it with this service.');
|
||||
|
||||
$output .= common_markup_to_html($menuitem);
|
||||
}
|
||||
|
||||
function onEndDocsMenu(&$items) {
|
||||
$items[] = array('doc',
|
||||
array('title' => 'openid'),
|
||||
_m('MENU', 'OpenID'),
|
||||
_('Logging in with OpenID'),
|
||||
'nav_doc_openid');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
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*.
|
||||
* [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*.
|
||||
* [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.
|
||||
* [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/*.
|
||||
* [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. 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. 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): 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/*.
|
||||
|
Loading…
Reference in New Issue
Block a user