]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '1.0.x' of gitorious.org:statusnet/mainline into 1.0.x
authorZach Copley <zach@status.net>
Fri, 30 Sep 2011 19:52:16 +0000 (19:52 +0000)
committerZach Copley <zach@status.net>
Fri, 30 Sep 2011 19:52:16 +0000 (19:52 +0000)
20 files changed:
README
actions/doc.php
classes/Managed_DataObject.php
classes/User_im_prefs.php
doc-src/about
doc-src/badge [deleted file]
doc-src/bookmarklet [deleted file]
doc-src/contact
doc-src/faq
doc-src/groups
doc-src/help
doc-src/lists [deleted file]
doc-src/openmublog [deleted file]
doc-src/tags
lib/cache.php
lib/homestubnav.php [new file with mode: 0644]
lib/secondarynav.php
lib/settingsnav.php
plugins/OpenID/OpenIDPlugin.php
plugins/OpenID/doc-src/openid

diff --git a/README b/README
index 07537a7c1d771bb2ee39bd9e7807441e56608081..aacc9670e6f20f1f9ca9920b5ddb0f52bfd7dce4 100644 (file)
--- a/README
+++ b/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
 =======
index 95f76fb9dd94e3cbbe15b066f18e8d6e8d996f29..c26b29090281dcead91b440f4ec3511956daaa17 100644 (file)
@@ -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;
+    }
 }
index 106065fc46673c67181321da644fe2dae781dab1..1d55537e20b800c3fe5ec70b130406a3397fcaa4 100644 (file)
@@ -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;
+    }
 }
\ No newline at end of file
index cc9dea608db7ebd4e479ff91006140f10bd5761f..90df216c542eb9c6eac33a994a7fb1844e7e93cb 100644 (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;
-    }
-
 }
index 5645c2cebe6ed30007eaae11e95d5178f77b4203..e037b616929c6c0182bee615fa85eea718b3d3a5 100644 (file)
@@ -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.
diff --git a/doc-src/badge b/doc-src/badge
deleted file mode 100644 (file)
index 98cdcfc..0000000
+++ /dev/null
@@ -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/).
diff --git a/doc-src/bookmarklet b/doc-src/bookmarklet
deleted file mode 100644 (file)
index 0b77bf4..0000000
+++ /dev/null
@@ -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>
index a713d7c5b98c827ba495fa2d679b4470ac77435e..4b31439c42de9ae70962bcc40f67e50d70201d4e 100644 (file)
@@ -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.
 
index 589b18b8d8844193e21188e4d941f90deb643d49..ee7cd506a82ababee882ace89b10ece5d8034ad6 100644 (file)
@@ -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?
---------------------------------------------------------------------------
-
-%%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.
+You can also post event invitations, bookmarks, polls, and questions or
+other kinds of social broadcasts.
 
-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.
+How is %%site.name%% different from Twitter?
+--------------------------------------------
 
-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).
+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.
 
-Where is feature X?
--------------------
+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.
 
-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":
+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.
 
-* 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
+How is %%site.name%% different from Yammer, SocialCast, or Salesforce Chatter?
+------------------------------------------------------------------------------
 
-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.
 
index 5ff09600efcf1ebc7ffd0bd663a4e90a2be1d424..823e5b16be756617ca3cc8fe55de91f20d3de301 100644 (file)
@@ -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
+--------------
+
+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.
 
-While it's technically possible, this version of StatusNet does not
-support remote group membership.
+Private groups are visible in the group directory.
index 0e39082ad0c77cdb7325a17c80b481ab33ec5e7f..4bb9cd33a23a6b48cc09bcd72c21aeb821b52284 100644 (file)
@@ -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.
diff --git a/doc-src/lists b/doc-src/lists
deleted file mode 100644 (file)
index 01c5d3b..0000000
+++ /dev/null
@@ -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.
-
diff --git a/doc-src/openmublog b/doc-src/openmublog
deleted file mode 100644 (file)
index 267ad6e..0000000
+++ /dev/null
@@ -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).
index 3e9065a100d13611228c1b1f066bb89f78ec317e..8f42b5b75238a425c087788226eb7556efb5ffdc 100644 (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
 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.
-
index eb4eb666567a9f21bf7b51e53c09bdf2a9390dd4..59110f74d845f1a425ffbcdbca7cab44a9a75c2f 100644 (file)
  */
 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;
diff --git a/lib/homestubnav.php b/lib/homestubnav.php
new file mode 100644 (file)
index 0000000..e9f4ba2
--- /dev/null
@@ -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'));
+    }
+}
index 7d38e74ffc392b35d266a85a422eac5a1ee25d43..29dc05b53dec45bf966234c2ab3c67a193fa8865 100644 (file)
@@ -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');
index 8b664fbae650ad5a3e6cdbcb6e402bbeb9503ba7..504b66fc6f4d75316313664029f4fd42f888412a 100644 (file)
@@ -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.
index 023ff8e86d2e26c0ce39fee9c792713a5a05aef7..ed6d6534c09dbdaff0ebef609fabd235cee9b628 100644 (file)
@@ -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;
     }
 
index f2dc610a55d0db2bda34add93b5f6bce5e6251dd..08768fb7168acd51c75d374faf263b0e368641a4 100644 (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.
 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/*.