diff --git a/README b/README index 2c92a75da8..0214e49315 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ README ------ Laconica 0.8.0 ("Shiny Happy People") -8 July 2009 +15 July 2009 This is the README file for Laconica, the Open Source microblogging platform. It includes installation instructions, descriptions of @@ -116,6 +116,16 @@ This is a major feature release since version 0.7.4, released May 31 as default TOS for Laconica sites. - Better command-line handling for scripts, including standard options and ability to set hostname and path from the command line. +- An experimental plugin to use Meteor (http://www.meteorserver.org/) + for "real-time" updates. +- A new framework for "real-time" updates, making it easier to develop + plugins for different browser-based update modes. +- RSS 2.0 and Atom feeds for groups. +- RSS 2.0 and Atom feeds for tags. +- Attachments can be sent by email. +- Attachments are encoded as enclosures in RSS 2.0 and Atom. +- Notices with attachments display in Facebook as media inline. + - Many, many bug fixes. Prerequisites @@ -1419,6 +1429,51 @@ notify third-party servers of updates. notify: an array of URLs for ping endpoints. Default is the empty array (no notification). +Plugins +======= + +Beginning with the 0.7.x branch, Laconica has supported a simple but +powerful plugin architecture. Important events in the code are named, +like 'StartNoticeSave', and other software can register interest +in those events. When the events happen, the other software is called +and has a choice of accepting or rejecting the events. + +In the simplest case, you can add a function to config.php and use the +Event::addHandler() function to hook an event: + + function AddGoogleLink($action) + { + $action->menuItem('http://www.google.com/', _('Google'), _('Search engine')); + return true; + } + + Event::addHandler('EndPrimaryNav', 'AddGoogleLink'); + +This adds a menu item to the end of the main navigation menu. You can +see the list of existing events, and parameters that handlers must +implement, in EVENTS.txt. + +The Plugin class in lib/plugin.php makes it easier to write more +complex plugins. Sub-classes can just create methods named +'onEventName', where 'EventName' is the name of the event (case +matters!). These methods will be automatically registered as event +handlers by the Plugin constructor (which you must call from your own +class's constructor). + +Several example plugins are included in the plugins/ directory. You +can enable a plugin with the following line in config.php: + + addPlugin('Example', array('param1' => 'value1', + 'param2' => 'value2')); + +This will look for and load files named 'ExamplePlugin.php' or +'Example/ExamplePlugin.php' either in the plugins/ directory (for +plugins that ship with Laconica) or in the local/ directory (for +plugins you write yourself or that you get from somewhere else) or +local/plugins/. + +Plugins are documented in their own directories. + Troubleshooting =============== diff --git a/actions/conversation.php b/actions/conversation.php index 0eb0d86d65..c8755ba6ef 100644 --- a/actions/conversation.php +++ b/actions/conversation.php @@ -116,6 +116,11 @@ class ConversationAction extends Action $cnt = $ct->show(); } + + function isReadOnly() + { + return true; + } } /**